Commit graph

67 commits

Author SHA1 Message Date
Trolli Schmittlauch 2b418189a6 use hard-coded defaults for DHT request timeout and retries 2020-08-23 12:06:26 +02:00
Trolli Schmittlauch 5511026c8d reduce logging verbosity 2020-08-21 14:40:29 +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 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 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 96c1963a4f actually check own responsibility for tags before accepting posts 2020-08-11 00:16:10 +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 7878c67635 adjust rest of code to refactored RingMap 2020-07-27 00:37:31 +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 7fa6db81de make sure send sockets are bound to the correct local IP 2020-07-11 19:51:03 +02:00
Trolli Schmittlauch bdb92411c6 iteration limit for QueryID lookups
- closes #52
2020-07-02 03:34:40 +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 280d928ad7 Refactor requestQueryID to be able to send a single request
in preparation for #30
2020-06-27 16:06:15 +02:00
Trolli Schmittlauch 7f5dac55ea close #29: periodic cache maintenance
periodically delete expired cache entries, check unverified ones and
potentially use them as neighbour
2020-06-25 01:24:38 +02:00
Trolli Schmittlauch 5e8cfb0ccd mark successfully Pinged nodes as verified
for #29
2020-06-24 22:27:46 +02:00
Trolli Schmittlauch 81e346db4e update responding neighbours and delete unresponding ones from cache
contributes to #44
2020-06-24 02:48:41 +02:00
Trolli Schmittlauch 16b46a8b0b add some comments on stabilise 2020-06-24 02:12:21 +02:00
Trolli Schmittlauch 3482876d9b send and parse Ping requests
contributes to #29 #44
2020-06-19 23:03:27 +02:00
Trolli Schmittlauch 00ff2bf071 refactor adding neighbours 2020-06-19 19:15:05 +02:00
Trolli Schmittlauch e898b80762 Merge branch 'refactorSuccessorsPredecessors' into dhtNetworking 2020-06-19 18:31:39 +02:00
Trolli Schmittlauch 3f42f98443 adjust lookup to RingMap, fix #48
- change default lookup result when not joined to FOUND
- fix determining own responsibility #48
- adjust tests
2020-06-18 23:08:20 +02:00
Trolli Schmittlauch da0b8626cb critical bug fix: use target ID for predecessor query lookup 2020-06-18 23:06:43 +02:00
Trolli Schmittlauch 43e4ab184e adjust cache entry insertion to usage of RingMap
#48
2020-06-17 14:53:36 +02:00
Trolli Schmittlauch 6142ee61d7 WIP: implement adding, setting and taking RingMap entries.
contributes to #48
2020-06-16 23:51:53 +02:00
Trolli Schmittlauch 061bce2b08 adjust types to refactored RingMap NodeCache 2020-06-15 15:14:11 +02:00
Trolli Schmittlauch 2739b47162 send stabilise to certain successor or predecessor 2020-06-12 15:49:12 +02:00
Trolli Schmittlauch 2c98d8507d implement stabilise request sending and parsing
contributes to #44
2020-06-09 22:11:42 +02:00
Trolli Schmittlauch f15d83baff Refactor predecessors and successors to hold RemoteNodeStates
- neighbour nodes need to be contacted reliably
- Only holding NodeIDs requires a cache lookup for getting hostname and
  port. This is brittle as the entry could've been purged from cache.
- refactored ASN.1 scheme, types and add/ sort/ remove implementations

closes #46
2020-06-09 15:21:22 +02:00
Trolli Schmittlauch 4e359775ec add some debug output prints 2020-06-08 20:31:22 +02:00
Trolli Schmittlauch 2c827ea326 rename responseTo -> requestID to avoid partial record accessors 2020-06-08 20:31:18 +02:00
Trolli Schmittlauch 6699237243 respond to and handle QueryID requests
closes #28
2020-06-08 00:36:59 +02:00
Trolli Schmittlauch eec751584c make setPredecessors and setSuccessors enforce the ordering + size limit
closes #47
2020-06-07 23:45:28 +02:00
Trolli Schmittlauch 0a9b0547c6 forgot handling the successors and predecessors of the leaving node
contributes to #28
2020-06-07 00:21:14 +02:00
Trolli Schmittlauch e00da9b84f respond to and handle Leave requests
contributes to #28
2020-06-06 18:02:55 +02:00
Trolli Schmittlauch 53308080db respond to Stabilise requests 2020-06-06 17:31:20 +02:00
Trolli Schmittlauch 43d72128d2 respond to Ping requests 2020-06-06 17:05:54 +02:00
Trolli Schmittlauch e32f0c9146 process and respond to join requests
- serialiseMessage now starts numbering parts from the first number it
  gets, to be able to continue responding after having ACKed previous
  parts

contributes to #28
2020-06-06 13:45:18 +02:00
Trolli Schmittlauch 914e07a412 change NodeCache protection to STM
- putting the NodeCache behind an IORef had been chose because those
  could've been read non-blocking
- the same is true for TVars. The performance characteristics are likely
  worse, but at the advantage of composability within STM monads
2020-06-05 22:07:47 +02:00
Trolli Schmittlauch dc2e399d64 protect concurrent node state access with STM
- for allowing concurrent access to predecessors and successors, the
  whole LocalNodeState is passed wrapped into an STM TVar
- this allows keeping the tests for the mostly pure data type, compared
  to protecting only the successor and predecessor list

contributes to #28
2020-06-04 22:31:41 +02:00
Trolli Schmittlauch f42dfb2137 dispatch incoming requests to their response functions
- contributes to #28
2020-06-04 14:48:05 +02:00
Trolli Schmittlauch 0660bce299 acknowledge parts when receiving partial requests 2020-05-31 23:21:55 +02:00
Trolli Schmittlauch bcd1c34c7c manage incoming request parts before handling 2020-05-31 01:14:09 +02:00