From 71590d03027bf529422f2b5ae18c39681ad07d62 Mon Sep 17 00:00:00 2001 From: Timm Fitschen <t.fitschen@indiscale.com> Date: Fri, 27 Nov 2020 01:20:38 +0100 Subject: [PATCH] fix problem with cached deleted entities --- .../java/org/caosdb/server/jobs/core/EntityStateJob.java | 4 ++++ .../org/caosdb/server/jobs/core/InitEntityStateJobs.java | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) 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 7a7056eb..f0696dec 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 c9f1c7b7..c22c0d92 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 -- GitLab