目錄
first-network 1.2.1
無問題
e2e_cli git1.2.1官方版本跑例子時
docker tag 1.2.1鏡像latest標籤
order/peer加如下環境變量
GODEBUG=netdns=go
啓動還是報錯
Error: error endorsing query: rpc error: code = Unknown desc = Failed evaluating policy on signed data during check policy on channel [mychannel] with policy [/Channel/Application/Writers]: [Failed to reach implicit threshold of 1 sub-policies, required 1 remaining] - proposal response:
通過搜索引擎找到了解決方案 修改policies:fabric1-2下e2e-cli問題記錄
按提示修改 e2e_cli下的configtx.yaml,在Org3處進行添加Org3MSP.member,如下。
Policies:
Readers:
Type: Signature
Rule: "OR('Org3MSP.admin', 'Org3MSP.peer', 'Org3MSP.client', 'Org3MSP.member')"
Writers:
Type: Signature
Rule: "OR('Org3MSP.admin', 'Org3MSP.client', 'Org3MSP.member')"
Admins:
Type: Signature
Rule: "OR('Org3MSP.admin')"
e2e_cli定製版1.2.1升級時
域名改成公司分配域名,通道名改成bgihealth,mycc也相應變了下
先單純更改域名啓動改造後的e2e_cli-1.2.1項目
Error: got unexpected status: FORBIDDEN – Failed to reach implicit threshold of 1 sub-policies, required 1 remaining: permission denied
Evaluation Failed: Only 0 policies were satisfied, but needed 1 of
Failed to reach implicit threshold of 1 sub-policies, required 1 remaining: permission denied
對比yaml文件,發現EnableNodeOUs屬性不同
更改yaml配置,重新生成證書和tx文件,問題解決
參考過的資料:
帶舊數據升級到1.2
帶舊數據升級時,因爲1.1.1的證書生成沒有使能EnableNodeOUs特性,
切換成1.2鏡像時繼續用1.0.6的證書,報錯如下
Error: got unexpected status: BAD_REQUEST – cannot enable application capabilities without orderer support first
替換成1.2鏡像時同時切換1.2證書,又報錯如下
Error: got unexpected status: FORBIDDEN – Failed to reach implicit threshold of 1 sub-policies, required 1 remaining: permission denied
嘗試1
方法無效
註釋掉
signConfigtxAsPeerOrg 1 config_update_in_envelope.pb
# Prepare to sign the update as the PeerOrg2.Admin
setGlobals 0 2
後
無用
只註釋掉
signConfigtxAsPeerOrg 1 config_update_in_envelope.pb
時
嘗試2
比對1.0.6,1.1.1,1.2.1版本的configtx.yaml和crypto-config.yaml
考慮到crypto-config.yaml的1.1.1比1.0.6多了個EnableNodeOUs
還有1.2.1多了幾個policies
後續突然想到導出升級過程中的config.json和modified_config.json,比對正常數據升級,發現舊數據還缺少V1_1的屬性。
可能是搭建時用的是1.0.6版本工具創建的tx文件。
意識到一併升級V1_1屬性和1.2看看
終於升級成功了。 測試讀寫也正常了
總結
我本次問題的主要原因,是因爲腳本從1.0.6修改過來,缺少了一些屬性,例如polices 、EnableNodeOUs。這些屬性影響到了tx文件、證書,最終寫在了區塊裏。而我們要做的是修正yaml文件後再使這些屬性生效:清除區塊鏈數據重新搭建也可,保持舊數據更新配置塊也可。
其他
configtxgen等工具版本
升級時保持舊版本即可。升級後創建新通道文件時要對應升級後的版本。
configtx.yaml crypto-config.yaml configtxgen的版本
kafka/zookeeper版本問題
恢復1.1.1環境,出錯如下:zookeeper中執行不了 docker-entrypoint.sh
後來發現是kafka/zookeeper被本機生成編譯過,latest標籤對應了舊版1.0.6
ccenv版本問題
先前複製了測試環境244服務器的舊數據,在213服務器上解決了升級屬性的問題。然後切回244驗證時,碰到如下問題
智能合約啓動報錯如下:
後對比兩臺服務器鏡像,發現ccenv版本不同。213並沒有1.2的版本,而244的latest標籤頁是打在1.4上。
將兩臺服務器的ccenv latest鏡像對應到1.2後,啓動並升級成功。