tdコマンドが "Error: There was a problem accessing the ..." となったのでバージョンアップして対策した手順


TreasureDateを利用していて、定期的にtdコマンドでCSVファイルをインポートするバッチが急に以下のエラーでこけるようになったので対策をしました。(TDの方に聞いて親切に教えてもらいました、感謝!)

Error: There was a problem accessing the remote XML resource 'http://central.maven.org/maven2/com/treasuredata/td-import/maven-metadata.xml' (TreasureData::Command::UpdateError: An error occurred when fetching from 'http://central.maven.org/maven2/com/treasuredata/td-import/maven-metadata.xml'.)

具体的には以下のコマンドでTDコマンドをアップデートしました。OSはAmazonLinux2です。

$ curl -L https://toolbelt.treasuredata.com/sh/install-amazon2-td-agent3.sh | sh
=> td-agentなどが最新化されます

$ td-agent-gem list | grep td
=> 現バージョン確認(ちなみに v0.16.4 でした)
$ td-agent-gem update td
=> アップグレード
$ td-agent-gem list | grep td
=> 再確認
$ td --version
=> アクティブバージョンが v0.16.8であることを確認(※v0.16.8が本件対応済みのバージョン)

詳細

実際に運用していたのは以下のようなコマンドです。

td import:auto --format csv --auto-create hogehoge.fugafuga --parallel 4 --prepare-parallel 8 --columns hoge,piyo --column-types string,int -o /tmp --time-column hoge --time-format %Y-%m-%d %H:%M:%S /usr/local/sbin/treasureData/csv/hoge.csv

該当エラーで検索すると以下にたどりつきます。
TDドキュメント - Legacy Bulk Import Tips and Tricks

ドキュメントを読むと回避方法は二つあるそうです。私たちは1のバージョンアップを選択しました。いい機会だったので。

  1. TDコマンドのバージョンをアップする
  2. 環境変数をセットする export TD_TOOLBELT_JARUPDATE_ROOT=https://repo1.maven.org

アップデート手順も公式にあります。
TDドキュメント - Installing and Updating the Treasure Data TD Toolbelt for CLI Use

ただ、私の環境では以下のcurl実行だけでは足りなくて

# Amazon Linux 2
$ curl -L https://toolbelt.treasuredata.com/sh/install-amazon2-td-agent3.sh | sh

以下のtd-agent-gemコマンドも必要でした。

$ td-agent-gem update td

エラーの原因

TDの方に確認したところ、"td importを実行した際に自動的にjar updateが走るのですが、既存のリポジトリのURLが廃止になったため発生したエラー" とのことでした。なるほどですね。

同僚がtdコマンドの該当の変更箇所も探し出していたのでこちらもご参考まで。
https://github.com/treasure-data/td/commit/00f0a341f0b78f387baaf83cbb30406836b6ada0

それでは良いTDライフをエンジョイ!