Merge branch 'stable-6.0' into stable-6.1

* stable-6.0:
  Revert "RefDirectory: Throw exception if CAS of packed ref list fails"

Change-Id: Idc0d1f8ab4524868b7e9754799f70acc1d24f2cb
Signed-off-by: Luca Milanesio <luca.milanesio@gmail.com>
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java
index c7322b1..1db4f74 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java
@@ -1063,22 +1063,7 @@ protected void writeFile(String name, byte[] content)
 				byte[] digest = Constants.newMessageDigest().digest(content);
 				PackedRefList newPackedList = new PackedRefList(
 						refs, lck.getCommitSnapshot(), ObjectId.fromRaw(digest));
-
-				// This thread holds the file lock, so no other thread or process should
-				// be able to modify the packed-refs file on disk. If the list changed,
-				// it means something is very wrong, so throw an exception.
-				//
-				// However, we can't use a naive compareAndSet to check whether the
-				// update was successful, because another thread might _read_ the
-				// packed refs file that was written out by this thread while holding
-				// the lock, and update the packedRefs reference to point to that. So
-				// compare the actual contents instead.
-				PackedRefList afterUpdate = packedRefs.updateAndGet(
-						p -> p.id.equals(oldPackedList.id) ? newPackedList : p);
-				if (!afterUpdate.id.equals(newPackedList.id)) {
-					throw new ObjectWritingException(
-							MessageFormat.format(JGitText.get().unableToWrite, name));
-				}
+				packedRefs.compareAndSet(oldPackedList, newPackedList);
 				if (changed) {
 					modCnt.incrementAndGet();
 				}