-
Notifications
You must be signed in to change notification settings - Fork 13
NilLabel WAL entries cause 400 error on AsyncProcessor replay via v3 API #213
Copy link
Copy link
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Description
When system-mutation-mode=ASYNC is enabled, mutations to NilLabel tables (e.g., sys.info) are written to WAL and queued like regular mutations. AsyncProcessor then attempts to replay these WAL entries via the v3 sync endpoint (/edges/sync?force=true), which rejects NilLabel because V2BackedEngine.getTableBinding() requires HBaseIndexedLabel.
Error observed (3 occurrences during mode transition):
[AbAsyncDevStreaming] InvalidHttpStatusCodeException : Failed to mutate edge:
http://ab-dev.dev.onkakao.net/graph/v3/databases/sys/tables/info/edges/sync?force=true
{"mutations":[{"type":"INSERT","edge":{"version":1773306252508,"source":"origin","target":"warmup_0","properties":{"props_active":true,"message":"warmup"}}}]}
{"status":400,"error":"Bad Request","message":"This Label (sys.info, class ...NilLabel) is not indexed or not supported for edge mutation"}
Root cause: v2 and v3 mutation APIs behave differently for NilLabel.
| Path | NilLabel support | Result |
|---|---|---|
v2 (/graph/v2/service/sys/label/info/edge) |
O | Returns IDLE |
v3 (/graph/v3/databases/sys/tables/info/edges/sync?force=true) |
X | Throws 400 |
Since AsyncProcessor relays WAL entries through the v3 API, this mismatch causes unnecessary errors during system-mutation-mode transitions.
Expected Behavior
NilLabel is a no-op table that never persists data. Either:
- WAL should not be written for NilLabel tables — WAL exists for data durability, but NilLabel has no data to recover. Skipping WAL at the source eliminates the problem without adding business logic to AsyncProcessor.
- v3 API should handle NilLabel gracefully — align v3 behavior with v2 by returning IDLE instead of throwing 400.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working