You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by bu...@apache.org on 2016/06/01 14:04:30 UTC

[Bug 58833] exec outputproperty is pseudo-randomly blanked

https://bz.apache.org/bugzilla/show_bug.cgi?id=58833

--- Comment #1 from Dan Fournier <dd...@comcast.net> ---
I believe this is the same issue as reported in Bug 58451.
The issue is that the PumpStreamHandler.java has a 200 MS value for
JOIN_TIMEOUT and that is not enough time to flush the I/O when a system is
busy. My proposed change would be to increase the JOIN_TIMEOUT from 200 to 5000
(maybe even larger) or make this a configurable property. Note that in the ant
1.9.7 PumpStreamHandler the code will do:

            t.join(JOIN_TIMEOUT);
            while ((s == null || !s.isFinished()) && t.isAlive()) {
                t.join(JOIN_TIMEOUT);
                   t.interrupt();

It is the t.interrupt() that causes the StreamPumper to "break" when it checks
Thread.interrupted() even when the inputStream (is.available()) is still
returning >0 characters.

If I run with the following build.xml (on linux), the output is always
truncated (each file should be the same - they are never the same):
<project name="LS" default="ls" basedir=".">
        <description>
        LS ant build file
        </description>

        <target name="ls">
                <parallel>
                <exec executable="ls" dir="${basedir}" failonerror="true"
logerror="true">
                        <redirector output="./ls.txt" error="ls.err"
alwayslog="true"/>
                        <arg value="-l"/>
                        <arg value="/usr/bin"/>
                </exec>
                <exec executable="ls" dir="${basedir}" failonerror="true"
logerror="true">
                        <redirector output="./ls2.txt" error="ls2.err"
alwayslog="true"/>
                        <arg value="-l"/>
                        <arg value="/usr/bin"/>
                </exec>
                <exec executable="ls" dir="${basedir}" failonerror="true"
logerror="true">
                        <redirector output="./ls3.txt" error="ls3.err"
alwayslog="true"/>
                        <arg value="-l"/>
                        <arg value="/usr/bin"/>
                </exec>
                <exec executable="ls" dir="${basedir}" failonerror="true"
logerror="true">
                        <redirector output="./ls4.txt" error="ls4.err"
alwayslog="true"/>
                        <arg value="-l"/>
                        <arg value="/usr/bin"/>
                </exec>
                <exec executable="ls" dir="${basedir}" failonerror="true"
logerror="true">
                        <redirector output="./ls5.txt" error="ls5.err"
alwayslog="true"/>
                        <arg value="-l"/>
                        <arg value="/usr/bin"/>
                </exec>
                <exec executable="ls" dir="${basedir}" failonerror="true"
logerror="true">
                        <redirector output="./ls6.txt" error="ls6.err"
alwayslog="true"/>
                        <arg value="-l"/>
                        <arg value="/usr/bin"/>
                </exec>
                <exec executable="ls" dir="${basedir}" failonerror="true"
logerror="true">
                        <redirector output="./ls7.txt" error="ls7.err"
alwayslog="true"/>
                        <arg value="-l"/>
                        <arg value="/usr/bin"/>
                </exec>
                <exec executable="ls" dir="${basedir}" failonerror="true"
logerror="true">
                        <redirector output="./ls8.txt" error="ls8.err"
alwayslog="true"/>
                        <arg value="-l"/>
                        <arg value="/usr/bin"/>
                </exec>
                <exec executable="ls" dir="${basedir}" failonerror="true"
logerror="true">
                        <redirector output="./ls9.txt" error="ls9.err"
alwayslog="true"/>
                        <arg value="-l"/>
                        <arg value="/usr/bin"/>
                </exec>
                <exec executable="ls" dir="${basedir}" failonerror="true"
logerror="true">
                        <redirector output="./ls10.txt" error="ls10.err"
alwayslog="true"/>
                        <arg value="-l"/>
                        <arg value="/usr/bin"/>
                </exec>
                <exec executable="ls" dir="${basedir}" failonerror="true"
logerror="true">
                        <redirector output="./ls12.txt" error="ls12.err"
alwayslog="true"/>
                        <arg value="-l"/>
                        <arg value="/usr/bin"/>
                </exec>
                <exec executable="ls" dir="${basedir}" failonerror="true"
logerror="true">
                        <redirector output="./ls13.txt" error="ls13.err"
alwayslog="true"/>
                        <arg value="-l"/>
                        <arg value="/usr/bin"/>
                </exec>
                <exec executable="ls" dir="${basedir}" failonerror="true"
logerror="true">
                        <redirector output="./ls14.txt" error="ls14.err"
alwayslog="true"/>
                        <arg value="-l"/>
                        <arg value="/usr/bin"/>
                </exec>
                <exec executable="ls" dir="${basedir}" failonerror="true"
logerror="true">
                        <redirector output="./ls15.txt" error="ls15.err"
alwayslog="true"/>
                        <arg value="-l"/>
                        <arg value="/usr/bin"/>
                </exec>
                <exec executable="ls" dir="${basedir}" failonerror="true"
logerror="true">
                        <redirector output="./ls16.txt" error="ls16.err"
alwayslog="true"/>
                        <arg value="-l"/>
                        <arg value="/usr/bin"/>
                </exec>
                </parallel>
        </target>
</project>

-- 
You are receiving this mail because:
You are the assignee for the bug.