[
https://issues.apache.org/jira/browse/ACCUMULO-4153?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15166316#comment-15166316
]
ASF GitHub Bot commented on ACCUMULO-4153:
------------------------------------------
Github user keith-turner commented on a diff in the pull request:
https://github.com/apache/accumulo/pull/73#discussion_r54025034
--- 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 --
> Seems like return resultCodec at the end would be more straightforward,
no?
Would be nice to avoid two reads of codec.
> 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)