2016-03-21 25 views
0

gelen endeks adını alırken. hataElasticsearch: Bizim projede <strong>Elasticsearch Plugin</strong> kullanıyoruz AssertionError takma

Hata

{ 
    "error": "AssertionError[Expected current thread[Thread[elasticsearch[Seth][http_server_worker][T#2]{New I/O worker #20},5,main]] to not be a transport thread. Reason: [Blocking operation]]", "status": 500 
    } 

Kod bu sorunu neyin sebep

String realIndex = client.admin().cluster().prepareState() 
        .execute().actionGet().getState().getMetaData() 
        .aliases().get(aliasName).iterator() 
        .next().key; 

altına alma takma den endeks adı elde ederken ?? Bu işlem geri sonuç elde edene kadar bu iş parçacığı engeller olarak taşıma parçacığı üzerinde izin verilmez gibi hata bakacak olursak herhangi bir yardım

cevap

1

alamadım googledaarattın, öyle görünüyor. Bunu bir yürütme iş parçacığında yürütmeniz gerekir.

public String getIndexName() { 
    final IndexNameHolder result = new IndexNameHolder(); // holds the index Name. Needed a final instance here, hence created a holder. 
    getTransportClient().admin().cluster().prepareState().execute(new ActionListener<ClusterStateResponse>() { 

     @Override 
     public void onResponse(ClusterStateResponse response) { 
      result.indexName = response.getState().getMetaData().aliases().get("alias").iterator().next().key; 

     } 
     @Override 
     public void onFailure(Throwable e) { 
      //Handle failures 
     } 
    }); 
    return result.value; 
} 

execute(), bir dinleyici alır biri için bir başka yöntem bulunmaktadır. Kendi dinleyicini uygulaman gerekiyor. Cevabımda, Dinleyici'nin anonim bir uygulamasına sahibim.

Bunu ben takma değerinden endeks adını almak mümkün bu, denedik

+0

yardımcı olur, ancak o hala aynı hatayı –

+0

aldıktan sonra ben bu değmedi umuyoruz. Dizin adını aldıktan sonra hata oluştu? Nerede ve tam olarak aynı hatadır? – Rahul

+0

** _JAVA_OPTIONS = -ea ** ortam değişkenlerinden çıkardıktan sonra her şey iyi çalışıyor. Yukarıdaki kod olmadan bile çalışabilirdim. Bazen bir süre önce ** ElasticsearchIntegrationTest ** ile birim testi çalıştırırken, Ortam Değişkenleri'ne ** _JAVA_OPTIONS ** eklemem gerekiyordu. Neden Elasticsearch Unit Test'te hata ayıklaması gerekiyor ve eklentide neden hata yapıyor? –