code: protected synchronized void switchEntry(boolean blocking) throws IOException {
      /**
       * Must create compaction redo before update redo to prevent data loss.
       * 
       * The "applyEntries" method will internally sort compaction redo and update redo
       * entries using stable Arrays.sort. The following order of creating redo entries
       * will ensure that compaction redo does NOT overwrite update redo.
       */
      if (!_entryCompaction.isEmpty()) {
        // Create entry log and persist in-memory data
        File file = new File(getDirectory(), getEntryLogName(_entryCompaction));
        _entryCompaction.save(file);
        _entryPool.addToServiceQueue(_entryCompaction);
        _entryCompaction = _entryPool.next();
      }
      
      if (!_entry.isEmpty()) {
        if(_persistListener != null) {
          _persistListener.beforePersist(_entry);
        }
        
        // Create entry log and persist in-memory data
        File file = new File(getDirectory(), getEntryLogName(_entry));
        _entry.save(file);
        
        if(_persistListener != null) {
          _persistListener.afterPersist(_entry);
        }
        
        // Advance low water mark to maintain progress record
        _lwmScn = Math.max(_lwmScn, _entry.getMaxScn());
        _entryPool.addToServiceQueue(_entry);
        _entry = _entryPool.next();
      }
      
      // Apply entry logs to array file
      if (_autoApplyEntries) {
        if (_entryPool.getServiceQueueSize() >= _maxEntries) {
          applyEntries(blocking);
        }
      }
    }
docs: Switches to a new entry if the current _entry is not empty.
  
  @throws IOException