felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Derek Baum (JIRA)" <j...@apache.org>
Subject [jira] Created: (FELIX-2380) [gogo] lock contention in piped writer when reader doesn't read all input
Date Tue, 01 Jun 2010 14:50:41 GMT
[gogo] lock contention in piped writer when reader doesn't read all input
-------------------------------------------------------------------------

                 Key: FELIX-2380
                 URL: https://issues.apache.org/jira/browse/FELIX-2380
             Project: Felix
          Issue Type: Bug
          Components: Gogo
            Reporter: Derek Baum
            Assignee: Derek Baum
            Priority: Minor


The following completes almost immediately:

g! cat conf/config.properties | grep Apache
# Licensed to the Apache Software Foundation (ASF) under one
# to you under the Apache License, Version 2.0 (the
true

but adding the --quiet flag to grep makes it take 1000mS longer:

g! cat conf/config.properties | grep --quiet Apache 
true

This is because grep stops reading its input as soon as it has seen the first match when --quiet
is given.
The same delay also occurs if you pipe into a command that doesn't read its input:

g! cat conf/config.properties | echo

The contention occurs because the writer (cat) is blocked  on wait(1024) in PipedInputStream
when the 1024 byte buffer is full. It is only unblocked when the reader (grep) reads more
input. It is NOT unblocked when the reader closes the piped input.







-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message