add revision history to the generated ORE objects -- we use the revision history of the EML package as a basis because the each ORE revision mirrors the revision of the EML package. Add a placeholder for checking if an equivalent ORE map exists in the DataONE infrastructure - this will be a call to CN.search() that looks at the solr index for OREs based on the EML package ID.
Update the parameter names expected for listObjects() to reflect the MN API changes in the architecture docs.
Change the query semantics such that we implement the MN.listObjects() where the lower datetime bound is inclusive (greater than or equal to" and the upper datetime bound in exclusive (less than). This allows easier paging in client applications.
for test to compile, provide BaseException param for setReplicationStatus. I used a NotAuthorized instance.
adjust after refactoring tests that use EML queries
In the call to MNReplication.replicate(), call back to CNReplication.setReplicationStatus() and set the status to failed when we get local exceptions, exceptions from the source MN when calling getReplica(). Send back an exception with a description when setting the status. Add a private setReplicationStatus() method to refactor these calls out.
Modify CNresourceHandler.setReplicationStatus() to use the new API signature, including the failure BaseException that is parsed out of the MMP as a file section. Log the exception message. Since this is an asynchronous call, ReplicationManager won't see a failed status, but the MNAuditTask eventually will.
Add collectReplicationStatus() to CNResourcHandler to return the BaseException or it's subclass, if any, provided in the the call to setReplicationStatus. The exception will be reported on the CN.
Change setReplicationStatus() to drop serialVersion and report the failure exception message in the CN log.
Add new D1 jars with update CNreplication API changes to SetReplicationStatus().
query for deleted metadata when testing that replication communicated the deletion. to check data, we try to update the data object on the target node (which should fail)
add test for data locking
delete data and eml on the home Metacat and check that the change propagates to the target
set SystemMetadata.archived=true on MN.deleteThere is ongoing discussion on what the exact behavior should be here, but this mimics Metacat's delete-as-archive action.http://redmine.dataone.org/issues/882
In MNodeService.replicate(), check to see if we have a replica (via an out of band channel) before we call sourceMN.getReplica().
actually include the test in the suitehttp://bugzilla.ecoinformatics.org/show_bug.cgi?id=5520
EML replication test with insert, update and set accesshttp://bugzilla.ecoinformatics.org/show_bug.cgi?id=5520
only create guid->docid mapping during metadata replication if it does not already existhttp://bugzilla.ecoinformatics.org/show_bug.cgi?id=5520
do not treat access change as an update -- it should not attempt to retrieve the contents of the objecthttp://bugzilla.ecoinformatics.org/show_bug.cgi?id=5520
Change the ecogrid tag to 1.2.2.RC5.
only create guid->docid mapping during data replication if it does not already existhttp://bugzilla.ecoinformatics.org/show_bug.cgi?id=5520
remove xml_acccess.docid reference (oops)http://bugzilla.ecoinformatics.org/show_bug.cgi?id=5560
test update and set access during replication from A->Bhttp://bugzilla.ecoinformatics.org/show_bug.cgi?id=5520
updated D1 API -- removed Permission.REPLICATE and associated parameters
a minute for replication?
process system metadata before access rules (access control is now driven by GUID so the mapping needs to be there)
Change the key of query result cache. The key now has the real search value.
include SerialVersion in describe responsehttps://redmine.dataone.org/issues/2135NOTE: d1 jars should be replaced once all schema changes are finalized and the generate d1_common code is committed to svn
comment out B->A testhttp://bugzilla.ecoinformatics.org/show_bug.cgi?id=5520
use correct URLs for replication/Metacat client
simple tests for 2-way data replicationhttp://bugzilla.ecoinformatics.org/show_bug.cgi?id=5520
ROLLBACK: check for non-public session in Metacat before showing the registry formhttp://bugzilla.ecoinformatics.org/process_bug.cgi
check for non-public session in Metacat before showing the registry formhttp://bugzilla.ecoinformatics.org/process_bug.cgi
redirect to the registry form following successful login - but allow an override in case we only want to render the success and stay there (ajax call from main sanparks page).
include 'archived' system metadata element in backing DB store
include the logging level with configuring logger (with file appender) for replication and dataonehttp://bugzilla.ecoinformatics.org/show_bug.cgi?id=5534
add ; to end of update command
only update accessfileid for our new guid-based records
move latest postgres access upgrade statements to oracle scripthttp://bugzilla.ecoinformatics.org/show_bug.cgi?id=5560
include revision clause when updating the accessfileid on the xml_acccess table
remove docid column in favor of guidhttp://bugzilla.ecoinformatics.org/show_bug.cgi?id=5560
include "esa" context in the data registry URL.http://bugzilla.ecoinformatics.org/show_bug.cgi?id=5114
If a member node cannot be found in the node list matching the targetNodeSubject given in isNodeAuthorized(), throw a ServiceFailure exception.
Minor reformatting for readability.
fix tests:-insert default objectFormatList from d1_common (includes schemaLocation now)-calculate checksum for the system metadata using the ChecksumUtil in d1_common
update with latest d1_common/d1_lib (includes latest schema changes)
prepared statement toString() does not include quotes (') around the inserted values -- now the test reflects this.
only handle 100 (consecutive!) docId generations per millisecond, otherwise the generated docid part is bigger than Long.MAX_VALUE and Metacat cannot fully handle that.
Metacat now keeps track of permissions on a per-version basis -- the test reflects this change in behavior.http://bugzilla.ecoinformatics.org/show_bug.cgi?id=5560
check previous revision when attempting to update access control with EML 2.0.x docshttp://bugzilla.ecoinformatics.org/show_bug.cgi?id=5560
remove old access rules for a data object when they are being updated by rules contained in an EML document. Now the OnlineDataAccessTest EML 2.1.0 tests pass.http://bugzilla.ecoinformatics.org/show_bug.cgi?id=5560
construct the proper previousDocId when checking for update permission
for now, look up SystemMetadata directly from the table otherwise we won't have the latest access information. Need to refresh the in-memory copy everytime we edit the access policy via Metacat (includes EML parser)
check previous revision for permissions to update (includes data described by EML)
use correct "rev" column in xml_revisions table
refactor Metacat access handling to be on a per-revision basis so that it more closely aligns with the DataONE approachhttp://bugzilla.ecoinformatics.org/show_bug.cgi?id=5560
To avoid id generation conflicts happening at the same millisecond, append a 5 character random string to the end of the docid.
Remove header2, footer2 and left-nav2 files.
change the default scheduler and workflow run engine urls.
retry: add node name in the correct order for predicate navigationhttp://bugzilla.ecoinformatics.org/show_bug.cgi?id=5561
update test to reflect newer change:handle queries with predicates correctly.when docids are used in the return field look up, we need to make sure they are included in the values in the correct order for their corresponding parameter place holders (?)
add node name in the correct order for predicate navigationhttp://bugzilla.ecoinformatics.org/show_bug.cgi?id=5561
Use the absolute path for the change permission jsp page.
Add header style to distiguish header and normal row.
Make TPC link to use the same mechanism to open header and left panel.
handle queries with predicates correctly.when docids are used in the return field look up, we need to make sure they are included in the values in the correct order for their corresponding parameter place holders (?)
widen the third column.
close prepared statement only if not nullhttp://bugzilla.ecoinformatics.org/show_bug.cgi?id=5562
fixed a bug that using a wrong table name - acces_log.
fixed a bug that using acces_log table name.
Upgrade the hazelcast libraries to 126.96.36.199 from 188.8.131.52.
Use accessblock in setaccess method. So user can grant/revoke public readable access.
ensure that the revision list is ordered ascending in case someone changes the sql query without realizing that it matters...
set the byte size of the ORE map before adding it
set/update the obsoletes/obsoletedBy fields in system metadata so that we always have a complete revision history for each object.Note: ORE maps do not have revision history...yet(?)
order the revision list, ascending.
removing unused class -- can't find a reference to it and it's causing compilation errors for me.
for "all" permission, return a list of READ, WRITE, CHANGE_PERMISSION
generating ORE maps and creating/updating system metadata now. There are some Permission conversion issues to be worked out yet
look up access policy by guid or local idTODO: resolve the Metacat/EML "all" permission as it relates to DataONE (there is only READ, WRITE, CHANGE_PERMISSION). for now I am using CHANGE_PERMISSION when it is a Metacat "all"
make exception/error reporting clearer -- was getting lock messages when perhaps that was not the correct exception.
look up all docids is now a static method (ORE/SystemMetadata generation)
Add log statements for each call to ILock.unlock() for debugging.
Add new test method to test getAccessControl.
Add eml test file which contains access part.
evict the HazelCast SystemMetadata entry if we update the access control rules via Metacat's legacy API, otherwise stale SystemMetadata stays in memory instead of being looked up from the backing table store.
optionally include ORE generation/insertion into Metacat when generating SystemMetadatahttps://redmine.dataone.org/issues/2056
Set a default HazelcastInstance after init() is called, and use this instance in getLock() to acquire a lock in the cluster.
no need to cast docInfo entries to String -- they are all strings
set revision history, the create/update dates and the owner/submitter (correctly)
use shared method for looking up "docInfo" map -- both in Metacat replication and in D1 system metadata generation
make default formatting a little bit easier to read
reformat code -- no changes
refactor SystemMetadata creation into separate class from the MetacatHandler -- this will be shared by upgrade code and normal metacat api.
include all document revisions when generating "missing" system metadataTODO: revision graph captured in obsoletes/obsoletedBy
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.
Use the Hazelcast ILock mechanism to lock the system metadata identifier rather than using IMap.lock(pid).
simplify SystemMetadata generation -- will be done during Metacat upgrade for D1 features/support.