I am using the dataless NodeClient to connect to my cluster (version is 
1.1.1). Everything is working ok, except when failures occur. The scenario 
is the following: 
-I have an application java based which connects to ES Cluster (application 
is started and the cluster is up and running) 
-I shutdown the cluster 
-I try to send a bulk request 
-The following exception is displayed in the logs, which is normal. But my 
call never catches the exception: 

Exception in thread "elasticsearch[Lasher][generic][T#6]" 
org.elasticsearch.cluster.block.ClusterBlockException: blocked by: 
[SERVICE_UNAVAILABLE/1/state not recovered / initialized];[SERVICE_UNAVAILA 
BLE/2/no master]; 
        at 
org.elasticsearch.cluster.block.ClusterBlocks.globalBlockedException(ClusterBlocks.java:138)
 
        at 
org.elasticsearch.cluster.block.ClusterBlocks.globalBlockedRaiseException(ClusterBlocks.java:128)
 
        at 
org.elasticsearch.action.bulk.TransportBulkAction.executeBulk(TransportBulkAction.java:197)
 
        at 
org.elasticsearch.action.bulk.TransportBulkAction.access$000(TransportBulkAction.java:65)
 
        at 
org.elasticsearch.action.bulk.TransportBulkAction$1.onFailure(TransportBulkAction.java:143)
 
        at 
org.elasticsearch.action.support.TransportAction$ThreadedActionListener$2.run(TransportAction.java:117)
 
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
        at java.lang.Thread.run(Thread.java:724) 

My code is something like this 

        BulkResponse response; 
        try { 
            response = requestBuilder.execute().actionGet(); 
        } 
        catch(NoNodeAvailableException ex){ 
            LOGGER.error("Cannot connect to ES Cluster:  " + 
ex.getMessage()); 
            throw ex; 
        } 
        catch (ClusterBlockException ex){ 
            LOGGER.error("Cannot connect to ES Cluster:  " + 
ex.getMessage()); 
            throw ex; 
        } 
        catch (Exception ex) { 

            LOGGER.error("Exception in processing indexing request by ES 
server. " + ex.getMessage()); 
        } 

When I use a single request everything is ok. I also noticed a TODO in the 
ES code in the TransportBulkAction.java 

private void executeBulk(final BulkRequest bulkRequest, final long 
startTime, final ActionListener<BulkResponse> listener, final 
AtomicArray<BulkItemResponse> responses ) { 
        ClusterState clusterState = clusterService.state(); 
        // TODO use timeout to wait here if its blocked... 
        
clusterState.blocks().globalBlockedRaiseException(ClusterBlockLevel.WRITE); 

        ....} 

Is this a known situation or a known bug or I am missing something? 

-- 
You received this message because you are subscribed to the Google Groups 
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/109057dc-70c4-471a-bd6d-8b8e72c37ff6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to