Sorry, ignore that - the code was synchronised in order to ensure safe
publication rather than preventing concurrect access.

On 10 June 2016 at 15:18, sebb <seb...@gmail.com> wrote:
> On 10 June 2016 at 14:01,  <bode...@apache.org> wrote:
>> Repository: commons-compress
>> Updated Branches:
>>   refs/heads/master 8769bb698 -> bdc5ad445
>>
>>
>> better set that flag earlier
>
> Surely if it matters when the flag is set, then it also matters that
> there is still a window between checking the flag and setting it?
>
> As it stands, if the finish method can be called from two threads then
> both can end up writing the trailer.
> Isn't that why the code was synch in the first place?
>
> Maybe try:
>
> AtomicBoolean closed = new AtomicBoolean(false);
>
> if (!closed.getAndSet(true)) {
> }
>
>>
>> Project: http://git-wip-us.apache.org/repos/asf/commons-compress/repo
>> Commit: 
>> http://git-wip-us.apache.org/repos/asf/commons-compress/commit/bdc5ad44
>> Tree: http://git-wip-us.apache.org/repos/asf/commons-compress/tree/bdc5ad44
>> Diff: http://git-wip-us.apache.org/repos/asf/commons-compress/diff/bdc5ad44
>>
>> Branch: refs/heads/master
>> Commit: bdc5ad445101133b7c92f4b2efbad1993913e160
>> Parents: 8769bb6
>> Author: Stefan Bodewig <bode...@apache.org>
>> Authored: Fri Jun 10 15:00:53 2016 +0200
>> Committer: Stefan Bodewig <bode...@apache.org>
>> Committed: Fri Jun 10 15:00:53 2016 +0200
>>
>> ----------------------------------------------------------------------
>>  .../compress/compressors/bzip2/BZip2CompressorOutputStream.java    | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>> ----------------------------------------------------------------------
>>
>>
>> http://git-wip-us.apache.org/repos/asf/commons-compress/blob/bdc5ad44/src/main/java/org/apache/commons/compress/compressors/bzip2/BZip2CompressorOutputStream.java
>> ----------------------------------------------------------------------
>> diff --git 
>> a/src/main/java/org/apache/commons/compress/compressors/bzip2/BZip2CompressorOutputStream.java
>>  
>> b/src/main/java/org/apache/commons/compress/compressors/bzip2/BZip2CompressorOutputStream.java
>> index 483d844..8cc6c39 100644
>> --- 
>> a/src/main/java/org/apache/commons/compress/compressors/bzip2/BZip2CompressorOutputStream.java
>> +++ 
>> b/src/main/java/org/apache/commons/compress/compressors/bzip2/BZip2CompressorOutputStream.java
>> @@ -479,6 +479,7 @@ public class BZip2CompressorOutputStream extends 
>> CompressorOutputStream
>>
>>      public void finish() throws IOException {
>>          if (!closed) {
>> +            closed = true;
>>              try {
>>                  if (this.runLength > 0) {
>>                      writeRun();
>> @@ -487,7 +488,6 @@ public class BZip2CompressorOutputStream extends 
>> CompressorOutputStream
>>                  endBlock();
>>                  endCompression();
>>              } finally {
>> -                closed = true;
>>                  this.out = null;
>>                  this.data = null;
>>                  this.blockSorter = null;
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to