325 Commits

Author SHA1 Message Date
6b8981e1db sync improvements and incompatible upgrade
* New Negentropy protocol: Syncs with older versions of strfry will break (sorry!)
* Bi-directional frame size limits: fixes a bug when syncing very large DBs where the client side was near empty
* sync command now politely tells server it can release Negentropy resources as soon as reconcile complete
2023-08-12 00:45:51 -04:00
d189cdb349 correctly detect and report when syncs are too large, fix logging 2023-08-12 00:45:51 -04:00
a199e09b84 Merge pull request #54 from jaschadub/master
Update deployment documentation
2023-08-11 13:34:16 -04:00
276b243ffd noReadAhead option, CLOEXEC the LMDB file 2023-08-10 16:36:26 -04:00
206b14a473 sync optimisations, DBQuery no longer loads eventPayload
- It is now up to the caller to do so
- QueryScheduler now can optionally not bother to ensure that the events are fresh
2023-07-29 01:14:38 -04:00
94a60c3ad2 bump golpe 2023-07-29 01:11:09 -04:00
ab03a57b18 stop WriterPipeline threads on shutdown 2023-07-27 17:50:07 -04:00
ca0449286c Stop WSConnection from calling ::exit(), so that the sync command can flush its writes first
This fixes a rare race condition that caused a segfault on exit:

We call ::exit() which runs the atexit handler, which destroys the LMDB environment. However, there was another thread running that still had pending events to write, so as the environment was being destroyed, it tried to use the environment to write the events.
2023-07-26 20:24:55 -04:00
0fe929ffcb make bulk export commands gracefully exit on SIGPIPE (for example, if piped to head) 2023-07-25 00:39:05 -04:00
80915f969d If a client disconnects before its pending EVENT write messages have been processed, drop those messages instead of trying to write them 2023-07-21 07:46:37 -04:00
7c17b066a1 release 0.9.3 0.9.3 2023-07-21 06:38:17 -04:00
5b3190c54a detect overflows when rejectEvents* config params are set very large 2023-07-21 06:36:36 -04:00
6d8aeaa881 setting rejectEphemeralEventsOlderThanSeconds larger than ephemeralEventsLifetimeSeconds did not work because events were then considered expired 2023-07-21 06:23:03 -04:00
0ad14851c8 update strfry.conf 2023-07-21 06:22:42 -04:00
f792eb6a5b make default NIP-11 pubkey and contact empty strings, to silence warnings with default config 2023-07-21 06:21:30 -04:00
1ffcde4ba3 config to log reason for invalid event rejection (default true)
- can be disabled to silence excessive logging
2023-07-21 06:20:29 -04:00
42d5101316 Warn when NIP-11 pubkey is in incorrect format (#52) 2023-07-20 18:03:40 -04:00
0d21dc3255 limit on events that can be processed by a sync 2023-07-20 17:45:00 -04:00
78033bf03b docs 2023-07-19 20:07:06 -04:00
62f3d2c724 Update DEPLOYMENT.md
Fixed ufw section missing sudo and duplicate http and https
2023-07-13 11:35:02 -07:00
d44b163cc3 Update DEPLOYMENT.md
Updated to add more ufw settings and fix ulimit issues on some systems
2023-07-13 11:32:59 -07:00
d83001b40a bump golpe 0.9.2 2023-06-13 01:50:13 -04:00
4d832684a5 default value for frame-size-limit 0.9.1 2023-06-12 08:58:29 -04:00
7dab0a7406 normalise logging 2023-06-12 08:58:17 -04:00
a3b4e7baf5 frame size limit for negentropy syncs 2023-06-11 23:44:33 -04:00
c18ff8099c remove relay__negentropy__maxFilterLimit for now
- this was causing problems on big DBs
- need more reliable way of enforcing limits
2023-06-10 01:34:16 -04:00
40c3d6156a log disconnection reasons 2023-06-10 00:46:46 -04:00
01e6421f89 landing page 0.9.0 2023-06-09 01:49:20 -04:00
4cff73b01b increase DB version to 2 2023-06-08 16:23:12 -04:00
69d4871209 todo 2023-06-06 16:28:19 -04:00
e13275d07c allow filtering on empty tag values 2023-06-06 15:33:03 -04:00
9a65b1c757 bump golpe 2023-06-06 15:32:58 -04:00
8f974a7831 re-gen config file 2023-06-06 01:55:30 -04:00
62b2b3096f move relay config into relay app's golpe.yaml 2023-06-06 01:51:41 -04:00
2c72a6ac5d todo 2023-06-06 01:09:12 -04:00
d2889bc491 allow writePolicy plugins to filter events downloaded via sync 2023-06-06 01:06:43 -04:00
abb488a570 zero downtime restarts 2023-06-05 16:32:35 -04:00
c2f9d61e91 update docs and list of supported NIPs 2023-06-05 12:19:57 -04:00
c0f787a06b todo 2023-06-05 11:39:24 -04:00
03ef0958fc apps refactor 2023-06-05 11:39:21 -04:00
ea73aca3f3 when disk is full, make relay log and return errors but not crash 2023-06-05 11:39:21 -04:00
89fe196242 backpressure for WriterPipeline 2023-06-05 11:39:21 -04:00
2c6852ecf9 bugfix for when limit=0 2023-06-05 11:37:55 -04:00
799da2c016 bugfixes in sync 2023-06-05 11:37:55 -04:00
af0fa71f26 in negentropy handler, implement queries stored in events 2023-06-05 11:37:55 -04:00
e2816f6bd5 foreachByFilter feature 2023-06-05 11:37:55 -04:00
d9048acb64 remove debug lines 2023-06-05 11:37:55 -04:00
fbbfc3a974 if two replaceable events have equal timestamps, retain the one with the lowest id 2023-05-19 00:45:11 -04:00
dcb2920578 Back out changes to generalised replacement behaviour, to preserve NIP conformance
- d tags only work on kinds 30k-40k
- ephemeral tag is not honoured
2023-05-19 00:14:04 -04:00
476143ca69 testing docs 2023-05-18 23:27:40 -04:00