This is an automated email from the ASF dual-hosted git repository.
spmallette pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
from d02442461b Merge branch '3.8-dev'
add fb0b2a274d Add pluggable storage layer to TinkerStorageGraph
add 7fd8747be9 Move TinkerStorageGraph storage changelog entries to 4.0.0
section
add f3e09b543c Make TinkerStorageGraph commits fsync-durable with a
configurable sync mode
add c37449203f Serialize concurrent commit writes to TinkerStorageGraph
storage
add d95220565e Lock TinkerStorageGraph storage directory to a single writer
add c6d5261edb Auto-compact TinkerStorageGraph log to bound its growth
add 36c6a102f6 Stream TinkerStorageGraph snapshots one element at a time
add 297872215d Add integrity checks to TinkerStorageGraph storage format
add df86d60296 Add crash-consistency and streaming-scale tests for
TinkerStorageGraph storage
add 71dec51076 Record TinkerStorageGraph format version once per store
add cd98d2e2c8 Document TinkerStorageGraph durability, compaction, and
locking
add 6a85511157 Extract AbstractLogStorage base from GraphBinaryStorage
add 63ec0e3b70 Encode TinkerStorageGraph elements as dictionary-referenced
components
add 29b7d802bc Add opt-in vertex-property id persistence to
TinkerStorageGraph storage
add 902b270af1 Document TinkerStorageGraph compact encoding and
vertex-property id option
add e8c8d0e952 Broaden TinkerStorage TCK: value types, ids, varints,
unicode round-trips
add b27a891adc Test TinkerStorage durability, lifecycle, and dictionary
crash window
add 3fe0eb39a1 Reject corrupt TinkerStorage frames with a clear error
add 298566af64 Document TinkerStorageGraph single-writer stance; enforce
meta-property conflict
add 3e4e2d0587 Document TinkerStorageGraph persistence and fix stale class
doc
add 7101528962 Rename graphLocation to storage.directory for
TinkerStorageGraph
add c3d8a4a1de Revised Upgrade docs around TinkerGraph storage
capabilities.
add 685823d032 Document that TinkerStorageGraph is in-memory without a
storage engine
add 108ad2e022 Bound decoder allocations and dictionary refs in
TinkerStorageGraph storage
add ec8fc29d82 Publish TinkerStorageGraph commits under the storage lock
add c3b129cb74 Rename ByteBufferBuffer to TinkerByteBuffer and add its
unit tests
add adc91e310c Restore TinkerStorageGraph index definitions on reopen
add b3fb189332 Document that persisted multi-properties require setting
default cardinality
add 6362d1c081 Snapshot compaction from committed state so close() cannot
persist uncommitted data
add 0d7c5f1bb2 Rebuild the write-side dictionary on replay to stop
unbounded reopen growth
add cd1990f991 Cut the storage log back to its last complete frame on
replay
add 40240b1799 Fix NullPointerException on rollback with a vertex index
but no edge index
add 64f54b5bba Roll back and stop accepting commits when the storage log
fails
add 975d8af820 Reject commits on a TinkerStorageGraph after its storage is
closed
add ba3dae6408 Trim the header comment in
tinkerstoragegraph-persistent.properties
add 73ccaceca3 Add a read-only recovery open for a damaged
TinkerStorageGraph store
add 9ffb79d78b Undo dictionary entries from a commit that fails to encode
in TinkerStorageGraph
add d4a116f542 Checksum the length of each TinkerStorageGraph log frame so
corruption is not cut back as a torn tail
add d72f090f83 Close TinkerStorageGraph storage and release its directory
lock even when compaction fails on close
add e117a6456d Back off a failed TinkerStorageGraph auto-compaction and
remove its partial snapshot
add 1d299015e4 Detect a missing TinkerStorageGraph snapshot, log or
VERSION marker instead of opening without it
add 3144b8e3a1 Document the value types TinkerStorageGraph can persist and
name the property and type it cannot
add 9f1a48aef2 Document how a persisted TinkerStorageGraph behaves under
concurrent writes
add 80d81aae19 Reject a blank storage directory and a negative compaction
threshold for TinkerStorageGraph
add 9e5afdf0d4 Update the threat model for TinkerStorageGraph persistence
add 151315ebaa Share TinkerStorageGraph file helpers and drop the
deprecated Class.newInstance() in storage selection
add f4bb58ecaf Record the settings a TinkerStorageGraph store was created
with and keep data-shaping settings fixed
add 3e748f5cf1 Stop TinkerStorageGraph commits when its storage directory
or log is removed while open
add ac1c574f33 Keep TinkerStorageGraph indexes unchanged when a commit
fails in storage
add 86ccdf058e Detect TinkerStorageGraph snapshot and log files copied in
from another store
add 4c8a721a99 Tighten TinkerStorageGraph configuration checks and leave
directories as found after failed or recovery opens
add e20cfeaa07 Stop TinkerStorageGraph writing index definitions after
close and serialize those writes
add 4e77a85a3c Fix stale and misplaced Javadoc in the TinkerStorageGraph
storage package
add 7487c1335a Document what TinkerStorageGraph persistence does not
preserve or detect
add 9acac0c722 Refuse explicit compaction of a closed or recovered
TinkerStorageGraph
add c9efeda55a Tell agents the CHANGELOG breaking marker is applied only
at release
add 4270ed7fee Skip TinkerStorageGraph storage writes for transactions
that changed nothing
add 5f8380509c Make TinkerStorageGraph clear() durable and refuse what a
closed or failed store cannot do
add a370a15aab Harden TinkerStorageGraph storage against torn writes,
corrupt records and replaced logs
add c92e8119f9 Refuse TinkerStorageGraph opens that would hide lost data
or damaged settings
add 10006dc74c Tighten TinkerStorageGraph storage test assertions
add 8745d18e14 Update TinkerStorageGraph persistence and upgrade docs
add 9e21f2df4e Move TinkerStorageGraph storage internals into a
tinkergraph-gremlin DESIGN.md
add 52099af346 Warn that a single-cardinality TinkerStorageGraph keeps
only the last multi-property value on reload
add 0d1d0d8bc1 Remove the breaking tag from a hand-written CHANGELOG entry
add 9a0ff251c2 Fix preserveVertexPropertyIds when a TinkerStorageGraph
store is created
add 27ecef800d Stop TinkerStorageGraph commits when its LOCK file is
removed or replaced
add f048ea422f Number TinkerStorageGraph log records so repeated or
reordered ones fail the open
add 2560f699a8 Skip an interrupted compaction's old log in a
TinkerStorageGraph recovery open
add 2965c680cf Report a TinkerStorageGraph commit that fails after its
storage write as durable
add ca4a2b0180 Skip TinkerStorageGraph compaction when nothing was
committed since the last one
add 3a629ee628 Fail a TinkerStorageGraph commit that was waiting on the
commit lock while the graph was cleared
add 50ed289057 Checksum TinkerStorageGraph file headers so a damaged one
is reported as damage
add 1ee20cd69c Bound every size a stored TinkerStorageGraph value
declares, including labels read by type
add 5bb3a5f219 Correct TinkerStorageGraph notes on why dictionary
numbering survives compaction
add d4e89cc245 Read TinkerStorageGraph settings independent of the default
locale and charset
add cc2d0bb0fd Fix stale and orphaned comments in the TinkerStorageGraph
storage code
add 523aab3750 Document the remaining TinkerStorageGraph persistence
caveats and point read-only opens to recovery
add 220fa8f0fc Document how GraphBinary writes a ByteBuffer value
add 3e52f51a45 Keep the TinkerStorageGraph directory lock held against
other processes
add 6f8a65447b Empty a TinkerStorageGraph store on clear() even when
nothing was logged since the last compaction
add f70b65091c Keep a TinkerStorageGraph vertex re-added after clear()
when an older transaction on its id ends
add f110b72001 Cut a damaged final TinkerStorageGraph log record only when
it ends in unwritten sectors
add e34659e8eb Keep a TinkerStorageGraph commit and its storage healthy
when automatic compaction throws an Error
add 40995792f1 Warn when TinkerMemoryGraph is configured with storage
settings it ignores
add 04aec31c85 Test that TinkerStorageGraph stops commits when a
compaction cannot install its empty log
add cebb027645 Name the TinkerStorageGraph crash-window tests for what
they verify
add d59f9ddbdb Pin the single-cardinality multi-property collapse of a
reopened TinkerStorageGraph in a test
add 591feb8f6f Bound the commit-lock wait in a TinkerStorageGraph clear()
test
add 645e75406b Checksum the TinkerStorageGraph VERSION marker and let a
recover open read past a damaged one
add e96e596cd9 Report an unusable value in a TinkerStorageGraph settings
record as a damaged settings file
add a5a71a50cd Link the TinkerGraph disk storage upgrade note to the
reference docs by URL
add 73053a8909 Close small gaps in the TinkerStorageGraph persistence docs
add 6698049b95 Keep the TinkerStorageGraph directory lock held when a
second open in the same JVM is refused
add e08237cf54 Keep an element added while TinkerStorageGraph clear() runs
consistent in memory and on disk
add 41969cdda8 Fail-stop TinkerStorageGraph storage when clear() cannot
empty it and require engines to implement clear()
add d530220b7b Say that a TinkerStorageGraph commit that fails after its
storage write may be partly visible until reopen
add d65ea88ec3 Fail a TinkerStorageGraph open that sets a storage
directory without a storage engine
add ae893c737e Close configured services and the storage engine when a
TinkerStorageGraph open fails
add 9536425ce9 Use the inherited directory delete in
TinkerStorageGraphProvider
add a69f1a105c Merge TinkerTransaction's vertex and edge storage mutation
conversion into one method
new a95d2e442a Merge pull request #3639 from apache/tinkergraph-storage
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.skills/tinker-dev/SKILL.md | 8 +-
CHANGELOG.asciidoc | 7 +-
THREAT_MODEL.md | 11 +-
.../reference/implementations-tinkergraph.asciidoc | 352 ++++-
docs/src/upgrade/release-4.x.x.asciidoc | 91 +-
...o.properties => tinkergraph-storage.properties} | 11 +-
.../io/binary/types/BinarySerializer.java | 8 +
.../conf/tinkergraph-credentials.properties | 4 +
.../conf/tinkerstoragegraph-persistent.properties | 39 +
.../gremlin/server/auth/SimpleAuthenticator.java | 54 +
tinkergraph-gremlin/DESIGN.md | 294 ++++
.../tinkergraph/structure/AbstractTinkerGraph.java | 196 ++-
.../structure/TinkerElementContainer.java | 10 +-
.../gremlin/tinkergraph/structure/TinkerGraph.java | 51 +-
.../tinkergraph/structure/TinkerMemoryGraph.java | 38 +-
.../tinkergraph/structure/TinkerStorageGraph.java | 336 ++++-
.../tinkergraph/structure/TinkerTransaction.java | 149 +-
.../structure/storage/AbstractLogStorage.java | 1562 ++++++++++++++++++++
.../structure/storage/DefaultStorage.java | 31 +-
.../structure/storage/DirectoryLock.java | 334 +++++
.../structure/storage/GraphBinaryStorage.java | 634 ++++++++
.../structure/storage/IndexDefinitions.java | 183 +++
.../structure/storage/StorageFiles.java | 88 ++
.../structure/storage/StorageSettings.java | 314 ++++
.../tinkergraph/structure/storage/SyncMode.java | 76 +
.../structure/storage/TinkerByteBuffer.java | 371 +++++
.../structure/storage/TinkerStorage.java | 155 ++
.../structure/storage/TinkerStorageMutation.java | 67 +
.../tinkergraph/TinkerMemoryGraphProvider.java | 20 -
.../tinkergraph/TinkerMemoryGraphUUIDProvider.java | 6 -
.../tinkergraph/TinkerStorageGraphProvider.java | 14 +-
.../structure/TinkerMemoryGraphTest.java | 211 +--
.../structure/TinkerStorageGraphTest.java | 455 +++++-
.../AbstractTinkerStorageConformanceTest.java | 715 +++++++++
.../structure/storage/ConcurrencyProbeStorage.java | 89 ++
.../structure/storage/DirectoryLockHolder.java | 23 +-
.../structure/storage/DirectoryLockTest.java | 187 +++
.../structure/storage/FaultInjectingStorage.java | 164 ++
.../structure/storage/GraphBinaryStorageTest.java | 1489 +++++++++++++++++++
.../storage/StorageCommitSerializationTest.java | 105 ++
.../storage/StorageCrashConsistencyTest.java | 231 +++
.../structure/storage/StorageFailureTest.java | 778 ++++++++++
.../structure/storage/StorageRecoveryTest.java | 895 +++++++++++
.../structure/storage/StorageSettingsTest.java | 489 ++++++
.../tinkergraph/structure/storage/StoreWriter.java | 50 +
.../structure/storage/SyncModeTest.java | 58 +
.../structure/storage/TinkerByteBufferTest.java | 265 ++++
47 files changed, 11312 insertions(+), 406 deletions(-)
rename gremlin-console/conf/{tinkergraph-gryo.properties =>
tinkergraph-storage.properties} (60%)
create mode 100644 gremlin-server/conf/tinkerstoragegraph-persistent.properties
create mode 100644 tinkergraph-gremlin/DESIGN.md
create mode 100644
tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/AbstractLogStorage.java
copy
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/BulkSetSupplier.java
=>
tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/DefaultStorage.java
(55%)
create mode 100644
tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/DirectoryLock.java
create mode 100644
tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/GraphBinaryStorage.java
create mode 100644
tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/IndexDefinitions.java
create mode 100644
tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/StorageFiles.java
create mode 100644
tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/StorageSettings.java
create mode 100644
tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/SyncMode.java
create mode 100644
tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/TinkerByteBuffer.java
create mode 100644
tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/TinkerStorage.java
create mode 100644
tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/TinkerStorageMutation.java
create mode 100644
tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/AbstractTinkerStorageConformanceTest.java
create mode 100644
tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/ConcurrencyProbeStorage.java
copy
gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/util/ExceptionTestUtils.java
=>
tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/DirectoryLockHolder.java
(54%)
create mode 100644
tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/DirectoryLockTest.java
create mode 100644
tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/FaultInjectingStorage.java
create mode 100644
tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/GraphBinaryStorageTest.java
create mode 100644
tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/StorageCommitSerializationTest.java
create mode 100644
tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/StorageCrashConsistencyTest.java
create mode 100644
tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/StorageFailureTest.java
create mode 100644
tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/StorageRecoveryTest.java
create mode 100644
tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/StorageSettingsTest.java
create mode 100644
tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/StoreWriter.java
create mode 100644
tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/SyncModeTest.java
create mode 100644
tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/storage/TinkerByteBufferTest.java