2016-12-14 40 views
1

目前,我有一個IMAP支持一個MapStore。此IMap在啓動時加載並擁有數百萬條目。當映射完全加載時,客戶端使用帶謂詞的Imap.values()檢索條目。這個加載在我啓動時工作正常。榛樹分佈式加載阻塞?

現在,我不得不重新加載peridiocally所有的數據(例如,每2小時)。我正在使用IMap.loadAll(true)來強制重新加載。 MapStore(loadAllKeys()+ loadAll(keys))大約需要4分鐘來完成整個加載。看起來在這4分鐘內,所有通過謂詞向imap發送查詢的客戶端都會被阻塞,直到重新加載完成。

在我的情況下,我無法阻止集羣4分鐘(事實上不是秒)。

  1. 是否真的是Imap.loadAll阻塞謂詞查詢?
  2. 可以將imap配置爲非阻塞或存在IMap.loadAll()的非阻塞替代。

我與HC 3.7.2嘗試它,有2個節點和Java 8

回答

0

這是一個明智的使用情況,但它目前不支持的一對夫婦的原因。 加載發生在分區線程上,從而阻塞它們 - 它提供了一致性,地圖在加載完成之前不會提供任何請求。

對於「重新加載」的用例,它不得不在分區線程上發生,以便可以爲請求提供服務。

您可以在github上創建功能請求嗎?它看起來像......我們可以在下一個版本中解決。

+0

謝謝湯姆!創建於:https://github.com/hazelcast/hazelcast/issues/9467 – jnmts