2016-04-05 39 views
7

Utilizzo il cluster aerospike con meccanismo di archiviazione SSD. Ho aggiornato qualche chiave ma quando ho riavviato il cluster aerospike, ripristina il valore precedente al posto del nuovo valore.Riavvio del server aerospike leggendo il vecchio valore

WritePolicy writePolicy = new WritePolicy(); 
writePolicy.recordExistsAction = RecordExistsAction.UPDATE; 
writePolicy.generationPolicy = GenerationPolicy.NONE; 
Bin whiteList = Bin.asNull("bin1"); 
Bin blackList = Bin.asNull("bin2"); 

client.put(writePolicy, key, whiteList, blackList); 

Voglio solo l'ultimo valore aggiornato per la chiave data dopo il riavvio del server al posto del valore precedente.

Come posso gestire questo caso?

+0

Sta succedendo tutto il tempo o solo su coldstart? –

+1

Ciao @BenBates ho controllato per coldstart. L'avvio rapido è disponibile solo per l'edizione aziendale, ma al momento sto utilizzando Community Edition. C'è un altro modo per farlo in Community Edition? – visingh

+0

No, molto probabilmente sarà il tuo problema. Cancellazioni durevoli sono sulla tabella di marcia per quest'anno, che sarebbe la strada da seguire. Non so - in questa fase - se si tratterebbe di una funzionalità solo Enterprise. –

risposta

1

ho il sospetto si sta colpendo un comportamento ben documentato su avviamenti a freddo, come descritto qui:

https://discuss.aerospike.com/t/expired-deleted-data-reappears-after-server-is-restarted/470/2

Quando Aerospike freddo inizia legge i dati dal disco. Quando un record viene eliminato, il riferimento a quel record viene rimosso dall'indice. Quando si considera il disco da solo, il database non ha modo di sapere se il record letto dal disco viene cancellato (poiché l'indice è in memoria e per definizione non disponibile)

Per questo motivo, i record "fantasma" possono sembrare -appare all'avviamento a freddo. Questo verrà affrontato molto presto con eliminazioni "durevoli".

0

Una possibile risposta potrebbe essere che i nodi nel cluster non sono sincronizzati e il recupero del valore da un nodo non aggiornato. Quindi assicurati di aver sincronizzato tutti i nodi del cluster prima di eseguire una query.