22.1.22での変更点
Oracle NoSQL Databaseリリース22.1.22 Enterprise Editionでは次の変更が行われました。
トピック
バグとパフォーマンスの修正
- KVStoreハンドルがUnknownHostExceptionまたはUnresolvedAddressExceptionの発生下で繰り返し作成されるとsock typeファイル記述子がリークするという問題を修正しました。
[KVSTORE-1515]
- 問合せを実行するアプリケーションのダイレクトJavaドライバでスレッド・デッドロックが起こる可能性があるという問題を修正しました。この問題はhttpproxy(問合せにダイレクトJavaドライバが使用される)で確認されました。ただし、それ固有の問題ではありません。結果として、アプリケーションがハングします。
jstack
ユーティリティを使用してアプリケーションのスレッド・ダンプを作成すると、デッドロックの2つの側面を表す2つの特性のスタック・トレースが表示されます。"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)
および:
[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)
- 初期の21.1リリースで修正された不具合による影響が、ユーザーが認識できる形で発生する可能性があることが判明しました。複数リージョン表のチェックポイント処理により、レプリケーション中に一部のデータが失われる場合があります。つまり、あるリージョンからの書込みをリモート・リージョンにレプリケートできない場合があります。
[KVSTORE-772]
- 初期の21.1リリースで修正された不具合による影響が、ユーザーが認識できる形で発生する可能性があることが判明しました。複数リージョン表のチェックポイント処理により、データ・レプリケーションでデッドロックが発生する場合があります。複数リージョン表に不具合があった場合、あるリージョンへの書込みによってリモート・リージョンへのレプリケーションが停止され、アクティブでないことが原因でリモート・リージョンからのネットワーク接続が切断される可能性があります。
[KVSTORE-1525]