Commit Graph

92 Commits

Author SHA1 Message Date
Ian Gulliver
3b18676f59 Add a new class of chaos monkey errors after the inner code has run. Lower the overall error rate to reduce traffic. 2014-05-27 16:58:20 -07:00
Ian Gulliver
4427af1505 Combined our two post-connect functions into one, so we make less HTTP calls. 2014-05-27 16:32:59 -07:00
Ian Gulliver
6d6950624f Add onConnect/onDisconnect callbacks 2014-05-27 15:48:03 -07:00
Ian Gulliver
1dd1490518 Pin test, fixes, cleanup 2014-05-27 15:33:51 -07:00
Ian Gulliver
d96c31abf7 Remove stupid cycling UUID scheme. Instead, limit server-side pin deduping to a single instance. 2014-05-27 14:54:16 -07:00
Ian Gulliver
43dec31217 Attempt more reliable handling for connecting with a bad instance ID. 2014-05-27 14:43:59 -07:00
Ian Gulliver
fd94334133 Change our sender IDs when re-pinning, so we don't race against duping ourselves. 2014-05-27 14:33:17 -07:00
Ian Gulliver
ba51350768 Move exception logging to warn level, so real errors stick out. 2014-05-27 14:32:15 -07:00
Ian Gulliver
e51d42a842 Lots of closure annotation to allow JavaScript compile/verification. 2014-05-27 14:29:12 -07:00
Ian Gulliver
b6d5e6d6ae Fix completely broken repin-on-connect behavior 2014-05-27 10:35:00 -07:00
Ian Gulliver
b700202e4f Quiet some of the logspam around instances 2014-05-26 17:28:59 -07:00
Ian Gulliver
070521493b Add getLastMessage() for easier key/value storing. 2014-05-26 10:02:37 -07:00
Ian Gulliver
898121dabd Remove the concept of keys; they can just be encoded into subject names. 2014-05-25 23:50:53 -07:00
Ian Gulliver
8e7af2f5cf Add support for ephemeral messages that are tied to an open channel, aka "pins". 2014-05-25 23:40:56 -07:00
Ian Gulliver
1e91f5babb Per-RPC retry support, used when subscribe() can't find an active instance. 2014-05-23 15:32:31 -07:00
Ian Gulliver
ba82bf3dee Minor cleanups 2014-05-23 15:24:52 -07:00
Ian Gulliver
c6cbae4885 Generate a new instance_id when we reconnect the channel, so we look like an entirely different instance. 2014-05-23 15:10:49 -07:00
Ian Gulliver
b5bce48df6 Make Instance actually stand alone. 2014-05-23 15:00:28 -07:00
Ian Gulliver
0b38d082c1 Remove Instance from the Profile hierarchy to allow key_name queries. 2014-05-23 14:29:11 -07:00
Ian Gulliver
9b14a5a14b Move the two channels test to the dev appserver, since the second channel never connects in prod. 2014-05-23 11:45:34 -07:00
Ian Gulliver
1ec2340f48 Need to make the client_id even shorter. Switch to id() 2014-05-23 11:40:08 -07:00
Ian Gulliver
0e87448f6f Switch to using Instance key as the channel_id, since there seems to be an undocumented length limit. 2014-05-23 11:23:30 -07:00
Ian Gulliver
6bfa10e82a Add a third level construct under Profile and Client, Instance. This allows more than one connected object with the same client credentials. 2014-05-23 10:31:52 -07:00
Ian Gulliver
0d821547e3 Package overview 2014-05-22 10:38:34 -07:00
Ian Gulliver
8fd851c409 Fix a subscribe bug when last_id=0 2014-05-20 10:26:10 -07:00
Ian Gulliver
1cb61cdf62 Split profile() into getProfile() and currentProfile() 2014-05-19 21:11:19 +03:00
Ian Gulliver
f27fc7977b Add real subject ACL support and tests. 2014-05-19 20:52:57 +03:00
Ian Gulliver
c361d41fcf Delay RPC sending and subject resubscription until we have an open channel on the client side, to try to work around prod appengine disappearing messages. Add a test for channel reconnection and re-subscription. 2014-05-19 15:21:21 +03:00
Ian Gulliver
640da84124 Make message ordering test more comprehensive and fix a message ordering bug. 2014-05-18 22:13:48 +03:00
Ian Gulliver
1ee22da229 Add a message ordering test. Fix a nasty ID generation bug. 2014-05-18 21:58:40 +03:00
Ian Gulliver
27e857197a Add support for re-subscribing to the same subject with different message fetching parameters. 2014-05-18 19:31:22 +03:00
Ian Gulliver
56f0f3aeba Add test for subscribe barrier behavior 2014-05-18 19:12:32 +03:00
Ian Gulliver
6d7745c6cd Support last_id in subscribe() API. Add a subscription state machine to avoid sending subscribe requests with bad parameters. 2014-05-18 19:06:27 +03:00
Ian Gulliver
c8c968a2aa Add test for getMessages/subscribe interaction. Move other tests into their own namespaces. 2014-05-18 18:49:34 +03:00
Ian Gulliver
109a31e1f4 Much more careful tracking of current createChannel state, so we don't issue duplicate RPCs or create duplicate channels. 2014-05-18 11:47:23 +03:00
Ian Gulliver
b06e94c1c8 Refactor onServerEvent for sanity. 2014-05-18 11:29:16 +03:00
Ian Gulliver
0380679ddb When rebuilding the channel, subscribe via last seen ID, so we don't miss messages from the time we were disconnected. 2014-05-18 11:20:44 +03:00
Ian Gulliver
63ac321537 Establish a definite ordering and sequential IDs for messages, at the expense of another datastore read/write pair. 2014-05-18 10:58:39 +03:00
Ian Gulliver
18d3babc2c Fix debug console. Remove silly subscription logic. 2014-05-18 10:49:38 +03:00
Ian Gulliver
6389787833 Small API changes to move toward subject ACLs. 2014-05-17 19:13:59 +03:00
Ian Gulliver
d3f716a081 Use a property instead of key_name to hold subject name. This makes Message.ToEvent() do an additional datastore read, but opens up the ability to add more subject indexes. 2014-05-17 18:50:12 +03:00
Ian Gulliver
60c44a25a2 Reliable message delivery across instances using the same namespace. 2014-05-17 18:43:46 +03:00
Ian Gulliver
1a66b86c13 Add test for duplicate message suppression. Fix totally broken subscribe by key code. 2014-05-17 18:04:57 +03:00
Ian Gulliver
966c6c8c50 Remove onReady callback and replace with a queue of RPCs ready to send when we have a client_id. 2014-05-17 17:48:08 +03:00
Ian Gulliver
994afde51f Make subscribe/unsubscribe/sendMessage return Promises that fire on RPC return. 2014-05-17 16:52:28 +03:00
Ian Gulliver
96b17ad6ff Switch to using XHR directly, and drop jquery dep. 2014-05-17 16:31:23 +03:00
Ian Gulliver
6615bb88e2 Make profile merge test messages friendlier. 2014-05-16 23:11:58 +03:00
Ian Gulliver
0247b78c6b Suppress duplicate messages from a client (e.g. when network failure causes retries for RPCs that actually went through). 2014-05-16 23:07:38 +03:00
Ian Gulliver
81d7db3678 Fix profile merge code on login, add test. 2014-05-16 22:35:20 +03:00
Ian Gulliver
64e16e7ec1 Add a way to fetch our current profile ID. 2014-05-16 19:03:33 +03:00