cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kaide Mu (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-11875) Create sstableconvert tool with support to ma format
Date Fri, 03 Jun 2016 00:04:59 GMT

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

Kaide Mu commented on CASSANDRA-11875:
--------------------------------------

Hello Paulo, new [patch|https://github.com/apache/cassandra/compare/trunk...kdmu:trunk-11875?expand=1]
available. Changed isCompatibleForWriting(String version) -> isCompatibleForWriting() since
we are dealing directly with versions so it would be redundant to pass it.

bq.We should probably add a Descriptor.isCompatibleForWriting so we can check that directly
from the descriptor, and use that to throw an exception on SSTableConverter if the version
is incompatible

Added Descriptor.isCompatibleWriting(), but in case of {{SSTableConverter}} we don't have
specified version {{Descriptor}} so we have to check it from {{Version}} {{DatabaseDescriptor.getSSTableFormat().info.getVersion(options.version).isCompatibleForWriting()}},
or maybe there's some way to obtain it? 

bq.The idea of your WIP is correct, but instead of calling the main method of StandaloneUpgrader
you could create a common method that receives an Options object, which in the case of the
upgrader it would have a special flag indicating upgrade to latest version. The argument parsing
and Options creation could be removed from the Options object to the main class so it's different
between the converter and the upgrader. You can do different printing based on the options
flag.

I modified Options access level to protected and parseArgs now varies on boolean isLatestVersion,
so now {{StandaloneUpgrader}} only contains the execution code which is identical than {{StandaloneConverter}},
do you think we should abstract it into a common method SSTableConverter.execute(Option options)?

Thanks.

> Create sstableconvert tool with support to ma format
> ----------------------------------------------------
>
>                 Key: CASSANDRA-11875
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-11875
>             Project: Cassandra
>          Issue Type: Sub-task
>          Components: Tools
>            Reporter: Paulo Motta
>            Assignee: Kaide Mu
>            Priority: Minor
>         Attachments: trunk-11875-WIP-V1.patch
>
>
> Currently {{Upgrader}} receives an sstable in any readable format, and writes into {{BigFormat.getLatestVersion()}}.
We should generalize it by making it receive a {{target}} version and probably also rename
it to {{SSTableConverter}}. 
> Based on this we can create an {{StandaloneDowngrader}} tool which will perform downgrade
of specified sstables to a target version. To start with, we should support only downgrading
to {{ma}} format (from current format {{mb}}), downgrade to any other version should be forbidden.
Since we already support serializing to "ma" we will not need to do any data conversion.
> We should also create a test suite that creates an sstable with data in the current format,
perform the downgrade, and verify data in the new format is correct. This will be the base
tests suite for more advanced conversions in the future.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message