Commit Graph

599 Commits

Author SHA1 Message Date
Michael Bayne 8206753188 A we bit of (not so) new logging world order conversion.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4718 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-23 18:40:15 +00:00
Michael Bayne 9bcca099ac Implemented a Ray-proposed solution where we keep track of events that were
(pre-applied and) posted before we received our object but processed (and hence
dispatched to us) after we received our object.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4715 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-18 03:37:14 +00:00
Michael Bayne d9f76c98fd Some of the widening.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4711 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-15 00:26:27 +00:00
Michael Bayne 91f8ac6fa6 Turns out Sun has secret support for handling signals, so we'll use that
instead of our native library. I've left the native library support in in case
the Sun stuff is not available, but that's so extremely unlikely in a server
environment (IBM recreates Sun's signal handling in their VM because it's so
dang useful) that I should probably just nix it altogether and simplify things.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4710 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-14 21:36:58 +00:00
Michael Bayne 4d455eb6e6 _usermap is referenced by both the conmgr and dobjmgr threads, so access to it
must be synchronized.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4681 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-04 02:25:03 +00:00
Michael Bayne 69485a88ee Widened, fixed documentation and nixed unneeded runnable posting for
clientSessionDidEnd() which is called on the dobjmgr thread directly.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4680 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-04 02:11:33 +00:00
Michael Bayne d61083db7e Fixed another beans frank problem.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4659 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-04-10 01:01:07 +00:00
Michael Bayne 32a97f5b18 Or we'll just fix the bug. How did any of this ever work?
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4658 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-04-10 00:54:20 +00:00
Michael Bayne b24fd5c408 Log the local oid assigned to all proxied objects so that we can see if
something funny is happening with spurious objects dispatched across servers.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4657 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-04-10 00:51:17 +00:00
Michael Bayne 1fd540ab48 We don't even need this check. Simplify simplify simplify.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4656 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-04-07 20:01:21 +00:00
Michael Bayne 9d5cf32ce0 Nixed premature optimization wherein a frequent premature optimizer, who we
will not name, was trying to allow certain authentications to proceed directly
on the authenticator thread instead of making a round trip through the
invoker. This resulted in those authentications trying to post their results
from the authenticator thread, which is bad because all downstream messages
should be posted from the distributed object thread.

The only authentications that would "benefit" from this optimization were peer
authentications of which there would be extremely few (currently one in our
largest installation) compared to the hundreds of thousands of normal
authentications, which have to make the invoker thread round trip as a matter
of course.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4655 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-04-07 19:57:51 +00:00
Michael Bayne 558d9ec2dc Widened. Modified authenticator to freak out rather than just go ahead and
process an authentication request if it is asked to do so before it has an
invoker (meaning the server is not yet initialized).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4654 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-04-07 19:47:29 +00:00
Michael Bayne 3546567824 Log the thread in question as we're seeing this warning on code that certainly
looks like it should be running on the dobjmgr thread.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4653 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-04-07 19:39:24 +00:00
Michael Bayne 63413f862c Widened, added sanity check to postMessage() to log a warning and stack trace
if it is called from any thread except the distributed object dispatch thread.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4647 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-04-06 18:29:42 +00:00
Michael Bayne 3ac5ab2e10 Reset the framing output stream before we write the message rather than after
in case we freak out in the middle of writing a message.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4645 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-04-05 17:20:53 +00:00
Michael Bayne 295633909e Widened, tweaker error messages.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4643 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-04-03 18:10:55 +00:00
Elizabeth Fong 3c7a546472 rollback r4636 due to interference with non-yohoho projects
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4637 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-03-27 21:49:25 +00:00
Elizabeth Fong f76825c76e Fix yohoho singleplayer NPE boochery caused by unsafe direct call on DObjectManager
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4636 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-03-27 21:11:13 +00:00
Michael Bayne 99662df60f Safety first!
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4635 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-03-25 17:14:44 +00:00
Ray Greenwell 68030c0719 Do the actual reboot with a LongRunnable so that we don't get logged
warnings about it.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4634 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-03-23 20:41:11 +00:00
Michael Bayne 09f0bee0f3 Yet more header patrol.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4602 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-24 00:39:27 +00:00
Michael Bayne 0384c8c129 Update our AuthRequest on session resume so that we deliver the proper
bootstrap services.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4601 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-23 23:19:11 +00:00
Michael Bayne 3c4f1728d5 Allow a unit to express that it's going to take a long time and should not be
complained about.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4599 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-23 19:52:50 +00:00
Michael Bayne c25024f497 Move some low-level object access control into Presents from Crowd (default all
objects to non-modifiable, restrict client object subscriptions to the client
in question). Modified Peer code to not log a warning when a peer is not online
in an expected way (not listening for connections).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4598 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-23 19:41:30 +00:00
Michael Bayne ff30b2e116 Type safety!
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4573 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-13 00:23:13 +00:00
Michael Bayne 73bcb0faaf Let's put that code in the InvocationManager because we're going to need it
elsewhere when we go fix the standalone servers.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4553 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-11 01:21:20 +00:00
Michael Bayne ebc99935d5 If we're going to do this, I guess we're going to do it properly. Nixed the
notion of a global group (though we implicitly define one in InvocationCodes)
added a mechanism for directors (which generally handle the client side of
invocation services) to register their interest in bootstrap service groups so
that the whole goddamned complex business can happen magically behind the
scenes.

If you instantiate a director, it will automatically register interest in the
service group it needs and everything will work. If you don't use the director
code, you don't get the services and you can safely exclude all of that code
from your client even though the services are still in use on the server (and
presumably used by some other types of clients).

This is going to break all the builds, which I'll soon fix. Then I'll go write
all this in ActionScript. Yay!


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4552 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-11 01:17:30 +00:00
Michael Bayne 9afcc526a0 Bit the bullet and implemented invocation service groups so that our various
MetaSOY clients (Swiftly, World, and soon Admin Dashboard) don't have to know
about a bunch of unrelated crap. Fricking complexity++, grumble.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4551 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-11 00:42:35 +00:00
Michael Bayne a1be45996b Implemented the mechanism for initiating and clearing out a remote object
proxy. Untested, but hey, it probably works. :)


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4543 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-08 19:43:55 +00:00
Michael Bayne e1c5d01afd Added proxied object support to the distributed object manager framework. This
exposes the need to write a Client that is optimized to act as a proxy instead
of just using the one that is designed to run on a user's machine. However,
this will be fine for now. Integration with PeerManager forthcoming.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4530 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-03 01:14:17 +00:00
Michael Bayne cadde41ccb Widening in preparation for modifications.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4523 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-02 22:38:19 +00:00
Michael Bayne 1e4c28ecff Fixed typo.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4492 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-12-21 06:58:11 +00:00
Michael Bayne b6d37a472a If we're trying to remove an already removed marshaller, let's hear about where we're doing it.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4459 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-11-20 18:21:08 +00:00
Michael Bayne 0bb157aedf When running in local mode we want to properly tag all events originating on
the client with the proper source oid. Normally this happens when the client's
event is received over the network but in local mode events never go over the
network and thus all appear to have originated on the "server".


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4435 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-25 17:10:30 +00:00
Michael Bayne 20c0f0ff3d Regenerated with updated Marshaller and Dispatcher templates.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4398 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 18:13:34 +00:00
Michael Bayne 48faea2ace All VirtualMachineErrors seem worthy of fork sticking. Also re: my previous
checkin, tihs will be a non-issue when we start devoting an entire separate JVM
to each game (which we will have to do for all games that run server code)
because then all a game can do is stick a fork in its own JVM and render itself
unplayable.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4388 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-29 00:45:58 +00:00
Michael Bayne 57edcd84b6 We have to specifically enumerate the scary errors that we'll let actually
stick a fork in the server otherwise malicious or broken code can generate an
AbstractMethodError or some other error and cause the server to decide to quit.

It may still be possible for malicious code to throw an OutOfMemory error, and
if that's the case then I don't know what we can do to both gracefully get the
fuck out of dodge when things are pear shaped and avoid the wrath of the
kiddies.

Incidentally, it was stupidity, not malice that brought this to my awareness.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4387 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-29 00:41:33 +00:00
Michael Bayne 8676bb1adc Avoid div0 in rare situation.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4382 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-27 16:54:13 +00:00
Michael Bayne 7379cf09db Communicate the client's timezone to the server during the authentication
process and keep that information around in case the server ever wants to know.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4356 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-07 01:56:41 +00:00
Ray Greenwell 0149aa3b1d Rollback last commit.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4351 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-30 00:34:07 +00:00
Ray Greenwell a0626f8a3a Pass the authdata returned by the Authenticator into the ClientResolver.
This is actually kind of sketchy, because the resolver can't depend on it
because there are methods to resolve a client object without having an
authenticated connection.
For now, I'll leave this in.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4350 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-30 00:05:22 +00:00
Michael Bayne bc9f53396c Revamped distributed object creation. There was no particular reason to create
distributed objects by reflection since we don't allow clients to create
objects, furthermore we needn't do it asynchronously. The object creation
methods were moved into the server-side only interface and made "immediate", so
the caller creates a derived instance of DObject and registers it with the
system instead of creating it with a Subscriber callback.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4342 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-23 23:46:48 +00:00
Michael Bayne f40325fa67 Revamped the way network stats are tracked so that they are all monotonically
increasing integers. Added tracking for connect and disconnect events.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4324 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-15 00:12:42 +00:00
Ray Greenwell 426edf6ad7 Moved some of the standard work done by Authenticators into the base class.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4291 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-25 19:02:48 +00:00
Mike Thomas 5b83ee58a0 Call the proper removal function...
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4288 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-24 23:29:43 +00:00
Mike Thomas 02113e6eab Allow shutdowners to be removed in case they're no longer interested.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4287 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-24 23:27:19 +00:00
Michael Bayne 2dcdebc29b Document the messages broadcast to the server.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4277 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-19 00:45:51 +00:00
Michael Bayne 41b73ffcb4 Factored the automatically scheduled reboot code out into a reusable class.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4276 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-19 00:43:08 +00:00
Michael Bayne 6be44f5a65 Finished up the basic peer system and wired up the tell forwarding. In theory
it all works, now to test it.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4249 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-05 22:48:32 +00:00
Michael Bayne e492f09bee Now that we use the standard resolution observer mechanism, we need to
decrement the reference count of the client object as it is normally
incremented for every resolution listener.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4248 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-05 22:29:38 +00:00