You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Chris Goffinet (JIRA)" <ji...@apache.org> on 2009/08/21 00:44:14 UTC

[jira] Created: (CASSANDRA-389) SSTable Versioning

SSTable Versioning
------------------

                 Key: CASSANDRA-389
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
             Project: Cassandra
          Issue Type: Improvement
    Affects Versions: 0.4
            Reporter: Chris Goffinet
            Priority: Minor


As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:

<CF>-<ID>-<DATA|INDEX|FILTER>-<VERSION>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment:     (was: 389-v5-5-special-case-to-preserve-legacy.diff)

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 389-v3.patch, 389-v5-6-merge-artifacts.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan Ellis updated CASSANDRA-389:
-------------------------------------

    Attachment: 389-v3.patch

here is a version with spaces, bracing, and redundant this cleaned up.

but I renamed a set of sstable files in data/ to the "wrong" version and it did not catch this at startup.

(does it still ignore tmp files at startup?)

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>    Affects Versions: 0.4
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.4
>
>         Attachments: 389-v3.patch, CASSANDRA-389.diff, CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Gary Dusbabek (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12835990#action_12835990 ] 

Gary Dusbabek commented on CASSANDRA-389:
-----------------------------------------

Deleted +1 because I found something that needs to be looked into.

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 0001-Rebase-389-v4-for-trunk.patch, 0002-Add-keyspace-name-to-SSTable.Descriptor.patch, 0003-Use-SSTable.Descriptor-for-Streaming.patch, 0004-Validate-params.patch, 0005-The-special-casing-begins.patch, 0006-Merge-oopses.patch, 0007-Don-t-serialize-Descriptors-as-filenames.patch, 389-v3.patch
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12833965#action_12833965 ] 

Stu Hood commented on CASSANDRA-389:
------------------------------------

Reminder: don't use File.toString() for serialization.

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 389-v3.patch, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-6-merge-artifacts.diff, 389-v5-6-merge-artifacts.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12798925#action_12798925 ] 

Jonathan Ellis commented on CASSANDRA-389:
------------------------------------------

there is also an implementation of data format versioning in CASSANDRA-521 now

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.9
>
>         Attachments: 389-v3.patch, 389-v4.patch, CASSANDRA-389.diff, CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment: 389-v5-4-validate-parameters-for-descriptor.diff

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.9
>
>         Attachments: 389-v3.patch, 389-v4.patch, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-4-validate-parameters-for-descriptor.diff, CASSANDRA-389.diff, CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan Ellis updated CASSANDRA-389:
-------------------------------------

          Component/s: Core
    Affects Version/s:     (was: 0.4)
        Fix Version/s:     (was: 0.4)

okay.  let's table this until we actually need to break SSTable format again for whatever reason.

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>         Attachments: 389-v3.patch, 389-v4.patch, CASSANDRA-389.diff, CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12748518#action_12748518 ] 

Jonathan Ellis commented on CASSANDRA-389:
------------------------------------------

not much point in having a version code if we don't validate it.  this needs to start now, not in the future, since even if we did try to preserve indefinite backwards compatibility, there is no way to make 0.4 forwards-compatibile.

(for the record, both of those options are bad.  we'll probably write conversion utilities for contrib/ to migrate from version N-1 to version N.  anything else is insane -- we have enough trouble debugging a single binary format!)


> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>    Affects Versions: 0.4
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.4
>
>         Attachments: 389-v3.patch, CASSANDRA-389.diff, CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment:     (was: 389-v5-3-use-descriptor-for-streaming.diff)

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 389-v3.patch, 389-v5-6-merge-artifacts.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan Ellis updated CASSANDRA-389:
-------------------------------------

        Fix Version/s:     (was: 0.6)
                       0.7
    Affects Version/s:     (was: 0.7)

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 389-v3.patch, 389-v4.patch, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-5-special-case-to-preserve-legacy.diff, CASSANDRA-389.diff, CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Fix Version/s: 0.4
         Assignee: Stu Hood

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>    Affects Versions: 0.4
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.4
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<DATA|INDEX|FILTER>-<VERSION>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan Ellis updated CASSANDRA-389:
-------------------------------------

    Affects Version/s: 0.7

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 0.7
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.6
>
>         Attachments: 389-v3.patch, 389-v4.patch, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-5-special-case-to-preserve-legacy.diff, CASSANDRA-389.diff, CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment: 389-v5-6-merge-artifacts.diff
                389-v5-5-special-case-to-preserve-legacy.diff
                389-v5-4-validate-parameters-for-descriptor.diff

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 389-v3.patch, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-6-merge-artifacts.diff, 389-v5-6-merge-artifacts.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12835591#action_12835591 ] 

Stu Hood commented on CASSANDRA-389:
------------------------------------

Regarding 0008: perhaps rather than having the magical streaming directory, we should just leave files that are being streamed in 'temporary' status, and kill the subdirectory?

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 0001-Rebase-389-v4-for-trunk.patch, 0002-Add-keyspace-name-to-SSTable.Descriptor.patch, 0003-Use-SSTable.Descriptor-for-Streaming.patch, 0004-Validate-params.patch, 0005-The-special-casing-begins.patch, 0006-Merge-oopses.patch, 0007-Don-t-serialize-Descriptors-as-filenames.patch, 0008-adjust-Descriptor-for-stream-paths.patch, 389-v3.patch
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment: 389-v5-3-use-descriptor-for-streaming.diff
                389-v5-2-add-keyspace-to-descriptor.diff
                389-v5-1-rebase-v4-for-trunk.diff

Here is rebased version of the latest patchset: nothing significant has changed.

I have not tested this with bootstrap, although it makes minor changes to Streaming (which pass the unit tests).

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 389-v3.patch, 389-v4.patch, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-6-merge-artifacts.diff, CASSANDRA-389.diff, CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment:     (was: 389-v5-1-rebase-v4-for-trunk.diff)

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 389-v3.patch, 389-v5-6-merge-artifacts.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12745711#action_12745711 ] 

Jonathan Ellis commented on CASSANDRA-389:
------------------------------------------

i suggest replacing the ad-hoc split/tokenize code in multiple places with a single method

  SSTableInfo parseSSTableInfo(String filename)

where SSTI is something like

class SSTableInfo {
  public final String columnFamilyName, version;
  public final int generation;
}


> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>    Affects Versions: 0.4
>            Reporter: Chris Goffinet
>            Priority: Minor
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<DATA|INDEX|FILTER>-<VERSION>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12748461#action_12748461 ] 

Jonathan Ellis commented on CASSANDRA-389:
------------------------------------------

> Which is the "wrong" version: the legacy version? 

any version that is not the current version.  (I used "z")

having "legacy" be distinguished from "current" is probably a mistake since you then have to special case it.

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>    Affects Versions: 0.4
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.4
>
>         Attachments: 389-v3.patch, CASSANDRA-389.diff, CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12747472#action_12747472 ] 

Jonathan Ellis commented on CASSANDRA-389:
------------------------------------------

note that it's important to make versions alphabetic (not numeric or alphanumeric) b/c generation is already numeric, so keeping those in separate vocabularies will help catch potential errors

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>    Affects Versions: 0.4
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.4
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<DATA|INDEX|FILTER>-<VERSION>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment:     (was: CASSANDRA-389.diff)

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 389-v3.patch, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-6-merge-artifacts.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Gary Dusbabek (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12835746#action_12835746 ] 

Gary Dusbabek commented on CASSANDRA-389:
-----------------------------------------

I'm not sure what the historical context of the streaming directory is.  I'll go about looking for a way to remove it today.

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 0001-Rebase-389-v4-for-trunk.patch, 0002-Add-keyspace-name-to-SSTable.Descriptor.patch, 0003-Use-SSTable.Descriptor-for-Streaming.patch, 0004-Validate-params.patch, 0005-The-special-casing-begins.patch, 0006-Merge-oopses.patch, 0007-Don-t-serialize-Descriptors-as-filenames.patch, 0008-adjust-Descriptor-for-stream-paths.patch, 389-v3.patch
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment:     (was: 389-v5-6-merge-artifacts.diff)

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 389-v3.patch, 389-v5-6-merge-artifacts.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment: CASSANDRA-389.diff

The coding style changes are in this new version of the patch. I also noticed that we weren't ignoring subdirectories in the ColumnFamily directory (BootstrapTest leaves behind a subdirectory in there, which is a separate issue).

I didn't change the tokenization, because I didn't see how it would make the code simpler... since TEMPFILE_MARKER is optional, checking the count of tokens isn't enough, and the split code would have had a proliferation of nested if statements (or something identical to the current code, with a position int to increment, rather than a 'nextToken' method).

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>    Affects Versions: 0.4
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.4
>
>         Attachments: CASSANDRA-389.diff, CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment: 389-v5-5-special-case-to-preserve-legacy.diff

One more patch for the v5 set: upgrades weren't handled properly, because we began added the version tag to legacy filenames.

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.9
>
>         Attachments: 389-v3.patch, 389-v4.patch, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-5-special-case-to-preserve-legacy.diff, CASSANDRA-389.diff, CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Gary Dusbabek (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12835450#action_12835450 ] 

Gary Dusbabek commented on CASSANDRA-389:
-----------------------------------------

I am not a fan of the storing-information-in-filenames approach.  It is brittle, especially with the way we play fast and loose with streaming.

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 0001-Rebase-389-v4-for-trunk.patch, 0002-Add-keyspace-name-to-SSTable.Descriptor.patch, 0003-Use-SSTable.Descriptor-for-Streaming.patch, 0004-Validate-params.patch, 0005-The-special-casing-begins.patch, 0006-Merge-oopses.patch, 0007-Don-t-serialize-Descriptors-as-filenames.patch, 0008-adjust-Descriptor-for-stream-paths.patch, 389-v3.patch
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12835738#action_12835738 ] 

Jonathan Ellis commented on CASSANDRA-389:
------------------------------------------

Whatever is easier is fine there imo, since we want to get rid of temporary to-be-streamed files entirely for CASSANDRA-579.

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 0001-Rebase-389-v4-for-trunk.patch, 0002-Add-keyspace-name-to-SSTable.Descriptor.patch, 0003-Use-SSTable.Descriptor-for-Streaming.patch, 0004-Validate-params.patch, 0005-The-special-casing-begins.patch, 0006-Merge-oopses.patch, 0007-Don-t-serialize-Descriptors-as-filenames.patch, 0008-adjust-Descriptor-for-stream-paths.patch, 389-v3.patch
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Gary Dusbabek (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gary Dusbabek updated CASSANDRA-389:
------------------------------------

    Attachment:     (was: 0008-adjust-Descriptor-for-stream-paths.patch)

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 0001-Rebase-389-v4-for-trunk.patch, 0002-Add-keyspace-name-to-SSTable.Descriptor.patch, 0003-Use-SSTable.Descriptor-for-Streaming.patch, 0004-Validate-params.patch, 0005-The-special-casing-begins.patch, 0006-Merge-oopses.patch, 0007-Don-t-serialize-Descriptors-as-filenames.patch, 389-v3.patch
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment:     (was: 389-v5-4-validate-parameters-for-descriptor.diff)

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 389-v3.patch, 389-v5-6-merge-artifacts.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment:     (was: 389-v5-6-merge-artifacts.diff)

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 389-v3.patch
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12747740#action_12747740 ] 

Stu Hood commented on CASSANDRA-389:
------------------------------------

The filename format I settled on was:

<CF>[-<TMP>]-<VERSION>-<ID>-<DATA|INDEX|FILTER>

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>    Affects Versions: 0.4
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.4
>
>         Attachments: CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12800139#action_12800139 ] 

Stu Hood commented on CASSANDRA-389:
------------------------------------

I'm fine with storing the version and other metadata in the file (like 521 begins to do), as long as the different implementations of sstables can agree on the location of this information. For instance, the implementation in 674 stores SSTable metadata at the beginning of every block so that the sstable is easily splittable for use by the Streaming API or by Hadoop at some point in the future.

Perhaps version information is the one thing that should be stored outside the file, because it can define how every other piece of metadata is stored?

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.9
>
>         Attachments: 389-v3.patch, 389-v4.patch, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-5-special-case-to-preserve-legacy.diff, CASSANDRA-389.diff, CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment: 389-v4.patch

I may not get another chance to work on this one for a few days, so I wanted to attach the latest version of the patch.

BootstrapTest is still broken with this version, because it assumes a lot about filenames, and uses string concatenation to identify what it is transferring. Ideally, it could use SSTable descriptors.

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>    Affects Versions: 0.4
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.4
>
>         Attachments: 389-v3.patch, 389-v4.patch, CASSANDRA-389.diff, CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12748604#action_12748604 ] 

Stu Hood commented on CASSANDRA-389:
------------------------------------

This is almost finished, but I bumped into a bunch of code related to bootstrapping in db.Table.java that assumes a ton about filenames, that I don't have time to fix today. Hopefully I can get this wrapped up tomorrow.

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>    Affects Versions: 0.4
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.4
>
>         Attachments: 389-v3.patch, CASSANDRA-389.diff, CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Gary Dusbabek (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12835929#action_12835929 ] 

Gary Dusbabek commented on CASSANDRA-389:
-----------------------------------------

+1 on stu's patches.  They can go in right after CASSANDRA-810 (anybody care to review it?).

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 0001-Rebase-389-v4-for-trunk.patch, 0002-Add-keyspace-name-to-SSTable.Descriptor.patch, 0003-Use-SSTable.Descriptor-for-Streaming.patch, 0004-Validate-params.patch, 0005-The-special-casing-begins.patch, 0006-Merge-oopses.patch, 0007-Don-t-serialize-Descriptors-as-filenames.patch, 389-v3.patch
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Issue Comment Edited: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12830484#action_12830484 ] 

Stu Hood edited comment on CASSANDRA-389 at 2/7/10 9:49 PM:
------------------------------------------------------------

Rebased for trunk. Since we know that file formats are going to change in 0.7, I'd like to get this in soon, so I don't have to waste any more time rebasing it.

EDIT: Actually, I'm extracting interfaces for #674, so perhaps we should wait until we are ready to merge the new interfaces before we merge this one.
EDIT2: See CASSANDRA-777

      was (Author: stuhood):
    Rebased for trunk. Since we know that file formats are going to change in 0.7, I'd like to get this in soon, so I don't have to waste any more time rebasing it.

EDIT: Actually, I'm extracting interfaces for #674, so perhaps we should wait until we are ready to merge the new interfaces before we merge this one.
  
> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 389-v3.patch, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-6-merge-artifacts.diff, 389-v5-6-merge-artifacts.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment:     (was: CASSANDRA-389.diff)

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 389-v3.patch, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-6-merge-artifacts.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Gary Dusbabek (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12836025#action_12836025 ] 

Gary Dusbabek commented on CASSANDRA-389:
-----------------------------------------

+1  Everything seems to work and there doesn't appear to be any gotchas in the code.

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 0001-Rebase-389-v4-for-trunk.patch, 0002-Add-keyspace-name-to-SSTable.Descriptor.patch, 0003-Use-SSTable.Descriptor-for-Streaming.patch, 0004-Validate-params.patch, 0005-The-special-casing-begins.patch, 0006-Merge-oopses.patch, 0007-Don-t-serialize-Descriptors-as-filenames.patch, 389-v3.patch
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan Ellis updated CASSANDRA-389:
-------------------------------------

    Fix Version/s: 0.9

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.9
>
>         Attachments: 389-v3.patch, 389-v4.patch, CASSANDRA-389.diff, CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12800202#action_12800202 ] 

Jonathan Ellis commented on CASSANDRA-389:
------------------------------------------

> Perhaps version information is the one thing that should be stored outside the file

+1

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.9
>
>         Attachments: 389-v3.patch, 389-v4.patch, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-5-special-case-to-preserve-legacy.diff, CASSANDRA-389.diff, CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12747984#action_12747984 ] 

Jonathan Ellis commented on CASSANDRA-389:
------------------------------------------

+1 on the general approach and cleanup, thanks!

Can you redo to follow http://wiki.apache.org/cassandra/CodeStyle?

In particular the Descriptor final fields should be public and not underscored.  Avoid mutating the temporary-ness in favor of creating a new Descriptor.  And use split() instead of tokenizing; just counting the fields will show whether it's a "legacy" name.

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>    Affects Versions: 0.4
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.4
>
>         Attachments: CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment: 389-v5-6-merge-artifacts.diff
                389-v5-5-special-case-to-preserve-legacy.diff
                389-v5-4-validate-parameters-for-descriptor.diff

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 389-v3.patch, 389-v4.patch, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-6-merge-artifacts.diff, CASSANDRA-389.diff, CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Chris Goffinet (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Chris Goffinet updated CASSANDRA-389:
-------------------------------------

    Description: 
As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:

<CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

  was:
As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:

<CF>-<ID>-<DATA|INDEX|FILTER>-<VERSION>


> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>    Affects Versions: 0.4
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.4
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment:     (was: 389-v5-2-add-keyspace-to-descriptor.diff)

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 389-v3.patch, 389-v5-6-merge-artifacts.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12748514#action_12748514 ] 

Stu Hood commented on CASSANDRA-389:
------------------------------------

> any version that is not the current version. (I used "z") 
Ahhh, I see what you mean. This patch doesn't actually implement handling for the different versions. In the future, when we need to make non-compatible changes to the disk format, we'll increment the version, and either:
 * Add conditionals all over the place to handle older versions differently (yuck),
 * Subclass SSTableReader/Writer for the new version, and modify the factory functions to return different reader subclasses per version.

> having "legacy" be distinguished from "current" is probably a mistake since you then have to special case it. 
You're right. Since there are no file format differences between the LEGACY and CURRENT versions, they should both be "a". I'll update the patch.

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>    Affects Versions: 0.4
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.4
>
>         Attachments: 389-v3.patch, CASSANDRA-389.diff, CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Gary Dusbabek (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gary Dusbabek updated CASSANDRA-389:
------------------------------------

    Comment: was deleted

(was: +1 on stu's patches.  They can go in right after CASSANDRA-810 (anybody care to review it?).)

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 0001-Rebase-389-v4-for-trunk.patch, 0002-Add-keyspace-name-to-SSTable.Descriptor.patch, 0003-Use-SSTable.Descriptor-for-Streaming.patch, 0004-Validate-params.patch, 0005-The-special-casing-begins.patch, 0006-Merge-oopses.patch, 0007-Don-t-serialize-Descriptors-as-filenames.patch, 389-v3.patch
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment: CASSANDRA-389.diff

This patch moves SSTable filename parsing into a SSTable.Descriptor class which has a special case for unversioned SSTable files. Systems running with legacy unversioned SSTables should write versioned SSTables during their next compaction.

I think there is a lot more potential for the SSTable.Descriptor class: pretty much anywhere we use a String to describe an open SSTable, but I think it is out of the scope of this patch.

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>    Affects Versions: 0.4
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.4
>
>         Attachments: CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment: 0007-Don-t-serialize-Descriptors-as-filenames.patch

Rebased patchset for trunk, and made sure we don't bump into CASSANDRA-794.

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 0001-Rebase-389-v4-for-trunk.patch, 0002-Add-keyspace-name-to-SSTable.Descriptor.patch, 0003-Use-SSTable.Descriptor-for-Streaming.patch, 0004-Validate-params.patch, 0005-The-special-casing-begins.patch, 0006-Merge-oopses.patch, 0007-Don-t-serialize-Descriptors-as-filenames.patch, 389-v3.patch
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Issue Comment Edited: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12747740#action_12747740 ] 

Stu Hood edited comment on CASSANDRA-389 at 8/25/09 7:09 PM:
-------------------------------------------------------------

The filename format I settled on was:

<CF>[-<TMP>]-<VERSION>-<GENERATION>-<DATA|INDEX|FILTER>

      was (Author: stuhood):
    The filename format I settled on was:

<CF>[-<TMP>]-<VERSION>-<ID>-<DATA|INDEX|FILTER>
  
> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>    Affects Versions: 0.4
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.4
>
>         Attachments: CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment: 389-v5-3-use-descriptor-for-streaming.diff
                389-v5-2-add-keyspace-to-descriptor.diff
                389-v5-1-rebase-v4-for-trunk.diff

Rebased for trunk. Since we know that file formats are going to change in 0.7, I'd like to get this in soon, so I don't have to waste any more time rebasing it.

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 389-v3.patch, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-6-merge-artifacts.diff, 389-v5-6-merge-artifacts.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12799239#action_12799239 ] 

Jonathan Ellis commented on CASSANDRA-389:
------------------------------------------

as noted in CASSANDRA-521, we need to add the partitioner used to the sstable data file.  is there any value to keeping version in filename once we are already adding partitioner to data file itself?  (IMO the alternative, cramming partitioner into filename, is silly, and what if version N + 1 needs a 3rd piece of metadata?)

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.9
>
>         Attachments: 389-v3.patch, 389-v4.patch, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-5-special-case-to-preserve-legacy.diff, CASSANDRA-389.diff, CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Gary Dusbabek (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gary Dusbabek updated CASSANDRA-389:
------------------------------------

    Attachment: 0008-adjust-Descriptor-for-stream-paths.patch

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 0001-Rebase-389-v4-for-trunk.patch, 0002-Add-keyspace-name-to-SSTable.Descriptor.patch, 0003-Use-SSTable.Descriptor-for-Streaming.patch, 0004-Validate-params.patch, 0005-The-special-casing-begins.patch, 0006-Merge-oopses.patch, 0007-Don-t-serialize-Descriptors-as-filenames.patch, 0008-adjust-Descriptor-for-stream-paths.patch, 389-v3.patch
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment:     (was: 389-v4.patch)

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 389-v3.patch, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-6-merge-artifacts.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment: 389-v5-3-use-descriptor-for-streaming.diff
                389-v5-2-add-keyspace-to-descriptor.diff
                389-v5-1-rebase-v4-for-trunk.diff

New patchset: v5. Rebases v4 for trunk, adds the keyspace to the descriptor, and uses descriptors for streaming.

No versions are checked: they're just being made available, so that something like #674 can increment, and add conditional handling.

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.9
>
>         Attachments: 389-v3.patch, 389-v4.patch, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-3-use-descriptor-for-streaming.diff, CASSANDRA-389.diff, CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment: 0006-Merge-oopses.patch
                0005-The-special-casing-begins.patch
                0004-Validate-params.patch

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 0001-Rebase-389-v4-for-trunk.patch, 0002-Add-keyspace-name-to-SSTable.Descriptor.patch, 0003-Use-SSTable.Descriptor-for-Streaming.patch, 0004-Validate-params.patch, 0005-The-special-casing-begins.patch, 0006-Merge-oopses.patch, 389-v3.patch
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Hudson (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12837771#action_12837771 ] 

Hudson commented on CASSANDRA-389:
----------------------------------

Integrated in Cassandra #364 (See [http://hudson.zones.apache.org/hudson/job/Cassandra/364/])
    sstable versioning. Patch by Stu Hood, reviewed by Gary Dusbabek. 


> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 0001-Rebase-389-v4-for-trunk.patch, 0002-Add-keyspace-name-to-SSTable.Descriptor.patch, 0003-Use-SSTable.Descriptor-for-Streaming.patch, 0004-Validate-params.patch, 0005-The-special-casing-begins.patch, 0006-Merge-oopses.patch, 0007-Don-t-serialize-Descriptors-as-filenames.patch, 389-v3.patch
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Issue Comment Edited: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12830484#action_12830484 ] 

Stu Hood edited comment on CASSANDRA-389 at 2/6/10 8:16 AM:
------------------------------------------------------------

Rebased for trunk. Since we know that file formats are going to change in 0.7, I'd like to get this in soon, so I don't have to waste any more time rebasing it.

EDIT: Actually, I'm extracting interfaces for #674, so perhaps we should wait until we are ready to merge the new interfaces before we merge this one.

      was (Author: stuhood):
    Rebased for trunk. Since we know that file formats are going to change in 0.7, I'd like to get this in soon, so I don't have to waste any more time rebasing it.
  
> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 389-v3.patch, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-1-rebase-v4-for-trunk.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-2-add-keyspace-to-descriptor.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-3-use-descriptor-for-streaming.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-4-validate-parameters-for-descriptor.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-5-special-case-to-preserve-legacy.diff, 389-v5-6-merge-artifacts.diff, 389-v5-6-merge-artifacts.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Chris Goffinet (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12745705#action_12745705 ] 

Chris Goffinet commented on CASSANDRA-389:
------------------------------------------

Version should start alphabetically, single character to start. 

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>    Affects Versions: 0.4
>            Reporter: Chris Goffinet
>            Priority: Minor
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<DATA|INDEX|FILTER>-<VERSION>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-389:
-------------------------------

    Attachment: 0003-Use-SSTable.Descriptor-for-Streaming.patch
                0002-Add-keyspace-name-to-SSTable.Descriptor.patch
                0001-Rebase-389-v4-for-trunk.patch

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: 0001-Rebase-389-v4-for-trunk.patch, 0002-Add-keyspace-name-to-SSTable.Descriptor.patch, 0003-Use-SSTable.Descriptor-for-Streaming.patch, 0004-Validate-params.patch, 0005-The-special-casing-begins.patch, 0006-Merge-oopses.patch, 389-v3.patch
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-389) SSTable Versioning

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12748457#action_12748457 ] 

Stu Hood commented on CASSANDRA-389:
------------------------------------

> but I renamed a set of sstable files in data/ to the "wrong" version and it did not catch this at startup.
I'm not sure what you mean. Which is the "wrong" version: the legacy version?

> (does it still ignore tmp files at startup?)
I'll double check, but I assume so. I didn't change the check that removes tmp files, because it did it based on looking for TEMPFILE_MARKER anywhere in the file name, which should continue to work.

> SSTable Versioning
> ------------------
>
>                 Key: CASSANDRA-389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-389
>             Project: Cassandra
>          Issue Type: Improvement
>    Affects Versions: 0.4
>            Reporter: Chris Goffinet
>            Assignee: Stu Hood
>            Priority: Minor
>             Fix For: 0.4
>
>         Attachments: 389-v3.patch, CASSANDRA-389.diff, CASSANDRA-389.diff
>
>
> As we continue to make changes to the on-disk format of SSTables, I propose we start versioning. The easiest way without breaking backwards compatibility is to store the version in the filename. This would allow us to figure out the version without looking at the SSTable data. After speaking to Jonathan here is the proposed example:
> <CF>-<ID>-<VERSION>-<DATA|INDEX|FILTER>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.