History | View | Annotate | Download (6.02 KB)
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++ keyword.
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++ compilation.
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 replication research.
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 version.
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.