However, primary_bitstream_id is used by the application even in 1.5 to identify the case when only one bitstream should be exposed in the UI (for instance an Item containing a website in HTML). This is not functionality that has "gone away".

-Mark

On Dec 10, 2008, at 2:34 PM, Thornton, Susan M. (LARC-B702)[NCI INFORMATION SYSTEMS] wrote:

Wow! I just answered my own question, thanks to an idea I got from Brian’s reply to my question (“It seems to me I've seen that the primary_bitstream_id and the mets_bitstream_id are both unused fields, and should be Null.”…J Yes, the cleanup job DOES physically delete all the rows in the bitstream table where “deleted is true”. I ran the following SQL query to correct the relational integrity problems between the bundle and bitstream tables:

UPDATE bundle
   SET primary_bitstream_id = NULL
WHERE primary_bitstream_id > 0

Once I ran this query (it updated 7 rows in the bundle table), I was able to get “cleanup” to run to successful completion, and YES – it deleted all those rows in the bitstream table that were “marked” for deletion.

For those of you who either don’t have this problem or don’t KNOW you have this problem, look in dspace.log after your “cleanup” job runs. You may see something like:

2008-12-10 15:19:00,921 FATAL org.dspace.storage.bitstore.Cleanup @ Caught exception: org.postgresql.util.PSQLException: ERROR: update or delete on table "bitstream" violates foreign key constraint "$2" on table "bundle" Detail: Key (bitstream_id)=(43213) is still referenced from table "bundle". at org .postgresql .core .v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java: 1592) at org .postgresql .core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1327) at org .postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java: 193) at org .postgresql .jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452) at org .postgresql .jdbc2 .AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java: 351) at org .postgresql .jdbc2 .AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:305) at org .apache .commons .dbcp .DelegatingPreparedStatement .executeUpdate(DelegatingPreparedStatement.java:101) at org .apache .commons .dbcp .DelegatingPreparedStatement .executeUpdate(DelegatingPreparedStatement.java:101) at org .dspace .storage.rdbms.DatabaseManager.updateQuery(DatabaseManager.java:519) at org .dspace .storage.rdbms.DatabaseManager.updateQuery(DatabaseManager.java:547) at org .dspace .storage.rdbms.DatabaseManager.deleteByValue(DatabaseManager.java:702) at org.dspace.storage.rdbms.DatabaseManager.delete(DatabaseManager.java: 669) at org .dspace .storage .bitstore .BitstreamStorageManager.cleanup(BitstreamStorageManager.java:663) at org.dspace.storage.bitstore.Cleanup.main(Cleanup.java: 109)


The reason why you may not know you have the problem is because the cleanup cron does not check for return code after executing. I just happened to notice the above error in dspace.log one day and, after adding the following code to the cleanup cron, I began to see that cleanup never completed successfully:
****************************************************************************************************************
<original code>
# Shell script for cleaning the asset store.

# Get the DSPACE/bin directory
BINDIR=`dirname $0`

echo "Cleaning the asset store"

$BINDIR/dsrun org.dspace.storage.bitstore.Cleanup

<I added the following code:>
# Check to see if the program executed successfully
if [ "$?" -ne "0" ]; then
   echo "cleanup cron failed"
   exit 1
fi

echo "cleanup cron completed successfully!"
exit 0
*************************************************************************************************************

Thanks to everyone who responded to my post!
Happy Holidays!!
Sue

From: Thornton, Susan M. (LARC-B702)[NCI INFORMATION SYSTEMS] [mailto:[EMAIL PROTECTED] ]
Sent: Wednesday, December 10, 2008 3:24 PM
To: dspace-tech@lists.sourceforge.net
Cc: Smail, James W. (LARC-B702)[NCI INFORMATION SYSTEMS]
Subject: [Dspace-tech] "Cleanup" cron question

In DSpace 1.4.2, what exactly does the “cleanup” job do? For one thing, I think it deletes assetstore entries for online records in DSpace that have been deleted, however I’m wondering if it also deletes “replaced” bitstream rows? For example, let’s say a document for an Item is corrupt and you “delete” that document and upload a new one, the bitstream row for the original document doesn’t actually get deleted in DSpace – column bitstream.deleted gets set to “true”. Is it the cleanup job that is actually supposed to physically delete that old row in the database? If not, how/when does it actually get deleted? I just noticed that we have over 2,100 “duplicate” document names in the database, mostly with 1 record marked as “deleted=true” and one marked as “deleted=false”.

Also, has anyone reported having problems with “cleanup” failing due to referential integrity problems with the “bundle” table? We’ve had that problem for a looong time now and I just recently figured out how to correct it.
Thanks,
Sue


Sue Walker-Thornton
ConITS Contract
NASA Langley Research Center
Integrated Library Systems Application & Database Administrator
130 Research Drive
Hampton, VA  23666
Office: (757) 224-4074
Fax:    (757) 224-4001
Pager: (757) 988-2547
Email:  [EMAIL PROTECTED]

------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada. The future of the web can't happen without you. Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/_______________________________________________
DSpace-tech mailing list
DSpace-tech@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dspace-tech

~~~~~~~~~~~~~
Mark R. Diggory
http://purl.org/net/mdiggory/homepage



------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you.  Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
_______________________________________________
DSpace-tech mailing list
DSpace-tech@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dspace-tech

Reply via email to