Hyperledger Composerでデプロイをしたときに遭遇したエラーまとめ（未解決のものもあり）


#はじめに

Hyperledger Composerでbnaファイルをデプロイするコマンド`composer network deploy`を実行してなかなか上手くいかず困ったときのことを書きました。

エラーの内容を調べると英語のページはいくつか見つかるのですが、日本語のページは見つからなかったので、少しまとめてみました。

↓のコマンドを実行してもエラーばかり出て頭を悩ませていました。
`composer network deploy -a basic-sample-network.bna -p defaultProfile -i admin -s Xurw3yU9zI0l`
この投稿を書く頃にはエラーを解消したいと思っていたのですが、できませんでした（ ;  ; ）


Hyperledger Composerについては[Hyperledger Composer 使ってみた#1](http://qiita.com/khit9/items/8e08f27400b11f31cfa9)で分かりやすく説明がされています。

#実行環境
OS:Ubuntu 16.04.2
composer：v0.8.1（※追記しました）
Hyperledger Fabric v0.6
前提条件はこちらに書いてあるものを満たしています。
https://hyperledger.github.io/composer/installing/development-tools.html

#遭遇したエラー一覧
主に４つのエラーに遭遇していました。
上二つのエラーは原因と解決策が分かったのですが、下二つはそれが分からず未解決です。

- Error: Error: sql: no rows in result set（解決済み）
- Error: Identity or token does not match.（解決済み）
- FATAL ERROR: Committing semi space failed. Allocation failed process out of memory（原因不明、未解決）
- timed out waiting for transaction to complete（なんとなく原因はわかったような‥、未解決）

#遭遇したエラーの詳細と解決策（一部）

## Error: Error: sql: no rows in result set（解決策あり）

```
vagrant@ubuntu:~/composerPoCTool-master/tools/composer/bna$ composer network deploy -a basic-sample-network.bna -p defaultProfile -i admin -s Xurw3yU9zI0l

Deploying business network from archive: basic-sample-network.bna
Business network definition:
    Identifier: basic-sample-network@0.0.10
    Description: The Hello World of Hyperledger Composer samples

✖ Deploying business network definition. This may take a minute...

Error: Error: sql: no rows in result set
Command failed
```

〜原因〜
古いcertが合っていないこと
membershipサービスを再起動した場合、古いcertは削除しないとだめなようです。

〜解決策〜
.composer-connection-profiles
.composer-credentials
の二つのファイルを削除する

私の環境の場合、二つのファイルは/home/vagrantにあったので、
`cd /home/vagrant`
`rm -rf .composer-connection-profiles`
`rm -rf .composer-credentials`
を実行したところ、`Error: Error: sql: no rows in result set`のエラーは出てこなくなりました。

##Error: Identity or token does not match.（解決策あり）
```
vagrant@ubuntu:~/composerPoCTool-master/tools/composer/bna$ composer network deploy -a basic-sample-network.bna -p defaultProfile -i admin -s Xurw3yU9zI0l

Deploying business network from archive: basic-sample-network.bna
Business network definition:
    Identifier: basic-sample-network@0.0.10
    Description: The Hello World of Hyperledger Composer samples


Error: Identity or token does not match.
Command failed
```

〜原因〜
enrollId（-i）、enrollSecret（-s）の組み合わせが間違っていること

〜解決策〜
enrollId、enrollSecretを正しく入力する

enrollId、enrollSecretの組み合わせは特に設定していなければこちらの85行目あたりに書いてあるものが使えるはずです。
（https://github.com/hyperledger-archives/fabric/blob/master/membersrvc/membersrvc.yaml）

↓これらです（一部抜粋）

```yaml:membersrvc.yaml
admin: 1 Xurw3yU9zI0l
WebAppAdmin: 1 DJY27pEnl16d
```

##FATAL ERROR: Committing semi space failed. Allocation failed process out of memory（原因不明、未解決）

試行錯誤して色々とやっていたときに遭遇したエラーでどうして起きたのかがよく分かっていません。。
Nodeのメモリ不足が起きているようですが

```
vagrant@ubuntu:~/composerPoCTool-master/tools/composer/bna$ composer network deploy -a basic-sample-network.bna -p defaultProfile -i admin -s Xurw3yU9zI0l

<--- Last few GCs --->

   27376 ms: Scavenge 3.2 (10.0) -> 2.9 (872.0) MB, 112.8 / 4.6 ms [allocation failure].


<--- JS stacktrace --->

==== JS stack trace =========================================

Security context: 0x2d1f574cfb39 <JS Object>
    1: realpathSync [fs.js:1667] [pc=0x3a9e85838ee0] (this=0x123e0d083c71 <an Object with map 0x12727321a9e9>,p=0x2df6d25042d1 <String[102]: /home/vagrant/.nvm/versions/node/v6.11.0/lib/node_modules/composer-cli/node_modules/yargs/lib/usage.js>,options=0x2df6d2504419 <an Object with map 0x12727321b229>)
    2: toRealPath(aka toRealPath) [module.js:133] [pc=0x3a9e85838450] (this=0x2d1f57404381 <...

FATAL ERROR: Committing semi space failed. Allocation failed - process out of memory
 1: node::Abort() [node]
 2: 0x109bf8c [node]
 3: v8::Utils::ReportApiFailure(char const*, char const*) [node]
 4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [node]
 5: v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [node]
 6: v8::internal::Heap::CollectGarbage(v8::internal::GarbageCollector, char const*, char const*, v8::GCCallbackFlags) [node]
 7: v8::internal::Factory::NewInternalizedStringImpl(v8::internal::Handle<v8::internal::String>, int, unsigned int) [node]
 8: v8::internal::StringTable::LookupString(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>) [node]
 9: v8::internal::LookupIterator::PropertyOrElement(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, bool*, v8::internal::LookupIterator::Configuration) [node]
10: v8::internal::Runtime::GetObjectProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>) [node]
11: 0xed3501 [node]
12: v8::internal::Runtime_KeyedGetProperty(int, v8::internal::Object**, v8::internal::Isolate*) [node]
13: 0x3a9e857092a7
Aborted
```

##timed out waiting for transaction to complete（未解決）
このタイムアウトでデプロイに失敗するエラーが一番遭遇しています。これまでに紹介したエラーが解決しても結局このエラーに行き着きます。。


```
vagrant@ubuntu:~/composerPoCTool-master/tools/composer/bna$ composer network deploy -a basic-sample-network.bna -p defaultProfile -i admin -s Xurw3yU9zI0l

Deploying business network from archive: basic-sample-network.bna
Business network definition:
    Identifier: basic-sample-network@0.0.10
    Description: The Hello World of Hyperledger Composer samples

✖ Deploying business network definition. This may take a minute...

timed out waiting for transaction to complete
Command failed
```

###○エラー解消のためにやったこと

####・connection.jsonがあるかを確認

```
vagrant@ubuntu:~/.composer-connection-profiles/defaultProfile$ ls
connection.json
```
ありました

####・ぐぐる


`docker logs <CONTAINER ID>`でログを見るといいという投稿を見つけました。

まずは`docker ps`でCONTAINER IDを確認

```
vagrant@ubuntu:~/composer/bna$ docker ps -a
CONTAINER ID        IMAGE                                                COMMAND                  CREATED             STATUS              PORTS                                                                                            NAMES
180a05ba4a66        hyperledger/composer-playground                      "pm2-docker compos..."   6 minutes ago       Up 2 minutes        0.0.0.0:8080->8080/tcp                                                                           fabricconfig_composer_1
47525938ac95        hyperledger/fabric-peer:x86_64-0.6.1-preview         "sh -c 'sleep 5; p..."   6 minutes ago       Up 2 minutes        0.0.0.0:7150->7050/tcp, 0.0.0.0:7151->7051/tcp, 0.0.0.0:7152->7052/tcp, 0.0.0.0:7153->7053/tcp   fabricconfig_vp1_1
962df523b480        hyperledger/fabric-peer:x86_64-0.6.1-preview         "sh -c 'sleep 5; p..."   6 minutes ago       Up 2 minutes        0.0.0.0:7350->7050/tcp, 0.0.0.0:7351->7051/tcp, 0.0.0.0:7352->7052/tcp, 0.0.0.0:7353->7053/tcp   fabricconfig_vp3_1
6ea2ec92d454        hyperledger/fabric-peer:x86_64-0.6.1-preview         "sh -c 'sleep 5; p..."   6 minutes ago       Up 2 minutes        0.0.0.0:7250->7050/tcp, 0.0.0.0:7251->7051/tcp, 0.0.0.0:7252->7052/tcp, 0.0.0.0:7253->7053/tcp   fabricconfig_vp2_1
fb09850fba53        hyperledger/fabric-peer:x86_64-0.6.1-preview         "sh -c 'sleep 5; p..."   6 minutes ago       Up 2 minutes        0.0.0.0:7050-7053->7050-7053/tcp                                                                 fabricconfig_vp0_1
1e5d14cacb02        hyperledger/fabric-membersrvc:x86_64-0.6.1-preview   "membersrvc"             6 minutes ago       Up 2 minutes        0.0.0.0:7054->7054/tcp                                                                           fabricconfig_membersrvc_1

```


`docker logs <CONTAINER ID>`を実行。（一部抜粋）

```
vagrant@ubuntu:~/composer/bna$ docker logs 47525938ac95
:
04:59:24.290 [dockercontroller] deployImage -> ERRO 117 Error building images: manifest for hyperledger/fabric-baseimage:latest not found
04:59:24.290 [dockercontroller] deployImage -> ERRO 118 Image Output:
********************
Step 1/4 : FROM hyperledger/fabric-baseimage

********************
```


```
vagrant@ubuntu:~/composer/bna$ docker logs 962df523b480
    :
    02:51:31.563 [peer] chatWithPeer -> ERRO 15aa Error creating connection to peer address 172.18.0.5:7051: grpc: timed out when dialing
    :
```

```
vagrant@ubuntu:~/composer/bna$ docker logs 6ea2ec92d454
:
02:54:25.298 [peer] chatWithPeer -> ERRO 1a05 Error creating connection to peer address 172.18.0.5:7051: grpc: timed out when dialing
:
```

```
vagrant@ubuntu:~/composerPoCTool-master/tools/composer/bna$ docker logs fb09850fba53
:
02:55:48.718 [peer] chatWithPeer -> ERRO 1c33 Error creating connection to peer address 172.18.0.5:7051: grpc: timed out when dialing
:
```
主に二つのエラーが起きていることでタイムアウトが起きているのではと推測できました。


```
Error building images: manifest for hyperledger/fabric-baseimage:latest not found
```

```
Error creating connection to peer address 172.18.0.5:7051: grpc: timed out when dialing
```

次に、

```
Error building images: manifest for hyperledger/fabric-baseimage:latest not found
```
についてググってみると、
base imageのpullとタグの設定が必要だということで、以下のコマンドを実行してみました。

```
docker pull hyperledger/fabric-baseimage:x86_64-0.1.0 (or whatever baseimage version you prefer).
```

```
docker tag hyperledger/fabric-baseimage:x86_64-0.1.0 hyperledger/fabric-baseimage:latest
```

再度、`composer network deploy`を実行してみましたが、結果は変わらず。。
その後も情報収集をしましたが、解決しませんでした。

環境を作り直しても上手くいかず、少し時間を置いてからもう一度チャレンジしたときになんとなく`docker-compose up`を実行しました。（普段はログが出ないように`docker-compose up -d`を実行しています）
ログをよく見てみると

```
vp0_1         | 06:28:45.268 [peer] chatWithPeer -> ERRO 158 Error creating connection to peer address 172.18.0.5:7051: grpc: timed out when dialing
```

```
vp2_1         | 06:28:45.778 [peer] chatWithPeer -> ERRO 151 Error creating connection to peer address 172.18.0.5:7051: grpc: timed out when dialing
```

```
vp1_1         | 06:28:45.966 [peer] chatWithPeer -> ERRO 145 Error creating connection to peer address 172.18.0.5:7051: grpc: timed out when dialing
```
のようなエラーが出ていることがわかりました。

そもそも`docker-compose up`した直後から上手くいっていなかったみたいです。。
「Error creating connection to peer address 172.18.0.5:7051: grpc: timed out when dialing」などでググってみるとこちらの投稿を見つけました。https://github.com/IBM-Blockchain-Archive/fabric-images/issues/25

同じ現象に遭遇している人がいるそうで、OSは同じubuntu16.04。
昨日までは完璧に動いていたのに今日から動かなくなってしまったそう。
同じ現象にあっている人がいるんだということが分かりました。

#最後に
私と同じようなタイムアウトでデプロイに失敗する現象に遭遇して解決された方がいらっしゃいましたらどのようなことを行ったのか教えていただければと思います。