Skip to content

Commit 01281ee

Browse files
authored
MCR-2134 update dependencies (#1042)
* update to SOLR 9.6.1 * update jetty and tomcat * update docker images to newer versions * update Github actions
1 parent 583f831 commit 01281ee

File tree

12 files changed

+77
-68
lines changed

12 files changed

+77
-68
lines changed

.github/workflows/ci.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on: [ push, pull_request ]
55
env:
66
MAVEN_OPTS: -Xmx1024M -Xss128M
77
GECKODRIVER_VERSION: 0.34.0
8-
BIBUTILS_VERSION: 6.10
8+
BIBUTILS_VERSION: 7.2
99

1010
jobs:
1111
build:
@@ -87,7 +87,7 @@ jobs:
8787
export FIREFOX_BIN=$(which firefox-esr)
8888
export SELENIUM_BROWSER=firefox
8989
90-
mvn -B -P!standard-with-extra-repos -U -Djetty clean install
90+
mvn -B -P!standard-with-extra-repos -U -Djetty -e clean install
9191
mvn -P!standard-with-extra-repos -B javadoc:javadoc javadoc:test-javadoc -T1C
9292
- name: Login to Docker Hub
9393
if: contains('refs/heads/2022.06.x refs/heads/2023.06.x refs/heads/main', github.ref) && github.event_name=='push' && success()
@@ -115,6 +115,7 @@ jobs:
115115
./**/screenshots
116116
./**/*error*.log
117117
./**/*test.log
118+
~/.m2/repository/solr-*/server/logs/*.log
118119
119120
- name: Save Maven cache
120121
uses: skjolber/maven-cache-github-action@v1

docker-compose.prod.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ version: '3.1'
33
services:
44
db:
55
container_name: ${NAME}-db
6-
image: postgres:12
6+
image: postgres:16
77
restart: unless-stopped
88
environment:
99
- POSTGRES_USER=${DB_USER}
@@ -15,15 +15,15 @@ services:
1515
- ${DB_PORT}:5432
1616
solr:
1717
container_name: ${NAME}-solr
18-
image: mycoreorg/mir-solr:2022.06.x
18+
image: mycoreorg/mir-solr:2023.06.x
1919
restart: unless-stopped
2020
volumes:
2121
- ${SOLR_DATA}:/var/solr/data
2222
ports:
2323
- ${SOLR_HTTP}:8983
2424
mir:
2525
container_name: ${NAME}-mir
26-
image: mycoreorg/mir:2022.06.x
26+
image: mycoreorg/mir:2023.06.x
2727
restart: unless-stopped
2828
environment:
2929
- APP_CONTEXT=${APP_CONTEXT}

docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ version: '3.1'
33
services:
44
db:
55
container_name: ${NAME}-db
6-
image: postgres:12
6+
image: postgres:16
77
restart: unless-stopped
88
environment:
99
- POSTGRES_USER=${DB_USER}

mir-it/src/test/java/org/mycore/mir/it/tests/MIRITBase.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import org.apache.solr.client.solrj.SolrClient;
99
import org.apache.solr.client.solrj.SolrServerException;
10-
import org.apache.solr.client.solrj.impl.HttpSolrClient;
10+
import org.apache.solr.client.solrj.impl.HttpJdkSolrClient;
1111
import org.apache.solr.client.solrj.request.LukeRequest;
1212
import org.apache.solr.client.solrj.response.LukeResponse;
1313
import org.junit.After;
@@ -49,8 +49,7 @@ String getCoreName() {
4949
public static void setupSolr() {
5050
int solrPort = Integer.parseInt(System.getProperty("solr.port"));
5151
final String baseSolrUrl = String.format("http://localhost:%d/solr/", solrPort);
52-
SOLR_CLIENT = new HttpSolrClient.Builder()
53-
.withBaseSolrUrl(baseSolrUrl)
52+
SOLR_CLIENT = new HttpJdkSolrClient.Builder(baseSolrUrl)
5453
.build();
5554
}
5655

mir-module/pom.xml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -154,14 +154,6 @@
154154
<groupId>org.apache.commons</groupId>
155155
<artifactId>commons-compress</artifactId>
156156
</dependency>
157-
<dependency>
158-
<groupId>org.apache.httpcomponents</groupId>
159-
<artifactId>httpclient</artifactId>
160-
</dependency>
161-
<dependency>
162-
<groupId>org.apache.httpcomponents</groupId>
163-
<artifactId>httpcore</artifactId>
164-
</dependency>
165157
<dependency>
166158
<groupId>org.apache.logging.log4j</groupId>
167159
<artifactId>log4j-api</artifactId>

mir-module/src/main/java/org/mycore/mir/MIRGetOpenAIREProjectsServlet.java

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,16 @@
22

33
import java.io.IOException;
44
import java.io.InputStream;
5+
import java.net.URI;
56
import java.net.URLEncoder;
7+
import java.net.http.HttpClient;
8+
import java.net.http.HttpRequest;
9+
import java.net.http.HttpResponse;
610

7-
import org.apache.commons.io.IOUtils;
8-
import org.apache.http.HttpEntity;
9-
import org.apache.http.client.methods.CloseableHttpResponse;
10-
import org.apache.http.client.methods.HttpGet;
11-
import org.apache.http.impl.client.CloseableHttpClient;
12-
import org.apache.http.impl.client.HttpClients;
13-
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
1411
import org.apache.logging.log4j.LogManager;
1512
import org.apache.logging.log4j.Logger;
1613
import org.mycore.frontend.MCRFrontendUtil;
14+
import org.mycore.services.http.MCRHttpUtils;
1715

1816
import jakarta.servlet.ServletException;
1917
import jakarta.servlet.http.HttpServlet;
@@ -26,13 +24,11 @@ public class MIRGetOpenAIREProjectsServlet extends HttpServlet {
2624

2725
private static Logger LOGGER = LogManager.getLogger();
2826

29-
private CloseableHttpClient client;
27+
private HttpClient client;
3028

3129
@Override
3230
public void init() throws ServletException {
33-
PoolingHttpClientConnectionManager connectManager = new PoolingHttpClientConnectionManager();
34-
connectManager.setDefaultMaxPerRoute(20);
35-
client = HttpClients.custom().useSystemProperties().setConnectionManager(connectManager).build();
31+
client = MCRHttpUtils.getHttpClient();
3632
}
3733

3834
@Override
@@ -44,24 +40,29 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
4440
: "acronym=" + URLEncoder.encode(acronym, "UTF-8");
4541
String urlString = "http://api.openaire.eu/search/projects?" + suffix;
4642

47-
HttpGet method = new HttpGet(urlString);
48-
try (CloseableHttpResponse httpRes = client.execute(method)) {
49-
response.setStatus(httpRes.getStatusLine().getStatusCode());
50-
HttpEntity entity = httpRes.getEntity();
51-
try (InputStream contentStream = entity.getContent()) {
52-
IOUtils.copy(contentStream, response.getOutputStream());
43+
HttpRequest openaireRequest = MCRHttpUtils.getRequestBuilder()
44+
.uri(URI.create(urlString))
45+
.build();
46+
boolean transmitted = false;
47+
try {
48+
HttpResponse<InputStream> openaireResponse = client
49+
.send(openaireRequest, HttpResponse.BodyHandlers.ofInputStream());
50+
response.setStatus(openaireResponse.statusCode());
51+
try (InputStream contentStream = openaireResponse.body()) {
52+
contentStream.transferTo(response.getOutputStream());
53+
transmitted = true;
54+
}
55+
} catch (InterruptedException e) {
56+
throw new ServletException(e);
57+
} finally {
58+
if (!transmitted) {
59+
LOGGER.error("Error while loading eternal resource: " + openaireRequest.uri());
5360
}
54-
} catch (IOException e) {
55-
LOGGER.error("Failed to load " + urlString, e);
5661
}
5762
}
5863

5964
@Override
6065
public void destroy() {
61-
try {
62-
client.close();
63-
} catch (IOException e) {
64-
LOGGER.error("Could not close HttpClient!", e);
65-
}
66+
client.close();
6667
}
6768
}

mir-module/src/main/java/org/mycore/mir/authorization/ReCaptcha.java

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,18 @@
2323
package org.mycore.mir.authorization;
2424

2525
import java.io.IOException;
26+
import java.net.URI;
27+
import java.net.http.HttpClient;
28+
import java.net.http.HttpRequest;
29+
import java.net.http.HttpResponse;
2630
import java.util.List;
2731

28-
import org.apache.http.HttpResponse;
29-
import org.apache.http.client.methods.HttpGet;
30-
import org.apache.http.impl.client.CloseableHttpClient;
31-
import org.apache.http.impl.client.HttpClientBuilder;
32-
import org.apache.http.util.EntityUtils;
3332
import org.apache.logging.log4j.LogManager;
3433
import org.apache.logging.log4j.Logger;
3534
import org.jdom2.Attribute;
3635
import org.mycore.common.MCRSessionMgr;
3736
import org.mycore.common.config.MCRConfiguration2;
37+
import org.mycore.services.http.MCRHttpUtils;
3838

3939
import com.google.gson.Gson;
4040

@@ -94,25 +94,24 @@ public Boolean isSubmittedCaptchaCorrect(final HttpServletRequest request) {
9494
}
9595

9696
private Boolean verifyResponse(final String response, final String ip) {
97-
final CloseableHttpClient client = HttpClientBuilder.create().build();
97+
try (HttpClient client = MCRHttpUtils.getHttpClient()) {
98+
final String url = "https://www.google.com/recaptcha/api/siteverify?secret=" + secretKey + "&response="
99+
+ response + "&remoteip=" + ip;
98100

99-
final String url = "https://www.google.com/recaptcha/api/siteverify?secret=" + secretKey + "&response="
100-
+ response + "&remoteip=" + ip;
101+
final HttpRequest get = MCRHttpUtils.getRequestBuilder().uri(URI.create(url)).build();
101102

102-
final HttpGet get = new HttpGet(url);
103-
104-
try {
105-
final HttpResponse res = client.execute(get);
106-
final String json = EntityUtils.toString(res.getEntity());
103+
final HttpResponse<String> res = client.send(get, HttpResponse.BodyHandlers.ofString());
104+
final String json = res.body();
107105

108106
final Gson gson = new Gson();
109107
final ReCaptchaResult rcResult = gson.fromJson(json, ReCaptchaResult.class);
110108

111109
return Boolean.valueOf(rcResult.success);
112-
} catch (final IOException e) {
110+
} catch (final IOException | InterruptedException e) {
113111
LOGGER.warn("ReCaptcha response could not be verified!", e);
114112
return Boolean.FALSE;
115113
}
114+
116115
}
117116

118117
/**

mir-webapp/src/main/solr/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM solr:8.11
1+
FROM solr:9.6
22
USER root
33
RUN apt-get update && \
44
apt-get -y install sudo

mir-webapp/src/main/solr/docker-entrypoint.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,5 +104,5 @@ echo " }" >> $secruity_json
104104
echo " }" >> $secruity_json
105105
echo "}" >> $secruity_json
106106

107-
(/opt/docker-solr/scripts/wait-for-solr.sh;/opt/solr/bin/solr zk cp $secruity_json zk:security.json -z localhost:9983)&
108-
/opt/docker-solr/scripts/solr-foreground -c;
107+
(/opt/solr/docker/scripts/wait-for-solr.sh;/opt/solr/bin/solr zk cp $secruity_json zk:security.json -z localhost:9983)&
108+
/opt/solr/docker/scripts/solr-foreground -c;

mir-webapp/src/main/solr/solr.xml

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,17 @@
2323
2424
More information about options available in this configuration file,
2525
and Solr Core administration can be found online:
26-
https://lucene.apache.org/solr/guide/format-of-solr-xml.html
26+
https://solr.apache.org/guide/solr/latest/configuration-guide/configuring-solr-xml.html
2727
-->
2828

2929
<solr>
3030

3131
<int name="maxBooleanClauses">${solr.max.booleanClauses:1024}</int>
3232
<str name="sharedLib">${solr.sharedLib:}</str>
33+
<str name="modules">${solr.modules:}</str>
3334
<str name="allowPaths">${solr.allowPaths:}</str>
35+
<str name="allowUrls">${solr.allowUrls:}</str>
36+
<str name="hideStackTrace">${solr.hideStackTrace:false}</str>
3437

3538
<solrcloud>
3639

@@ -45,16 +48,30 @@
4548
<int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:60000}</int>
4649
<str name="zkCredentialsProvider">${zkCredentialsProvider:org.apache.solr.common.cloud.DefaultZkCredentialsProvider}</str>
4750
<str name="zkACLProvider">${zkACLProvider:org.apache.solr.common.cloud.DefaultZkACLProvider}</str>
51+
<str name="zkCredentialsInjector">${zkCredentialsInjector:org.apache.solr.common.cloud.DefaultZkCredentialsInjector}</str>
52+
<bool name="distributedClusterStateUpdates">${distributedClusterStateUpdates:false}</bool>
53+
<bool name="distributedCollectionConfigSetExecution">${distributedCollectionConfigSetExecution:false}</bool>
54+
<int name="minStateByteLenForCompression">${minStateByteLenForCompression:-1}</int>
55+
<str name="stateCompressor">${stateCompressor:org.apache.solr.common.util.ZLibCompressor}</str>
4856

4957
</solrcloud>
5058

5159
<shardHandlerFactory name="shardHandlerFactory"
5260
class="HttpShardHandlerFactory">
5361
<int name="socketTimeout">${socketTimeout:600000}</int>
5462
<int name="connTimeout">${connTimeout:60000}</int>
55-
<str name="shardsWhitelist">${solr.shardsWhitelist:}</str>
5663
</shardHandlerFactory>
5764

58-
<metrics enabled="${metricsEnabled:true}"/>
65+
<metrics enabled="${metricsEnabled:true}">
66+
<!-- Solr computes JVM metrics for threads. Computing these metrics, esp. computing deadlocks etc.,
67+
requires potentially expensive computations, and can be avoided for every metrics call by
68+
setting a high caching expiration interval (in seconds).
69+
<caching>
70+
<int name="threadsIntervalSeconds">5</int>
71+
</caching>
72+
-->
73+
<!--reporter name="jmx_metrics" group="core" class="org.apache.solr.metrics.reporters.SolrJmxReporter"/-->
74+
</metrics>
75+
5976

6077
</solr>

0 commit comments

Comments
 (0)