From dec9e7ee705dcd4146d62d35b6137f64a0f25fdc Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Wed, 11 Mar 2009 19:27:33 +0000 Subject: [PATCH] Execute clearClientInfo() in a transaction on NodeObject so that when derived classes naturally remove extra crap from the NodeObject as a result of the client departing this node, it all goes out in a single event. Cross-server traffic-- go! git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5684 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../threerings/presents/peer/server/PeerManager.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/java/com/threerings/presents/peer/server/PeerManager.java b/src/java/com/threerings/presents/peer/server/PeerManager.java index 757f18ec8..40c16feb5 100644 --- a/src/java/com/threerings/presents/peer/server/PeerManager.java +++ b/src/java/com/threerings/presents/peer/server/PeerManager.java @@ -809,7 +809,15 @@ public abstract class PeerManager Name username = client.getCredentials().getUsername(); for (ClientInfo clinfo : _nodeobj.clients) { if (clinfo.username.equals(username)) { - clearClientInfo(client, clinfo); + _nodeobj.startTransaction(); + try { + // we clear our client info in a transaction so that derived classes can remove + // other things from the NodeObject and we'll send that out to all of our peers + // in a single compound event + clearClientInfo(client, clinfo); + } finally { + _nodeobj.commitTransaction(); + } return; } }