Skip to content

Commit 526f699

Browse files
Merge remote-tracking branch 'bit-bucket/dspace-cris-2023_02_x' into task/dspace-cris-2023_02_x/DSC-2540
2 parents 119d0ed + 5938670 commit 526f699

File tree

44 files changed

+2929
-3004
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+2929
-3004
lines changed

bitbucket-pipelines.yml

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
1-
image: maven:3.6.3-jdk-11
1+
image: maven:3.9.11-eclipse-temurin-11
22

33
definitions:
4-
docker:
5-
memory: 4096 # increase memory for docker-in-docker from 1GB to 4GB
64
caches:
75
gradlewrapper: ~/.gradle/wrapper
86
mvnVars:
9-
&setEnv export MAVEN_OPTS="-Xmx4096M" &&
10-
export MAVEN_ARGS="-Dorg.slf4j.simpleLogger.showDateTime=true -Dorg.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss,SSS"
7+
&setEnv export MAVEN_ARGS="-Dorg.slf4j.simpleLogger.showDateTime=true -Dorg.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss,SSS"
118
steps:
129
- step: &install
1310
runs-on: self.hosted
@@ -21,7 +18,7 @@ definitions:
2118
- maven
2219
script:
2320
- *setEnv
24-
- mvn install -T 1C -B -P-assembly,pipeline $MAVEN_ARGS
21+
- mvn install -ntp -T 1C -B -P-assembly,pipeline -Drun.jvmArguments="-XX:MaxRAMPercentage=50.0 -XX:+UseStringDeduplication -XX:+UseCompressedOops -XX:+UnlockExperimentalVMOptions -XX:+UseContainerSupport" $MAVEN_ARGS
2522
artifacts:
2623
- target/local-repo/**
2724
- dspace-server-webapp/target/**
@@ -40,7 +37,7 @@ definitions:
4037
script:
4138
- *setEnv
4239
- cp -rf target/local-repo/** ~/.m2/repository/
43-
- mvn -T 1C test -B -pl dspace-api,dspace-server-webapp,dspace-services,dspace-oai -P-assembly -nsu -Dmaven.main.skip -DuseIncrementalCompilation=false -Dtest.argLine=-Xmx4096M -DskipUnitTests=false $MAVEN_ARGS
40+
- mvn -T 1C test -B -pl dspace-api,dspace-server-webapp,dspace-services,dspace-oai -P-assembly -nsu -ntp -Dmaven.main.skip -DuseIncrementalCompilation=false -DskipUnitTests=false -Dtest.argLine="-XX:MaxMetaspaceSize=2g -Xmx2g -XX:+UseG1GC -XX:MaxGCPauseMillis=1000 -XX:+HeapDumpOnOutOfMemoryError -XX:+UseStringDeduplication -XX:+UseCompressedOops -XX:+UnlockExperimentalVMOptions -XX:+UseContainerSupport" $MAVEN_ARGS
4441
artifacts:
4542
- dspace-api/target/surefire-reports/*-output.txt
4643
- dspace-server-webapp/target/surefire-reports/*-output.txt
@@ -55,14 +52,16 @@ definitions:
5552
runs-on: self.hosted
5653
name: integration-tests-dspace-api
5754
size: 2x
55+
services:
56+
- docker
5857
caches:
5958
- gradle
6059
- gradlewrapper
6160
- maven
6261
script:
6362
- *setEnv
6463
- cp -rf target/local-repo/** ~/.m2/repository/
65-
- mvn verify -pl dspace-api -nsu -Dmaven.main.skip -DuseIncrementalCompilation=true -DskipUnitTests=true -DskipIntegrationTests=false -B -Dsurefire.rerunFailingTestsCount=2 -Dtest.argLine=-Xmx4096M $MAVEN_ARGS
64+
- mvn verify -pl dspace-api -nsu -ntp -Dmaven.main.skip -DuseIncrementalCompilation=true -DskipUnitTests=true -DskipIntegrationTests=false -B -Dsurefire.rerunFailingTestsCount=2 -Dtest.argLine="-XX:MaxMetaspaceSize=1g -Xmx2g -XX:+UseG1GC -XX:MaxGCPauseMillis=1000 -XX:+HeapDumpOnOutOfMemoryError -XX:+UseStringDeduplication -XX:+UseCompressedOops -XX:+UnlockExperimentalVMOptions -XX:+UseContainerSupport" $MAVEN_ARGS
6665
artifacts:
6766
- dspace-api/target/surefire-reports/*-output.txt
6867
- dspace-api/target/failsafe-reports/*-output.txt
@@ -71,14 +70,16 @@ definitions:
7170
runs-on: self.hosted
7271
name: integration-tests-with-test-jars
7372
size: 2x
73+
services:
74+
- docker
7475
caches:
7576
- gradle
7677
- gradlewrapper
7778
- maven
7879
script:
7980
- *setEnv
8081
- cp -rf target/local-repo/** ~/.m2/repository/
81-
- mvn verify -pl dspace-server-webapp -nsu -Dmaven.main.skip -DuseIncrementalCompilation=true -Dit.test=*IT,\!GenericAuthorizationFeatureIT,\!WorkspaceItemRestRepositoryIT,\!ItemImportIT,\!ItemRestRepositoryIT,\!LeftTiltedRelationshipRestRepositoryIT,\!RelationshipRestRepositoryIT,\!StatisticsRestRepositoryIT,\!DiscoveryRestControllerIT,\!PatchMetadataIT,\!VersionRestRepositoryIT,\!CollectionRestRepositoryIT,\!DiscoveryScopeBasedRestControllerIT,\!BrowsesResourceControllerIT,\!BitstreamRestRepositoryIT,\!RightTiltedRelationshipRestRepositoryIT,\!ResearcherProfileRestRepositoryIT,\!StatisticsRestSearchByCategoryRepositoryIT,\!TaskRestRepositoriesIT -DskipUnitTests=true -DskipIntegrationTests=false -B -Dsurefire.rerunFailingTestsCount=2 -Dtest.argLine=-Xmx4096M $MAVEN_ARGS
82+
- mvn verify -pl dspace-server-webapp -nsu -ntp -Dmaven.main.skip -DuseIncrementalCompilation=true -Dit.test=*IT,\!GenericAuthorizationFeatureIT,\!WorkspaceItemRestRepositoryIT,\!ItemImportIT,\!ItemRestRepositoryIT,\!LeftTiltedRelationshipRestRepositoryIT,\!RelationshipRestRepositoryIT,\!StatisticsRestRepositoryIT,\!DiscoveryRestControllerIT,\!PatchMetadataIT,\!VersionRestRepositoryIT,\!CollectionRestRepositoryIT,\!DiscoveryScopeBasedRestControllerIT,\!BrowsesResourceControllerIT,\!BitstreamRestRepositoryIT,\!RightTiltedRelationshipRestRepositoryIT,\!ResearcherProfileRestRepositoryIT,\!StatisticsRestSearchByCategoryRepositoryIT,\!TaskRestRepositoriesIT -DskipUnitTests=true -DskipIntegrationTests=false -B -Dsurefire.rerunFailingTestsCount=2 -Dtest.argLine="-XX:MaxMetaspaceSize=1g -Xmx1g -XX:+UseG1GC -XX:MaxGCPauseMillis=1000 -XX:+HeapDumpOnOutOfMemoryError -XX:+UseStringDeduplication -XX:+UseCompressedOops -XX:+UnlockExperimentalVMOptions -XX:+UseContainerSupport" $MAVEN_ARGS
8283
artifacts:
8384
- dspace-server-webapp/target/surefire-reports/*-output.txt
8485
- dspace-server-webapp/target/failsafe-reports/*-output.txt
@@ -94,7 +95,7 @@ definitions:
9495
script:
9596
- *setEnv
9697
- cp -rf target/local-repo/** ~/.m2/repository/
97-
- mvn verify -pl dspace-server-webapp -nsu -Dmaven.main.skip -Dit.test=GenericAuthorizationFeatureIT,WorkspaceItemRestRepositoryIT,ItemImportIT,ItemRestRepositoryIT,LeftTiltedRelationshipRestRepositoryIT,RelationshipRestRepositoryIT,StatisticsRestRepositoryIT,DiscoveryRestControllerIT,PatchMetadataIT,VersionRestRepositoryIT,CollectionRestRepositoryIT,DiscoveryScopeBasedRestControllerIT,BrowsesResourceControllerIT,BitstreamRestRepositoryIT,RightTiltedRelationshipRestRepositoryIT,ResearcherProfileRestRepositoryIT,StatisticsRestSearchByCategoryRepositoryIT,TaskRestRepositoriesIT -DskipUnitTests=true -DskipIntegrationTests=false -B -Dsurefire.rerunFailingTestsCount=2 -Dtest.argLine=-Xmx4096M $MAVEN_ARGS
98+
- mvn verify -pl dspace-server-webapp -nsu -ntp -Dmaven.main.skip -Dit.test=GenericAuthorizationFeatureIT,WorkspaceItemRestRepositoryIT,ItemImportIT,ItemRestRepositoryIT,LeftTiltedRelationshipRestRepositoryIT,RelationshipRestRepositoryIT,StatisticsRestRepositoryIT,DiscoveryRestControllerIT,PatchMetadataIT,VersionRestRepositoryIT,CollectionRestRepositoryIT,DiscoveryScopeBasedRestControllerIT,BrowsesResourceControllerIT,BitstreamRestRepositoryIT,RightTiltedRelationshipRestRepositoryIT,ResearcherProfileRestRepositoryIT,StatisticsRestSearchByCategoryRepositoryIT,TaskRestRepositoriesIT -DskipUnitTests=true -DskipIntegrationTests=false -B -Dsurefire.rerunFailingTestsCount=2 -Dtest.argLine="-XX:MaxMetaspaceSize=1g -Xmx1g -XX:+UseG1GC -XX:MaxGCPauseMillis=1000 -XX:+HeapDumpOnOutOfMemoryError -XX:+UseStringDeduplication -XX:+UseCompressedOops -XX:+UnlockExperimentalVMOptions -XX:+UseContainerSupport" $MAVEN_ARGS
9899
artifacts:
99100
- dspace-server-webapp/target/surefire-reports/*-output.txt
100101
- dspace-server-webapp/target/failsafe-reports/*-output.txt

dspace-api/pom.xml

Lines changed: 35 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -686,6 +686,7 @@
686686
<version>1.1.1</version>
687687
</dependency>
688688

689+
<!-- guava is needed by OAuth, Guice, Mockserver, ORCID, Solr, JClouds -->
689690
<dependency>
690691
<groupId>com.google.guava</groupId>
691692
<artifactId>guava</artifactId>
@@ -787,9 +788,37 @@
787788

788789
<!-- S3 -->
789790
<dependency>
790-
<groupId>com.amazonaws</groupId>
791-
<artifactId>aws-java-sdk-s3</artifactId>
792-
<version>1.12.780</version>
791+
<groupId>software.amazon.awssdk</groupId>
792+
<artifactId>s3</artifactId>
793+
<version>${software.amazon.awssdk.version}</version>
794+
<exclusions>
795+
<exclusion>
796+
<groupId>software.amazon.awssdk</groupId>
797+
<artifactId>netty-nio-client</artifactId>
798+
</exclusion>
799+
<exclusion>
800+
<groupId>software.amazon.awssdk</groupId>
801+
<artifactId>apache-client</artifactId>
802+
</exclusion>
803+
</exclusions>
804+
</dependency>
805+
806+
<dependency>
807+
<groupId>software.amazon.awssdk.crt</groupId>
808+
<artifactId>aws-crt</artifactId>
809+
<version>${software.amazon.awssdk.crt.version}</version>
810+
</dependency>
811+
812+
<dependency>
813+
<groupId>software.amazon.awssdk</groupId>
814+
<artifactId>s3-transfer-manager</artifactId>
815+
<version>${software.amazon.awssdk.version}</version>
816+
</dependency>
817+
818+
<dependency>
819+
<groupId>software.amazon.awssdk</groupId>
820+
<artifactId>url-connection-client</artifactId>
821+
<version>${software.amazon.awssdk.version}</version>
793822
</dependency>
794823

795824
<dependency>
@@ -951,20 +980,10 @@
951980
</dependency>
952981

953982
<dependency>
954-
<groupId>io.findify</groupId>
955-
<artifactId>s3mock_2.13</artifactId>
956-
<version>0.2.6</version>
983+
<groupId>org.testcontainers</groupId>
984+
<artifactId>testcontainers-localstack</artifactId>
985+
<version>2.0.1</version>
957986
<scope>test</scope>
958-
<exclusions>
959-
<exclusion>
960-
<groupId>com.amazonawsl</groupId>
961-
<artifactId>aws-java-sdk-s3</artifactId>
962-
</exclusion>
963-
<exclusion>
964-
<groupId>com.amazonaws</groupId>
965-
<artifactId>aws-java-sdk-s3</artifactId>
966-
</exclusion>
967-
</exclusions>
968987
</dependency>
969988

970989
</dependencies>

dspace-api/src/main/java/org/dspace/app/mediafilter/ImageMagickThumbnailFilter.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import java.util.regex.Pattern;
1515
import java.util.regex.PatternSyntaxException;
1616

17-
import org.apache.pdfbox.pdmodel.PDDocument;
17+
import org.apache.pdfbox.Loader;
1818
import org.apache.pdfbox.pdmodel.PDPage;
1919
import org.apache.pdfbox.pdmodel.common.PDRectangle;
2020
import org.dspace.content.Bitstream;
@@ -153,8 +153,8 @@ public File getImageFile(File f, boolean verbose)
153153
// the CropBox is missing or empty because pdfbox will set it to the
154154
// same size as the MediaBox if it doesn't exist. Also note that we
155155
// only need to check the first page, since that's what we use for
156-
// generating the thumbnail (PDDocument uses a zero-based index).
157-
PDPage pdfPage = PDDocument.load(f).getPage(0);
156+
// generating the thumbnail (PDPage uses a zero-based index).
157+
PDPage pdfPage = Loader.loadPDF(f).getPage(0);
158158
PDRectangle pdfPageMediaBox = pdfPage.getMediaBox();
159159
PDRectangle pdfPageCropBox = pdfPage.getCropBox();
160160

dspace-api/src/main/java/org/dspace/app/mediafilter/PDFBoxThumbnail.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import java.io.InputStream;
1212

1313
import org.apache.logging.log4j.Logger;
14+
import org.apache.pdfbox.Loader;
15+
import org.apache.pdfbox.io.RandomAccessReadBuffer;
1416
import org.apache.pdfbox.pdmodel.PDDocument;
1517
import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException;
1618
import org.apache.pdfbox.rendering.PDFRenderer;
@@ -71,7 +73,7 @@ public InputStream getDestinationStream(Item currentItem, InputStream source, bo
7173
BufferedImage buf;
7274

7375
// Render the page image.
74-
try ( PDDocument doc = PDDocument.load(source); ) {
76+
try ( PDDocument doc = Loader.loadPDF(new RandomAccessReadBuffer(source)); ) {
7577
PDFRenderer renderer = new PDFRenderer(doc);
7678
buf = renderer.renderImage(0);
7779
} catch (InvalidPasswordException ex) {

dspace-api/src/main/java/org/dspace/content/integration/crosswalks/virtualfields/postprocessors/GroupByTypeCitationsPostProcessor.java

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,16 @@
1313
import java.util.Arrays;
1414
import java.util.List;
1515
import java.util.UUID;
16+
import java.util.regex.Matcher;
17+
import java.util.regex.Pattern;
1618

1719
import org.apache.commons.collections.CollectionUtils;
1820
import org.apache.commons.lang3.ArrayUtils;
1921
import org.apache.commons.lang3.ObjectUtils;
2022
import org.apache.commons.lang3.StringUtils;
23+
import org.apache.commons.lang3.tuple.Pair;
24+
import org.apache.logging.log4j.LogManager;
25+
import org.apache.logging.log4j.Logger;
2126
import org.dspace.content.Item;
2227
import org.dspace.content.integration.crosswalks.csl.CSLResult;
2328
import org.dspace.content.service.ItemService;
@@ -34,6 +39,8 @@
3439
*/
3540
public class GroupByTypeCitationsPostProcessor implements VirtualFieldCitationsPostProcessor {
3641

42+
private static final Logger logger = LogManager.getLogger(GroupByTypeCitationsPostProcessor.class);
43+
3744
@Autowired
3845
private ItemService itemService;
3946

@@ -45,15 +52,20 @@ public class GroupByTypeCitationsPostProcessor implements VirtualFieldCitationsP
4552

4653
private String defaultType = "Other";
4754

55+
private static final Pattern FO_BLOCK_ID_PATTERN = Pattern.compile("<fo:block id=\"([^\"]+)\">");
56+
4857
@Override
4958
public CSLResult process(Context context, Item item, CSLResult cslResult) {
5059

5160
if (typeHeaderAdditionEnabled && !cslResult.getFormat().equals("fo")) {
5261
throw new IllegalArgumentException("Only CSLResult related to fo format is supports type header addition");
5362
}
5463

55-
String[] citationEntries = cslResult.getCitationEntries();
56-
UUID[] itemIds = cslResult.getItemIds();
64+
Pair<UUID[], String[]> idEntriesPair = extractOrFallback(cslResult.getItemIds(),
65+
cslResult.getCitationEntries());
66+
67+
UUID[] itemIds = idEntriesPair.getLeft();
68+
String[] citationEntries = idEntriesPair.getRight();
5769

5870
String[] newCitationEntries = new String[citationEntries.length];
5971
UUID[] newItemsIds = new UUID[itemIds.length];
@@ -208,4 +220,32 @@ public void setTypeHeaderAdditionEnabled(boolean addTypeHeader) {
208220
this.typeHeaderAdditionEnabled = addTypeHeader;
209221
}
210222

223+
private Pair<UUID[], String[]> extractOrFallback(UUID[] inputIds, String[] citationEntries) {
224+
UUID[] extractedIds = new UUID[citationEntries.length];
225+
boolean extractionSuccess = true;
226+
227+
for (int i = 0; i < citationEntries.length; i++) {
228+
Matcher matcher = FO_BLOCK_ID_PATTERN.matcher(citationEntries[i]);
229+
if (matcher.find()) {
230+
try {
231+
extractedIds[i] = UUID.fromString(matcher.group(1));
232+
} catch (IllegalArgumentException ex) {
233+
extractedIds[i] = null;
234+
extractionSuccess = false;
235+
}
236+
} else {
237+
extractedIds[i] = null;
238+
extractionSuccess = false;
239+
}
240+
}
241+
242+
if (extractionSuccess) {
243+
return Pair.of(extractedIds, citationEntries);
244+
} else {
245+
logger.warn("Could not reliably extract UUIDs from formatted citations: falling back to original itemId " +
246+
"order, output may be mismatched");
247+
return Pair.of(inputIds, citationEntries);
248+
}
249+
}
250+
211251
}

dspace-api/src/main/java/org/dspace/content/packager/PDFPackager.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@
1818

1919
import org.apache.commons.lang3.ArrayUtils;
2020
import org.apache.logging.log4j.Logger;
21+
import org.apache.pdfbox.Loader;
2122
import org.apache.pdfbox.cos.COSDocument;
2223
import org.apache.pdfbox.io.MemoryUsageSetting;
23-
import org.apache.pdfbox.io.RandomAccessBufferedFileInputStream;
24+
import org.apache.pdfbox.io.RandomAccessReadBuffer;
2425
import org.apache.pdfbox.io.ScratchFile;
25-
import org.apache.pdfbox.pdfparser.PDFParser;
2626
import org.apache.pdfbox.pdmodel.PDDocument;
2727
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
2828
import org.dspace.authorize.AuthorizeException;
@@ -330,19 +330,24 @@ private void crosswalkPDF(Context context, Item item, InputStream metadata)
330330
COSDocument cos = null;
331331

332332
try {
333-
ScratchFile scratchFile = null;
333+
PDDocument document = null;
334+
334335
try {
335-
long useRAM = Runtime.getRuntime().freeMemory() * 80 / 100; // use up to 80% of JVM free memory
336-
scratchFile = new ScratchFile(
337-
MemoryUsageSetting.setupMixed(useRAM)); // then fallback to temp file (unlimited size)
336+
// Use up to 80% of JVM free memory and fall back to a temp file (unlimited size)
337+
long useRAM = Runtime.getRuntime().freeMemory() * 80 / 100;
338+
document = Loader.loadPDF(
339+
new RandomAccessReadBuffer(metadata),
340+
() -> new ScratchFile(MemoryUsageSetting.setupMixed(useRAM)));
338341
} catch (IOException ioe) {
339342
log.warn("Error initializing scratch file: " + ioe.getMessage());
340343
}
341344

342-
PDFParser parser = new PDFParser(new RandomAccessBufferedFileInputStream(metadata), scratchFile);
343-
parser.parse();
344-
cos = parser.getDocument();
345+
// sanity check: loaded PDF document must not be null.
346+
if (document == null) {
347+
throw new MetadataValidationException("The provided stream could not be parsed into a PDF document.");
348+
}
345349

350+
cos = document.getDocument();
346351
// sanity check: PDFBox breaks on encrypted documents, so give up.
347352
if (cos.getEncryptionDictionary() != null) {
348353
throw new MetadataValidationException("This packager cannot accept an encrypted PDF document.");

dspace-api/src/main/java/org/dspace/discovery/SolrServiceImpl.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -984,6 +984,9 @@ protected SolrQuery resolveToSolrQuery(Context context, DiscoverQuery discoveryQ
984984
if (0 < discoveryQuery.getHitHighlightingFields().size()) {
985985
solrQuery.setHighlight(true);
986986
solrQuery.add(HighlightParams.USE_PHRASE_HIGHLIGHTER, Boolean.TRUE.toString());
987+
solrQuery.set("hl.maxAnalyzedChars", Integer.toString(
988+
configurationService
989+
.getIntProperty("discovery.solr.fulltext.charLimit", 100000)));
987990
for (DiscoverHitHighlightingField highlightingField : discoveryQuery.getHitHighlightingFields()) {
988991
solrQuery.addHighlightField(highlightingField.getField() + "_hl");
989992
solrQuery.add("f." + highlightingField.getField() + "_hl." + HighlightParams.FRAGSIZE,

dspace-api/src/main/java/org/dspace/discovery/configuration/DiscoveryConfigurationUtilsService.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,18 @@ public Iterator<Item> findByRelation(Context context, Item item, String relation
5353
discoverQuery.setDSpaceObjectFilter(IndexableItem.TYPE);
5454
discoverQuery.setDiscoveryConfigurationName(discoveryConfiguration.getId());
5555
discoverQuery.setScopeObject(new IndexableItem(item));
56+
57+
if (discoveryConfiguration.getSearchSortConfiguration() == null ||
58+
discoveryConfiguration.getSearchSortConfiguration().getDefaultSortField() == null) {
59+
// No sorting configured - add default chronological sort for consistency
60+
discoverQuery.setSortField("dc.date.issued_dt", DiscoverQuery.SORT_ORDER.asc);
61+
} else {
62+
DiscoverySortFieldConfiguration sortField =
63+
discoveryConfiguration.getSearchSortConfiguration().getDefaultSortField();
64+
discoverQuery.setSortField(sortField.getMetadataField(),
65+
DiscoverQuery.SORT_ORDER.valueOf(sortField.getDefaultSortOrder().name()));
66+
}
67+
5668
List<String> defaultFilterQueries = discoveryConfiguration.getDefaultFilterQueries();
5769
for (String defaultFilterQuery : defaultFilterQueries) {
5870
discoverQuery.addFilterQueries(MessageFormat.format(defaultFilterQuery, item.getID()));

dspace-api/src/main/java/org/dspace/discovery/indexobject/ItemIndexFactoryImpl.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -754,8 +754,13 @@ public void addDiscoveryFields(SolrInputDocument doc, Context context, Item item
754754

755755
@Override
756756
public void writeDocument(Context context, IndexableItem indexableObject, SolrInputDocument solrInputDocument)
757-
throws SQLException, IOException, SolrServerException {
758-
writeDocument(solrInputDocument, new FullTextContentStreams(context, indexableObject.getIndexedObject()));
757+
throws SolrServerException {
758+
try {
759+
writeDocument(solrInputDocument, new FullTextContentStreams(context, indexableObject.getIndexedObject()));
760+
} catch (Exception e) {
761+
log.error("Error occurred while writing SOLR document for {} object {}",
762+
indexableObject.getType(), indexableObject.getID(), e);
763+
}
759764
}
760765

761766
@Override

0 commit comments

Comments
 (0)