Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Session list not appearing: SQL Error "The incoming request has too many parameters" #32180

@ariferol

Description

@ariferol

Describe the bug

I have set up a 5-node clustered Keycloak with JDBC_PING (MS-SQL Server). During my production load tests, I am handling 75 users per second through a load balancer. However, during and even some time after my load tests using the Keycloak benchmark project, I encounter the following error when I click the 'Sessions' link in the relevant realm.

WARN [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (executor-thread-12) SQL Error: 8003, SQLState: S0001
ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (executor-thread-12) The incoming request has too many parameters. The server supports a maximum of 2100 parameters. Reduce the number of parameters and resend the request.

Version

25.0.2

Expected behavior

When I click the 'Sessions' link, I expect to see the list of active sessions.

Actual behavior

However, unfortunately, I cannot view it.

How to Reproduce?

Keycloak version : 25.0.2

Docker compose, Keycloak start params:

services:
####################################
##     Main Workloads
####################################
  keycloak:
    image: keycloak:${KC_VERSION}
    command: ["start", "--optimized"]
    restart: unless-stopped
    environment:
      TZ: Europe/Istanbul
      KC_HEALTH_ENABLED: true
      KC_METRICS_ENABLED: true
      KC_DB_USERNAME: ${KC_DB_USERNAME}
      KC_DB_PASSWORD: ${KC_DB_PASSWORD}
      KC_DB_URL_DATABASE: ${KC_DB_URL_DATABASE}
      KC_DB_URL_HOST: ${KC_DB_URL_HOST}
      KC_DB_URL_PORT: ${KC_DB_URL_PORT}
      KC_DB_SCHEMA: ${KC_DB_SCHEMA}
      KC_DB_URL_PROPERTIES: ${KC_DB_URL_PROPERTIES}
      JGROUPS_DISCOVERY_EXTERNAL_IP: ${HOST_IP}
      KC_LOG_LEVEL: ${KC_LOG_LEVEL}
      KC_HTTP_ENABLED: true
      KC_PROXY: edge
      HTTP_ADDRESS_FORWARDING: true
      KC_HOSTNAME: https://${USER_URL_HOST}
      KC_HOSTNAME_ADMIN: https://${ADMIN_URL_HOST}	  
	  KC_HEALTH_ENABLED=true
 	  KC_METRICS_ENABLED=true
	  KC_DB=mssql
	  KC_TRANSACTION_XA_ENABLED=false
	  KC_HTTP_MAX_QUEUED_REQUESTS=1000
	  KC_HTTP_POOL_MAX_THREADS=66
	  KC_SPI_DBLOCK_JPA_LOCK_WAIT_TIMEOUT=900
	  KC_CACHE=ispn
	  KC_CACHE_CONFIG_FILE=cache-ispn-jdbc-ping.xml
	  JGROUPS_DISCOVERY_PROTOCOL=JDBC_PING
	  CACHE_OWNERS_COUNT=2
	  CACHE_OWNERS_AUTH_SESSIONS_COUNT=2
	  KC_FEATURES=persistent-user-sessions

Load test command:

bin/kcb.sh \
        --scenario=keycloak.scenario.authentication.LoginUserPassword \
        --server-url=[KEYCLOAK_SERVER_URL] \
        --realm-name=[REALM_NAME] \
        --username=[USER_NAME] \
        --user-password=[PASS] \
        --client-id=[CLIENT_ID] \
        --client-secret=[CLIENT_SECRET] \
        --client-redirect-uri=[CLIENT_REDIRECT_URI] \
        --users-per-sec=1 \
        --concurrent-users=75 \
        --measurement=600 \
        --log-http-on-failure

Anything else?

--Debug stack trace log:

keycloak-1  |     org.keycloak.models.jpa.session.PersistentClientSessionEntity(sess) -> EntityResultInitializer(org.keycloak.models.jpa.session.PersistentClientSessionEntity(sess))@592811069 (SingleTableEntityPersister(org.keycloak.models.jpa.session.PersistentClientSessionEntity))
keycloak-1  |     org.keycloak.models.jpa.session.PersistentClientSessionEntity(sess).{id} -> NonAggregatedIdentifierMappingFetchInitializer(org.keycloak.models.jpa.session.PersistentClientSessionEntity(sess).{id}) : `class org.keycloak.models.jpa.session.PersistentClientSessionEntity`@370940940 (org.hibernate.metamodel.mapping.internal.NonAggregatedIdentifierMappingImpl@4a3ca7e8)
keycloak-1  |
keycloak-1  | 2024-08-15 13:57:24,224 DEBUG [org.hibernate.SQL] (executor-thread-5) select pcse1_0.CLIENT_ID,pcse1_0.CLIENT_STORAGE_PROVIDER,pcse1_0.EXTERNAL_CLIENT_ID,pcse1_0.OFFLINE_FLAG,pcse1_0.USER_SESSION_ID,pcse1_0.DATA,pcse1_0.TIMESTAMP,pcse1_0.version from dbo.OFFLINE_CLIENT_SESSION pcse1_0 where pcse1_0.OFFLINE_FLAG=? and (pcse1_0.USER_SESSION_ID in (?...?) or pcse1_0.USER_SESSION_ID in (?...?) or pcse1_0.USER_SESSION_ID in (?...?) or pcse1_0.USER_SESSION_ID in (?...?))
keycloak-1  | 2024-08-15 13:57:24,233 FINE  [com.microsoft.sqlserver.jdbc.internals.SQLServerStatement] (executor-thread-5) sp_executesql SQL: null created by (ConnectionID:6 ClientConnectionId: 44c273f0-0740-4cae-81df-b9c7dc9e09bb)
keycloak-1  | 2024-08-15 13:57:24,255 FINE  [com.microsoft.sqlserver.jdbc.internals.SQLServerStatement] (executor-thread-5) sp_executesql SQL: select pcse1_0.CLIENT_ID,pcse1_0.CLIENT_STORAGE_PROVIDER,pcse1_0.EXTERNAL_CLIENT_ID,pcse1_0.OFFLINE_FLAG,pcse1_0.USER_SESSION_ID,pcse1_0.DATA,pcse1_0.TIMESTAMP,pcse1_0.version from dbo.OFFLINE_CLIENT_SESSION pcse1_0 where pcse1_0.OFFLINE_FLAG= @P0 and (pcse1_0.USER_SESSION_ID in ( @P1 , … , @P2048 ) or pcse1_0.USER_SESSION_ID in ( @P2049 , …, @P4096 ) or pcse1_0.USER_SESSION_ID in ( @P4097 , … , @P6144 ) or pcse1_0.USER_SESSION_ID in ( @P6145 ,… , @P8192)): calling sp_executesql: SQL:select pcse1_0.CLIENT_ID,pcse1_0.CLIENT_STORAGE_PROVIDER,pcse1_0.EXTERNAL_CLIENT_ID,pcse1_0.OFFLINE_FLAG,pcse1_0.USER_SESSION_ID,pcse1_0.DATA,pcse1_0.TIMESTAMP,pcse1_0.version from dbo.OFFLINE_CLIENT_SESSION pcse1_0 where pcse1_0.OFFLINE_FLAG= @P0 and (pcse1_0.USER_SESSION_ID in ( @P1 ,… , @P8192))
keycloak-1  | 2024-08-15 13:57:24,295 FINE  [com.microsoft.sqlserver.jdbc.internals.SQLServerException] (executor-thread-5) *** SQLException: com.microsoft.sqlserver.jdbc.SQLServerException: The incoming request has too many parameters. The server supports a maximum of 2100 parameters. Reduce the number of parameters and resend the request. Msg 8003, Level 16, State 1, The incoming request has too many parameters. The server supports a maximum of 2100 parameters. Reduce the number of parameters and resend the request.
keycloak-1  | 2024-08-15 13:57:24,295 DEBUG [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (executor-thread-5) JDBC exception executing SQL [select pcse1_0.CLIENT_ID,pcse1_0.CLIENT_STORAGE_PROVIDER,pcse1_0.EXTERNAL_CLIENT_ID,pcse1_0.OFFLINE_FLAG,pcse1_0.USER_SESSION_ID,pcse1_0.DATA,pcse1_0.TIMESTAMP,pcse1_0.version from dbo.OFFLINE_CLIENT_SESSION pcse1_0 where pcse1_0.OFFLINE_FLAG=? and (pcse1_0.USER_SESSION_ID in (?...?) or pcse1_0.USER_SESSION_ID in (?...?) or pcse1_0.USER_SESSION_ID in (?...?) or pcse1_0.USER_SESSION_ID in (?...?))] [n/a]: com.microsoft.sqlserver.jdbc.SQLServerException: The incoming request has too many parameters. The server supports a maximum of 2100 parameters. Reduce the number of parameters and resend the request.
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:259)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1695)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:648)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:567)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7675)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:4137)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:272)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:246)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:485)
keycloak-1  |   at io.agroal.pool.wrapper.PreparedStatementWrapper.executeQuery(PreparedStatementWrapper.java:80)
keycloak-1  |   at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:246)
keycloak-1  |   at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.getResultSet(DeferredResultSetAccess.java:167)
keycloak-1  |   at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.advanceNext(JdbcValuesResultSetImpl.java:218)
keycloak-1  |   at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.processNext(JdbcValuesResultSetImpl.java:98)
keycloak-1  |   at org.hibernate.sql.results.jdbc.internal.AbstractJdbcValues.next(AbstractJdbcValues.java:19)
keycloak-1  |   at org.hibernate.sql.results.internal.RowProcessingStateStandardImpl.next(RowProcessingStateStandardImpl.java:66)
keycloak-1  |   at org.hibernate.internal.ScrollableResultsImpl.next(ScrollableResultsImpl.java:51)
keycloak-1  |   at org.hibernate.query.internal.ScrollableResultsIterator.hasNext(ScrollableResultsIterator.java:33)
keycloak-1  |   at java.base/java.util.Iterator.forEachRemaining(Iterator.java:132)
keycloak-1  |   at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
keycloak-1  |   at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
keycloak-1  |   at org.keycloak.utils.ClosingStream.forEach(ClosingStream.java:128)
keycloak-1  |   at org.keycloak.models.jpa.session.JpaUserSessionPersisterProvider.loadUserSessionsWithClientSessions(JpaUserSessionPersisterProvider.java:498)
keycloak-1  |   at org.keycloak.models.jpa.session.JpaUserSessionPersisterProvider.loadUserSessionsStream(JpaUserSessionPersisterProvider.java:405)
keycloak-1  |   at org.keycloak.models.sessions.infinispan.PersistentUserSessionProvider.getUserSessionsStream(PersistentUserSessionProvider.java:346)
keycloak-1  |   at org.keycloak.models.sessions.infinispan.PersistentUserSessionProvider.getUserSessionsStream(PersistentUserSessionProvider.java:409)
keycloak-1  |   at org.keycloak.models.sessions.infinispan.PersistentUserSessionProvider.getUserSessionsStream(PersistentUserSessionProvider.java:403)
keycloak-1  |   at org.keycloak.models.sessions.infinispan.PersistentUserSessionProvider.getUserSessionsStream(PersistentUserSessionProvider.java:398)
keycloak-1  |   at org.keycloak.admin.ui.rest.SessionsResource.lambda$realmSessions$4(SessionsResource.java:80)
keycloak-1  |   at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273)
keycloak-1  |   at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:300)
keycloak-1  |   at java.base/java.util.stream.Streams$ConcatSpliterator.tryAdvance(Streams.java:723)
keycloak-1  |   at java.base/java.util.stream.Streams$ConcatSpliterator.tryAdvance(Streams.java:720)
keycloak-1  |   at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129)
keycloak-1  |   at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527)
keycloak-1  |   at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)
keycloak-1  |   at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
keycloak-1  |   at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
keycloak-1  |   at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
keycloak-1  |   at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
keycloak-1  |   at java.base/java.util.stream.ReferencePipeline.forEachOrdered(ReferencePipeline.java:601)
keycloak-1  |   at com.fasterxml.jackson.datatype.jdk8.StreamSerializer.serialize(StreamSerializer.java:71)
keycloak-1  |   at com.fasterxml.jackson.datatype.jdk8.StreamSerializer.serialize(StreamSerializer.java:15)
keycloak-1  |   at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:502)
keycloak-1  |   at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:341)
keycloak-1  |   at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1574)
keycloak-1  |   at com.fasterxml.jackson.databind.ObjectWriter._writeValueAndClose(ObjectWriter.java:1275)
keycloak-1  |   at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:1098)
keycloak-1  |   at io.quarkus.resteasy.reactive.jackson.runtime.serialisers.FullyFeaturedServerJacksonMessageBodyWriter.writeResponse(FullyFeaturedServerJacksonMessageBodyWriter.java:79)
keycloak-1  |   at org.jboss.resteasy.reactive.server.core.ServerSerialisers.invokeWriter(ServerSerialisers.java:216)
keycloak-1  |   at org.jboss.resteasy.reactive.server.core.ServerSerialisers.invokeWriter(ServerSerialisers.java:184)
keycloak-1  |   at org.jboss.resteasy.reactive.server.core.serialization.FixedEntityWriter.write(FixedEntityWriter.java:28)
keycloak-1  |   at org.jboss.resteasy.reactive.server.handlers.ResponseWriterHandler.handle(ResponseWriterHandler.java:34)
keycloak-1  |   at io.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:147)
keycloak-1  |   at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:147)
keycloak-1  |   at io.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:582)
keycloak-1  |   at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
keycloak-1  |   at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
keycloak-1  |   at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
keycloak-1  |   at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
keycloak-1  |   at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
keycloak-1  |   at java.base/java.lang.Thread.run(Thread.java:1583)
keycloak-1  |
keycloak-1  | 2024-08-15 13:57:24,295 WARN  [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (executor-thread-5) SQL Error: 8003, SQLState: S0001
keycloak-1  | 2024-08-15 13:57:24,295 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (executor-thread-5) The incoming request has too many parameters. The server supports a maximum of 2100 parameters. Reduce the number of parameters and resend the request.
keycloak-1  | Caused by: org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL [select pcse1_0.CLIENT_ID,pcse1_0.CLIENT_STORAGE_PROVIDER,pcse1_0.EXTERNAL_CLIENT_ID,pcse1_0.OFFLINE_FLAG,pcse1_0.USER_SESSION_ID,pcse1_0.DATA,pcse1_0.TIMESTAMP,pcse1_0.version from dbo.OFFLINE_CLIENT_SESSION pcse1_0 where pcse1_0.OFFLINE_FLAG=? and (pcse1_0.USER_SESSION_ID in (?...?) or pcse1_0.USER_SESSION_ID in (?...?) or pcse1_0.USER_SESSION_ID in (?...?) or pcse1_0.USER_SESSION_ID in (?,?...?,?...?,?...?,?...?,?...?,?...?,?...?,?...?,?...?,?...?,?...?,?...?,?...?,?...?,?...?...?))] [The incoming request has too many parameters. The server supports a maximum of 2100 parameters. Reduce the number of parameters and resend the request.] [n/a]
keycloak-1  |   at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:91)
keycloak-1  |   at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:58)
keycloak-1  |   at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108)
keycloak-1  |   at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:94)
keycloak-1  |   at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:264)
keycloak-1  |   at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.getResultSet(DeferredResultSetAccess.java:167)
keycloak-1  |   at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.advanceNext(JdbcValuesResultSetImpl.java:218)
keycloak-1  |   at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.processNext(JdbcValuesResultSetImpl.java:98)
keycloak-1  |   at org.hibernate.sql.results.jdbc.internal.AbstractJdbcValues.next(AbstractJdbcValues.java:19)
keycloak-1  |   at org.hibernate.sql.results.internal.RowProcessingStateStandardImpl.next(RowProcessingStateStandardImpl.java:66)
keycloak-1  |   at org.hibernate.internal.ScrollableResultsImpl.next(ScrollableResultsImpl.java:51)
keycloak-1  |   at org.hibernate.query.internal.ScrollableResultsIterator.hasNext(ScrollableResultsIterator.java:33)
keycloak-1  |   at java.base/java.util.Iterator.forEachRemaining(Iterator.java:132)
keycloak-1  |   at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
keycloak-1  |   at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
keycloak-1  |   at org.keycloak.utils.ClosingStream.forEach(ClosingStream.java:128)
keycloak-1  |   at org.keycloak.models.jpa.session.JpaUserSessionPersisterProvider.loadUserSessionsWithClientSessions(JpaUserSessionPersisterProvider.java:498)
keycloak-1  |   at org.keycloak.models.jpa.session.JpaUserSessionPersisterProvider.loadUserSessionsStream(JpaUserSessionPersisterProvider.java:405)
keycloak-1  |   at org.keycloak.models.sessions.infinispan.PersistentUserSessionProvider.getUserSessionsStream(PersistentUserSessionProvider.java:346)
keycloak-1  |   at org.keycloak.models.sessions.infinispan.PersistentUserSessionProvider.getUserSessionsStream(PersistentUserSessionProvider.java:409)
keycloak-1  |   at org.keycloak.models.sessions.infinispan.PersistentUserSessionProvider.getUserSessionsStream(PersistentUserSessionProvider.java:403)
keycloak-1  |   at org.keycloak.models.sessions.infinispan.PersistentUserSessionProvider.getUserSessionsStream(PersistentUserSessionProvider.java:398)
keycloak-1  |   at org.keycloak.admin.ui.rest.SessionsResource.lambda$realmSessions$4(SessionsResource.java:80)
keycloak-1  |   at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273)
keycloak-1  |   at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:300)
keycloak-1  |   at java.base/java.util.stream.Streams$ConcatSpliterator.tryAdvance(Streams.java:723)
keycloak-1  |   at java.base/java.util.stream.Streams$ConcatSpliterator.tryAdvance(Streams.java:720)
keycloak-1  |   at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129)
keycloak-1  |   at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527)
keycloak-1  |   at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)
keycloak-1  |   at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
keycloak-1  |   at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
keycloak-1  |   at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
keycloak-1  |   at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
keycloak-1  |   at java.base/java.util.stream.ReferencePipeline.forEachOrdered(ReferencePipeline.java:601)
keycloak-1  |   at com.fasterxml.jackson.datatype.jdk8.StreamSerializer.serialize(StreamSerializer.java:71)
keycloak-1  |   at com.fasterxml.jackson.datatype.jdk8.StreamSerializer.serialize(StreamSerializer.java:15)
keycloak-1  |   at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:502)
keycloak-1  |   ... 18 more
keycloak-1  | Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The incoming request has too many parameters. The server supports a maximum of 2100 parameters. Reduce the number of parameters and resend the request.
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:259)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1695)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:648)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:567)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7675)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:4137)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:272)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:246)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:485)
keycloak-1  |   at io.agroal.pool.wrapper.PreparedStatementWrapper.executeQuery(PreparedStatementWrapper.java:80)
keycloak-1  |   at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:246)
keycloak-1  |   ... 51 more
keycloak-1  |
keycloak-1  | 2024-08-15 13:57:24,352 DEBUG [org.keycloak.services.error.KeycloakErrorHandler] (executor-thread-5) Error response 400: com.fasterxml.jackson.databind.JsonMappingException: JDBC exception executing SQL [select pcse1_0.CLIENT_ID,pcse1_0.CLIENT_STORAGE_PROVIDER,pcse1_0.EXTERNAL_CLIENT_ID,pcse1_0.OFFLINE_FLAG,pcse1_0.USER_SESSION_ID,pcse1_0.DATA,pcse1_0.TIMESTAMP,pcse1_0.version from dbo.OFFLINE_CLIENT_SESSION pcse1_0 where pcse1_0.OFFLINE_FLAG=? and (pcse1_0.USER_SESSION_ID in (?,…,?) or pcse1_0.USER_SESSION_ID in (?,…,?) or pcse1_0.USER_SESSION_ID in (?,…,?) or pcse1_0.USER_SESSION_ID in (?,…,?))] [The incoming request has too many parameters. The server supports a maximum of 2100 parameters. Reduce the number of parameters and resend the request.] [n/a]
keycloak-1  |   at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._wrapAsIOE(DefaultSerializerProvider.java:531)
keycloak-1  |   at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:504)
keycloak-1  |   at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:341)
keycloak-1  |   at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1574)
keycloak-1  |   at com.fasterxml.jackson.databind.ObjectWriter._writeValueAndClose(ObjectWriter.java:1275)
keycloak-1  |   at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:1098)
keycloak-1  |   at io.quarkus.resteasy.reactive.jackson.runtime.serialisers.FullyFeaturedServerJacksonMessageBodyWriter.writeResponse(FullyFeaturedServerJacksonMessageBodyWriter.java:79)
keycloak-1  |   at org.jboss.resteasy.reactive.server.core.ServerSerialisers.invokeWriter(ServerSerialisers.java:216)
keycloak-1  |   at org.jboss.resteasy.reactive.server.core.ServerSerialisers.invokeWriter(ServerSerialisers.java:184)
keycloak-1  |   at org.jboss.resteasy.reactive.server.core.serialization.FixedEntityWriter.write(FixedEntityWriter.java:28)
keycloak-1  |   at org.jboss.resteasy.reactive.server.handlers.ResponseWriterHandler.handle(ResponseWriterHandler.java:34)
keycloak-1  |   at io.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:147)
keycloak-1  |   at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:147)
keycloak-1  |   at io.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:582)
keycloak-1  |   at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
keycloak-1  |   at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
keycloak-1  |   at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
keycloak-1  |   at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
keycloak-1  |   at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
keycloak-1  |   at java.base/java.lang.Thread.run(Thread.java:1583)
keycloak-1  | Caused by: org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL [select pcse1_0.CLIENT_ID,pcse1_0.CLIENT_STORAGE_PROVIDER,pcse1_0.EXTERNAL_CLIENT_ID,pcse1_0.OFFLINE_FLAG,pcse1_0.USER_SESSION_ID,pcse1_0.DATA,pcse1_0.TIMESTAMP,pcse1_0.version from dbo.OFFLINE_CLIENT_SESSION pcse1_0 where pcse1_0.OFFLINE_FLAG=? and (pcse1_0.USER_SESSION_ID in (?,…,?) or pcse1_0.USER_SESSION_ID in (?,…,?) or pcse1_0.USER_SESSION_ID in (?,…,?) or pcse1_0.USER_SESSION_ID in (?,...,?))] [The incoming request has too many parameters. The server supports a maximum of 2100 parameters. Reduce the number of parameters and resend the request.] [n/a]
keycloak-1  |   at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:91)
keycloak-1  |   at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:58)
keycloak-1  |   at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108)
keycloak-1  |   at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:94)
keycloak-1  |   at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:264)
keycloak-1  |   at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.getResultSet(DeferredResultSetAccess.java:167)
keycloak-1  |   at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.advanceNext(JdbcValuesResultSetImpl.java:218)
keycloak-1  |   at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.processNext(JdbcValuesResultSetImpl.java:98)
keycloak-1  |   at org.hibernate.sql.results.jdbc.internal.AbstractJdbcValues.next(AbstractJdbcValues.java:19)
keycloak-1  |   at org.hibernate.sql.results.internal.RowProcessingStateStandardImpl.next(RowProcessingStateStandardImpl.java:66)
keycloak-1  |   at org.hibernate.internal.ScrollableResultsImpl.next(ScrollableResultsImpl.java:51)
keycloak-1  |   at org.hibernate.query.internal.ScrollableResultsIterator.hasNext(ScrollableResultsIterator.java:33)
keycloak-1  |   at java.base/java.util.Iterator.forEachRemaining(Iterator.java:132)
keycloak-1  |   at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
keycloak-1  |   at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
keycloak-1  |   at org.keycloak.utils.ClosingStream.forEach(ClosingStream.java:128)
keycloak-1  |   at org.keycloak.models.jpa.session.JpaUserSessionPersisterProvider.loadUserSessionsWithClientSessions(JpaUserSessionPersisterProvider.java:498)
keycloak-1  |   at org.keycloak.models.jpa.session.JpaUserSessionPersisterProvider.loadUserSessionsStream(JpaUserSessionPersisterProvider.java:405)
keycloak-1  |   at org.keycloak.models.sessions.infinispan.PersistentUserSessionProvider.getUserSessionsStream(PersistentUserSessionProvider.java:346)
keycloak-1  |   at org.keycloak.models.sessions.infinispan.PersistentUserSessionProvider.getUserSessionsStream(PersistentUserSessionProvider.java:409)
keycloak-1  |   at org.keycloak.models.sessions.infinispan.PersistentUserSessionProvider.getUserSessionsStream(PersistentUserSessionProvider.java:403)
keycloak-1  |   at org.keycloak.models.sessions.infinispan.PersistentUserSessionProvider.getUserSessionsStream(PersistentUserSessionProvider.java:398)
keycloak-1  |   at org.keycloak.admin.ui.rest.SessionsResource.lambda$realmSessions$4(SessionsResource.java:80)
keycloak-1  |   at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273)
keycloak-1  |   at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:300)
keycloak-1  |   at java.base/java.util.stream.Streams$ConcatSpliterator.tryAdvance(Streams.java:723)
keycloak-1  |   at java.base/java.util.stream.Streams$ConcatSpliterator.tryAdvance(Streams.java:720)
keycloak-1  |   at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129)
keycloak-1  |   at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527)
keycloak-1  |   at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)
keycloak-1  |   at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
keycloak-1  |   at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
keycloak-1  |   at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
keycloak-1  |   at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
keycloak-1  |   at java.base/java.util.stream.ReferencePipeline.forEachOrdered(ReferencePipeline.java:601)
keycloak-1  |   at com.fasterxml.jackson.datatype.jdk8.StreamSerializer.serialize(StreamSerializer.java:71)
keycloak-1  |   at com.fasterxml.jackson.datatype.jdk8.StreamSerializer.serialize(StreamSerializer.java:15)
keycloak-1  |   at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:502)
keycloak-1  |   ... 18 more
keycloak-1  | Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The incoming request has too many parameters. The server supports a maximum of 2100 parameters. Reduce the number of parameters and resend the request.
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:259)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1695)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:648)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:567)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7675)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:4137)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:272)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:246)
keycloak-1  |   at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:485)
keycloak-1  |   at io.agroal.pool.wrapper.PreparedStatementWrapper.executeQuery(PreparedStatementWrapper.java:80)
keycloak-1  |   at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:246)
keycloak-1  |   ... 51 more
keycloak-1  |

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions