db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kathey Marsden (JIRA)" <j...@apache.org>
Subject [jira] [Created] (DERBY-5766) BaseDataFileFactory.boot() should log the exception that causes it to boot the database read only
Date Wed, 16 May 2012 16:49:02 GMT
Kathey Marsden created DERBY-5766:
-------------------------------------

             Summary: 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.0.0
            Reporter: Kathey Marsden


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: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message