# ElasticsearchでConcurrent Modification Exceptionが発生してしまう件

**URL:** <https://discuss.elastic.co/t/elasticsearch-concurrent-modification-exception/78454>\
**Category:** 日本語による質問・議論はこちら\
**Created:** [March 14, 2017, 7:05am UTC](https://discuss.elastic.co/t/elasticsearch-concurrent-modification-exception/78454 "2017-03-14T07:05:33Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kazuyuki\_Tateda](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kazuyuki_tateda/32/14318_2.png) [@Kazuyuki\_Tateda](https://discuss.elastic.co/u/Kazuyuki_Tateda)\
**Post date:** [March 14, 2017, 7:05am UTC](https://discuss.elastic.co/t/elasticsearch-concurrent-modification-exception/78454/1 "2017-03-14T07:05:33Z")

</div>

ElasticsearchでSearchRequestBuilderのsetSizeとaddSortを併用した際に、  
ConcurrentModificationExceptionが発生しています。  
実装側でソートすれば要求を満たせるため、緊急で困っているわけでないのですが、  
もし他の回避方法や同様の事象に遭遇した方がいらっしゃっいましたら情報をいただきたいです。

【バージョン】  
elasticsearch 5.1.1

【発生する状況】  
秒間200回程度リクエスト時  
setSizeとaddSortを併用した時

【発生しない時】  
秒間リクエストが10程度で少ない時  
setSize、もしくはaddSortのどちらかしか使ってない時

【実装(scala)】  
searchRequestBuilder.setQuery(myQuery).addSort("end\_at", SortOrder.DESC).setSize(200).execute().actionGet

java.util.ConcurrentModificationException: null  
[info] java.util.ConcurrentModificationException: null  
[info] at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)  
[info] at java.util.ArrayList$Itr.next(ArrayList.java:851)  
[info] at org.elasticsearch.search.builder.SearchSourceBuilder.writeTo(SearchSourceBuilder.java:266)  
[info] at org.elasticsearch.common.io.stream.StreamOutput.writeOptionalWriteable(StreamOutput.java:706)  
[info] at org.elasticsearch.action.search.SearchRequest.writeTo(SearchRequest.java:337)  
[info] at org.elasticsearch.transport.TcpTransport.buildMessage(TcpTransport.java:1093)  
[info] at org.elasticsearch.transport.TcpTransport.sendRequest(TcpTransport.java:949)  
[info] at org.elasticsearch.transport.TransportService.sendRequestInternal(TransportService.java:520)  
[info] at org.elasticsearch.transport.TransportService.sendRequest(TransportService.java:465)  
[info] at org.elasticsearch.action.TransportActionNodeProxy.execute(TransportActionNodeProxy.java:51)  
[info] at org.elasticsearch.client.transport.TransportProxyClient.lambda$execute$0(TransportProxyClient.java:59)  
[info] at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:231)  
[info] at org.elasticsearch.client.transport.TransportProxyClient.execute(TransportProxyClient.java:59)  
[info] at org.elasticsearch.client.transport.TransportClient.doExecute(TransportClient.java:345)  
[info] at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:403)  
[info] at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:80)  
[info] at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:54)  
[info] at org.elasticsearch.action.ActionRequestBuilder.get(ActionRequestBuilder.java:62)  
😍

## Heading

---

<div class="post-metadata">

**Author:** ![johtani](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/johtani/32/44956_2.png) [@johtani](https://discuss.elastic.co/u/johtani)\
**Post date:** [March 18, 2017, 11:23pm UTC](https://discuss.elastic.co/t/elasticsearch-concurrent-modification-exception/78454/2 "2017-03-18T23:23:47Z")

</div>

これはElasticsearch側のログでしょうか？それともクライアント側のログでしょうか？  
クライアント側だとしたら、searchRequestBuilderのインスタンスをリクエストごとにNewしてないとかないでしょうか？

---

<div class="post-metadata">

**Author:** ![Kazuyuki\_Tateda](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kazuyuki_tateda/32/14318_2.png) [@Kazuyuki\_Tateda](https://discuss.elastic.co/u/Kazuyuki_Tateda)\
**Post date:** [March 21, 2017, 8:05am UTC](https://discuss.elastic.co/t/elasticsearch-concurrent-modification-exception/78454/3 "2017-03-21T08:05:17Z")

</div>

ご返信ありがとうございます。  
掲載してるログはクライアント側のものです。

ご指摘の通りTransportClient#prepareSearchで取得したSearchRequestBuilderを  
java.sql.PreparedStatementの感覚で使いまわし続けておりましたので  
その部分を修正するとConcurrentModificationExceptionが発生しなくなりました。

とても危険なバグで深く反省します。  
ご指摘ありがとうございました。

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [April 18, 2017, 8:05am UTC](https://discuss.elastic.co/t/elasticsearch-concurrent-modification-exception/78454/4 "2017-04-18T08:05:27Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
