I am trying to use the JPA ticket registry in 5.0.1 with Postgres. I can't
find any DDL to create the schema so I am letting hibernate create the
tables.

In this document
https://apereo.github.io/cas/5.0.x/installation/JPA-Ticket-Registry.html
they describe four options for ddlAuto:

validate - validate the schema, but make no changes to the database.
update - update the schema.
create - create the schema, destroying previous data.
create-drop - drop the schema at the end of the session.

If I want to have multiple CAS servers pointing at the same set of tables
in the same DB, it doesn't seem like create or create-drop would make sense
because they both appear to drop the tables on start-up. The OID of the
table changes with the create option on startup so i assume it is
re-creating the table.

I would like to use "validate" but after letting the tables be created
using the "create" option the validate options fails with an error like:

Caused by: org.hibernate.tool.schema.spi.SchemaManagementException:
Schema-valid
ation: wrong column type encountered in column [lockVer] in table [locks];
found
 [int4 (Types#INTEGER)], but expecting [integer default 0 (Types#BIGINT)]

The DDL for the table extracted by pgAdmin shows the column is: "lockVer
integer NOT NULL DEFAULT 0" which seems to be what it is expecting.


I can start up CAS with ddlAuto set to "update" but when I login I get an
an error:

<ERROR: cannot execute SELECT FOR UPDATE in a read-only transaction>
2016-12-15 09:52:16,249 ERROR
[org.apereo.cas.ticket.registry.JpaTicketRegistry]
 - <Error getting ticket
TGT-**********************************************3osVS
fZwtw-XYZXYZXYZV from registry.>

If I set jpaLockingTgtEnabled to false then I can login but it seems like
locking should work in postgres. It appears
that DefaultTicketRegistrySupport is @Transactional readonly=true and the
getAuthenticatedPrincipalFrom method starts a read-only transaction which
eventually fails when hibernate tries to lock row with "for update" clause.
Is there another TicketRegistrySupport bean I should be using?


A possibly related issue, I am seeing the DefaultTicketRegistry bean being
created from CasCoreTicketsConfiguration despite the bean being
@ConditionalOnMissingBean(name = "ticketRegistry"). The jpaTicketRegistry
bean which appears to be aliased to ticketRegistry is definitely being used
so I am not sure why the DefaultTicketRegistry bean is being created.


To summarize:
 - JPA ticket registry seems to be working but the ddlAuto validate doesn't
seem to work (and create/create-drop seem no better than in-memory if they
are lost on restart)
 - jpa locking is not working for me
 - I don't know why the DefaultTicketRegistry bean is being created.

-- 
- CAS gitter chatroom: https://gitter.im/apereo/cas
- CAS mailing list guidelines: https://apereo.github.io/cas/Mailing-Lists.html
- CAS documentation website: https://apereo.github.io/cas
- CAS project website: https://github.com/apereo/cas
--- 
You received this message because you are subscribed to the Google Groups "CAS 
Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/a/apereo.org/d/msgid/cas-user/CADM%2BNBPsCn03U7nGyF1-YVhO3PKWyLpvXgNse-KrX%3D6fPS55fA%40mail.gmail.com.

Reply via email to