Skip to content

Commit 7de7066

Browse files
committed
use modCount to prevent removing of the newer model from cache
1 parent 544e25b commit 7de7066

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

visualvm/core/src/org/graalvm/visualvm/core/model/ModelCache.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ final class ModelCache<D extends DataSource, M extends Model> {
5757

5858
Reference<M> get(DataSourceKey<D> key) {
5959
ModelReference<M> valueRef = modelCache.get(key);
60-
if (valueRef != null && valueRef.modCount != key.modCount) {
60+
if (valueRef != null && valueRef.modCount < key.modCount) {
6161
Reference<M> removed = modelCache.remove(key);
6262
LOGGER.finer("Invalid mod count " + key + " " + (removed != null ? "removed" : "not removed"));
6363
return null;
@@ -154,8 +154,12 @@ public void propertyChange(PropertyChangeEvent evt) {
154154
if (ds != null) {
155155
ds.removePropertyChangeListener(Stateful.PROPERTY_STATE, this);
156156
}
157-
Reference<M> removed = modelCache.remove(key);
158-
LOGGER.finer(key + " " + (removed != null ? "removed" : "not removed"));
157+
if (ds == null || key.modCount < ((Stateful)ds).getModCount()) {
158+
Reference<M> removed = modelCache.remove(key);
159+
LOGGER.finer(key + " " + (removed != null ? "removed" : "not removed"));
160+
} else {
161+
LOGGER.finer(key + " newer model found");
162+
}
159163
}
160164
}
161165
}

0 commit comments

Comments
 (0)