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

Josh McKenzie commented on CASSANDRA-17416:
-------------------------------------------

Can't reproduce this one locally but noodling on it for a bit, here's a 
hypothesis:
{code}
        CommitLog.instance.sync(true);
        CommitLogSegment currentSegment = 
CommitLog.instance.segmentManager.allocatingFrom();
        int syncOffset = currentSegment.lastSyncedOffset;

        // Confirm index file is written
        File cdcIndexFile = currentSegment.getCDCIndexFile();
        Assert.assertTrue("Index file not written: " + cdcIndexFile, 
cdcIndexFile.exists());

        // Read index value and confirm it's == end from last sync
        BufferedReader in = new BufferedReader(new FileReader(cdcIndexFile));
{code}

In general, to my eye the above code is going to be prone to races. The 
syncOffset we take immediately after sync + getting ref may or may not point to 
whatever is in the cdcIndexFile as another flush / sync may go on between that 
first lastSyncedOffset check and creation of the FileReader.

So I'm thinking we check that the value we parse from cdcIndexFile is >= 
lastSyncedOffset to account for that.

As for the null you saw Ekaterina, no clue. That null indicates it failed to 
read anything from the cdcIndexFile and it really shouldn't have done that; 
can't think of a scenario where it'd succeed in writing the index file but have 
it be completely empty. I can harden that test a bit and have it dump out the 
entire contents of the index file if it has an integer parse error.

[~yifanc] - since you've dug around a bit in the CDC space, WDYT about the >= 
comparison instead of equality here? Sound reasonable?
 

> Test Failure: 
> org.apache.cassandra.db.commitlog.CommitLogSegmentManagerCDCTest.testCDCIndexFileWriteOnSync
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-17416
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-17416
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Test/unit
>            Reporter: Marcus Eriksson
>            Assignee: Josh McKenzie
>            Priority: Normal
>             Fix For: 4.x
>
>
> [https://ci-cassandra.apache.org/job/Cassandra-trunk/985/testReport/org.apache.cassandra.db.commitlog/CommitLogSegmentManagerCDCTest/testCDCIndexFileWriteOnSync_cdc_3/]
> h3. Error Message
> expected:<1748956> but was:<1749196>
> h3. Stacktrace
> junit.framework.AssertionFailedError: expected:<1748956> but was:<1749196> at 
> org.apache.cassandra.db.commitlog.CommitLogSegmentManagerCDCTest.testCDCIndexFileWriteOnSync(CommitLogSegmentManagerCDCTest.java:160)
>  at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 
> Method) at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>  at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> h3. Standard Output
> INFO [main] 2022-03-02 15:04:59,516 YamlConfigurationLoader.java:103 - 
> Configuration location: 
> file:////home/cassandra/cassandra/build/test/cassandra.cdc.yaml DEBUG [main] 
> 2022-03-02 15:04:59,520 YamlConfigurationLoader.java:124 - Loading settings 
> from file:////home/cassandra/cassandra/build/test/cassandra.cdc.yaml INFO 
> [main] 2022-03-02 15:04:59,674 Config.java:907 - Node 
> configuration:[allocate_tokens_for_keyspace=null; 
> allocate_tokens_for_local_replication_factor=null; allow_extra_insecure_ 
> ...[truncated 4125855 chars]... -02 15:06:57,491 PathUtils.java:73 - Deleting 
> file during startup: 
> /home/cassandra/cassandra/build/test/cassandra/data/system_schema/views-9786ac1cdd583201a7cdad556410c985/nb-11-big-Summary.db
>  DEBUG [MemtableFlushWriter:2] 2022-03-02 15:06:57,496 
> ColumnFamilyStore.java:1207 - Flushed to 
> [BigTableReader(path='/home/cassandra/cassandra/build/test/cassandra/data/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/nb-55-big-Data.db')]
>  (1 sstables, 4.895KiB), biggest 4.895KiB, smallest 4.895KiB



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to