Commit Graph

82 Commits

Author SHA1 Message Date
Ray J. Greenwell 6e464e132f Allow the reboot manager to specify a time zone...
A balance between: This is obnoxious, I should fix it in my subclass
and/or we should be compositing functionality, not subclassing... but
adding a time zone to this old thing seems fundamental anyway and this
is an easy fix.
2026-03-02 13:28:40 -08:00
Ray J. Greenwell 114bfd0460 Include the proper number of parens... how did this get by? 2026-02-25 11:44:51 -08:00
Ray J. Greenwell 7f3b45d2da Add a string to the ignoreable exceptions, for newer Java. 2026-02-24 14:01:49 -08:00
Ray J. Greenwell 45e5561460 InvocationProxy: View a *Provider instance as a *Service.
This is used on multi-noded servers so that I can have a service
interface for talking to the node in charge of a particular resource,
and use the same code path even if that node is the current node.

Perhaps this be more smoothly integrated in the future but for now it's
a static utility you need to manually set up.
2026-02-20 10:32:18 -08:00
Michael Bayne 794924e8a9 Revert "Avoid a concrete dependency on PresentsServer."
This reverts commit 938847bea9.

This didn't turn out to work well enough, so let's avoid unhelpful indirection.
2026-02-11 11:43:02 -08:00
Michael Bayne 938847bea9 Avoid a concrete dependency on PresentsServer.
ProjectX uses Guice to inject dependencies and this results in some random
manager having a dependency on the concrete server class, which invariably is
getting inject itself at the time this dependency has to be resolved, which
causes circular dependencies.

Guice was able to thread the needle with other sneaky business in some cases,
but also sometimes not. So let's give it a nice interface that it can proxy to
manage this particular circular dependency.
2026-02-11 09:59:23 -08:00
fourbites b6a687d2fa Fix IllegalAccessError crash
This was crashing when served from a webapp due to "IllegalAccessError". Lambda expressions seem to make it happy.
2026-01-03 19:45:40 +01:00
fourbites 4185d621f8 Prevent overlapping reboot warning messages
It's hard to say if this is the cause, but it won't hurt to clear existing intervals just in case.
2025-12-13 12:04:16 +01:00
Michael Bayne 0be130a383 Handle streaming of data manually.
We can no longer reflect on java.awt classes and fiddle with their internals.
2025-11-13 16:53:22 -08:00
Ray J. Greenwell 685468fd70 ConnectionManager can be configured to allow larger messages.
Messages that are too big are dropped and the clients have no hope of
recovering. Warnings are logged but that's it. Allow bigger.
2025-10-23 11:27:17 -07:00
Michael Bayne 859c7d197d Javadoc fixes. 2025-07-04 08:54:52 -07:00
Michael Bayne 61fd40f318 Streamline the source header. Update the copyright. 2025-04-03 13:21:33 -07:00
Michael Bayne 4c98299580 Add a default implementation. 2025-02-05 10:51:56 -08:00
Michael Bayne 24b54b8dc6 Added a soak test & isolated test for just fixed bug. 2018-09-26 15:34:12 -07:00
Michael Bayne 11e815fcc3 Do not use buffer limit as indicator of frame completion.
If the frame happens to be exactly the same size as the buffer capacity, we
will erroneously think that the last frame was complete because the limit is
normally at the buffer capacity.

This only exploded when we had both a perfectly sized frame and failed to read
it in a single call to read, which apparently took 17 years to happen, and many
billions of frames read.
2018-09-26 15:16:39 -07:00
Ray J. Greenwell ed7c071de1 Remove debuggery. 2018-09-26 15:12:59 -07:00
Ray J. Greenwell 2dcdcdb76a Also print buffer capacity. 2018-09-26 11:52:20 -07:00
Ray J. Greenwell 2003ed8ae1 Added logging to debug something... 2018-09-26 11:15:20 -07:00
Ray J. Greenwell 9c986bc4a9 Add hook for validating an outgoing connection.
Sometimes a present node uses a port to connect outwards that another
node is listening on.. I considered building-in some smarts for this
into the peer stuff, but for now at least I'll keep it simpler and
more flexible.
2018-09-24 12:54:25 -07:00
Ray J. Greenwell eaed4435b3 Downgrade unmapped connection logging to debug. 2018-05-09 10:56:05 -07:00
Ray J. Greenwell bfbe439942 Configure a larger invocation listener timeout between peers.
10 minutes now, up from 90 seconds. Overrideable in PeerNode to set
a different value.
2018-04-03 16:19:38 -07:00
Ray J. Greenwell 83dca54314 Spelling fix! 2018-03-22 16:31:13 -07:00
Ray J. Greenwell eea5f4343a Allow cross-region connections to use internal IPs. 2018-03-22 16:26:43 -07:00
Ray J. Greenwell 61bee1b160 Revert "Update javadoc with the truth about peers' internalHostName."
This reverts commit ec47182263.

Ummm? I misread the code? So embarassing. For some reason I thought it
was using the public hostname for all connections. Perhaps I misread
the 'hostName' local variable in a PeerNode method for the 'hostName'
in the record.
2018-01-05 15:20:29 -08:00
Ray J. Greenwell ec47182263 Update javadoc with the truth about peers' internalHostName. 2018-01-05 14:36:01 -08:00
Ray J. Greenwell 45c98d9446 Make authenticator static to work with newer guice. 2017-12-28 08:35:10 -08:00
Michael Bayne bbecc4c2fb Objects deprecated, use MoreObjects. 2015-03-12 11:44:12 -07:00
Michael Bayne 8493c455fb Various javadoc fixes. 2015-03-12 11:41:06 -07:00
Ray J. Greenwell e275c2ceda Added commented-out Java 6 improvements. 2015-01-21 10:26:52 -08:00
Ray J. Greenwell 39d1356e56 Occam's razor.
These String methods have been around since jdk1.1...
2015-01-20 17:23:20 -08:00
Jamie Doornbos 34f98e1c46 Javadoc fixes. 2014-11-14 10:20:11 -08:00
Michael Bayne 9d25489af1 Factor out wire format test.
We can't include things with unpredictable iteration order (sets, maps) in our
wire test, but we still want to test those things in our GIANT STREAMABLE CLASS
OF DOOM test. So we now have a separate wire format test which just ensures
that we don't spuriously break the encoding of things that should be
predictable.
2014-10-21 14:17:00 -07:00
Ray J. Greenwell e7537349c3 Document these constants better.
I've got half a mind to change the default to ORDINAL and let yohoho cope.
2014-08-06 10:44:21 -07:00
Sylvain Royer 7105977c49 Fix Narya build. 2014-03-21 14:38:48 -07:00
Sylvain Royer 5afb22cd6c Have default be a final constant, pass in message into chat identifier in case they need to check message type or something. 2014-03-21 14:10:12 -07:00
Sylvain Royer fb01d1d79a Remove import. 2014-03-21 13:05:54 -07:00
Sylvain Royer b9a3efc0b7 Add a source item in the chat history. This allows us to determine from which speak object this chat originated from. 2014-03-21 13:04:40 -07:00
Ray J. Greenwell 43d7e5b726 Drive-by: use one Entry for all logs. 2014-03-20 14:16:00 -07:00
Michael Bayne 8f94d9c329 Cast differently. 2014-01-23 14:24:26 -08:00
Michael Bayne 71e52d355e Added toArrayList().
If we're going to tell you to use an ArrayList instead of toArray(), let's make
that easy. This would be unnecessary if there was an ArrayList constructor that
took Iterable, but there isn't. And DSet is not a Collection.
2014-01-22 13:38:14 -08:00
Michael Bayne 5fb7ca15fc tools.properties should be in the tools submodule. 2014-01-22 13:04:38 -08:00
Michael Bayne 82d9c54ed8 Nix unused imports. 2014-01-20 14:22:20 -08:00
Michael Bayne 65dee239c7 Can't @Override on iface method if we're 1.5 compat. 2014-01-20 14:20:10 -08:00
Ray J. Greenwell 25cb866cc0 Or maybe just interrupt the reader thread.
This seems to work. I'm going with this unless I hear otherwise.
2013-12-05 14:19:28 -08:00
Ray J. Greenwell cea4b3cfd8 RFC: Fix for datagram reader not shutting down.
Every time a client logs on and back off, another DatagramReader thread
is left around. This seems to fix it, but this method should be called
when either the reader or writer shut down..

Also: the didExit methods look funny:

    /**
     * Callback called by the datagram writer thread when it goes away.
     */
    protected synchronized void datagramWriterDidExit ()
    {
        // clear out our writer reference
        _datagramWriter = null;

        if (_datagramReader == null) {
            closeDatagramChannel();
        }

        log.debug("Datagram writer thread exited.");
    }

Why would it only try to shut things down if there's no reader?
Perhaps the idea here is that it won't shut down the channel until
both the reader and writer exit? It's not documented...
2013-12-05 14:07:51 -08:00
Ray J. Greenwell e842439bd0 Reduce logging.
On success this is followed by a "Session resumed" message, and
something should always be logged on failure too.
2013-10-28 22:27:01 -07:00
Ray J. Greenwell 3bbe3a6330 Suppress logging of common peer condition.
This has been happening for a while on PX and I've been meaning to track
it down. When a peer shuts down an object that's proxied on other peers,
the other peers receive an ObjectDestroyedEvent, and clear the object
from their omgrs. Other listeners may also receive the event and will need
to clear the proxying information, but that causes an unsubscribe to be
queued up, which when it runs will find the DObject already gone, and log
an error.

At first I considered not queuing up the unsubscribe action if the object
is no longer present in the omgr, but in the case that I'm working with
we have 2 or more objects that will all be destroyed simultaneously.
Even if I test to see if the first object is around or not, this same
test would always pass for the second object even though its death event
is next on the queue. The unsubscribe would be enqueued after THAT, so
there's no test to detect that the two objects are linked.

Instead, just suppress this message if we're a peer client. I didn't
want to suppress it altogether because we might want this message logged for
normal client connections. Maybe not.

Perhaps there is a better way. Maybe the PeerNode should add its own
ObjectDeathListener and clear out the proxy information and ensure that
the proxied object is also destoyed, and clients need not unproxy manually
in that case.

RFC.
2013-10-26 18:33:53 -07:00
Ray J. Greenwell 408cf8aa6e Remove 'TEMP' logging from 2008-2009.
The proxy stuff shows up all the time in the px logs.
2013-10-26 18:27:13 -07:00
Michael Bayne f1f1b3bc7e Complain not about rawtypes here javac7. 2013-09-16 10:45:05 -07:00
Ray J. Greenwell de3ca2b2ef Final tweaks to the reboot manager.
Consolidate warnings and interval scheduling in doWarning().
Don't let the reboot time drift because of delays on the RunQueue.. each
warning is scheduled based on absolute time from _nextReboot.

doWarning() now takes two args so any subclasses that had overridden
it (unlikley beyond PX) will break...

PendingShutdownObservers will now get the actual milliseconds until reboot.

Basically: after all this, things should essentially work the same except
now there is a protected three-arg version of scheduleReboot that lets you
schedule an exact time, bypassing the normal round-up to the next highest warning time.
2013-08-23 16:34:35 -07:00