diff --git a/src/main/java/org/caosdb/server/jobs/core/EntityStateJob.java b/src/main/java/org/caosdb/server/jobs/core/EntityStateJob.java index 7a7056eb79ce1b5a322a71492cc483821a3b8de7..f0696dec09657cdd85f79714dc37cc460b4dcbc8 100644 --- a/src/main/java/org/caosdb/server/jobs/core/EntityStateJob.java +++ b/src/main/java/org/caosdb/server/jobs/core/EntityStateJob.java @@ -45,6 +45,7 @@ import org.caosdb.server.datatype.ReferenceDatatype2; import org.caosdb.server.datatype.ReferenceValue; import org.caosdb.server.datatype.TextDatatype; import org.caosdb.server.entity.ClientMessage; +import org.caosdb.server.entity.DeleteEntity; import org.caosdb.server.entity.EntityInterface; import org.caosdb.server.entity.Message; import org.caosdb.server.entity.Message.MessageType; @@ -828,6 +829,9 @@ public abstract class EntityStateJob extends EntityJob { private void putCache(String key, EntityInterface value) { synchronized (cache) { + if(value instanceof DeleteEntity) { + throw new RuntimeException("Delete entity in cache. This is an implementation error."); + } id_in_cache.add(value.getId()); cache.put(key, value); } diff --git a/src/main/java/org/caosdb/server/jobs/core/InitEntityStateJobs.java b/src/main/java/org/caosdb/server/jobs/core/InitEntityStateJobs.java index c9f1c7b7b6591ae58375f457ce7be9ae20c66a4b..c22c0d9232e538778994f1b6f53d142ec0e41d60 100644 --- a/src/main/java/org/caosdb/server/jobs/core/InitEntityStateJobs.java +++ b/src/main/java/org/caosdb/server/jobs/core/InitEntityStateJobs.java @@ -40,6 +40,7 @@ import org.caosdb.server.entity.WritableEntity; import org.caosdb.server.entity.wrapper.Property; import org.caosdb.server.jobs.JobAnnotation; import org.caosdb.server.jobs.JobExecutionTime; +import org.caosdb.server.transaction.Delete; import org.caosdb.server.transaction.WriteTransaction; import org.caosdb.server.utils.EntityStatus; import org.caosdb.server.utils.Observable; @@ -67,8 +68,11 @@ public class InitEntityStateJobs extends EntityStateJob implements Observer { State newState = handleNewState(); State oldState = handleOldState(newState); if (newState != null || oldState != null) { + if(!(getTransaction() instanceof Delete)) { + + appendJob(MakeStateProperty.class); + } appendJob(CheckStateTransition.class); - appendJob(MakeStateProperty.class); appendJob(MakeStateMessage.class); } else if (newState == null && getEntity().getRole() == Role.Record