From 95e36a073a2a16147eb0661ebb4911495604a3b0 Mon Sep 17 00:00:00 2001 From: kimchy Date: Tue, 29 Mar 2011 01:28:37 +0200 Subject: [PATCH] move index/delete refresh to happen outside of the engine --- .../action/delete/TransportDeleteAction.java | 20 ++++++++++++-- .../index/TransportShardDeleteAction.java | 21 +++++++++++++-- .../action/index/TransportIndexAction.java | 18 ++++++++++--- .../elasticsearch/index/engine/Engine.java | 27 ------------------- .../index/engine/robin/RobinEngine.java | 9 ------- 5 files changed, 51 insertions(+), 44 deletions(-) diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/action/delete/TransportDeleteAction.java b/modules/elasticsearch/src/main/java/org/elasticsearch/action/delete/TransportDeleteAction.java index e96fbb30f40..3c402224f9f 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/action/delete/TransportDeleteAction.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/action/delete/TransportDeleteAction.java @@ -152,10 +152,18 @@ public class TransportDeleteAction extends TransportShardReplicationOperationAct Engine.Delete delete = indexShard.prepareDelete(request.type(), request.id(), request.version()) .versionType(request.versionType()) .origin(Engine.Operation.Origin.PRIMARY); - delete.refresh(request.refresh()); indexShard.delete(delete); // update the request with teh version so it will go to the replicas request.version(delete.version()); + + if (request.refresh()) { + try { + indexShard.refresh(new Engine.Refresh(false)); + } catch (Exception e) { + // ignore + } + } + DeleteResponse response = new DeleteResponse(request.index(), request.type(), request.id(), delete.version(), delete.notFound()); return new PrimaryResponse(response, null); } @@ -165,7 +173,15 @@ public class TransportDeleteAction extends TransportShardReplicationOperationAct IndexShard indexShard = indexShard(shardRequest); Engine.Delete delete = indexShard.prepareDelete(request.type(), request.id(), request.version()) .origin(Engine.Operation.Origin.REPLICA); - delete.refresh(request.refresh()); + + if (request.refresh()) { + try { + indexShard.refresh(new Engine.Refresh(false)); + } catch (Exception e) { + // ignore + } + } + indexShard.delete(delete); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/action/delete/index/TransportShardDeleteAction.java b/modules/elasticsearch/src/main/java/org/elasticsearch/action/delete/index/TransportShardDeleteAction.java index a33bb99c084..ea70b38702e 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/action/delete/index/TransportShardDeleteAction.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/action/delete/index/TransportShardDeleteAction.java @@ -75,10 +75,19 @@ public class TransportShardDeleteAction extends TransportShardReplicationOperati IndexShard indexShard = indexShard(shardRequest); Engine.Delete delete = indexShard.prepareDelete(request.type(), request.id(), request.version()) .origin(Engine.Operation.Origin.PRIMARY); - delete.refresh(request.refresh()); indexShard.delete(delete); // update the version to happen on the replicas request.version(delete.version()); + + if (request.refresh()) { + try { + indexShard.refresh(new Engine.Refresh(false)); + } catch (Exception e) { + // ignore + } + } + + ShardDeleteResponse response = new ShardDeleteResponse(delete.version(), delete.notFound()); return new PrimaryResponse(response, null); } @@ -88,8 +97,16 @@ public class TransportShardDeleteAction extends TransportShardReplicationOperati IndexShard indexShard = indexShard(shardRequest); Engine.Delete delete = indexShard.prepareDelete(request.type(), request.id(), request.version()) .origin(Engine.Operation.Origin.REPLICA); - delete.refresh(request.refresh()); indexShard.delete(delete); + + if (request.refresh()) { + try { + indexShard.refresh(new Engine.Refresh(false)); + } catch (Exception e) { + // ignore + } + } + } @Override protected ShardIterator shards(ClusterState clusterState, ShardDeleteRequest request) { diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/action/index/TransportIndexAction.java b/modules/elasticsearch/src/main/java/org/elasticsearch/action/index/TransportIndexAction.java index 6ea2884a060..d647c979523 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/action/index/TransportIndexAction.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/action/index/TransportIndexAction.java @@ -181,7 +181,6 @@ public class TransportIndexAction extends TransportShardReplicationOperationActi .version(request.version()) .versionType(request.versionType()) .origin(Engine.Operation.Origin.PRIMARY); - index.refresh(request.refresh()); doc = indexShard.index(index); version = index.version(); } else { @@ -189,10 +188,16 @@ public class TransportIndexAction extends TransportShardReplicationOperationActi .version(request.version()) .versionType(request.versionType()) .origin(Engine.Operation.Origin.PRIMARY); - create.refresh(request.refresh()); doc = indexShard.create(create); version = create.version(); } + if (request.refresh()) { + try { + indexShard.refresh(new Engine.Refresh(false)); + } catch (Exception e) { + // ignore + } + } if (doc.mappersAdded()) { updateMappingOnMaster(request); } @@ -225,15 +230,20 @@ public class TransportIndexAction extends TransportShardReplicationOperationActi Engine.Index index = indexShard.prepareIndex(sourceToParse) .version(request.version()) .origin(Engine.Operation.Origin.REPLICA); - index.refresh(request.refresh()); indexShard.index(index); } else { Engine.Create create = indexShard.prepareCreate(sourceToParse) .version(request.version()) .origin(Engine.Operation.Origin.REPLICA); - create.refresh(request.refresh()); indexShard.create(create); } + if (request.refresh()) { + try { + indexShard.refresh(new Engine.Refresh(false)); + } catch (Exception e) { + // ignore + } + } } private void updateMappingOnMaster(final IndexRequest request) { diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/index/engine/Engine.java b/modules/elasticsearch/src/main/java/org/elasticsearch/index/engine/Engine.java index c7b6a8eb176..af23688888d 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/index/engine/Engine.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/index/engine/Engine.java @@ -290,7 +290,6 @@ public interface Engine extends IndexShardComponent, CloseableComponent { static class Create implements Operation { private final Term uid; private final ParsedDocument doc; - private boolean refresh; private long version; private VersionType versionType = VersionType.INTERNAL; private Origin origin = Origin.PRIMARY; @@ -367,14 +366,6 @@ public interface Engine extends IndexShardComponent, CloseableComponent { return this.doc.source(); } - public boolean refresh() { - return refresh; - } - - public void refresh(boolean refresh) { - this.refresh = refresh; - } - public UidField uidField() { return (UidField) doc().getFieldable(UidFieldMapper.NAME); } @@ -383,7 +374,6 @@ public interface Engine extends IndexShardComponent, CloseableComponent { static class Index implements Operation { private final Term uid; private final ParsedDocument doc; - private boolean refresh; private long version; private VersionType versionType = VersionType.INTERNAL; private Origin origin = Origin.PRIMARY; @@ -460,14 +450,6 @@ public interface Engine extends IndexShardComponent, CloseableComponent { return this.doc.source(); } - public boolean refresh() { - return refresh; - } - - public void refresh(boolean refresh) { - this.refresh = refresh; - } - public UidField uidField() { return (UidField) doc().getFieldable(UidFieldMapper.NAME); } @@ -477,7 +459,6 @@ public interface Engine extends IndexShardComponent, CloseableComponent { private final String type; private final String id; private final Term uid; - private boolean refresh; private long version; private VersionType versionType = VersionType.INTERNAL; private Origin origin = Origin.PRIMARY; @@ -514,14 +495,6 @@ public interface Engine extends IndexShardComponent, CloseableComponent { return this.uid; } - public boolean refresh() { - return refresh; - } - - public void refresh(boolean refresh) { - this.refresh = refresh; - } - public Delete version(long version) { this.version = version; return this; diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/index/engine/robin/RobinEngine.java b/modules/elasticsearch/src/main/java/org/elasticsearch/index/engine/robin/RobinEngine.java index a6ec265459b..d7daf08e3c5 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/index/engine/robin/RobinEngine.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/index/engine/robin/RobinEngine.java @@ -238,9 +238,6 @@ public class RobinEngine extends AbstractIndexShardComponent implements Engine { innerCreate(create, writer); dirty = true; possibleMergeNeeded = true; - if (create.refresh()) { - refresh(new Refresh(false)); - } } catch (IOException e) { throw new CreateFailedEngineException(shardId, create, e); } finally { @@ -342,9 +339,6 @@ public class RobinEngine extends AbstractIndexShardComponent implements Engine { innerIndex(index, writer); dirty = true; possibleMergeNeeded = true; - if (index.refresh()) { - refresh(new Refresh(false)); - } } catch (IOException e) { throw new IndexFailedEngineException(shardId, index, e); } finally { @@ -439,9 +433,6 @@ public class RobinEngine extends AbstractIndexShardComponent implements Engine { innerDelete(delete, writer); dirty = true; possibleMergeNeeded = true; - if (delete.refresh()) { - refresh(new Refresh(false)); - } } catch (IOException e) { throw new DeleteFailedEngineException(shardId, delete, e); } finally {