既知の問題

仮想スレッドに関するパフォーマンス問題

Java 21で導入された仮想スレッドからAPIメソッドが呼び出される場合は、Direct Java Driver APIを更新してそのパフォーマンスを最適化する必要があります。これらのパフォーマンス問題には、今後のリリースで対処する予定です。

[KVSTORE-2121]

ソフトウェアのアップグレード中にトポロジの変更が失敗することがある

ストアが新しいソフトウェア・バージョンにアップグレードされている間に変更が実行されると、パーティションの移行を含むストア・トポロジの変更が失敗する場合があります。新しいトポロジをデプロイする計画を実行し、パーティションの移行中に計画で問題が発生した場合は、ストアのノードで異なるソフトウェア・バージョンが実行されているかどうかを確認し、古いバージョンを実行しているノードをアップグレードしてから計画を再試行してください。

次のトポロジ・コマンドのいずれかを使用してトポロジを変更すると、パーティションの移行が必要になる場合があります。結果のトポロジをplan deploy - topologyコマンドでデプロイすると、計画がストア・ソフトウェア・バージョンのアップグレード時に実行された場合に失敗する可能性があります。パーティション移行を生成する可能性があるトポロジ・コマンドは、次のとおりです。

  • topology change-repfactor
  • topology contract
  • topology rebalance
  • topology redistribute

他のトポロジ・コマンドは、パーティションの移行を生成せず、この問題を引き起こしません。

トポロジのデプロイメントが失敗した場合、次のようなエラーを探すことにより、ソフトウェア・バージョンのアップグレード中のパーティションの移行に関連しているかどうかを確認できます。

Plan 24 ended with errors. Use "show plan -id 24" for more information
Plan Deploy Topo
Id:                    24
State:                 ERROR
Attempt number:        1
Started:               2020-04-10 15:19:59 UTC
Ended:                 2020-04-10 15:24:48 UTC
Plan failures:
	Failure 1: 17/MigratePartition PARTITION-2 from rg1 to rg2
	failed. target=rg2-rn1 state=ERROR java.lang.Exception:
	Migration of PARTITION-2 failed. Giving up after 10 attempt(s)

このようなパーティションの移行に関連する計画の障害が発生した場合、特にすべてのパーティション移行タスクで同様の障害が発生している場合は、'ping'または'verify topology'コマンドを使用してストアに関する情報を表示し、異なるストレージ・ノードが異なるメジャーまたはマイナー・ソフトウェア・バージョンで実行されているかどうかを確認します。その場合は、古いソフトウェアを実行しているノードを最新のバージョンにアップグレードしてから、'plan deploy - topology'コマンドを再試行してください。

このリリースでのマルチリージョン表の制限

このリリースのマルチリージョン表機能には、次の制限があります。

  • マルチリージョン表の行を挿入または更新するときにゼロ以外のTTLを指定することは、ドライバとストアの両方をリリース20.3以降にアップグレードした後にのみサポートされます。ローカル・ストアが完全にアップグレードされるまでは、失敗する可能性があります。さらに、複数リージョン・エージェントや、そのリージョンのストアがアップグレードされていない場合に、行がリモート・リージョンにレプリケートされると、TTLの有効期限が失われます。[#28165]

Streams APIおよびパーティションの移行中の順不同処理

アプリケーションが、複数のサブスクライバを持つサブスクリプションでStreams APIを使用し、パーティションの移行を伴う拡張度操作を実行する場合、アプリケーションはサブスクライバ間で操作を調整する必要がある場合があります。拡張度変更により、特定のキーに対して配信されているイベントが別のサブスクライバに切り替わることがあります。Streams APIは、2つのサブスクライバにイベントを適切な順序で配信しますが、サブスクライバがこれらのイベントに対するアクションを正しい順序で実行するようにするのはアプリケーションの責任です。将来のリリースでは、この調整の必要性をなくす予定です。

[#27541]

管理をホストするストレージ・ノードをデプロイするには、最小で5GBの空きディスク領域が必要

管理者をホストするストレージ・ノードが、空きディスク領域が5GB未満のシステムにデプロイされている場合、次の例外が発生します。

Connected to Admin in read-only mode
(JE 18.1.8) Database AdminSchemaVersion not found. (18.1.3)

ストレージ・ノードを正常にデプロイするには、少なくとも5GBの空きディスク領域があることを確認してください。これと同じ問題は、KVLiteをデプロイしたときに発生します。この制限は将来のリリースで削除される予定です。

[#26818]

ユーザーが管理ディレクトリ・サイズを管理する必要があり、すべての管理者を「RUNNING,UNKNOWN」状態にできる

すべての管理者にデフォルトで最大3GBのディスク領域が割り当てられます。これは、多くのインストールに十分な領域です。ただし、まれな状況では、特に管理者がディスクをストレージ・ノードと共有している場合は、この3GBの制限を変更する必要がある場合があります。詳細は、管理ディレクトリ・サイズの管理を参照してください。

管理者がディスク領域を使い果たすと、ディスク使用量がje.maxDiskまたはje.freeDiskの制限内にないため書込み操作が禁止されていることを示すエントリが管理ログに記録され、pingコマンドの出力に「RUNNING,UNKNOWN」状態にある管理者がすべて表示されます。管理ディレクトリ・サイズの管理の手順に従って、管理者を「RUNNING,MASTER」または「RUNNING,REPLICA」状態に戻します。

次に、管理者がディスク領域を使い果したことを示すpingコマンドとログ・エントリのサンプル出力を示します。
kv-> ping
Connected to Admin in read-only mode
Pinging components of store kvstore based upon topology sequence #106
90 partitions and 3 storage nodes
Time: 2018-04-03 08:20:22 UTC   Version: 18.3.0
Shard Status: healthy:3 writable-degraded:0 read-only:0 offline:0 total:3
Admin Status: read-only
Zone [name=Houston id=zn1 type=PRIMARY allowArbiters=false masterAffinity=false]
    RN Status: online:9 offline:0 maxDelayMillis:0 maxCatchupTimeSecs:0
Storage Node [sn1] on localhost:10000
    Zone: [name=Houston id=zn1 type=PRIMARY allowArbiters=false masterAffinity=false]
    Status: RUNNING   Ver: 18.3.0 2018-04-03 05:36:25 UTC  Build id: ec627ef967d6 Edition: Enterprise
        Admin [admin1]          Status: RUNNING,UNKNOWN
        Rep Node [rg1-rn1]      Status: RUNNING,REPLICA sequenceNumber:93 haPort:10011 delayMillis:0 catchupTimeSecs:0
        Rep Node [rg2-rn1]      Status: RUNNING,REPLICA sequenceNumber:93 haPort:10012 delayMillis:0 catchupTimeSecs:0
        Rep Node [rg3-rn1]      Status: RUNNING,MASTER sequenceNumber:92 haPort:10013
Storage Node [sn2] on localhost:11000
    Zone: [name=Houston id=zn1 type=PRIMARY allowArbiters=false masterAffinity=false]
    Status: RUNNING   Ver: 18.3.0 2018-04-03 05:36:25 UTC  Build id: ec627ef967d6 Edition: Enterprise
        Admin [admin2]          Status: RUNNING,UNKNOWN
        Rep Node [rg1-rn2]      Status: RUNNING,REPLICA sequenceNumber:93 haPort:11021 delayMillis:0 catchupTimeSecs:0
        Rep Node [rg2-rn2]      Status: RUNNING,MASTER sequenceNumber:93 haPort:11022
        Rep Node [rg3-rn2]      Status: RUNNING,REPLICA sequenceNumber:92 haPort:11023 delayMillis:0 catchupTimeSecs:0
Storage Node [sn3] on localhost:12000
    Zone: [name=Houston id=zn1 type=PRIMARY allowArbiters=false masterAffinity=false]
    Status: RUNNING   Ver: 18.3.0 2018-04-03 05:36:25 UTC  Build id: ec627ef967d6 Edition: Enterprise
        Admin [admin3]          Status: RUNNING,UNKNOWN
        Rep Node [rg1-rn3]      Status: RUNNING,MASTER sequenceNumber:93 haPort:12011
        Rep Node [rg2-rn3]      Status: RUNNING,REPLICA sequenceNumber:93 haPort:12012 delayMillis:0 catchupTimeSecs:0
        Rep Node [rg3-rn3]      Status: RUNNING,REPLICA sequenceNumber:92 haPort:12013 delayMillis:0 catchupTimeSecs:0

2018-04-03 08:18:52.254 UTC SEVERE [admin1] JE: Disk usage is not within
je.maxDisk or je.freeDisk limits and write operations are prohibited:
maxDiskLimit=2,097,152 freeDiskLimit=5,368,709,120
adjustedMaxDiskLimit=2,097,152 maxDiskOverage=83,086
freeDiskShortage=-6,945,071,104 diskFreeSpace=12,313,780,224
availableLogSize=-83,086 totalLogSize=2,180,238 activeLogSize=2,180,238
reservedLogSize=0 protectedLogSize=0 protectedLogSizeMap={}

2018-04-03 08:19:34.808 UTC SEVERE [admin2] JE: Disk usage is not within
je.maxDisk or je.freeDisk limits and write operations are prohibited:
maxDiskLimit=2,097,152 freeDiskLimit=5,368,709,120
adjustedMaxDiskLimit=2,097,152 maxDiskOverage=97,346
freeDiskShortage=-6,944,923,648 diskFreeSpace=12,313,632,768
availableLogSize=-97,346 totalLogSize=2,194,498 activeLogSize=2,194,498
reservedLogSize=0 protectedLogSize=0 protectedLogSizeMap={}

2018-04-03 08:19:36.063 UTC SEVERE [admin3] JE: Disk usage is not within
je.maxDisk or je.freeDisk limits and write operations are prohibited:
maxDiskLimit=2,097,152 freeDiskLimit=5,368,709,120
adjustedMaxDiskLimit=2,097,152 maxDiskOverage=101,698
freeDiskShortage=-6,944,923,648 diskFreeSpace=12,313,632,768
availableLogSize=-101,698 totalLogSize=2,198,850 activeLogSize=2,198,850
reservedLogSize=0 protectedLogSize=0 protectedLogSizeMap={}

[#26922]

全文検索付きのストアが非同期になる場合がある

全文検索のサポートを有効にしたストアでは、まれに、マスター・レプリケーション・ノードの内部コンポーネントが非同期になり、そのレプリケーション・ノードからの更新がElasticsearchエンジンへのフローを停止するというバグが発生する場合があります。この問題によって、ストアとElasticsearch間でデータが同期されなくなります。

問題が発生すると、Elasticsearchの索引への移入が停止します。この問題には、TextIndexFeederと呼ばれるコンポーネントのフィーダ・チャネルの停止が含まれ、レプリケーション・ノードのデバッグ・ログに記録されます。たとえば:

2018-03-16 11:23:46.055 UTC INFO [rg1-rn1] JE: Inactive channel: TextIndexFeeder-rg1-rn1-b4e92291-3c73-4128-9557-62dbd4e9ac78(2147483647) forced close. Timeout: 10000ms.
2018-03-16 11:23:46.059 UTC INFO [rg1-rn1] JE: Shutting down feeder for replica TextIndexFeeder-rg1-rn1-b4e92291-3c73-4128-9557-62dbd4e9ac78 Reason: null write time:  32ms Avg write time: 100us
2018-03-16 11:23:46.060 UTC INFO [rg1-rn1] JE: Feeder Output for TextIndexFeeder-rg1-rn1-b4e92291-3c73-4128-9557-62dbd4e9ac78 soft shutdown initiated.
2018-03-16 11:23:46.064 UTC WARNING [rg1-rn1] internal exception Expected bytes: 6 read bytes: 0
com.sleepycat.je.utilint.InternalException: Expected bytes: 6 read bytes: 0
    at com.sleepycat.je.rep.subscription.SubscriptionThread.loopInternal(SubscriptionThread.java:719)
    at com.sleepycat.je.rep.subscription.SubscriptionThread.run(SubscriptionThread.java:180)
Caused by: java.io.IOException: Expected bytes: 6 read bytes: 0
    at com.sleepycat.je.rep.utilint.BinaryProtocol.fillBuffer(BinaryProtocol.java:446)
    at com.sleepycat.je.rep.utilint.BinaryProtocol.read(BinaryProtocol.java:466)
    at com.sleepycat.je.rep.subscription.SubscriptionThread.loopInternal(SubscriptionThread.java:656)
    ... 1 more

2018-03-16 11:23:46.064 UTC INFO [rg1-rn1] SubscriptionProcessMessageThread soft shutdown initiated.
2018-03-16 11:23:46.492 UTC INFO [rg1-rn1] JE: Feeder output for TextIndexFeeder-rg1-rn1-b4e92291-3c73-4128-9557-62dbd4e9ac78 shutdown. feeder VLSN: 4,066 currentTxnEndVLSN: 4,065

TextIndexFeederチャネルが停止されている場合、ユーザーはダミーの全文検索索引を作成することでリストアできます。次に、その実行方法の例を示します。

Elasticsearchがすでに登録されていると仮定して、管理CLIから次のコマンドを実行します。

execute 'CREATE TABLE dummy (id INTEGER,title STRING,PRIMARY KEY (id))'
execute 'CREATE FULLTEXT INDEX dummytextindex ON dummy (title)'
execute 'DROP TABLE dummy'	

dummyは、前もって存在できない一時表の名前であることに注意してください。

全文検索索引を作成すると、ストアからElasticsearchへのチャネルが再構築され、データが最新の状態で同期されます。

[#26859]

Data Verifierがデフォルトで無効になっている

データ検証はデフォルトでオフになっています。場合によっては、データ検証で大量のI/O帯域幅が使用され、システムの速度が低下しました。ユーザーは、管理CLIから次の2つのコマンドを発行して、データ検証を有効にできます。

plan change-parameters -wait -all-rns -params "configProperties=je.env.runVerifier=false"
change-policy -params "configProperties=je.env.runVerifier=false"

configPropertiesパラメータに既存の設定があるサービスがストアにある場合、ユーザーは現在の値を取得して新しい設定とマージし、検証を無効にする必要があることに注意してください。

show param -service rg1-rn1
show param -policy

たとえば、rg1-rn1で次のようなクリーナ・パラメータが設定されているとします。

kv-> show param -service rg1-rn1
[...]
configProperties=je.cleaner.minUtilization=40

configPropertiesパラメータを更新するときは、検証の新しい設定を追加し、既存の設定をセミコロンで区切ります。

plan change-parameters -wait -all-rns -params "configProperties=je.cleaner.minUtilization=40;je.env.runVerifier=false" 

[KVSTORE-639]

サブスクリプションが接続できず、InternalExceptionで失敗する

パブリッシャの起動後、サブスクライバが接続する前に障害が原因でマスター転送が発生した場合、サブスクライバが接続しようとしたときにInternalExceptionが発生する可能性があります。例外メッセージに「Failed to connect, will retry after sleeping 3000 ms」と表示されます。この問題を回避するにはパブリッシャを再起動してください。

[#27723]