我在JBoss 7.1.1 Final的server.log文件中看到以下(截断的)stacktrace:
Caused by: org.postgresql.util.PSQLException:
ERROR: current transaction is aborted, commands ignored until end of
transaction block
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:512)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:374)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:302)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.6.0_23]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [rt.jar:1.6.0_23]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [rt.jar:1.6.0_23]
at java.lang.reflect.Method.invoke(Method.java:597) [rt.jar:1.6.0_23]
at org.postgresql.ds.jdbc23.AbstractJdbc23PooledConnection$StatementHandler.invoke(AbstractJdbc23PooledConnection.java:455)
at $Proxy49.executeUpdate(Unknown Source) at org.jboss.jca.adapters.jdbc.WrappedStatement.executeUpdate(WrappedStatement.java:371)
at org.infinispan.loaders.jdbc.TableManipulation.executeUpdateSql(TableManipulation.java:154) [infinispan-cachestore-jdbc-5.1.2.FINAL.jar:5.1.2.FINAL]
... 154 more
Run Code Online (Sandbox Code Playgroud)
检查Postgres日志文件会显示以下语句:
STATEMENT: SELECT count(*) FROM ISPN_MIXED_BINARY_TABLE_configCache
ERROR: current transaction is aborted, commands ignored until end of transaction block
STATEMENT: CREATE TABLE ISPN_MIXED_BINARY_TABLE_configCache(ID_COLUMN VARCHAR(255) NOT …
Run Code Online (Sandbox Code Playgroud) 我们正在新项目的设计阶段工作,我们需要决定缓存框架.我们需要决定是否将EHCache与Terracotta或Infinispan一起用于缓存要求?任何人都可以向我提供EHCache和Infinispan的优缺点吗?
提前致谢.
Keycloak配置和数据存储在关系数据库中,通常持久化到硬盘上。这包括领域设置、用户、组和角色成员资格、身份验证流程等数据。但用户会话只会存储在临时内存中的 infinispan 缓存中。因此,当 keycloak 服务器重新启动时,该缓存中的会话数据将会丢失。
需要重新启动 Keycloak 服务器的原因有很多。主要操作系统升级、Keycloak 服务器升级到新版本、对 keycloak 电子邮件模板应用更改或将 keycloak pod 重新调度到 kubernetes 或其他基于云的环境中的其他工作节点。
如何保留会话数据以在重新启动后继续存在。理想情况下,无需维护自定义 infinspan 服务器或使用 keycloak“离线会话”。
一种解决方案可能是简单地使用所谓的 keycloak “离线会话”,但这些会话也有巨大的缺点:
请参阅:https ://www.keycloak.org/docs/latest/server_admin/#_offline-access
当 keycloak > 17 退出并使用全新的 quarkus 发行版时,这个问题是否仍然存在?因为在接下来的文章中声称了容器优先方法、零停机升级和存储重构等目标。
我有一个Web应用程序<distributable/>
,但也部署为独立的Wildfly实例,用于本地开发工作.有时我们会调用后端可以停止几秒钟,这通常会导致如下所示的异常.
鉴于我无法控制长时间运行的后端请求,我该如何解决这个问题呢?
14:55:04,808 ERROR [org.infinispan.interceptors.InvocationContextInterceptor] (default task-6) ISPN000136: Error executing command LockControlCommand, writing keys []: org.infinispan.util.concurrent.TimeoutException: ISPN000299: Unable to acquire lock after 15 seconds for key LA6Q5r9L1q-VF2tyKE9Pc_bO9yYtzXu8dYt8l-BQ and requestor GlobalTransaction:<null>:37:local. Lock is held by GlobalTransaction:<null>:36:local
at org.infinispan.util.concurrent.locks.impl.DefaultLockManager$KeyAwareExtendedLockPromise.lock(DefaultLockManager.java:236)
at org.infinispan.interceptors.locking.AbstractLockingInterceptor.lockAllAndRecord(AbstractLockingInterceptor.java:199)
at org.infinispan.interceptors.locking.AbstractTxLockingInterceptor.checkPendingAndLockAllKeys(AbstractTxLockingInterceptor.java:199)
at org.infinispan.interceptors.locking.AbstractTxLockingInterceptor.lockAllOrRegisterBackupLock(AbstractTxLockingInterceptor.java:165)
at org.infinispan.interceptors.locking.PessimisticLockingInterceptor.visitLockControlCommand(PessimisticLockingInterceptor.java:184)
at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
at org.infinispan.interceptors.TxInterceptor.invokeNextInterceptorAndVerifyTransaction(TxInterceptor.java:157)
at org.infinispan.interceptors.TxInterceptor.visitLockControlCommand(TxInterceptor.java:215)
at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:107)
at org.infinispan.interceptors.InvocationContextInterceptor.visitLockControlCommand(InvocationContextInterceptor.java:81)
at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:336)
at org.infinispan.cache.impl.CacheImpl.lock(CacheImpl.java:828)
at org.infinispan.cache.impl.CacheImpl.lock(CacheImpl.java:810)
at org.infinispan.cache.impl.AbstractDelegatingAdvancedCache.lock(AbstractDelegatingAdvancedCache.java:177)
at org.wildfly.clustering.web.infinispan.session.InfinispanSessionMetaDataFactory.getValue(InfinispanSessionMetaDataFactory.java:84)
at org.wildfly.clustering.web.infinispan.session.InfinispanSessionMetaDataFactory.findValue(InfinispanSessionMetaDataFactory.java:69)
at org.wildfly.clustering.web.infinispan.session.InfinispanSessionMetaDataFactory.findValue(InfinispanSessionMetaDataFactory.java:39)
at …
Run Code Online (Sandbox Code Playgroud) 我正在将 keycloak (v.3.4.0 final) 从使用嵌入式 infinispan 切换到专用的远程 infinispan 集群 (v8.2.8.final)。我已经完成了升级过程,在较低的环境中使用 infinispan 集群作为远程存储,没有问题。在我的生产设置中,我遇到了 InfinispanCacheInitializer 上的超时异常
Keycloak 发生错误的地方:https : //github.com/keycloak/keycloak/blob/3.4.2.Final/model/infinispan/src/main/java/org/keycloak/models/sessions/infinispan/initializer/InfinispanCacheInitializer .java#L117
ERROR [org.keycloak.models.sessions.infinispan.initializer.InfinispanCacheInitializer] (ServerService Thread Pool -- 54) ExecutionException when computed future. Errors: 13: java.util.concurrent.ExecutionException: java.util.concurrent.TimeoutExc
eption
at org.infinispan.distexec.DefaultExecutorService$DistributedTaskPart.get(DefaultExecutorService.java:850)
at org.keycloak.models.sessions.infinispan.initializer.InfinispanCacheInitializer.startLoading(InfinispanCacheInitializer.java:102)
at org.keycloak.models.sessions.infinispan.initializer.DBLockBasedCacheInitializer.startLoading(DBLockBasedCacheInitializer.java:75)
at org.keycloak.models.sessions.infinispan.initializer.CacheInitializer.loadSessions(CacheInitializer.java:41)
at org.keycloak.models.sessions.infinispan.InfinispanUserSessionProviderFactory$2.run(InfinispanUserSessionProviderFactory.java:150)
at org.keycloak.models.utils.KeycloakModelUtils.runJobInTransaction(KeycloakModelUtils.java:227)
at org.keycloak.models.sessions.infinispan.InfinispanUserSessionProviderFactory.loadPersistentSessions(InfinispanUserSessionProviderFactory.java:137)
at org.keycloak.models.sessions.infinispan.InfinispanUserSessionProviderFactory$1.onEvent(InfinispanUserSessionProviderFactory.java:108)
at org.keycloak.services.DefaultKeycloakSessionFactory.publish(DefaultKeycloakSessionFactory.java:68)
at org.keycloak.services.resources.KeycloakApplication$2.run(KeycloakApplication.java:165)
at org.keycloak.models.utils.KeycloakModelUtils.runJobInTransaction(KeycloakModelUtils.java:227)
at org.keycloak.services.resources.KeycloakApplication.<init>(KeycloakApplication.java:158)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.jboss.resteasy.core.ConstructorInjectorImpl.construct(ConstructorInjectorImpl.java:150)
at org.jboss.resteasy.spi.ResteasyProviderFactory.createProviderInstance(ResteasyProviderFactory.java:2298)
at org.jboss.resteasy.spi.ResteasyDeployment.createApplication(ResteasyDeployment.java:340)
at org.jboss.resteasy.spi.ResteasyDeployment.start(ResteasyDeployment.java:253)
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.init(ServletContainerDispatcher.java:120)
at …
Run Code Online (Sandbox Code Playgroud) I have two Wildfly 10.1.0 Final server running on the same machine. Each has the same application deployed but for different clients. Each server is also configured to use Inifinispan 8.2.4 as a second level cache.
Now, here is the situation: the first server starts and it comes to the following log entries:
2017-04-19 06:25:29,414 INFO (ServerService Thread Pool -- 61) [org.infinispan.remoting.transport.jgroups.JGroupsTransport.start) ISPN000078: Starting JGroups channel infinispan-hibernate-cluster
2017-04-19 06:25:36,166 INFO (ServerService Thread Pool -- 61) [org.infinispan.remoting.transport.jgroups.JGroupsTransport.viewAccepted) ISPN000094: Received new cluster …
Run Code Online (Sandbox Code Playgroud) 我正在配置Hibernate Search 5.5.5在Wildfly 10上使用Infinispan 8.2.2.我在Wildfly中只配置了Infinispan模块,而不是Hibernate Search模块.
在persistence.xml里面我把这个配置:
<property name="hibernate.search.infinispan.cachemanager_jndiname" value="java:jboss/infinispan/container/hibernateSearch" />
<property name="wildfly.jpa.hibernate.search.module" value="none" />
Run Code Online (Sandbox Code Playgroud)
这是因为似乎使用了Infinispan,但不会持久保存索引.
所有缓存都在domain.xml中配置如下:
<cache-container name="hibernateSearch" default-cache="LuceneIndexesData" jndi-name="java:jboss/infinispan/hibernateSearch" statistics-enabled="false">
<replicated-cache name="LuceneIndexesMetadata" mode="ASYNC">
<file-store fetch-state="false" passivation="false" preload="false" purge="false" shared="false" singleton="false"/>
</replicated-cache>
<replicated-cache name="LuceneIndexesLocking" mode="SYNC">
<file-store fetch-state="false" passivation="false" preload="false" purge="false" shared="false" singleton="false"/>
</replicated-cache>
<replicated-cache name="LuceneIndexesData" mode="ASYNC">
<file-store fetch-state="false" passivation="false" preload="false" purge="false" shared="false" singleton="false"/>
</replicated-cache>
</cache-container>
Run Code Online (Sandbox Code Playgroud)
在jboss-deployment-structure.xml中:
<module name="org.infinispan" slot="ispn-8.2"/>
<module name="org.hibernate.search.orm" services="export" />
Run Code Online (Sandbox Code Playgroud)
当我尝试索引所有我收到此错误:
UNHANDLED_EXCEPTION: java.lang.IllegalArgumentException: java.lang.Object is not an indexed entity or a subclass of an indexed entity …
Run Code Online (Sandbox Code Playgroud) 在设置集群期间,我遇到了WildFly/Infinispan的问题,试图序列化一些可以在每个实例上重新创建的类 - 尽管无论出于什么原因它们似乎决定在集群中分发.
最初我认为@Stateless注释会产生我想要的效果,虽然它会因为没有正确的构造函数而引发问题,所以我不相信这是我们正在寻找的.
在每个类的基础上禁用此方法或覆盖序列化方法的正确方法是什么?
目前在standalone-ha模式下设置keycloak集群,以便能够在docker swarm上运行.在keycloak中,用户会话缓存在嵌入式infinispan存储中,infinispan可以配置为跨群集的分布式缓存.
我还将所有者设置为2,但问题是..在缩小规模期间,用户会话可能会丢失,如果包含缓存的所有者都在缩小期间被杀死.
我也读过有关Infinispan Redis缓存存储的信息,但我不知道如何配置它.
问题1:是否可以将Keycloak Infinispan配置为用户Redis商店?
问题2:如果不可能,有没有办法可以克服这个问题?
任何的意见都将会有帮助.
我在JBoss论坛上复制了以下问题.我们面临同样的问题.
这是我的场景:
我只有一个DIST_SYNC缓存,集群中的大多数JVM都配置了capacityFactor = 0
(类似于distibutedlocalstorage=false
Coherence 的属性),并且某些节点配置了capacityFactor>0
(例如1000).我们谈论的是100个节点和capacityFactor=0
另外4个节点,其中集群是一个单独的"站点/机架".分区处理已关闭,numOwners为1.
当所有节点capacityFactor > 0
都关闭时,群集将进入降级状态,如果没有完整的群集重新启动,它将无法再恢复.
如果我启用分区处理,那么可以抛出有效的异常,我认为是预期的行为(Infinispan用户指南).
我认为这是问题,这是一个错误:
14/11/17 09:27:25 WARN topology.CacheTopologyControlCommand:ISPN000071:处理命令时遇到异常CacheTopologyControlCommand {cache = shared,type = JOIN,sender = testserver1 @ xxxxxxx-22311,site-id = xxx,rack-id = xxx,machine-id = 24字节,joinInfo = CacheJoinInfo {consistentHashFactory =org.infinispan.distribution.ch.impl.TopologyAwareConsistentHashFactory@78b791ef,hashFunction = MurmurHash3,numSegments = 60,numOwners = 1,timeout = 120000,totalOrder = false,distributed = true},topologyId = 0,rebalanceId = 0,currentCH = null,pendingCH = null,availabilityMode = null,throwable = null,viewId = 3}
java.lang.IllegalArgumentException:缓存拓扑的挂起一致性哈希必须包含所有当前一致哈希的成员
at org.infinispan.topology.CacheTopology.<init>(CacheTopology.java:48)
at org.infinispan.topology.CacheTopology.<init>(CacheTopology.java:43)
at org.infinispan.topology.ClusterCacheStatus.startQueuedRebalance(ClusterCacheStatus.java:631)
at org.infinispan.topology.ClusterCacheStatus.queueRebalance(ClusterCacheStatus.java:85)
at …
Run Code Online (Sandbox Code Playgroud) infinispan ×10
wildfly ×5
java ×4
keycloak ×3
hibernate ×2
jboss ×2
caching ×1
ehcache ×1
ejb-3.1 ×1
java-ee ×1
postgresql ×1
session ×1
terracotta ×1
wildfly-9 ×1