Background
Weaviate is removing the replicationConfig.asyncEnabled field from collection schemas. This is the server-side commit weaviate/weaviate@cef789345e (part of weaviate/weaviate#11214). After it ships, the field will:
- be silently dropped when present in
POST /v1/schema request bodies (Go's encoding/json ignores unknown fields)
- not appear in
GET /v1/schema response bodies
The post-removal behaviour is governed by the existing global ASYNC_REPLICATION_DISABLED runtime override: for any class with factor > 1, async replication runs by default unless that flag is set.
Impact on weaviate/csharp-client
Technically safe — no crash. Three relevant code locations:
-
Generated DTO (auto-generated from the bundled OpenAPI spec): https://github.com/weaviate/csharp-client/blob/main/src/Weaviate.Client/Rest/Dto/Models.g.cs#L917-L919
[System.Text.Json.Serialization.JsonPropertyName("asyncEnabled")]
public bool? AsyncEnabled { get; set; } = default!;
-
User-facing model (hand-written): https://github.com/weaviate/csharp-client/blob/main/src/Weaviate.Client/Models/ReplicationConfig.cs#L86
public bool AsyncEnabled { get; set; } = false;
-
Converters (src/Weaviate.Client/Extensions.cs):
- Read (L402–405):
AsyncEnabled = rc.AsyncEnabled ?? Weaviate.Client.Models.ReplicationConfig.Default.AsyncEnabled — defaults to false when the DTO is null.
- Write (L166):
AsyncEnabled = rc.AsyncEnabled — still sends the field; server silently drops it.
But the value the client reports back is misleading. Every ReplicationConfig.AsyncEnabled returned from a fetched collection config will be false, even when the server is actually running async replication (the new default for any class with Factor > 1).
Recommended change
- Re-vendor
src/Weaviate.Client/Rest/Schema/openapi.json from the post-removal Weaviate spec; regenerate Models.g.cs. The DTO field will disappear automatically.
- Drop
AsyncEnabled from the hand-written ReplicationConfig model at src/Weaviate.Client/Models/ReplicationConfig.cs:86.
- Drop the converter wiring in
Extensions.cs at L166 and L402–405.
- Optional: add a
[Obsolete] shim on the model property for one release if you want to give users a softer landing.
The server change is backward compatible at the wire level (existing collections with asyncEnabled persisted in their schemas are still read fine — the field is dropped, not validated). So clients that don't ship the change still work; they just report a misleading false.
Target server version
Weaviate v1.38 (the release that includes #11214).
cc @weaviate/csharp-client-maintainers
Background
Weaviate is removing the
replicationConfig.asyncEnabledfield from collection schemas. This is the server-side commit weaviate/weaviate@cef789345e (part of weaviate/weaviate#11214). After it ships, the field will:POST /v1/schemarequest bodies (Go'sencoding/jsonignores unknown fields)GET /v1/schemaresponse bodiesThe post-removal behaviour is governed by the existing global
ASYNC_REPLICATION_DISABLEDruntime override: for any class withfactor > 1, async replication runs by default unless that flag is set.Impact on
weaviate/csharp-clientTechnically safe — no crash. Three relevant code locations:
Generated DTO (auto-generated from the bundled OpenAPI spec): https://github.com/weaviate/csharp-client/blob/main/src/Weaviate.Client/Rest/Dto/Models.g.cs#L917-L919
User-facing model (hand-written): https://github.com/weaviate/csharp-client/blob/main/src/Weaviate.Client/Models/ReplicationConfig.cs#L86
Converters (
src/Weaviate.Client/Extensions.cs):AsyncEnabled = rc.AsyncEnabled ?? Weaviate.Client.Models.ReplicationConfig.Default.AsyncEnabled— defaults tofalsewhen the DTO is null.AsyncEnabled = rc.AsyncEnabled— still sends the field; server silently drops it.But the value the client reports back is misleading. Every
ReplicationConfig.AsyncEnabledreturned from a fetched collection config will befalse, even when the server is actually running async replication (the new default for any class withFactor > 1).Recommended change
src/Weaviate.Client/Rest/Schema/openapi.jsonfrom the post-removal Weaviate spec; regenerateModels.g.cs. The DTO field will disappear automatically.AsyncEnabledfrom the hand-writtenReplicationConfigmodel atsrc/Weaviate.Client/Models/ReplicationConfig.cs:86.Extensions.csat L166 and L402–405.[Obsolete]shim on the model property for one release if you want to give users a softer landing.The server change is backward compatible at the wire level (existing collections with
asyncEnabledpersisted in their schemas are still read fine — the field is dropped, not validated). So clients that don't ship the change still work; they just report a misleadingfalse.Target server version
Weaviate v1.38 (the release that includes #11214).
cc @weaviate/csharp-client-maintainers