Class TranslogWriter

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, java.lang.Comparable<BaseTranslogReader>

    public class TranslogWriter
    extends BaseTranslogReader
    implements java.io.Closeable
    • Field Detail

      • closed

        protected final java.util.concurrent.atomic.AtomicBoolean closed
    • Method Detail

      • create

        public static TranslogWriter create​(ShardId shardId,
                                            java.lang.String translogUUID,
                                            long fileGeneration,
                                            java.nio.file.Path file,
                                            ChannelFactory channelFactory,
                                            ByteSizeValue bufferSize,
                                            long initialMinTranslogGen,
                                            long initialGlobalCheckpoint,
                                            java.util.function.LongSupplier globalCheckpointSupplier,
                                            java.util.function.LongSupplier minTranslogGenerationSupplier,
                                            long primaryTerm,
                                            TragicExceptionHolder tragedy,
                                            java.util.function.LongConsumer persistedSequenceNumberConsumer)
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • add

        public Translog.Location add​(BytesReference data,
                                     long seqNo)
                              throws java.io.IOException
        Add the given bytes to the translog with the specified sequence number; returns the location the bytes were written to.
        Parameters:
        data - the bytes to write
        seqNo - the sequence number associated with the operation
        Returns:
        the location the bytes were written to
        Throws:
        java.io.IOException - if writing to the translog resulted in an I/O exception
      • sync

        public void sync()
                  throws java.io.IOException
        write all buffered ops to disk and fsync file. Note: any exception during the sync process will be interpreted as a tragic exception and the writer will be closed before raising the exception.
        Throws:
        java.io.IOException
      • syncNeeded

        public boolean syncNeeded()
        Returns true if there are buffered operations that have not been flushed and fsynced to disk or if the latest global checkpoint has not yet been fsynced
      • closeIntoReader

        public TranslogReader closeIntoReader()
                                       throws java.io.IOException
        Closes this writer and transfers its underlying file channel to a new immutable TranslogReader
        Returns:
        a new TranslogReader
        Throws:
        java.io.IOException - if any of the file operations resulted in an I/O exception
      • syncUpTo

        public boolean syncUpTo​(long offset)
                         throws java.io.IOException
        Syncs the translog up to at least the given offset unless already synced
        Returns:
        true if this call caused an actual sync operation
        Throws:
        java.io.IOException
      • readBytes

        protected void readBytes​(java.nio.ByteBuffer targetBuffer,
                                 long position)
                          throws java.io.IOException
        Description copied from class: BaseTranslogReader
        reads bytes at position into the given buffer, filling it.
        Specified by:
        readBytes in class BaseTranslogReader
        Throws:
        java.io.IOException
      • ensureOpen

        protected final void ensureOpen()
      • close

        public final void close()
                         throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException
      • isClosed

        protected final boolean isClosed()