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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions