+
Skip to content

Random but frequent duplicate key value violates unique constraint \"constraint_offl_us_ses_pk2\" errors #40374

Open
@lucdew

Description

@lucdew

Before reporting an issue

  • I have read and understood the above terms for submitting issues, and I understand that my issue may be closed without action if I do not follow them.

Area

identity-brokering

Describe the bug

Hi,
we migrated to Keycloak 26.2.4 and we get quite frequently (at least once a day for 1500 login attempts) the following error ERROR: duplicate key value violates unique constraint "constraint_offl_us_ses_pk2"

Note that we have 2 keycloak instances targeting the same DB but when the error occur there is no switching from 1 server to another (all the logs are from the same instance).

The DB is postgresql 15.10. The KC_CACHE is set to ispn and KC_CACHE_STACK to jdbc-ping.

I tried to reproduce manually and find some patterns but could not.

Note that the error occurs on a realm where all the clients are SAML clients from other realms. The login flow just redirects to an external IDP.

Any idea what it could be ?

Here are the relevant logs
``keycloak-idp-0 {"timestamp":"2025-06-10T09:53:32.882084464Z","sequence":10854,"loggerClassName":"org.jboss.logging.Logger","loggerName":"org.keycloak.events","level":"DEBUG","message":"type="LOGIN", realmId="bu-id-broker-stg", realmName="bu-id-broker-stg", clientId="https://idb.anonymized.dummy/realms/myrealm\", userId="dc2768ec-c117-44fd-bc48-bf1d6f4348fb", sessionId="c40fb9ca-77fa-470a-b568-3faa73f4308b", ipAddress="147.161.181.93", identity_provider="external-idp", identity_provider_broker_session_id="external-idp.W7eTaDz6LXUJyYvmZNDfO0jSNiA=YEj25A==", redirect_uri="https://idb.anonymized.dummy/realms/myrealm/broker/sso-via-bu-idp/endpoint\", consent="no_consent_required", identity_provider_identity="myuniqueid", code_id="c40fb9ca-77fa-470a-b568-3faa73f4308b", username="me@anonymized.com", authSessionParentId="c40fb9ca-77fa-470a-b568-3faa73f4308b", authSessionTabId="jefMdwKZha8"","threadName":"executor-thread-26","threadId":96,"mdc":{},"ndc":"","hostName":"keycloak-idp-0","processName":"/usr/lib/jvm/java-21-openjdk-21.0.7.0.6-1.el9.x86_64/bin/java","processId":1}
keycloak-idp-0 {"timestamp":"2025-06-10T09:53:32.913635582Z","sequence":10857,"loggerClassName":"org.jboss.logging.Logger","loggerName":"org.keycloak.models.sessions.infinispan.changes.PersistentSessionsWorker","level":"WARN","message":"Running single changes in iteration 2 for 1 entries","threadName":"org.keycloak.models.sessions.infinispan.changes.PersistentSessionsWorker$BatchWorker","threadId":42,"mdc":{},"ndc":"","hostName":"keycloak-idp-0","processName":"/usr/lib/jvm/java-21-openjdk-21.0.7.0.6-1.el9.x86_64/bin/java","processId":1}
keycloak-idp-0 {"timestamp":"2025-06-10T09:53:32.930590244Z","sequence":10859,"loggerClassName":"org.jboss.logging.Logger","loggerName":"org.keycloak.services.error.KeycloakErrorHandler","level":"ERROR","message":"Uncaught server error","threadName":"executor-thread-26","threadId":96,"mdc":{},"ndc":"","hostName":"keycloak-idp-0","processName":"/usr/lib/jvm/java-21-openjdk-21.0.7.0.6-1.el9.x86_64/bin/java","processId":1,"exception":{"refId":1,"exceptionType":"java.lang.RuntimeException","message":"unable to complete the session updates","frames":[{"class":"org.keycloak.models.sessions.infinispan.changes.JpaChangesPerformer","method":"applyChanges","line":112},{"class":"java.lang.Iterable","method":"forEach","line":75},{"class":"org.keycloak.models.sessions.infinispan.changes.PersistentSessionsChangelogBasedTransaction","method":"commitImpl","line":222},{"class":"org.keycloak.models.AbstractKeycloakTransaction","method":"commit","line":46},{"class":"org.keycloak.services.DefaultKeycloakTransactionManager","method":"lambda$commitWithTracing$0","line":169},{"class":"org.keycloak.tracing.NoopTracingProvider","method":"trace","line":59},{"class":"org.keycloak.tracing.NoopTracingProvider","method":"trace","line":69},{"class":"org.keycloak.services.DefaultKeycloakTransactionManager","method":"commitWithTracing","line":168},{"class":"org.keycloak.services.DefaultKeycloakTransactionManager","method":"commit","line":146},{"class":"org.keycloak.services.DefaultKeycloakSession","method":"closeTransactionManager","line":396},{"class":"org.keycloak.services.DefaultKeycloakSession","method":"close","line":361},{"class":"org.keycloak.models.KeycloakBeanProducer_ProducerMethod_getKeycloakSession_XoSEUTXOsE3bpqXlGMAykCiECUM_ClientProxy","method":"close"}

...
{"class":"org.keycloak.models.utils.KeycloakModelUtils","method":"runJobInTransaction","line":330},{"class":"org.keycloak.models.sessions.infinispan.changes.PersistentSessionsWorker$BatchWorker","method":"process","line":97},{"class":"org.keycloak.models.sessions.infinispan.changes.PersistentSessionsWorker$BatchWorker","method":"run","line":76}],"causedBy":{"exception":{"refId":3,"exceptionType":"org.postgresql.util.PSQLException","message":"ERROR: duplicate key value violates unique constraint "constraint_offl_us_ses_pk2"\n Detail: Key (user_session_id, offline_flag)=(c40fb9ca-77fa-470a-b568-3faa73f4308b, 0) already exists``

Version

26.2.4

Regression

  • The issue is a regression

Expected behavior

No login error.

Actual behavior

We get random 500 errors while authenticating.

How to Reproduce?

I am unable to.

Anything else?

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载