shutdown with incorrect permission on log files shows
java.lang.NullPointerException at
org.apache.derby.impl.store.raw.log.LogToFile.flush(LogToFile.java:3964).
Should give bettter message.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Key: DERBY-4072
URL: https://issues.apache.org/jira/browse/DERBY-4072
Project: Derby
Issue Type: Bug
Components: Store
Affects Versions: 10.4.2.0, 10.3.3.0, 10.2.2.0, 10.1.3.1, 10.5.0.0
Reporter: Kathey Marsden
Priority: Minor
I recently saw case where a user was seeing the following error in the
derby.log when trying to shutdown their database.
New exception raised during cleanup null
java.lang.NullPointerException
at
org.apache.derby.impl.store.raw.log.LogToFile.flush(LogToFile.java:3964)
at
org.apache.derby.impl.store.raw.log.LogToFile.flush(LogToFile.java:1781)
at
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.flush(BaseDataFileFa
at
org.apache.derby.impl.store.raw.data.CachedPage.writePage(CachedPage.java:761
at
org.apache.derby.impl.store.raw.data.CachedPage.clean(CachedPage.java:610)
at
org.apache.derby.impl.services.cache.ConcurrentCache.cleanAndUnkeepEntry(Conc
at
org.apache.derby.impl.services.cache.ConcurrentCache.cleanCache(ConcurrentCac
at
org.apache.derby.impl.services.cache.ConcurrentCache.cleanAll(ConcurrentCache
at
org.apache.derby.impl.services.cache.ConcurrentCache.shutdown(ConcurrentCache
at
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.stop(BaseDataFileFac
at
org.apache.derby.impl.services.monitor.TopService.stop(TopService.java:405)
at
org.apache.derby.impl.services.monitor.TopService.shutdown(TopService.java:34
at
org.apache.derby.impl.services.monitor.BaseMonitor.shutdown(BaseMonitor.java:
at
org.apache.derby.impl.db.DatabaseContextImpl.cleanupOnError(DatabaseContextIm
at
org.apache.derby.iapi.services.context.ContextManager.cleanupOnError(ContextM
at
org.apache.derby.impl.jdbc.TransactionResourceImpl.cleanupOnError(Transaction
at
org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:584)
at
org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Driver40.java:68)
at org.apache.derby.jdbc.InternalDriver.connect(InternalDriver.java:238)
at
org.apache.derby.jdbc.AutoloadedDriver.connect(AutoloadedDriver.java:119)
at java.sql.DriverManager.getConnection(DriverManager.java:316)
at java.sql.DriverManager.getConnection(DriverManager.java:273)
It ended up that some of the log files did not have proper write permissions
because some operation on the database had been performed by root. They had
subsequently deleted their db.lck file so the database did not boot READ ONLY
as it would if the root owned db.lck file still existed and the symptom was
that they got this error on shutdown.
Clearly this was user error, but it would have been good if we gave a better
error message. To reproduce on Linux:
As a user with umask 0022, run the program
java MakeDB
this will make the databases wombat and create a table.
su root
run the program to insert data and remove the db.lck file:
java InsertALot
rm wombat/db.lck
go back to the original user
run the program:
java ConnectAndShutdown
The application gets the normal shutdown exception but if you look in derby.log
you will see the exception.
java.lang.NullPointerException
at
org.apache.derby.impl.store.raw.log.LogToFile.flush(LogToFile.java:3964)
...
I will attach the files.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.