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
`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 and Description
`Node(int id, Directory dir, SearcherFactory searcherFactory, PrintStream printStream)`

### Method Summary

All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
`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`