Skip to content

Commit a502ec0

Browse files
committed
Merge branch 'develop' into 11959-automate-solr-schema-updates
2 parents c06c1a1 + b8f5c1e commit a502ec0

File tree

119 files changed

+3825
-951
lines changed

Some content is hidden

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

119 files changed

+3825
-951
lines changed

.github/workflows/deploy_beta_testing.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ jobs:
6969
overwrite: true
7070

7171
- name: Execute payara war deployment remotely
72-
uses: appleboy/ssh-action@v1.2.2
72+
uses: appleboy/ssh-action@v1.2.3
7373
env:
7474
INPUT_WAR_FILE: ${{ env.war_file }}
7575
with:
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
## Database Settings Cleanup
2+
3+
With this release, we remove some legacy specialties around Database Settings and provide better Admin API endpoints for them.
4+
5+
Most important changes:
6+
7+
1. Setting `BuiltinUsers.KEY` was renamed to `:BuiltinUsersKey`, aligned with our general naming pattern for options.
8+
2. Setting `WorkflowsAdmin#IP_WHITELIST_KEY` was renamed to `:WorkflowsAdminIpWhitelist`, aligned with our general naming pattern for options.
9+
3. Setting `:TabularIngestSizeLimit` no longer uses suffixes for formats and becomes a JSON-based setting instead.
10+
4. If set, all three settings will be migrated to their new form automatically for you (Flyway migration).
11+
5. You can no longer (accidentally) create or use arbitrary setting names or languages.
12+
All Admin API endpoints for settings now validate setting names and languages for existence and compliance.
13+
14+
As an administrator of a Dataverse instance, you can now make use of enhanced Bulk Operations on the Settings Admin API:
15+
16+
1. Retrieving all settings as JSON via `GET /api/admin/settings` supports localized options now, too.
17+
2. You can replace all existing settings in an idempotent way sending JSON to `PUT /api/admin/settings`.
18+
This will create, update and remove settings as necessary in one atomic operation.
19+
The new endpoint is especially useful to admins using GitOps or other automations.
20+
It allows control over all Database Settings from a single source without risking an undefined state.
21+
22+
Note: Despite the validation of setting names and languages, the content of any database setting is still not being validated when using the Settings Admin API!
23+
24+
### Updated Database Settings
25+
26+
The following database settings are were added to the official list within the code (to remain valid with the settings cleanup mentioned above):
27+
28+
- `:BagGeneratorThreads`
29+
- `:BagItHandlerEnabled`
30+
- `:BagItLocalPath`
31+
- `:BagValidatorJobPoolSize`
32+
- `:BagValidatorJobWaitInterval`
33+
- `:BagValidatorMaxErrors`
34+
- `:BuiltinUsersKey` - formerly `BuiltinUsers.KEY`
35+
- `:CreateDataFilesMaxErrorsToDisplay`
36+
- `:DRSArchiverConfig` - a Harvard-specific setting
37+
- `:DuraCloudContext`
38+
- `:DuraCloudHost`
39+
- `:DuraCloudPort`
40+
- `:FileCategories`
41+
- `:GoogleCloudBucket`
42+
- `:GoogleCloudProject`
43+
- `:LDNAnnounceRequiredFields`
44+
- `:LDNTarget`
45+
- `:WorkflowsAdminIpWhitelist` - formerly `WorkflowsAdmin#IP_WHITELIST_KEY`
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# 11744: CORS handling improvements
2+
3+
Modernizes CORS so browser integrations (previewers, external tools, JS clients) work correctly with multiple origins and proper caching.
4+
5+
## Highlights
6+
7+
- Echoes the request origin (`Access-Control-Allow-Origin`) when it matches `dataverse.cors.origin`.
8+
- Adds `Vary: Origin` for per-origin responses (not for wildcard).
9+
- Supports comma‑separated origin list; any `*` in the list = wildcard mode.
10+
- CORS now only enabled when `dataverse.cors.origin` is set (removed `:AllowCors` no longer enables it).
11+
- All comma-separated configuration settings (database properties and MicroProfile config) now ignore spaces around commas; tokens remain unchanged (no quote parsing). Examples: `dataverse.cors.methods`, `dataverse.cors.headers.allow`, `dataverse.cors.headers.expose`. See "Comma-separated configuration values" in the Installation Guide.
12+
- Docs updated (Installation, Big Data Support, External Tools, File Previews); new tests cover edge cases.
13+
14+
## Admin Action
15+
16+
Set `dataverse.cors.origin` explicitly (required). Use explicit origins (not `*`) for credentialed requests. Ensure proxies keep `Vary: Origin`.
17+
18+
Examples:
19+
20+
```
21+
dataverse.cors.origin=https://example.org
22+
dataverse.cors.origin=https://libis.github.io,https://gdcc.github.io
23+
dataverse.cors.origin=*
24+
```
25+
26+
Optional (unquoted):
27+
28+
```
29+
dataverse.cors.methods=GET, POST, OPTIONS, PUT, DELETE
30+
```
31+
32+
## Compatibility
33+
34+
- Must configure `dataverse.cors.origin`; `:AllowCors` was deprecated and has now been removed.
35+
- Any `*` triggers wildcard (no per-origin echo / no Vary header).
36+
37+
## Docs
38+
39+
See updated `dataverse.cors.origin` section and related notes in Big Data Support (S3), External Tools, and File Previews.
40+
41+
<!-- Maintainer note: The generic behavior for comma-separated settings has been documented centrally under Installation Guide > Configuration > "Comma-separated configuration values". Keep this item here as a cross-reference. -->
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
This release adds functionality to retry calls to DataCite when their server is overloaded or Dataverse has hit their rate limit.
2+
3+
It also introduces an option to only update DataCite metadata after checking to see if the current DataCite information is out of date.
4+
(This adds a request to get information from DataCite before any potential write of new information which will be more efficient when
5+
most DOIs have not changed but will result in an extra call to get info when a DOI has changed.)
6+
7+
Both of these can help when DataCite is being used heavily, e.g. creating and publishing datasets with many datafiles and using file DOIs,
8+
or doing bulk operations that involve DataCite with many datasets.
9+
10+
### New Settings
11+
12+
- dataverse.feature.only-update-datacite-when-needed
13+
14+
The default is false - Dataverse will not check to see if DataCite's information is out of date before sending an update.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
### Dataset version summaries API changedFileMetaData count fix
2+
3+
The endpoint ``{id}/versions/compareSummary`` was previously returning an incorrect count for
4+
the ``changedFileMetaData`` field.
5+
The logic for calculating this count has been fixed to accurately reflect the total number of file metadata changes
6+
across all files in the dataset version.
7+
8+
### Related issues
9+
10+
- https://github.com/IQSS/dataverse/issues/11921
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
File level permissions: Restricted files in Draft will now show a "Draft/Unpublished" tag in the UI when granting file access
2+
3+
See #7618
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
A new API endpoint has been implemented for getting the metadata language of a Dataverse Collection:
2+
3+
`GET /dataverses/{alias}/allowedMetadataLanguages`: Returns the specified metadata language(s) in the collection if any.
4+
`PUT /dataverses/{alias}/allowedMetadataLanguages{metadataLanguage}`: Sets a metadata language in the collection.
5+
6+
For more information, see #11856 and #11856.

doc/sphinx-guides/source/api/changelog.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ This API changelog is experimental and we would love feedback on its usefulness.
99

1010
v6.9
1111
----
12+
1213
- The POST /api/admin/makeDataCount/{id}/updateCitationsForDataset processing is now asynchronous and the response no longer includes the number of citations. The response can be OK if the request is queued or 503 if the queue is full (default queue size is 1000).
14+
- The way to set per-format size limits for tabular ingest has changed. JSON input is now used. See :ref:`:TabularIngestSizeLimit`.
15+
- In the past, the settings API would accept any key and value. This is no longer the case because validation has been added. See :ref:`settings_put_single`, for example.
1316

1417
v6.8
1518
----

doc/sphinx-guides/source/api/external-tools.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ Introduction
1111

1212
External tools are additional applications the user can access or open from your Dataverse installation to preview, explore, and manipulate data files and datasets. The term "external" is used to indicate that the tool is not part of the main Dataverse Software.
1313

14+
.. note::
15+
Browser-based tools must have CORS explicitly enabled via :ref:`dataverse.cors.origin <dataverse.cors.origin>`. List every origin that will host your tool (or use ``*`` when a wildcard is acceptable). If an origin is not listed, the browser will block that tool's API requests even if the tool page itself loads.
16+
1417
Once you have created the external tool itself (which is most of the work!), you need to teach a Dataverse installation how to construct URLs that your tool needs to operate. For example, if you've deployed your tool to fabulousfiletool.com your tool might want the ID of a file and the siteUrl of the Dataverse installation like this: https://fabulousfiletool.com?fileId=42&siteUrl=https://demo.dataverse.org
1518

1619
In short, you will be creating a manifest in JSON format that describes not only how to construct URLs for your tool, but also what types of files your tool operates on, where it should appear in the Dataverse installation web interfaces, etc.

0 commit comments

Comments
 (0)