private void deletePartiallyCreatedCollection() throws Exception { final String baseUrl = getBaseUrl((HttpSolrServer) clients.get(0)); String collectionName = "halfdeletedcollection"; Create createCmd = new Create(); createCmd.setCoreName("halfdeletedcollection_shard1_replica1"); createCmd.setCollection(collectionName); String dataDir = SolrTestCaseJ4.dataDir.getAbsolutePath() + File.separator + System.currentTimeMillis() + "halfcollection" + "_hdn"; createCmd.setDataDir(dataDir); createCmd.setNumShards(2); if (secondConfigSet) { createCmd.setCollectionConfigName("conf1"); } createNewSolrServer("", baseUrl).request(createCmd); ModifiableSolrParams params = new ModifiableSolrParams(); params.set("action", CollectionAction.DELETE.toString()); params.set("name", collectionName); QueryRequest request = new QueryRequest(params); request.setPath("/admin/collections"); NamedList<Object> resp = createNewSolrServer("", baseUrl).request(request); checkForMissingCollection(collectionName); // now creating that collection should work params = new ModifiableSolrParams(); params.set("action", CollectionAction.CREATE.toString()); params.set("name", collectionName); params.set("numShards", 2); request = new QueryRequest(params); request.setPath("/admin/collections"); if (secondConfigSet) { params.set("collection.configName", "conf1"); } resp = createNewSolrServer("", baseUrl).request(request); }
private void testErrorHandling() throws Exception { final String baseUrl = getBaseUrl((HttpSolrServer) clients.get(0)); // try a bad action ModifiableSolrParams params = new ModifiableSolrParams(); params.set("action", "BADACTION"); String collectionName = "badactioncollection"; params.set("name", collectionName); params.set("numShards", 2); QueryRequest request = new QueryRequest(params); request.setPath("/admin/collections"); boolean gotExp = false; NamedList<Object> resp = null; try { resp = createNewSolrServer("", baseUrl).request(request); } catch (SolrException e) { gotExp = true; } assertTrue(gotExp); // leave out required param name params = new ModifiableSolrParams(); params.set("action", CollectionAction.CREATE.toString()); params.set("numShards", 2); collectionName = "collection"; // No Name // params.set("name", collectionName); if (secondConfigSet) { params.set("collection.configName", "conf1"); } request = new QueryRequest(params); request.setPath("/admin/collections"); gotExp = false; resp = null; try { resp = createNewSolrServer("", baseUrl).request(request); } catch (SolrException e) { gotExp = true; } assertTrue(gotExp); // Too many replicas params = new ModifiableSolrParams(); params.set("action", CollectionAction.CREATE.toString()); collectionName = "collection"; params.set("name", collectionName); params.set("numShards", 2); if (secondConfigSet) { params.set("collection.configName", "conf1"); } params.set(REPLICATION_FACTOR, 10); request = new QueryRequest(params); request.setPath("/admin/collections"); gotExp = false; resp = null; try { resp = createNewSolrServer("", baseUrl).request(request); } catch (SolrException e) { gotExp = true; } assertTrue(gotExp); // No numShards should fail params = new ModifiableSolrParams(); params.set("action", CollectionAction.CREATE.toString()); collectionName = "acollection"; params.set("name", collectionName); params.set(REPLICATION_FACTOR, 10); if (secondConfigSet) { params.set("collection.configName", "conf1"); } request = new QueryRequest(params); request.setPath("/admin/collections"); gotExp = false; resp = null; try { resp = createNewSolrServer("", baseUrl).request(request); } catch (SolrException e) { gotExp = true; } assertTrue(gotExp); // 0 numShards should fail params = new ModifiableSolrParams(); params.set("action", CollectionAction.CREATE.toString()); collectionName = "acollection"; params.set("name", collectionName); params.set(REPLICATION_FACTOR, 10); params.set("numShards", 0); if (secondConfigSet) { params.set("collection.configName", "conf1"); } request = new QueryRequest(params); request.setPath("/admin/collections"); gotExp = false; resp = null; try { resp = createNewSolrServer("", baseUrl).request(request); } catch (SolrException e) { gotExp = true; } assertTrue(gotExp); // Fail on one node // first we make a core with the core name the collections api // will try and use - this will cause our mock fail Create createCmd = new Create(); createCmd.setCoreName("halfcollection_shard1_replica1"); createCmd.setCollection("halfcollectionblocker"); String dataDir = SolrTestCaseJ4.dataDir.getAbsolutePath() + File.separator + System.currentTimeMillis() + "halfcollection" + "_3n"; createCmd.setDataDir(dataDir); createCmd.setNumShards(1); if (secondConfigSet) { createCmd.setCollectionConfigName("conf1"); } createNewSolrServer("", baseUrl).request(createCmd); createCmd = new Create(); createCmd.setCoreName("halfcollection_shard1_replica1"); createCmd.setCollection("halfcollectionblocker2"); dataDir = SolrTestCaseJ4.dataDir.getAbsolutePath() + File.separator + System.currentTimeMillis() + "halfcollection" + "_3n"; createCmd.setDataDir(dataDir); createCmd.setNumShards(1); if (secondConfigSet) { createCmd.setCollectionConfigName("conf1"); } createNewSolrServer("", getBaseUrl((HttpSolrServer) clients.get(1))).request(createCmd); params = new ModifiableSolrParams(); params.set("action", CollectionAction.CREATE.toString()); collectionName = "halfcollection"; params.set("name", collectionName); params.set("numShards", 2); params.set("wt", "xml"); if (secondConfigSet) { params.set("collection.configName", "conf1"); } String nn1 = ((SolrDispatchFilter) jettys.get(0).getDispatchFilter().getFilter()) .getCores() .getZkController() .getNodeName(); String nn2 = ((SolrDispatchFilter) jettys.get(1).getDispatchFilter().getFilter()) .getCores() .getZkController() .getNodeName(); params.set(OverseerCollectionProcessor.CREATE_NODE_SET, nn1 + "," + nn2); request = new QueryRequest(params); request.setPath("/admin/collections"); gotExp = false; resp = createNewSolrServer("", baseUrl).request(request); SimpleOrderedMap success = (SimpleOrderedMap) resp.get("success"); SimpleOrderedMap failure = (SimpleOrderedMap) resp.get("failure"); assertNotNull(resp.toString(), success); assertNotNull(resp.toString(), failure); String val1 = success.getVal(0).toString(); String val2 = failure.getVal(0).toString(); assertTrue(val1.contains("SolrException") || val2.contains("SolrException")); }