Maxwell-Guo commented on code in PR #2894:
URL: https://github.com/apache/cassandra/pull/2894#discussion_r1403997063


##########
src/java/org/apache/cassandra/db/commitlog/AbstractCommitLogSegmentManager.java:
##########
@@ -107,18 +118,36 @@ public abstract class AbstractCommitLogSegmentManager
         this.storageDirectory = storageDirectory;
     }
 
-    void start()
+    private CommitLogSegment.Builder<?> 
createSegmentBuilder(CommitLog.Configuration config)
     {
-        // For encrypted segments we want to keep the compression buffers 
on-heap as we need those bytes for encryption,
-        // and we want to avoid copying from off-heap (compression buffer) to 
on-heap encryption APIs
-        BufferType bufferType = commitLog.configuration.useEncryption() || 
!commitLog.configuration.useCompression()
-                                ? BufferType.ON_HEAP
-                                : 
commitLog.configuration.getCompressor().preferredBufferType();
+        if (config.useEncryption())
+        {
+            assert config.diskAccessMode == DiskAccessMode.standard;
+            return new EncryptedSegment.EncryptedSegmentBuilder(this);
+        }
+        else if (config.useCompression())
+        {
+            assert config.diskAccessMode == DiskAccessMode.standard;
+            return new CompressedSegment.CompressedSegmentBuilder(this);
+        }
+        else if (config.diskAccessMode == DiskAccessMode.direct)
+        {
+            return new DirectIOSegment.DirectIOSegmentBuilder(this);
+        }
+        else if (config.diskAccessMode == DiskAccessMode.mmap)
+        {
+            return new MemoryMappedSegment.MemoryMappedSegmentBuilder(this);
+        }
 
-        this.bufferPool = new 
SimpleCachedBufferPool(DatabaseDescriptor.getCommitLogMaxCompressionBuffersInPool(),
-                                                     
DatabaseDescriptor.getCommitLogSegmentSize(),
-                                                     bufferType);
+        throw new AssertionError("Unsupported disk access mode");

Review Comment:
   what about change to : throw new AssertionError("Unsupported disk access 
mode " + config.diskAccessMode ); 



##########
src/java/org/apache/cassandra/config/DatabaseDescriptor.java:
##########
@@ -512,18 +515,22 @@ else if (conf.commitlog_sync_period.toMilliseconds() != 0)
         }
 
         /* evaluate the DiskAccessMode Config directive, which also affects 
indexAccessMode selection */
-        if (conf.disk_access_mode == Config.DiskAccessMode.auto)
+        if (conf.disk_access_mode == DiskAccessMode.auto || 
conf.disk_access_mode == DiskAccessMode.legacy)
         {
-            conf.disk_access_mode = hasLargeAddressSpace() ? 
Config.DiskAccessMode.mmap : Config.DiskAccessMode.standard;
+            conf.disk_access_mode = hasLargeAddressSpace() ? 
DiskAccessMode.mmap : DiskAccessMode.standard;
             indexAccessMode = conf.disk_access_mode;
             logger.info("DiskAccessMode 'auto' determined to be {}, 
indexAccessMode is {}", conf.disk_access_mode, indexAccessMode);
         }
-        else if (conf.disk_access_mode == 
Config.DiskAccessMode.mmap_index_only)
+        else if (conf.disk_access_mode == DiskAccessMode.mmap_index_only)
         {
-            conf.disk_access_mode = Config.DiskAccessMode.standard;
-            indexAccessMode = Config.DiskAccessMode.mmap;
+            conf.disk_access_mode = DiskAccessMode.standard;
+            indexAccessMode = DiskAccessMode.mmap;
             logger.info("DiskAccessMode is {}, indexAccessMode is {}", 
conf.disk_access_mode, indexAccessMode);
         }
+        else if (conf.disk_access_mode == DiskAccessMode.direct)
+        {
+            throw new ConfigurationException(String.format("DiskAccessMode 
'%s' is not supported", DiskAccessMode.direct));

Review Comment:
    what about : throw new ConfigurationException("DiskAccessMode direct is not 
supported. "));  ?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to