Skip to content

Commit

Permalink
Solr: delete published files before reindexing dataset #762
Browse files Browse the repository at this point in the history
  • Loading branch information
pdurbin committed Feb 26, 2015
1 parent 53f5e52 commit dde9997
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/main/java/edu/harvard/iq/dataverse/IndexServiceBean.java
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,7 @@ public String indexDataset(Dataset dataset) {
debug.append("\ndebug:\n");
int numPublishedVersions = 0;
List<DatasetVersion> versions = dataset.getVersions();
List<String> solrIdsOfFilesToDelete = new ArrayList<>();
for (DatasetVersion datasetVersion : versions) {
Long versionDatabaseId = datasetVersion.getId();
String versionTitle = datasetVersion.getTitle();
Expand All @@ -251,6 +252,19 @@ public String indexDataset(Dataset dataset) {
List<FileMetadata> fileMetadatas = datasetVersion.getFileMetadatas();
List<String> fileInfo = new ArrayList<>();
for (FileMetadata fileMetadata : fileMetadatas) {
String solrIdOfPublishedFile = solrDocIdentifierFile + fileMetadata.getDataFile().getId();
/**
* It sounds weird but the first thing we'll do is preemptively
* delete the Solr documents of all published files. Don't
* worry, published files will be re-indexed later along with
* the dataset. We do this so users can delete files from
* published versions of datasets and then re-publish a new
* version without fear that their old published files (now
* deleted from the latest published version) will be
* searchable. See also
* https://github.com/IQSS/dataverse/issues/762
*/
solrIdsOfFilesToDelete.add(solrIdOfPublishedFile);
fileInfo.add(fileMetadata.getDataFile().getId() + ":" + fileMetadata.getLabel());
}
int numFiles = 0;
Expand All @@ -260,6 +274,8 @@ public String indexDataset(Dataset dataset) {
debug.append("- files: " + numFiles + " " + fileInfo.toString() + "\n");
}
debug.append("numPublishedVersions: " + numPublishedVersions + "\n");
IndexResponse resultOfAttemptToPremptivelyDeletePublishedFiles = solrIndexService.deleteMultipleSolrIds(solrIdsOfFilesToDelete);
debug.append("result of attempt to premptively deleted published files before reindexing: " + resultOfAttemptToPremptivelyDeletePublishedFiles + "\n");
DatasetVersion latestVersion = dataset.getLatestVersion();
String latestVersionStateString = latestVersion.getVersionState().name();
DatasetVersion.VersionState latestVersionState = latestVersion.getVersionState();
Expand Down

0 comments on commit dde9997

Please sign in to comment.