/** * Sets the {@link #getState()} to {@link ManagedIndexState#ERROR} and also * stores the stack trace of the parsed {@link Exception} to {@link #STACK_TRACE}. * @param e The Exception or <code>null</code> it none */ public void setError(Exception e) { setState(ManagedIndexState.ERROR); if(e != null){ ByteArrayOutputStream out = new ByteArrayOutputStream(); PrintWriter writer = new PrintWriter(out); //writer.append(e.getMessage()); //writer.append('\n'); e.printStackTrace(writer); writer.close(); //close and flush the writer setProperty(STACK_TRACE, out.toString()); IOUtils.closeQuietly(writer); out = null; } } /**
/** * Sets the {@link #getState()} to {@link ManagedIndexState#ERROR} and also * stores the stack trace of the parsed {@link Exception} to {@link #STACK_TRACE}. * @param e The Exception or <code>null</code> it none */ public void setError(Exception e) { setState(ManagedIndexState.ERROR); if(e != null){ ByteArrayOutputStream out = new ByteArrayOutputStream(); PrintWriter writer = new PrintWriter(out); //writer.append(e.getMessage()); //writer.append('\n'); e.printStackTrace(writer); writer.close(); //close and flush the writer setProperty(STACK_TRACE, out.toString()); IOUtils.closeQuietly(writer); out = null; } } /**
@Override public IndexMetadata deactivateIndex(String indexName) { IndexMetadata metadata; SolrCore core = server.remove(indexName); if(core != null){ metadata = getMetadata(core,serverName); core.close(); metadata.setState(ManagedIndexState.INACTIVE); } else { metadata = null; } return metadata; } /**
@Override public IndexMetadata deactivateIndex(String indexName) { IndexMetadata metadata; SolrCore core = server.remove(indexName); if(core != null){ metadata = getMetadata(core,serverName); core.close(); metadata.setState(ManagedIndexState.INACTIVE); } else { metadata = null; } return metadata; } /**
metadata.setServerName(DEFAULT_SERVER_NAME); metadata.setSynchronized(false); metadata.setState(ManagedIndexState.ACTIVE); metadata.setArchive(resourceName); return updateCore(metadata, ais);
@Override public IndexMetadata updateIndex(String name, ArchiveInputStream ais, String archiveCoreName) throws IOException { if (name == null || name.isEmpty()) { throw new IllegalArgumentException("The parsed index name MUST NOT be NULL nor empty!"); } IndexMetadata metadata = new IndexMetadata(); metadata.setIndexName(name); metadata.setServerName(DEFAULT_SERVER_NAME); metadata.setSynchronized(false); metadata.setState(ManagedIndexState.ACTIVE); if (archiveCoreName != null) { metadata.setArchive(archiveCoreName); } return updateCore(metadata, ais); }
@Override public IndexMetadata updateIndex(String name, ArchiveInputStream ais, String archiveCoreName) throws IOException { if (name == null || name.isEmpty()) { throw new IllegalArgumentException("The parsed index name MUST NOT be NULL nor empty!"); } IndexMetadata metadata = new IndexMetadata(); metadata.setIndexName(name); metadata.setServerName(DEFAULT_SERVER_NAME); metadata.setSynchronized(false); metadata.setState(ManagedIndexState.ACTIVE); if (archiveCoreName != null) { metadata.setArchive(archiveCoreName); } return updateCore(metadata, ais); }
metadata.setState(ManagedIndexState.UNINITIALISED);
/** * Updates the parsed {@link IndexMetadata} instance based on the * properties of the parsed {@link SolrCore}.<p> * This sets the state, index name and the directory. * @param metadata the {@link IndexMetadata} to update * @param core the core */ public static void updateMetadata(IndexMetadata metadata, SolrCore core){ if(metadata == null || core == null){ return; } metadata.setState(ManagedIndexState.ACTIVE); metadata.setIndexName(core.getName()); metadata.setDirectory(core.getCoreDescriptor().getInstanceDir()); } /**
@Override public IndexMetadata deactivateIndex(String indexName) { IndexMetadata metadata = managedCores.getIndexMetadata(indexName); if(metadata != null && metadata.getState() == ManagedIndexState.ACTIVE){ try { deactivateCore(indexName, server); metadata.setState(ManagedIndexState.INACTIVE); } catch (RuntimeException e) { metadata.setError(e); } finally { managedCores.store(metadata); } } return metadata; } @Override
@Override public IndexMetadata deactivateIndex(String indexName) { IndexMetadata metadata = managedCores.getIndexMetadata(indexName); if(metadata != null && metadata.getState() == ManagedIndexState.ACTIVE){ try { deactivateCore(indexName, server); metadata.setState(ManagedIndexState.INACTIVE); } catch (RuntimeException e) { metadata.setError(e); } finally { managedCores.store(metadata); } } return metadata; } @Override
/** * Updates the parsed {@link IndexMetadata} instance based on the * properties of the parsed {@link SolrCore}.<p> * This sets the state, index name and the directory. * @param metadata the {@link IndexMetadata} to update * @param core the core */ public static void updateMetadata(IndexMetadata metadata, SolrCore core){ if(metadata == null || core == null){ return; } metadata.setState(ManagedIndexState.ACTIVE); metadata.setIndexName(core.getName()); metadata.setDirectory(core.getCoreDescriptor().getInstanceDir()); } /**
@Override public IndexMetadata createSolrIndex(String indexName, String resourceName, Properties properties) throws IOException { if(indexName == null || indexName.isEmpty()){ throw new IllegalArgumentException("The parsed index name MUST NOT be NULL nor empty!"); } if(!ConfigUtils.isValidSolrIndexFileName(resourceName)){ log.debug("add SolrIndexFileExtension to parsed indexArchive {}",resourceName); resourceName = ConfigUtils.appandSolrIndexFileExtension(resourceName, null); } if(isManagedIndex(indexName)){ throw new IllegalArgumentException("An index with the parsed name '"+ indexName+"' already exists on this managed Solr server '"+serverName+"'!"); } IndexMetadata metadata = new IndexMetadata(); if(properties != null){ metadata.putAll(properties); } metadata.setServerName(serverName); metadata.setIndexName(indexName); metadata.setIndexArchives(Collections.singletonList(resourceName)); metadata.setState(ManagedIndexState.UNINITIALISED); //TODO: we need to deal with the synchronised property! // now add the index to the list of uninitialised managedCores.store(metadata); //now start tracking this archive file indexArchiveTracker.addTracking(metadata); dataFileTracker.add(indexArchiveTracker, resourceName, IndexMetadata.toStringMap(metadata)); return metadata; }
public void addUninitialisedIndex(String indexName, String indexArchiveName, Boolean sync) throws IOException { IndexMetadata config = new IndexMetadata(); config = new IndexMetadata(); config.setIndexName(indexName); config.setServerName(serverName); config.setState(ManagedIndexState.UNINITIALISED); if(sync != null){ config.setSynchronized(sync); } //no need to clone, because we have created the instance updateIndexProperties(null, config, false); } public void store(IndexMetadata properties){
public void addUninitialisedIndex(String indexName, String indexArchiveName, Boolean sync) throws IOException { IndexMetadata config = new IndexMetadata(); config = new IndexMetadata(); config.setIndexName(indexName); config.setServerName(serverName); config.setState(ManagedIndexState.UNINITIALISED); if(sync != null){ config.setSynchronized(sync); } //no need to clone, because we have created the instance updateIndexProperties(null, config, false); } public void store(IndexMetadata properties){
@Override public IndexMetadata createSolrIndex(String indexName, String resourceName, Properties properties) throws IOException { if(indexName == null || indexName.isEmpty()){ throw new IllegalArgumentException("The parsed index name MUST NOT be NULL nor empty!"); } if(!ConfigUtils.isValidSolrIndexFileName(resourceName)){ log.debug("add SolrIndexFileExtension to parsed indexArchive {}",resourceName); resourceName = ConfigUtils.appandSolrIndexFileExtension(resourceName, null); } if(isManagedIndex(indexName)){ throw new IllegalArgumentException("An index with the parsed name '"+ indexName+"' already exists on this managed Solr server '"+serverName+"'!"); } IndexMetadata metadata = new IndexMetadata(); if(properties != null){ metadata.putAll(properties); } metadata.setServerName(serverName); metadata.setIndexName(indexName); metadata.setIndexArchives(Collections.singletonList(resourceName)); metadata.setState(ManagedIndexState.UNINITIALISED); //TODO: we need to deal with the synchronised property! // now add the index to the list of uninitialised managedCores.store(metadata); //now start tracking this archive file indexArchiveTracker.addTracking(metadata); dataFileTracker.add(indexArchiveTracker, resourceName, IndexMetadata.toStringMap(metadata)); return metadata; }
@Override public IndexMetadata updateIndex(String indexName, String resourceName, Properties properties) throws IOException { //NOTE: this does not deactivate the current index version, but only updates //the metadata and re-registers the DataFileTracking IndexMetadata oldMetadata = managedCores.getIndexMetadata(indexName); IndexMetadata metadata = new IndexMetadata(); if(properties != null){ metadata.putAll(properties); } metadata.setServerName(serverName); metadata.setIndexName(indexName); metadata.setIndexArchives(Collections.singletonList(resourceName)); if(oldMetadata != null){ //we need to metadata.setState(oldMetadata.getState()); //same as for the old version metadata.setDirectory(oldMetadata.getDirectory()); } else { metadata.setState(ManagedIndexState.UNINITIALISED); } //TODO: we need to deal with the synchronised property! // now add the index to the list of uninitialised managedCores.store(metadata); indexArchiveTracker.updateTracking(oldMetadata,metadata); return metadata; } @Override
@Override public IndexMetadata updateIndex(String indexName, String resourceName, Properties properties) throws IOException { //NOTE: this does not deactivate the current index version, but only updates //the metadata and re-registers the DataFileTracking IndexMetadata oldMetadata = managedCores.getIndexMetadata(indexName); IndexMetadata metadata = new IndexMetadata(); if(properties != null){ metadata.putAll(properties); } metadata.setServerName(serverName); metadata.setIndexName(indexName); metadata.setIndexArchives(Collections.singletonList(resourceName)); if(oldMetadata != null){ //we need to metadata.setState(oldMetadata.getState()); //same as for the old version metadata.setDirectory(oldMetadata.getDirectory()); } else { metadata.setState(ManagedIndexState.UNINITIALISED); } //TODO: we need to deal with the synchronised property! // now add the index to the list of uninitialised managedCores.store(metadata); indexArchiveTracker.updateTracking(oldMetadata,metadata); return metadata; } @Override
@Override public IndexMetadata activateIndex(String indexName) throws IOException, SAXException { IndexMetadata metadata = managedCores.getIndexMetadata(indexName); if(metadata != null && metadata.getState() == ManagedIndexState.INACTIVE){ try { activateCore(metadata, server); metadata.setState(ManagedIndexState.ACTIVE); } catch (IOException e) { metadata.setError(e); throw e; } catch (SAXException e) { metadata.setError(e); throw e; } catch (RuntimeException e) { metadata.setError(e); throw e; } finally { managedCores.store(metadata); } } return metadata; } @Override
@Override public IndexMetadata activateIndex(String indexName) throws IOException, SAXException { IndexMetadata metadata = managedCores.getIndexMetadata(indexName); if(metadata != null && metadata.getState() == ManagedIndexState.INACTIVE){ try { activateCore(metadata, server); metadata.setState(ManagedIndexState.ACTIVE); } catch (IOException e) { metadata.setError(e); throw e; } catch (SAXException e) { metadata.setError(e); throw e; } catch (RuntimeException e) { metadata.setError(e); throw e; } finally { managedCores.store(metadata); } } return metadata; } @Override