Project

General

Profile

Decision #6705

What behavior should be when a user request a sid when all the pids matching the sid were obsoleted

Added by Jing Tao over 9 years ago. Updated over 9 years ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
-
Target version:
Start date:
2014-12-10
Due date:
% Done:

0%

Milestone:
None
Sprint:

Description

Here is the definition of "current" in this page http://jenkins-1.dataone.org/jenkins/job/API%20Documentation%20-%20trunk/ws/api-documentation/build/html/design/ContentMutability.html :

DataONE defines the latest version as “current” if the object in question has a matching SID and no value in the “obsoletedBy” field, regardless if it is “archived” or not. Consumers of the data should inspect the system metadata and/or search results to determine if the object has been explicitly archived if they are concerned about using stale data.

We have two pids with the same sid and their system metadata looks like:

pid sid obsoletes obsoletedBy
p1 s1 p2
p2 s1 p1

If we call get(s1), p2 should be returned base on the above definition.

Now, we insert another object p3 with the update method. The p3 object has another sid - s2 and it obsoletes p2. So the system metadata will look like:
pid sid obsoletes obsoletedBy
p1 s1 p2
p2 s1 p1 p3
p3 s2 p2

If we call get(s2), p3 should be returned.

If we call get(s1), what should be returned? The p2 or the NotFound exception?
Base on the above definition, I believe that the NotFound exception should be returned since there is no a pid which matches the s1 and does't have a value on the "obsoletedBy".

History

#1 Updated by Jing Tao over 9 years ago

  • Tracker changed from Task to Decision
  • Target version set to CCI-2.0.0

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 14.8 MB)