forked from NebulousLabs/writeaheadlog
-
Notifications
You must be signed in to change notification settings - Fork 0
/
update.go
33 lines (30 loc) · 1.52 KB
/
update.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package wal
// Update defines a single update that can be sent to the WAL and saved
// atomically. Updates are sent to the wal in groups of one or more, and upon
// being signaled, will be saved to disk in a high-integrity, all- or-nothing
// fasion that follows ACID principles.
//
// The name and version are optional, however best-practice code will make use
// of these fields.
//
// When using the Update, it recommended that you typecast the Update type to
// another type which has methods on it for creating and applying the Update +
// instructions, including any special handling based on the version.
type Update struct {
// The name of the update type. When the WAL is loaded after an unclean
// shutdown, any un-committed changes will be passed as Updates back to the
// caller instantiating the WAL. The caller should determine what code to
// run on the the update based on the name and version.
Name string
// The version of the update type. Update types and implementations can be
// tweaked over time, and a version field allows for easy compatibility
// between releases, even if an upgrade occurs between an unclean shutdown
// and a reload.
Version string
// The marshalled data directing the update. The data is an opaque set of
// instructions to follow that implement and idempotent change to a set of
// persistent files. A series of unclean shutdowns in rapid succession could
// mean that these instructions get followed multiple times, which means
// idempotent instructions are required.
Instructions []byte
}