[C API] Stream load that accepts `svs_dynamic_index_params_t`

Offen
#427 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 5 Tagen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
45/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
c, cpp
Bereich
api

Rechercherichtung

Start with the _ex build functions added in #406, since the request is to follow the same parameter handling for svs_index_load_stream_dynamic. Find where svs_dynamic_index_params_t is validated and applied (sync kind, block size, version and struct_size), and check how the existing stream load path constructs the index. Done means a svs_index_load_stream_dynamic_ex declaration and implementation that honor SVS_SYNC_KIND_FINE_GRAIN and the block size, plus a test that loads a stream and confirms the sync kind on the restored index.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Summary

Please add a variant of svs_index_load_stream_dynamic that takes svs_dynamic_index_params_t, as the _ex build functions from #406 do, so a restored index can be created with SVS_SYNC_KIND_FINE_GRAIN and our block size.

Why

At 8285340 the stream load takes no parameters, so a restored index reports SVS_SYNC_KIND_NONE. valkey-search then serializes all writers on that index for the life of the process, because SVS doesn't guard it (src/indexes/vector_svs.cc:676-686 in eshenayo/valkey-search). That affects every restart, DEBUG RELOAD and replica full sync, so replicas never get concurrent writers. It also means we can't set the block size on load, so a loaded index can be laid out differently from a freshly built one.

Ask

SVS_API svs_index_h svs_index_load_stream_dynamic_ex(
    svs_index_builder_h builder,
    const svs_dynamic_index_params_t* params,
    /* existing stream reader arguments */
    svs_error_h out_err);

Same semantics as svs_index_build_dynamic_ex for the parameters: sync kind, block size, and any future fields covered by the struct's version / struct_size.

Vorherrschende Sprache
C++
Sterne
241
Forks
48
Ø Merge
4 T. 21 Std.
Gemergte PRs (30 T.)
11

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus intel/ScalableVectorSearch

Alle Issues in intel/ScalableVectorSearch

Ähnliche Issues

Weitere Issues zu C++

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.