[C API] Versioned, documented compatibility for the save/load stream format

Ouverte
#426 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 5 jours

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
18/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
Active
Stack technique
c, cpp
Domaine
api, backend

Piste de recherche

Start with svs_get_version() in bindings/c/src/svs_c.cpp (line 69) and the save_version field in dynamic_index.h, which is currently 0.0.0. Trace svs_index_save_stream and svs_index_load_stream_dynamic to see where a format version would go in the stream header. Done means a format version is written and readable without loading the index, and a mismatched stream returns an error rather than crashing. The compatibility contract also needs a decision from maintainers before code work starts.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Summary

Please version the byte stream produced by svs_index_save_stream and consumed by svs_index_load_stream_dynamic, independently of the C API version, and document which versions a given release can load.

Why

valkey-search embeds the SVS stream in its RDB files. Users upgrade the module (and so SVS) in place, and replicas can briefly run a different build from the primary. Today the only version available to us is svs_get_version(), the C API version (bindings/c/src/svs_c.cpp:69); the serialized save_version in dynamic_index.h is 0.0.0. So we can't tell "same format, newer library" from "incompatible format", and have to either reject every RDB after any SVS bump or risk loading an incompatible stream.

Ask

  1. A format version in the stream header, and a C API call to read it from a stream without loading the index, or to report it from a handle.
  2. A compatibility contract: a release can load streams written by earlier releases within the same major format version, and fails cleanly (an error, not a crash) on a stream it can't load.
  3. Release notes that call out format version changes.

Consumer context

valkey-search (ALGORITHM SVS_VAMANA), C API submodule pinned at 8285340. Today vector_svs.cc rejects any svs_get_version() mismatch on load. With a format version we can accept compatible streams and rebuild from the keyspace otherwise.

Langage dominant
C++
Étoiles
241
Forks
48
Merge moyen
4 j 21 h
PR mergées (30 j)
11

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de intel/ScalableVectorSearch

Toutes les issues de intel/ScalableVectorSearch

Issues similaires

Plus d'issues C++

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.