From 956f623b250b333956423cd3adbe2c7570df0f6f Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Tue, 22 Aug 2023 14:38:22 -0400 Subject: [PATCH 01/25] set build number #9814 --- .github/workflows/deploy_beta_testing.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/deploy_beta_testing.yml b/.github/workflows/deploy_beta_testing.yml index f858272ca2b..0c0d5168906 100644 --- a/.github/workflows/deploy_beta_testing.yml +++ b/.github/workflows/deploy_beta_testing.yml @@ -22,6 +22,9 @@ jobs: working-directory: src/main/resources/META-INF run: echo -e "dataverse.feature.api-session-auth=true" >> microprofile-config.properties + - name: Set build number + run: scripts/installer/custom-build-number + - name: Build application war run: mvn package From acdaa891467ee1900aa9344f009ec948d38458af Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Tue, 29 Aug 2023 11:40:06 -0400 Subject: [PATCH 02/25] switch to UNF 6.0 on Maven Central (SNAPSHOT for now) #9810 --- local_lib/org/dataverse/unf/6.0/unf-6.0.jar | Bin 51515 -> 0 bytes local_lib/org/dataverse/unf/6.0/unf-6.0.jar.md5 | 1 - .../org/dataverse/unf/6.0/unf-6.0.jar.sha1 | 1 - local_lib/org/dataverse/unf/6.0/unf-6.0.pom | 8 -------- local_lib/org/dataverse/unf/6.0/unf-6.0.pom.md5 | 1 - .../org/dataverse/unf/6.0/unf-6.0.pom.sha1 | 1 - pom.xml | 2 +- 7 files changed, 1 insertion(+), 13 deletions(-) delete mode 100644 local_lib/org/dataverse/unf/6.0/unf-6.0.jar delete mode 100644 local_lib/org/dataverse/unf/6.0/unf-6.0.jar.md5 delete mode 100644 local_lib/org/dataverse/unf/6.0/unf-6.0.jar.sha1 delete mode 100644 local_lib/org/dataverse/unf/6.0/unf-6.0.pom delete mode 100644 local_lib/org/dataverse/unf/6.0/unf-6.0.pom.md5 delete mode 100644 local_lib/org/dataverse/unf/6.0/unf-6.0.pom.sha1 diff --git a/local_lib/org/dataverse/unf/6.0/unf-6.0.jar b/local_lib/org/dataverse/unf/6.0/unf-6.0.jar deleted file mode 100644 index d2738e2dadd165bc2c70be0be756014627946529..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51515 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 D@Miv_ diff --git a/local_lib/org/dataverse/unf/6.0/unf-6.0.jar.md5 b/local_lib/org/dataverse/unf/6.0/unf-6.0.jar.md5 deleted file mode 100644 index 04ca3e73ce8..00000000000 --- a/local_lib/org/dataverse/unf/6.0/unf-6.0.jar.md5 +++ /dev/null @@ -1 +0,0 @@ -bd9b84a9ad737a81a2699ab81541a901 diff --git a/local_lib/org/dataverse/unf/6.0/unf-6.0.jar.sha1 b/local_lib/org/dataverse/unf/6.0/unf-6.0.jar.sha1 deleted file mode 100644 index a48cef32570..00000000000 --- a/local_lib/org/dataverse/unf/6.0/unf-6.0.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -4cad279c362e4c5c17a2058dc2c8f2fc97c76bf8 diff --git a/local_lib/org/dataverse/unf/6.0/unf-6.0.pom b/local_lib/org/dataverse/unf/6.0/unf-6.0.pom deleted file mode 100644 index 06f1508723f..00000000000 --- a/local_lib/org/dataverse/unf/6.0/unf-6.0.pom +++ /dev/null @@ -1,8 +0,0 @@ - - - 4.0.0 - org.dataverse - unf - 6.0 - diff --git a/local_lib/org/dataverse/unf/6.0/unf-6.0.pom.md5 b/local_lib/org/dataverse/unf/6.0/unf-6.0.pom.md5 deleted file mode 100644 index 138bc9c95f6..00000000000 --- a/local_lib/org/dataverse/unf/6.0/unf-6.0.pom.md5 +++ /dev/null @@ -1 +0,0 @@ -230c5b1f5ae71bb2fe80ef9e7209f681 diff --git a/local_lib/org/dataverse/unf/6.0/unf-6.0.pom.sha1 b/local_lib/org/dataverse/unf/6.0/unf-6.0.pom.sha1 deleted file mode 100644 index 689e8045418..00000000000 --- a/local_lib/org/dataverse/unf/6.0/unf-6.0.pom.sha1 +++ /dev/null @@ -1 +0,0 @@ -286b819f2fc7432a94b5940c6171be1589f66a37 diff --git a/pom.xml b/pom.xml index c4e50e64c5b..26407c321f4 100644 --- a/pom.xml +++ b/pom.xml @@ -311,7 +311,7 @@ org.dataverse unf - 6.0 + 6.0-SNAPSHOT From f891ee38bea63e2bc343f15576cd322564a39a87 Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Thu, 31 Aug 2023 18:41:28 -0400 Subject: [PATCH 03/25] switch to non-SNAPSHOT UNF 6.0 #9810 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cbc7ac5e5b4..3ff313743d5 100644 --- a/pom.xml +++ b/pom.xml @@ -305,7 +305,7 @@ org.dataverse unf - 6.0-SNAPSHOT + 6.0 From 53b8f9308aa3717c4aa6e23ecf9f5b0081931176 Mon Sep 17 00:00:00 2001 From: Don Sizemore Date: Tue, 5 Sep 2023 09:15:30 -0400 Subject: [PATCH 04/25] #9717 support Postgres versions 14 and 15 --- pom.xml | 2 +- scripts/installer/install.py | 23 +++++++++++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 3ff313743d5..028b1744596 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,7 @@ war 1.2.18.4 - 8.5.10 + 9.21.2 1.20.1 0.8.7 5.2.1 diff --git a/scripts/installer/install.py b/scripts/installer/install.py index 700c70dbc28..df8d7eba4f6 100644 --- a/scripts/installer/install.py +++ b/scripts/installer/install.py @@ -380,12 +380,13 @@ print("Can't connect to PostgresQL as the admin user.\n") sys.exit("Is the server running, have you adjusted pg_hba.conf, etc?") - # 3b. get the Postgres version (do we need it still?) + # 3b. get the Postgres version for new permissions model in versions 15+ try: - pg_full_version = conn.server_version - print("PostgresQL version: "+str(pg_full_version)) + pg_full_version = str(conn.server_version) + pg_major_version = pg_full_version[0:2] + print("PostgreSQL version: "+pg_major_version) except: - print("Warning: Couldn't determine PostgresQL version.") + print("Warning: Couldn't determine PostgreSQL version.") conn.close() # 3c. create role: @@ -410,6 +411,8 @@ else: sys.exit("Couldn't create database or database already exists.\n") + # 3e. set permissions: + conn_cmd = "GRANT ALL PRIVILEGES on DATABASE "+pgDb+" to "+pgUser+";" try: cur.execute(conn_cmd) @@ -418,6 +421,18 @@ cur.close() conn.close() + if int(pg_major_version) >= 15: + conn_cmd = "GRANT ALL ON SCHEMA public TO "+pgUser+";" + try: + cur.execute(conn_cmd) + except: + if force: + print("WARNING: failed to grant permissions on schema public - continuing, since the --force option was specified") + else: + sys.exit("Couldn't grant privileges on schema public to "+pgUser) + cur.close() + conn.close() + print("Database and role created!") if pgOnly: print("postgres-only setup complete.") From 322821eeceb869674d441aad434b974ddabaf6dd Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Thu, 31 Aug 2023 17:05:21 -0400 Subject: [PATCH 05/25] explain how to release to Maven Central (and mention npm) #9824 --- doc/sphinx-guides/source/developers/index.rst | 1 + .../developers/making-library-releases.rst | 93 +++++++++++++++++++ .../source/developers/making-releases.rst | 2 + 3 files changed, 96 insertions(+) create mode 100755 doc/sphinx-guides/source/developers/making-library-releases.rst diff --git a/doc/sphinx-guides/source/developers/index.rst b/doc/sphinx-guides/source/developers/index.rst index c77ddc13519..3ac9e955ea2 100755 --- a/doc/sphinx-guides/source/developers/index.rst +++ b/doc/sphinx-guides/source/developers/index.rst @@ -27,6 +27,7 @@ Developer Guide deployment containers making-releases + making-library-releases metadataexport tools unf/index diff --git a/doc/sphinx-guides/source/developers/making-library-releases.rst b/doc/sphinx-guides/source/developers/making-library-releases.rst new file mode 100755 index 00000000000..63b6eeb1c2a --- /dev/null +++ b/doc/sphinx-guides/source/developers/making-library-releases.rst @@ -0,0 +1,93 @@ +======================= +Making Library Releases +======================= + +.. contents:: |toctitle| + :local: + +Introduction +------------ + +Note: See :doc:`making-releases` for Dataverse itself. + +We release Java libraries to Maven Central that are used by Dataverse (and perhaps `other `_ `software `_!): + +- https://central.sonatype.com/namespace/org.dataverse +- https://central.sonatype.com/namespace/io.gdcc + +We release JavaScript/TypeScript libraries to npm: + +- https://www.npmjs.com/package/@iqss/dataverse-design-system + +Maven Central (Java) +-------------------- + +From the perspective of the Maven Central, we are both `producers `_ because we publish/release libraries there and `consumers `_ because we pull down those libraries (and many others) when we build Dataverse. + +Releasing Existing Libraries to Maven Central +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +If you need to release an existing library, all the setup should be done already. The steps below assume that GitHub Actions are in place to do the heavy lifting for you, such as signing artifacts with GPG. + +Releasing a Snapshot Version to Maven Central +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +`Snapshot `_ releases are published automatically through GitHub Actions (e.g. through a `snapshot workflow `_ for the SWORD library) every time a pull request is merged (or the default branch, typically ``main``, is otherwise updated). + +That is to say, to make a snapshot release, you only need to get one or more commits into the default branch. + +Releasing a Release (Non-Snapshot) Version to Maven Central +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +From a pom.xml it may not be apparent that snapshots like ``6.0-SNAPSHOT`` might be changing under your feet. Browsing the snapshot repository (e.g. our `UNF 6.0-SNAPSHOT `_), may reveal versions changing over time. To finalize the code and stop it from changing, we publish/release what Maven calls a "`release version `_". This will remove ``-SNAPSHOT`` from the version (through an ``mvn`` command). + +Non-snapshot releases (`release `_ versions) are published automatically through GitHub Actions (e.g. through a `release workflow `_), kicked off locally by an ``mvn`` command that invokes the `Maven Release Plugin `_. + +First, run a clean: + +``mvn release:clean`` + +Then run a prepare: + +``mvn release:prepare`` + +The prepare step is interactive. You will be prompted for the following information: + +- the release version (e.g. `2.0.0 `_) +- the git tag to create and push (e.g. `sword2-server-2.0.0 `_) +- the next development (snapshot) version (e.g. `2.0.1-SNAPSHOT `_) + +These examples from the SWORD library. Below is what to expect from the interactive session. In many cases, you can just hit enter to accept the defaults. + +.. code-block:: bash + + [INFO] 5/17 prepare:map-release-versions + What is the release version for "SWORD v2 Common Server Library (forked)"? (sword2-server) 2.0.0: : + [INFO] 6/17 prepare:input-variables + What is the SCM release tag or label for "SWORD v2 Common Server Library (forked)"? (sword2-server) sword2-server-2.0.0: : + [INFO] 7/17 prepare:map-development-versions + What is the new development version for "SWORD v2 Common Server Library (forked)"? (sword2-server) 2.0.1-SNAPSHOT: : + [INFO] 8/17 prepare:rewrite-poms-for-release + +It can take some time for the jar to be visible on Maven Central. You can start by looking on the repo1 server, like this: https://repo1.maven.org/maven2/io/gdcc/sword2-server/2.0.0/ + +Don't bother putting the new version in a pom.xml until you see it on repo1. + +Note that the next snapshot release should be available as well, like this: https://s01.oss.sonatype.org/content/groups/staging/io/gdcc/sword2-server/2.0.1-SNAPSHOT/ + +Releasing a New Library to Maven Central +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +At a high level: + +- Use an existing pom.xml as a starting point. +- Use existing GitHub Actions workflows as a starting point. +- Create secrets in the new library's GitHub repo used by the workflow. +- If you need an entire new namespace, look at previous issues such as https://issues.sonatype.org/browse/OSSRH-94575 and https://issues.sonatype.org/browse/OSSRH-94577 + +npm (JavaScript/TypeScript) +--------------------------- + +Currently, publishing `@iqss/dataverse-design-system `_ to npm done manually. We plan to automate this as part of https://github.com/IQSS/dataverse-frontend/issues/140 + +https://www.npmjs.com/package/js-dataverse is the previous 1.0 version of js-dataverse. No 1.x releases are planned. We plan to publish 2.0 (used by the new frontend) as discussed in https://github.com/IQSS/dataverse-frontend/issues/13 \ No newline at end of file diff --git a/doc/sphinx-guides/source/developers/making-releases.rst b/doc/sphinx-guides/source/developers/making-releases.rst index a2575bb5f50..23c4773a06e 100755 --- a/doc/sphinx-guides/source/developers/making-releases.rst +++ b/doc/sphinx-guides/source/developers/making-releases.rst @@ -8,6 +8,8 @@ Making Releases Introduction ------------ +Note: See :doc:`making-library-releases` for how to publish our libraries to Maven Central. + See :doc:`version-control` for background on our branching strategy. The steps below describe making both regular releases and hotfix releases. From de71e6c3532a3db911a887d2c907a8dc2c1e3956 Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Tue, 5 Sep 2023 16:17:31 -0400 Subject: [PATCH 06/25] use try with resources in JsonUtil #9315 --- .../edu/harvard/iq/dataverse/util/json/JsonUtil.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/util/json/JsonUtil.java b/src/main/java/edu/harvard/iq/dataverse/util/json/JsonUtil.java index 09d02854bab..cf8b64520de 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/json/JsonUtil.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/json/JsonUtil.java @@ -11,6 +11,7 @@ import java.util.logging.Logger; import jakarta.json.Json; import jakarta.json.JsonArray; +import jakarta.json.JsonReader; import jakarta.json.JsonWriter; import jakarta.json.JsonWriterFactory; import jakarta.json.stream.JsonGenerator; @@ -60,13 +61,17 @@ public static String prettyPrint(jakarta.json.JsonObject jsonObject) { public static jakarta.json.JsonObject getJsonObject(String serializedJson) { try (StringReader rdr = new StringReader(serializedJson)) { - return Json.createReader(rdr).readObject(); + try (JsonReader jsonReader = Json.createReader(rdr)) { + return jsonReader.readObject(); + } } } public static jakarta.json.JsonArray getJsonArray(String serializedJson) { try (StringReader rdr = new StringReader(serializedJson)) { - return Json.createReader(rdr).readArray(); + try (JsonReader jsonReader = Json.createReader(rdr)) { + return jsonReader.readArray(); + } } } } From 6a1dee89aa62edf1145a7d6aa59704f861671ba4 Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Wed, 6 Sep 2023 08:56:44 -0400 Subject: [PATCH 07/25] remove local_lib repo from pom #9858 --- modules/dataverse-parent/pom.xml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/modules/dataverse-parent/pom.xml b/modules/dataverse-parent/pom.xml index 289abdde625..9104958cafd 100644 --- a/modules/dataverse-parent/pom.xml +++ b/modules/dataverse-parent/pom.xml @@ -414,11 +414,6 @@ Unidata All https://artifacts.unidata.ucar.edu/repository/unidata-all/ - - dvn.private - Local repository for hosting jars not available from network repositories. - file://${project.basedir}/local_lib - oss-sonatype From f8e16cb8578931c73afe38704343ec8c83e087f8 Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Wed, 6 Sep 2023 09:14:47 -0400 Subject: [PATCH 08/25] use try with resources in JSONLDUtil #9313 --- .../harvard/iq/dataverse/util/json/JSONLDUtil.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/util/json/JSONLDUtil.java b/src/main/java/edu/harvard/iq/dataverse/util/json/JSONLDUtil.java index 113a6128364..4fb3ffe6c14 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/json/JSONLDUtil.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/json/JSONLDUtil.java @@ -52,6 +52,7 @@ import edu.harvard.iq.dataverse.DatasetVersion.VersionState; import edu.harvard.iq.dataverse.license.License; import edu.harvard.iq.dataverse.license.LicenseServiceBean; +import jakarta.json.JsonReader; public class JSONLDUtil { @@ -533,13 +534,11 @@ public static JsonObject decontextualizeJsonLD(String jsonLDString) { try (StringReader rdr = new StringReader(jsonLDString)) { // Use JsonLd to expand/compact to localContext - JsonObject jsonld = Json.createReader(rdr).readObject(); - JsonDocument doc = JsonDocument.of(jsonld); - JsonArray array = null; - try { - array = JsonLd.expand(doc).get(); - jsonld = JsonLd.compact(JsonDocument.of(array), JsonDocument.of(Json.createObjectBuilder().build())) - .get(); + try (JsonReader jsonReader = Json.createReader(rdr)) { + JsonObject jsonld = jsonReader.readObject(); + JsonDocument doc = JsonDocument.of(jsonld); + JsonArray array = JsonLd.expand(doc).get(); + jsonld = JsonLd.compact(JsonDocument.of(array), JsonDocument.of(Json.createObjectBuilder().build())).get(); // jsonld = array.getJsonObject(0); logger.fine("Decontextualized object: " + jsonld); return jsonld; From 6f7f814ff0da35cf636f28b14e150e37327060f0 Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Wed, 6 Sep 2023 09:41:52 -0400 Subject: [PATCH 09/25] remove local_lib from docs #9858 --- doc/sphinx-guides/source/developers/dependencies.rst | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/doc/sphinx-guides/source/developers/dependencies.rst b/doc/sphinx-guides/source/developers/dependencies.rst index 65edfa3ffac..0208c49f90a 100644 --- a/doc/sphinx-guides/source/developers/dependencies.rst +++ b/doc/sphinx-guides/source/developers/dependencies.rst @@ -344,8 +344,7 @@ Repositories ------------ Maven receives all dependencies from *repositories*. These can be public like `Maven Central `_ -and others, but you can also use a private repository on premises or in the cloud. Last but not least, you can use -local repositories, which can live next to your application code (see ``local_lib`` dir within the Dataverse Software codebase). +and others, but you can also use a private repository on premises or in the cloud. Repositories are defined within the Dataverse Software POM like this: @@ -364,11 +363,6 @@ Repositories are defined within the Dataverse Software POM like this: http://repository.primefaces.org default - - dvn.private - Local repository for hosting jars not available from network repositories. - file://${project.basedir}/local_lib - You can also add repositories to your local Maven settings, see `docs `_. From 983f77349dda1afb1df75641060e3469729db86e Mon Sep 17 00:00:00 2001 From: Don Sizemore Date: Wed, 6 Sep 2023 10:46:28 -0400 Subject: [PATCH 10/25] bump PG JDBC version per kcondon, correct installer 3e condition indentation --- modules/dataverse-parent/pom.xml | 2 +- scripts/installer/install.py | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/modules/dataverse-parent/pom.xml b/modules/dataverse-parent/pom.xml index 289abdde625..656dcc93863 100644 --- a/modules/dataverse-parent/pom.xml +++ b/modules/dataverse-parent/pom.xml @@ -149,7 +149,7 @@ 6.2023.8 - 42.5.1 + 42.6.0 9.3.0 1.12.290 0.177.0 diff --git a/scripts/installer/install.py b/scripts/installer/install.py index df8d7eba4f6..6fa313e2884 100644 --- a/scripts/installer/install.py +++ b/scripts/installer/install.py @@ -423,15 +423,15 @@ if int(pg_major_version) >= 15: conn_cmd = "GRANT ALL ON SCHEMA public TO "+pgUser+";" - try: - cur.execute(conn_cmd) - except: - if force: - print("WARNING: failed to grant permissions on schema public - continuing, since the --force option was specified") - else: - sys.exit("Couldn't grant privileges on schema public to "+pgUser) - cur.close() - conn.close() + try: + cur.execute(conn_cmd) + except: + if force: + print("WARNING: failed to grant permissions on schema public - continuing, since the --force option was specified") + else: + sys.exit("Couldn't grant privileges on schema public to "+pgUser) + cur.close() + conn.close() print("Database and role created!") if pgOnly: From 8bb38c4d3bd082fe19d4a53644fb6a16f284cfbc Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Thu, 7 Sep 2023 12:17:41 -0400 Subject: [PATCH 11/25] add print about PostgreSQL 15 or higher GRANT #9717 --- scripts/installer/install.py | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/installer/install.py b/scripts/installer/install.py index 6fa313e2884..9da64bff32e 100644 --- a/scripts/installer/install.py +++ b/scripts/installer/install.py @@ -423,6 +423,7 @@ if int(pg_major_version) >= 15: conn_cmd = "GRANT ALL ON SCHEMA public TO "+pgUser+";" + print("PostgreSQL 15 or higher detected. Running " + conn_cmd) try: cur.execute(conn_cmd) except: From 19c62ab328b8b366994dfb05adbea1905dc3c34f Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Thu, 7 Sep 2023 14:37:44 -0400 Subject: [PATCH 12/25] document Postgres 15 public schema change #9717 --- doc/sphinx-guides/source/installation/prerequisites.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/sphinx-guides/source/installation/prerequisites.rst b/doc/sphinx-guides/source/installation/prerequisites.rst index d94ef9fed9d..1847f1b8f63 100644 --- a/doc/sphinx-guides/source/installation/prerequisites.rst +++ b/doc/sphinx-guides/source/installation/prerequisites.rst @@ -97,10 +97,14 @@ Also note that Payara may utilize more than the default number of file descripto PostgreSQL ---------- +PostgreSQL 13 is recommended because it's the version we test against. Version 10 or higher is required because that's what's `supported by Flyway `_, which we use for database migrations. + +You are welcome to experiment with newer versions of PostgreSQL, but please note that as of PostgreSQL 15, permissions have been restricted on the ``public`` schema (`release notes `_, `EDB blog post `_, `Crunchy Data blog post `_). The Dataverse installer has been updated to restore the old permissions, but this may not be a long term solution. + Installing PostgreSQL ===================== -The application has been tested with PostgreSQL versions up to 13 and version 10+ is required. We recommend installing the latest version that is available for your OS distribution. *For example*, to install PostgreSQL 13 under RHEL7/derivative:: +*For example*, to install PostgreSQL 13 under RHEL7/derivative:: # yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm # yum makecache fast From f71274e7c7a4d47ab7fb973320bcfdb7e6822fbd Mon Sep 17 00:00:00 2001 From: Don Sizemore Date: Thu, 7 Sep 2023 15:27:15 -0400 Subject: [PATCH 13/25] #9717 grant CREATE instead of ALL per pdurbin --- scripts/installer/install.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/installer/install.py b/scripts/installer/install.py index 9da64bff32e..3aedbd8c6ad 100644 --- a/scripts/installer/install.py +++ b/scripts/installer/install.py @@ -413,7 +413,7 @@ # 3e. set permissions: - conn_cmd = "GRANT ALL PRIVILEGES on DATABASE "+pgDb+" to "+pgUser+";" + conn_cmd = "GRANT CREATE PRIVILEGES on DATABASE "+pgDb+" to "+pgUser+";" try: cur.execute(conn_cmd) except: From c740a96e5a708bf6b9cfa431a584c15fbffec5de Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Thu, 7 Sep 2023 16:42:30 -0400 Subject: [PATCH 14/25] disabling everything inside the file dowload popup fragment when the page is in create mode. #9825 --- src/main/webapp/file-download-popup-fragment.xhtml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/webapp/file-download-popup-fragment.xhtml b/src/main/webapp/file-download-popup-fragment.xhtml index e1020c85e69..632c2a827ef 100644 --- a/src/main/webapp/file-download-popup-fragment.xhtml +++ b/src/main/webapp/file-download-popup-fragment.xhtml @@ -8,6 +8,8 @@ xmlns:jsf="http://xmlns.jcp.org/jsf" xmlns:iqbs="http://xmlns.jcp.org/jsf/composite/iqbs"> + +

@@ -51,6 +53,7 @@

+
+
\ No newline at end of file From 5024ac47aec272971d4146d8944e5a60a3b023ad Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Tue, 5 Sep 2023 12:03:04 -0400 Subject: [PATCH 15/25] create 6.0 release notes #9860 --- doc/release-notes/8094-java-17.md | 1 - doc/release-notes/8305-payara6-ee10-v3.md | 5 - doc/release-notes/9260-solr930.md | 63 ----- doc/release-notes/9340-payara5to6.md | 132 --------- doc/release-notes/9782-juni5-transition.md | 7 - doc/release-notes/9812-archiver-warnings.md | 7 - doc/release-notes/9838-rm-vagrant.md | 1 - doc/release-notes/9860-6.0-release-notes.md | 282 ++++++++++++++++++++ 8 files changed, 282 insertions(+), 216 deletions(-) delete mode 100644 doc/release-notes/8094-java-17.md delete mode 100644 doc/release-notes/8305-payara6-ee10-v3.md delete mode 100644 doc/release-notes/9260-solr930.md delete mode 100644 doc/release-notes/9340-payara5to6.md delete mode 100644 doc/release-notes/9782-juni5-transition.md delete mode 100644 doc/release-notes/9812-archiver-warnings.md delete mode 100644 doc/release-notes/9838-rm-vagrant.md create mode 100644 doc/release-notes/9860-6.0-release-notes.md diff --git a/doc/release-notes/8094-java-17.md b/doc/release-notes/8094-java-17.md deleted file mode 100644 index f3c81145465..00000000000 --- a/doc/release-notes/8094-java-17.md +++ /dev/null @@ -1 +0,0 @@ -Java 17 or higher is now required. diff --git a/doc/release-notes/8305-payara6-ee10-v3.md b/doc/release-notes/8305-payara6-ee10-v3.md deleted file mode 100644 index 94369e0211f..00000000000 --- a/doc/release-notes/8305-payara6-ee10-v3.md +++ /dev/null @@ -1,5 +0,0 @@ -Payara has been updated from version 5 to 6. - -Developers, you are encouraged to upgrade to Payara 6 immediately. - -Sysadmins, instructions on how to upgrade production installations will be written as part of https://github.com/IQSS/dataverse/issues/9340 diff --git a/doc/release-notes/9260-solr930.md b/doc/release-notes/9260-solr930.md deleted file mode 100644 index 07824920b3e..00000000000 --- a/doc/release-notes/9260-solr930.md +++ /dev/null @@ -1,63 +0,0 @@ -Solr has been upgraded to Solr 9. You must install Solr fresh and reindex. You cannot use your old schema.xml because the format has changed. - -Specifically, to install Solr fresh you should follow the instructions for new installations, found at https://guides.dataverse.org/en/9260-solr930/installation/prerequisites.html#installing-solr - -These instructions are copied below and tweaked a bit for an upgrade scenario. - -We assume that you already have a user called "solr" (from the instructions above), added during your initial installation of Solr. - -1. Become the "solr" user and then download and configure Solr. - - ``` - su - solr - cd /usr/local/solr - wget https://archive.apache.org/dist/solr/solr/9.3.0/solr-9.3.0.tgz - tar xvzf solr-9.3.0.tgz - cd solr-9.3.0 - cp -r server/solr/configsets/_default server/solr/collection1 - ``` - -1. Unzip "dvinstall.zip" from this release. Unzip it into /tmp. Then copy the following files into place. - - ``` - cp /tmp/dvinstall/schema*.xml /usr/local/solr/solr-9.3.0/server/solr/collection1/conf - - cp /tmp/dvinstall/solrconfig.xml /usr/local/solr/solr-9.3.0/server/solr/collection1/conf - ``` - -1. A Dataverse installation requires a change to the jetty.xml file that ships with Solr. - - Edit /usr/local/solr/solr-9.3.0/server/etc/jetty.xml , increasing `requestHeaderSize` from `8192` to `102400` - -1. Tell Solr to create the core "collection1" on startup. - - ``` - echo "name=collection1" > /usr/local/solr/solr-9.3.0/server/solr/collection1/core.properties - ``` - -1. Update your init script. - - Your init script may be located at `/etc/systemd/system/solr.service`, for example. Update the path to Solr to be `/usr/local/solr/solr-9.3.0`. - -1. Start Solr using your init script and check collection1. - - The collection1 check below should print out fields Dataverse uses like "dsDescription". - - ``` - systemctl start solr.service - curl http://localhost:8983/solr/collection1/schema/fields - ``` - -1. Reindex Solr. - - For details, see https://guides.dataverse.org/en/9260-solr930/admin/solr-search-index.html - - ``` - curl http://localhost:8080/api/admin/index - ``` - -1. If you have custom metadata blocks installed, you must update your Solr schema.xml to include your custom fields. - - For details, please see https://guides.dataverse.org/en/9260-solr930/admin/metadatacustomization.html#updating-the-solr-schema - - At a high level you will be copying custom fields from the output of http://localhost:8080/api/admin/index/solr/schema or using a script to automate this. diff --git a/doc/release-notes/9340-payara5to6.md b/doc/release-notes/9340-payara5to6.md deleted file mode 100644 index 68162ef7598..00000000000 --- a/doc/release-notes/9340-payara5to6.md +++ /dev/null @@ -1,132 +0,0 @@ -## Upgrade from Payara 5 to Payara 6 - -1. Download Payara 6.2023.8 as of this writing: - - `curl -L -O https://nexus.payara.fish/repository/payara-community/fish/payara/distributions/payara/6.2023.8/payara-6.2023.8.zip` - -1. Unzip it to /usr/local (or your preferred location): - - `sudo unzip payara-6.2023.8.zip -d /usr/local/` - -1. Change ownership of the unzipped Payara to your "service" user ("dataverse" by default): - - `sudo chown -R dataverse /usr/local/payara6` - -1. Undeploy Dataverse (if deployed, using the unprivileged service account. Version 5.14 is assumed in the example below): - - `sudo -u dataverse /usr/local/payara5/bin/asadmin list-applications` - - `sudo -u dataverse /usr/local/payara5/bin/asadmin undeploy dataverse-5.14` - -1. Stop Payara 5: - - `sudo -u dataverse /usr/local/payara5/bin/asadmin stop-domain` - -1. Copy Dataverse-related lines from Payara 5 to Payara 6 domain.xml: - - `sudo -u dataverse cp /usr/local/payara6/glassfish/domains/domain1/config/domain.xml /usr/local/payara6/glassfish/domains/domain1/config/domain.xml.orig` - - `sudo egrep 'dataverse|doi' /usr/local/payara5/glassfish/domains/domain1/config/domain.xml > lines.txt` - - `sudo vi /usr/local/payara6/glassfish/domains/domain1/config/domain.xml` - - The lines will appear in two sections, examples shown below (but your content will vary). - - Section 1: system properties (under ``) - - ``` - - - - - - ``` - - Note: if you used the Dataverse installer, you won't have a `dataverse.db.password` property. See "Create password aliases" below. - - Section 2: JVM options (under ``, the one under ``, not under ``) - - ``` - -Ddataverse.files.directory=/usr/local/dvn/data - -Ddataverse.files.file.type=file - -Ddataverse.files.file.label=file - -Ddataverse.files.file.directory=/usr/local/dvn/data - -Ddataverse.rserve.host=localhost - -Ddataverse.rserve.port=6311 - -Ddataverse.rserve.user=rserve - -Ddataverse.rserve.password=rserve - -Ddataverse.auth.password-reset-timeout-in-minutes=60 - -Ddataverse.timerServer=true - -Ddataverse.fqdn=dev1.dataverse.org - -Ddataverse.siteUrl=https://dev1.dataverse.org - -Ddataverse.files.storage-driver-id=file - -Ddoi.username=testaccount - -Ddoi.password=notmypassword - -Ddoi.baseurlstring=https://mds.test.datacite.org/ - -Ddoi.dataciterestapiurlstring=https://api.test.datacite.org - ``` - -1. Check the `Xmx` setting in `/usr/local/payara6/glassfish/domains/domain1/config/domain.xml`. (The one under ``, where you put the JVM options, not the one under ``.) Note that there are two such settings, and you want to adjust the one in the stanza with Dataverse options. This sets the JVM heap size; a good rule of thumb is half of your system's total RAM. You may specify the value in MB (`8192m`) or GB (`8g`). - -1. Copy jhove.conf and jhoveConfig.xsd from Payara 5, edit and change payara5 to payara6 - - `sudo cp /usr/local/payara5/glassfish/domains/domain1/config/jhove* /usr/local/payara6/glassfish/domains/domain1/config/` - - `sudo chown dataverse /usr/local/payara6/glassfish/domains/domain1/config/jhove*` - - `sudo -u dataverse vi /usr/local/payara6/glassfish/domains/domain1/config/jhove.conf` - -1. Copy logos from Payara 5 to Payara 6 - - These logos are for collections (dataverses). - - `sudo -u dataverse cp -r /usr/local/payara5/glassfish/domains/domain1/docroot/logos /usr/local/payara6/glassfish/domains/domain1/docroot` - -1. If you are using Make Data Count (MDC), edit :MDCLogPath - - Your `:MDCLogPath` database setting might be pointing to a Payara 5 directory such as `/usr/local/payara5/glassfish/domains/domain1/logs`. If so, edit this to be Payara 6. You'll probably want to copy your logs over as well. - -1. Update systemd unit file (or other init system) from `/usr/local/payara5` to `/usr/local/payara6`, if applicable. - -1. Start Payara: - - `sudo -u dataverse /usr/local/payara6/bin/asadmin start-domain` - -1. Create a Java mail resource, replacing "localhost" for mailhost with your mail relay server, and replacing "localhost" for fromaddress with the FQDN of your Dataverse server: - - `sudo -u dataverse /usr/local/payara6/bin/asadmin create-javamail-resource --mailhost "localhost" --mailuser "dataversenotify" --fromaddress "do-not-reply@localhost" mail/notifyMailSession` - -1. Create password aliases for your database, rserve and datacite jvm-options, if you're using them: - - ``` - $ echo "AS_ADMIN_ALIASPASSWORD=yourDBpassword" > /tmp/dataverse.db.password.txt - $ sudo -u dataverse /usr/local/payara6/bin/asadmin create-password-alias --passwordfile /tmp/dataverse.db.password.txt - Enter the value for the aliasname operand> dataverse.db.password - Command create-password-alias executed successfully. - ``` - - You'll want to perform similar commands for `rserve_password_alias` and `doi_password_alias` if you're using Rserve and/or Datacite. - -1. Enable workaround for FISH-7722: - - The following workaround is for https://github.com/payara/Payara/issues/6337 - - `sudo -u dataverse /usr/local/payara6/bin/asadmin create-jvm-options --add-opens=java.base/java.io=ALL-UNNAMED` - -1. Create the network listener on port 8009 - - `sudo -u dataverse /usr/local/payara6/bin/asadmin create-network-listener --protocol http-listener-1 --listenerport 8009 --jkenabled true jk-connector` - -1. Deploy the Dataverse 6.0 warfile: - - `sudo -u dataverse /usr/local/payara6/bin/asadmin deploy /path/to/dataverse-6.0.war` - -1. Check that you get a version number from Dataverse: - - `curl http://localhost:8080/api/info/version` - -1. Perform one final Payara restart to ensure that timers are initialized properly: - - `sudo -u dataverse /usr/local/payara6/bin/asadmin stop-domain` - - `sudo -u dataverse /usr/local/payara6/bin/asadmin start-domain` diff --git a/doc/release-notes/9782-juni5-transition.md b/doc/release-notes/9782-juni5-transition.md deleted file mode 100644 index b7ffcc0de0d..00000000000 --- a/doc/release-notes/9782-juni5-transition.md +++ /dev/null @@ -1,7 +0,0 @@ -# Migrating all test to JUnit 5 -With this release, we transition all of our test cases (see `src/test/`) to use JUnit 5 only. -Moving forward from JUnit 4 will allow writing tests in more concise and easier ways. -The tests themselves have not been altered, but updated to match JUnit 5 ways. -They have not been extended or dropped coverage; this is mostly a preparation of things to come in the future. -If you are writing tests in JUnit 4 in your feature branches, you need to migrate. -The development guides section of testing has been updated as well. diff --git a/doc/release-notes/9812-archiver-warnings.md b/doc/release-notes/9812-archiver-warnings.md deleted file mode 100644 index 716223b3f46..00000000000 --- a/doc/release-notes/9812-archiver-warnings.md +++ /dev/null @@ -1,7 +0,0 @@ -# Potential Archiver Incompatibilities with Payara6 -The Google Cloud and DuraCloud Archivers (see https://guides.dataverse.org/en/latest/installation/config.html#bagit-export) may not work in v6.0. -This is due to their dependence on libraries that include classes in javax.* packages that are no longer available. -If these classes are actually used when the archivers run, the archivers would fail. -As these two archivers require additional setup, they have not been tested in v6.0. -Community members using these archivers or considering their use are encouraged to test them with v6.0 and report any errors and/or provide fixes for them that can be included in future releases. - diff --git a/doc/release-notes/9838-rm-vagrant.md b/doc/release-notes/9838-rm-vagrant.md deleted file mode 100644 index 910f2e0b2f0..00000000000 --- a/doc/release-notes/9838-rm-vagrant.md +++ /dev/null @@ -1 +0,0 @@ -Vagrant has been removed. See #9838. diff --git a/doc/release-notes/9860-6.0-release-notes.md b/doc/release-notes/9860-6.0-release-notes.md new file mode 100644 index 00000000000..9d0e167901d --- /dev/null +++ b/doc/release-notes/9860-6.0-release-notes.md @@ -0,0 +1,282 @@ +# Dataverse 6.0 + +This is a platform upgrade release. Payara, Solr, and Java have been upgraded. No features have been added to the Dataverse software itself. Only a handful of bugs were fixed. + +Thank you to all of the community members who contributed code, suggestions, bug reports, and other assistance across the project! + +## Release Highlights + +### Payara 6 + +Payara has been upgraded to version 6.2023.8. For details, see PR #9685 and PR #9795. + +Please note that Payara Community 5 has reached [end of life](https://www.payara.fish/products/payara-platform-product-lifecycle/). + +### Solr 9 + +Solr has been upgraded to version 9.3.0. For details, see PR #9787. + +### Java 17 + +Java has been upgraded to version 17. For details, see PR #9764. + + +## Installation + +If this is a new installation, please follow our [Installation Guide](https://guides.dataverse.org/en/latest/installation/). Please don't be shy about [asking for help](https://guides.dataverse.org/en/latest/installation/intro.html#getting-help) if you need it! + +If you would like to be on our [map of Dataverse installations](https://dataverse.org/installations) around the world, please [create an issue](https://github.com/IQSS/dataverse-installations/issues) or email us at support@dataverse.org! + +## Upgrade Instructions + +Upgrading requires a maintenance window and downtime. Please plan ahead, create backups of your database, etc. + +These instructions assume that you've already upgraded through all the 5.x releases and are now running Dataverse 5.14. + +### Upgrade from Java 11 to Java 17 + +Java 17 is now required for Dataverse. Solr can run under Java 11 or Java 17 but the latter is recommended. In preparation for the Java upgrade, stop both Dataverse/Payara and Solr. + +1. Undeploy Dataverse, if deployed, using the unprivileged service account. + + `sudo -u dataverse /usr/local/payara5/bin/asadmin list-applications` + + `sudo -u dataverse /usr/local/payara5/bin/asadmin undeploy dataverse-5.14` + +1. Stop Payara 5. + + `sudo -u dataverse /usr/local/payara5/bin/asadmin stop-domain` + +1. Stop Solr 8. + + `sudo systemctl stop solr.service` + +1. Install Java 17. + + Assuming you are using RHEL or a derivative such as Rocky Linux: + + `sudo yum install java-17-openjdk` + +1. Set Java 17 as the default. + + Assuming you are using RHEL or a derivative such as Rocky Linux: + + `sudo alternatives --config java` + +1. Test that Java 17 is the default. + + `java -version` + +### Upgrade from Payara 5 to Payara 6 + +If you are running Payara as a non-root user (and you should be!), **remember not to execute the commands below as root**. Use `sudo` to change to that user first. For example, `sudo -i -u dataverse` if `dataverse` is your dedicated application user. + +1. Download Payara 6.2023.8. + + `curl -L -O https://nexus.payara.fish/repository/payara-community/fish/payara/distributions/payara/6.2023.8/payara-6.2023.8.zip` + +1. Unzip it to /usr/local (or your preferred location). + + `sudo unzip payara-6.2023.8.zip -d /usr/local/` + +1. Change ownership of the unzipped Payara to your "service" user ("dataverse" by default). + + `sudo chown -R dataverse /usr/local/payara6` + +1. Undeploy Dataverse, if deployed, using the unprivileged service account. + + `sudo -u dataverse /usr/local/payara5/bin/asadmin list-applications` + + `sudo -u dataverse /usr/local/payara5/bin/asadmin undeploy dataverse-5.14` + +1. Stop Payara 5, if running. + + `sudo -u dataverse /usr/local/payara5/bin/asadmin stop-domain` + +1. Copy Dataverse-related lines from Payara 5 to Payara 6 domain.xml. + + `sudo -u dataverse cp /usr/local/payara6/glassfish/domains/domain1/config/domain.xml /usr/local/payara6/glassfish/domains/domain1/config/domain.xml.orig` + + `sudo egrep 'dataverse|doi' /usr/local/payara5/glassfish/domains/domain1/config/domain.xml > lines.txt` + + `sudo vi /usr/local/payara6/glassfish/domains/domain1/config/domain.xml` + + The lines will appear in two sections, examples shown below (but your content will vary). + + Section 1: system properties (under ``) + + ``` + + + + + + ``` + + Note: if you used the Dataverse installer, you won't have a `dataverse.db.password` property. See "Create password aliases" below. + + Section 2: JVM options (under ``, the one under ``, not under ``) + + ``` + -Ddataverse.files.directory=/usr/local/dvn/data + -Ddataverse.files.file.type=file + -Ddataverse.files.file.label=file + -Ddataverse.files.file.directory=/usr/local/dvn/data + -Ddataverse.rserve.host=localhost + -Ddataverse.rserve.port=6311 + -Ddataverse.rserve.user=rserve + -Ddataverse.rserve.password=rserve + -Ddataverse.auth.password-reset-timeout-in-minutes=60 + -Ddataverse.timerServer=true + -Ddataverse.fqdn=dev1.dataverse.org + -Ddataverse.siteUrl=https://dev1.dataverse.org + -Ddataverse.files.storage-driver-id=file + -Ddoi.username=testaccount + -Ddoi.password=notmypassword + -Ddoi.baseurlstring=https://mds.test.datacite.org/ + -Ddoi.dataciterestapiurlstring=https://api.test.datacite.org + ``` + +1. Check the `Xmx` setting in `domain.xml`. + + Under `/usr/local/payara6/glassfish/domains/domain1/config/domain.xml`, check the `Xmx` setting under ``, where you put the JVM options, not the one under ``. Note that there are two such settings, and you want to adjust the one in the stanza with Dataverse options. This sets the JVM heap size; a good rule of thumb is half of your system's total RAM. You may specify the value in MB (`8192m`) or GB (`8g`). + +1. Copy `jhove.conf` and `jhoveConfig.xsd` from Payara 5, edit and change `payara5` to `payara6`. + + `sudo cp /usr/local/payara5/glassfish/domains/domain1/config/jhove* /usr/local/payara6/glassfish/domains/domain1/config/` + + `sudo chown dataverse /usr/local/payara6/glassfish/domains/domain1/config/jhove*` + + `sudo -u dataverse vi /usr/local/payara6/glassfish/domains/domain1/config/jhove.conf` + +1. Copy logos from Payara 5 to Payara 6. + + These logos are for collections (dataverses). + + `sudo -u dataverse cp -r /usr/local/payara5/glassfish/domains/domain1/docroot/logos /usr/local/payara6/glassfish/domains/domain1/docroot` + +1. If you are using Make Data Count (MDC), edit :MDCLogPath. + + Your `:MDCLogPath` database setting might be pointing to a Payara 5 directory such as `/usr/local/payara5/glassfish/domains/domain1/logs`. If so, edit this to be Payara 6. You'll probably want to copy your logs over as well. + +1. Update systemd unit file (or other init system) from `/usr/local/payara5` to `/usr/local/payara6`, if applicable. + +1. Start Payara. + + `sudo -u dataverse /usr/local/payara6/bin/asadmin start-domain` + +1. Create a Java mail resource, replacing "localhost" for mailhost with your mail relay server, and replacing "localhost" for fromaddress with the FQDN of your Dataverse server. + + `sudo -u dataverse /usr/local/payara6/bin/asadmin create-javamail-resource --mailhost "localhost" --mailuser "dataversenotify" --fromaddress "do-not-reply@localhost" mail/notifyMailSession` + +1. Create password aliases for your database, rserve and datacite jvm-options, if you're using them. + + `echo "AS_ADMIN_ALIASPASSWORD=yourDBpassword" > /tmp/dataverse.db.password.txt` + + `sudo -u dataverse /usr/local/payara6/bin/asadmin create-password-alias --passwordfile /tmp/dataverse.db.password.txt` + + When you are prompted "Enter the value for the aliasname operand", enter `dataverse.db.password` + + You should see "Command create-password-alias executed successfully." + + You'll want to perform similar commands for `rserve_password_alias` and `doi_password_alias` if you're using Rserve and/or DataCite. + +1. Enable workaround for FISH-7722. + + The following workaround is for https://github.com/payara/Payara/issues/6337 + + `sudo -u dataverse /usr/local/payara6/bin/asadmin create-jvm-options --add-opens=java.base/java.io=ALL-UNNAMED` + +1. Create the network listener on port 8009. + + `sudo -u dataverse /usr/local/payara6/bin/asadmin create-network-listener --protocol http-listener-1 --listenerport 8009 --jkenabled true jk-connector` + +1. Deploy the Dataverse 6.0 war file. + + `sudo -u dataverse /usr/local/payara6/bin/asadmin deploy /path/to/dataverse-6.0.war` + +1. Check that you get a version number from Dataverse. + + This is just a sanity check that Dataverse has been deployed properly. + + `curl http://localhost:8080/api/info/version` + +1. Perform one final Payara restart to ensure that timers are initialized properly. + + `sudo -u dataverse /usr/local/payara6/bin/asadmin stop-domain` + + `sudo -u dataverse /usr/local/payara6/bin/asadmin start-domain` + +### Upgrade from Solr 8 to 9 + +Solr has been upgraded to Solr 9. You must install Solr fresh and reindex. You cannot use your old `schema.xml` because the format has changed. + +The instructions below are copied from https://guides.dataverse.org/en/6.0/installation/prerequisites.html#installing-solr and tweaked a bit for an upgrade scenario. + +We assume that you already have a user called "solr" (from the instructions above), added during your initial installation of Solr. We also assume that you have already stopped Solr 8 as explained in the instructions above about upgrading Java. + +1. Become the "solr" user and then download and configure Solr. + + `su - solr` + + `cd /usr/local/solr` + + `wget https://archive.apache.org/dist/solr/solr/9.3.0/solr-9.3.0.tgz` + + `tar xvzf solr-9.3.0.tgz` + + `cd solr-9.3.0` + + `cp -r server/solr/configsets/_default server/solr/collection1` + +1. Unzip "dvinstall.zip" from this release. Unzip it into /tmp. Then copy the following files into place. + + `cp /tmp/dvinstall/schema*.xml /usr/local/solr/solr-9.3.0/server/solr/collection1/conf` + + `cp /tmp/dvinstall/solrconfig.xml /usr/local/solr/solr-9.3.0/server/solr/collection1/conf` + +1. A Dataverse installation requires a change to the jetty.xml file that ships with Solr. + + Edit `/usr/local/solr/solr-9.3.0/server/etc/jetty.xml`, increasing `requestHeaderSize` from `8192` to `102400` + +1. Tell Solr to create the core "collection1" on startup. + + `echo "name=collection1" > /usr/local/solr/solr-9.3.0/server/solr/collection1/core.properties` + +1. Update your init script. + + Your init script may be located at `/etc/systemd/system/solr.service`, for example. Update the path to Solr to be `/usr/local/solr/solr-9.3.0`. + +1. Start Solr using your init script and check collection1. + + The collection1 check below should print out fields Dataverse uses like "dsDescription". + + `systemctl start solr.service` + + `curl http://localhost:8983/solr/collection1/schema/fields` + +1. Reindex Solr. + + For details, see https://guides.dataverse.org/en/6.0/admin/solr-search-index.html but here is the reindex command: + + `curl http://localhost:8080/api/admin/index` + +1. If you have custom metadata blocks installed, you must update your Solr `schema.xml` to include your custom fields. + + For details, please see https://guides.dataverse.org/en/6.0/admin/metadatacustomization.html#updating-the-solr-schema + + At a high level you will be copying custom fields from the output of http://localhost:8080/api/admin/index/solr/schema or using a script to automate this. + +## Potential Archiver Incompatibilities with Payara 6 + +The [Google Cloud and DuraCloud archivers](https://guides.dataverse.org/en/5.14/installation/config.html#bagit-export) may not work in Dataverse 6.0. + +This is due to the archivers' dependence on libraries that include classes in `javax.* packages` that are no longer available. If these classes are actually used when the archivers run, the archivers would fail. As these two archivers require additional setup, they have not been tested in 6.0. Community members using these archivers or considering their use are encouraged to test them with 6.0 and report any errors and/or provide fixes for them that can be included in future releases. + +## Complete List of Changes + +For the complete list of code changes in this release, see the [6.0 Milestone](https://github.com/IQSS/dataverse/milestone/109?closed=1) in GitHub. + +## Getting Help + +For help with upgrading, installing, or general questions please post to the [Dataverse Community Google Group](https://groups.google.com/forum/#!forum/dataverse-community) or email support@dataverse.org. \ No newline at end of file From 4749c06c1a8c4871eacf25fb12585af6dfe9e7a8 Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Thu, 7 Sep 2023 09:09:15 -0400 Subject: [PATCH 16/25] add breaking changes section #9860 Co-authored-by: Oliver Bertuch --- doc/release-notes/9860-6.0-release-notes.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/doc/release-notes/9860-6.0-release-notes.md b/doc/release-notes/9860-6.0-release-notes.md index 9d0e167901d..dff23ca4ce9 100644 --- a/doc/release-notes/9860-6.0-release-notes.md +++ b/doc/release-notes/9860-6.0-release-notes.md @@ -6,19 +6,22 @@ Thank you to all of the community members who contributed code, suggestions, bug ## Release Highlights -### Payara 6 -Payara has been upgraded to version 6.2023.8. For details, see PR #9685 and PR #9795. +### Breaking Changes -Please note that Payara Community 5 has reached [end of life](https://www.payara.fish/products/payara-platform-product-lifecycle/). +This release contains a few major upgrades to core components. Detailed instructions to upgrade follow below. -### Solr 9 +#### Runtime +- Supported (required) Java version has been upgraded from v11 to v17. For details, see PR #9764 +- Payara application server has been upgraded to version 6.2023.8. + - This is a required update. For details, see PR #9685 and PR #9795. + - Please note that Payara Community 5 has reached [end of life](https://www.payara.fish/products/payara-platform-product-lifecycle/). +- Solr has been upgraded to version 9.3.0. For details, see PR #9787. -Solr has been upgraded to version 9.3.0. For details, see PR #9787. +#### Development +- Removal of Vagrant and Docker AIO, sunsetted in Dataverse v5.14. See PR #9838 and PR #9685 for details. +- All tests have been migrated to use JUnit 5 exclusively from now on out. See PR #9796 for details. -### Java 17 - -Java has been upgraded to version 17. For details, see PR #9764. ## Installation From 25bda807975b3faa4e61890aaf5c33266b806e2e Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Thu, 7 Sep 2023 09:18:01 -0400 Subject: [PATCH 17/25] tweaks #9860 --- doc/release-notes/9860-6.0-release-notes.md | 26 ++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/doc/release-notes/9860-6.0-release-notes.md b/doc/release-notes/9860-6.0-release-notes.md index dff23ca4ce9..e896beef78f 100644 --- a/doc/release-notes/9860-6.0-release-notes.md +++ b/doc/release-notes/9860-6.0-release-notes.md @@ -4,25 +4,25 @@ This is a platform upgrade release. Payara, Solr, and Java have been upgraded. N Thank you to all of the community members who contributed code, suggestions, bug reports, and other assistance across the project! -## Release Highlights +## Release Highlights (Major Upgrades, Breaking Changes) - -### Breaking Changes - -This release contains a few major upgrades to core components. Detailed instructions to upgrade follow below. +This release contains a major upgrades to core components. Detailed upgrade instructions can be found below. #### Runtime -- Supported (required) Java version has been upgraded from v11 to v17. For details, see PR #9764 + +- The required Java version has been increased from version 11 to 17. + - See PR #9764 for details. - Payara application server has been upgraded to version 6.2023.8. - - This is a required update. For details, see PR #9685 and PR #9795. - - Please note that Payara Community 5 has reached [end of life](https://www.payara.fish/products/payara-platform-product-lifecycle/). -- Solr has been upgraded to version 9.3.0. For details, see PR #9787. + - This is a required update. + - Please note that Payara Community 5 has reached [end of life](https://www.payara.fish/products/payara-platform-product-lifecycle/) + - See PR #9685 and PR #9795 for details. +- Solr has been upgraded to version 9.3.0. + - See PR #9787. for details. #### Development -- Removal of Vagrant and Docker AIO, sunsetted in Dataverse v5.14. See PR #9838 and PR #9685 for details. -- All tests have been migrated to use JUnit 5 exclusively from now on out. See PR #9796 for details. - +- Removal of Vagrant and Docker All In One (docker-aio), deprecated in Dataverse v5.14. See PR #9838 and PR #9685 for details. +- All tests have been migrated to use JUnit 5 exclusively from now on. See PR #9796 for details. ## Installation @@ -282,4 +282,4 @@ For the complete list of code changes in this release, see the [6.0 Milestone](h ## Getting Help -For help with upgrading, installing, or general questions please post to the [Dataverse Community Google Group](https://groups.google.com/forum/#!forum/dataverse-community) or email support@dataverse.org. \ No newline at end of file +For help with upgrading, installing, or general questions please post to the [Dataverse Community Google Group](https://groups.google.com/forum/#!forum/dataverse-community) or email support@dataverse.org. From 5b8c1918788cbc3b8a565a5cbf730aae48f5111c Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Thu, 7 Sep 2023 10:35:51 -0400 Subject: [PATCH 18/25] more tweaks #9860 --- doc/release-notes/9860-6.0-release-notes.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/release-notes/9860-6.0-release-notes.md b/doc/release-notes/9860-6.0-release-notes.md index e896beef78f..eb22dbff2ee 100644 --- a/doc/release-notes/9860-6.0-release-notes.md +++ b/doc/release-notes/9860-6.0-release-notes.md @@ -6,9 +6,9 @@ Thank you to all of the community members who contributed code, suggestions, bug ## Release Highlights (Major Upgrades, Breaking Changes) -This release contains a major upgrades to core components. Detailed upgrade instructions can be found below. +This release contains major upgrades to core components. Detailed upgrade instructions can be found below. -#### Runtime +### Runtime - The required Java version has been increased from version 11 to 17. - See PR #9764 for details. @@ -19,7 +19,7 @@ This release contains a major upgrades to core components. Detailed upgrade inst - Solr has been upgraded to version 9.3.0. - See PR #9787. for details. -#### Development +### Development - Removal of Vagrant and Docker All In One (docker-aio), deprecated in Dataverse v5.14. See PR #9838 and PR #9685 for details. - All tests have been migrated to use JUnit 5 exclusively from now on. See PR #9796 for details. From 99e74d0a61572a79dfe1493865d92efe02d89af0 Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Thu, 7 Sep 2023 12:11:52 -0400 Subject: [PATCH 19/25] typo #9860 --- doc/release-notes/9860-6.0-release-notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/release-notes/9860-6.0-release-notes.md b/doc/release-notes/9860-6.0-release-notes.md index eb22dbff2ee..ef432f42111 100644 --- a/doc/release-notes/9860-6.0-release-notes.md +++ b/doc/release-notes/9860-6.0-release-notes.md @@ -17,7 +17,7 @@ This release contains major upgrades to core components. Detailed upgrade instru - Please note that Payara Community 5 has reached [end of life](https://www.payara.fish/products/payara-platform-product-lifecycle/) - See PR #9685 and PR #9795 for details. - Solr has been upgraded to version 9.3.0. - - See PR #9787. for details. + - See PR #9787 for details. ### Development From 49508a68e674116116ffb9e36a56f69c1fb7bbe0 Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Fri, 8 Sep 2023 10:12:34 -0400 Subject: [PATCH 20/25] rename release notes file #9860 --- .../{9860-6.0-release-notes.md => 6.0-release-notes.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename doc/release-notes/{9860-6.0-release-notes.md => 6.0-release-notes.md} (100%) diff --git a/doc/release-notes/9860-6.0-release-notes.md b/doc/release-notes/6.0-release-notes.md similarity index 100% rename from doc/release-notes/9860-6.0-release-notes.md rename to doc/release-notes/6.0-release-notes.md From 4cd8724796a6390a4c5e3f9aa6e115f26ea136a4 Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Fri, 8 Sep 2023 10:12:58 -0400 Subject: [PATCH 21/25] mention template/terms bug #9825 in release notes #9860 --- doc/release-notes/6.0-release-notes.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/doc/release-notes/6.0-release-notes.md b/doc/release-notes/6.0-release-notes.md index ef432f42111..342bdd5ac7b 100644 --- a/doc/release-notes/6.0-release-notes.md +++ b/doc/release-notes/6.0-release-notes.md @@ -276,6 +276,17 @@ The [Google Cloud and DuraCloud archivers](https://guides.dataverse.org/en/5.14/ This is due to the archivers' dependence on libraries that include classes in `javax.* packages` that are no longer available. If these classes are actually used when the archivers run, the archivers would fail. As these two archivers require additional setup, they have not been tested in 6.0. Community members using these archivers or considering their use are encouraged to test them with 6.0 and report any errors and/or provide fixes for them that can be included in future releases. +## Bug Fix for Dataset Templates with Custom Terms of Use + +A bug was fixed for the following scenario: + +- Create a template with custom terms. +- Set that template as the default. +- Try to create a dataset. +- A 500 error appears before the form to create dataset is even shown. + +For more details, see issue #9825 and PR #9892 + ## Complete List of Changes For the complete list of code changes in this release, see the [6.0 Milestone](https://github.com/IQSS/dataverse/milestone/109?closed=1) in GitHub. From 12613be60c836a283cc3b085bfd404d183746fd7 Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Fri, 8 Sep 2023 12:41:36 -0400 Subject: [PATCH 22/25] mention postgres in release note #9717 #9860 --- doc/release-notes/6.0-release-notes.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/release-notes/6.0-release-notes.md b/doc/release-notes/6.0-release-notes.md index 342bdd5ac7b..b5e6d5a201d 100644 --- a/doc/release-notes/6.0-release-notes.md +++ b/doc/release-notes/6.0-release-notes.md @@ -18,6 +18,8 @@ This release contains major upgrades to core components. Detailed upgrade instru - See PR #9685 and PR #9795 for details. - Solr has been upgraded to version 9.3.0. - See PR #9787 for details. +- PostgreSQL 13 remains the tested and supported version. + - That said, the installer and Flyway have been upgraded to support PostgreSQL 14 and 15. See the [PostgreSQL](https://guides.dataverse.org/en/6.0/installation/prerequisites.html#postgresql) section of the Installation Guide and PR #9877 for details. ### Development From d481c611ecc631e5dff2706fb9027433a33c6097 Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Fri, 8 Sep 2023 12:49:16 -0400 Subject: [PATCH 23/25] reword prompt to opt-in to the map #9860 --- doc/release-notes/6.0-release-notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/release-notes/6.0-release-notes.md b/doc/release-notes/6.0-release-notes.md index b5e6d5a201d..1cf431ef6b0 100644 --- a/doc/release-notes/6.0-release-notes.md +++ b/doc/release-notes/6.0-release-notes.md @@ -30,7 +30,7 @@ This release contains major upgrades to core components. Detailed upgrade instru If this is a new installation, please follow our [Installation Guide](https://guides.dataverse.org/en/latest/installation/). Please don't be shy about [asking for help](https://guides.dataverse.org/en/latest/installation/intro.html#getting-help) if you need it! -If you would like to be on our [map of Dataverse installations](https://dataverse.org/installations) around the world, please [create an issue](https://github.com/IQSS/dataverse-installations/issues) or email us at support@dataverse.org! +Once you are in production, we would be delighted to update our [map of Dataverse installations](https://dataverse.org/installations) around the world to include yours! Please [create an issue](https://github.com/IQSS/dataverse-installations/issues) or email us at support@dataverse.org to join the club! ## Upgrade Instructions From 7259b35e95ebe9feb2d845283cc4ab97752e3104 Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Fri, 8 Sep 2023 12:58:31 -0400 Subject: [PATCH 24/25] mention joining the GDCC #9860 --- doc/release-notes/6.0-release-notes.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/release-notes/6.0-release-notes.md b/doc/release-notes/6.0-release-notes.md index 1cf431ef6b0..df916216f5b 100644 --- a/doc/release-notes/6.0-release-notes.md +++ b/doc/release-notes/6.0-release-notes.md @@ -32,6 +32,8 @@ If this is a new installation, please follow our [Installation Guide](https://gu Once you are in production, we would be delighted to update our [map of Dataverse installations](https://dataverse.org/installations) around the world to include yours! Please [create an issue](https://github.com/IQSS/dataverse-installations/issues) or email us at support@dataverse.org to join the club! +You are also very welcome to join the [Global Dataverse Community Consortium](https://dataversecommunity.global) (GDCC). + ## Upgrade Instructions Upgrading requires a maintenance window and downtime. Please plan ahead, create backups of your database, etc. From 1d7118b08e336c246d1db7c734ce2376ebc028bc Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Thu, 7 Sep 2023 18:27:50 -0400 Subject: [PATCH 25/25] bump version to 6.0 #9861 --- doc/sphinx-guides/source/conf.py | 4 ++-- doc/sphinx-guides/source/versions.rst | 3 ++- modules/dataverse-parent/pom.xml | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/sphinx-guides/source/conf.py b/doc/sphinx-guides/source/conf.py index 2c2ddf1bdf6..7ff17eb45ed 100755 --- a/doc/sphinx-guides/source/conf.py +++ b/doc/sphinx-guides/source/conf.py @@ -66,9 +66,9 @@ # built documents. # # The short X.Y version. -version = '5.14' +version = '6.0' # The full version, including alpha/beta/rc tags. -release = '5.14' +release = '6.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/doc/sphinx-guides/source/versions.rst b/doc/sphinx-guides/source/versions.rst index d5ffb2acb66..2000a2097f0 100755 --- a/doc/sphinx-guides/source/versions.rst +++ b/doc/sphinx-guides/source/versions.rst @@ -7,7 +7,8 @@ Dataverse Software Documentation Versions This list provides a way to refer to the documentation for previous and future versions of the Dataverse Software. In order to learn more about the updates delivered from one version to another, visit the `Releases `__ page in our GitHub repo. - pre-release `HTML (not final!) `__ and `PDF (experimental!) `__ built from the :doc:`develop ` branch :doc:`(how to contribute!) ` -- 5.14 +- 6.0 +- `5.14 `__ - `5.13 `__ - `5.12.1 `__ - `5.12 `__ diff --git a/modules/dataverse-parent/pom.xml b/modules/dataverse-parent/pom.xml index c2623877e9e..c45d59e4f5f 100644 --- a/modules/dataverse-parent/pom.xml +++ b/modules/dataverse-parent/pom.xml @@ -131,7 +131,7 @@ - 5.14 + 6.0 17 UTF-8