diff --git a/src/helma/objectmodel/db/Transactor.java b/src/helma/objectmodel/db/Transactor.java index 9ff1632a..66d2c3d9 100644 --- a/src/helma/objectmodel/db/Transactor.java +++ b/src/helma/objectmodel/db/Transactor.java @@ -22,6 +22,7 @@ public class Transactor extends Thread { // List of nodes to be updated private HashMap nodes; + private ArrayList nodesArray; // List of visited clean nodes private HashMap cleannodes; // Is a transaction in progress? @@ -44,6 +45,7 @@ public class Transactor extends Thread { super (group, runnable, group.getName ()); this.nmgr = nmgr; nodes = new HashMap (); + nodesArray = new ArrayList (); cleannodes = new HashMap (); sqlCon = new HashMap (); active = false; @@ -56,6 +58,7 @@ public class Transactor extends Thread { Key key = node.getKey (); if (!nodes.containsKey (key)) { nodes.put (key, node); + nodesArray.add (node); } } } @@ -64,6 +67,7 @@ public class Transactor extends Thread { if (node != null) { Key key = node.getKey (); nodes.remove (key); + nodesArray.remove (node); } } @@ -110,6 +114,7 @@ public class Transactor extends Thread { abort (); nodes.clear (); + nodesArray.clear (); cleannodes.clear (); txn = nmgr.db.beginTransaction (); active = true; @@ -125,12 +130,12 @@ public class Transactor extends Thread { } int ins = 0, upd = 0, dlt = 0; - int l = nodes.size (); + int l = nodesArray.size (); Replicator replicator = nmgr.getReplicator (); - for (Iterator i=nodes.values().iterator(); i.hasNext (); ) { - Node node = (Node) i.next (); + for (int i=0; i