Skip to content

replicationConfig.asyncEnabled is being removed in Weaviate v1.38 — drop client-side field #343

Description

@jeroiraz

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:

  1. 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!;
  2. 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;
  3. 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

  1. 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.
  2. Drop AsyncEnabled from the hand-written ReplicationConfig model at src/Weaviate.Client/Models/ReplicationConfig.cs:86.
  3. Drop the converter wiring in Extensions.cs at L166 and L402–405.
  4. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions