Golang代码编译错误问题排查

Golang代码编译错误问题排查 我遇到了以下错误。这是由于Go版本问题还是其他原因?

2024-04-02 13:00:09.815 IST [leveldbhelper] Get → ERRO 010 检索leveldb键时出错 [[byte{0x74, 0x65, 0x73, 0x74, 0x67, 0x65, 0x74, 0x61, 0x6c, 0x6c, 0x6d, 0x73, 0x70, 0x69, 0x64, 0x73, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x74, 0x65, 0x73, 0x74, 0x73, 0x0, 0x6e, 0x1, 0x3}]: leveldb: closed

2024-04-02 13:00:21.623 IST [kvlegetActiveLedgerIDsdger] → ERRO 17e 从idStore获取账本ID时出错: leveldb: closed

2024-04-02 13:00:23.454 IST [kvledger] getActiveLedgerIDs → ERRO 19a 反序列化账本元数据时出错: unexpected EOF 2024-04-02 13:00:23.454 IST [kvledger] getLedgerMetadata → ERRO 19b 反序列化账本元数据时出错: unexpected EOF 2024-04-02 13:00:23.772 IST [kvledger] openIDStore → ERRO 19c 路径 [/tmp/kvledger656871058/ledgerProvider] 处的数据库包含意外格式的数据。预期数据格式 = [2.0] ([byte{0x32, 0x2e, 0x30}), 数据格式 = ([byte(nil)). 2024-04-02 13:00:23.774 IST [kvledger] func1 → ERRO 19d 请执行 ‘peer node upgrade-dbs’ 命令来升级数据库格式: unexpected format. db info = [leveldb for channel-IDs at [/tmp/kvledger656871058/ledgerProvider]], data format = , expected format = [2.0]

2024-04-02 13:01:41.137 IST [kvledger] updateLedgerStatus → ERRO 941 账本ID [dummy] 不存在 2024-04-02 13:01:41.430 IST [kvledger] updateLedgerStatus → ERRO 942 账本ID [dummy] 不存在 2024-04-02 13:01:41.745 IST [kvledger] getLedgerMetadata → ERRO 943 反序列化账本元数据时出错: unexpected EOF 2024-04-02 13:01:42.014 IST [kvledger] getLedgerMetadata → ERRO 944 反序列化账本元数据时出错: unexpected EOF

2024-04-02 13:02:07.152 IST [lockbasedtxmgr] RemoveStaleAndCommitPvtDataOfOldBlocks → DEBU a65 通过移除重复条目来构造唯一的pvtData — FAIL: TestGenerateSnapshotErrors (9.52s) — FAIL: TestGenerateSnapshotErrors/block_store_returns_error (1.46s) snapshot_test.go:239: Error Trace: snapshot_test.go:239 Error: “leveldb: closed\ninternal leveldb error while obtaining db iterator\ngithub.com/hyperledger/fabric/common/ledger/util/leveldbhelper.(*DBHandle).GetIterator\n\t/home/manisha/Downloads/fabric/demoTh/fabric-2.2.14/common/ledger/util/leveldbhelper/leveldb_provider.go:240\ngithub.com/hyperledger/fabric/common/ledger/blkstorage.(*blockIndex).exportUniqueTxIDs\n\t/home/manisha/Downloads/fabric/demoTh/fabric-2.2.14/common/ledger/blkstorage/blockindex.go:276\ngithub.com/hyperledger/fabric/common/ledger/blkstorage.(*BlockStore).ExportTxIds\n\t/home/manisha/Downloads/fabric/demoTh/fabric-2.2.14/common/ledger/blkstorage/blockstore.go:100\ngithub.com/hyperledger/fabric/core/ledger/kvledger.(*kvLedger).generateSnapshot\n\t/home/manisha/Downloads/fabric/demoTh/fabric-2.2.14/core/ledger/kvledger/snapshot.go:60\ngithub.com/hyperledger/fabric/core/ledger/kvledger.TestGenerateSnapshotErrors.func4\n\t/home/manisha/Downloads/fabric/demoTh/fabric-2.2.14/core/ledger/kvledger/snapshot_test.go:235\ntesting.tRunner\n\t/usr/local/go/src/testing/testing.go:1595\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1650” does not contain “fabric/common/ledger/blkstorage/blockindex.go” Test: TestGenerateSnapshotErrors/block_store_returns_error — FAIL: TestGenerateSnapshotErrors/config_history_mgr_returns_error (1.38s) snapshot_test.go:249: Error Trace: snapshot_test.go:249 Error: “leveldb: closed\ninternal leveldb error while obtaining db iterator\ngithub.com/hyperledger/fabric/common/ledger/util/leveldbhelper.(*DBHandle).GetIterator\n\t/home/manisha/Downloads/fabric/demoTh/fabric-2.2.14/common/ledger/util/leveldbhelper/leveldb_provider.go:240\ngithub.com/hyperledger/fabric/core/ledger/confighistory.(*db).getNamespaceIterator\n\t/home/manisha/Downloads/fabric/demoTh/fabric-2.2.14/core/ledger/confighistory/db_helper.go:114\ngithub.com/hyperledger/fabric/core/ledger/confighistory.(*Retriever).ExportConfigHistory\n\t/home/manisha/Downloads/fabric/demoTh/fabric-2.2.14/core/ledger/confighistory/mgr.go:233\ngithub.com/hyperledger/fabric/core/ledger/kvledger.(*kvLedger).generateSnapshot\n\t/home/manisha/Downloads/fabric/demoTh/fabric-2.2.14/core/ledger/kvledger/snapshot.go:64\ngithub.com/hyperledger/fabric/core/ledger/kvledger.TestGenerateSnapshotErrors.func5\n\t/home/manisha/Downloads/fabric/demoTh/fabric-2.2.14/core/ledger/kvledger/snapshot_test.go:245\ntesting.tRunner\n\t/usr/local/go/src/testing/testing.go:1595\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1650” does not contain “fabric/core/ledger/confighistory/mgr.go” Test: TestGenerateSnapshotErrors/config_history_mgr_returns_error 2024-04-02 13:02:07.833 IST [leveldbhelper] openDBAndCheckFormat → INFO a66 数据库为空,将数据库格式设置为 2.0


更多关于Golang代码编译错误问题排查的实战教程也可以访问 https://www.itying.com/category-94-b0.html

3 回复

啊,抱歉,我忘记跟进这个对话了。

如果在按照步骤构建 Hyperledger Fabric 环境时出现此错误,那么很可能是某些先决条件未满足。

如果问题出在代码上,那么每个尝试构建该环境的人都会遇到这个错误。然而,我在仓库中并未找到关于这个特定错误的问题报告。

我认为下一步最好是联系 Hyperledger Fabric 团队或社区寻求帮助。

更多关于Golang代码编译错误问题排查的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你好,

我正在尝试从以下地址构建 Hyperledger Fabric 的开发环境:GitHub - hyperledger/fabric: Hyperledger Fabric 是一个企业级的许可分布式账本框架,用于开发解决方案和应用程序。其模块化和多功能设计满足了广泛的行业用例。它提供了一种独特的共识方法,可在保持隐私的同时实现大规模性能。,版本为 fabric 2.2.14。 运行 make 命令时,我遇到了 leveldb: closed 错误。 由于架构代码是用 Go 语言实现的,所以我希望能在这个问题上得到一些支持。 使用的命令是:make dist-clean all

这个错误不是Go版本问题,而是Hyperledger Fabric数据库格式不匹配导致的。错误信息显示数据库格式为nil,但期望的格式是[2.0]

主要问题在以下错误行:

数据格式 = ([byte(nil)), 数据格式 = , expected format = [2.0]

这是典型的LevelDB数据库格式不兼容问题。从错误堆栈可以看出这是Fabric的测试用例TestGenerateSnapshotErrors执行失败。

解决方案是执行数据库升级命令。错误信息中已经给出了明确的修复建议:

peer node upgrade-dbs

如果你是在开发环境中运行测试,可能需要清理测试数据。可以尝试以下方法:

  1. 清理测试临时数据
rm -rf /tmp/kvledger656871058/
  1. 或者重新初始化测试环境
// 在测试代码中添加清理逻辑
func TestMain(m *testing.M) {
    // 测试前清理
    os.RemoveAll("/tmp/kvledger656871058/")
    
    // 运行测试
    code := m.Run()
    
    // 测试后清理
    os.RemoveAll("/tmp/kvledger656871058/")
    os.Exit(code)
}
  1. 如果是生产环境,必须按照错误提示执行升级命令:
# 在Fabric网络节点上执行
peer node upgrade-dbs

错误中的unexpected EOFleveldb: closed都是由于数据库格式不匹配导致的级联错误。一旦数据库格式问题解决,其他错误都会消失。

回到顶部