[ 
https://issues.apache.org/jira/browse/ACCUMULO-4153?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15163812#comment-15163812
 ] 

ASF GitHub Bot commented on ACCUMULO-4153:
------------------------------------------

Github user phrocker commented on a diff in the pull request:

    https://github.com/apache/accumulo/pull/73#discussion_r54006645
  
    --- Diff: 
core/src/main/java/org/apache/accumulo/core/file/rfile/bcfile/Compression.java 
---
    @@ -147,25 +148,27 @@ public synchronized OutputStream 
createCompressionStream(OutputStream downStream
         },
     
         GZ(COMPRESSION_GZ) {
    -      private transient DefaultCodec codec;
    +      private transient AtomicReference<DefaultCodec> codec = new 
AtomicReference<DefaultCodec>();
     
           @Override
    -      synchronized CompressionCodec getCodec() {
    -        if (codec == null) {
    -          codec = new DefaultCodec();
    -          codec.setConf(conf);
    +      CompressionCodec getCodec() {
    +        DefaultCodec resultCodec = codec.get();
    +        if (null == resultCodec) {
    +          DefaultCodec newCodec = new DefaultCodec();
    +          newCodec.setConf(conf);
    +          codec.compareAndSet(null, newCodec);
             }
     
    -        return codec;
    +        return codec.get();
    --- End diff --
    
    whether or not resultCodec is null, I'm returning the reference as the code 
requires someone to have set it based on the simple logic. Could get rid of 
resultCodec if there is heartburn about not using it above. 


> Change getCodec method in BCFile's Compression class
> ----------------------------------------------------
>
>                 Key: ACCUMULO-4153
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-4153
>             Project: Accumulo
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 1.6.5
>            Reporter: marco polo
>            Assignee: marco polo
>            Priority: Minor
>             Fix For: 1.6.6, 1.7.2, 1.8.0
>
>         Attachments: patchCompression
>
>
> Seeing major blockages blockages on the Synchronized method of getCodec.  My 
> initial change was to change it to double checked locking; however, spoke 
> with [~kturner] and I'm changing this to an AtomicReference. Have a patch for 
> the former but am in the process of testing the AtomicReference patch
> Note this is for Gzip



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to