20.2.17での変更点

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

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

  1. サード・パーティ製ライブラリを最新バージョンに更新しました。

  2. 極端な状況で、他のすべてのRNが停止しているか到達不能であるためにRNがネットワーク・リストアに適したフィーダを見つけられない場合、RNは中止されますが、プロセスは終了されません。これにより、環境がリストアされず、RNプロセスが事実上ハングし、リクエストを処理できず、明示的に強制終了して再起動する必要があります。RNが終了すると、SNAがネットワーク・リストアを再試行するためにクリーンなプロセス状態でRNを再起動するように、動作が変更されました。

    [KVSTORE-610]
  3. SNAのログの次の代表的なエントリに示されているように、SNAにSessionAccessExceptionがあると、SNAがSNでマスターのバランス調整機能を停止していました。

    ...
    2020-08-10 00:27:33.875 UTC SEVERE [sn5] MasterRebalanceThread thread exiting due to exception.
    ...
    2020-08-10 00:27:33.878 UTC INFO [sn5] Master balance manager shutdown
    2020-08-10 00:27:33.878 UTC INFO [sn5] MasterRebalanceThread thread exited.
    ...

    SNAはSessionAccessExceptionを処理し、操作を再試行するようになりました。

    [KVSTORE-595]
  4. レプリケーション・ノードの可変JEパラメータを設定しても、ノードが明示的に再起動されないかぎり効果がない問題が修正されました。この問題は、リリース20.2.16で発生しました。

    [KVSTORE-574]
  5. ストレージ・ノードのホストの未解決ネットワーク・アドレスが原因で、RequestTimeoutExceptionによりリクエストが失敗する可能性がある問題を修正しました。この問題は永続的なため、発生すると、クライアントが再起動されるまで以降のすべてのクライアント・コールがタイムアウトになっていました。クライアント・ロギングが有効になっている場合、ロギング出力に次のような例外が含まれる可能性があります。

    2020-08-12 13:09:40.047 UTC SEVERE - Uncaught exception in thread:KV c-5287366135758798770 RepNodeStateUpdateThread_Updater_1
    java.nio.channels.UnresolvedAddressException
        at oracle.kv.impl.async.AbstractCreatorEndpoint.startDialog(AbstractCreatorEndpoint.java:87)
        at oracle.kv.impl.async.AsyncVersionedRemoteInitiator.startDialog(AsyncVersionedRemoteInitiator.java:131)
        at oracle.kv.impl.async.AsyncVersionedRemoteInitiator.getSerialVersion(AsyncVersionedRemoteInitiator.java:102)
        at oracle.kv.impl.async.registry.ServiceRegistryInitiator.getSerialVersion(ServiceRegistryInitiator.java:53)
        at oracle.kv.impl.async.AsyncVersionedRemoteAPI.computeSerialVersion(AsyncVersionedRemoteAPI.java:111)
        at oracle.kv.impl.async.registry.ServiceRegistryAPI.access$000(ServiceRegistryAPI.java:47)
        at oracle.kv.impl.async.registry.ServiceRegistryAPI$Factory.wrap(ServiceRegistryAPI.java:152)
        at oracle.kv.impl.util.registry.AsyncRegistryUtils.getRegistry(AsyncRegistryUtils.java:354)
        at oracle.kv.impl.util.registry.AsyncRegistryUtils.getRequestHandler(AsyncRegistryUtils.java:314)
        at oracle.kv.impl.api.rgstate.RepNodeState$AsyncReqHandlerRef.getRequestHandler(RepNodeState.java:1179)
        at oracle.kv.impl.api.rgstate.RepNodeState$AsyncReqHandlerRef.resolveInternal(RepNodeState.java:1138)
        at oracle.kv.impl.api.rgstate.RepNodeState$AsyncReqHandlerRef.resolve(RepNodeState.java:1083)
        at oracle.kv.impl.api.rgstate.RepNodeState.resolveReqHandlerRef(RepNodeState.java:251)
        at oracle.kv.impl.api.rgstate.UpdateThread$ResolveHandler.run(UpdateThread.java:322)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)
    [KVSTORE-523]