2016-04-05 11 views
7

Używam klastra lotniczego z mechanizmem pamięci masowej SSD. Zaktualizowałem klucz, ale gdy zrestartowałem klaster aerospike przywracałem poprzednią wartość w miejsce nowej wartości.Ponowne uruchamianie serwera lotniczego czytającego starszą wartość

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); 

Po prostu chcę ostatnią zaktualizowaną wartość dla danego klucza po restarcie serwera w miejsce starszej wartości.

Jak mogę sobie z tym poradzić?

+0

Czy dzieje się to przez cały czas, czy tylko na zimno? –

+1

Witam @BenBates i sprawdziłem, czy nie ma zimnego startu. Szybki start jest dostępny tylko w wersji dla przedsiębiorstw, ale obecnie używam wersji społecznościowej. Czy jest inny sposób na zrobienie tego w wersji społecznościowej? – visingh

+0

Nie, najprawdopodobniej to będzie twój problem. Trwałe skreślenia znajdują się na mapie drogowej na bieżący rok, co byłoby krokiem naprzód. Nie wiem - na tym etapie - czy byłaby to funkcja wyłącznie dla przedsiębiorstw. –

Odpowiedz

1

Podejrzewam jesteś uderzenie dobrze udokumentowane zachowanie na zimnych rozruchów jak opisano tutaj:

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

Kiedy Aerospike zimno zaczyna odczytuje dane z powrotem z dysku. Po usunięciu rekordu odwołanie do tego rekordu jest usuwane z indeksu. Patrząc na dysk w izolacji, baza danych nie ma możliwości sprawdzenia, czy rekord, który odczytuje z dysku, został usunięty (ponieważ indeks jest w pamięci i z definicji niedostępny)

Z tego powodu rekordy "duchów" mogą wydawać się ponownie - pojawiają się przy zimnym starcie. Będzie to wkrótce rozwiązane dzięki "trwałym" usunięciom.

0

Jedną z możliwych odpowiedzi może być brak synchronizacji węzłów w klastrze i pobieranie wartości z niezaktualizowanego węzła. Dlatego upewnij się, że zsynchronizowano wszystkie węzły w klastrze przed wykonaniem zapytania.

Powiązane problemy