Commit Graph

307 Commits

Author SHA1 Message Date
Nicholas Kariniemi 6e47218c34 Add MIT license 2016-09-23 15:03:30 +03:00
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