Hazelcast IMap删除,放置并立即获取特定的键,然后返回旧数据

时间:2019-03-27 07:59:15

标签: java hazelcast hazelcast-imap

在Hazelcast IMap中,当我删除某个密钥并立即添加具有不同数据的相同密钥,然后在不到一秒钟的时间内获取该数据时,Hazelcast IMap返回旧数据。

例如

1)我要删除一个值为{key : String, value : serialized object}的键

2)现在,我在不到一秒钟的时间内将同一个键的值添加到值{key : String, value : serialized object}

3)此时,我尝试获取键get{key : String},该键返回与第1点相同的值。

为避免此错误(解决方法),我尝试添加Thread.sleep(1000L)。这似乎可行,但不能提供一致性。

还使用了evict,删除IMap的方法。在这种情况下,似乎没有任何作用。

Hazelcast.xml配置是默认配置。 在客户端,hazelcastClient.xml也具有默认配置。

method api()
{
    if(userIsAlreadyLogin)
    {
        forcelogout()
    }

    handleValidUserlogin()
}

method forcelogout()
{
    removeUserDetails()
}

removeUserDetails()
{
    IMap.lock()
    IMap.delete(key : String, value : serialized object)
    IMap.unlock()
}

method handleValidUserlogin()
{
    IMap.get() //Printing values after deletion 
    IMap.put(key : String, value : serialized object)
    IMap.get()
}

0 个答案:

没有答案