Changes in 22.1.22
The following changes were made in Oracle NoSQL Database Release 22.1.22 Enterprise Edition.
Topics
Bug and Performance Fixes
- Fixed an issue that if KVStore handles were repeatedly created
under UnknownHostException or UnresolvedAddressException, sock type file
descriptors would be leaked.
[KVSTORE-1515]
- Fixed a problem that could cause a thread deadlock in the direct
Java driver for applications that perform queries. The problem was seen in the
httpproxy, which uses the direct Java driver for queries, but is not specific to
it. The result was that the application would hang.
Using the
jstack
utility to create a thread dump for the application showed two characteristic stack traces, which represent the two sides of the deadlock:"nioEventLoopGroup-3-11" #70 prio=10 os_prio=0 cpu=66.97ms elapsed=5790.89s tid=0x00007f6fdc017800 nid=0x9e in Object.wait() [0x00007f6fecbf3000] java.lang.Thread.State: RUNNABLE at oracle.kv.impl.api.table.FieldDefImpl.<clinit>(FieldDefImpl.java:90) at oracle.kv.impl.query.types.TypeManager.<clinit>(TypeManager.java:378) at oracle.kv.impl.query.compiler.FuncAndOr.<init>(FuncAndOr.java:38) at oracle.kv.impl.query.compiler.FunctionLib.<init>(FunctionLib.java:169) at oracle.kv.impl.query.compiler.CompilerAPI.<clinit>(CompilerAPI.java:41) at oracle.nosql.proxy.sc.TableUtils.getCallbackInfo(TableUtils.java:567) at oracle.nosql.proxy.DataService.handlePrepare(DataService.java:2032) at oracle.nosql.proxy.DataService$$Lambda$354/0x0000000800551840.handle(Unknown Source) at oracle.nosql.proxy.DataService.handleRequestWithContext(DataService.java:664) at oracle.nosql.proxy.DataService.handleRequestInternal(DataService.java:451) at oracle.nosql.proxy.DataService.handleRequest(DataService.java:424) at oracle.nosql.proxy.DataService.handleRequest(DataService.java:399) at oracle.nosql.proxy.DataService.handleRequest(DataService.java:355)
And:
[KVSTORE-1484]"nioEventLoopGroup-3-9" #66 prio=10 os_prio=0 cpu=124.03ms elapsed=5791.14s tid=0x00007f6fdc015800 nid=0x98 in Object.wait() [0x00007f7163aef000] java.lang.Thread.State: RUNNABLE at oracle.kv.impl.api.table.FieldDefSerialization.readTimestamp(FieldDefSerialization.java:433) at oracle.kv.impl.api.table.FieldDefSerialization.readFieldDef(FieldDefSerialization.java:346) at oracle.kv.impl.api.table.FieldDefSerialization.readFieldDef(FieldDefSerialization.java:261) at oracle.kv.impl.api.table.FieldDefSerialization.readRecord(FieldDefSerialization.java:380) at oracle.kv.impl.api.table.FieldDefSerialization.readFieldDef(FieldDefSerialization.java:348) at oracle.kv.impl.api.table.FieldDefSerialization.readFieldDef(FieldDefSerialization.java:261) at oracle.kv.impl.query.runtime.PlanIter.deserializeFieldDef(PlanIter.java:1184) at oracle.kv.impl.query.runtime.ReceiveIter.<init>(ReceiveIter.java:367) at oracle.kv.impl.query.runtime.PlanIter.deserializeIter(PlanIter.java:876) at oracle.kv.impl.api.query.PreparedStatementImpl.<init>(PreparedStatementImpl.java:550) at oracle.nosql.proxy.DataServiceHandler.deserializePreparedQuery(DataServiceHandler.java:810) at oracle.nosql.proxy.DataService.deserializePreparedQuery(DataService.java:2181) at oracle.nosql.proxy.DataService.handleQuery(DataService.java:1661) at oracle.nosql.proxy.DataService$$Lambda$353/0x0000000800552440.handle(Unknown Source) at oracle.nosql.proxy.DataService.handleRequestWithContext(DataService.java:664) at oracle.nosql.proxy.DataService.handleRequestInternal(DataService.java:451) at oracle.nosql.proxy.DataService.handleRequest(DataService.java:424)
- Discovered that a bug fixed as of the initial 21.1 release can have
user-visible consequences. The checkpointing of a multi-region table might cause
some data to be lost during replication. In other words, some writes from one
region might not be able to replicate to remote regions.
[KVSTORE-772]
- Discovered that a bug fixed as of the initial 21.1 release can
have user-visible consequences. The checkpointing of a multi-region table might
cause deadlock in data replication. If multi-region table runs into the bug, the
writes made to one region may stop replication to remote regions, and network
connections from remote regions might drop due to inactivity.
[KVSTORE-1525]