问题标签 [infinispan-9]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Infinispan 复制缓存不复制对象以进行读取
我们正在尝试在 Openshift 内部的 Wildfly 11 上运行的两个 infinispan 节点上安装复制缓存。当我们在一个节点上写入一个对象时,它不会显示在另一个节点上以供读取。
启动时,节点连接到集群中,并且可以在日志中看到彼此:
缓存配置。我们尝试了包括 NONE、FULL_XA 和 BATCH 在内的事务模式:
在代码中,缓存通过 spring 连接为:
和 Jgroups 配置:
数据进入数据库,如果我们在第二个节点上重建缓存,它将包含更新的信息。
鉴于节点已连接,我们如何解决读取复制未发生的事实?我们已经尝试了复制和分布式缓存配置。
persistence - Infinispan 单文件存储如何清理重复的密钥,如果它们被定期放置并具有过期寿命?
(查询部分向中间的问题)
环境:
英菲尼斯潘 9.13
具有 jgroups 的集群中的嵌入式缓存(但也可以在本地 basiccache 中看到相同的行为)
单一文件存储
没有明确的驱逐或钝化
场景:
在某个频率(称为频率)下,一个线程(例如 ExecutorService.scheduleAtFixedRate(...))将 put(key, value, freq + buffer, TimeUnit.minutes) 放入分布式缓存中。
因此,在固定频率下,对于每个具有与以前相同或不同值的键,条目将被放入缓存中,其寿命 = 频率 + 缓冲区(缓冲区只是为了安全,远低于频率)。
例如,插入可能会使用 lifespan=freq+buffer:
k1, v1
k2, v2
k3, v3
在我们使用相同寿命的频率之后:
k1, v1
k2, v4(不同的值)
k3, v3
没有发生驱逐,因为没有达到最大内存大小
问题:
在单个文件存储中,键值似乎是重复的,我们在下一个频率 + 缓冲区之后检查得很好。
因此该文件可能在单个文件 store.dat 中:
k1,v1
k1,v1,
k2,v2
k2,v3
(这并不准确,而只是文件存储中的内容的表示)。
我们可以接受重复,因为使用 get() 以编程方式访问总是返回更新的或正确的值(尽管我们可能永远不会在大多数键上调用 get)。
查询:
infinispan 是否从单个文件 store.dat 中清理过时的值,以确保文件存储不会随着每个 put() 无限增长,因为在每个频率它都会在末尾附加键值或替换文件内的一些就地(一些键值是重复的,并且在重复中有些是陈旧的,有些是更新的)?
能否请您指出文档/机制,以确保确实发生这种清理并且文件存储不会因为过多的重复/陈旧/过期条目而增长?
文档指的是一个唤醒的过期收割线程,但这里没有明确传递任何内容(因为 xml 文件中没有条目,并且寿命是通过 put() 以编程方式设置的) - 如果过期收割线程正在执行此操作cleanup 我想知道并记录默认的唤醒间隔。
Infinispan 文档中的注释:
陈旧和重复的条目似乎是预期的行为 -
“如果你不使用 eviction,持久存储中的内容基本上是内存中内容的副本。如果你使用 eviction,持久存储中的内容基本上是内存中内容的超集(即它包括已从记忆中驱逐)。” - http://infinispan.org/docs/stable/user_guide/user_guide.html#cache_loader_behavior_with_passivation_disabled_vs_enabled
“如果你没有配置驱逐并且你让这个时间过期,它可以看起来 Infinispan 没有删除条目。” - http://infinispan.org/docs/stable/faqs/faqs.html#expiration_does_not_work_what_is_the_problem
这是清理单个文件 store.dat 中的重复项吗?“当条目过期时,它将驻留在数据容器或缓存存储中,直到用户请求再次访问它。还有一个可选的过期收割机,它可以在给定的可配置的毫秒间隔内运行,它将检查过期条目并删除它们。” - Infinispan 9.2 用户指南
caching - Wildfly infinispan Web 缓存容器有什么用?
我正在使用 Wildfly 12。
infinispan 子系统的默认配置定义了一个名为“web”的缓存容器。我试图找出为什么定义这个容器以及谁使用它,但到目前为止在文档或谷歌的任何地方都找不到任何解释。
独立-完整-ha-custom.xml:
什么样的数据存储在这个缓存中,哪些组件需要它?
spring - Java 10 Spring Boot Infinispan org.jgroups.logging.Slf4jLogImpl 未找到
我有一个使用 Java 10 构建和运行的 Spring Boot 应用程序。如果我使用
一切正常。该应用程序启动正常。
但是,如果我将我的应用程序放入具有完全相同 Java 版本的 Docker 容器中,我的应用程序会抛出此异常:
我正在使用这个版本的 Java:
Docker版本是:
我的 Docker 使用的是 Alpine 基础映像alpine:latest
。我正在通过此链接在我的容器中安装 java:
我真的很困惑,因为从 docker 容器外部我的应用程序工作正常,但在 docker 容器内部却不行。无论哪种情况,我都使用相同的 Java 版本。
更新
我们尝试了 Oracle JDK 和 OpenJDK,同样的行为
更新 2
java -jar
我们甚至从容器内部尝试过,没有运气
java - Infinispan:锁定远程事务缓存
我们尝试使用 infinispan 作为带有读锁的远程缓存。客户端正在使用“put”进行读取以获取密钥上的锁定,如 infinispan 文档中所述的悲观事务缓存部分“当 cache.put(k1,v1) 返回时,k1 被锁定并且没有其他事务在集群中的任何地方运行都可以写入它。仍然可以读取 k1。当事务完成(提交或回滚)时,k1 上的锁被释放。所以场景:
远程缓存配置为带有悲观锁定的事务性:
并且客户端正在使用配置访问 remoteCacheManager 作为 HOTROD 客户端:
尽管客户端可以同时“使用 put 读取”一个值,但 Concurent 客户端在读取该值时并没有收到异常,而是稍后通过提交事务。这是预期的行为吗?
java - Infinispan 驱逐与树缓存
我正在寻找一种方法来使 infinispan 的默认驱逐与 TreeCache 实现一起工作。到目前为止,我搜索了文档和谷歌,但没有发现任何适合我的问题。这是 infinispan xml 中缓存的当前配置:
现在我的问题是,有没有一种我现在还没有找到的简单方法,还是我必须创建自己的 EvictionManager 并自己处理?
infinispan - infinispan 9.4 - 监听器和事件过滤器
我正在尝试在具有 Infinispan 9.4.0 和 Hot Rod 客户端的两个实例的分布式缓存中使用带有过滤器的侦听器。当我尝试将新条目放入缓存时,出现以下异常:
这是缓存配置:
这是我的演示课:
事件过滤器工厂:
事件过滤器:
我的测试代码:
听者:
我已经查看了用于序列化的白名单,但我什么也没找到。
我尝试将内存配置中的对象更改为二进制并禁用兼容性,但随后出现了一个新异常:
谁能帮我这个?
infinispan - Infinispan 9 - 尝试使用 Hotrod 客户端和 Protobuf 将对象放入缓存时出现服务器异常
为了能够使用查询,我在使用带有 Hot Rod 客户端和 Protobuf 协议的 Infinispan 9.4.0/9.4.1 时遇到问题。
这是我的缓存配置:
我的实体
原型文件
编组器
缓存配置
我与 Infinispan 的联系
我将我的实体放在一个 jar 文件 (infinispan-module.jar) 中,然后我在 Infinispan 中部署了该 jar。
当我尝试将对象放入缓存时,服务器中出现以下异常
谁能帮我这个?我一直在寻找解决方案,但我找不到任何东西。
更新 2018-11-07
我有一个新问题。
我需要使用带有过滤器和转换器的侦听器。当我只使用过滤器时,一切都很好,但是当我添加转换器时,我在服务器端出现异常。我只想接收放在 CREATE 自定义事件缓存中的对象。
过滤器类
过滤器工厂类
转换器类
转换器工厂
我的听众
我用这段代码添加监听器
当我将新对象放入 infinispan 缓存时,出现以下异常:
我搜索了 infinispan 文档,但找不到任何东西。
infinispan - 如果在 *EMPTY* Infinispan 缓存上进行并行流(分布式)计算,可能出现错误?
我是 Infinispan 的新手,并且一直在玩它。我想我发现了一个错误。如果缓存是空的并且我们有两个节点正在运行(并且这些节点实际上必须位于不同的虚拟机上——它不能只是 2 个 jvm 进程),那么 node#1 上的第二个进程执行并行流操作如下:
您将收到以下错误(主要错误是我认为“无效的 lambda 反序列化”)。注意:如果缓存中填充了一些数据,则不会发生此错误。我尝试(相当努力)跟踪代码,但无法找出问题所在,尽管我怀疑它与反序列化某种空收集器有关....有没有人看到这个或认为这很可能错误(与用户错误相反?我在发布之前尝试了很多很多事情......)。任何解决方法?(或者也许它是实际相关代码中的一个超级简单的“真实”修复?)
(其他详细信息:Infinispan 9.4.1 嵌入式;操作系统 --> Win Server 2016;oracle jdk8;Windows 机器在 Google Compute 上作为 VM 运行,但不是 kubernetes;jgroups 被配置为使用带有硬编码主机名的 TCPPing)
另外,虽然我认为这不相关,但这是缓存定义:
而且,虽然我认为这也不相关,但这是 ggroups xml 文件:
infinispan - Infinispan 在 GetOperation 期间抛出间歇性 SocketTimeoutException
交叉发布自https://developer.jboss.org/message/988346#988346
在具有复制的独立服务器模式下使用 jboss/infinispan-server:9.4.0.Final ( https://hub.docker.com/r/jboss/infinispan-server ),客户端通过 hotrod 连接。
这是我们的 gradle 文件:
以下是每个客户端代码(java)如何通过 hotrod 连接到缓存:
这是相关的xml:
有时,我们会在调试级别(例如每 30 分钟后)收到以下异常,但大多数情况下它按预期工作。它似乎在 ourCache.get("key") 方法处同步等待,直到超时 60 秒。
但是,如果我们之后立即重试该操作,它可以正常工作并且没有错误。希望有人可以帮助我了解原因。
2019-03-06 07:15:47,668 错误:当..“我们的应用程序数据消息”时发生错误。: java.net.SocketTimeoutException: GetOperation{OUR_CACHE, key=[B0x033E22742D663039..[37], flags=0} 在 60000 毫秒后超时
org.infinispan.client.hotrod.exceptions.TransportException: java.net.SocketTimeoutException: GetOperation{OUR_CACHE, key=[B0x033E22742D663039..[37], flags=0} 在 60000 毫秒后超时
在 org.infinispan.client.hotrod.impl.Util.rewrap(Util.java:54) ~[infinispan-client-hotrod-9.4.0.Final.jar:9.4.0.Final]
在 org.infinispan.client.hotrod.impl.Util.await(Util.java:27) ~[infinispan-client-hotrod-9.4.0.Final.jar:9.4.0.Final]
在 org.infinispan.client.hotrod.impl.RemoteCacheImpl.get(RemoteCacheImpl.java:418) ~[infinispan-client-hotrod-9.4.0.Final.jar:9.4.0.Final]
在 ... 我们的应用程序 jar 的堆栈跟踪
在 javax.servlet.http.HttpServlet.service(HttpServlet.java:661) [servlet-api.jar:?]
在 javax.servlet.http.HttpServlet.service(HttpServlet.java:742) [servlet-api.jar:?]
在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [catalina.jar:8.5.35]
在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:8.5.35]
在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-websocket.jar:8.5.35]
在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:8.5.35]
在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:8.5.35]
在 ... 我们的应用程序 jar 的堆栈跟踪
在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:8.5.35]
在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:8.5.35]
在 ... 我们的应用程序 jar 的堆栈跟踪
在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:8.5.35]
在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:8.5.35]
在 org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71) [log4j-web-2.10.0.jar:2.10.0]
在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:8.5.35]
在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:8.5.35]
在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) [catalina.jar:8.5.35]
在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [catalina.jar:8.5.35]
在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493) [catalina.jar:8.5.35]
在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [catalina.jar:8.5.35]
在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [catalina.jar:8.5.35]
在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [catalina.jar:8.5.35]
在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [catalina.jar:8.5.35]
在 org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800) [tomcat-coyote.jar:8.5.35]
在 org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-coyote.jar:8.5.35]
在 org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806) [tomcat-coyote.jar:8.5.35]
在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498) [tomcat-coyote.jar:8.5.35]
在 org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:8.5.35]
在 java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:?]
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:?]
在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:8.5.35]
在 java.lang.Thread.run(Unknown Source) [?:?]
原因:java.net.SocketTimeoutException: GetOperation{OUR_CACHE, key=[B0x033E22742D663039..[37], flags=0} 在 60000 毫秒后超时
在 org.infinispan.client.hotrod.impl.operations.HotRodOperation.run(HotRodOperation.java:172) ~[infinispan-client-hotrod-9.4.0.Final.jar:9.4.0.Final]
在 io.netty.util.concurrent.PromiseTask$RunnableAdapter.call(PromiseTask.java:38) ~[netty-common-4.1.28.Final.jar:4.1.28.Final]
在 io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:127) ~[netty-common-4.1.28.Final.jar:4.1.28.Final]
在 io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) ~[netty-common-4.1.28.Final.jar:4.1.28.Final]
在 io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404) ~[netty-common-4.1.28.Final.jar:4.1.28.Final]
在 io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:322) ~[netty-transport-native-epoll-4.1.28.Final-linux-x86_64.jar:4.1.28.Final]
在 io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884) ~[netty-common-4.1.28.Final.jar:4.1.28.Final]
在 java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?]
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?]
... 1 更多
希望有人可以就根本原因和潜在解决方案提出建议。
谢谢,
_Prateek