Bug #8100
CN synchronization fails when attempting to synchronize with a modified obsoletes field from a V2 member node
100%
Description
When attempting to synchronize a series of objects from the LTER GMN MN (v2) that had their obsolescence attributes modified (obsoletes, obsoletedBy, and both), the CN synchronize process threw the following exception:
[ERROR] 2017-05-23 05:36:02,854 (V2TransferObjectTask:call:259) Task-urn:node:LTER-https://pasta.lternet.edu/package/metadata/eml/knb-lter-arc/20036/4 - SynchronizationFailed:
Synchronization task of [PID::] https://pasta.lternet.edu/package/metadata/eml/knb-lter-arc/20036/4 [::PID] failed. Cause: InvalidRequest: Illegal changes attempted to the fiel
ds: obsoletes
org.dataone.service.exceptions.SynchronizationFailed: Synchronization task of [PID::] https://pasta.lternet.edu/package/metadata/eml/knb-lter-arc/20036/4 [::PID] failed. Cause:
InvalidRequest: Illegal changes attempted to the fields: obsoletes
at org.dataone.cn.batch.synchronization.tasks.SyncFailedTask.createSynchronizationFailed(SyncFailedTask.java:97)
at org.dataone.cn.batch.synchronization.tasks.V2TransferObjectTask.processV2AuthoritativeUpdate(V2TransferObjectTask.java:1235)
at org.dataone.cn.batch.synchronization.tasks.V2TransferObjectTask.processUpdates(V2TransferObjectTask.java:1001)
at org.dataone.cn.batch.synchronization.tasks.V2TransferObjectTask.processTask(V2TransferObjectTask.java:423)
at org.dataone.cn.batch.synchronization.tasks.V2TransferObjectTask.call(V2TransferObjectTask.java:211)
at org.dataone.cn.batch.synchronization.tasks.V2TransferObjectTask.call(V2TransferObjectTask.java:113)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
It was decided at the CCIT maintenance call on 23 May 2017 that this process should be allowed and that the exception was likely a boog.
Associated revisions
fixes #8100 in trunk: allowing obsoletes to change from null to a value. (branching issues will be handled by the Metacat datastore).
fixes #8100 in trunk: allowing obsoletes to change from null to a value. (branching issues will be handled by the Metacat datastore).
fixes #8100 in 2.3 branch: allowing obsoletes to change from null to a value. (branching issues will be handled by the Metacat datastore).
fixes #8100 in 2.3 branch: allowing obsoletes to change from null to a value. (branching issues will be handled by the Metacat datastore).
History
#1 Updated by Rob Nahf over 7 years ago
- % Done changed from 0 to 30
- Status changed from New to In Progress
The rule to disallow modifications to the obsoletes field in synchronization was originally put in place to prevent branching obsoletes chains.
This check isn't needed, however, since the cn.updateSystemMetadata call will check for branching. (line 1839 edu.nceas.metacat.dataone.D1NodeService#updateSystemMetadata)
Will change in trunk and 2.3 branch d1_synchronization project / d1-process-daemon. Not sure at this point if it will go into a patch release or the next minor release.
#2 Updated by Rob Nahf over 7 years ago
- Category deleted (
d1_synchronization) - Milestone set to None
- Project changed from CN REST to Infrastructure
#3 Updated by Rob Nahf over 7 years ago
- % Done changed from 30 to 50
- Status changed from In Progress to Testing
committed the fix to trunk and 2.3 branch: allowing transition from null to a value. the cn rest service will handle potential branching issues, and there seems to be a good error message there.
#4 Updated by Rob Nahf over 7 years ago
- Status changed from Testing to Closed
- % Done changed from 50 to 100
Applied in changeset java-client:d1client|r18826.
#5 Updated by Dave Vieglais over 7 years ago
- Target version set to CCI-2.3.5
#6 Updated by Jing Tao over 7 years ago
- Category set to d1_synchronization