読者です 読者をやめる 読者になる 読者になる

文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

solrのReplicationHandlerのmaxNumberOfBackupsの罠

solr

solrには非常に簡単にレプリケーション(データの複製・同期)をする仕組みがあります。
ReplicationHandlerというものを使うと、http通信をして簡単にレプリケーションができます。
古いsolrではssh + rsyncで頑張って行うタイプのレプリケーションでしたが、
ver1.4以降はReplicationHandlerでレプリケーションするのが一般的です。

恥ずかしい事に私はReplicationHandlerをほとんど使った事が無かった(ssh+rsync形式しか経験無し)ので、
ReplicationHandlerを試してみました。

結果から言うと滅茶苦茶簡単だったので、全く躓くこと無くあっという間に終わりました。
しかし・・・

なんかmaxNumberOfBackupsの世代管理が動かないな

と、世代管理が効かない事に気づきました。

  <requestHandler name="/replication" class="solr.ReplicationHandler" > 
    <lst name="master">
      <str name="replicateAfter">startup</str>
      <str name="replicateAfter">commit</str>
      <str name="backupAfter">optimize</str>
      <str name="confFiles">schema.xml,stopwords.txt</str>
      <str name="commitReserveDuration">00:00:10</str>
      <int name="maxNumberOfBackups">5</int>
    </lst>
  </requestHandler>

これで合っているはずなんですが、なんで動かないのだろう。
検討もつかないのでネットで探してみると・・・

  <requestHandler name="/replication" class="solr.ReplicationHandler" > 
    <lst name="master">
      <str name="replicateAfter">startup</str>
      <str name="replicateAfter">commit</str>
      <str name="backupAfter">optimize</str>
      <str name="confFiles">schema.xml,stopwords.txt</str>
      <str name="commitReserveDuration">00:00:10</str>
    </lst>

    <int name="maxNumberOfBackups">5</int>
  </requestHandler>

こんな感じにmasterの外側にしたら動きました・・・
全く・・・まあsolrにとっては日常茶飯事なんですけどね。

(;`・ω・́)<罠を仕込むのはやめなさい!!


tree-tipsにReplicationHandlerの記事をアップしました!

Apache Solr入門 ―オープンソース全文検索エンジン

Apache Solr入門 ―オープンソース全文検索エンジン