From 2faca6235960b04e05422dbbf9242f69b36390a6 Mon Sep 17 00:00:00 2001 From: Ludovic DANIEL Date: Wed, 28 May 2025 15:15:02 +0200 Subject: [PATCH 1/2] MakeDataCount MDC API - Adding disconnect() on HttpURLConnection in case of many calls --- .../java/edu/harvard/iq/dataverse/api/MakeDataCountApi.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/edu/harvard/iq/dataverse/api/MakeDataCountApi.java b/src/main/java/edu/harvard/iq/dataverse/api/MakeDataCountApi.java index ca8f59a71be..79bc2f94094 100644 --- a/src/main/java/edu/harvard/iq/dataverse/api/MakeDataCountApi.java +++ b/src/main/java/edu/harvard/iq/dataverse/api/MakeDataCountApi.java @@ -175,11 +175,14 @@ public Response updateCitationsForDataset(@PathParam("id") String id) throws IOE int status = connection.getResponseCode(); if (status != 200) { logger.warning("Failed to get citations from " + url.toString()); + connection.disconnect(); return error(Status.fromStatusCode(status), "Failed to get citations from " + url.toString()); } JsonObject report; try (InputStream inStream = connection.getInputStream()) { report = JsonUtil.getJsonObject(inStream); + } finally { + connection.disconnect(); } JsonObject links = report.getJsonObject("links"); JsonArray data = report.getJsonArray("data"); From d1883619f2ad3f812172a871acf2f8786fe6f54b Mon Sep 17 00:00:00 2001 From: Ludovic DANIEL Date: Wed, 28 May 2025 16:01:40 +0200 Subject: [PATCH 2/2] MakeDataCount MDC API - Use cursor method for pagination to fix infinite loop issue --- .../java/edu/harvard/iq/dataverse/api/MakeDataCountApi.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/api/MakeDataCountApi.java b/src/main/java/edu/harvard/iq/dataverse/api/MakeDataCountApi.java index 79bc2f94094..562fd7fcb81 100644 --- a/src/main/java/edu/harvard/iq/dataverse/api/MakeDataCountApi.java +++ b/src/main/java/edu/harvard/iq/dataverse/api/MakeDataCountApi.java @@ -160,7 +160,7 @@ public Response updateCitationsForDataset(@PathParam("id") String id) throws IOE url = new URI(JvmSettings.DATACITE_REST_API_URL.lookup(pidProvider.getId()) + "/events?doi=" + authorityPlusIdentifier + - "&source=crossref&page[size]=1000").toURL(); + "&source=crossref&page[size]=1000&page[cursor]=1").toURL(); } catch (URISyntaxException e) { //Nominally this means a config error/ bad DATACITE_REST_API_URL for this provider logger.warning("Unable to create URL for " + persistentId + ", pidProvider " + pidProvider.getId());