You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Mike Matrigali (JIRA)" <ji...@apache.org> on 2012/09/14 18:54:07 UTC
[jira] [Updated] (DERBY-5766) BaseDataFileFactory.boot() should log
the exception that causes it to boot the database read only
[ https://issues.apache.org/jira/browse/DERBY-5766?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mike Matrigali updated DERBY-5766:
----------------------------------
Labels: derby_triage10_10 (was: )
triage for 10.10
kathey can up add an update on where you are with this issue.
> BaseDataFileFactory.boot() should log the exception that causes it to boot the database read only
> --------------------------------------------------------------------------------------------------
>
> Key: DERBY-5766
> URL: https://issues.apache.org/jira/browse/DERBY-5766
> Project: Derby
> Issue Type: Bug
> Components: Store
> Affects Versions: 10.9.1.0
> Reporter: Kathey Marsden
> Assignee: Kathey Marsden
> Labels: derby_triage10_10
>
> In BaseDataFileFactory.boot() there is code that tries to write to the lock file. If it cannot, and gets an IOException it assumes the database is read only. I think that we should log that the database is booting read only and why and if it is not specifically a permission error log the exception stack trace.
>
> fileLockOnDB = fileLock.getRandomAccessFile( "rw");
> fileLock.limitAccessToOwner();
> // write it out for future reference
> fileLockOnDB.writeUTF(myUUID.toString());
> fileLockOnDB.sync();
> fileLockOnDB.seek(0);
> // check the UUID
> UUID checkUUID = uuidFactory.recreateUUID(fileLockOnDB.readUTF());
> if (!checkUUID.equals(myUUID))
> {
> throw StandardException.newException(
> SQLState.DATA_MULTIPLE_JBMS_ON_DB, databaseDirectory);
> }
> }
> catch (IOException ioe)
> {
> // probably a read only db, don't do anything more
> readOnly = true;
> try
> {
> if (fileLockOnDB != null)
> fileLockOnDB.close();
> }
> catch (IOException ioe2)
> { /* did the best I could */ }
> fileLockOnDB = null;
> return;
> }
> I think this code can be exercised by creating a database and exiting without shutdown. Then change permission on the db.lck and dbex.lck files. It occurs often in the field when multiple users with incompatible permissions/umasks access the derby database.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira