cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dimitar Dimitrov (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-13692) CompactionAwareWriter_getWriteDirectory throws incompatible exceptions
Date Fri, 01 Sep 2017 10:42:02 GMT

    [ 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-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


Mime
View raw message