code: public int recover() throws IOException
      {
          FilenameFilter unmanagedFilesFilter = new FilenameFilter()
          {
              public boolean accept(File dir, String name)
              {
                  // we used to try to avoid instantiating commitlog (thus creating an empty segment ready for writes)
                  // until after recover was finished.  this turns out to be fragile; it is less error-prone to go
                  // ahead and allow writes before recover(), and just skip active segments when we do.
                  return CommitLogDescriptor.isValid(name) && !instance.allocator.manages(name);
              }
          };
  
          // submit all existing files in the commit log dir for archiving prior to recovery - CASSANDRA-6904
          for (File file : new File(DatabaseDescriptor.getCommitLogLocation()).listFiles(unmanagedFilesFilter))
          {
              archiver.maybeArchive(file.getPath(), file.getName());
              archiver.maybeWaitForArchiving(file.getName());
          }
  
          assert archiver.archivePending.isEmpty() : "Not all commit log archive tasks were completed before restore";
          archiver.maybeRestoreArchive();
  
          File[] files = new File(DatabaseDescriptor.getCommitLogLocation()).listFiles(unmanagedFilesFilter);
          int replayed = 0;
          if (files.length == 0)
          {
              logger.info("No commitlog files found; skipping replay");
          }
          else
          {
              Arrays.sort(files, new CommitLogSegmentFileComparator());
              logger.info("Replaying {}", StringUtils.join(files, ", "));
              replayed = recover(files);
              logger.info("Log replay complete, {} replayed mutations", replayed);
  
              for (File f : files)
                  CommitLog.instance.allocator.recycleSegment(f);
          }
  
          allocator.enableReserveSegmentCreation();
          return replayed;
      }
docs: Perform recovery on commit logs located in the directory specified by the config file.
  
  @return the number of mutations replayed