Conversation
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Metadata persistence loss, stale blob accumulation, thread-safety regression, and the misspelled public API constant must be addressed.
Get a fresh assessment by requesting another Copilot review.
Review effort: Lite
Findings: 1
Open (3)
What changed in this PR
Adds MVStore metadata persistence with versioned serialization, blob storage, and optional hashing.
Changes:
- Persists and restores workflow metadata.
- Adds configurable integer/MD5 hashing and blob storage.
- Expands persistence and marshalling tests.
| File | Summary |
|---|---|
impl/persistence/tests/src/main/java/io/serverlessworkflow/impl/persistence/test/AbstractHandlerPersistenceTest.java |
Adds metadata persistence assertions. |
impl/persistence/mvstore/src/test/java/io/serverlessworkflow/impl/persistence/mvstore/MVStorePersistenceStoreTest.java |
Configures hash factories. |
impl/persistence/mvstore/src/test/java/io/serverlessworkflow/impl/persistence/mvstore/MD5MVStorePersistenceTest.java |
Adds MD5 persistence coverage. |
impl/persistence/mvstore/src/test/java/io/serverlessworkflow/impl/persistence/mvstore/HashingMVStorePersistenceTest.java |
Adds integer-hash persistence coverage. |
impl/persistence/mvstore/src/main/java/io/serverlessworkflow/impl/persistence/mvstore/MVStoreTransaction.java |
Adds blob-map handling. |
impl/persistence/mvstore/src/main/java/io/serverlessworkflow/impl/persistence/mvstore/MVStorePersistenceStore.java |
Wires hashing and locking. |
impl/persistence/bigmap/src/main/java/io/serverlessworkflow/impl/persistence/bigmap/BytesMapInstanceTransaction.java |
Serializes metadata and hashed objects; metadata can be lost before completion or on retries, and stale blobs can accumulate. |
impl/persistence/bigmap/src/main/java/io/serverlessworkflow/impl/persistence/bigmap/BigMapInstanceTransaction.java |
Passes instance IDs during task decoding. |
impl/persistence/api/src/main/java/io/serverlessworkflow/impl/persistence/WorkflowPersistenceInstance.java |
Restores metadata. |
impl/persistence/api/src/main/java/io/serverlessworkflow/impl/persistence/hashing/MD5HashItem.java |
Adds MD5 hash representation; the public threshold constant is misspelled. |
impl/persistence/api/src/main/java/io/serverlessworkflow/impl/persistence/hashing/IntegerHashItem.java |
Adds integer hash representation. |
impl/persistence/api/src/main/java/io/serverlessworkflow/impl/persistence/hashing/HashItem.java |
Defines the hash-item contract. |
impl/persistence/api/src/main/java/io/serverlessworkflow/impl/persistence/hashing/HashFactory.java |
Defines hash creation and decoding. |
impl/persistence/api/src/main/java/io/serverlessworkflow/impl/persistence/hashing/DisabledHashFactory.java |
Provides disabled hashing. |
impl/persistence/api/src/main/java/io/serverlessworkflow/impl/persistence/hashing/AbstractHashFactory.java |
Decodes supported hash types. |
impl/persistence/api/src/main/java/io/serverlessworkflow/impl/persistence/CompletedTaskInfo.java |
Carries restored metadata. |
impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowMutableInstance.java |
Supports metadata restoration; restored values can replace the concurrent map with a non-thread-safe map. |
impl/core/src/main/java/io/serverlessworkflow/impl/marshaller/WorkflowOutputBuffer.java |
Adds raw-byte writing. |
impl/core/src/main/java/io/serverlessworkflow/impl/marshaller/MarshallingUtils.java |
Adds generic object decoding. |
impl/core/src/main/java/io/serverlessworkflow/impl/marshaller/DefaultOutputBuffer.java |
Implements raw-byte writing. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Unresolved concurrency, persistence, and public API compatibility issues remain.
Get a fresh assessment by requesting another Copilot review.
Review effort: Lite
Findings: 4
Open (5)
Resolved since last review (1)
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Four moderate issues affecting metadata restoration and MVStore transaction handling remain unresolved.
Get a fresh assessment by requesting another Copilot review.
Review effort: Lite
Findings: 3
Open (3)
Resolved since last review (5)
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Unresolved critical issues affect hash decoding, metadata serialization consistency, and blob transaction atomicity.
Get a fresh assessment by requesting another Copilot review.
Review effort: Lite
Findings: 3
Open (4)
Resolved since last review (2)
6705207 to
7b1b817
Compare
…g generated index Signed-off-by: Francisco Javier Tirado Sarti <ftirados@ibm.com>
|
One of the open issues between the AI and myself is to bound memory usage, Ill do that in a different PR where the static ConcurrentMap cache is replaced by an LRUCache.java (based on ConcurrentMap) But I prefer a different PR because if the AI is really suffocating with this one, If I add the LRUCAche now, its going to allucinate. |
…lity Signed-off-by: Francisco Javier Tirado Sarti <ftirados@ibm.com>



Fix #1691