<p dir="auto">Since Lucene 4.4 release enable_position_increment settings on token filters cannot be set to false which results in underscores appearing for filtered tokens in shingle filters.</p>
<p dir="auto">In very rare cases, it is possible to have two snapshots of the same name exist in a repository, one found in the cluster state as a snapshot in progress, and the other found in the repository.  This can happen when a snapshot (lets call it <code class="notranslate">snap</code>) exists in the repository, and we try to create another snapshot with the same name <code class="notranslate">snap</code>.  When trying to create the second <code class="notranslate">snap</code>, <code class="notranslate">SnapshotsService#createSnapshot</code> first updates the cluster state to include the second 'snap' snapshot as a snapshot in progress, and then calls <code class="notranslate">SnapshotsService#beginSnapshot</code>, which checks if a snapshot by the same name already exists.  If a snapshot by the same name does exist, an exception is thrown, which results in calling <code class="notranslate">SnapshotsService#removeSnapshotFromClusterState</code>.  However, this call to remove the snapshot from the cluster state simply submits a cluster state update task for the cluster service to execute in its own update thread, and so there is a tiny window when the cluster state could have a snapshot in progress with the name <code class="notranslate">snap</code> and the repository could have the original snapshot named 'snap' in its storage.</p>
<p dir="auto">This affects the <code class="notranslate">SnapshotsService#deleteSnapshot</code> call, which looks through both the current snapshots and the snapshots in the repository storage, and it also affects <code class="notranslate">TransportGetSnapshotsAction</code> and <code class="notranslate">TransportSnapshotsStatusAction</code>, which have a very tiny window of time in which its possible to return two snapshots of the same name, or to return the current (soon-to-be-removed from the cluster state) snapshot when the snapshot in the repository storage is what was meant.</p>
<p dir="auto">For those wondering why we don't check if the snapshot name already exists before adding the new snapshot to the cluster state's snapshots in progress, the reason is because it can present race conditions of its own.  If two requests arrive to create a snapshot of the same name at the same time, because neither has yet to be added to the cluster state, it is possible that both pass the check and subsequently both eventually get created by the snapshots service.</p>