Keep a history of what we do with subscriptions so that we can get some insight

into the thousands of "Missing subscription in unmap" errors that we have been
getting as a matter of course.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5293 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2008-08-05 13:12:18 +00:00
parent 5c664a2667
commit 294f0fd1f1
@@ -23,6 +23,7 @@ package com.threerings.presents.server;
import java.io.IOException;
import java.net.InetAddress;
import java.util.Date;
import java.util.Map;
import java.util.TimeZone;
@@ -30,7 +31,8 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.inject.Inject;
import com.samskivert.util.HashIntMap;
import com.samskivert.util.IntMap;
import com.samskivert.util.IntMaps;
import com.samskivert.util.ResultListener;
import com.samskivert.util.Throttle;
import com.threerings.util.Name;
@@ -555,8 +557,10 @@ public class PresentsClient
}
if (rec != null) {
rec.unsubscribe();
_subhist.put(oid, "Unmapped at " + new Date()); // TEMP
} else {
log.warning("Missing subscription in unmap [client=" + this + ", oid=" + oid + "].");
log.warning("Missing subscription in unmap", "client", this, "oid", oid,
"history", _subhist.get(oid));
}
}
@@ -566,12 +570,13 @@ public class PresentsClient
*/
protected void clearSubscrips (boolean verbose)
{
String now = new Date().toString();
for (ClientProxy rec : _subscrips.values()) {
if (verbose) {
log.info("Clearing subscription [client=" + this +
", obj=" + rec.object.getOid() + "].");
log.info("Clearing subscription", "client", this, "obj", rec.object.getOid());
}
rec.unsubscribe();
_subhist.put(rec.object.getOid(), "Cleared at " + now); // TEMP
}
_subscrips.clear();
}
@@ -855,6 +860,7 @@ public class PresentsClient
synchronized (_subscrips) {
// make a note of this new subscription
_subscrips.put(dobj.getOid(), this);
_subhist.put(dobj.getOid(), "Mapped at " + new Date()); // TEMP
}
subscribedToObject(dobj);
@@ -1003,7 +1009,8 @@ public class PresentsClient
protected Name _username;
protected Connection _conn;
protected ClientObject _clobj;
protected HashIntMap<ClientProxy> _subscrips = new HashIntMap<ClientProxy>();
protected IntMap<ClientProxy> _subscrips = IntMaps.newHashIntMap();
protected IntMap<String> _subhist = IntMaps.newHashIntMap(); // TEMP
protected ClassLoader _loader;
/** The time at which this client started their session. */