Author: rwesten
Date: Tue Oct 9 07:25:22 2012
New Revision: 1395879
URL: http://svn.apache.org/viewvc?rev=1395879&view=rev
Log:
STANBOL-763: ManagedIndexMetadata now returns a clone and the ManagedSolrServer
now checks if Metadata != null (e.g. if a concurrent call removed a managed
SolrCore while iterating
Modified:
stanbol/trunk/commons/solr/managed/src/main/java/org/apache/stanbol/commons/solr/managed/impl/ManagedIndexMetadata.java
stanbol/trunk/commons/solr/managed/src/main/java/org/apache/stanbol/commons/solr/managed/impl/ManagedSolrServerImpl.java
Modified:
stanbol/trunk/commons/solr/managed/src/main/java/org/apache/stanbol/commons/solr/managed/impl/ManagedIndexMetadata.java
URL:
http://svn.apache.org/viewvc/stanbol/trunk/commons/solr/managed/src/main/java/org/apache/stanbol/commons/solr/managed/impl/ManagedIndexMetadata.java?rev=1395879&r1=1395878&r2=1395879&view=diff
==============================================================================
---
stanbol/trunk/commons/solr/managed/src/main/java/org/apache/stanbol/commons/solr/managed/impl/ManagedIndexMetadata.java
(original)
+++
stanbol/trunk/commons/solr/managed/src/main/java/org/apache/stanbol/commons/solr/managed/impl/ManagedIndexMetadata.java
Tue Oct 9 07:25:22 2012
@@ -26,6 +26,7 @@ import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.EnumMap;
@@ -260,7 +261,7 @@ public class ManagedIndexMetadata {
Collection<String> indexNames =
archiveName2CoreName.get(archiveName);
return indexNames == null ?
(Collection<String>)Collections.EMPTY_LIST :
- Collections.unmodifiableCollection(indexNames);
+ Collections.unmodifiableCollection(new
ArrayList<String>(indexNames));
}
}
Modified:
stanbol/trunk/commons/solr/managed/src/main/java/org/apache/stanbol/commons/solr/managed/impl/ManagedSolrServerImpl.java
URL:
http://svn.apache.org/viewvc/stanbol/trunk/commons/solr/managed/src/main/java/org/apache/stanbol/commons/solr/managed/impl/ManagedSolrServerImpl.java?rev=1395879&r1=1395878&r2=1395879&view=diff
==============================================================================
---
stanbol/trunk/commons/solr/managed/src/main/java/org/apache/stanbol/commons/solr/managed/impl/ManagedSolrServerImpl.java
(original)
+++
stanbol/trunk/commons/solr/managed/src/main/java/org/apache/stanbol/commons/solr/managed/impl/ManagedSolrServerImpl.java
Tue Oct 9 07:25:22 2012
@@ -1048,20 +1048,22 @@ public class ManagedSolrServerImpl imple
boolean keepTracking = false;
for(String indexName :
managedCores.getIndexNames(resourceName)){
IndexMetadata metadata =
managedCores.getIndexMetadata(indexName);
- List<String> archives = metadata.getIndexArchives();
- String currentArchive = metadata.getArchive();
- if(currentArchive == null ||
- archives.indexOf(resourceName) <
archives.indexOf(currentArchive)){
- metadata.setArchive(resourceName);
- managedCores.store(metadata);
-
indexUpdateDaemon.update(ManagedIndexState.ACTIVE,metadata, ais);
- //if synchronised do not remove this listener
- keepTracking = keepTracking ||
metadata.isSynchronized();
- } else { //currently used Archive is of higher priority as
- // this one.
- //keep tracking if synchronised
- keepTracking = keepTracking ||
metadata.isSynchronized();
- }
+ if(metadata != null){ //the core might be deleted in the
meantime
+ List<String> archives = metadata.getIndexArchives();
+ String currentArchive = metadata.getArchive();
+ if(currentArchive == null ||
+ archives.indexOf(resourceName) <
archives.indexOf(currentArchive)){
+ metadata.setArchive(resourceName);
+ managedCores.store(metadata);
+
indexUpdateDaemon.update(ManagedIndexState.ACTIVE,metadata, ais);
+ //if synchronised do not remove this listener
+ keepTracking = keepTracking ||
metadata.isSynchronized();
+ } else { //currently used Archive is of higher
priority as
+ // this one.
+ //keep tracking if synchronised
+ keepTracking = keepTracking ||
metadata.isSynchronized();
+ }
+ } //else managed core was deleted in the meantime ...
}
return !keepTracking;
} else { //unable to create an ArchiveInputStrem