Check the obosoletedBy and Obsoletes only can be set once.
The method of setReplicationstatus can be called by CNs and MNs.
Only CNs can call those methods:CNCore.registerSystemMetadata()CNCore,updateSystemMetadata()CNReplication.setReplicationStatus()CNReplication.updateReplicationMetadata()CNReplication.deleteReplicationMetadata()
On mn.update and mn.updateSystemMetadata, those clients are allowed:1. CNs.2. Clients with appropriate permission calling the method on the authoritative nodes.
When compare the dateUploaded, now we use sysmetadata.getDateUploaded().getTime(). It used systemmetadata.getDateUploaded() (Date objects) to compare.
Add code to catch the BaseException in the updateSystemMetadata method.
Add the code to handle if the cn is null.
Handle multiple versions (v1 and v2) of a service in getCapacity method.
Use the NodeReference object to replace the replicaStatus to restrict the listObjects method.
[re]register DOI when system metadata is updated (typically access policy). https://projects.ecoinformatics.org/ecoinfo/issues/6796
Change the signature of listObject method - remove replicaStatus and add nodeId.
Add the code to call cn.synchroinize at the method of updateSystemMetadata.
Add the code to roll back the saved system metadata if the object can't be saved.
Add the code to check if the client is trying to update an archived object. If it is, reject it.
Add a new method -updateSystemMetadata. It only can be called by CNs.
Refactory the authorize methods on D1NodeService.Add the check for whom can call mn.updatesystemMetadata.
Committed the change which Andreit did. 1. Add the code for synchronize(not implemented)2. Add the code for addForm.
Created the updateSystemMetadata method.
Add the code to check if the current node is the authoritative node for the the given pid.
Add the check of permission to update the system metadata.
Remove the code to check sid on create and registerSystemMetadata.
Fixed a bug that put the detail code in a wrong position.
Add the code to check if a user tries to modify an immutable field on system metadata.
If an Event object is null in the v1 log entry, we won't add it to the log.
Make the REST api work for views.
Add the code to support CNView interface in CNodeService. Both CNodeService and MNodeService share the same code base.
Transform the ObjectFormat from v2 to v1 in getFormat method.
Convert the v2 system metadata object to v1 in the getSystemMetadata method.
The setObsoletedBy only handles PID.
The method setObsoletedBy only hanldes SID.
Add the timestamp for the printing out the start and end of hazelcast synchronization.
Call the method lock.lock() immediately after getting the lock. Otherwise, if an exception happened between the two calls (in another word, lock.lock() was called), lock.unlock() can cause an issue:Current thread is not owner of lock!See https://redmine.dataone.org/issues/6836.
The setReplicationStatus method only supports sid and the setRightsHolder method supports both PID and SID.
Add the code transform a sid to a pid in publish, getPackage and view method. Fefer dataONE #6734.
Fixed a bug that it should use getReplica rather than get method.
The CN.setReplicationPolicy method now only support PIDs. Refer to https://redmine.dataone.org/issues/6734.
Went through the v2 ObjectFormatList and convert every v2 ObjectFormat to v1 ObjectFormat and put them into a v1 objectFormatList.
Add the log messages to indicate the hazelcast synchronization starting and ending.
Add the code to handle sid in the publish method.
Add the code to exclude the sid in the view and getPackage.
Add a converter to convert the V2 Log object to the V1 Log object.
Add the rules to check the if a sid is valid in the updateSystemMetadata method.
Implemented the feature to support the identifier(both sid and pid) feature in the objectLists method.
The MN.listobjects and CN.listobjects methods will call the one in the D1NodeService class.
Add the code to check if the pid is an SID in the registerSystemMetadata method.
Add code to check if the sid equals pid for the method checkSidInRegisterSystemMetadata.
Moved the rules for the SID from D1NodeService.create to MNodeService.create.Also moved the code to check the validation of an pid from D1NodeService.create to MNodeService.create, MNodeService.replicate and CNodeService.create.
Add the code to check if a sid is legitimate in the method create and registerSystemMetadata.
The the code to handle sids on the v2 api - setReplicationPolicy, setReplicationStatus, setAccessPolicy and setObsoletedBy.
Add the code to handle if a identifier is a sid in setAccessPolicy, setReplicationPolicy, setObsoletedBy and setRreplicationStatus.
Add the code to handle SID in the getLogRecords method.
In the getLogRecords method, the pidFilter is checked if it exists.
Fixed a bug that the getLogRecords can't handle the case that the event is null.
Add the code to check the if the new series id is legitimate in the systemMetadataChanged method.
Add the code to support the sereis id on isAuthorized and systemMetadataChanged method.
Add the code to handle the sid in the delete and archive method.
Fixed a bug in comparing two identifiers in the update method.
Add a check that the sid shouldn't equals the pid in the update and create method.
Add the code the check if the format of the sid is valid in the system metadata.
Add the enforcement for the sid in the create method.
Enforce the sid requirement in the update method.
Check if the identifier is a sid for the v1 update.
Add the code to handle the deleted identifier in the checking v1 system metadata existing method.
Enforce the mn.getChecksum only to handle an PID.
Implement the series id in the getSystemMetadata method.
Looking for sid for the method describe.
Refactor the code to check a pid exists in the v1 api.
Modified the get method to handle the sid in the v2 api.
Fixed a bug that the method getLocalId swallowed an exception incorrectly in the IdentifierManager.
Fixed a bug that some service failure exceptions were handled as the NotFound exception.
1. In the identifierExists method, the code to check if the identifier exist on the serial-id fields of the system metadata table.2. Fixed a bug on the identifierExists - it considered an identifier didn't exist when the determining process threw an exception.
Fixed a bug that the reindex of data objects may index an archived data object.
Fixed a bug that the solr index of data files doesn't reflect the change of access control.
Add delete log for data objects on CNs.
Write the input stream into the file system without alteration in dataone create and update methods.
Added the code to inform users the pid was deleted in the NotFound exception.
Added the code to check if a not-found object was deleted in the isAuthorized method.
Remove the system metadata for data objects.
Persitence the system metadata object in the memory before deleting it from hazelcast.
Add the code to delete systemmetadata.
convert v2 SM to v1 SM for the v1 service call response
update to use v2 types for indexing
remove CN.systemMetadataChanged in favor of the CN.updateSystemMetadata method. Otherwise there's no good way to know where to fetch the auth copy from since the SM change might be to switch the authMN!
add support for v2 DataONE API.
Include PDF version of the metadata in the package download. https://projects.ecoinformatics.org/ecoinfo/issues/6053
take advantage of the ezidclient for multi-threaded/asynchronous DOI registration. This will be most useful for doing large batch updates and not so much for the one-at-a-time publish actions but works in either context. https://projects.ecoinformatics.org/ecoinfo/issues/6440
use a member instance of ezid service that only logs in every 24 hours (or other time TBD) instead of every time there is an interaction with the service. Saves us many calls when doing batch updates to ezid but keeps us from trying to use expired sessions. Motivated by https://projects.ecoinformatics.org/ecoinfo/issues/6440
do not set archived=false for all CN.create calls. The CN will use create() even harvesting content that is new to it and needs to handle already-archived content. https://projects.ecoinformatics.org/ecoinfo/issues/6475
correct the ORE lookup query syntax and add junit assertion to check that it continues to function as expected. https://projects.ecoinformatics.org/ecoinfo/issues/6529
recursively submit obsoleted objects for indexing when instructed. https://projects.ecoinformatics.org/ecoinfo/issues/6424
include a few tests for isEqual method. https://projects.ecoinformatics.org/ecoinfo/issues/6407
Change isEqual to private so it can be used by test suite
add comment (and commented out code) for possibly inspecting the /dirtySysMeta call for archive=true flag. https://projects.ecoinformatics.org/ecoinfo/issues/6417
call getDescription on cn.setaccesspolicy service failure
make all objects in a package publicly readable when published. https://projects.ecoinformatics.org/ecoinfo/issues/6415
make all package contents publicly readable when publishing with a DOI. https://projects.ecoinformatics.org/ecoinfo/issues/6415
Run syncAll in a single thread so admin config UI doesn't freeze