2017-09-01 3 views
0

Es wird in der LevelDB Documentation erwähnt, dass Schreib-Batch in der Lage ist, Atomizität für mehrere Operationen bereitzustellen. Ich möchte jedoch nur wissen, was passiert, wenn die Anwendung während der Ausführung eines Schreib-Batchs abstürzt. Werden alle Änderungen zurückgesetzt oder werden die Änderungen teilweise übernommen?Was passiert, wenn die Anwendung während einer Ausführung von LevelDB Batch abstürzt?

Ich beziehe mich auf ein Szenario wie unten, wo es einige Zeit dauert, bis der Stapel seine Ausführung beendet hat. (-Code ist in Java geschrieben mit LevelDBJNI)

WriteBatch batch = db.createWriteBatch(); 

    for(int i=0;i<10000000;i++){ 
     batch.put(("key "+Integer.toString(i)).getBytes(),("value "+Integer.toString(i)).getBytes()); 
    } 

    System.out.println("Batch Filled"); 

    db.write(batch); //takes around 5s -- what if system crashes here?? 

Antwort

0

WriteBatch garantiert, dass entweder alles oder nichts auf der Festplatte landet. Das ist im Falle eines Prozessabsturzes. Im Falle eines Systemabsturzes - Stromausfall - gibt es keine solche Garantie, denke ich.

Verwandte Themen