Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[Bug] Writing multiple sheets to CSV silently drops unflushed rows

Cerrado Apto para principiantes
#1,148 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@Aias00 ya está trabajando en esto.

Desde el 30/9/2026.

  • #1158 de @Aias00 — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
88/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
java
Área
backend

Línea de trabajo

Comience en CsvWorkbook#createSheet en las líneas 172-182 y 270-273; después, inspeccione CsvWorkbook#write y CsvSheet alrededor de las líneas 659-665. Reproduzca el problema mediante la API pública de ExcelWriter y añada una prueba de regresión. Se considera terminado cuando crear una segunda hoja CSV lógica provoca una excepción en tiempo de ejecución antes de que puedan perderse las filas almacenadas en búfer.

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

Descripción

Fesod version

Current main at 5a9a16b.

Description

Writing two distinct WriteSheet instances through one CSV ExcelWriter succeeds without an exception, but rows buffered by the earlier sheet are silently discarded.

Location
  • fesod-sheet/src/main/java/org/apache/fesod/sheet/metadata/csv/CsvWorkbook.java:172-182
  • fesod-sheet/src/main/java/org/apache/fesod/sheet/metadata/csv/CsvWorkbook.java:270-273
  • fesod-sheet/src/main/java/org/apache/fesod/sheet/metadata/csv/CsvSheet.java:659-665

CsvWorkbook#createSheet uses assert csvSheet == null to enforce the single-sheet CSV contract. Assertions are disabled in normal JVM runs, so a second sheet replaces the only csvSheet reference. CsvWorkbook#write then closes and flushes only the replacement sheet.

Reproduction
try (ExcelWriter writer = FesodSheet.write(file)
        .excelType(ExcelTypeEnum.CSV)
        .build()) {
    writer.write(Collections.singletonList(Collections.singletonList("first-row")),
            FesodSheet.writerSheet(0).build());
    writer.write(Collections.singletonList(Collections.singletonList("second-row")),
            FesodSheet.writerSheet(1).build());
}

The resulting CSV contains only second-row. With 101 rows in the first sheet, the first 100 rows are flushed, row 101 is lost, and the second sheet is appended. No exception is raised.

Expected behavior

CSV should reject creation of a second logical sheet with a normal runtime exception before any data can be lost.

Suggested fix

Replace the assert checks in both createSheet overloads with an explicit guard and add a regression test through the public writer API.

Related existing work

Issue #103 concerns parallel writing of multiple Excel sheets. It does not cover CSV silently discarding buffered rows.

Are you willing to submit a PR?

Yes.

Lenguaje dominante
Java
Estrellas
6.3k
Forks
545
Merge medio
2 d 22 h
PR fusionados (30 d)
41

Preparar el entorno

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/fesod

Todos los issues de apache/fesod

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.