Skip to content

Track HStore core-test exclusions and property codec mismatch #3090

Description

@imbajin

Problem

PR #3008 exposed 22 historically excluded HStore core-test cases after the Maven backend property was propagated to every Surefire execution. Scoping that property back to the API-test execution fixes the PR regression, but it does not resolve the underlying HStore defects or the legacy test guards.

The exclusions were introduced by d36e05ece8554fee73ba332147560930b3eba234 as temporary HStore skips. Their conditions use Assume.assumeTrue(isHstore) despite saying skip this test for hstore. Before PR #3008, the core-test JVM did not receive the backend property, so these tests were skipped because the value was null. A global property exposed 21 failures/errors and reduced skipped tests from 42 to 20.

Historical evidence:

Confirmed technical issues

  1. HStore operator-sinking property decoding expects a self-describing byte containing (cardinality << 6) | dataType, while the Server binary writer stores the raw property value. Store-side filtering can therefore decode the first value byte as invalid Cardinality code 0 or DataType code 43.
  2. Core-test schema cleanup uses asynchronous deletion with a fixed 100 ms wait, allowing schema tasks and cache-clear events to cross test boundaries.
  3. HstoreSessionsImpl.clear() does not remove the graph from infoInitializedGraph, so delete and recreate lifecycle state is incomplete.
  4. HStore feature flags claim support for several OLAP, scan, range, and paging capabilities whose excluded tests currently fail.
  5. RamTable is explicitly unsupported by HStore; those tests should remain clearly and correctly excluded.

Required work

  • Define an HStore-specific, versioned property codec for operator sinking without changing the RocksDB binary format.
  • Define backward-read or migration behavior for existing HStore data.
  • Make schema cleanup wait for task completion and verify schema/index/cache convergence.
  • Fix the HStore graph clear and recreate lifecycle, including infoInitializedGraph.
  • Correct the legacy HStore test guards and align them with feature flags.
  • Re-enable supported OLAP, scan, range, paging, and multi-graph tests.
  • Keep only explicitly unsupported tests, such as RamTable, skipped with an accurate reason.

Acceptance criteria

  • HStore property filtering covers SINGLE/LIST/SET cardinalities and all supported data types for vertices and edges.
  • Sort-key prefix/range/paging tests pass both individually and in the complete CoreTestSuite.
  • Multi-graph schema isolation passes.
  • Repeated clear and recreate tests pass for at least 50 iterations without cross-test tasks or stale initialization state.
  • Existing data compatibility or migration is documented and tested.
  • The HStore core suite receives an explicit backend value and passes with only intentional unsupported cases skipped.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingtestsAdd or improve test cases

    Type

    Fields

    No fields configured for Task.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions