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 a617b2cb9..a29cb3671 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 @@ -1428,6 +1428,16 @@ public abstract class AbstractTransaction implements StrolchTransaction { } } + @Override + public void reset() { + clearCache(); + if (this.commands != null) + this.commands.clear(); + if (this.objectFilter != null) + this.objectFilter.clearCache(); + logger.info("Cache, commands and changes have been cleared!"); + } + @Override public void flush() { try { diff --git a/li.strolch.agent/src/main/java/li/strolch/persistence/api/StrolchTransaction.java b/li.strolch.agent/src/main/java/li/strolch/persistence/api/StrolchTransaction.java index 04dd3284b..a26bd28ca 100644 --- a/li.strolch.agent/src/main/java/li/strolch/persistence/api/StrolchTransaction.java +++ b/li.strolch.agent/src/main/java/li/strolch/persistence/api/StrolchTransaction.java @@ -292,6 +292,12 @@ public interface StrolchTransaction extends AutoCloseable { */ void clearCache(); + /** + * Resets this TX so that all caches and changes are reverted, fetched objects might need to be re-fetched to have a + * clean state. Locks are not released! + */ + void reset(); + /** *

* Performs all registered commands