DSpace Fails to Check if a Handle is already assigned before assigning a new 
handle
-----------------------------------------------------------------------------------

                 Key: DS-712
                 URL: https://jira.duraspace.org/browse/DS-712
             Project: DSpace
          Issue Type: Bug
          Components: DSpace API
    Affects Versions: 1.7.0
            Reporter: Tim Donohue
            Assignee: Tim Donohue
            Priority: Blocker
             Fix For: 1.7.0


Not sure how this hasn't come up before, but I just noticed this in terms of 
testing the new AIP Backup/Restore functionality (DS-466).

DSpace currently makes a highly flawed assumption when assigning new Handles.  
It will *always* assign a Handle equal to the next available value in the 
'handle_seq' (which is just the max value of 'handle_id' in the 'handle' 
table).  See the HandleManager.createHandle() method.

This becomes extremely fragile when you have content which has been migrated or 
restored from another DSpace (for example, via the AIP backup/restore feature). 
  In those instances, it you may end up restoring/migrating content that looks 
like this:

handle_id = 44 (or whatever the next value in 'handle_seq' is)
handle = 123456789/50 (or whatever the restored handle should be)

Once the value of 'handle_id' reaches the suffix value of a restored handle, 
then you will run into database conflicts & will be unable to submit any new 
content into DSpace.  So, in the above example, as soon as 'handle_seq" gets to 
the value of 50, Dspace will attempt to assign a new handle of '123456789/50' 
to the next object created.  However, as that handle is already in use, the new 
object will always fail to be created.  In other words, the DSpace system will 
fail to accept any new objects.

The fix would be to first ensure a handle is *not* already in use before 
assigning it -- essentially looking for the next available handle (rather than 
the next value of 'handle_seq") before assigning the handle.  However, I need 
to determine a reasonable way to locate the next available handle (preferably 
something that will scale relatively well for larger installs). 

Ideas / thoughts / brainstorms welcome.  I've marked this as a "Blocker" for 
DSpace 1.7.0, as it essentially makes your DSpace unusable if you were to 
encounter this bug.  (The only way to get around this issue if you encountered 
it is to manually increase your "handle_seq" so that it's greater than the 
largest handle suffix in your system.)


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://jira.duraspace.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
Dspace-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/dspace-devel

Reply via email to