Commit graph

234 commits

Author SHA1 Message Date
Trolli Schmittlauch e3a8912360 process incoming posts in parallel 2020-09-09 18:50:45 +02:00
Trolli Schmittlauch 12fcd13754 annotate the PostService server/ request-handler functions 2020-09-09 18:01:51 +02:00
Trolli Schmittlauch 72eca0f4fe log metrics to file
contributes to #60
2020-09-09 17:22:20 +02:00
Trolli Schmittlauch 0ffe9effc0 refactor relay processing to STM-retry instead of busy-wait 2020-09-09 14:24:34 +02:00
Trolli Schmittlauch 2b39648a77 actually implement simple relaying of posts
was still missing for #41
2020-09-09 11:51:09 +02:00
Trolli Schmittlauch df479982fa make RingMap instance of Functor and Foldable 2020-09-08 08:46:36 +02:00
Trolli Schmittlauch c536994afe re-format Servant client pattern matching 2020-09-07 16:35:59 +02:00
Trolli Schmittlauch 5c338b9cd7 split up stats summing and evaluating, launch threads 2020-09-07 16:27:56 +02:00
Trolli Schmittlauch c823e6357a accumulate all statistic/ measurement events to a measurement summary
- RingMap can now be mapped over
2020-09-07 13:00:15 +02:00
Hécate 7d833e064b Improve readability 2020-09-05 15:45:47 +02:00
Hécate d3e5eac5c5 Unsused imports and syntax error 2020-09-05 12:41:18 +02:00
Trolli Schmittlauch c9b0e66110 scale request timeout with speedup and pass it directly to function 2020-09-05 12:30:31 +02:00
Trolli Schmittlauch 4f08d33d2e make all delays configurable and scale them according to a speedup factor 2020-09-05 12:30:31 +02:00
Trolli Schmittlauch 1a962f1500 stylish run 2020-08-27 00:33:19 +02:00
Trolli Schmittlauch ab9d593a1b bugfix: fix wrong partial Response sender access
- replaces improper record field access of `sender`, only existing in a
  Request, by `senderID` of a Response
- fixes the resulting exception-crash
- adds new function that enqueues a verification mark and timestamp bump
  of an existing cache entry
2020-08-27 00:27:36 +02:00
Trolli Schmittlauch f1b15d5a9e bugfix: fix join by adding join node and waiting for it
- additionally to adding neighbours of join node, add the join node
  itself as a neighbour as well
- wait for migrations from the node
2020-08-26 17:43:32 +02:00
Trolli Schmittlauch fc8aa3e330 bugfix: properly process QueryID responses so FOUND is conserved
fixes dproper discovery of announced responsibility by FOUND
2020-08-25 22:01:01 +02:00
Trolli Schmittlauch b23201a49c Make key lookups fail after request exhaustion instead of providing default
Returning the own node as a default does not make sense in all contexts:
Especially for bootstrap joining this can be harmful, so signalling
instead that the lookup failed makes distinguishing on a case by case
basis possible.

Also contributes to #57
2020-08-25 12:51:33 +02:00
Trolli Schmittlauch 6c5e40f8ad fix wrong passing of arguments in receive-loop part checking 2020-08-24 15:28:06 +02:00
Trolli Schmittlauch 3bd4cb667d explicitly pass socket in send-receive-loop 2020-08-24 10:02:45 +02:00
Trolli Schmittlauch 4ba592d8a2 bugfix: DHT request timeout unit is milliseconds 2020-08-23 15:21:24 +02:00
Trolli Schmittlauch cd8ea07600 bugfix: make unjoined nodes consider all IDs to be their responsibility 2020-08-23 13:04:58 +02:00
Trolli Schmittlauch 2b418189a6 use hard-coded defaults for DHT request timeout and retries 2020-08-23 12:06:26 +02:00
Trolli Schmittlauch c3b1aad1c7 abstract away the hashtag -> NodeID conversion 2020-08-21 23:55:20 +02:00
Trolli Schmittlauch 75c1932ef6 send fetchable post URIs as ID 2020-08-21 23:47:42 +02:00
Trolli Schmittlauch 5511026c8d reduce logging verbosity 2020-08-21 14:40:29 +02:00
Trolli Schmittlauch 32734102cd improve documentation of clientPublishPost 2020-08-20 18:13:50 +02:00
Trolli Schmittlauch 2548b6a507 automatically subscribe when publishing to a tag 2020-08-20 11:49:23 +02:00
Trolli Schmittlauch fce5ff9153 implement service data migration for stabilise 2020-08-18 00:19:21 +02:00
Trolli Schmittlauch 6982a0b245 indicate in LeaveRequest whether to expect a migration
this information is used to decide whether to await an incoming
migration in `respondLeave`
2020-08-17 12:36:02 +02:00
Trolli Schmittlauch b8cedada48 prevent threads not awaiting migration from blocking their response 2020-08-17 11:37:04 +02:00
Trolli Schmittlauch c49c1a89c9 wait for migration to complete on join
also clean up migration entry after success
2020-08-17 00:22:48 +02:00
Trolli Schmittlauch 414564705a possibility to wait for a migration to complete 2020-08-16 23:26:31 +02:00
Trolli Schmittlauch 581757965a trigger service data migration at join 2020-08-16 17:53:56 +02:00
Trolli Schmittlauch 470ce6f39a correct the slice of transfered tags at leave 2020-08-15 23:58:47 +02:00
Trolli Schmittlauch 4302452d18 implement vserver leave and trigger data transfer initiation
still unused though
contributes to #36
2020-08-15 22:56:16 +02:00
Trolli Schmittlauch d2e4359a21 rename join function to clarify it just joining a single vserver 2020-08-15 17:37:14 +02:00
Trolli Schmittlauch 8db8907163 filter out spoofed requests for important operations like Join, Leave, Stabilise 2020-08-15 17:19:53 +02:00
Trolli Schmittlauch 5f7ca23f71 add missing leave request sending function 2020-08-14 22:59:28 +02:00
Trolli Schmittlauch 4339cace20 function for initially publishing a post 2020-08-14 11:06:58 +02:00
Trolli Schmittlauch bf277c5a73 unsubsribe from tag 2020-08-13 23:50:33 +02:00
Trolli Schmittlauch 402378a78b signal and handle non-responsibility to subscriptions 2020-08-13 23:44:24 +02:00
Trolli Schmittlauch e646045ab2 include port in Origin header 2020-08-13 21:57:28 +02:00
Trolli Schmittlauch e9ae258dde subscribe to tag 2020-08-13 21:12:39 +02:00
Trolli Schmittlauch 375014812a use a shared HTTP manager for requests 2020-08-13 19:05:38 +02:00
Trolli Schmittlauch 580410e0b4 simple post fetch worker thread 2020-08-13 13:07:50 +02:00
Trolli Schmittlauch c1ce386b65 send prepared subscriptions and clean up on success 2020-08-12 15:23:10 +02:00
Trolli Schmittlauch 2e88a4079b extract and build subscriber payload for sending 2020-08-12 14:07:19 +02:00
Trolli Schmittlauch 1d808b6776 fix typo 2020-08-12 12:16:20 +02:00
Trolli Schmittlauch 1258f673da flush responsibility cache and retry in post queue delivery 2020-08-12 12:07:41 +02:00
Trolli Schmittlauch 96c1963a4f actually check own responsibility for tags before accepting posts 2020-08-11 00:16:10 +02:00
Trolli Schmittlauch 7036867ae0 implemented first Servant client query 2020-08-03 22:50:48 +02:00
Trolli Schmittlauch 20e51ecca4 define API client functions 2020-08-02 14:59:03 +02:00
Trolli Schmittlauch 89706f688a server endpoint for tag unsubscription 2020-08-01 11:18:16 +02:00
Trolli Schmittlauch 7280f251b5 server endpoint for tag subscription 2020-08-01 11:00:38 +02:00
Trolli Schmittlauch 7d7fa3b52a fix haddock parsing 2020-07-31 17:49:52 +02:00
Trolli Schmittlauch 50044673a6 server endpoint for tag-post delivery 2020-07-31 17:46:33 +02:00
Trolli Schmittlauch e3c7faa80b properly initialise RealNode with service and vserver data, set up reference 2020-07-31 16:54:19 +02:00
Trolli Schmittlauch 5ffe1b074e add reference from RealNode to Service
This required to make both RealNode(STM) and LocalNodeState(STM) parameterisable
polymorphic types
2020-07-30 02:19:52 +02:00
Trolli Schmittlauch 4bf8091143 fix type signature of fediChordInit 2020-07-30 01:30:42 +02:00
Trolli Schmittlauch 98ca0ff13e service config, integrate service launch into DHT launch
TODO: hold a reference from DHT to service
2020-07-30 01:23:03 +02:00
Trolli Schmittlauch da47f8062f add lease time to subscription entries 2020-07-29 23:06:07 +02:00
Trolli Schmittlauch ad52a017aa add relay inbox endpoint 2020-07-29 22:15:14 +02:00
Trolli Schmittlauch bd70e2dff0 implement multiple post fetch (with placeholder content) 2020-07-29 00:06:27 +02:00
Trolli Schmittlauch 63bc06a88e implement post fetch (with placeholder content) 2020-07-28 23:45:21 +02:00
Trolli Schmittlauch 970c94ff0d set up subscription data structures and transfer subscription endpoint 2020-07-28 23:17:26 +02:00
Trolli Schmittlauch 3b65757406 worker thread for processing incoming posts in background, started together with web server 2020-07-28 02:12:15 +02:00
Trolli Schmittlauch 736815ea83 normalise hastag unicode representation of incoming posts 2020-07-27 21:49:49 +02:00
Trolli Schmittlauch daae9d0b38 process and enqueue incoming posts 2020-07-27 21:39:49 +02:00
Trolli Schmittlauch 04423171fd define data types for post and subscription storage 2020-07-27 13:20:15 +02:00
Trolli Schmittlauch 7878c67635 adjust rest of code to refactored RingMap 2020-07-27 00:37:31 +02:00
Trolli Schmittlauch 988144e9e7 further relax constrains on RingMap
key now needs to be explicitly given at insert, instead of
deriving it from the value. This makes it possible to store values where
a key cannot be extracted from (HasKeyID)

contributes to #62, #32, #41
2020-07-26 18:55:55 +02:00
Trolli Schmittlauch 0d1551261b adjust code to refactored and parameterisable RingMap
is a bit ugly due to FlexibleContexts being neede at several places
2020-07-25 23:59:48 +02:00
Trolli Schmittlauch 9a20a60222 fix type constraints after RingMap refactor 2020-07-25 23:59:48 +02:00
Trolli Schmittlauch 1ff540fd68 refactor RingMap into own module 2020-07-25 23:59:48 +02:00
Trolli Schmittlauch d55c2f1f1b define typeclasses for interfacing between PostService and DHT 2020-07-25 23:59:40 +02:00
Trolli Schmittlauch 1a085f2fe0 define typeclasses for interfacing between PostService and DHT 2020-07-25 01:53:59 +02:00
Trolli Schmittlauch c05544aa5b able to start a web server and run the mock API handlers
contributes to #41, #32
2020-07-23 18:29:52 +02:00
Trolli Schmittlauch f1697e5fd7 re-structure post API, placeholder handlers
contributes to #41, #32
2020-07-23 16:25:14 +02:00
Trolli Schmittlauch 5fedd9f87c specify post relay API endpoints
contributes to #41, #32
2020-07-23 00:09:45 +02:00
Trolli Schmittlauch e2ecf0739d maybeEmpty can be replaced by Data.List.listToMaybe 2020-07-22 02:56:30 +02:00
Trolli Schmittlauch ebc0d54ddc periodically purge lookup cache of expired entries
closes #24
2020-07-16 00:24:44 +02:00
Trolli Schmittlauch 0ea5402231 improve documentation exports 2020-07-15 01:48:27 +02:00
Trolli Schmittlauch c37fe88b35 store and initialise lookup cache
contributes to #24
2020-07-15 01:44:47 +02:00
Trolli Schmittlauch 42af6afb86 generalise CacheEntry type
contributes to #24
2020-07-15 01:32:37 +02:00
Trolli Schmittlauch 7fa6db81de make sure send sockets are bound to the correct local IP 2020-07-11 19:51:03 +02:00
Trolli Schmittlauch 61ea6ed3ff Periodically contact bootstrap nodes for convergence sampling or joining
closes #56
2020-07-08 01:18:53 +02:00
Trolli Schmittlauch 56ca2b53cc refactor trying to join on any bootstrap node into own function
contributes to #56
2020-07-07 18:07:25 +02:00
Trolli Schmittlauch d293cc05d1 data structure for RealNode holds common config and management data
contributes to #56, #34, #2
2020-07-07 17:36:12 +02:00
Trolli Schmittlauch df7423ce2e fixup! iteration limit for QueryID lookups 2020-07-05 18:18:51 +02:00
Trolli Schmittlauch e91f317a8e decrease logging verbosity 2020-07-05 16:52:09 +02:00
Trolli Schmittlauch 7c17e3a44d implement join-retry on new cache entries
closes #42
2020-07-05 16:48:57 +02:00
Trolli Schmittlauch bdb92411c6 iteration limit for QueryID lookups
- closes #52
2020-07-02 03:34:40 +02:00
Trolli Schmittlauch e06c53ff7c stylish fixes 2020-07-02 01:38:51 +02:00
Trolli Schmittlauch edf66e1b51 add som debug prints 2020-07-02 01:36:31 +02:00
Trolli Schmittlauch f6481996d7 Change default response to QueryID for unjoined nodes
reason: allow unjoined nodes to find bootstrap node in local cache,
while always advertising itself to incoming requests for bootstrapping.
2020-07-02 00:54:14 +02:00
Trolli Schmittlauch 8d349212b4 prevent cache invariant querying when not joined 2020-07-01 18:24:33 +02:00
Trolli Schmittlauch abbe664ca1 fixup! make sure that own node isn't added as neighbour 2020-06-30 00:26:26 +02:00
Trolli Schmittlauch eab5a73ead make sure that own node isn't added as neighbour 2020-06-29 13:42:39 +02:00
Trolli Schmittlauch 6313a06a83 fix time conversion for threadDelay 2020-06-29 13:41:11 +02:00