- localHistories.put(id, LocalFrontendHistory.create(persistenceId, tree, id));
- LOG.debug("{}: created history {}", persistenceId, id);
- return new LocalHistorySuccess(id, request.getSequence());
+ // We have to send the response only after persistence has completed
+ final ShardDataTreeTransactionChain chain = tree.ensureTransactionChain(historyId, () -> {
+ LOG.debug("{}: persisted history {}", persistenceId, historyId);
+ envelope.sendSuccess(new LocalHistorySuccess(historyId, request.getSequence()), tree.ticker().read() - now);
+ });
+
+ localHistories.put(historyId, LocalFrontendHistory.create(persistenceId, tree, chain));
+ LOG.debug("{}: created history {}", persistenceId, historyId);
+ return null;