blob: a81779a87e85833f19a08bd37d7771c17ad45e55 [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Class IndexReplicationHandler
| Apache Lucene.NET 4.8.0-beta00010 Documentation </title>
<meta name="viewport" content="width=device-width">
<meta name="title" content="Class IndexReplicationHandler
| Apache Lucene.NET 4.8.0-beta00010 Documentation ">
<meta name="generator" content="docfx 2.56.0.0">
<link rel="shortcut icon" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/logo/favicon.ico">
<link rel="stylesheet" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.vendor.css">
<link rel="stylesheet" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.css">
<link rel="stylesheet" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/main.css">
<meta property="docfx:navrel" content="toc.html">
<meta property="docfx:tocrel" content="replicator/toc.html">
<meta property="docfx:rel" content="https://lucenenet.apache.org/docs/4.8.0-beta00009/">
</head>
<body data-spy="scroll" data-target="#affix" data-offset="120">
<div id="wrapper">
<header>
<nav id="autocollapse" class="navbar ng-scope" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">
<img id="logo" class="svg" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/logo/lucene-net-color.png" alt="">
</a>
</div>
<div class="collapse navbar-collapse" id="navbar">
<form class="navbar-form navbar-right" role="search" id="search">
<div class="form-group">
<input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
</div>
</form>
</div>
</div>
</nav>
<div class="subnav navbar navbar-default">
<div class="container hide-when-search">
<ul class="level0 breadcrumb">
<li>
<a href="https://lucenenet.apache.org/docs/4.8.0-beta00009/">API</a>
<span id="breadcrumb">
<ul class="breadcrumb">
<li></li>
</ul>
</span>
</li>
</ul>
</div>
</div>
</header>
<div class="container body-content">
<div id="search-results">
<div class="search-list"></div>
<div class="sr-items">
<p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
</div>
<ul id="pagination"></ul>
</div>
</div>
<div role="main" class="container body-content hide-when-search">
<div class="sidenav hide-when-search">
<a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
<div class="sidetoggle collapse" id="sidetoggle">
<div id="sidetoc"></div>
</div>
</div>
<div class="article row grid-right">
<div class="col-md-10">
<article class="content wrap" id="_content" data-uid="Lucene.Net.Replicator.IndexReplicationHandler">
<h1 id="Lucene_Net_Replicator_IndexReplicationHandler" data-uid="Lucene.Net.Replicator.IndexReplicationHandler" class="text-break">Class IndexReplicationHandler
</h1>
<div class="markdown level0 summary"><p>A <a class="xref" href="Lucene.Net.Replicator.IReplicationHandler.html">IReplicationHandler</a> for replication of an index. Implements
<a class="xref" href="Lucene.Net.Replicator.IndexReplicationHandler.html#Lucene_Net_Replicator_IndexReplicationHandler_RevisionReady_System_String_System_Collections_Generic_IDictionary_System_String_System_Collections_Generic_IList_Lucene_Net_Replicator_RevisionFile___System_Collections_Generic_IDictionary_System_String_System_Collections_Generic_IList_System_String___System_Collections_Generic_IDictionary_System_String_Lucene_Net_Store_Directory__">RevisionReady(String, IDictionary&lt;String, IList&lt;RevisionFile&gt;&gt;, IDictionary&lt;String, IList&lt;String&gt;&gt;, IDictionary&lt;String, Directory&gt;)</a> by copying the files pointed by the client resolver to
the index <span class="xref">Lucene.Net.Store.Directory</span> and then touches the index with
<span class="xref">Lucene.Net.Index.IndexWriter</span> to make sure any unused files are deleted.</p>
</div>
<div class="markdown level0 conceptual"></div>
<div class="inheritance">
<h5>Inheritance</h5>
<div class="level0"><span class="xref">System.Object</span></div>
<div class="level1"><span class="xref">IndexReplicationHandler</span></div>
</div>
<div classs="implements">
<h5>Implements</h5>
<div><a class="xref" href="Lucene.Net.Replicator.IReplicationHandler.html">IReplicationHandler</a></div>
</div>
<div class="inheritedMembers">
<h5>Inherited Members</h5>
<div>
<span class="xref">System.Object.Equals(System.Object)</span>
</div>
<div>
<span class="xref">System.Object.Equals(System.Object, System.Object)</span>
</div>
<div>
<span class="xref">System.Object.GetHashCode()</span>
</div>
<div>
<span class="xref">System.Object.GetType()</span>
</div>
<div>
<span class="xref">System.Object.MemberwiseClone()</span>
</div>
<div>
<span class="xref">System.Object.ReferenceEquals(System.Object, System.Object)</span>
</div>
<div>
<span class="xref">System.Object.ToString()</span>
</div>
</div>
<h6><strong>Namespace</strong>: <a class="xref" href="Lucene.Net.Replicator.html">Lucene.Net.Replicator</a></h6>
<h6><strong>Assembly</strong>: Lucene.Net.Replicator.dll</h6>
<h5 id="Lucene_Net_Replicator_IndexReplicationHandler_syntax">Syntax</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class IndexReplicationHandler : IReplicationHandler</code></pre>
</div>
<h5 id="Lucene_Net_Replicator_IndexReplicationHandler_remarks"><strong>Remarks</strong></h5>
<div class="markdown level0 remarks"><p><strong>NOTE:</strong> This handler assumes that <span class="xref">Lucene.Net.Index.IndexWriter</span> is not opened by
another process on the index directory. In fact, opening an
<span class="xref">Lucene.Net.Index.IndexWriter</span> on the same directory to which files are copied can lead
to undefined behavior, where some or all the files will be deleted, override
other files or simply create a mess. When you replicate an index, it is best
if the index is never modified by <span class="xref">Lucene.Net.Index.IndexWriter</span>, except the one that is
open on the source index, from which you replicate.
<p>
This handler notifies the application via a provided <see cref="T:Func{bool?}"></see> when an
updated index commit was made available for it.
<p>
<div class="lucene-block lucene-experimental">This is a Lucene.NET EXPERIMENTAL API, use at your own risk</div></div>
<h3 id="constructors">Constructors
</h3>
<span class="small pull-right mobile-hide">
<span class="divider">|</span>
<a href="https://github.com/apache/lucenenet/new/docs/4.8.0-beta00010/websites/apidocs/apiSpec/new?filename=Lucene_Net_Replicator_IndexReplicationHandler__ctor_Lucene_Net_Store_Directory_System_Func_System_Nullable_System_Boolean___.md&amp;value=---%0Auid%3A%20Lucene.Net.Replicator.IndexReplicationHandler.%23ctor(Lucene.Net.Store.Directory%2CSystem.Func%7BSystem.Nullable%7BSystem.Boolean%7D%7D)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
</span>
<span class="small pull-right mobile-hide">
<a href="https://github.com/NightOwl888/lucenenet/blob/release/Lucene.Net_4_8_0_beta00010/src/Lucene.Net.Replicator/IndexReplicationHandler.cs/#L241">View Source</a>
</span>
<a id="Lucene_Net_Replicator_IndexReplicationHandler__ctor_" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.#ctor*"></a>
<h4 id="Lucene_Net_Replicator_IndexReplicationHandler__ctor_Lucene_Net_Store_Directory_System_Func_System_Nullable_System_Boolean___" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.#ctor(Lucene.Net.Store.Directory,System.Func{System.Nullable{System.Boolean}})">IndexReplicationHandler(Directory, Func&lt;Nullable&lt;Boolean&gt;&gt;)</h4>
<div class="markdown level1 summary"><p>Constructor with the given index directory and callback to notify when the
indexes were updated.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IndexReplicationHandler(Directory indexDirectory, Func&lt;bool?&gt; callback)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">Lucene.Net.Store.Directory</span></td>
<td><span class="parametername">indexDirectory</span></td>
<td></td>
</tr>
<tr>
<td><span class="xref">System.Func</span>&lt;<span class="xref">System.Nullable</span>&lt;<span class="xref">System.Boolean</span>&gt;&gt;</td>
<td><span class="parametername">callback</span></td>
<td></td>
</tr>
</tbody>
</table>
<h3 id="fields">Fields
</h3>
<span class="small pull-right mobile-hide">
<span class="divider">|</span>
<a href="https://github.com/apache/lucenenet/new/docs/4.8.0-beta00010/websites/apidocs/apiSpec/new?filename=Lucene_Net_Replicator_IndexReplicationHandler_INFO_STREAM_COMPONENT.md&amp;value=---%0Auid%3A%20Lucene.Net.Replicator.IndexReplicationHandler.INFO_STREAM_COMPONENT%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
</span>
<span class="small pull-right mobile-hide">
<a href="https://github.com/NightOwl888/lucenenet/blob/release/Lucene.Net_4_8_0_beta00010/src/Lucene.Net.Replicator/IndexReplicationHandler.cs/#L57">View Source</a>
</span>
<h4 id="Lucene_Net_Replicator_IndexReplicationHandler_INFO_STREAM_COMPONENT" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.INFO_STREAM_COMPONENT">INFO_STREAM_COMPONENT</h4>
<div class="markdown level1 summary"><p>The component used to log messages to the <a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Util.InfoStream.html#Lucene_Net_Util_InfoStream_Default">Default</a>
<span class="xref">Lucene.Net.Util.InfoStream</span>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string INFO_STREAM_COMPONENT = &quot;IndexReplicationHandler&quot;</code></pre>
</div>
<h5 class="fieldValue">Field Value</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.String</span></td>
<td></td>
</tr>
</tbody>
</table>
<h3 id="properties">Properties
</h3>
<span class="small pull-right mobile-hide">
<span class="divider">|</span>
<a href="https://github.com/apache/lucenenet/new/docs/4.8.0-beta00010/websites/apidocs/apiSpec/new?filename=Lucene_Net_Replicator_IndexReplicationHandler_CurrentRevisionFiles.md&amp;value=---%0Auid%3A%20Lucene.Net.Replicator.IndexReplicationHandler.CurrentRevisionFiles%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
</span>
<span class="small pull-right mobile-hide">
<a href="https://github.com/NightOwl888/lucenenet/blob/release/Lucene.Net_4_8_0_beta00010/src/Lucene.Net.Replicator/IndexReplicationHandler.cs/#L266">View Source</a>
</span>
<a id="Lucene_Net_Replicator_IndexReplicationHandler_CurrentRevisionFiles_" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.CurrentRevisionFiles*"></a>
<h4 id="Lucene_Net_Replicator_IndexReplicationHandler_CurrentRevisionFiles" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.CurrentRevisionFiles">CurrentRevisionFiles</h4>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public virtual IDictionary&lt;string, IList&lt;RevisionFile&gt;&gt; CurrentRevisionFiles { get; }</code></pre>
</div>
<h5 class="propertyValue">Property Value</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.Collections.Generic.IDictionary</span>&lt;<span class="xref">System.String</span>, <span class="xref">System.Collections.Generic.IList</span>&lt;<a class="xref" href="Lucene.Net.Replicator.RevisionFile.html">RevisionFile</a>&gt;&gt;</td>
<td></td>
</tr>
</tbody>
</table>
<span class="small pull-right mobile-hide">
<span class="divider">|</span>
<a href="https://github.com/apache/lucenenet/new/docs/4.8.0-beta00010/websites/apidocs/apiSpec/new?filename=Lucene_Net_Replicator_IndexReplicationHandler_CurrentVersion.md&amp;value=---%0Auid%3A%20Lucene.Net.Replicator.IndexReplicationHandler.CurrentVersion%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
</span>
<span class="small pull-right mobile-hide">
<a href="https://github.com/NightOwl888/lucenenet/blob/release/Lucene.Net_4_8_0_beta00010/src/Lucene.Net.Replicator/IndexReplicationHandler.cs/#L264">View Source</a>
</span>
<a id="Lucene_Net_Replicator_IndexReplicationHandler_CurrentVersion_" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.CurrentVersion*"></a>
<h4 id="Lucene_Net_Replicator_IndexReplicationHandler_CurrentVersion" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.CurrentVersion">CurrentVersion</h4>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public virtual string CurrentVersion { get; }</code></pre>
</div>
<h5 class="propertyValue">Property Value</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.String</span></td>
<td></td>
</tr>
</tbody>
</table>
<span class="small pull-right mobile-hide">
<span class="divider">|</span>
<a href="https://github.com/apache/lucenenet/new/docs/4.8.0-beta00010/websites/apidocs/apiSpec/new?filename=Lucene_Net_Replicator_IndexReplicationHandler_InfoStream.md&amp;value=---%0Auid%3A%20Lucene.Net.Replicator.IndexReplicationHandler.InfoStream%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
</span>
<span class="small pull-right mobile-hide">
<a href="https://github.com/NightOwl888/lucenenet/blob/release/Lucene.Net_4_8_0_beta00010/src/Lucene.Net.Replicator/IndexReplicationHandler.cs/#L337">View Source</a>
</span>
<a id="Lucene_Net_Replicator_IndexReplicationHandler_InfoStream_" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.InfoStream*"></a>
<h4 id="Lucene_Net_Replicator_IndexReplicationHandler_InfoStream" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.InfoStream">InfoStream</h4>
<div class="markdown level1 summary"><p>Gets or sets the <span class="xref">Lucene.Net.Util.InfoStream</span> to use for logging messages.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public virtual InfoStream InfoStream { get; set; }</code></pre>
</div>
<h5 class="propertyValue">Property Value</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">Lucene.Net.Util.InfoStream</span></td>
<td></td>
</tr>
</tbody>
</table>
<h3 id="methods">Methods
</h3>
<span class="small pull-right mobile-hide">
<span class="divider">|</span>
<a href="https://github.com/apache/lucenenet/new/docs/4.8.0-beta00010/websites/apidocs/apiSpec/new?filename=Lucene_Net_Replicator_IndexReplicationHandler_CleanupFilesOnFailure_Lucene_Net_Store_Directory_System_Collections_Generic_IList_System_String__.md&amp;value=---%0Auid%3A%20Lucene.Net.Replicator.IndexReplicationHandler.CleanupFilesOnFailure(Lucene.Net.Store.Directory%2CSystem.Collections.Generic.IList%7BSystem.String%7D)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
</span>
<span class="small pull-right mobile-hide">
<a href="https://github.com/NightOwl888/lucenenet/blob/release/Lucene.Net_4_8_0_beta00010/src/Lucene.Net.Replicator/IndexReplicationHandler.cs/#L133">View Source</a>
</span>
<a id="Lucene_Net_Replicator_IndexReplicationHandler_CleanupFilesOnFailure_" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.CleanupFilesOnFailure*"></a>
<h4 id="Lucene_Net_Replicator_IndexReplicationHandler_CleanupFilesOnFailure_Lucene_Net_Store_Directory_System_Collections_Generic_IList_System_String__" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.CleanupFilesOnFailure(Lucene.Net.Store.Directory,System.Collections.Generic.IList{System.String})">CleanupFilesOnFailure(Directory, IList&lt;String&gt;)</h4>
<div class="markdown level1 summary"><p>Cleanup the index directory by deleting all given files. Called when file
copy or sync failed.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void CleanupFilesOnFailure(Directory directory, IList&lt;string&gt; files)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">Lucene.Net.Store.Directory</span></td>
<td><span class="parametername">directory</span></td>
<td></td>
</tr>
<tr>
<td><span class="xref">System.Collections.Generic.IList</span>&lt;<span class="xref">System.String</span>&gt;</td>
<td><span class="parametername">files</span></td>
<td></td>
</tr>
</tbody>
</table>
<span class="small pull-right mobile-hide">
<span class="divider">|</span>
<a href="https://github.com/apache/lucenenet/new/docs/4.8.0-beta00010/websites/apidocs/apiSpec/new?filename=Lucene_Net_Replicator_IndexReplicationHandler_CleanupOldIndexFiles_Lucene_Net_Store_Directory_System_String_.md&amp;value=---%0Auid%3A%20Lucene.Net.Replicator.IndexReplicationHandler.CleanupOldIndexFiles(Lucene.Net.Store.Directory%2CSystem.String)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
</span>
<span class="small pull-right mobile-hide">
<a href="https://github.com/NightOwl888/lucenenet/blob/release/Lucene.Net_4_8_0_beta00010/src/Lucene.Net.Replicator/IndexReplicationHandler.cs/#L160">View Source</a>
</span>
<a id="Lucene_Net_Replicator_IndexReplicationHandler_CleanupOldIndexFiles_" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.CleanupOldIndexFiles*"></a>
<h4 id="Lucene_Net_Replicator_IndexReplicationHandler_CleanupOldIndexFiles_Lucene_Net_Store_Directory_System_String_" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.CleanupOldIndexFiles(Lucene.Net.Store.Directory,System.String)">CleanupOldIndexFiles(Directory, String)</h4>
<div class="markdown level1 summary"><p>Cleans up the index directory from old index files. This method uses the
last commit found by <a class="xref" href="Lucene.Net.Replicator.IndexReplicationHandler.html#Lucene_Net_Replicator_IndexReplicationHandler_GetLastCommit_Lucene_Net_Store_Directory_">GetLastCommit(Directory)</a>. If it matches the
expected <code data-dev-comment-type="paramref" class="paramref">segmentsFile</code>, then all files not referenced by this commit point
are deleted.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void CleanupOldIndexFiles(Directory directory, string segmentsFile)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">Lucene.Net.Store.Directory</span></td>
<td><span class="parametername">directory</span></td>
<td></td>
</tr>
<tr>
<td><span class="xref">System.String</span></td>
<td><span class="parametername">segmentsFile</span></td>
<td></td>
</tr>
</tbody>
</table>
<h5 id="Lucene_Net_Replicator_IndexReplicationHandler_CleanupOldIndexFiles_Lucene_Net_Store_Directory_System_String__remarks">Remarks</h5>
<div class="markdown level1 remarks"><p><strong>NOTE:</strong> This method does a best effort attempt to clean the index
directory. It suppresses any exceptions that occur, as this can be retried
the next time.</p>
</div>
<span class="small pull-right mobile-hide">
<span class="divider">|</span>
<a href="https://github.com/apache/lucenenet/new/docs/4.8.0-beta00010/websites/apidocs/apiSpec/new?filename=Lucene_Net_Replicator_IndexReplicationHandler_CopyFiles_Lucene_Net_Store_Directory_Lucene_Net_Store_Directory_System_Collections_Generic_IList_System_String__.md&amp;value=---%0Auid%3A%20Lucene.Net.Replicator.IndexReplicationHandler.CopyFiles(Lucene.Net.Store.Directory%2CLucene.Net.Store.Directory%2CSystem.Collections.Generic.IList%7BSystem.String%7D)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
</span>
<span class="small pull-right mobile-hide">
<a href="https://github.com/NightOwl888/lucenenet/blob/release/Lucene.Net_4_8_0_beta00010/src/Lucene.Net.Replicator/IndexReplicationHandler.cs/#L205">View Source</a>
</span>
<a id="Lucene_Net_Replicator_IndexReplicationHandler_CopyFiles_" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.CopyFiles*"></a>
<h4 id="Lucene_Net_Replicator_IndexReplicationHandler_CopyFiles_Lucene_Net_Store_Directory_Lucene_Net_Store_Directory_System_Collections_Generic_IList_System_String__" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.CopyFiles(Lucene.Net.Store.Directory,Lucene.Net.Store.Directory,System.Collections.Generic.IList{System.String})">CopyFiles(Directory, Directory, IList&lt;String&gt;)</h4>
<div class="markdown level1 summary"><p>Copies the provided list of files from the <code data-dev-comment-type="paramref" class="paramref">source</code> <span class="xref">Lucene.Net.Store.Directory</span> to the
<code data-dev-comment-type="paramref" class="paramref">target</code> <span class="xref">Lucene.Net.Store.Directory</span>, if they are not the same.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void CopyFiles(Directory source, Directory target, IList&lt;string&gt; files)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">Lucene.Net.Store.Directory</span></td>
<td><span class="parametername">source</span></td>
<td></td>
</tr>
<tr>
<td><span class="xref">Lucene.Net.Store.Directory</span></td>
<td><span class="parametername">target</span></td>
<td></td>
</tr>
<tr>
<td><span class="xref">System.Collections.Generic.IList</span>&lt;<span class="xref">System.String</span>&gt;</td>
<td><span class="parametername">files</span></td>
<td></td>
</tr>
</tbody>
</table>
<h5 class="exceptions">Exceptions</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Condition</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.IO.IOException</span></td>
<td></td>
</tr>
</tbody>
</table>
<span class="small pull-right mobile-hide">
<span class="divider">|</span>
<a href="https://github.com/apache/lucenenet/new/docs/4.8.0-beta00010/websites/apidocs/apiSpec/new?filename=Lucene_Net_Replicator_IndexReplicationHandler_GetLastCommit_Lucene_Net_Store_Directory_.md&amp;value=---%0Auid%3A%20Lucene.Net.Replicator.IndexReplicationHandler.GetLastCommit(Lucene.Net.Store.Directory)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
</span>
<span class="small pull-right mobile-hide">
<a href="https://github.com/NightOwl888/lucenenet/blob/release/Lucene.Net_4_8_0_beta00010/src/Lucene.Net.Replicator/IndexReplicationHandler.cs/#L81">View Source</a>
</span>
<a id="Lucene_Net_Replicator_IndexReplicationHandler_GetLastCommit_" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.GetLastCommit*"></a>
<h4 id="Lucene_Net_Replicator_IndexReplicationHandler_GetLastCommit_Lucene_Net_Store_Directory_" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.GetLastCommit(Lucene.Net.Store.Directory)">GetLastCommit(Directory)</h4>
<div class="markdown level1 summary"><p>Returns the last <span class="xref">Lucene.Net.Index.IndexCommit</span> found in the <span class="xref">Lucene.Net.Store.Directory</span>, or
<code>null</code> if there are no commits.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static IndexCommit GetLastCommit(Directory directory)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">Lucene.Net.Store.Directory</span></td>
<td><span class="parametername">directory</span></td>
<td></td>
</tr>
</tbody>
</table>
<h5 class="returns">Returns</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">Lucene.Net.Index.IndexCommit</span></td>
<td></td>
</tr>
</tbody>
</table>
<h5 class="exceptions">Exceptions</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Condition</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.IO.IOException</span></td>
<td></td>
</tr>
</tbody>
</table>
<span class="small pull-right mobile-hide">
<span class="divider">|</span>
<a href="https://github.com/apache/lucenenet/new/docs/4.8.0-beta00010/websites/apidocs/apiSpec/new?filename=Lucene_Net_Replicator_IndexReplicationHandler_GetSegmentsFile_System_Collections_Generic_IList_System_String__System_Boolean_.md&amp;value=---%0Auid%3A%20Lucene.Net.Replicator.IndexReplicationHandler.GetSegmentsFile(System.Collections.Generic.IList%7BSystem.String%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
</span>
<span class="small pull-right mobile-hide">
<a href="https://github.com/NightOwl888/lucenenet/blob/release/Lucene.Net_4_8_0_beta00010/src/Lucene.Net.Replicator/IndexReplicationHandler.cs/#L109">View Source</a>
</span>
<a id="Lucene_Net_Replicator_IndexReplicationHandler_GetSegmentsFile_" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.GetSegmentsFile*"></a>
<h4 id="Lucene_Net_Replicator_IndexReplicationHandler_GetSegmentsFile_System_Collections_Generic_IList_System_String__System_Boolean_" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.GetSegmentsFile(System.Collections.Generic.IList{System.String},System.Boolean)">GetSegmentsFile(IList&lt;String&gt;, Boolean)</h4>
<div class="markdown level1 summary"><p>Verifies that the last file is segments_N and fails otherwise. It also
removes and returns the file from the list, because it needs to be handled
last, after all files. This is important in order to guarantee that if a
reader sees the new segments_N, all other segment files are already on
stable storage.
<p>
The reason why the code fails instead of putting segments_N file last is
that this indicates an error in the <a class="xref" href="Lucene.Net.Replicator.IRevision.html">IRevision</a> implementation.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string GetSegmentsFile(IList&lt;string&gt; files, bool allowEmpty)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.Collections.Generic.IList</span>&lt;<span class="xref">System.String</span>&gt;</td>
<td><span class="parametername">files</span></td>
<td></td>
</tr>
<tr>
<td><span class="xref">System.Boolean</span></td>
<td><span class="parametername">allowEmpty</span></td>
<td></td>
</tr>
</tbody>
</table>
<h5 class="returns">Returns</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.String</span></td>
<td></td>
</tr>
</tbody>
</table>
<span class="small pull-right mobile-hide">
<span class="divider">|</span>
<a href="https://github.com/apache/lucenenet/new/docs/4.8.0-beta00010/websites/apidocs/apiSpec/new?filename=Lucene_Net_Replicator_IndexReplicationHandler_RevisionReady_System_String_System_Collections_Generic_IDictionary_System_String_System_Collections_Generic_IList_Lucene_Net_Replicator_RevisionFile___System_Collections_Generic_IDictionary_System_String_System_Collections_Generic_IList_System_String___System_Collections_Generic_IDictionary_System_String_Lucene_Net_Store_Directory__.md&amp;value=---%0Auid%3A%20Lucene.Net.Replicator.IndexReplicationHandler.RevisionReady(System.String%2CSystem.Collections.Generic.IDictionary%7BSystem.String%2CSystem.Collections.Generic.IList%7BLucene.Net.Replicator.RevisionFile%7D%7D%2CSystem.Collections.Generic.IDictionary%7BSystem.String%2CSystem.Collections.Generic.IList%7BSystem.String%7D%7D%2CSystem.Collections.Generic.IDictionary%7BSystem.String%2CLucene.Net.Store.Directory%7D)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
</span>
<span class="small pull-right mobile-hide">
<a href="https://github.com/NightOwl888/lucenenet/blob/release/Lucene.Net_4_8_0_beta00010/src/Lucene.Net.Replicator/IndexReplicationHandler.cs/#L268">View Source</a>
</span>
<a id="Lucene_Net_Replicator_IndexReplicationHandler_RevisionReady_" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.RevisionReady*"></a>
<h4 id="Lucene_Net_Replicator_IndexReplicationHandler_RevisionReady_System_String_System_Collections_Generic_IDictionary_System_String_System_Collections_Generic_IList_Lucene_Net_Replicator_RevisionFile___System_Collections_Generic_IDictionary_System_String_System_Collections_Generic_IList_System_String___System_Collections_Generic_IDictionary_System_String_Lucene_Net_Store_Directory__" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.RevisionReady(System.String,System.Collections.Generic.IDictionary{System.String,System.Collections.Generic.IList{Lucene.Net.Replicator.RevisionFile}},System.Collections.Generic.IDictionary{System.String,System.Collections.Generic.IList{System.String}},System.Collections.Generic.IDictionary{System.String,Lucene.Net.Store.Directory})">RevisionReady(String, IDictionary&lt;String, IList&lt;RevisionFile&gt;&gt;, IDictionary&lt;String, IList&lt;String&gt;&gt;, IDictionary&lt;String, Directory&gt;)</h4>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public virtual void RevisionReady(string version, IDictionary&lt;string, IList&lt;RevisionFile&gt;&gt; revisionFiles, IDictionary&lt;string, IList&lt;string&gt;&gt; copiedFiles, IDictionary&lt;string, Directory&gt; sourceDirectory)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.String</span></td>
<td><span class="parametername">version</span></td>
<td></td>
</tr>
<tr>
<td><span class="xref">System.Collections.Generic.IDictionary</span>&lt;<span class="xref">System.String</span>, <span class="xref">System.Collections.Generic.IList</span>&lt;<a class="xref" href="Lucene.Net.Replicator.RevisionFile.html">RevisionFile</a>&gt;&gt;</td>
<td><span class="parametername">revisionFiles</span></td>
<td></td>
</tr>
<tr>
<td><span class="xref">System.Collections.Generic.IDictionary</span>&lt;<span class="xref">System.String</span>, <span class="xref">System.Collections.Generic.IList</span>&lt;<span class="xref">System.String</span>&gt;&gt;</td>
<td><span class="parametername">copiedFiles</span></td>
<td></td>
</tr>
<tr>
<td><span class="xref">System.Collections.Generic.IDictionary</span>&lt;<span class="xref">System.String</span>, <span class="xref">Lucene.Net.Store.Directory</span>&gt;</td>
<td><span class="parametername">sourceDirectory</span></td>
<td></td>
</tr>
</tbody>
</table>
<span class="small pull-right mobile-hide">
<span class="divider">|</span>
<a href="https://github.com/apache/lucenenet/new/docs/4.8.0-beta00010/websites/apidocs/apiSpec/new?filename=Lucene_Net_Replicator_IndexReplicationHandler_WriteSegmentsGen_System_String_Lucene_Net_Store_Directory_.md&amp;value=---%0Auid%3A%20Lucene.Net.Replicator.IndexReplicationHandler.WriteSegmentsGen(System.String%2CLucene.Net.Store.Directory)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
</span>
<span class="small pull-right mobile-hide">
<a href="https://github.com/NightOwl888/lucenenet/blob/release/Lucene.Net_4_8_0_beta00010/src/Lucene.Net.Replicator/IndexReplicationHandler.cs/#L219">View Source</a>
</span>
<a id="Lucene_Net_Replicator_IndexReplicationHandler_WriteSegmentsGen_" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.WriteSegmentsGen*"></a>
<h4 id="Lucene_Net_Replicator_IndexReplicationHandler_WriteSegmentsGen_System_String_Lucene_Net_Store_Directory_" data-uid="Lucene.Net.Replicator.IndexReplicationHandler.WriteSegmentsGen(System.String,Lucene.Net.Store.Directory)">WriteSegmentsGen(String, Directory)</h4>
<div class="markdown level1 summary"><p>Writes <a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Index.IndexFileNames.html#Lucene_Net_Index_IndexFileNames_SEGMENTS_GEN">SEGMENTS_GEN</a> file to the directory, reading
the generation from the given <code data-dev-comment-type="paramref" class="paramref">segmentsFile</code>. If it is <code>null</code>,
this method deletes segments.gen from the directory.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void WriteSegmentsGen(string segmentsFile, Directory directory)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.String</span></td>
<td><span class="parametername">segmentsFile</span></td>
<td></td>
</tr>
<tr>
<td><span class="xref">Lucene.Net.Store.Directory</span></td>
<td><span class="parametername">directory</span></td>
<td></td>
</tr>
</tbody>
</table>
<h3 id="implements">Implements</h3>
<div>
<a class="xref" href="Lucene.Net.Replicator.IReplicationHandler.html">IReplicationHandler</a>
</div>
</article>
</div>
<div class="hidden-sm col-md-2" role="complementary">
<div class="sideaffix">
<div class="contribution">
<ul class="nav">
<li>
<a href="https://github.com/apache/lucenenet/new/docs/4.8.0-beta00010/websites/apidocs/apiSpec/new?filename=Lucene_Net_Replicator_IndexReplicationHandler.md&amp;value=---%0Auid%3A%20Lucene.Net.Replicator.IndexReplicationHandler%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" class="contribution-link">Improve this Doc</a>
</li>
<li>
<a href="https://github.com/apache/lucenenet/blob/release/Lucene.Net_4_8_0_beta00010/src/Lucene.Net.Replicator/IndexReplicationHandler.cs/#L51" class="contribution-link">View Source</a>
</li>
</ul>
</div>
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
<!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
</nav>
</div>
</div>
</div>
</div>
<footer>
<div class="grad-bottom"></div>
<div class="footer">
<div class="container">
<span class="pull-right">
<a href="#top">Back to top</a>
</span>
Copyright © 2020 Licensed to the Apache Software Foundation (ASF)
</div>
</div>
</footer>
</div>
<script type="text/javascript" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.vendor.js"></script>
<script type="text/javascript" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.js"></script>
<script type="text/javascript" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/main.js"></script>
</body>
</html>