Joseph Shraibman created CSV-318:
------------------------------------

             Summary: printRecord() hangs if fed a parallel stream
                 Key: CSV-318
                 URL: https://issues.apache.org/jira/browse/CSV-318
             Project: Commons CSV
          Issue Type: Bug
          Components: Printer
    Affects Versions: 1.14.0
         Environment: {color:#000000}openjdk version "21.0.6" 
2025-01-21{color}{color:#000000} {color}
{color:#000000}OpenJDK Runtime Environment (Red_Hat-21.0.6.0.7-1) (build 
21.0.6+7){color}{color:#000000} {color}
{color:#000000}OpenJDK 64-Bit Server VM (Red_Hat-21.0.6.0.7-1) (build 21.0.6+7, 
mixed mode, sharing){color}
{color:#000000} {color}
            Reporter: Joseph Shraibman


{code:java}
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import org.junit.jupiter.api.Test;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintWriter;

public class CommonsCsvTest {

   @Test
    void testWithParStream() throws IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try(CSVPrinter printer = new CSVPrinter(new PrintWriter(baos), 
CSVFormat.DEFAULT)){
            printer.printRecord(java.util.stream.Stream.of("col a", "col b", 
"col c").parallel());
        }
    }

    @Test
    void testWithSeqStream() throws IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try(CSVPrinter printer = new CSVPrinter(new PrintWriter(baos), 
CSVFormat.DEFAULT)){
            printer.printRecord(java.util.stream.Stream.of("col a", "col b", 
"col c"));
        }
    }


}
 {code}
A simple workaround is to call sequential() on any passed in Stream.

I don't know why this is happening.  At first I thought it must be a problem 
with the underlying Stream implementation but this code has no problem:

 
{code:java}
@Test
void testJavaStream(){
    java.util.stream.Stream.of("col a", "col b", "col c").parallel()
            .forEachOrdered(System.out::println);
}{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to