From 68c69d7ba18b0c7e568e09700242eaea821af7be Mon Sep 17 00:00:00 2001 From: hns Date: Fri, 19 Mar 2004 17:04:10 +0000 Subject: [PATCH] * Use getChildElement rather than getSubnode to look up a potential group node in getParent() * Register newly created group nodes as clean nodes with the transactor thread, in addition to throwing them into the cache. This seems to be necessary somehow, although I don't understand why. --- src/helma/objectmodel/db/Node.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/helma/objectmodel/db/Node.java b/src/helma/objectmodel/db/Node.java index d2bde1ef..2bf43df2 100644 --- a/src/helma/objectmodel/db/Node.java +++ b/src/helma/objectmodel/db/Node.java @@ -711,6 +711,7 @@ public final class Node implements INode, Serializable { // check if current parent candidate matches presciption, // if not, try to get one that does. if (parentInfo != null) { + for (int i = 0; i < parentInfo.length; i++) { ParentInfo pinfo = parentInfo[i]; @@ -746,7 +747,7 @@ public final class Node implements INode, Serializable { if ((dbm != null) && (dbm.getSubnodeGroupby() != null)) { // check for groupby rel = dbmap.columnNameToRelation(dbm.getSubnodeGroupby()); - pn = (Node) pn.getSubnode(getString(rel.propName)); + pn = (Node) pn.getChildElement(getString(rel.propName)); } if (pn != null && pn.isParentOf(this)) { @@ -1176,6 +1177,9 @@ public final class Node implements INode, Serializable { // If we created the group node, we register it with the // nodemanager. Otherwise, we just evict whatever was there before if (create) { + // register group node with transactor + Transactor tx = (Transactor) Thread.currentThread(); + tx.visitCleanNode(node); nmgr.registerNode(node); } else { nmgr.evictKey(node.getKey());