Project

General

Profile

# Date Author Comment
9345 09/30/2015 04:38 PM Jing Tao

Add a comment to specify that the setReplicationPolicy only applys to v1.

9343 09/30/2015 04:07 PM Jing Tao

The setReplicationPolicy method only apply to the pids whose authoritative member node has v2 MNStorage.

9339 09/28/2015 10:01 AM Jing Tao

Add a note for the updateSystemMetadata method.

9337 09/25/2015 02:55 PM Jing Tao

CN.updateSystemMetadata will ignore the serial version and replica list in the comming system metadata from the mn.

9335 09/24/2015 04:58 PM Jing Tao

Add the code to check the date of system metadata modification match in MN.updateSystemMetadata only. CN.updateSystemMetadata doesn't check.

9326 09/16/2015 12:57 PM Chris Jones

Change updateReplicationMetadata() and setReplicationStatus() to no longer set the dateSysmetaModified date per our discussion on 9/16/15.

9315 09/04/2015 03:05 PM Jing Tao

In the setReplicaStatus method, if the coming status is the same one of the existing one, the system metadata will not be updated.

9294 08/14/2015 04:04 PM Jing Tao

When the cn.notifyReplicaNodes method, if the target MN source code is a v2 mn, we will use v2 api; if it is a v1 node, we will use v1 api.

9272 07/30/2015 05:32 PM Jing Tao

The method of setReplicationstatus can be called by CNs and MNs.

9265 07/27/2015 05:15 PM Jing Tao

Only CNs can call those methods:
CNCore.registerSystemMetadata()
CNCore,updateSystemMetadata()
CNReplication.setReplicationStatus()
CNReplication.updateReplicationMetadata()
CNReplication.deleteReplicationMetadata()

9249 07/15/2015 11:07 AM Jing Tao

Use the NodeReference object to replace the replicaStatus to restrict the listObjects method.

9247 07/14/2015 04:56 PM Jing Tao

Change the signature of listObject method - remove replicaStatus and add nodeId.

9192 05/01/2015 04:56 PM Jing Tao

Add a new method -updateSystemMetadata. It only can be called by CNs.

9189 05/01/2015 02:59 PM Jing Tao

Committed the change which Andreit did.
1. Add the code for synchronize(not implemented)
2. Add the code for addForm.

9177 04/22/2015 05:01 PM Jing Tao

Created the updateSystemMetadata method.

9170 04/14/2015 02:43 PM Jing Tao

Remove the code to check sid on create and registerSystemMetadata.

9146 03/09/2015 05:19 PM Jing Tao

Add the code to support CNView interface in CNodeService. Both CNodeService and MNodeService share the same code base.

9125 02/17/2015 04:01 PM Jing Tao

The setObsoletedBy only handles PID.

9111 02/09/2015 05:38 PM Jing Tao

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.

9093 02/04/2015 04:44 PM Jing Tao

The setReplicationStatus method only supports sid and the setRightsHolder method supports both PID and SID.

9087 02/03/2015 02:10 PM Jing Tao

The CN.setReplicationPolicy method now only support PIDs. Refer to https://redmine.dataone.org/issues/6734.

9073 01/20/2015 02:25 PM Jing Tao

Add the rules to check the if a sid is valid in the updateSystemMetadata method.

9071 01/16/2015 02:22 PM Jing Tao

The MN.listobjects and CN.listobjects methods will call the one in the D1NodeService class.

9070 01/16/2015 12:29 PM Jing Tao

Add the code to check if the pid is an SID in the registerSystemMetadata method.

9069 01/15/2015 05:36 PM Jing Tao

Add code to check if the sid equals pid for the method checkSidInRegisterSystemMetadata.

9068 01/15/2015 05:27 PM Jing Tao

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.

9067 01/15/2015 04:56 PM Jing Tao

Add the code to check if a sid is legitimate in the method create and registerSystemMetadata.

9066 01/14/2015 05:33 PM Jing Tao

The the code to handle sids on the v2 api - setReplicationPolicy, setReplicationStatus, setAccessPolicy and setObsoletedBy.

9050 12/30/2014 04:34 PM Jing Tao

Add the code to handle the sid in the delete and archive method.

9024 12/16/2014 06:50 PM Jing Tao

Fixed a bug that the method getLocalId swallowed an exception incorrectly in the IdentifierManager.

8971 11/17/2014 04:30 PM Jing Tao

Add delete log for data objects on CNs.

8903 10/15/2014 04:34 PM Jing Tao

Added the code to inform users the pid was deleted in the NotFound exception.

8887 10/10/2014 02:10 PM Jing Tao

Remove the system metadata for data objects.

8869 09/18/2014 03:12 PM Jing Tao

Persitence the system metadata object in the memory before deleting it from hazelcast.

8811 07/24/2014 10:25 AM ben leinfelder

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!

8810 07/23/2014 04:19 PM ben leinfelder

add support for v2 DataONE API.

8770 05/12/2014 11:31 AM ben leinfelder

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

8589 02/11/2014 11:05 AM Chris Jones

Change CnodeService.archive() to no longer broadcast MN.archive() calls to all of the replica MNs of a pid, but rather broadcast MN.systemMetadataChanged().

8553 02/03/2014 02:52 PM ben leinfelder

can only log events with a valid localId.

8454 12/20/2013 07:46 AM Chris Jones

On changes to system metadata in CNodeService and DocumentImpl, increment the serialVersion.

8450 12/19/2013 02:35 PM Chris Jones

Change CNodeService's archive() and delete() methods to only update Member Nodes in the replica list (not CNs!), since calling CN.archive() again would cause an infinite loop. Thanks for catching this Ben.

8444 12/19/2013 09:35 AM Chris Jones

Update CNodeService.delete() and .archive() to handle situations where the pid is of formatType DATA, and therefore are not registered in the identifier table, and caused NotFound exceptions. For DATA objects, we just update the system metadata now, and for all other objects (METADATA, RESOURCE), we continue to use super.{delete()|archive()}. Also, log the delete/archive into the event log....

8439 12/19/2013 08:13 AM Chris Jones

Remove the broadcastSystemMetadataChange() method since it was a duplicate of notifyReplicaNodes(). Consolidated now.

8360 10/31/2013 01:07 PM Jing Tao

Add the methond named isAuthoritativeMNodeAdmin method. It applies to both CN and MN methods.

8355 10/30/2013 03:37 PM Chris Jones

On calls to archive(), log the correct call (not delete()).

7600 04/20/2013 06:19 PM Chris Jones

Merging the METACAT_2_0_6_BRANCH changes for [M|C]NodeService into the trunk.

7534 04/05/2013 12:38 PM ben leinfelder

allow verification date to be updated for replicas (patch from Skye). https://redmine.dataone.org/issues/3699

7515 03/13/2013 03:13 PM Chris Jones

Set the session to null so that the call uses the CN certificate when calling MN.systemMetadataChanged();

7514 03/13/2013 07:26 AM Chris Jones

To keep all nodes up to date with regard to system metadata changes, add the broadcastSystemMetadataChange() method that finds replica MNs in the node list and calls systemMetadataChanged(). Modify setReplicationStatus() and updateReplicationMetadata() to fire this off when a replica status changes to completed. We may decide to inform MNs at other times too, but this is a conservative amount of calls going to the MNs for now.

7467 12/07/2012 10:39 AM ben leinfelder

make sure to call lock() on the SM when updating rightsholder (like every other method that gets a lock object from HZ).

7464 12/07/2012 10:25 AM ben leinfelder

CN.search() id not implemented by metacat -- making that explicit and also testing for it.

7439 11/29/2012 04:52 PM ben leinfelder

limit /log and /object calls to configurable maximum count for paging. defaults to existing Metacat value of 7000

7420 11/09/2012 10:57 AM Chris Jones

In CNodeService.updateReplicationMetadata(), we are setting the replicaVerifiedDate() when we update or wholesale add a new replica. However, in setReplicationStatus(), we only do so when there's a new entry. Change setReplicationStatus() to also update the replicaVerifiedDate on updates of existing entries to be more consistent with other changes. This affects node prioritization based on this date timestamp. Thanks to Skye for pointing this out.

7401 10/15/2012 02:38 PM Chris Jones

Update d1_common_java and d1_libclient_java to the newest jar files. Add methods to CNodeService to throw NotImplemented exceptions for query(), listQueryEngines(), and getQueryEngineDescription() since these API calls are handled outside of metacat.

7252 06/06/2012 03:14 PM Chris Jones

Oops, previous commit suffered from a happy trigger finger. During deleteReplicationMetadata(), don't delete the replica on the replica Member Node. Call CN.delete() for that functionality. This call just updates sytem metadata (according to the API description).

7251 06/06/2012 03:10 PM Chris Jones
7231 06/02/2012 05:46 AM Chris Jones

In setReplicationStatus() and UpdateReplicationMetadata(), don't allow a status state change from COMPLETED to anything other than INVALIDATED. This prevents the completed status from being overwritten due to race conditions.

7218 05/31/2012 10:56 AM Chris Jones

Throw an exception when NOT allowed, not when allowed =).

7179 05/21/2012 02:31 PM Chris Jones

Add a few logging statemnts for round trip replication metrics.

7171 05/17/2012 12:46 PM ben leinfelder

remove exception from method decl - was not matching the interface def and not compiling.

7148 04/30/2012 03:35 PM ben leinfelder

implement MN and CN.archive() method -- really just the existing delete() methods.
https://redmine.dataone.org/issues/2674
https://redmine.dataone.org/issues/2675

7147 04/30/2012 03:05 PM ben leinfelder

call MN.delete() for each replica when CN.delete() is called
https://redmine.dataone.org/issues/2676

7144 04/25/2012 03:33 PM ben leinfelder

include Session-less interface methods and updated jars that define them.

7142 04/19/2012 02:04 PM ben leinfelder

remove extraneous pid and permission parameters from isAdminAuthorized() method and make public so that it can be called in other locations - namely before our asynchronous replicate() implementation on the MN.

7141 04/19/2012 01:50 PM ben leinfelder

check for empty null (missing) node.subjectList. This should probably be a required element in the D1 schema, but it appears not. (ORNL entry was missing subjects in cn-dev environment)

7140 04/19/2012 11:57 AM ben leinfelder

just use the e.getMessage() as e.getCause() may be null (seeing NPE when testing via the MN IT tester)

7086 03/22/2012 03:14 PM Chris Jones

Also allow MNs to set the FAILED status in setReplicationStatus(). this was an oversight on my part, trying to keep MNs that truly did succeed from overriding the COMPLETED status with FAILED.

7079 03/19/2012 10:12 AM ben leinfelder

use isAdminAuthorized() to check access to CN.create(). Note this method takes a pid and permission parameter and neither is used. Also removed the NotFound exception because it would never come up.

7078 03/19/2012 10:01 AM ben leinfelder

check that caller is CN/admin for CN.delete()
https://redmine.dataone.org/issues/2506

7077 03/19/2012 09:52 AM ben leinfelder

include CN.delete()
https://redmine.dataone.org/issues/2506

7076 03/16/2012 04:07 PM Chris Jones

Notify each replica MN when critical portions of system metadata change so the MN can pull the latest copy into its store. AccessPolicy and RightsHolder changes are the most critical for the MN to keep updated on.

7074 03/15/2012 07:50 PM Chris Jones

Modify CNodeService.setReplicationStatus() slightly to restrict MN-based calls to only set the status to COMPLETED. The CNs should be setting failures or invalidations, or the status can remain at QUEUED or REQUESTED, and the MNAuditTask can revisit those replicas as needed.

7073 03/15/2012 07:14 PM Chris Jones

Add a notifyReplicaNodes() method that calls MNStorage.systemMetadataChanged() on MN replica nodes for a given object identifier. This will be called when there are changes to AccessPolicy and rights holder since these are critical access metadata for an MN, but they can only be changed on the CN.

7071 03/15/2012 12:08 PM Chris Jones

In setReplicationStatus(), first check for a replica target MN subject match with the session subject. If this fails, look to see if CN admin access is allowed. Otherwise throw NotAuthorized. Addresses https://redmine.dataone.org/issues/2494

7068 03/14/2012 12:02 PM Chris Jones

Remove individual calls to isAdminAuthorized() in favor of the centralized isAuthorized() call that handles it now.

7066 03/13/2012 04:00 PM ben leinfelder

check for null Session before continuing with setReplicationStatus()
https://redmine.dataone.org/issues/2476#note-3

7062 03/13/2012 02:19 PM ben leinfelder

throw not authorized when attempting to getReplica as an invalid/non-existent node

7029 02/24/2012 09:46 AM ben leinfelder

throw InvalidToken when an invalid Permission is passed in. THis requires that internal calls to the method also check for this exception.
https://redmine.dataone.org/issues/2388

7012 02/15/2012 09:35 AM Chris Jones

CNodeService.listChecksumAlgorithms() was returning null rather than the list. Fixed.

6934 01/23/2012 11:08 AM ben leinfelder

use RC-1 Dataone jars

6917 01/17/2012 03:17 PM Chris Jones

For MNs that haven't set the archived flag to false on create(), set it here. Also, ensure that the CN sync code sets the authoritative and origin member node fields.

6884 01/11/2012 04:42 PM ben leinfelder

include new methods needed for replication (in new d1 jars)
https://redmine.dataone.org/issues/2203

6883 01/11/2012 01:25 PM ben leinfelder

add method: setObsoletedBy (https://redmine.dataone.org/issues/2185)
augement new method: deleteReplicationMetadata

6881 01/11/2012 11:24 AM ben leinfelder

add method: deleteReplicationMetadata
remove method: assertRelation
update the D1 jars
https://redmine.dataone.org/issues/2187
https://redmine.dataone.org/issues/2158

6876 01/10/2012 05:04 PM Chris Jones

Simplify setReplicationStatus() to not call updateReplicationMetadata() if a replica doesn't exist. Just create it and update the system metadata, which we already have a lock for.

6869 01/09/2012 05:08 PM Chris Jones

Update the CN methods to throw a VersionMismatch where the API changed (where serialVersion is a required parameter). These were previously throwing an InvalidRequest exception.
Change the exception handling for calls to Hazelcast to catch a RuntimeException (not Exception) so we don't catch exceptions that we purposefully throw....

6867 01/07/2012 06:01 PM Chris Jones

Don't lock() on the map.get() in isNodeAuthorized() (this assumes that the CN has queued the task already). Add more lock/unlock debug statements, and fix setReplicationStatus() - I missed a finally statement to unlock the pid.

6866 01/07/2012 12:39 PM Chris Jones

Modify CNReplication methods setReplicationStatus(), updateReplicationMetadata() and setReplicationPolicy() to allow administrative access from a Coordinating Node by calling isAdminAuthorized().

6863 01/06/2012 12:51 PM Chris Jones

In registerSystemMetadata(), lock the pid prior to calling map.containsKey(pid) since a put to the map could occur between the check and the subsequent put().

6859 01/06/2012 07:23 AM Chris Jones

Use Lock instead of ILock to be consistent across classes.

6858 01/05/2012 06:32 PM Chris Jones

After reviewing CNodeService and D1NodeService prompted by Robert comparing the Hazelcast locking with the d1_synchronization locking, I've made a number of changes that will prevent locking problems:

1) Multiple methods contained try/catch blocks that would:...

6805 12/19/2011 01:07 PM ben leinfelder

only attempt to unlock a lock if it was created (in the finally block)

6803 12/16/2011 04:24 PM ben leinfelder

new jars with many changes -- including new CN methods: ping, describe, listChecksumAlgorithm. Removed MN.setAccessPolicy. Refactored CN.setOwner() to CN.setRightsHolder().

6792 12/16/2011 07:29 AM Chris Jones

Change setReplicationStatus() to drop serialVersion and report the failure exception message in the CN log.

6777 12/13/2011 12:22 PM ben leinfelder

updated D1 API -- removed Permission.REPLICATE and associated parameters

6757 12/09/2011 09:05 AM Chris Jones

If a member node cannot be found in the node list matching the targetNodeSubject given in isNodeAuthorized(), throw a ServiceFailure exception.

6717 11/30/2011 02:22 PM Chris Jones

Add log statements for each call to ILock.unlock() for debugging.

6703 11/29/2011 10:10 AM Chris Jones

When using ILock.lock(), get a lock on the string value of the Identifier, not the Identifier object itself. Hazelcast locking won't work otherwise.

6702 11/29/2011 08:55 AM Chris Jones

Use the Hazelcast ILock mechanism to lock the system metadata identifier rather than using IMap.lock(pid).

6688 11/23/2011 10:19 AM ben leinfelder

when comparing D1 Subject objects, use the equals() method not direct string comparison
https://redmine.dataone.org/issues/2050