Commit graph

306 commits

Author SHA1 Message Date
Nicholas Kariniemi
bc5921b2dc CSP: Clean up syntax of simpler model 2015-12-18 10:51:37 +02:00
Nicholas Kariniemi
4da9e8a617 Support more than one grub list
- Connecting to / redirects to /<random string>
- Connecting to /:list-name connects users to the list
  :list-name. Changes are synced only with this list.
- A cookie saves the last list visited, so future / visits go to last list
2015-12-17 00:40:51 +02:00
Nicholas Kariniemi
81f4a47d84 Catch all errors in clicking in e2e test 2015-12-11 16:35:50 +02:00
Nicholas Kariniemi
958b6cc5a4 Add note about running tests 2015-12-11 14:48:55 +02:00
Nicholas Kariniemi
9901792fe8 CSP: Correct spec to actually test for n processes (not 3) 2015-12-11 14:48:20 +02:00
Nicholas Kariniemi
2613f91510 Add lein midje as an explicit dev dependency 2015-12-11 10:47:08 +02:00
Nicholas Kariniemi
f30ee7ce49 Make Datomic setup instructions more explicit 2015-12-11 10:24:42 +02:00
Nicholas Kariniemi
2f96bb51db Make datomic script more generic 2015-12-11 10:24:37 +02:00
Nicholas Kariniemi
43bc50b3ae Remove unused specljs file 2015-12-11 10:07:51 +02:00
Nicholas Kariniemi
f8d10e70a5 Add script for starting Datomic locally 2015-12-11 10:07:37 +02:00
Nicholas Kariniemi
7513ed471e Add end-to-end test for production (with manual verification) 2015-12-11 00:08:04 +02:00
Nicholas Kariniemi
53bbaff30c Move CSP spec from csp/ to spec/ 2015-12-10 23:38:40 +02:00
Nicholas Kariniemi
4d0d92b188 Remove websocket logging 2015-12-10 23:38:15 +02:00
Nicholas Kariniemi
df09addaa4 Remove unused dependencies 2015-12-10 23:37:29 +02:00
Nicholas Kariniemi
928baf1439 Separate server and command line options 2015-12-10 23:31:19 +02:00
Nicholas Kariniemi
b31489b2b8 Working n-way client sync with Datomic
- Based on latest CSP specification
- Also added end-to-end test for eventual consistency
2015-12-10 23:31:19 +02:00
Nicholas Kariniemi
4058d17102 Prove eventual consistency for n clients 2015-12-09 21:43:48 +02:00
Nicholas Kariniemi
2747dd066d CSP: Update implementation to allow for 3 clients 2015-12-09 18:46:28 +02:00
Nicholas Kariniemi
6bc934c647 CSP: Two way sync for an arbitrary n inputs from either client 2015-12-01 20:10:07 +02:00
Nicholas Kariniemi
7d37ea3cf0 CSP: Working two way sync specification + implementation 2015-12-01 19:43:10 +02:00
Nicholas Kariniemi
0ea9aab101 Two way sync assertion 2015-11-30 00:29:02 +02:00
Nicholas Kariniemi
20c408e491 Add two-way sync assertion and simplify down buffer
- Down buffer is no longer a sliding buffer of size one but just
 a buffer of size 1. It cannot be pushed into if it is full.
2015-11-29 23:28:48 +02:00
Nicholas Kariniemi
5cf41c6b21 Remove unnecessary render on client input 2015-11-29 23:28:04 +02:00
Nicholas Kariniemi
42afcc5b77 Extend one-way sync tests 2015-11-29 01:36:08 +02:00
Nicholas Kariniemi
e9c006281a Simplify algorithm: remove count, unused if statement 2015-11-29 01:16:44 +02:00
Nicholas Kariniemi
a003fc9db7 Working specification for a simple sync 2015-11-29 00:42:10 +02:00
Nicholas Kariniemi
cd7397ef40 CSP: Re-specification of sync algorithm with Datomic in mind
- This specification ignores the actual diffing/patching itself and
  concerns itself only with the current database, server, and client t
  or database time.
2015-11-26 22:09:33 +02:00
Nicholas Kariniemi
798f1a5891 Working sync for single client (no changes from others) 2015-11-20 02:14:07 -05:00
Nicholas Kariniemi
a8d8ae56c5 Rework sync - client reworked, wip 2015-11-19 23:33:30 -05:00
Nicholas Kariniemi
838e6497d4 Correct fetching of database values
The existing way did not work for local database for some reason. The
	existing approach tried to fetch all attributes for a given
	entity. We now specifically fetch the attributes we want for an
	entity, which is better anyway.
2015-11-17 23:01:18 -05:00
Nicholas Kariniemi
bde07221a6 More sync musings 2015-11-17 22:49:53 -05:00
Nicholas Kariniemi
fac9486787 Add Datomic to README and clean up 2015-11-17 20:38:46 -05:00
Nicholas Kariniemi
432ee48162 Buffers - Add a client-side download buffer as well
--> No deadlock but state explosion. Not sure if syncing still works.
2015-08-26 22:22:34 +03:00
Nicholas Kariniemi
e47f79ac7b Buffers - wip2 2015-08-26 22:09:10 +03:00
Nicholas Kariniemi
52af4dfd68 Buffers - wip 2015-08-26 21:35:22 +03:00
Nicholas Kariniemi
619f21e4d8 CSP: Introduce a one element sliding buffer when DB changes are saved
This fixes a deadlock issue from the previous model.
2015-08-24 18:40:01 +03:00
Nicholas Kariniemi
b3b8011719 CSP: Fix issue over which events can be communicated when 2015-08-19 20:50:08 +03:00
Nicholas Kariniemi
0cebe1f5ab Fix deadlock in previous implementation
by only allowing new inputs if the previous one has been "acked".

I.e. if you send one diff, you don't process any more diffs until you
	receive a diff back. This is something specified in the Neil Frasier
	paper and also something needed to prevent deadlock.
2015-08-15 18:32:25 +03:00
Nicholas Kariniemi
9f32a03d04 Force processes to synchronize on communication
Use parallel operation || instead of the (unsynchronized) interleave
	operation |||.
2015-08-15 18:18:04 +03:00
Nicholas Kariniemi
1b99e49563 Add identifiers to events 2015-08-15 16:51:25 +03:00
Nicholas Kariniemi
da0541518e Send unsent client changes to server 2015-08-15 16:38:20 +03:00
Nicholas Kariniemi
cd94b6a966 More complicated - loads but untested 2015-08-15 15:14:27 +03:00
Nicholas Kariniemi
14a8c340e0 More complicated model with multiple server/client pairs - wip 2015-08-15 14:58:59 +03:00
Nicholas Kariniemi
30bbfff308 More nuance - send back diff 2015-08-13 22:41:30 +03:00
Nicholas Kariniemi
bdc78589ea Slight improvement 2015-08-13 22:25:18 +03:00
Nicholas Kariniemi
2736769825 Basic CSP "sync" - some working CSPM 2015-08-13 21:58:03 +03:00
Nicholas Kariniemi
cec0060984 db - wip 2015-08-10 06:45:09 +03:00
Nicholas Kariniemi
d71f9260e8 Rework sync - also actually remove removed items 2015-07-17 00:36:12 +03:00
Nicholas Kariniemi
755d06f32b Rework sync - wip
- Fetch full sync state from database, save upsert changes to database
2015-07-17 00:25:24 +03:00
Nicholas Kariniemi
8b11c119f2 Separate server and client syncing
- They vary in important ways anyway so it's more clear this way
2015-07-15 10:39:29 +03:00