This is an automated email from the ASF dual-hosted git repository.

brandonwilliams pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git

commit 9660499acc4ceceb748715ddbd8b81e02916fb53
Merge: 63e8e7d ffd3d41
Author: Brandon Williams <brandonwilli...@apache.org>
AuthorDate: Tue Nov 10 11:28:20 2020 -0600

    Merge branch 'cassandra-3.11' into trunk

 .../cassandra/db/lifecycle/LogTransaction.java     | 174 +++++++++++++--------
 1 file changed, 111 insertions(+), 63 deletions(-)

diff --cc src/java/org/apache/cassandra/db/lifecycle/LogTransaction.java
index 4039322,a28384f..ae12142
--- a/src/java/org/apache/cassandra/db/lifecycle/LogTransaction.java
+++ b/src/java/org/apache/cassandra/db/lifecycle/LogTransaction.java
@@@ -47,7 -48,7 +47,7 @@@ import org.apache.cassandra.io.sstable.
  import org.apache.cassandra.io.sstable.SnapshotDeletingTask;
  import org.apache.cassandra.io.sstable.format.SSTableReader;
  import org.apache.cassandra.io.util.FileUtils;
--import org.apache.cassandra.tools.StandaloneSSTableUtil;
++import org.apache.cassandra.service.StorageService;
  import org.apache.cassandra.utils.*;
  import org.apache.cassandra.utils.concurrent.Ref;
  import org.apache.cassandra.utils.concurrent.RefCounted;
@@@ -269,34 -288,35 +289,36 @@@ class LogTransaction extends Transactio
  
          public void run()
          {
-             if (logger.isTraceEnabled())
-                 logger.trace("Removing files for transaction log {}", data);
- 
-             // this happens if we forget to close a txn and the garbage 
collector closes it for us
-             // or if the transaction journal was never properly created in 
the first place
-             if (!data.completed())
+             synchronized (lock)
              {
-                 logger.error("Transaction log {} indicates txn was not 
completed, trying to abort it now", data);
-                 Throwable err = Throwables.perform((Throwable)null, 
data::abort);
-                 if (err != null)
-                     logger.error("Failed to abort transaction log {}", data, 
err);
-             }
+                 if (logger.isTraceEnabled())
+                     logger.trace("Removing files for transaction {}", name());
  
-             Throwable err = data.removeUnfinishedLeftovers(null);
+                 // this happens if we forget to close a txn and the garbage 
collector closes it for us
+                 // or if the transaction journal was never properly created 
in the first place
+                 if (!data.completed())
+                 {
+                     logger.error("{} was not completed, trying to abort it 
now", data);
 +
-             if (err != null)
-             {
-                 logger.info("Failed deleting files for transaction log {}, 
we'll retry after GC and on on server restart",
-                             data,
-                             err);
-                 failedDeletions.add(this);
-             }
-             else
-             {
-                 if (logger.isTraceEnabled())
-                     logger.trace("Closing transaction log {}", data);
+                     Throwable err = Throwables.perform((Throwable) null, 
data::abort);
+                     if (err != null)
+                         logger.error("Failed to abort {}", data, err);
+                 }
  
-                 data.close();
+                 Throwable err = data.removeUnfinishedLeftovers(null);
+ 
+                 if (err != null)
+                 {
+                     logger.info("Failed deleting files for transaction {}, 
we'll retry after GC and on on server restart", name(), err);
+                     failedDeletions.add(this);
+                 }
+                 else
+                 {
+                     if (logger.isTraceEnabled())
+                         logger.trace("Closing file transaction {}", name());
+ 
+                     data.close();
+                 }
              }
          }
      }
@@@ -342,31 -369,37 +371,37 @@@
              if (tracker != null && !tracker.isDummy())
                  SystemKeyspace.clearSSTableReadMeter(desc.ksname, 
desc.cfname, desc.generation);
  
-             try
+             synchronized (lock)
              {
-                 // If we can't successfully delete the DATA component, set 
the task to be retried later: see TransactionTidier
-                 File datafile = new File(desc.filenameFor(Component.DATA));
 -                if (logger.isTraceEnabled())
 -                    logger.trace("Tidier running for old sstable {}", 
desc.baseFilename());
 -
+                 try
+                 {
+                     // If we can't successfully delete the DATA component, 
set the task to be retried later: see TransactionTidier
+                     File datafile = new 
File(desc.filenameFor(Component.DATA));
  
-                 if (datafile.exists())
-                     delete(datafile);
-                 else if (!wasNew)
-                     logger.error("SSTableTidier ran with no existing data 
file for an sstable that was not new");
++                    if (logger.isTraceEnabled())
++                        logger.trace("Tidier running for old sstable {}", 
desc.baseFilename());
 +
-                 // let the remainder be cleaned up by delete
-                 SSTable.delete(desc, SSTable.discoverComponentsFor(desc));
-             }
-             catch (Throwable t)
-             {
-                 logger.error("Failed deletion for {}, we'll retry after GC 
and on server restart", desc);
-                 failedDeletions.add(this);
-                 return;
-             }
+                     if (datafile.exists())
+                         delete(datafile);
+                     else if (!wasNew)
+                         logger.error("SSTableTidier ran with no existing data 
file for an sstable that was not new");
  
-             if (tracker != null && tracker.cfstore != null && !wasNew)
-                 tracker.cfstore.metric.totalDiskSpaceUsed.dec(sizeOnDisk);
+                     // let the remainder be cleaned up by delete
+                     SSTable.delete(desc, SSTable.discoverComponentsFor(desc));
+                 }
+                 catch (Throwable t)
+                 {
+                     logger.error("Failed deletion for {}, we'll retry after 
GC and on server restart", desc);
+                     failedDeletions.add(this);
+                     return;
+                 }
+ 
+                 if (tracker != null && tracker.cfstore != null && !wasNew)
+                     tracker.cfstore.metric.totalDiskSpaceUsed.dec(sizeOnDisk);
  
-             // release the referent to the parent so that the all transaction 
files can be released
-             parentRef.release();
+                 // release the referent to the parent so that the all 
transaction files can be released
+                 parentRef.release();
+             }
          }
  
          public void abort()


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to