> I think this means that the Directories.SSTableLister on occasion returns 
> files in the incorrect order during a call to lister.list().entrySet()

This seems easy enough to verify by looping it and examining the results.

Kind Regards,
Brandon

On Tue, Jan 10, 2023 at 4:44 AM Claude Warren, Jr via dev
<dev@cassandra.apache.org> wrote:
>
> Greetings,
>
> I am working on the downgradesstables code and seem to have a problem with 
> ordering of the downgrade or perhaps the Directories.SSTableLister
>
> I lifted the code from upgradesstables to select the files to downgrade.  The 
> only difference in the code that selects the files to downgrade is the actual 
> selection of the file.  There is no change to the ordering of the files that 
> are evaluated for inclusion.  Yet I think the downgrade ordering is incorrect.
>
> My process is to start 3.1 version to create the tables and then use the 4.0 
> code base to run the standaloneupgrader and then the standalonedowngrader
>
> When running the standaloneupgrader on system local I see the following
> {{noformat}}
> Found 3 sstables that need upgrading.
> Upgrading 
> BigTableReader(path='/var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/ma-1-big-Data.db')
> Upgrade of 
> BigTableReader(path='/var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/ma-1-big-Data.db')
>  complete.
> Upgrading 
> BigTableReader(path='/var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/ma-2-big-Data.db')
> Upgrade of 
> BigTableReader(path='/var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/ma-2-big-Data.db')
>  complete.
> Upgrading 
> BigTableReader(path='/var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/ma-3-big-Data.db')
> Upgrade of 
> BigTableReader(path='/var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/ma-3-big-Data.db')
>  complete.
> {{noformat}}
>
> when running the standalonedowngrader is see
> {{noformat}}
> Found 3 sstables that need downgrading.
> Downgrading 
> BigTableReader(path='/var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/nb-6-big-Data.db')
> Downgrade of 
> BigTableReader(path='/var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/nb-6-big-Data.db')
>  complete.
> Downgrading 
> BigTableReader(path='/var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/nb-4-big-Data.db')
> Downgrade of 
> BigTableReader(path='/var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/nb-4-big-Data.db')
>  complete.
> Downgrading 
> BigTableReader(path='/var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/nb-5-big-Data.db')
> Downgrade of 
> BigTableReader(path='/var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/nb-5-big-Data.db')
>  complete.
> {{noformat}}}
>
> Note the order of the generations in the downgrader (I have seen similar out 
> of order issues with the upgrader, but infrequently)
>
> The difference between the upgrader and downgrader code in the questionable 
> section 
> (https://github.com/Claudenw/cassandra/blob/CASSANDRA-8928/src/java/org/apache/cassandra/tools/StandaloneDowngrader.java#:~:text=new%20ArrayList%3C%3E()%3B-,//%20Downgrade%20sstables,%7D,-int%20numSSTables%20%3D)
>  is on line 101 where the files are selected and put into a list.  I think 
> this means that the Directories.SSTableLister on occasion returns files in 
> the incorrect order during a call to lister.list().entrySet()
>
> I believe that the files are processed in the order specified and that the 
> generations get switched around.  This is evidenced by the file size of the 
> Data file associated with the generations as it moves through the process.  
> In this case we expect the nb-6 to become ma-7 as per the output from the 
> run.  In actuality we want nb-6 to be nb-9.
>
> {{noformat}}
>   ma           nb      ma
> 1  212     4  212    8  212
> 2   64     5   70    9   70
> 3 4876     6 4883    7 4883
> {{noformat}}
>
> So now my question, has anyone seen the behaviour before?
>
> Oh, to make things more interesting I am using Docker images of 3.1 and a 
> modified 4.0 that turns off the execution so I can just run the upgrade and 
> downgrade.
>
> Any help would be appreciated,
> Claude

Reply via email to