Sergio Cruz created DERBY-7156:
----------------------------------
Summary: ERROR XSDAO: Internal error: Page attempted latched twice
when executing parallel accesses to the same binary column
Key: DERBY-7156
URL: https://issues.apache.org/jira/browse/DERBY-7156
Project: Derby
Issue Type: Bug
Affects Versions: 10.16.1.1, 10.15.2.0, 10.15.1.3
Environment: OS name: Windows 10
OS architecture: amd64
OS version: 10.0
Java Version: 17.0.7
Java Vendor: Eclipse Adoptium
Reporter: Sergio Cruz
Attachments: TestTx.java, derby.log, sysinfo.txt
{{When executing parallel _SELECT_ statements accessing to a table with a
binary column, sometimes an error indicating that a page was attempted latched
twice is received while reading the value of the binary column.}}
{{This error _ERROR XSDAO: Internal error: page Page(334,Container(0, 1456))
attempted latched twice_ is received when connection is inside a transaction.}}
{{In case the connection is not in a transaction, the error is different:
_ERROR 40XD0: Container has been closed_}}
I attach a Java class for reproducing the issue. It has the following lines for
testing both versions of the error
{code:java}
//conn.setAutoCommit(true); //ERROR 40XD0: Container has been closed.
conn.setAutoCommit(false); //ERROR XSDAO: Internal error: page
Page(334,Container(0, 1392)) attempted latched twice. {code}
This is an example of the received error.
{noformat}
Exception in thread "pool-1-thread-1" java.lang.RuntimeException:
java.io.IOException: ERROR XSDAO: Internal error: page Page(334,Container(0,
1456)) attempted latched twice.
at org.scruz.derby.TestTx$Access.run(TestTx.java:60)
at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.io.IOException: ERROR XSDAO: Internal error: page
Page(334,Container(0, 1456)) attempted latched twice.
at
org.apache.derby.impl.store.raw.data.OverflowInputStream.fillByteHolder(OverflowInputStream.java:168)
at
org.apache.derby.impl.store.raw.data.BufferedByteHolderInputStream.read(BufferedByteHolderInputStream.java:37)
at java.base/java.io.FilterInputStream.read(FilterInputStream.java:82)
at java.base/java.io.FilterInputStream.read(FilterInputStream.java:82)
at java.base/java.io.FilterInputStream.read(FilterInputStream.java:82)
at
org.apache.derby.iapi.services.io.CloseFilterInputStream.read(CloseFilterInputStream.java:60)
at org.scruz.derby.TestTx$Access.run(TestTx.java:55)
... 3 more
Caused by: ERROR XSDAO: Internal error: page Page(334,Container(0, 1456))
attempted latched twice.
at
org.apache.derby.shared.common.error.StandardException.newException(StandardException.java:300)
at
org.apache.derby.shared.common.error.StandardException.newException(StandardException.java:295)
at
org.apache.derby.impl.store.raw.data.BasePage.setExclusive(BasePage.java:1710)
at
org.apache.derby.impl.store.raw.data.BaseContainer.latchPage(BaseContainer.java:527)
at
org.apache.derby.impl.store.raw.data.FileContainer.latchPage(FileContainer.java:3532)
at
org.apache.derby.impl.store.raw.data.FileContainer.getUserPage(FileContainer.java:2551)
at
org.apache.derby.impl.store.raw.data.FileContainer.getPage(FileContainer.java:2593)
at
org.apache.derby.impl.store.raw.data.BaseContainerHandle.getPage(BaseContainerHandle.java:319)
at
org.apache.derby.impl.store.raw.data.OverflowInputStream.fillByteHolder(OverflowInputStream.java:151)
... 9 more{noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)