[ 
https://issues.apache.org/jira/browse/CASSANDRA-13692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16150351#comment-16150351
 ] 

Dimitar Dimitrov commented on CASSANDRA-13692:
----------------------------------------------

Ah, sorry, I should have at least attached the failure logs - I didn't attach 
the build artifacts, as I wasn't sure if they were sanitized with regard to 
non-public data.
I'll sync with a more knowledgeable colleague, and get back to you with the 
necessary info.

P.S. Like you've probably noticed, I'm still new to one of the more visible 
presences here, and many of the steps in the process are a bit hazy to me - 
I'll make sure to improve quickly on that though :)

> CompactionAwareWriter_getWriteDirectory throws incompatible exceptions
> ----------------------------------------------------------------------
>
>                 Key: CASSANDRA-13692
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-13692
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Compaction
>            Reporter: Hao Zhong
>            Assignee: Dimitar Dimitrov
>              Labels: lhf
>         Attachments: c13692-2.2-dtest-results.PNG, 
> c13692-2.2-testall-results.PNG, c13692-3.0-dtest-results.PNG, 
> c13692-3.0-testall-results.PNG, c13692-3.11-dtest-results.PNG, 
> c13692-3.11-testall-results.PNG, c13692-dtest-results.PNG, 
> c13692-testall-results.PNG
>
>
> The CompactionAwareWriter_getWriteDirectory throws RuntimeException:
> {code}
> public Directories.DataDirectory getWriteDirectory(Iterable<SSTableReader> 
> sstables, long estimatedWriteSize)
>     {
>         File directory = null;
>         for (SSTableReader sstable : sstables)
>         {
>             if (directory == null)
>                 directory = sstable.descriptor.directory;
>             if (!directory.equals(sstable.descriptor.directory))
>             {
>                 logger.trace("All sstables not from the same disk - putting 
> results in {}", directory);
>                 break;
>             }
>         }
>         Directories.DataDirectory d = 
> getDirectories().getDataDirectoryForFile(directory);
>         if (d != null)
>         {
>             long availableSpace = d.getAvailableSpace();
>             if (availableSpace < estimatedWriteSize)
>                 throw new RuntimeException(String.format("Not enough space to 
> write %s to %s (%s available)",
>                                                          
> FBUtilities.prettyPrintMemory(estimatedWriteSize),
>                                                          d.location,
>                                                          
> FBUtilities.prettyPrintMemory(availableSpace)));
>             logger.trace("putting compaction results in {}", directory);
>             return d;
>         }
>         d = getDirectories().getWriteableLocation(estimatedWriteSize);
>         if (d == null)
>             throw new RuntimeException(String.format("Not enough disk space 
> to store %s",
>                                                      
> FBUtilities.prettyPrintMemory(estimatedWriteSize)));
>         return d;
>     }
> {code}
> However, the thrown exception does not  trigger the failure policy. 
> CASSANDRA-11448 fixed a similar problem. The buggy code is:
> {code}
> protected Directories.DataDirectory getWriteDirectory(long writeSize)
>     {
>         Directories.DataDirectory directory = 
> getDirectories().getWriteableLocation(writeSize);
>         if (directory == null)
>             throw new RuntimeException("Insufficient disk space to write " + 
> writeSize + " bytes");
>         return directory;
>     }
> {code}
> The fixed code is:
> {code}
> protected Directories.DataDirectory getWriteDirectory(long writeSize)
>     {
>         Directories.DataDirectory directory = 
> getDirectories().getWriteableLocation(writeSize);
>         if (directory == null)
>             throw new FSWriteError(new IOException("Insufficient disk space 
> to write " + writeSize + " bytes"), "");
>         return directory;
>     }
> {code}
> The fixed code throws FSWE and triggers the failure policy.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to