[ 
https://issues.apache.org/jira/browse/DERBY-5312?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13064540#comment-13064540
 ] 

Dag H. Wanvik commented on DERBY-5312:
--------------------------------------

Thanks for looking at this Mike! I agree that closeContainer should be 
synchronized on the container w.r.t handling fileData, since it will be 
accessed by other threads during IO which are oblivious to the reopening taking 
place. All such use cases are synchronized on "this", or are related to 
creation and opening.  As far as I can see, closeContainer doesn't touch any 
other container state variables. "isStub" is method local (once defined and 
used on CREATE_CONTAINER_ACTION, once defined and used in 
OPEN_CONTAINER_ACTION), so that should be OK.

As for simplifying to just to just resetting fileData, I'll look into if we 
could do that. "file" is also method local.and "fileName" is only set in 
OPEN_CONTAINER_ACTION and only ever used as a string when throwing exceptions, 
so it should be possible to simplify reopening.

> InterruptResilienceTest failed with ERROR 40XD1: Container was opened in 
> read-only mode.
> ----------------------------------------------------------------------------------------
>
>                 Key: DERBY-5312
>                 URL: https://issues.apache.org/jira/browse/DERBY-5312
>             Project: Derby
>          Issue Type: Bug
>          Components: Store
>    Affects Versions: 10.9.0.0
>         Environment: Oracle Solaris 11 Express snv_151a X86
> java version "1.7.0"
> Java(TM) SE Runtime Environment (build 1.7.0-b147)
> Java HotSpot(TM) Server VM (build 21.0-b17, mixed mode)
>            Reporter: Knut Anders Hatlen
>            Assignee: Dag H. Wanvik
>         Attachments: derby-5312a.diff, derby.log, error-stacktrace.out
>
>
> WorkerThread failed with this exception:
> ERROR 40XD1: Container was opened in read-only mode.
>       at 
> org.apache.derby.iapi.error.StandardException.newException(StandardException.java:276)
>       at 
> org.apache.derby.impl.store.raw.data.BaseContainer.use(BaseContainer.java:562)
>       at 
> org.apache.derby.impl.store.raw.data.BaseContainerHandle.useContainer(BaseContainerHandle.java:834)
>       at 
> org.apache.derby.impl.store.raw.data.BaseDataFileFactory.openContainer(BaseDataFileFactory.java:773)
>       at 
> org.apache.derby.impl.store.raw.data.BaseDataFileFactory.openContainer(BaseDataFileFactory.java:589)
>       at 
> org.apache.derby.impl.store.raw.xact.Xact.openContainer(Xact.java:1316)
>       at 
> org.apache.derby.impl.store.access.btree.OpenBTree.init(OpenBTree.java:382)
>       at 
> org.apache.derby.impl.store.access.btree.BTreeController.init(BTreeController.java:1225)
>       at 
> org.apache.derby.impl.store.access.btree.index.B2IController.init(B2IController.java:140)
>       at org.apache.derby.impl.store.access.btree.index.B2I.open(B2I.java:824)
>       at 
> org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(RAMTransaction.java:476)
>       at 
> org.apache.derby.impl.store.access.RAMTransaction.openCompiledConglomerate(RAMTransaction.java:1293)
>       at 
> org.apache.derby.impl.sql.execute.IndexChanger.openIndexCC(IndexChanger.java:507)
>       at 
> org.apache.derby.impl.sql.execute.IndexChanger.insertAndCheckDups(IndexChanger.java:438)
>       at 
> org.apache.derby.impl.sql.execute.IndexChanger.doInsert(IndexChanger.java:383)
>       at 
> org.apache.derby.impl.sql.execute.IndexChanger.insert(IndexChanger.java:590)
>       at 
> org.apache.derby.impl.sql.execute.IndexSetChanger.insert(IndexSetChanger.java:268)
>       at 
> org.apache.derby.impl.sql.execute.RowChangerImpl.insertRow(RowChangerImpl.java:453)
>       at 
> org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(InsertResultSet.java:999)
>       at 
> org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:519)
>       at 
> org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:436)
>       at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:317)
>       at 
> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1242)
>       at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1686)
>       at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java:308)
>       at 
> org.apache.derbyTesting.functionTests.tests.store.InterruptResilienceTest$WorkerThread.run(InterruptResilienceTest.java:449)
> I was testing a patch for DERBY-4620 (estimate-sizes.diff), but I think the 
> failure isn't related to those changes.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to