hacks/エラーメッセージ

2012年03月06日

このエントリーをはてなブックマークに追加

フォルダに日本語が入ってる時に"make html"が失敗する

Sphinxを利用してドキュメントを作成していたら、make htmlに失敗する現象に遭遇した。

$ make html
sphinx-build -b html -d _build/doctrees   . _build/html
Running Sphinx v1.1.2
WARNING: the config value '__file__' is set to a string with non-ASCII characters; this can lead to Unicode errors occurring. Please use Unicode strings, e.g. u'Content'.
loading pickled environment... not yet created
building [html]: targets for 4 source files that are out of date
updating environment: 4 added, 0 changed, 0 removed
reading sources... [ 25%] cloud-client
Exception occurred:
  File "/usr/lib/python2.6/site-packages/Sphinx-1.1.2-py2.6.egg/sphinx/environment.py", line 758, in read_doc
    pub.set_source(None, src_path.encode(fs_encoding))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 73: ordinal not in range(128)
The full traceback has been saved in /tmp/sphinx-err-Cg4EMC.log, if you want to report the issue to the developers.
Please also report this if it was a user error, so that a better error message can be provided next time.
Either send bugs to the mailing list at <http: groups.google.com="" group="" sphinx-dev=""></http:>,
or report them in the tracker at <http: bitbucket.org="" birkenfeld="" sphinx="" issues=""></http:>. Thanks!
make: *** [html] Error 1

幾つか試してみると、失敗する時は、フォルダ名に日本語が入っている。 この辺を検索してみると、同じように日本語フォルダ/ファイル名問題に失敗してる事例を発見。

Sphinx翻訳ハッカソン(2011/3/19)

手元の環境にhttp://paste.pocoo.org/show/355901/を適用してみると動かない。これはSphinxのバージョン差異が問題だった。

  • Sphinx 1.0.7

上記パッチを参考に書いたのが、下記検証環境において動作確認したパッチ。

検証環境
  • CYGWIN_NT-6.1
  • Python 2.6.5
  • Sphinx 1.1.2
Sphinx-1.1.2-py2.6.patch(日本語フォルダ/ファイル名を扱えるようにするパッチ)
あとがき

本パッチのベースとなるパッチを作成・公開して下さった @shimizukawa 様、ありがとうございます。

続きを読む


編集
@hansode at 13:00|PermalinkComments(0)TrackBack(0)

2011年08月12日

このエントリーをはてなブックマークに追加

動いてた物が動かなくなる

Amazon RDS用の運用スクリプトを書いていた時の出来事。 作業場所を移動して作業を再開したタイミングでエラーが出て動かなくなってしまった。 原因調査の旅の始まり。

エラーメッセージ

<ErrorResponse xmlns="http://rds.amazonaws.com/doc/2010-07-28/">
  <Error>
    <Type>Sender</Type>
    <Code>RequestExpired</Code>
    <Message>Request has expired. Timestamp date: 2011-08-12T02:28:49.000Z</Message>
  </Error>
  <RequestId>04efc58a-c48d-11e0-951b-dfc50e2855f7</RequestId>
</ErrorResponse>
検証環境
  • Ubuntu 10.04.3 Server LTS
  • right_aws 2.1.0
  • ruby 1.8.7p249
  • virtualbox 4.0.2 r72916
  • windows 7 (32bit)
結論から述べれば、実行環境の時間がズレていた

スクリプトの動作的に問題はないはずだと思っていたので、時刻問題だと推測。 時刻を確認してみると、、およそ15分遅れていた。


$ sudo ntpdate -b time.nist.gov
12 Aug 11:45:43 ntpdate[8462]: step time server 192.43.244.18 offset 946.878185 sec

時刻を同期させあとは、スクリプトが期待する動きになった。

あと書き

単なる凡ミス。手元の開発環境だからと言う理由で時刻同期設定をサボっていた自分が悪い。

続きを読む


編集
@hansode at 12:40|PermalinkComments(0)TrackBack(0)

2011年03月30日

このエントリーをはてなブックマークに追加

PostgreSQLのインストールに失敗?

chrootを利用してVMイメージを作成している時、PostgreSQの環境が不十分である事に気付いた。 その内容は、コマンドの配置までは上手く行くが、設定ファイルとDBデータが構築されないと言う物。その為、postmasterが起動しない。どうにか問題を解決すべく、インストールスクリプトを追いかける旅が始まった。

原因調査の旅

▼検証環境

  • Ubuntu 10.04.2 Server LTS
  • postgresql 8.4.7-0ubuntu0.10.04

今回の問題は、/etc/postgresql/8.4/は/var/lib/postgresql/8.4/ が生成されていない事。そこで、/var/lib/postgresql/8.4/ を生成しているのはどこかを調査して行く。Debian系では/var/lib/dpkg/info/*.*inst を見れば検討が付く。

▼/var/lib/dpkg/info/postgresql-8.4.postinst

...省略...
    19      . /usr/share/postgresql-common/maintscripts-functions
    20
    21      configure_version $VERSION "$2"

/usr/share/postgresql-common/maintscripts-functionsを読み込んでいる事が分かる。

▼/usr/share/postgresql-common/maintscripts-functions

    17  # arguments:  
    18  configure_version() {
    19      VERSION="$1"
    20
    21      # Create a main cluster for given version ($1) if no cluster already exists
    22      # for that version and we are installing from scratch.
    23      [ "$VERSION" ] || { echo "Error: configure_version: need version parameter" >&2; exit 1; }
    24      if [ ! -d "/etc/postgresql/$VERSION" ] || [ -z "$(ls /etc/postgresql/$VERSION)" ] || \
    25         [ -z "$(ls /etc/postgresql/$VERSION/*/postgresql.conf 2>/dev/null)" ]; then
    26          [ "$2" ] || /usr/bin/pg_createcluster -u postgres $VERSION main || {
    27          echo "Error: could not create default cluster. Please create it manually with
    28
    29    pg_createcluster $VERSION main --start
    30
    31  or a similar command (see 'man pg_createcluster')." >&2
    32          }
    33      fi
    34
    35      _link_manpages "$VERSION" "postgresql-$VERSION" postmaster.1.gz
    36  }

29行目の「/usr/bin/pg_createcluster -u postgres $VERSION main」が該当するようだ。コマンドを実行してみる。

# /usr/bin/pg_createcluster -u postgres 8.4 main
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Error: The locale requested by the environment is invalid.
# echo $?
1

ロケールを要求しているようだ。ロケールを指定して再度実行してみる。

# export LC_ALL=C
# /usr/bin/pg_createcluster -u postgres 8.4 main
Creating new cluster (configuration: /etc/postgresql/8.4/main, data: /var/lib/postgresql/8.4/main)...
Moving configuration file /var/lib/postgresql/8.4/main/postgresql.conf to /etc/postgresql/8.4/main...
Moving configuration file /var/lib/postgresql/8.4/main/pg_hba.conf to /etc/postgresql/8.4/main...
Moving configuration file /var/lib/postgresql/8.4/main/pg_ident.conf to /etc/postgresql/8.4/main...
Configuring postgresql.conf to use port 5432...
# echo $?
0

成功した。環境変数「LC_ALL」が良い影響を与えたのが分かる。

あらかじめ環境変数「LC_ALL」を設定しておけば、apt-get時でも/var/lib/postgresql/8.4/を生成してくれる事を確認した。

# export LC_ALL=C
# apt-get install postgresql-8.4

あと書き

これ以降、自分のルールとして、chroot環境で作業をする際は「export LC_ALL=C」を実行するようにした。




編集
@hansode at 17:00|PermalinkComments(0)TrackBack(0)

2011年03月11日

このエントリーをはてなブックマークに追加

エラーメッセージ

▼検証環境

  • Ubuntu 10.04.2 Server LTS
  • Puppet 2.6.4-2ubuntu1
    • storeconfigs = true
    • external_nodes = /etc/puppet/contrib/node_classifier
    • node_terminus = exec

▼puppet agent実行結果


err: Could not retrieve catalog from remote server: Error 400 on SERVER: E
xported resource File[/var/lib/puppet/modules/cluster/app/i-00000001] cannot
 override local resource on node $(puppet-agent-hostname)

原因と対応方法

▼背景

  • 関連するインスタンスのIPアドレスを登録・収集する為、storeconfigsを利用
    • IPアドレスを含んだファイルを、サーバ用途に応じたtagを指定してexport。DBであれば、tagにdbを指定。
      
        @@file { "${NODESDIR}/cluster/app/${hostname}":
          ensure => present,
          content => "${ipaddress}\n",
          tag => "cluster::app",
        }
      
    • 依存するノードのIPアドレスを収集する為、tag指定でcollect
      
      File <<| tag == "cluster::app" |>>
      
  • 次に挙げる状況を回避する為、puppet agent実行時の引数には「--fqdn サービスに紐づいた文字列」を指定していた。
    • IaaS環境であり、インスタンスのUNIXホスト名が同じ
    • UNIXホスト名が同一でも、処理させるマニフェストが異なる
    • 
      $ puppet agent -v -d --test --fqdn サービスに紐づいた文字列
      

▼原因

  • exportされたFileパス重複
    • export時のFileパスが、agentの『${hostname}』で一意に決まる物だった。
    • puppet agent実行するたびにfqdnが異なっており、fqdnに対するcollect結果のパスが既に存在していると、上書き出来ない。

▼対応方法

     
  • puppet agent実行時のfqdnを統一
    • サービスに紐づいた文字列生成は維持

あと書き

  • 本来あるべきpuppetの使い方を超えてるが故にハマってしまったのだろう。
  • 状況説明がとても難しい。

参考ページ




編集
@hansode at 13:10|PermalinkComments(0)TrackBack(0)

2011年02月13日

このエントリーをはてなブックマークに追加

エラーメッセージ

▼検証環境

  • Ubuntu-10.04 Server
  • lp:nova Branched 515 revision(s)

▼前提条件

  • OpenStackインストール先は「/home/openstack」であるものとする
  • novaが起動しているものとする

▼screen window 3番(compute)の出力より

libvir: Domain Config error : internal error no supported architecture for os type 'hvm'
ERROR:root:Uncaught exception
Traceback (most recent call last):
  File "/home/openstack/nova/nova/exception.py", line 83, in _wrap
    return f(*args, **kw)
  File "/home/openstack/nova/nova/virt/libvirt_conn.py", line 355, in spawn
    self._conn.createXML(xml, 0)
  File "/usr/lib/python2.6/dist-packages/libvirt.py", line 1289, in createXML
    if ret is None:raise libvirtError('virDomainCreateXML() failed', conn=self)
libvirtError: internal error no supported architecture for os type 'hvm'
ERROR:root:instance instance-1308883741: Failed to spawn
Traceback (most recent call last):
  File "/home/openstack/nova/nova/compute/manager.py", line 146, in run_instance
    self.driver.spawn(instance_ref)
  File "/home/openstack/nova/nova/exception.py", line 89, in _wrap
    raise Error(str(e))
Error: internal error no supported architecture for os type 'hvm'
libvir: QEMU error : Domain not found: no domain with matching name 'instance-1308883741'

エラーメッセージからは推測し辛い内容なので困った。

原因と対応方法

▼原因

  • 未対応ハイパーバイザを指定していた事
  • 具体的には、kvm未対応環境でkvmを指定していた

▼対応方法

  • nova起動時に、対応しているハイパーバイザを指定

あと書き

  • 対応しているハイパーバイザをしっかり確認しておく事
  • kvmの場合は、kvm-okコマンドで確認可能



編集
@hansode at 18:10|PermalinkComments(0)TrackBack(0)

2011年01月11日

このエントリーをはてなブックマークに追加

エラーメッセージ

▼検証環境

  • Ubuntu-10.04.1 Desktop
  • lp:nova Branched 515 revision(s)
  • lvm2 2.02.54-1ubuntu

▼user_smoketests.py実行結果

※screen window 6番(volume)の出力より

ERROR:root:Recovering from a failed execute.Try number 1
Traceback (most recent call last):
  File "/home/openstack/nova/nova/volume/driver.py", line 70, in _try_execute
    self._execute(command)
  File "/home/openstack/nova/nova/utils.py", line 143, in execute
    cmd=cmd)
ProcessExecutionError: Unexpected error while running command.
Command: sudo lvcreate -L 1G -n vol-wt8e25j9 nova-volumes
Exit code: 5
Stdout: ''
Stderr: '  Insufficient free extents (23) in volume group nova-volumes: 256 required\n'
DEBUG:root:Running cmd (subprocess): sudo lvcreate -L 1G -n vol-wt8e25j9 nova-volumes
DEBUG:root:Result was 5
ERROR:root:Recovering from a failed execute.Try number 2
Traceback (most recent call last):
  File "/home/openstack/nova/nova/volume/driver.py", line 70, in _try_execute
    self._execute(command)
  File "/home/openstack/nova/nova/utils.py", line 143, in execute
    cmd=cmd)
ProcessExecutionError: Unexpected error while running command.
Command: sudo lvcreate -L 1G -n vol-wt8e25j9 nova-volumes
Exit code: 5
Stdout: ''
Stderr: '  Insufficient free extents (23) in volume group nova-volumes: 256 required\n'
DEBUG:root:Running cmd (subprocess): sudo lvcreate -L 1G -n vol-wt8e25j9 nova-volumes
DEBUG:root:Result was 5

原因と対応方法

▼原因

  • user_smoketestにおけるvolumeテストでは、LG名『nova-volumes』から1GbサイズのLVを作成する。
    sudo lvcreate -L 1G -n vol-wt8e25j9 nova-volumes
  • 本エラーでは、1Gbサイズを確保出来なくてエラー判定となった。

▼対応方法

  • nova-volumesの空き容量を、1Gb以上にする
  • 最小サイズでも8Gbサイズ程度の容量を用意しておくべきだろうか

あと書き

  • 容量をケチったからこそ、稀なエラーケースに遭遇出来た



編集
@hansode at 20:45|PermalinkComments(0)TrackBack(0)

2011年01月05日

このエントリーをはてなブックマークに追加

きっかけはnova(OpenStack)環境構築

▼検証環境

  • Ubuntu 10.04.1 LTS Desktop
  • USBメモリ

nova.sh installを実行したら、エラーが発生
lvm2が依存するinitramfs-toolsのインストールに失敗していた。

▼説明の為、lvm2の部分だけ再現。


$ sudo apt-get -y install lvm2
.....
Setting up watershed (5) ...
update-initramfs: deferring update (trigger activated)
gzip: /initrd.img.gz: No such file or directory
cp: cannot stat `/vmlinuz': No such file or directory
dpkg: error processing watershed (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of lvm2:
 lvm2 depends on watershed (>= 2); however:
  Package watershed is not configured yet.
dpkg: error processing lvm2 (--configure):
 dependency problems - leaving unconfigured
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
No apport report written because the error message indicates its a followup error from a previous failure.
                          Processing triggers for initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-2.6.32-24-generic
cp: cannot stat `/vmlinuz': No such file or directory
dpkg: error processing initramfs-tools (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 watershed
 lvm2
 initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)

/vmlinuzが無いと言われている。

一見、/vmlinuzが存在しているようにみえているが、実態はシンボリックリンク先。
つまり、シンボリックリンク元が存在しない訳だ。


$ ls -la /vmlinuz
lrwxrwxrwx 1 root root 30 2010-08-16 10:07 /vmlinuz -> boot/vmlinuz-2.6.32-24-generic

解決策はシンボリックリンクを張り直す

update-initramfs: deferring update (trigger activated) / cp: cannot stat `/vmlinuz': No such file or directory』より


$ sudo ln -sf /cdrom/casper/vmlinuz /vmlinuz
$ ls -la /vmlinuz
lrwxrwxrwx 1 root root 21 2011-01-05 07:47 /vmlinuz -> /cdrom/casper/vmlinuz

この手順に従えばinitramfs-toolsのインストールは成功する。
そして、novaのインストールにも成功するようになる。

目出度し。




編集
@hansode at 16:10|PermalinkComments(0)TrackBack(0)

2008年12月12日

このエントリーをはてなブックマークに追加

珍しい


google-apps-error

Google Apps - サーバー エラー

サーバー エラー
現在、リクエストを処理できません。しばらくたってからもう一度試してみてください。



編集
@hansode at 10:55|PermalinkComments(1)TrackBack(0)

2008年09月02日

このエントリーをはてなブックマークに追加

検索したらエラー


エラーが出るなんて珍しい。

申し訳ありません。
システム内部にエラーがありました。問題はすでに記録済みで、今後調査を進める予定です。ご迷惑をおかけして申し訳ございません。

ショッピングを続ける ボタンをクリックするとAmazon.co.jp ホームにアクセスできます。



編集
@hansode at 17:35|PermalinkComments(0)TrackBack(0)

2008年06月05日

このエントリーをはてなブックマークに追加

時々出るPHPのWarning



 PHP Warning:  mysql_connect(): Lost connection to MySQL server at 'reading authorization packet', system error: 0 in /path/to/foo.php on line 123

この時はnetstatで確認するとTIME_WAITとなっている数が物凄いになってる。

この状況を解消しようとして、
/proc/sys/net/ipv4/tcp_tw_recycleを変更するのは危険か。

渡されたRHEL4.5では「0」となっている。



編集
@hansode at 02:05|PermalinkComments(2)TrackBack(0)