org.apache.flume.serialization

## Class DurablePositionTracker

- java.lang.Object
- - org.apache.flume.serialization.DurablePositionTracker

- All Implemented Interfaces:
    Closeable, AutoCloseable, PositionTracker

      @InterfaceAudience.Private
      @InterfaceStability.Evolving
      public class DurablePositionTracker
      extends Object
      implements PositionTracker

  Class that stores object state in an avro container file. The file is only ever appended to. At construction time, the object reads data from the end of the file and caches that data for use by a client application. After construction, reads never go to disk. Writes always flush to disk.

  Note: This class is not thread-safe.

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()`
    `static DurablePositionTracker` | `getInstance(File trackerFile, String target)` If the file exists at startup, then read it, roll it, and open a new one.
    `long` | `getPosition()`
    `String` | `getTarget()`
    `void` | `storePosition(long position)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Method Detail

    - #### getInstance

          public static DurablePositionTracker getInstance(File trackerFile,
                                           String target)
                                                    throws IOException

      If the file exists at startup, then read it, roll it, and open a new one. We go through this to avoid issues with partial reads at the end of the file from a previous crash. If we append to a bad record, our writes may never be visible.
      Parameters:
        `trackerFile` -
        `target` -
      Returns:
      Throws:
        `IOException`

    - #### storePosition

          public void storePosition(long position)
                             throws IOException

      Specified by:
        `storePosition` in interface `PositionTracker`
      Throws:
        `IOException`

    - #### getPosition

          public long getPosition()

      Specified by:
        `getPosition` in interface `PositionTracker`

    - #### getTarget

          public String getTarget()

      Specified by:
        `getTarget` in interface `PositionTracker`

    - #### close

          public void close()
                     throws IOException

      Specified by:
        `close` in interface `Closeable`
      Specified by:
        `close` in interface `AutoCloseable`
      Specified by:
        `close` in interface `PositionTracker`
      Throws:
        `IOException`

Copyright © 2009-2016 Apache Software Foundation. All Rights Reserved.