Forked executor closes caller-supplied stdout and stderr streams
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 68/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- java
- Ambito
- build-system
Direzione di ricerca
Start in maven-executor/src/main/java/org/apache/maven/executor/support/ProcessBuilderExecutorSupport.java at lines 124 and 137, then compare stream handling in EmbeddedMavenExecutor.java at lines 293-294. Trace ExecutorRequest.Builder.stdOut() and stdErr() to confirm the ownership contract. Done means caller-supplied streams are flushed without being closed, shared stdout/stderr streams work, and the ownership behavior is documented.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Affected version
1.0.0
Bug description
ForkedMavenExecutor closes the OutputStream instances a caller passes through ExecutorRequest.Builder.stdOut() and stdErr(). Each pump thread wraps the stream in try-with-resources (ProcessBuilderExecutorSupport.java:124,137), so:
- A caller that hands the same stream to both
stdOut()andstdErr()to get one interleaved log, asmaven-verifierproduced, gets two threads racing to close it, and the secondtransferTocan fail with a closed stream. - A caller that passes
System.outor a stream it intends to keep using loses it after the first execution. EmbeddedMavenExecutorwraps the same streams inPrintStreaminstances (EmbeddedMavenExecutor.java:293-294) and does not close them, so the two executors treat ownership differently.
Found while porting maven-integration-testing and maven-surefire's IT fixtures from maven-verifier (apache/maven-verifier#186); both now wrap the log file in a stream with an idempotent close().
Proposal: the executor should not close streams it did not open. Flush them after the pump finishes and leave closing to the caller, and document that stdOut() and stdErr() may be the same stream. If closing has to stay for compatibility, document it in ExecutorRequest.Builder Javadoc.
- Lingua principale
- Java
- Stelle
- 5
- Fork
- 2
- Merge medio
- 4h 22m
- PR unite (30g)
- 2
Preparare l'ambiente
Non abbiamo ancora controllato i file di configurazione di questo progetto. Parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/maven-executor
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
apache/maven-executor#46 ·
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 68/100
apache/maven-executor#50 ·
-
enhancement priority:major
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
apache/maven-executor#49 ·
-
bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 78/100
apache/maven-executor#48 ·
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
apache/maven-executor#47 ·
Tutte le issue di apache/maven-executor
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
OpenAPITools/openapi-generator#25014 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
AloisSeckar/demos-java#380 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
openhab/openhab-core#5847 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
appsmithorg/appsmith#42297 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100