solrにはrollbackの機能があります。 ところがRDBと全く同じrollbackではありません。 例えばインデックス全件生成を例に上げてみます。 1,インデックス全件削除。 2,インデックス全件生成。 3,全件生成中にエラー発生。 4,catch節でrollbackを実行。 こういう場合、2は反映されず、1以前の状態に戻ります。 ただしそれは メモリ上の話です。 インデックスの物理ファイルはカッチリ削除されています。 つまりrollbackした後にtomcat等のservletコンテナを再起動すると、 全件削除された状態でインデックスがロードされてインデックスが0件になります。 RDBのように物理的にrollbackされる訳ではないのです。 これを意識していないと、以下のような事が起こりえます。 1,インデックス全件削除。 2,インデックス全件生成。 3,全件生成中にエラー発生。
![solrのrollbackはRDBのrollbackとは挙動が違う - 文系プログラマによるTIPSブログ](https://cdn-ak-scissors.b.st-hatena.com/image/square/92a44f12f80ea59b517c7b90e55e5c4de654790f/height=288;version=1;width=512/http%3A%2F%2Fecx.images-amazon.com%2Fimages%2FI%2F51fQfVOQElL.jpg)