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