[Server] Add the server-side primary-key table bulk-load protocol

Abierto
#4,224 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 2 días

@Anurag15v ya está trabajando en esto.

Desde el 4/10/2026.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
30/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
java

Línea de trabajo

Comienza localizando la interfaz RPC interna de Coordinator y las rutas existentes de transacciones y recuperación. Rastrea el target fencing, la validación del manifiesto, la restauración de réplicas, la reconciliación tras failover y reinicio, y el manejo de commits duraderos; se considera terminado cuando las operaciones de ciclo de vida indicadas funcionan para tablas o particiones sin exponer resultados parciales.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Search before asking
  • I searched in the issues and found nothing similar.
Description

Add a complete server-side transaction protocol for atomically loading an empty
primary-key table or partition from externally built KV snapshots.

The server must own the transaction lifecycle, prevent access while the target
is being loaded, validate the submitted manifest, install every bucket, and
publish the target only after the complete result is ready.

The protocol should be usable through the internal Coordinator RPC interface.
A high-level client SDK is tracked separately.

Scope
  • Add Begin, GetInProgress, Commit, and Abort RPCs.
  • Support both a complete primary-key table and one physical partition as the
    transaction target.
  • Reject non-primary-key and non-empty targets.
  • Freeze the target identity, schema, bucket count, remote data directory, and
    snapshot IDs when beginning a transaction.
  • Fence the target and prevent ordinary access until it becomes active again.
  • Allow only one active bulk-load transaction for a target.
  • Validate the manifest and require complete coverage of every target bucket.
  • Persist the Commit decision before publishing the imported snapshots.
  • Restore the imported snapshots on the assigned replicas.
  • Publish the complete target atomically after all required replicas are ready.
  • Abort transactions that have not crossed the durable Commit decision.
  • Resume transactions after Coordinator failover.
  • Reconcile TabletServer restart, leader change, and assignment change during
    protocol execution.
  • Retain terminal results for recovery and remove expired transaction metadata.
  • Protect active bulk-load files from orphan cleanup.
  • Reject unsupported rolling-upgrade combinations through server capability
    checks.
Willingness to contribute
  • I'm willing to submit a PR!
Lenguaje dominante
Java
Estrellas
2.2k
Forks
663
Merge medio
2 d 21 h
PR fusionados (30 d)
118

Preparar el entorno

  • Sin Dockerfile ni archivo de Docker Compose
  • Tiene una plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de apache/fluss

Todos los issues de apache/fluss

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.