问题标签 [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.

0 投票
1 回答
1304 浏览

java - Infinispan 复制缓存不复制对象以进行读取

我们正在尝试在 Openshift 内部的 Wildfly 11 上运行的两个 infinispan 节点上安装复制缓存。当我们在一个节点上写入一个对象时,它不会显示在另一个节点上以供读取。

启动时,节点连接到集群中,并且可以在日志中看到彼此:

缓存配置。我们尝试了包括 NONE、FULL_XA 和 BATCH 在内的事务模式:

在代码中,缓存通过 spring 连接为:

和 Jgroups 配置:

数据进入数据库,如果我们在第二个节点上重建缓存,它将包含更新的信息。

鉴于节点已连接,我们如何解决读取复制未发生的事实?我们已经尝试了复制和分布式缓存配置。

0 投票
0 回答
207 浏览

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 用户指南

0 投票
1 回答
1157 浏览

caching - Wildfly infinispan Web 缓存容器有什么用?

我正在使用 Wildfly 12。

infinispan 子系统的默认配置定义了一个名为“web”的缓存容器。我试图找出为什么定义这个容器以及谁使用它,但到目前为止在文档或谷歌的任何地方都找不到任何解释。

独立-完整-ha-custom.xml:

什么样的数据存储在这个缓存中,哪些组件需要它?

0 投票
2 回答
722 浏览

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我们甚至从容器内部尝试过,没有运气

0 投票
1 回答
941 浏览

java - Infinispan:锁定远程事务缓存

我们尝试使用 infinispan 作为带有读锁的远程缓存。客户端正在使用“put”进行读取以获取密钥上的锁定,如 infinispan 文档中所述的悲观事务缓存部分“当 cache.put(k1,v1) 返回时,k1 被锁定并且没有其他事务在集群中的任何地方运行都可以写入它。仍然可以读取 k1。当事务完成(提交或回滚)时,k1 上的锁被释放。所以场景:

远程缓存配置为带有悲观锁定的事务性:

并且客户端正在使用配置访问 remoteCacheManager 作为 HOTROD 客户端:

尽管客户端可以同时“使用 put 读取”一个值,但 Concurent 客户端在读取该值时并没有收到异常,而是稍后通过提交事务。这是预期的行为吗?

0 投票
1 回答
128 浏览

java - Infinispan 驱逐与树缓存

我正在寻找一种方法来使 infinispan 的默认驱逐与 TreeCache 实现一起工作。到目前为止,我搜索了文档和谷歌,但没有发现任何适合我的问题。这是 infinispan xml 中缓存的当前配置:

现在我的问题是,有没有一种我现在还没有找到的简单方法,还是我必须创建自己的 EvictionManager 并自己处理?

0 投票
1 回答
507 浏览

infinispan - infinispan 9.4 - 监听器和事件过滤器

我正在尝试在具有 Infinispan 9.4.0 和 Hot Rod 客户端的两个实例的分布式缓存中使用带有过滤器的侦听器。当我尝试将新条目放入缓存时,出现以下异常:

这是缓存配置:

这是我的演示课:

事件过滤器工厂:

事件过滤器:

我的测试代码:

听者:

我已经查看了用于序列化的白名单,但我什么也没找到。

我尝试将内存配置中的对象更改为二进制禁用兼容性但随后出现了一个新异常:

谁能帮我这个?

0 投票
2 回答
1267 浏览

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 文档,但找不到任何东西。

0 投票
0 回答
90 浏览

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 文件:

0 投票
0 回答
341 浏览

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.runAllTask​​s(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