本事象は製品の不具合になります。ご迷惑をお掛けして申し訳ございません。
下記バージョンからご利用を開始された方は、本事象を改善するために以下の対応の実施をお願い致します。
intra-mart Accel Platform 2013 Winter(Felicia)
intra-mart Accel Platform 2014 Spring(Granada)
intra-mart Accel Platform 2014 Summer(Honoka)
intra-mart Accel Platform 2014 Winter(Iceberg)
intra-mart Accel Platform 2015 Spring(Juno)
intra-mart Accel Platform 2015 Summer(Karen)
intra-mart Accel Platform 2015 Winter(Lydia)
【条件】
Cassandraを分散環境にて構築している場合に発生します。
【原因】
Column Familyの作成時に replicate_on_write の設定がされておらず、更新処理時のCassandraノード間における同期がされないために発生します。
【回避策】
Cassandraサーバに対して以下の手順を実施します。
件数データを保持するColumnFamilyの属性値の変更
この対応により、更新処理時のCassandraノード間の同期が行われるようになります。
既存データの再同期
この対応により、Cassandraノード間でずれていたデータ内容の同期が行われます。
0. 前提
作業はCassandraサーバにて実施します。
作業中は intra-mart Accel Platform を停止し、Cassandraへの書き込みが行われない状態にしてください。
1. 件数データを保持するColumnFamilyの属性値の変更
クラスタ構成のCassandraのいずれかのサーバのコンソールに接続してください。
Cassandraのインストールディレクトリ(以下$cassandra_homeと表記)のbinディレクトリ配下にある、cassandra-cli コマンドを実行します。
$cassandra_home/bin/cassandra-cli
cassandra-cli コマンド内で keyspace を選択します。
# default の部分はご利用中の keyspace名 に置き換えて実行してください。
use default;
件数データを保持するColumnFamilyの属性値を変更します。
update column family ADD_MYLIST with replicate_on_write=true;
update column family ADD_MYLIST_WITH_COMPANY with replicate_on_write=true;
update column family ADD_TAG_AND_USER with replicate_on_write=true;
update column family ALLOW_COMPANY with replicate_on_write=true;
update column family APPLICATIONBOX_NOTICE with replicate_on_write=true;
update column family APPLICATIONBOX_TIMELINE with replicate_on_write=true;
update column family APPLICATION_DATA with replicate_on_write=true;
update column family APPLICATION_SENT with replicate_on_write=true;
update column family APPLICATION_WATCHED with replicate_on_write=true;
update column family APPLICATION_WATCHED_TARGET with replicate_on_write=true;
update column family APPLICATION_WATCHED_USER with replicate_on_write=true;
update column family ATTACH_COMPANY with replicate_on_write=true;
update column family ATTACH_COUNT with replicate_on_write=true;
update column family BOOKMARK_MESSAGE with replicate_on_write=true;
update column family COMPANY with replicate_on_write=true;
update column family COMPANYBOX_TIMELINE with replicate_on_write=true;
update column family COMPANY_ALLOWED with replicate_on_write=true;
update column family COMPANY_AND_TAG_ADDED with replicate_on_write=true;
update column family COMPANY_AND_TAG_FOLLOWED with replicate_on_write=true;
update column family COMPANY_ATTACHED with replicate_on_write=true;
update column family COMPANY_COUNT with replicate_on_write=true;
update column family COMPANY_MANAGE_GROUP with replicate_on_write=true;
update column family COMPANY_MANAGE_TAG with replicate_on_write=true;
update column family CONNECT_NOTICE with replicate_on_write=true;
update column family CREATE_MYLIST with replicate_on_write=true;
update column family DELETED_USER with replicate_on_write=true;
update column family DMBOX_TIMELINE with replicate_on_write=true;
update column family EVENT_HISTORY with replicate_on_write=true;
update column family FOLLOW_TAG with replicate_on_write=true;
update column family FOLLOW_USER with replicate_on_write=true;
update column family FOLLOW_USER_WITH_COMPANY with replicate_on_write=true;
update column family GROUP with replicate_on_write=true;
update column family GROUPBOX_TIMELINE with replicate_on_write=true;
update column family GROUPTYPE_GROUP with replicate_on_write=true;
update column family GROUP_COUNT with replicate_on_write=true;
update column family GROUP_INVITED with replicate_on_write=true;
update column family GROUP_JOINED with replicate_on_write=true;
update column family GROUP_MANAGED with replicate_on_write=true;
update column family GROUP_REQUESTED with replicate_on_write=true;
update column family HIDDENBOX_TIMELINE with replicate_on_write=true;
update column family IMBOX_CONTRIB_POLL_VOTES with replicate_on_write=true;
update column family IMBOX_CONTRIB_POLL_VOTE_COUNT with replicate_on_write=true;
update column family IMBOX_CONTRIB_POLL_VOTE_ITEMS with replicate_on_write=true;
update column family INVITE_GROUP with replicate_on_write=true;
update column family JOIN_GROUP with replicate_on_write=true;
update column family LIKE_MESSAGE with replicate_on_write=true;
update column family MAIL_NOTICE with replicate_on_write=true;
update column family MANAGE_GROUP with replicate_on_write=true;
update column family MESSAGE with replicate_on_write=true;
update column family MESSAGE_BOOKMARKED with replicate_on_write=true;
update column family MESSAGE_COUNT with replicate_on_write=true;
update column family MESSAGE_HISTORY with replicate_on_write=true;
update column family MESSAGE_LIKED with replicate_on_write=true;
update column family MESSAGE_NOTICED with replicate_on_write=true;
update column family MYBOX_TIMELINE with replicate_on_write=true;
update column family MYLIST with replicate_on_write=true;
update column family MYLIST_ADDED with replicate_on_write=true;
update column family MYLIST_TIMELINE with replicate_on_write=true;
update column family NOTICES_MEDIA with replicate_on_write=true;
update column family NOTICE_THREAD with replicate_on_write=true;
update column family NOTICE_USER with replicate_on_write=true;
update column family POST_THREAD with replicate_on_write=true;
update column family REFERENCE_THREAD with replicate_on_write=true;
update column family REQUEST_GROUP with replicate_on_write=true;
update column family TAG with replicate_on_write=true;
update column family TAG_COUNT with replicate_on_write=true;
update column family TAG_FOLLOWED with replicate_on_write=true;
update column family THREAD_COUNT with replicate_on_write=true;
update column family THREAD_POSTED with replicate_on_write=true;
update column family THREAD_REFERENCED with replicate_on_write=true;
update column family UNREAD_MESSAGE with replicate_on_write=true;
update column family UNREAD_TIMELINE with replicate_on_write=true;
update column family USER with replicate_on_write=true;
update column family USER_COUNT with replicate_on_write=true;
update column family USER_FOLLOWED with replicate_on_write=true;
update column family USER_FOLLOWED_WITH_COMPANY with replicate_on_write=true;
update column family USER_TIMELINE with replicate_on_write=true;
update column family WATCH_APPLICATION with replicate_on_write=true;
update column family WATCH_THREAD with replicate_on_write=true;
update column family WATCH_TIMELINE with replicate_on_write=true;
上記では 2015 Winter(Lydia) 時点で存在するすべての Column Family を指定しています。
2015 Winter(Lydia) より前のバージョンで実行すると以下のメッセージが表示される場合がありますが問題はありません。
{Column Family Name} not found in current keyspace.
cassandra-cli コマンドを終了して対応完了です。
quit;
2. 既存件数データの再構築
クラスタ構成のすべてのCassandraに対して repair 処理を実施します。
クラスタ構成のCassandraのサーバのコンソールに接続してください。
$cassandra_home/binディレクトリ配下にある、nodetool コマンドを利用し repair 処理を実施します。
このコマンドの実行時間は保存されているデータ量に応じて増加します。
$cassandra_home/bin/nodetool repair
すべてのCassandraサーバに対して処理が正常終了したら対応完了です。
なお、以下の要件にて修正が行われております。
https://issue.intra-mart.jp/issues/20710
-- 対象 ------------------------------------------------------------------------
iAP/intra-mart Accel Platform/2013 Winter(Felicia)
iAP/intra-mart Accel Platform/2014 Spring(Granada)
iAP/intra-mart Accel Platform/2014 Summer(Honoka)
iAP/intra-mart Accel Platform/2014 Winter(Iceberg)
iAP/intra-mart Accel Platform/2015 Spring(Juno)
iAP/intra-mart Accel Platform/2015 Summer(Karen)
iAP/intra-mart Accel Platform/2015 Winter(Lydia)
--------------------------------------------------------------------------------
FAQID:599