From 458706d8fc81dca53f77b231696c48ecbc86b5f3 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Mon, 27 Aug 2018 14:24:58 +0200 Subject: [PATCH] [Fix] Allow to flush TX while doing commands --- .../li/strolch/persistence/api/AbstractTransaction.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java b/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java index da95621e8..82f7ba909 100644 --- a/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java +++ b/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java @@ -1493,7 +1493,14 @@ public abstract class AbstractTransaction implements StrolchTransaction { * so chance of a runtime exception should be small */ private void doCommands() { - ListIterator iter = this.commands.listIterator(); + + // keep track of the current list of commands + List commands = this.commands; + + // assign a new list for in case a command adds new commands + this.commands = new ArrayList<>(); + + ListIterator iter = commands.listIterator(); while (iter.hasNext()) { Command command = iter.next(); this.flushedCommands.add(command);