Attempt fix tracking
This commit is contained in:
@@ -196,11 +196,6 @@ public class ActiveSectionTracker {
|
|||||||
this.engine.saveSection(section);
|
this.engine.saveSection(section);
|
||||||
}
|
}
|
||||||
section.release(false);//Special
|
section.release(false);//Special
|
||||||
} else {
|
|
||||||
VarHandle.loadLoadFence();
|
|
||||||
if (section.isDirty) {
|
|
||||||
throw new IllegalStateException("Section was dirty but is also unloaded, this is very bad");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -213,7 +208,19 @@ public class ActiveSectionTracker {
|
|||||||
final var lock = this.locks[index];
|
final var lock = this.locks[index];
|
||||||
long stamp = lock.writeLock();
|
long stamp = lock.writeLock();
|
||||||
{
|
{
|
||||||
if (section.trySetFreed()) {
|
VarHandle.loadLoadFence();
|
||||||
|
if (section.isDirty) {
|
||||||
|
if (section.tryAcquire()) {
|
||||||
|
if (section.setNotDirty()) {//If the section is dirty we must enqueue for saving
|
||||||
|
if (this.engine != null)
|
||||||
|
this.engine.saveSection(section);
|
||||||
|
}
|
||||||
|
section.release(false);//Special
|
||||||
|
} else {
|
||||||
|
throw new IllegalStateException("Section was dirty but is also unloaded, this is very bad");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (section.getRefCount() == 0 && section.trySetFreed()) {
|
||||||
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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user