summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.client/src/com/gluster/storage/management
diff options
context:
space:
mode:
authorShireesh Anjal <shireesh@gluster.com>2011-07-11 18:50:35 +0530
committerShireesh Anjal <shireesh@gluster.com>2011-07-11 19:02:00 +0530
commit5451e77260d7bc91c686103b0878e18f6ebc9343 (patch)
treef9a1f1b880b95dfa4b640d4c62520368a842a226 /src/com.gluster.storage.management.client/src/com/gluster/storage/management
parentf2b7db6ce2fd00a95552391e59785a7ea365f26d (diff)
Task#111 - Auto-refresh of data in views
Diffstat (limited to 'src/com.gluster.storage.management.client/src/com/gluster/storage/management')
-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);
}
}