Changeset 30564 for gs3-extensions/solr/trunk/src/src
- Timestamp:
- 2016-06-04T23:14:01+12:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
gs3-extensions/solr/trunk/src/src/java/org/greenstone/gsdl3/service/GS2SolrSearch.java
r30148 r30564 19 19 package org.greenstone.gsdl3.service; 20 20 21 import java.io.File; 22 import java.io.IOException; 21 23 // Greenstone classes 22 24 import java.util.ArrayList; … … 31 33 import org.apache.log4j.Logger; 32 34 import org.apache.solr.client.solrj.SolrServer; 35 import org.apache.solr.client.solrj.SolrServerException; 33 36 import org.apache.solr.client.solrj.impl.HttpSolrServer; 37 import org.apache.solr.client.solrj.impl.HttpSolrServer.RemoteSolrException; 38 import org.apache.solr.client.solrj.request.CoreAdminRequest; 39 import org.apache.solr.client.solrj.response.CoreAdminResponse; 34 40 import org.apache.solr.client.solrj.response.FacetField; 41 import org.apache.solr.common.params.CoreAdminParams.CoreAdminAction; 42 import org.apache.solr.common.util.NamedList; 35 43 import org.greenstone.LuceneWrapper4.SharedSoleneQueryResult; 36 44 import org.greenstone.gsdl3.util.FacetWrapper; … … 44 52 import org.w3c.dom.Element; 45 53 import org.w3c.dom.NodeList; 54 55 import org.apache.solr.client.solrj.impl.HttpSolrServer.RemoteSolrException; 56 import org.apache.solr.client.solrj.request.CoreAdminRequest; 57 import org.apache.solr.client.solrj.response.CoreAdminResponse; 58 import org.apache.solr.common.params.CoreAdminParams.CoreAdminAction; 59 import org.apache.solr.common.util.NamedList; 46 60 47 61 public class GS2SolrSearch extends SharedSoleneGS2FieldSearch … … 111 125 _facets.add(((Element)facet_list.item(i)).getAttribute(GSXML.SHORTNAME_ATT)); 112 126 } 127 128 //If use Solr check if cores loaded 129 if (!loadSolrCores()) { 130 logger.error("Collection: couldn't configure collection: " + this.cluster_name + ", " 131 + "Couldn't activate Solr cores"); 132 return false; 133 } 113 134 // NodeList configIndexElems = searchElem.getElementsByTagName(GSXML.INDEX_ELEM); 114 135 … … 324 345 325 346 SolrServer solr_core = null; 326 347 //CHECK HERE 327 348 if (!solr_core_cache.containsKey(core_name)) 328 349 { … … 485 506 return collection_core_name_prefix; 486 507 } 508 509 private boolean loadSolrCores() { 510 511 HttpSolrServer solrServer = new HttpSolrServer(solr_servlet_base_url); 512 // Max retries 513 solrServer.setMaxRetries(1); 514 // Connection Timeout 515 solrServer.setConnectionTimeout(3000); 516 //Cores 517 String coreSecName = getCollectionCoreNamePrefix() + "-sidx"; 518 String coreDocName = getCollectionCoreNamePrefix() + "-didx"; 519 520 521 if (!checkSolrCore(coreSecName, solrServer)){ 522 if (!activateSolrCore(coreSecName, solrServer)){ 523 logger.error("Couldn't activate Solr core " + coreSecName + " for collection " + cluster_name); 524 return false; 525 } 526 } 527 if (!checkSolrCore(coreDocName, solrServer)){ 528 if (!activateSolrCore(coreDocName, solrServer)){ 529 logger.error("Couldn't activate Solr core " + coreDocName + " for collection " + cluster_name); 530 return false; 531 } 532 } 533 return true; 534 } 535 536 private boolean checkSolrCore(String coreName, HttpSolrServer solrServer) { 537 CoreAdminRequest adminRequest = new CoreAdminRequest(); 538 adminRequest.setAction(CoreAdminAction.STATUS); 539 adminRequest.setCoreName(coreName); 540 541 try { 542 CoreAdminResponse adminResponse = adminRequest.process(solrServer); 543 NamedList<NamedList<Object>> coreStatus = adminResponse.getCoreStatus(); 544 NamedList<Object> coreList = coreStatus.getVal(0); 545 if (coreList != null) { 546 if (coreList.get("name") == null) { 547 logger.warn("Solr core " + coreName + " for collection " + cluster_name + " not exists."); 548 return false; 549 } 550 } 551 552 } catch (SolrServerException e) { 553 e.printStackTrace(); 554 return false; 555 } catch (IOException e) { 556 e.printStackTrace(); 557 return false; 558 } catch (RemoteSolrException e1){ 559 logger.error("Check solr core " + coreName + " for collection " + cluster_name + " failed."); 560 e1.printStackTrace(); 561 return false; 562 } 563 return true; 564 } 565 566 private boolean activateSolrCore(String coreName, HttpSolrServer solrServer) { 567 String dataDir = GSFile.collectionIndexDir(site_home, cluster_name) + File.separator + coreName.substring(coreName.length() - 4); 568 String instanceDir = GSFile.collectionEtcDir(site_home, cluster_name); 569 570 try { 571 CoreAdminRequest.createCore(coreName, instanceDir, solrServer, "", "", dataDir, ""); 572 logger.warn("Solr core " + coreName + " for collection " + cluster_name + " activated."); 573 } catch (SolrServerException e1) { 574 e1.printStackTrace(); 575 return false; 576 } catch (IOException e1) { 577 e1.printStackTrace(); 578 return false; 579 } catch (RemoteSolrException e1){ 580 logger.error("Activation solr core " + coreName + " for collection " + cluster_name + " failed."); 581 e1.printStackTrace(); 582 return false; 583 } 584 585 return true; 586 } 587 487 588 }
Note:
See TracChangeset
for help on using the changeset viewer.