Package org.apache.lucene.replicator.nrt

## Class Node

- java.lang.Object
- - org.apache.lucene.replicator.nrt.Node

- All Implemented Interfaces:
    `Closeable`, `AutoCloseable`
  Direct Known Subclasses:
    `PrimaryNode`, `ReplicaNode`

      public abstract class Node
      extends Object
      implements Closeable

  Common base class for `PrimaryNode` and `ReplicaNode`.
  WARNING: This API is experimental and might change in incompatible ways in the next release.

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected Directory` | `dir` |
    `static long` | `globalStartNS` | Startup time of original test, carefully propogated to all nodes to produce consistent "seconds since start time" in messages
    `protected int` | `id` | Compact ordinal for this node
    `protected Map<String,​FileMetaData>` | `lastFileMetaData` | File metadata for last sync that succeeded; we use this as a cache
    `static long` | `localStartNS` | When this node was started
    `protected ReferenceManager<IndexSearcher>` | `mgr` |
    `static String` | `PRIMARY_GEN_KEY` | Key to store the primary gen in the commit data, which increments every time we promote a new primary, so replicas can detect when the primary they were talking to is changed
    `protected PrintStream` | `printStream` | For debug logging
    `protected SearcherFactory` | `searcherFactory` |
    `static boolean` | `VERBOSE_CONNECTIONS` |
    `static boolean` | `VERBOSE_FILES` |
    `static String` | `VERSION_KEY` | Key to store the version in the commit data, which increments every time we open a new NRT reader

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Node​(int id, Directory dir, SearcherFactory searcherFactory, PrintStream printStream)` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static String` | `bytesToString​(long bytes)` |
    `abstract void` | `commit()` |
    `long` | `getCurrentSearchingVersion()` |
    `Directory` | `getDirectory()` | Returns the `Directory` this node is writing to
    `ReferenceManager<IndexSearcher>` | `getSearcherManager()` | Returns the `ReferenceManager` to use for acquiring and releasing searchers
    `abstract boolean` | `isClosed()` |
    `void` | `message​(String message)` |
    `String` | `name()` |
    `static void` | `nodeMessage​(PrintStream printStream, int id, String message)` |
    `static void` | `nodeMessage​(PrintStream printStream, String message)` |
    `FileMetaData` | `readLocalFileMetaData​(String fileName)` | Opens the specified file, reads its identifying information, including file length, full index header (includes the unique segment ID) and the full footer (includes checksum), and returns the resulting `FileMetaData`.
    `String` | `toString()` |

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

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

    - ### Methods inherited from interface java.io.Closeable

      `close`

- - ### Field Detail

    - #### VERBOSE_FILES

          public static boolean VERBOSE_FILES

    - #### VERBOSE_CONNECTIONS

          public static boolean VERBOSE_CONNECTIONS

    - #### PRIMARY_GEN_KEY

          public static String PRIMARY_GEN_KEY

      Key to store the primary gen in the commit data, which increments every time we promote a new primary, so replicas can detect when the primary they were talking to is changed

    - #### VERSION_KEY

          public static String VERSION_KEY

      Key to store the version in the commit data, which increments every time we open a new NRT reader

    - #### id

          protected final int id

      Compact ordinal for this node

    - #### dir

          protected final Directory dir

    - #### searcherFactory

          protected final SearcherFactory searcherFactory

    - #### mgr

          protected ReferenceManager<IndexSearcher> mgr

    - #### globalStartNS

          public static long globalStartNS

      Startup time of original test, carefully propogated to all nodes to produce consistent "seconds since start time" in messages

    - #### localStartNS

          public static final long localStartNS

      When this node was started

    - #### printStream

          protected final PrintStream printStream

      For debug logging

    - #### lastFileMetaData

          protected volatile Map<String,​FileMetaData> lastFileMetaData

      File metadata for last sync that succeeded; we use this as a cache

  - ### Constructor Detail

    - #### Node

          public Node​(int id,
                      Directory dir,
                      SearcherFactory searcherFactory,
                      PrintStream printStream)

  - ### Method Detail

    - #### getSearcherManager

          public ReferenceManager<IndexSearcher> getSearcherManager()

      Returns the `ReferenceManager` to use for acquiring and releasing searchers

    - #### getDirectory

          public Directory getDirectory()

      Returns the `Directory` this node is writing to

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### commit

          public abstract void commit()
                               throws IOException

      Throws:
        `IOException`

    - #### nodeMessage

          public static void nodeMessage​(PrintStream printStream,
                                         String message)

    - #### nodeMessage

          public static void nodeMessage​(PrintStream printStream,
                                         int id,
                                         String message)

    - #### message

          public void message​(String message)

    - #### name

          public String name()

    - #### isClosed

          public abstract boolean isClosed()

    - #### getCurrentSearchingVersion

          public long getCurrentSearchingVersion()
                                          throws IOException

      Throws:
        `IOException`

    - #### bytesToString

          public static String bytesToString​(long bytes)

    - #### readLocalFileMetaData

          public FileMetaData readLocalFileMetaData​(String fileName)
                                             throws IOException

      Opens the specified file, reads its identifying information, including file length, full index header (includes the unique segment ID) and the full footer (includes checksum), and returns the resulting `FileMetaData`.

      This returns null, logging a message, if there are any problems (the file does not exist, is corrupt, truncated, etc.).

      Throws:
        `IOException`