This is an automated email from the ASF dual-hosted git repository.

roryqi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-uniffle.git


The following commit(s) were added to refs/heads/master by this push:
     new c58110ff [Improvement] Make codec to be a singleton. (#840)
c58110ff is described below

commit c58110ff91768a7acccf228ee98607a4ad2d4a0a
Author: tobehardest <[email protected]>
AuthorDate: Tue Apr 25 17:48:06 2023 +0800

    [Improvement] Make codec to be a singleton. (#840)
    
    ### What changes were proposed in this pull request?
    Codec will be created for many times. We should make codec to be a 
singleton.  I make codec to be a singleton.
    
    ### Why are the changes needed?
    Fix: #389
    
    ### Does this PR introduce _any_ user-facing change?
    No.
    
    ### How was this patch tested?
      UT
    
    Co-authored-by: tobehardest <[email protected]>
---
 .../java/org/apache/uniffle/common/compression/Codec.java     |  8 ++++----
 .../java/org/apache/uniffle/common/compression/Lz4Codec.java  |  8 ++++++++
 .../java/org/apache/uniffle/common/compression/NoOpCodec.java |  8 ++++++++
 .../org/apache/uniffle/common/compression/SnappyCodec.java    |  9 +++++++++
 .../java/org/apache/uniffle/common/compression/ZstdCodec.java | 11 ++++++++---
 5 files changed, 37 insertions(+), 7 deletions(-)

diff --git 
a/common/src/main/java/org/apache/uniffle/common/compression/Codec.java 
b/common/src/main/java/org/apache/uniffle/common/compression/Codec.java
index 511cdd09..ac45a325 100644
--- a/common/src/main/java/org/apache/uniffle/common/compression/Codec.java
+++ b/common/src/main/java/org/apache/uniffle/common/compression/Codec.java
@@ -30,14 +30,14 @@ public abstract class Codec {
     Type type = rssConf.get(COMPRESSION_TYPE);
     switch (type) {
       case ZSTD:
-        return new ZstdCodec(rssConf.get(ZSTD_COMPRESSION_LEVEL));
+        return ZstdCodec.getInstance(rssConf.get(ZSTD_COMPRESSION_LEVEL));
       case SNAPPY:
-        return new SnappyCodec();
+        return SnappyCodec.getInstance();
       case NOOP:
-        return new NoOpCodec();
+        return NoOpCodec.getInstance();
       case LZ4:
       default:
-        return new Lz4Codec();
+        return Lz4Codec.getInstance();
     }
   }
 
diff --git 
a/common/src/main/java/org/apache/uniffle/common/compression/Lz4Codec.java 
b/common/src/main/java/org/apache/uniffle/common/compression/Lz4Codec.java
index d1fccb37..0f604bae 100644
--- a/common/src/main/java/org/apache/uniffle/common/compression/Lz4Codec.java
+++ b/common/src/main/java/org/apache/uniffle/common/compression/Lz4Codec.java
@@ -27,6 +27,14 @@ public class Lz4Codec extends Codec {
 
   private LZ4Factory lz4Factory;
 
+  private static class LazyHolder {
+    static final Lz4Codec INSTANCE = new Lz4Codec();
+  }
+
+  public static Lz4Codec getInstance() {
+    return LazyHolder.INSTANCE;
+  }
+
   public Lz4Codec() {
     this.lz4Factory = LZ4Factory.fastestInstance();
   }
diff --git 
a/common/src/main/java/org/apache/uniffle/common/compression/NoOpCodec.java 
b/common/src/main/java/org/apache/uniffle/common/compression/NoOpCodec.java
index 40f508b8..4cd111a3 100644
--- a/common/src/main/java/org/apache/uniffle/common/compression/NoOpCodec.java
+++ b/common/src/main/java/org/apache/uniffle/common/compression/NoOpCodec.java
@@ -21,6 +21,14 @@ import java.nio.ByteBuffer;
 
 public class NoOpCodec extends Codec {
 
+  private static class LazyHolder {
+    static final NoOpCodec INSTANCE = new NoOpCodec();
+  }
+
+  public static NoOpCodec getInstance() {
+    return LazyHolder.INSTANCE;
+  }
+
   @Override
   public void decompress(ByteBuffer src, int uncompressedLen, ByteBuffer dest, 
int destOffset) {
     dest.put(src);
diff --git 
a/common/src/main/java/org/apache/uniffle/common/compression/SnappyCodec.java 
b/common/src/main/java/org/apache/uniffle/common/compression/SnappyCodec.java
index 0e9a57c2..8474a824 100644
--- 
a/common/src/main/java/org/apache/uniffle/common/compression/SnappyCodec.java
+++ 
b/common/src/main/java/org/apache/uniffle/common/compression/SnappyCodec.java
@@ -25,6 +25,15 @@ import org.xerial.snappy.Snappy;
 import org.apache.uniffle.common.exception.RssException;
 
 public class SnappyCodec extends Codec {
+
+  private static class LazyHolder {
+    static final SnappyCodec INSTANCE = new SnappyCodec();
+  }
+
+  public static SnappyCodec getInstance() {
+    return LazyHolder.INSTANCE;
+  }
+
   @Override
   public void decompress(ByteBuffer src, int uncompressedLen, ByteBuffer dest, 
int destOffset) {
     try {
diff --git 
a/common/src/main/java/org/apache/uniffle/common/compression/ZstdCodec.java 
b/common/src/main/java/org/apache/uniffle/common/compression/ZstdCodec.java
index 0f507e16..34987ecd 100644
--- a/common/src/main/java/org/apache/uniffle/common/compression/ZstdCodec.java
+++ b/common/src/main/java/org/apache/uniffle/common/compression/ZstdCodec.java
@@ -28,10 +28,15 @@ import org.apache.uniffle.common.exception.RssException;
 public class ZstdCodec extends Codec {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(ZstdCodec.class);
 
-  private final int compressionLevel;
+  private int compressionLevel;
 
-  public ZstdCodec(int level) {
-    this.compressionLevel = level;
+  private static class LazyHolder {
+    static final ZstdCodec INSTANCE = new ZstdCodec();
+  }
+
+  public static ZstdCodec getInstance(int level) {
+    LazyHolder.INSTANCE.compressionLevel = level;
+    return LazyHolder.INSTANCE;
   }
 
   @Override

Reply via email to