Project

General

Profile

Statistics
| Revision:

# Date Author Comment
6456 09/19/2011 11:43 AM ben leinfelder

throw RuntimeExceptions when store() methods throw declared exceptions -- we want callers to put() to be alerted if there are errors.

6455 09/19/2011 10:18 AM ben leinfelder

move CNReplicationTask to the hazelcast package

6453 09/16/2011 05:04 PM ben leinfelder

implicit success for setting accessPolicy - trust that the MapStore persists the updated system metadata

6451 09/16/2011 04:42 PM ben leinfelder

check if system metadata exists rather than just the id mapping (before creating the entry)

6449 09/16/2011 03:23 PM ben leinfelder

only "save" to the shared system metadata map - not directly to the table store.

6447 09/16/2011 03:07 PM ben leinfelder

rely on Hazelcast to store the SystemMetadata locally for the node. Entry event listeners store the shared system metadata on their local node when alerted. TODO: remove old replication code that included system metadata xml when replicating scimeta and data

6446 09/16/2011 02:24 PM ben leinfelder

move bulk of the Hazelcast code into HazelcastService from CNodeService so that it is centrall located - easier to manage and configure

6445 09/16/2011 01:13 PM ben leinfelder

verify that the sysmeta checksum value matches the computed checksum value when calling create()
https://redmine.dataone.org/issues/1795

6443 09/16/2011 10:51 AM ben leinfelder

check for null pointers when adding system metadata/creating records during cn.create()

6442 09/16/2011 10:42 AM rnahf

removing unneeded class (never used)

6440 09/15/2011 01:46 PM rnahf

cleaned up mock tests on hzObjectPathMap. split out code for mocking a datastore into MockObjectPathMap.

6437 09/15/2011 12:57 PM ben leinfelder

initialize Hazelcast from the custom configuration when initializing the Metacat service.

6435 09/15/2011 10:40 AM ben leinfelder

handle entryAdded and entryUpdated the same - update the entry if it exists, otherwise create it

6434 09/15/2011 10:38 AM ben leinfelder

handle entryAdded (to hzSystemMetadata) to store sysmeta to local store when it is not already present

6433 09/15/2011 10:37 AM ben leinfelder

make isScienceMetadata() method public/static to be called throughout Metacat

6430 09/14/2011 05:30 PM ben leinfelder

add code to handle new entry when it is not on the local member of the sysmeta cluster

6429 09/14/2011 04:15 PM ben leinfelder

clean up imports - randome quicktime package had been included

6427 09/14/2011 03:17 PM ben leinfelder

comment out processCluster connections that use hzClient until that is finalized

6426 09/14/2011 03:16 PM ben leinfelder

use HashMap, HashSet instead of the Tree* classes that require Identifier objects implement Comparable

6424 09/14/2011 01:52 PM rnahf

configuring hazelcast tests

6421 09/14/2011 11:30 AM ben leinfelder

check for null session before looking at subject

6420 09/14/2011 10:02 AM rnahf

further refactoring and start of unit tests for hazelcast elements

6419 09/13/2011 04:13 PM ben leinfelder

use pending replication task queue to check if node is authorized for replication. moved from old ReplicationService code

6418 09/13/2011 03:44 PM ben leinfelder

save system metadata and/or science metadata and/or ORE objects to the local CN if needed.

6417 09/13/2011 03:29 PM rnahf

small code cleanup - removed unused instantiations of DBUtils.

6416 09/13/2011 02:47 PM rnahf

fixed logic wrt localID and docid. Implemented new method in IdentifierManager to getAllGUIDs from identifier table for implementation of loadAllKeys in ObjectPathMapLoader.

6415 09/13/2011 11:38 AM rnahf

further development of ObjectPathMapLoader.

6414 09/12/2011 02:48 PM rnahf

new class for refreshing the hazelcast map with metacat. Initial commit.

6412 09/12/2011 09:32 AM ben leinfelder

check session != null before checking authorization

6411 09/11/2011 06:41 PM Chris Jones

Add stub methods in CNodeService that implement the Hazelcast EntryListener interface: entryAdded(), entryRemoved(), entryUpdated(), and entryEvicted(). Add a listener to the hzSystemMetadata map so the CNodeService can respond to those events and create appropriate CNReplicationTask objects for distributed execution across the CN cluster. Again, stubs only so far.

6410 09/11/2011 06:27 PM Chris Jones

Minor cleanup - tabs to spaces.

6409 09/11/2011 06:26 PM Chris Jones

Enable CNodeService to access 1) the hzNodes map defined in the DataONE process cluster by becoming a Hazelcast client (hzClient) to that cluster and 2) the hzSystemMetadata map defined in the DataONE storage cluster by becoming a member to that cluster (using direct Hazelcast calls). Added fields for maintaining the DataONE cluster properties.

6407 09/11/2011 06:12 PM Chris Jones

Add in the Hazelcast Id generation namespace and an IdGenerator instance for task ids. Hazelcast will produce cluster-wide unique ids for the "task-ids" namespace, to be used when creating CNreplicationTask objects.

6405 09/11/2011 03:28 PM Chris Jones

Add a CNReplicationTask class that will be submitted to the CN storage cluster when there are changes to the object store involving system metadata, science metadata, and resource maps. When a new entry is added to the hzSystemMetadata map, a new data, science metadata, or resource map was added to the VO, and all CN cluster members need to be updated with the object and it's system metadata. This task is executed on each CN to replicate the information. If the event is an update to an existing system metadata entry, it may only involve a change to system metadata, or may involve a change to science metadata as well. The task will return with the PID of the object replicated, be it a sysmeta, scimeta, or resource object. Locking of the PID will be handled by the task.

6402 09/11/2011 12:20 PM Chris Jones

Catch D1nodeService up to the DataONE 0.6.4 schema where there is no ObjectFormat.isScienceMetadata() method, but rather ObjectFormat.getFormatType() where type is currently one of 'DATA, 'METADATA', or 'RESOURCE'.

6401 09/11/2011 12:12 PM Chris Jones

Modify HazelcastService to read configuration information from an on-disk file (not from a jar file). Added init() to start up the service (was calling doRefresh() before. We still need to decide if this is a refreshable service.

6399 09/08/2011 02:23 PM ben leinfelder

move HazelcastService to D1 package

6397 09/07/2011 05:16 PM ben leinfelder

changes for schema update (d1_common)

6395 09/06/2011 02:33 PM ben leinfelder

added HazelCast MapStore and MapLoader implementation for SystemMetadata

6394 09/06/2011 11:55 AM ben leinfelder

use InvalidRequest when the PID is not found. https://redmine.dataone.org/issues/1768

6391 09/02/2011 01:57 PM ben leinfelder

use Permission.REPLICATE not EXECUTE

6390 09/02/2011 01:41 PM ben leinfelder

check with the CN if replication is allowed for the object in question for getReplica()

6389 09/02/2011 12:45 PM ben leinfelder

add getReplica() implementation. same as get() but with different logging. seems silly, but maybe I missed something important that distinguishes this method.

6384 08/31/2011 02:36 PM Chris Jones

Update classes to use the DataONE 0.6.4 schema and types. Major changes involve using BigInteger vs long in SystemMetadata.size, and using ObjectFormatIdentifier rather than Object format.

6382 08/10/2011 04:24 PM Chris Jones

Insert system metadata after the data object is inserted.

6378 08/03/2011 10:46 AM ben leinfelder

latest D1 jars - changes include:
updateSystemMetadata() impl for CN
new identifier methods (generate is its own method)
removal of the resourceMap pointer from system metadata

6376 07/29/2011 08:14 AM Chris Jones

Update the d1 common java jar to include the changes to BaseException, and update MNodeService.synchronizationFailed() to use the BaseException.getNodeId() method to report which node the exception came from.

6373 07/28/2011 11:10 AM ben leinfelder

use correct enum method

6371 07/28/2011 10:50 AM ben leinfelder

refactor Constants

6367 07/28/2011 10:10 AM ben leinfelder

remove ServiceTypeUtil - replace with TypeMarshaller

6366 07/27/2011 04:25 PM ben leinfelder

use new "v1" types from DataONE

6362 07/20/2011 03:00 PM ben leinfelder

remove CrudService -- replaced by MNodeService and CNodeService

6358 07/20/2011 11:39 AM ben leinfelder

use the ObjectFormat Id (not toString()) to check against the configured science metadata formats

6354 07/19/2011 08:09 AM Chris Jones

Return the new pid (not the obsoleted pid) on update(), and set the correct system metadata.

6353 07/15/2011 07:11 AM Chris Jones

In D1NodeService.getLogRecords(), don't pass in null start and count params - set them to the defaults (0 and 1000).

6351 07/14/2011 09:25 PM Chris Jones

In MNodeService.getCapabilities(), update the properties to match those in metacat.properties. Flesh out the NodeHealth object, adding NodeState, Ping, and Status information. Flesh out the Synchronization object information, but for now, use mock values. TODO: This should be determined from configuration and on-the-fly information.

6347 07/14/2011 02:25 PM Chris Jones

In MNodeService.getCapabilities(), set the synchronization and replication properties of the node.

6345 07/14/2011 02:06 PM Chris Jones

In MNodeService.getCapabilities(), set the serviceAvailable for each service supported.

6343 07/14/2011 01:20 PM Chris Jones

In MNodeService.getCapabilities(), set the serviceVersion for each service supported.

6341 07/14/2011 09:15 AM ben leinfelder

check reservation before create/update

6340 07/14/2011 01:52 AM Chris Jones

Use D1 properties to set node values, and add the 'WAR VERSION' back into the node name for deployments.

6339 07/13/2011 03:09 PM ben leinfelder

add hasReservation() method (NotImplemented, however)

6337 07/12/2011 03:02 PM ben leinfelder

use objectFormatIdentifier for listObjects()
remove provisional system metadata indicator - Metacat will not implement reserveIdentifier()

6334 07/11/2011 11:46 AM ben leinfelder

consistently construct username/groups for MetacatHandler calls - also consistently call isAuthorized

6332 07/08/2011 04:48 PM ben leinfelder

provisional replicate() implementation -- does not check if the session's subject is "allowed" to do this.
the test also requires 2 servers -- right now it attempts to replicate with itself which will fail because of duplicate IDs

6331 07/08/2011 04:05 PM ben leinfelder

provisional version of getOperationStatistics() -- not clear if we are meant to aggregate by hour or by day

6330 07/08/2011 03:06 PM ben leinfelder

provisional getCapabilities() implementation. Much of the synchronization information and node health is omitted.

6323 07/08/2011 02:08 PM ben leinfelder

simplify the get() method -- no need to use temp files for this operation

6321 07/07/2011 03:14 PM ben leinfelder

implement d1 paging for the log record results

6313 07/07/2011 12:51 PM ben leinfelder

save systemmetadata when create() is called

6311 07/07/2011 12:18 PM ben leinfelder

allow very minimal system metadata for provisional entries (CN.reserveIdentifier)

6310 07/07/2011 11:05 AM Chris Jones

Fix a NullPointerException issue when the SubjectList in a Session is null.

6308 07/07/2011 05:45 AM Chris Jones

Add the missing URL delimiter when building the D1 base service URL.

6306 07/06/2011 04:29 PM ben leinfelder

allow the test to read the OFL docid

6304 07/06/2011 03:40 PM ben leinfelder

use docImpl getBytes() to preserve encoding
no need to catch an exception only to throw it (those I was playing around with looking up the fmt from the d1_common lib if it was not found on the server...but this is redundant with other client code)

6303 07/06/2011 01:35 PM ben leinfelder

remove resolve() test -- not implemented in Metacat

6302 07/06/2011 12:09 PM ben leinfelder

handle data objects (not sci meta) and also set the resulting pid so that create() can succeed

6300 07/06/2011 11:52 AM ben leinfelder

catch exceptions from system meta data query and throw service failure rather than swallowing them with an error msg

6298 07/06/2011 08:13 AM Chris Jones

Update getOperationStatistics() to reflect the change in the signature, using ObjectFormatIdentifier instead of ObjectFormat.

6294 07/05/2011 04:19 PM ben leinfelder

use super class' create() method
use string comparison for assertRelation method

6293 07/05/2011 04:18 PM ben leinfelder

beef up isAuthorized method to check for "public" access rules and also for the rights holder

6288 07/05/2011 12:33 PM Chris Jones

Use 'synchronization_failed' for the event string in synchronizationFailed(), and add a TODO to use the event enum when the 0.6.3 types are updated.

6286 07/05/2011 10:49 AM ben leinfelder

return all public objects for the search() method [for now]

6283 07/01/2011 05:21 PM ben leinfelder

add space to error message

6281 07/01/2011 05:01 PM ben leinfelder

add the old ecogrid query code (still commented out) from the old Rest handler

6278 07/01/2011 12:37 PM ben leinfelder

implement reserveIdentifier() and check whether the id is reserved when creating records (only allow the create when the Subject creating matches the Subject who reserved it -- currently stored in rightsHolder)

6276 07/01/2011 11:10 AM ben leinfelder

remove extraneous update() call when create() does the call for us

6261 06/30/2011 06:39 AM Chris Jones

Add placeholder NotImplemented exceptions for getOperationsStatistics() and getCapabilities() in MNodeService.

6260 06/30/2011 06:13 AM Chris Jones

Implement MNCore.ping() by testing for a successful database connection.

6259 06/29/2011 11:16 PM Chris Jones

Minor housekeeping - tabs to spaces.

6258 06/29/2011 11:15 PM Chris Jones

Implement update() in MNodeService. Handle both XML science metadata updates and data object updates. Keep system metadata up to date, and log the update event.

6257 06/29/2011 09:41 PM Chris Jones

Make isScienceMetadata() protected for access from subclasses.

6256 06/29/2011 09:36 PM Chris Jones

Add insertSystemMetadata() to D1NodeService, wrap the exception handling from calls to IdentifierManager.

6255 06/29/2011 09:25 PM Chris Jones

Add updateSystemMetadata() to D1NodeService as a helper method to wrap the exception handling from calls to IdentifierManager.

6254 06/29/2011 05:50 PM Chris Jones

At Ben's suggestion, add metacatUrl to D1NodeService and make it available to subclasses. Set the metacatUrl in the constructor using SystemUtil rather than all roll your own PropertyService calls. More concise. Also, log the delete event in MNodeService.delete().

6251 06/29/2011 05:07 PM Chris Jones

throw NotAllowed in MNodeService.delete() when isAuthorized() returns false.

6250 06/29/2011 04:59 PM Chris Jones

Implement the MNStorage.delete() MNodeService. There is debate about what permissions are needed to 'delete' an object (archive it in metacat terms): D1 'WRITE' (metacat 'write') or D1 CHANGE_PERMISSION (metacat 'all'). For now we are using CHANGE_PERMISSION until it is ironed out.

6245 06/29/2011 12:35 PM ben leinfelder

isAuthorized: check for nulls in Session subjects, catch any unexpected errors and deny access when in doubt

6242 06/29/2011 12:09 PM Chris Jones

Remove setParamsFromRequest() from D1NodeService. This was called (previously as CrudService) from ResourceHandler, but will be deprecated in favor of manually creating a param map for each method that needs to pass params on to MetacatHandler.

6241 06/29/2011 08:44 AM Chris Jones

Implement [MN|CN]Storage.create() in D1NodeService. Since MetacatHandler requires an IP for event logging, we pass in the metacat URL (hold over from CrudService). To do this in the abstract D1NodeService, change the constructors to take metacatUrl as a parameter and get the URL from the metacat properties file in getInstance() of the subclasses. Needs testing.