Attempt to fix race condition.... _again_
This commit is contained in:
@@ -4,6 +4,7 @@ import it.unimi.dsi.fastutil.longs.Long2ObjectLinkedOpenHashMap;
|
|||||||
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
|
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
|
||||||
import me.cortex.voxy.common.Logger;
|
import me.cortex.voxy.common.Logger;
|
||||||
import me.cortex.voxy.common.util.VolatileHolder;
|
import me.cortex.voxy.common.util.VolatileHolder;
|
||||||
|
import me.cortex.voxy.common.voxelization.WorldConversionFactory;
|
||||||
import me.cortex.voxy.common.world.other.Mapper;
|
import me.cortex.voxy.common.world.other.Mapper;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
@@ -96,9 +97,11 @@ public class ActiveSectionTracker {
|
|||||||
|
|
||||||
if (isLoader) {
|
if (isLoader) {
|
||||||
this.loadedSections.incrementAndGet();
|
this.loadedSections.incrementAndGet();
|
||||||
|
long stamp2 = lock.readLock();
|
||||||
long stamp = this.lruLock.writeLock();
|
long stamp = this.lruLock.writeLock();
|
||||||
section = this.lruSecondaryCache.remove(key);
|
section = this.lruSecondaryCache.remove(key);
|
||||||
this.lruLock.unlockWrite(stamp);
|
this.lruLock.unlockWrite(stamp);
|
||||||
|
lock.unlockRead(stamp2);
|
||||||
}
|
}
|
||||||
|
|
||||||
//If this thread was the one to create the reference then its the thread to load the section
|
//If this thread was the one to create the reference then its the thread to load the section
|
||||||
@@ -171,7 +174,7 @@ public class ActiveSectionTracker {
|
|||||||
var cached = cache.remove(section.key);
|
var cached = cache.remove(section.key);
|
||||||
var obj = cached.obj;
|
var obj = cached.obj;
|
||||||
if (obj == null) {
|
if (obj == null) {
|
||||||
throw new IllegalStateException("This should be impossible");
|
throw new IllegalStateException("This should be impossible: " + WorldEngine.pprintPos(section.key));
|
||||||
}
|
}
|
||||||
if (obj != section) {
|
if (obj != section) {
|
||||||
throw new IllegalStateException("Removed section not the same as the referenced section in the cache: cached: " + obj + " got: " + section + " A: " + WorldSection.ATOMIC_STATE_HANDLE.get(obj) + " B: " +WorldSection.ATOMIC_STATE_HANDLE.get(section));
|
throw new IllegalStateException("Removed section not the same as the referenced section in the cache: cached: " + obj + " got: " + section + " A: " + WorldSection.ATOMIC_STATE_HANDLE.get(obj) + " B: " +WorldSection.ATOMIC_STATE_HANDLE.get(section));
|
||||||
|
|||||||
Reference in New Issue
Block a user