Skip to content

Commit 9633108

Browse files
committed
Flush API: Add refresh flag (refresh after flush). Closes #14.
1 parent 687d795 commit 9633108

File tree

6 files changed

+59
-4
lines changed

6 files changed

+59
-4
lines changed

modules/elasticsearch/src/main/java/org/elasticsearch/action/admin/indices/flush/FlushRequest.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,17 @@
2222
import org.elasticsearch.action.support.broadcast.BroadcastOperationRequest;
2323
import org.elasticsearch.action.support.broadcast.BroadcastOperationThreading;
2424

25+
import java.io.DataInput;
26+
import java.io.DataOutput;
27+
import java.io.IOException;
28+
2529
/**
2630
* @author kimchy (Shay Banon)
2731
*/
2832
public class FlushRequest extends BroadcastOperationRequest {
2933

34+
private boolean refresh = false;
35+
3036
FlushRequest() {
3137

3238
}
@@ -37,6 +43,15 @@ public FlushRequest(String... indices) {
3743
operationThreading(BroadcastOperationThreading.THREAD_PER_SHARD);
3844
}
3945

46+
public boolean refresh() {
47+
return this.refresh;
48+
}
49+
50+
public FlushRequest refresh(boolean refresh) {
51+
this.refresh = refresh;
52+
return this;
53+
}
54+
4055
@Override public FlushRequest listenerThreaded(boolean threadedListener) {
4156
super.listenerThreaded(threadedListener);
4257
return this;
@@ -46,4 +61,14 @@ public FlushRequest(String... indices) {
4661
super.operationThreading(operationThreading);
4762
return this;
4863
}
64+
65+
@Override public void writeTo(DataOutput out) throws IOException {
66+
super.writeTo(out);
67+
out.writeBoolean(refresh);
68+
}
69+
70+
@Override public void readFrom(DataInput in) throws IOException, ClassNotFoundException {
71+
super.readFrom(in);
72+
refresh = in.readBoolean();
73+
}
4974
}

modules/elasticsearch/src/main/java/org/elasticsearch/action/admin/indices/flush/ShardFlushRequest.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,27 @@
3030
*/
3131
public class ShardFlushRequest extends BroadcastShardOperationRequest {
3232

33+
private boolean refresh;
34+
3335
ShardFlushRequest() {
3436
}
3537

36-
public ShardFlushRequest(String index, int shardId) {
38+
public ShardFlushRequest(String index, int shardId, FlushRequest request) {
3739
super(index, shardId);
40+
this.refresh = request.refresh();
41+
}
42+
43+
public boolean refresh() {
44+
return this.refresh;
3845
}
3946

4047
@Override public void readFrom(DataInput in) throws IOException, ClassNotFoundException {
4148
super.readFrom(in);
49+
refresh = in.readBoolean();
4250
}
4351

4452
@Override public void writeTo(DataOutput out) throws IOException {
4553
super.writeTo(out);
54+
out.writeBoolean(refresh);
4655
}
4756
}

modules/elasticsearch/src/main/java/org/elasticsearch/action/admin/indices/flush/TransportFlushAction.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public class TransportFlushAction extends TransportBroadcastOperationAction<Flus
7676
}
7777

7878
@Override protected ShardFlushRequest newShardRequest(ShardRouting shard, FlushRequest request) {
79-
return new ShardFlushRequest(shard.index(), shard.id());
79+
return new ShardFlushRequest(shard.index(), shard.id(), request);
8080
}
8181

8282
@Override protected ShardFlushResponse newShardResponse() {
@@ -85,7 +85,7 @@ public class TransportFlushAction extends TransportBroadcastOperationAction<Flus
8585

8686
@Override protected ShardFlushResponse shardOperation(ShardFlushRequest request) throws ElasticSearchException {
8787
IndexShard indexShard = indicesService.indexServiceSafe(request.index()).shardSafe(request.shardId());
88-
indexShard.flush(new Engine.Flush());
88+
indexShard.flush(new Engine.Flush().refresh(request.refresh()));
8989
return new ShardFlushResponse(request.index(), request.shardId());
9090
}
9191

modules/elasticsearch/src/main/java/org/elasticsearch/http/action/admin/indices/flush/HttpFlushAction.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ public class HttpFlushAction extends BaseHttpServerHandler {
5656
operationThreading = BroadcastOperationThreading.THREAD_PER_SHARD;
5757
}
5858
flushRequest.operationThreading(operationThreading);
59+
flushRequest.refresh(HttpActions.paramAsBoolean("refresh", false));
5960
client.admin().indices().execFlush(flushRequest, new ActionListener<FlushResponse>() {
6061
@Override public void onResponse(FlushResponse response) {
6162
try {

modules/elasticsearch/src/main/java/org/elasticsearch/index/engine/Engine.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,25 @@ public boolean waitForOperations() {
139139

140140
static class Flush {
141141

142+
private boolean refresh = false;
143+
144+
/**
145+
* Should a refresh be performed after flushing. Defaults to <tt>false</tt>.
146+
*/
147+
public boolean refresh() {
148+
return this.refresh;
149+
}
150+
151+
/**
152+
* Should a refresh be performed after flushing. Defaults to <tt>false</tt>.
153+
*/
154+
public Flush refresh(boolean refresh) {
155+
this.refresh = refresh;
156+
return this;
157+
}
158+
142159
@Override public String toString() {
143-
return "";
160+
return "refresh[" + refresh + "]";
144161
}
145162
}
146163

modules/elasticsearch/src/main/java/org/elasticsearch/index/engine/robin/RobinEngine.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,9 @@ public class RobinEngine extends AbstractIndexShardComponent implements Engine,
290290
} finally {
291291
rwl.writeLock().unlock();
292292
}
293+
if (flush.refresh()) {
294+
refresh(new Refresh(false));
295+
}
293296
}
294297

295298
@Override public void optimize(Optimize optimize) throws EngineException {

0 commit comments

Comments
 (0)