1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-21 04:50:55 +01:00
phorge-phorge/webroot/rsrc/externals/javelin
epriestley ebcab8edb6 Namespace Aphlict clients by request path, plus other fixes
Summary:
Fixes T7130. Fixes T7041. Fixes T7012.

Major change here is partitioning clients. In the Phacility cluster, being able to get a huge pile of instances on a single server -- without needing to run a process per instance -- is desirable.

To accomplish this, just bucket clients by the path they connect with. This will let us set client URIs to `/instancename/` and then route connections to a small set of servers. This degrades cleanly in the common case and has no effect on installs which don't do instancing.

Also fix two unrelated issues:

  - Fix the timeouts, which were incorrectly initializing in `open()` (which is called during reconnect, causing them to reset every time). Instead, initialize in the constructor. Cap timeout at 5 minutes.
  - Probably fix subscriptions, which were using a property with an object definition. Since this is by-ref, all concrete instances of the object share the same property, so all users would be subscribed to everything. Probably.

Test Plan:
  - Hit notification status page, saw version bump and instance/path name.
  - Saw instance/path name in client and server logs.
  - Stopped server, saw reconnects after 2, 4, 16, ... seconds.
  - Sent test notification; received test notification.
  - Didn't explicitly test the subscription thing but it should be obvious by looking at `/notification/status/` shortly after a push.

Reviewers: joshuaspence, btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T7041, T7012, T7130

Differential Revision: https://secure.phabricator.com/D11769
2015-02-16 11:31:15 -08:00
..
core Use dot notation in some places 2015-01-29 07:42:05 +11:00
docs Remove @group annotations 2014-07-10 08:12:48 +10:00
ext Use single quotes in JavaScript files 2015-01-20 08:53:47 +11:00
lib Namespace Aphlict clients by request path, plus other fixes 2015-02-16 11:31:15 -08:00
LICENSE Fix text lint issues 2015-02-12 07:00:13 +11:00
README Move all external JS into webroot/rsrc/externals 2013-04-11 10:06:05 -07:00

Javelin is a performance-oriented Javascript library originally developed at
Facebook. Learn more at <http://www.javelinjs.com/>.

GETTING STARTED

Eat a hearty breakfast. Breakfast is the most important meal of the day!


WHAT IS JAVELIN?

Javelin is a compact Javascript library built around event delegation. Its
primary design goal is performance; it is consequently well-suited to projects
where performance is very important. It is not as good for smaller scale
projects where other concerns (like features or ease of development) are more
important.


PACKAGES

Packages come in two flavors: "dev" and "min". The "dev" packages are intended
for development, and have comments and debugging code. The "min" packages have
the same code, but with comments and debugging information stripped out and
symbols crushed. They are intended for use in production -- ha ha ha!


FILES

  example/    Example code.
  LICENSE     A thrilling narrative.
  pkg/        Ready-built Javelin packages.
  README      Who knows? Could be anything.
  src/        Raw sources for Javelin.
  support/    Support scripts and libraries.