From 6d52c15ce540a1f086cb3a5bec8c86717ffb614d Mon Sep 17 00:00:00 2001
From: Daniel <daniel@harvey>
Date: Fri, 14 Aug 2020 12:01:38 +0200
Subject: [PATCH] FIX: Reference correct version.

If not-to-be-changed entities are in container.
---
 src/main/java/caosdb/server/jobs/Job.java | 24 ++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/src/main/java/caosdb/server/jobs/Job.java b/src/main/java/caosdb/server/jobs/Job.java
index 6a90d081..ff214b97 100644
--- a/src/main/java/caosdb/server/jobs/Job.java
+++ b/src/main/java/caosdb/server/jobs/Job.java
@@ -188,17 +188,19 @@ public abstract class Job extends AbstractObservable implements Observer {
       if (ret != null) {
         return ret;
       }
-    } else if (version.startsWith("HEAD~") && getEntityById(id) != null) {
-      // if version is HEAD~{OFFSET} with {OFFSET} > 0 and the targeted entity is
-      // part of this request (i.e. is to be updated), the actual offset has to be
-      // reduced by 1. HEAD always denotes the entity@HEAD *after* the successful
-      // transaction.
-      int offset = Integer.parseInt(version.substring(5)) - 1;
-      if (offset == 0) {
-        // special case HEAD~1
-        resulting_version = "HEAD";
-      } else {
-        resulting_version = new StringBuilder().append("HEAD~").append(offset).toString();
+    } else if (version.startsWith("HEAD~")) {
+      EntityInterface entById = getEntityById(id);
+      if (entById != null && entById.getEntityStatus() != EntityStatus.VALID) {
+        // if version is HEAD~{OFFSET} with {OFFSET} > 0 and the targeted entity is is to be
+        // updated, the actual offset has to be reduced by 1. HEAD always denotes the entity@HEAD
+        // *after* the successful transaction, so that it is consistent with subsequent retrieves.
+        int offset = Integer.parseInt(version.substring(5)) - 1;
+        if (offset == 0) {
+          // special case HEAD~1
+          resulting_version = "HEAD";
+        } else {
+          resulting_version = new StringBuilder().append("HEAD~").append(offset).toString();
+        }
       }
     }
 
-- 
GitLab