22.1.22での変更点

Oracle NoSQL Databaseリリース22.1.22 Enterprise Editionでは次の変更が行われました。

バグとパフォーマンスの修正

  1. KVStoreハンドルがUnknownHostExceptionまたはUnresolvedAddressExceptionの発生下で繰り返し作成されるとsock typeファイル記述子がリークするという問題を修正しました。

    [KVSTORE-1515]

  2. 問合せを実行するアプリケーションのダイレクト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)
    および:
    "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)
    [KVSTORE-1484]
  3. 初期の21.1リリースで修正された不具合による影響が、ユーザーが認識できる形で発生する可能性があることが判明しました。複数リージョン表のチェックポイント処理により、レプリケーション中に一部のデータが失われる場合があります。つまり、あるリージョンからの書込みをリモート・リージョンにレプリケートできない場合があります。

    [KVSTORE-772]

  4. 初期の21.1リリースで修正された不具合による影響が、ユーザーが認識できる形で発生する可能性があることが判明しました。複数リージョン表のチェックポイント処理により、データ・レプリケーションでデッドロックが発生する場合があります。複数リージョン表に不具合があった場合、あるリージョンへの書込みによってリモート・リージョンへのレプリケーションが停止され、アクティブでないことが原因でリモート・リージョンからのネットワーク接続が切断される可能性があります。

    [KVSTORE-1525]