|
|
@@ -1020,21 +1020,14 @@ public class InternalEngine extends Engine {
|
|
|
*/
|
|
|
private boolean mayHaveBeenIndexedBefore(Index index) {
|
|
|
assert canOptimizeAddDocument(index);
|
|
|
- boolean mayHaveBeenIndexBefore;
|
|
|
- long deOptimizeTimestamp = maxUnsafeAutoIdTimestamp.get();
|
|
|
+ final boolean mayHaveBeenIndexBefore;
|
|
|
if (index.isRetry()) {
|
|
|
mayHaveBeenIndexBefore = true;
|
|
|
- do {
|
|
|
- deOptimizeTimestamp = maxUnsafeAutoIdTimestamp.get();
|
|
|
- if (deOptimizeTimestamp >= index.getAutoGeneratedIdTimestamp()) {
|
|
|
- break;
|
|
|
- }
|
|
|
- } while (maxUnsafeAutoIdTimestamp.compareAndSet(deOptimizeTimestamp,
|
|
|
- index.getAutoGeneratedIdTimestamp()) == false);
|
|
|
+ maxUnsafeAutoIdTimestamp.updateAndGet(curr -> Math.max(index.getAutoGeneratedIdTimestamp(), curr));
|
|
|
assert maxUnsafeAutoIdTimestamp.get() >= index.getAutoGeneratedIdTimestamp();
|
|
|
} else {
|
|
|
// in this case we force
|
|
|
- mayHaveBeenIndexBefore = deOptimizeTimestamp >= index.getAutoGeneratedIdTimestamp();
|
|
|
+ mayHaveBeenIndexBefore = maxUnsafeAutoIdTimestamp.get() >= index.getAutoGeneratedIdTimestamp();
|
|
|
}
|
|
|
return mayHaveBeenIndexBefore;
|
|
|
}
|