+ private void possiblyRestoreFromSnapshot() {
+ byte[] restoreFromSnapshot = cohort.getRestoreFromSnapshot();
+ if(restoreFromSnapshot == null) {
+ return;
+ }
+
+ if(anyDataRecovered) {
+ log.warn("{}: The provided restore snapshot was not applied because the persistence store is not empty",
+ context.getId());
+ return;
+ }
+
+ try(ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(restoreFromSnapshot))) {
+ Snapshot snapshot = (Snapshot) ois.readObject();
+
+ log.debug("{}: Deserialized restore snapshot: {}", context.getId(), snapshot);
+
+ context.getSnapshotManager().apply(new ApplySnapshot(snapshot));
+ } catch(Exception e) {
+ log.error("{}: Error deserializing snapshot restore", context.getId(), e);
+ }
+ }
+