Commit Graph

613 Commits

Author SHA1 Message Date
Charlie Groves 2ba4d6a0d0 Wait to check if an interdependent invoker has posted back to the presents invoker until all the
interdependents have indicated they're blocking to check.  Otherwise the unit running before the
last BlockingUnit can post to the presents invoker and those newly posted units will be skipped.



git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6006 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-12-29 07:44:09 +00:00
Mike Thomas cb5aac620c It looks very much to me like we were able to occasionally sneak by the checks and shutdown the omgr too early in the following condition:
- PresentsInvoker decides it's empty
- It waits on other dependencies
- During the wait, something (probably from one of the other dependencies) posts to the PresentsInvoker
- We loop back around, the dependencies are empty
- We end early, with the posted bit still to be done...

So... after waiting, do a quick check for emptyness and if not satisfied, start the whole dern cycle over.



git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6005 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-12-23 19:58:34 +00:00
Ray Greenwell cd88ba7634 All Executors, all the time.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6002 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-12-08 19:58:55 +00:00
Ray Greenwell fc77b1bb0b Prefer Executor over RunQueue...
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6001 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-12-08 19:05:06 +00:00
Ray Greenwell f546167ca7 RootDObjectManager (PresentsDObjectMgr) implements Executor.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6000 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-12-07 21:26:44 +00:00
Andrzej Kapolka ded9f02350 This is not that interesting.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5998 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-11-13 20:54:20 +00:00
Andrzej Kapolka c88ca10d26 Provide a means of adjusting the select loop time.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5988 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-11-06 22:00:30 +00:00
Andrzej Kapolka a707c8b515 Set the traffic class for datagrams to low-delay. I doubt this will
actually reduce latency, but wouldn't it be cool if it did?


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5985 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-11-06 20:56:37 +00:00
Charlie Groves 90c97a54b3 Turns out USR1 is reserved by the JVM on pretty much every platform but Mac, so only expose USR2 for
injected handling by subclasses.

I had a nice version of this that allowed user controlled handling for any signal to be injected.
Unfortunately it used multibindings from guice, and I'm loathe to add a dependency to narya just for
that.



git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5980 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-10-21 20:47:55 +00:00
Charlie Groves 9284f1b4b6 Expose USR1 and USR2 signals to users of AbstractSignalHandler if they bind instances of a
SignalReceiver class for those signals.



git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5979 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-10-19 20:58:03 +00:00
Michael Bayne ecec43418b Fluency--.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5977 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-10-04 23:26:09 +00:00
Michael Bayne 293ec52255 Some Galileo inspired raw type and dead code elimination.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5956 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-09-14 22:20:16 +00:00
Michael Bayne 05e37f4f42 This log message is not strictly necessary. The connection manager immediately
logs that it's listening on its configured ports, when start() is called. It
does so on a separate thread, but I don't believe the subtle ordering
possibilities there are something that's actually causing/likely to cause
problems and/or needs to be called out.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5947 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-09-10 19:42:18 +00:00
Michael Bayne 179c66f46a Missed a spot.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5946 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-09-10 19:39:03 +00:00
Michael Bayne 03ff9f8220 PresentsDObjectMgr.isRunning() is really isNotShutdown() and we need to
preserve those semantics. Sigh.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5945 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-09-10 19:38:36 +00:00
Michael Bayne f92350f1b3 Bah, don't include the PresentsDObjectMgr's state when trying to assert our
invariants.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5944 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-09-10 19:36:33 +00:00
Michael Bayne a8d3227fb5 You too. Naughty misreporter.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5943 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-09-10 19:32:06 +00:00
Michael Bayne 1c60b9cc75 Promote the datagramHostname to the bindHostname and use it for our TCP
connections as well.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5942 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-09-10 18:34:42 +00:00
Jamie Doornbos 701d885222 Keep track of the total number of units run independently of Stats so it is not reset every 3 minutes by pulse.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5941 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-09-09 23:59:02 +00:00
Mike Thomas 2acedb91a4 Better protection against divide-by-zero - if we have less than a second, we'll just round up to 1 second.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5938 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-09-04 22:42:27 +00:00
Charlie Groves e27f0ed5e2 No more setHours
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5935 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-08-26 22:51:48 +00:00
Charlie Groves 90e11d00b7 More fluency, less effluent
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5934 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-08-25 23:14:59 +00:00
Michael Bayne cc5a87d18d isEmpty() -> getPendingUnits() == 0.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5919 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-08-18 23:39:34 +00:00
Dave Hoover b04e27f8fa Prune spurious semicolons
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5917 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-08-17 21:45:13 +00:00
Ray Greenwell 7489a64555 Every byte is precious!
No need to tell the server the callerOid, it already knows it.
This saves 4 bytes for every listener you pass into an invocation request.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5908 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-08-13 19:15:21 +00:00
Charlie Groves 8ca961fc9d Wait for everything to clear before starting the connection manager, and split out the code called when starting said manager so subclasses can override that
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5900 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-08-12 20:02:01 +00:00
Ray Greenwell 4780fefb73 Wee cleanup.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5899 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-08-12 18:22:46 +00:00
Charlie Groves 5aefb2a2a6 Check that interdependent invokers are empty when shutting down the PresentsInvoker in addition to
checking the PresentsInvoker itself and the DObjectMgr.  Expose waiting for all theses queues to
empty on PresentsInvoker such that Presents servers can do things like wait for all the queues to
empty before opening to the public.



git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5898 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-08-12 08:29:49 +00:00
Jamie Doornbos f005c3e3a8 Removed unused imports
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5888 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-07-21 14:56:04 +00:00
Charlie Groves 0cd0a67679 Include the Runnable's toString in the toString of Intervals created by PresentsDObjectMgr
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5883 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-07-20 23:57:24 +00:00
Michael Bayne c82c8bdf9b We need to cancel ourselves before we're posted to the RunQueue and in order to
preserve Interval's behavior of not executing an interval that was canceled
after it was posted to its runqueue but before it was executed we have to do
some nested craziness.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5882 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-07-20 23:50:19 +00:00
Michael Bayne 8c2a1d9b37 Factor out our report interval specification so that Yohoho can change it
without hackery.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5881 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-07-20 22:58:39 +00:00
Michael Bayne c0c68f98d3 Added RootDObjectManager.newInterval() for creating intervals that are
automatically canceled when the omgr is shutdown (they actually cancel
themselves if they fire after the omgr has been shutdown, which stock intervals
also do, but these guys do so quietly because we know they mean to work that
way).

Made use of that new method and the fluent schedule methods in various places.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5880 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-07-20 22:43:00 +00:00
Michael Bayne 31eda1cfc9 Let's do that *after* we've checked sochan for nullity.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5871 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-07-13 02:12:57 +00:00
Michael Bayne 0cf6b6199e Don't try writing overflow messages for an outgoing connection that is still
waiting to connect.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5870 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-07-13 02:12:24 +00:00
Michael Bayne c6ba34a129 You'd think that calling isConnectionPending() would return true on a channel
that would throw a NotYetConnectedException when you tried to write to it. Yes,
you'd definitely think that.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5865 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-07-13 00:22:24 +00:00
Michael Bayne 6d740bf7b3 Truth in commenting.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5856 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-07-10 06:31:49 +00:00
Michael Bayne 95bae1dec8 We need to distinguish between a connection that is still pending (which may be
the case for an outgoing connection since we do our connection asynchronously)
and a connection that is no longer connected because it once was open and now
it's closed.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5855 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-07-10 06:30:41 +00:00
Charlie Groves 03408cbda8 Don't allow the dummy DObject to be destroyed. That shouldn't happen in the normal course of
operations, but previously if someone called destroy on an uninitialized DObject or called
PresentsDObjectManager.destroyObject with its oid, it'd be destroyed.  Subscribing to objects
depends on that object existing, so if it's destroyed, the server will continue to function normally
except that subscription requests will be silently dropped.



git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5851 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-07-05 23:18:51 +00:00
Charlie Groves 21712c5883 Just say it
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5848 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-07-04 00:07:22 +00:00
Michael Bayne c835698e9f We can't inject the PresentsDObjectMgr because that causes a circular
dependency, but we can inject RunQueue which will Guice will magically defer to
avoid the circularity.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5847 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-07-03 23:26:00 +00:00
Michael Bayne 4731294773 Instead of having to disable the periodic server reports with a cumbersome
specialized ReportManager, let's just not activate them by default.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5846 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-07-03 23:09:04 +00:00
Michael Bayne 437c7a3b64 Some name cleanup (client -> session).
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5840 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-06-23 18:21:19 +00:00
Michael Bayne feb270d4d3 Let the client do funny things with authname in startSession().
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5839 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-06-23 18:17:17 +00:00
Michael Bayne 7efa2c74a7 Tidy up name handling a bit more: when setUsername() is called on a
PresentsSession, we don't need to or want to change our auth name, we can and
should operate entirely on ClientObject.username. The ClientManager maintains
two mappings: "current username" -> ClientObject (which is what needs to change
when setUsername or updateUsername is called) and "authname" -> PresentsSession
which has always been just the authname and has never changed during the course
of a session.  PresentsSession.getUsername() goes away and
PresentsSession.getAuthName() always returns the name that was used to
authenticate the session.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5838 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-06-23 06:20:31 +00:00
Michael Bayne de3e23baac The JVM's heap status at server startup is not hugely useful.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5836 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-06-22 22:26:13 +00:00
Michael Bayne 55f66f01da Use AuthException.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5833 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-06-22 19:05:51 +00:00
Michael Bayne dcc04247ab Provide AuthException to simplify auth failure handling for Authenticator
implementations.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5832 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-06-22 18:52:17 +00:00
Dave Hoover 7db51dafdb Mark overrides
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5831 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-06-22 17:36:32 +00:00
Jamie Doornbos a08e21e840 Removed unused code
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5830 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-06-20 21:40:12 +00:00