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]