为什么我的Apache Ignite持久性存储保持锁定状态?

问题描述 投票:0回答:1

我有一个使用Apache Ignite作为单节点集群的应用程序。也就是说,Ignite由应用程序启动和停止,并且其生命周期与应用程序匹配。

Ignite缓存同时启用了持久存储和直读。因此,

  1. 对cache.get()的第一次调用->缓存中没有任何内容,通过CacheAdapter读取到后备存储(Oracle数据库)并将条目加载到缓存中。
  2. 随后对cache.get()的调用->从缓存返回
  3. 应用程序反弹,调用cache.get()->从缓存(从持久性存储)返回。 重点是,应用程序反弹后,它会not读入后备存储!

所有这些似乎都工作得很好。这是我的问题:有时(经常)在应用程序退回或重新部署时,就Apache Ignite而言,持久性存储data目录保持锁定。结果,Ignite静默创建了一个新的空持久存储,这破坏了持久存储的全部目的。

我们的数据目录当前看起来像这样:

-sh-4.2$ pwd
/myapp/oracle/user_projects/domains/myapp_inst/igniteCache/myserver/data
-sh-4.2$ ls -ltr
total 48
drwxr-x---. 10 mygroup mygroup 4096 Jan  9 16:25 node00-7c02d9ab-7ef3-4d01-8ebd-d1184fa281a2
drwxr-x---. 10 mygroup mygroup 4096 Jan  9 17:28 node01-06a5d059-1b62-4ac2-84bf-5325deac8138
drwxr-x---. 10 mygroup mygroup 4096 Feb  4 15:39 node02-ba720d52-570a-448c-9109-75687ee664e7
drwxr-x---. 10 mygroup mygroup 4096 Feb  5 12:16 node03-d2c521aa-e0ee-471b-ad16-08af382a1e3d
drwxr-x---. 10 mygroup mygroup 4096 Feb  6 17:44 node04-505e754e-a3d3-48b1-a759-d5ec8867dc96
drwxr-x---. 10 mygroup mygroup 4096 Feb  6 18:23 node05-ec0f89e3-bfe5-4bb6-87da-302951439f66
drwxr-x---. 10 mygroup mygroup 4096 Feb 13 15:41 node06-5b9dc33a-42f6-4f1c-8d57-14d5ddb30dc5
drwxr-x---. 10 mygroup mygroup 4096 Feb 13 15:43 node07-47aacde5-2598-4a85-9383-761e569bb1d1
drwxr-x---. 10 mygroup mygroup 4096 Feb 13 15:47 node08-0374a51d-4b90-4e5a-9465-adabc900ea0b
drwxr-x---. 10 mygroup mygroup 4096 Feb 13 15:52 node09-610c69c6-35e0-4d74-90db-6be09bb77659
-rw-r-----.  1 mygroup mygroup   41 Feb 13 17:00 lock
drwxr-x---. 10 mygroup mygroup 4096 Feb 13 17:00 node10-f115d95b-7b76-41e0-bd32-966030331c9c

上面应该只有一个“ nodeXX ...”目录。

问题

  1. 有什么我可以做的应用程序,以确保无论发生什么故障,持久性存储锁都被释放?
  2. 在应用程序启动时,我有什么办法告诉Ignite打破或删除锁,而不是每次都不创建新的空存储吗?
  3. 我可以在应用程序中做些什么来告诉Ignite该持久性存储对于节点而言是本地的,因此不需要锁吗?

确实,我可以采取任何措施来解决此问题。

java ignite
1个回答
0
投票

请设置Ignite ConsistentId:igniteCfg.setConsistentId(“ My_Node_Id” + id);https://apacheignite.readme.io/docs/distributed-persistent-store#section-persistence-path-management

在这种情况下,ignite将尝试获取文件锁定并等待10秒钟,如果无法获取它,则不会创建新文件夹,但会失败,但会出现异常。

© www.soinside.com 2019 - 2024. All rights reserved.