Buffer voll in ESA-Testprogramm?

Wilson
Mausschubser
Mausschubser
Beiträge: 47
Registriert: 20. Sep 2011 15:24

Buffer voll in ESA-Testprogramm?

Beitrag von Wilson »

Hallo zusammen,

beim letzten Kolloquium (Gruppe 1) wurde uns mitgeteilt dass unsere Copy Propagation in manchen Fällen hängen bliebe und den Timeout überschreite. Beim Testen was so passiert wenn unsere Shell von anderen Programmen gestartet wird und der Output weitergeleitet bin ich durch Zufall in den gleichen Fehler gerannt. Und die Quelle war nicht in unserer Shell sondern im Testprogramm: Der InputStream vom Prozess war voll und somit konnte unsere Shell nichts mehr ausgeben und System.out.println blockierte bis der Timeout kam.

Also, falls das ESA-Testprogramm unsere Shell mittels eines java.lang.Process aufruft und mittels process.getInputStream() die Daten ausliest nachdem darauf gewartet wurde dass die Shell beendet wurde: Das reicht bei sehr viel Output nicht. Der Stream sollte in einem separaten Thread während die Shell läuft dauerhaft gelesen werden.

Viele Grüße,
Jakob Wenzel

P.S.: Wir haben die Ausgaben der CopyPropagation reduziert, jetzt sollte das eh nicht mehr passieren ;)

Julian Oppermann
Mausschubser
Mausschubser
Beiträge: 88
Registriert: 3. Mai 2013 19:32

Re: Buffer voll in ESA-Testprogramm?

Beitrag von Julian Oppermann »

Unsere Testumgebung ruft Ihre Compiler in einem Perl-Script auf, nach dem Schema

Code: Alles auswählen

open(SHELL, "| java -jar bantamc.jar > test.out 2> test.err");
und schreibt dann die Kommandos in das Filehandle SHELL.

Die Perl-Doku sagt, dass in dieser Situation (aufgrund der Umleitungen) eine (System-)Shell gestartet wird. Daher würde ich eher nicht erwarten, dass diese Umleitungen bei zuviel Output blockieren.

Wilson
Mausschubser
Mausschubser
Beiträge: 47
Registriert: 20. Sep 2011 15:24

Re: Buffer voll in ESA-Testprogramm?

Beitrag von Wilson »

Schade, dann lag das wohl an etwas anderem...

Antworten

Zurück zu „Archiv“