s3cmdのmultipart uploadでunexpected errorが出る奴の対策


 前にも書いたけど、tarをgpgにパイプした奴をsshでリモホにコピーして、リモホ側でs3cmdでAmazon S3に上げさせる、とかやっている訳ですよ。
 で、5GBを超えたら、マルチパートアップロードが必要なのな。s3cmdは1.1から対応。ただしβ。
 つーことで、1.1.0-beta3で上げてたんだけど、毎回エラー吐くのさ。こんな奴。

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   An unexpected error has occurred.
 Please report the following lines to:
  s3tools-bugs@lists.sourceforge.net
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Problem: KeyErr: 'elapsed'
S3cmd:   1.1.0-beta3

Traceback (most recent call last):
 File "/usr/bin/s3cmd", line 1800, in ?
   main()
 File "/usr/bin/s3cmd", line 1741, in main
   cmd_func(args)
 File "/usr/bin/s3cmd", line 965, in cmd_sync
   return cmd_sync_local2remote(args)
 File "/usr/bin/s3cmd", line 931, in cmd_sync_local2remote
   output(u"File '%s' stored as '%s' (%d bytes in %0.1f seconds, %0.2f %sB/s) %s" %
KeyError: 'elapsed'

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   An unexpected error has occurred.
   Please report the above lines to:
  s3tools-bugs@lists.sourceforge.net
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 Python使いにはお馴染みのトレースバックが埋まってるな。
 とりあえず文中のメールアドレスに報告はしといたけど、挨拶とかめんどくせーからここだけ切り取って他は何も無しだったからか返事も来なかった。うむ。

 で、その後も毎回これが発生するんで、もしもレアなバグとかだと放置されそうで嫌だなあ、と思ってソースを読んでみた。
 ふむ。S3/S3.pyが問題みたいだな。

        response["speed"] = 0 # XXX
        response["size"] = size

ってなってるけど、elapsedってのも必要なんだぜ。あとこれ、speedってダミーだよな。アップロード速度を表示する為だけっぽいから、β版なんでダミーで潰してるんだろう。ならelapsedもダミーで良かろう?

        response["speed"] = 0 # XXX
        response["elapsed"] = 0 # XXX
        response["size"] = size

こんな風に。
 ついでに細かい好みの話だけど、インラインコメントの前には本当ならスペース二個は欲しいなあ、とか。

 で、次のcron発動まで放置してたら無事動いた。めでたし。
 作者なら一度目の報告で即分かるだろうから、追加報告もしなかった。次のバージョンで直ってなかったら報告だな。

 んでもって、今月末にいよいよAWSの無料枠も終わるんだけど、どうせ送信前に暗号化してるんだし、同期型のオンラインストレージサービスに乗り換えた方が安くて手軽なケースもあるかもなあ。うーむ。つってもサーバロケーションを明確に選びたいから、当初の目的を考えればS3かなあ…。東京が地震とかでアレでもデータは残るように、って奴。ただ、そこまで事が大きくなると、海外との接続にかなり問題が出そう。まー、即時復旧を、って事業じゃないからそこはいいか。どっかにデータ残ってりゃいいんだよ系。
 でも、そう考えると、海外に飛ばすよりも大阪とか北海道とかにするのが実はいいんかもなあ…。さくら臭のするロケーションですな(笑)。

(Visited 71 times, 1 visits today)

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください