Maxwell Guo created CASSANDRA-19812:
---------------------------------------

             Summary: We should throw exception when commitlog 's 
DiskAccessMode is direct but direct io is not support
                 Key: CASSANDRA-19812
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-19812
             Project: Cassandra
          Issue Type: Improvement
            Reporter: Maxwell Guo


Looking into the code below : 
{code:java}
private static DiskAccessMode 
resolveCommitLogWriteDiskAccessMode(DiskAccessMode providedDiskAccessMode)
    {
        boolean compressOrEncrypt = getCommitLogCompression() != null || 
(getEncryptionContext() != null && getEncryptionContext().isEnabled());
        boolean directIOSupported = false;
        try
        {
            directIOSupported = FileUtils.getBlockSize(new 
File(getCommitLogLocation())) > 0;
        }
        catch (RuntimeException e)
        {
            logger.warn("Unable to determine block size for commit log 
directory: {}", e.getMessage());
        }

        if (providedDiskAccessMode == DiskAccessMode.auto)
        {
            if (compressOrEncrypt)
                providedDiskAccessMode = DiskAccessMode.legacy;
            else
            {
                providedDiskAccessMode = directIOSupported && 
conf.disk_optimization_strategy == Config.DiskOptimizationStrategy.ssd ? 
DiskAccessMode.direct
                                                                                
                                                     : DiskAccessMode.legacy;
            }
        }

        if (providedDiskAccessMode == DiskAccessMode.legacy)
        {
            providedDiskAccessMode = compressOrEncrypt ? 
DiskAccessMode.standard : DiskAccessMode.mmap;
        }

        return providedDiskAccessMode;
    }
{code}

We should throw exception when user set the DiskAccessMode to direct for 
commitlog but the directIOSupported return false after the judgement of 
"FileUtils.getBlockSize(new File(getCommitLogLocation())) > 0;" instead of 
waiting for the system to start and accepting reads and writes.




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to