[
https://issues.apache.org/jira/browse/CASSANDRA-10286?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14736561#comment-14736561
]
Benedict commented on CASSANDRA-10286:
--------------------------------------
I've pushed a branch
[here|https://github.com/belliottsmith/cassandra/tree/10286] that tweaks things
a little, and also cleans up some other related stuff to make things more
consistent:
The main change is to modify the {{AbstractTransactional.doPreCleanup}}
semantics to always occur prior to commit / abort, but in the commit case is
performed directly after {{prepareToCommit}}. This permits us to retain the
correct behaviour you've just reintroduced without depending on the unrelated
intent of {{releaseFileHandle}} (which was for file renaming purposes) and
which I've also removed, as its comment intended it to EOL once we had our
fancy new transaction logs in place.
At the same time, I've normalised the behaviour wrt deleting files on abort
(i.e. now none of the files are deleted in their writers, since we may as well
be consistent and let txn logs clean them all up).
If you could let me know what you think, and then run this against Windows CI,
that would be appreciated
> Windows utest 3.0:
> org.apache.cassandra.io.sstable.SSTableLoaderTest.testLoadingIncompleteSSTable
> -------------------------------------------------------------------------------------------------
>
> Key: CASSANDRA-10286
> URL: https://issues.apache.org/jira/browse/CASSANDRA-10286
> Project: Cassandra
> Issue Type: Sub-task
> Reporter: Philip Thompson
> Assignee: Stefania
> Fix For: 3.x
>
>
> Distinct error message from CASSANDRA-10210.
> {code}
> junit.framework.AssertionFailedError:
> at
> org.apache.cassandra.io.sstable.SSTableLoaderTest.testLoadingIncompleteSSTable(SSTableLoaderTest.java:186)
> {code}
> which I believe is from
> {code}
> ERROR 22:05:57 Unable to delete
> D:\temp\1441663555277-0\SSTableLoaderTest\Standard2\ma-1-big-Data.db
> java.nio.file.AccessDeniedException:
> D:\temp\1441663555277-0\SSTableLoaderTest\Standard2\ma-1-big-Data.db
> at
> sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:83)
> ~[na:1.8.0_51]
> at
> sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
> ~[na:1.8.0_51]
> at
> sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
> ~[na:1.8.0_51]
> at
> sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269)
> ~[na:1.8.0_51]
> at
> sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103)
> ~[na:1.8.0_51]
> at java.nio.file.Files.delete(Files.java:1126) ~[na:1.8.0_51]
> at
> org.apache.cassandra.db.lifecycle.TransactionLog.delete(TransactionLog.java:792)
> [main/:na]
> at
> org.apache.cassandra.db.lifecycle.TransactionLog.access$100(TransactionLog.java:97)
> [main/:na]
> at
> org.apache.cassandra.db.lifecycle.TransactionLog$TransactionFile.lambda$deleteRecord$108(TransactionLog.java:504)
> [main/:na]
> at
> org.apache.cassandra.db.lifecycle.TransactionLog$TransactionFile$$Lambda$108/1799732569.accept(Unknown
> Source) [main/:na]
> at java.util.Arrays$ArrayList.forEach(Arrays.java:3880) [na:1.8.0_51]
> at
> org.apache.cassandra.db.lifecycle.TransactionLog$TransactionFile.deleteRecord(TransactionLog.java:504)
> [main/:na]
> at
> org.apache.cassandra.db.lifecycle.TransactionLog$TransactionFile$$Lambda$88/744169296.accept(Unknown
> Source) [main/:na]
> at
> java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
> [na:1.8.0_51]
> at
> java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
> [na:1.8.0_51]
> at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1540)
> [na:1.8.0_51]
> at
> java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
> [na:1.8.0_51]
> at
> java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
> [na:1.8.0_51]
> at
> java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
> [na:1.8.0_51]
> at
> java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
> [na:1.8.0_51]
> at
> java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
> [na:1.8.0_51]
> at
> java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
> [na:1.8.0_51]
> at
> org.apache.cassandra.db.lifecycle.TransactionLog$TransactionFile.deleteRecords(TransactionLog.java:490)
> [main/:na]
> at
> org.apache.cassandra.db.lifecycle.TransactionLog$TransactionData.removeUnfinishedLeftovers(TransactionLog.java:622)
> [main/:na]
> at
> org.apache.cassandra.db.lifecycle.TransactionLog$TransactionTidier.run(TransactionLog.java:837)
> [main/:na]
> at
> org.apache.cassandra.db.lifecycle.TransactionLog$TransactionTidier.tidy(TransactionLog.java:822)
> [main/:na]
> at
> org.apache.cassandra.utils.concurrent.Ref$GlobalState.release(Ref.java:294)
> [main/:na]
> at
> org.apache.cassandra.utils.concurrent.Ref$State.ensureReleased(Ref.java:172)
> [main/:na]
> at
> org.apache.cassandra.utils.concurrent.Ref.ensureReleased(Ref.java:92)
> [main/:na]
> at
> org.apache.cassandra.db.lifecycle.TransactionLog.complete(TransactionLog.java:950)
> [main/:na]
> at
> org.apache.cassandra.db.lifecycle.TransactionLog.doAbort(TransactionLog.java:969)
> [main/:na]
> at
> org.apache.cassandra.utils.concurrent.Transactional$AbstractTransactional.abort(Transactional.java:144)
> [main/:na]
> at
> org.apache.cassandra.db.lifecycle.LifecycleTransaction.doAbort(LifecycleTransaction.java:256)
> [main/:na]
> at
> org.apache.cassandra.utils.concurrent.Transactional$AbstractTransactional.abort(Transactional.java:144)
> [main/:na]
> at
> org.apache.cassandra.io.sstable.SSTableTxnWriter.doAbort(SSTableTxnWriter.java:72)
> [main/:na]
> at
> org.apache.cassandra.utils.concurrent.Transactional$AbstractTransactional.abort(Transactional.java:144)
> [main/:na]
> at
> org.apache.cassandra.utils.concurrent.Transactional$AbstractTransactional.abort(Transactional.java:192)
> [main/:na]
> at
> org.apache.cassandra.utils.concurrent.Transactional$AbstractTransactional.close(Transactional.java:158)
> [main/:na]
> {code}
> http://cassci.datastax.com/view/win32/job/cassandra-3.0_utest_win32/42/testReport/
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)