summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.client
diff options
context:
space:
mode:
Diffstat (limited to 'src/com.gluster.storage.management.client')
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java
index ee3667d5..4585aca6 100644
--- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java
+++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java
@@ -568,7 +568,12 @@ public class GlusterDataModelManager {
Cluster cluster = model.getCluster();
cluster.removeServer(server);
- for (ClusterListener listener : listeners) {
+ // can't use an iterator here. The method AbstractList.Itr#next checks for concurrent modification.
+ // Since listeners can end up creating new views, which add themselves as listeners, the listeners
+ // list can be concurrently modified which can result in an exception while using iterator.
+ // Hence we use List#get instead of the iterator
+ for(int i = 0; i < listeners.size(); i++) {
+ ClusterListener listener = listeners.get(i);
listener.serverRemoved(server);
}
@@ -582,7 +587,12 @@ public class GlusterDataModelManager {
Cluster cluster = model.getCluster();
cluster.deleteVolume(volume);
- for (ClusterListener listener : listeners) {
+ // can't use an iterator here. The method AbstractList.Itr#next checks for concurrent modification.
+ // Since listeners can end up creating new views, which add themselves as listeners, the listeners
+ // list can be concurrently modified which can result in an exception while using iterator.
+ // Hence we use List#get instead of the iterator
+ for(int i = 0; i < listeners.size(); i++) {
+ ClusterListener listener = listeners.get(i);
listener.volumeDeleted(volume);
}
}