Add swarm.gdplogd.advertise.delay parameter to delay between
advertisements to avoid flooding the network when there are many logs on
a server. Defaults to 100 (microseconds).
Update license date on all files. No functional changes.
First cut at resurrecting log-view (now gdp-log-view) for v2 format.
Still needs some tweaking, but basics work.
Implement transaction hooks to make SQLite more efficient if multiple
records are being appended at the same time.
Snapshot: change physical interface to make more efficient use of SQLite
when retrieving sets. Use this for asynchronous reads.
The grand renaming: GCL is (mostly) gone in favor of GOB and GIN.
Snapshot in on-disk format conversion from ad hoc files to SQLite
databases. Compiles but is completely untested.
Get basic subscriptions working again.
Snapshot of work on getting subscriptions working under Net4. Still
has several problems.
Other fixes necessary to compile with a C++ compiler:
* Subtlety different semantics for extern keyword.
* Inability to do a forward declaration of a static variable.
* Structs must be initialized in the same order as declared.
* Cannot initialize a fixed size character array with a quoted string....
Change disk "delete" method to "remove" to avoid conflict with C++
Include __BEGIN_DECLS and __END_DECLS (i.e., extern "C" blocks) to play
well with C++.
Change GdplogdForgive from a struct to a bitmask. Simplified C++
First cut at running Layer 5 network protocol version 4 over old
(version 3) Layer 4 stack. Substantial parts are unimplemented,
including signature generation and checking, read or subscribe by
timestamp or hash, and others. No asynchronous operations including...
Return to compilable state after rebase. No testing.
Snapshot. Not tested.
First cut at new net protocol. Compiles, but not yet tested (not even
once --- do not try to run this!).
First cut at "delete log" command (lightly tested).
First cut at separating GCL instances (GINs) from GDP Objects (GOBs).
This is intended to fix some semantic problems with subscriptions. End
users always use GINs (aliased to gdp_gcl_t for now for compatibility),
and there is one GIN for each call to gdp_gcl_open (i.e., no returning...
Make it possible to reclaim resources in a worker thread rather than in
the main event loop.
Update licenses to 2017.
Attempt to deal more gracefully with records that are written
out-of-order (as a result of asynchronous writes). The hard point is
telling the difference between one writer with out-of-order appends
versus two writers that are actually overwriting the same record. Only...
Try to improve the "allow gaps" and "allow dups" functionality for
Add "forgiveness" to gdplogd to allow it to self heal from various
problems. May be a security problem, but we need it for avoiding
catastrophes while we are debugging.
Next take on read-by-timestamp. This version works for read, multiread,
and subscribe. There are still some glitches (e.g., you can't have a
starting timestamp in the future) but fixing these would require major
code restructuring, and besides, you can't specify a starting record...
First cut at read-by-timestamp. Adds Berkeley DB as a dependency (two
versions supported). The interface still isn't quite right; in
particular, subscribe and multiread don't take timestamps. This should
be remedied before this code is released.
Rename "extents" to be "segments" because of different potential
semantics and enable them by default.
Add logging of gdplogd administrative data for visualization.
Break out physical implementation to an explicit class so new
implementations (e.g., in memory) can be added easily.
Implement ability to create new extents. Currently there is no attempt
made to include authorization.
Change min_recno in extents to recno_offset to simplify a few things.
Checkpoint: extent code closer, compiles, doesn't run.
First cut at a preliminary implementation of extents. Compiles but
completely untested. Only handles one extent.
Variable renaming for physical GCL index.
Update license. No code changes.
Include copyright in all files. There are scripts to do bulk
replacement of the copyright if desired.
Prep for storing signatures in the log. This puts the log into network
byte order for portability and adds a few fields. The datum still needs
to be extended, the signature actually stored, etc.
Add gdplogd -s flag (or swarm.gdplogd.crypto.strictness parameter) to
set how strictly signatures are enforced.
Generalize logd_advertise_one to allow for de-advertising a single GCL
(e.g., in the event of a migration away).
Implement gdplogd shutdown actions: withdraw advertisements, explicitly
terminate all subscriptions.
Unify command and ack/nak processing; unify Associative and LRU GCL
caches; multiple other cleanups.
Restarting when the routing layer goes away now works. Cleanup needed.
Snapshot in getting fallbacks for connections to the routing plane.
Still doesn't work, but at least works for the case where the first
address in the list is available. It's also clear that _gdp_req_new
needs substantial work; as it is, gdplogd can handle commands and...
Checkpoint: implementing advertising. Gdplogd doesn't work in this
First cut at new architecture for GDP (separate routing from log layer).
This compiles but does not run.
Rename gdplogd directory so it matches the name of the binary.