2017-04-27 1 views
0

En utilisant la version 3.6.1, pourquoi avons-nous un comportement différent pour put et putTransient par rapport aux écouteurs de carte (les incendies .putTransient ont été ajoutés, et les incendies .put ont-ils été mis à jour)?Pourquoi Hazelcast IMap.putTransient déclenche-t-il l'entrée EntryAddedListener?

public void testNoDelta() { 
    String str = "world"; 
    String key = "hello"; 
    map.putTransient(key, str, 1000, TimeUnit.MILLISECONDS); 
    map.putTransient(key, str, 1000, TimeUnit.MILLISECONDS); 
    map.putTransient(key, str, 1000, TimeUnit.MILLISECONDS); 
    map.putTransient(key, str, 1000, TimeUnit.MILLISECONDS); 

    map.put(key, str); 
    map.put(key, str); 
    map.put(key, str); 
    map.put(key, str); 
} 
+0

Recevez-vous aussi des événements 'EVICTED' /' EXPIRED'? –

+0

Je ne vois aucun événement expulsé ou expiré. – hklf

+0

C'est bien, c'est juste un moyen d'aider au diagnostic, mais vous devez aussi être à l'écoute de ces événements pour les obtenir. Le comportement que cela aiderait à valider est de savoir si l'entrée est déjà là quand vous faites le 'put'; Si vous avez vu un 'EVICTED' alors il a été enlevé et si vous n'avez pas encore vu un' EVICTED' (mais obtenez-les en général), alors l'entrée est probablement là. Si vous savez si l'entrée est là ou non, vous pouvez savoir si vous attendez un événement 'UPDATED' ou' ADDED' respectivement. –

Répondre

0

Je pense que vous frappez this issue qui est fixé dans Hazelcast 3.8.1 par https://github.com/hazelcast/hazelcast/pull/10082.

+0

J'ai rouvert https://github.com/hazelcast/hazelcast/issues/10077. Les événements ADDED et UPDATED semblent corrects pour l'exemple de code de @hklf mais pas les événements d'expiration. –