weaviate / weaviate/java-client
v6: Shard.vectorQueueLenght is misspelled, so the vector queue length is always 0
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 34
- Forks
- 30
- PR merge metrics
- No merged PRs in 30d
Description
Summary
Shard.vectorQueueLenght is misspelled — Lenght for Length — in both the @SerializedName and the record component. The server sends vectorQueueLength, so the field never binds and the value is always 0, on every server version. Nothing throws and nothing is logged.
Where it comes from
io/weaviate/client6/v1/api/cluster/Shard.java (6.3.1):
public record Shard(
@SerializedName("name") String name,
@SerializedName("class") String collection,
@SerializedName("objectCount") int objectCount,
@SerializedName("vectorIndexingStatus") VectorIndexingStatus vectorIndexingStatus,
@SerializedName("vectorQueueLenght") int vectorQueueLenght, // <-- here, twice
@SerializedName("compressed") boolean compressed,
@SerializedName("loaded") boolean loaded,
@SerializedName("numberOfReplicas") int numberOfReplicas,
@SerializedName("replicationFactor") int replicationFactor) {}
The server's own model, entities/models/node_shard_status.go:61:
VectorQueueLength int64 `json:"vectorQueueLength"`
Empirical confirmation
GET /v1/nodes?output=verbose against Weaviate 1.39.0 — the key the server actually emits, and the one the client looks for:
shard keys: ['asyncReplicationStatus', 'class', 'compressed', 'loaded', 'name',
'numberOfReplicas', 'objectCount', 'replicationFactor',
'vectorIndexingStatus', 'vectorQueueLength']
vectorQueueLength = 0 <- present
vectorQueueLenght = None <- what the client asks for; not there
Because Gson leaves an unmatched field at its default, a shard with a queue of 42 deserializes to vectorQueueLenght() == 0. The value is only interesting while async indexing is catching up, which is exactly when it reads as zero.
Suggested fix
Rename the JSON key and the record component to vectorQueueLength.
No @SerializedName(alternate = …): unlike #607, nothing was ever validly stored or sent under the misspelling, so there is no old spelling to stay compatible with.
Also on this record, not fixed here
Two adjacent gaps in the same Shard, worth their own tickets if you agree they are bugs:
objectCount,numberOfReplicas,replicationFactorandvectorQueueLengthareint64on the server andinthere.- The server sends
asyncReplicationStatusandShardhas no component for it, althoughio/weaviate/client6/v1/api/cluster/AsyncReplicationStatus.javaexists and is currently unreferenced.
Version
- java-client 6.3.1 (present since
Shardwas introduced) - Weaviate 1.39.0
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Open io/weaviate/client6/v1/api/cluster/Shard.java and compare the record component and @SerializedName value with the server field described in the issue. Rename both to vectorQueueLength, check references to the record accessor, and verify that a response containing vectorQueueLength populates the component instead of leaving it at zero.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- api
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 84/100