mgmtdevelopment's People
mgmtdevelopment's Issues
标识名称验证加强
Reproduced Steps
创建组织, 联盟, 节点, 应用链等, 所有名称和标识都不能包含空格, tab等空白字符。
Expected Result
应该只有数字, 大小写字母和下划线(_
), 中划线(-
)和点(.
); 其中应用链和区块链名称智能是数字小写字母和中划线(-
)和点(.
)
Actual Result
当前验证比较弱
ca信息的显示
当前涉及到CA的信息创建完成之后就看不到了, 需要显示CA相关的信息, 包括:
- 内置CA信息
- 组织CA信息
- 节点CA信息
创建通道时没填name双击创建通道按钮, 创建请求被发出
Reproduced Steps
- 到创建通道页面
- 输入除了通道名字意外的信息
- 双击创建通道按钮
Expected Result
没有请求发出, 仍然在通道创建页面
Actual Result
创建请求被发出, 提示错误
节点Identity 不能跨区块链网络, 否则通过客户端工具获取的时候可能会有问题
当客户端工具访问管理平台的时候, 通过Basic Auth通过之后, 只在context中设置了节点的identity, 但是identity在整个数据库中并不是唯一的, 只是在区块链网络中是唯一的
Internal CA 模式下, 在不同个区块链网络下面可能会有相同名称的Fabric CA User, 这会导致创建节点失败
Reproduced Steps
- 创建Internal CA 的 blockchain intbc1, 创建一个节点, 其CN为org0osn0
- 创建Internal CA 的 blockchain intbc2, 创建一个节点, 其CN为org0osn0
Expected Result
intbc2下的org0osn0可以创建成功
Actual Result
intbc2下的org0osn0创建失败
创建智能合约支持单文件代码或zip压缩后上传
创建智能合约对更多智能合约代码格式的支持
- 单文件后缀名为go的文件
- 多文件用zip压缩后的文件
[Frontend] 编辑排序类型为solo的区块链网络, kafka也显示出来
Reproduce steps
- 编辑一个排序类型为solo的区块链网络
Expected result: 没有kafka相关的信息
Actual result: 显示了kafka的标签和输入框
删除资源后列表也没没有更新
Reproduced Steps
在组织, 联盟, 排序服务节点和kafka集群页面, 点击删除, 提示成功后
Expected Result
列表页刷新, 被删除的记录消失
Actual Result
页面未刷新, 被删除的记录还在页面上
创建通道, 第一次创建出错, 修改后再次提交后, 提交的数组类型的数据包含重复值
Reproduced Steps
- 创建通道, 填入一个无效值
- 提交报错后,修改值为正确值, 再次提交
Expected Result
提交成功
Actual Result
提交失败
每次调用智能合约智能合约容器都会重启
Root Cause: 调用智能合约时需要检查智能合约容器是否启动, 如果没有启动, 则在一个goroutine中启动容器, 并传入context, 但是该goroutine退出之前, 容器内智能合约已经完成注册, 导致这次gRPC调用结束, context失效, goroutine中再次引用context会返回错误, 导致该智能合约没有存储到记录已经启动的智能合约的MAP中。
运行通过页面增删改查配置信息
比如支持的FiMAX版本
multi-select 右边选中的项下面去掉背景色
Reproduced Steps
使用multi-select的时候, 点击左边的项, 其被选中后到右边去
Expected Result
右边被选中的项有背景色
Actual Result
右边被选中的不应该有背景色
显示详情所有资源详情
资源包括
- 成员组织
- 排序服务节点
- Kafka集群
- 联盟
- 通道
- 区块链
对于一对多的资源关系, 用列表显示, 显示详情的目的在于展示各个资源之间的关系
504页面返回后, 菜单消失
Reproduced Steps
- 在任意一个页面, 后台服务crash掉之后;
- 前端进入504页面;
- 然后重启后台服务
- 点击返回
Expected Result
正常返回后台挂掉之前的页面
Actual Result
返回之前的页面, 但是菜单消失
后台监控性能优化
- 缓存每个节点的监控信息
- 增加websocket接口动态实时获取监控数据
限制request最大timeout时间
Reproduced Steps
在页面查看block详情, 等待调用peer返回
Expected Result
如果peer长时间无法返回, request应该被cancel掉
Actual Result
request一直进行, 没有被cancel掉
创建或者编辑通道的的时候, 切换联盟, 应用组织不跟着变化
Reproduced Steps
- 在创建或者编辑通道的页面, 切换联盟
Expected Result
应用组织显示的是对应联盟的所有组织
Actual Result
应用组织始终不变化
[Frontend] 创建channel时, 区块超时时间(纳秒)等排序参数默认应该显示区块链网络的值
Reproduce Steps
- 创建新的channel
- 选择区块链网络后, 检查
区块超时时间(纳秒)
,区块包含最大消息量
,区块最大字节数
,区块首选字节数
的值
Expected result: 显示对应区块链网络配置的值
Actual result: 显示空
运行从节点列表页面创建监控Job
- 在节点列表页面点击创建监控
- 跳转到创建日志页面, 节点已经选择
genesis block中任何的config id 的允许字符串为[a-zA-Z0-9.-]+(不能包括下划线)
前后太需要新加验证只允许[a-zA-Z0-9.-]+, 需要验证的字段包括:
组织名称, 联盟名称
允许更改每个通道的Kafka broker配置
Reproduced Steps
编辑系统链时,虽然显示了kafka集群, 但是不允许更改; 编辑应用链时, kafka未显示
Expected Result
系统和应用链的kafka集群都允许更改
Actual Result
创建Job页面的优化
- 添加验证, interval 只能大于0;
- 添加一个新的字段alert_max_count_per_hour, 中文名: 每小时最大报警数, 英文: Max Alert Per Hour, 只能是大于0的数字;
- 当报警方式为Email时, 需要保证至少有一个Email 地址;
- 允许从节点列表页面创建Job, 需要固定节点信息.
统一处理错误的REST 请求
将错误信息作为警告弹出即可
新peer无法加入现有的通道
Reproduced Steps
log:
2018-01-03 08:49:33.856 UTC [statebasedval] ValidateAndPrepareBatch -> DEBU 6d7 Block [1] Transaction index [0] TxId [] marked as valid by state validator
2018-01-03 08:49:33.856 UTC [valimpl] ValidateAndPrepareBatch -> DEBU 6d8 validating rwset...
2018-01-03 08:49:33.856 UTC [valimpl] ValidateAndPrepareBatch -> DEBU 6d9 postprocessing ProtoBlock...
2018-01-03 08:49:33.856 UTC [valimpl] ValidateAndPrepareBatch -> DEBU 6da ValidateAndPrepareBatch() complete
2018-01-03 08:49:33.856 UTC [kvledger] CommitWithPvtData -> DEBU 6db Channel [shine0channel1]: Committing block [1] to storage
2018-01-03 08:49:33.858 UTC [cauthdsl] deduplicate -> ERRO 6dc Principal deserialization failure (MSP OrdererOrg1MSP is unknown) for identity 0a0e4f7264657265724f7267314d53501292072d2d2d2d2d424547494e202d2d2d2d2d0a4d49494368
544343416979674177494241674955414e49502f754f66347043673574446342757254306d58775a4b4577436759494b6f5a497a6a3045417749770a6144454c4d416b474131554542684d4356564d78467a415642674e5642416754446b3576636e526f49454e68636d3973615735684d52517
7456759445651514b0a457774496558426c636d786c5a47646c636a45504d4130474131554543784d47526d4669636d6c6a4d526b7746775944565151444578426d59574a7961574d740a5932457463325679646d56794d423458445445334d5449784d5441344e4455774d466f58445445344d
5449784d5441344e4455774d466f77667a454c4d416b470a4131554542684d4351303478456a415142674e564241675443564e6f5957356e49456868615445534d4241474131554542784d4a55326868626d6367534746700a4d525177456759445651514b45777450636d526c636d567954334
a6e4d5445584d4255474131554543784d4f54334a6b5a584a6c636b39795a7a464e553141780a4754415842674e5642414d4d45484e6f6157356c4d46397362324e686247397a626a45775754415442676371686b6a4f5051494242676771686b6a4f50514d420a42774e43414153456c595333
336733414a76433156386e6248645a4963314373675968612f4f7a4c5650742f635665586766374f2b62513371754747694774410a71666d5a30477764556d6367436f574e59556e5243393142527070326f3447634d49475a4d41344741315564447745422f775145417749486744414d42674
e560a48524d4241663845416a41414d423047413155644467515742425252787649376d7164584d44592b6655784868562f74626f426a4c7a416642674e5648534d450a47444157674252522f3274522b495375466f68467270316555657255386e5a344f7a415342674e5648524545437a414a
67676469654449304d6a49784d4134470a413156695a41514862334a6b5a584a6c636a415642674e56596d5545446b39795a4756795a584a50636d637854564e514d416f4743437147534d343942414d430a413063414d45514349424864774355384c41414d67394649375854504a524248724
34a6d505171364535636b4e7363635761636a416941464c344f33682f72580a51684c332f7339774a4932625261703277633663787a7a6d6959704e5169737474773d3d0a2d2d2d2d2d454e44202d2d2d2d2d0a
2018-01-03 08:49:33.858 UTC [blocksProvider] DeliverBlocks -> ERRO 6dd [shine0channel1] Error verifying block with sequnce number 2, due to Failed to reach implicit threshold of 1 sub-policies, required 1 remaining
2018-01-03 08:49:33.866 UTC [cauthdsl] deduplicate -> ERRO 6de Principal deserialization failure (MSP OrdererOrg1MSP is unknown) for identity 0a0e4f7264657265724f7267314d53501292072d2d2d2d2d424547494e202d2d2d2d2d0a4d49494368
544343416979674177494241674955414e49502f754f66347043673574446342757254306d58775a4b4577436759494b6f5a497a6a3045417749770a6144454c4d416b474131554542684d4356564d78467a415642674e5642416754446b3576636e526f49454e68636d3973615735684d52517
7456759445651514b0a457774496558426c636d786c5a47646c636a45504d4130474131554543784d47526d4669636d6c6a4d526b7746775944565151444578426d59574a7961574d740a5932457463325679646d56794d423458445445334d5449784d5441344e4455774d466f58445445344d
5449784d5441344e4455774d466f77667a454c4d416b470a4131554542684d4351303478456a415142674e564241675443564e6f5957356e49456868615445534d4241474131554542784d4a55326868626d6367534746700a4d525177456759445651514b45777450636d526c636d567954334
a6e4d5445584d4255474131554543784d4f54334a6b5a584a6c636b39795a7a464e553141780a4754415842674e5642414d4d45484e6f6157356c4d46397362324e686247397a626a45775754415442676371686b6a4f5051494242676771686b6a4f50514d420a42774e43414153456c595333
336733414a76433156386e6248645a4963314373675968612f4f7a4c5650742f635665586766374f2b62513371754747694774410a71666d5a30477764556d6367436f574e59556e5243393142527070326f3447634d49475a4d41344741315564447745422f775145417749486744414d42674
e560a48524d4241663845416a41414d423047413155644467515742425252787649376d7164584d44592b6655784868562f74626f426a4c7a416642674e5648534d450a47444157674252522f3274522b495375466f68467270316555657255386e5a344f7a415342674e5648524545437a414a
67676469654449304d6a49784d4134470a413156695a41514862334a6b5a584a6c636a415642674e56596d5545446b39795a4756795a584a50636d637854564e514d416f4743437147534d343942414d430a413063414d45514349424864774355384c41414d67394649375854504a524248724
34a6d505171364535636b4e7363635761636a416941464c344f33682f72580a51684c332f7339774a4932625261703277633663787a7a6d6959704e5169737474773d3d0a2d2d2d2d2d454e44202d2d2d2d2d0a
2018-01-03 08:49:33.866 UTC [blocksProvider] DeliverBlocks -> ERRO 6df [shine0channel1] Error verifying block with sequnce number 3, due to Failed to reach implicit threshold of 1 sub-policies, required 1 remaining
2018-01-03 08:49:33.876 UTC [fsblkstorage] newBlockIndex -> DEBU 6e0 newBlockIndex() - indexItems:[[BlockHash BlockNum TxID BlockNumTranNum BlockTxID TxValidationCode]]
2018-01-03 08:49:33.876 UTC [fsblkstorage] syncIndex -> INFO 6e1 No block indexed, Last block present in block files=[0]
2018-01-03 08:49:33.876 UTC [fsblkstorage] syncIndex -> INFO 6e2 Start building index from block [0]
2018-01-03 08:49:33.876 UTC [fsblkstorage] newBlockfileStream -> DEBU 6e3 newBlockfileStream(): filePath=[/var/hyperledger/production/ledgersData/chains/chains/shine0channel2/blockfile_000000], startOffset=[0]
2018-01-03 08:49:33.876 UTC [fsblkstorage] nextBlockBytesAndPlacementInfo -> DEBU 6e4 Finished reading file number [0]
2018-01-03 08:49:33.876 UTC [fsblkstorage] nextBlockBytesAndPlacementInfo -> DEBU 6e5 blockbytes [0] read from file [0]
2018-01-03 08:49:33.876 UTC [fsblkstorage] syncIndex -> INFO 6e6 Finished building index. Last block indexed [0]
2018-01-03 08:49:33.876 UTC [kvledger] newKVLedger -> DEBU 6e7 Creating KVLedger ledgerID=shine0channel2:
2018-01-03 08:49:33.876 UTC [kvledger] recoverDBs -> DEBU 6e8 Entering recoverDB()
2018-01-03 08:49:33.876 UTC [kvledger] recoverDBs -> DEBU 6e9 Block storage is empty.
2018-01-03 08:49:33.876 UTC [kvledger] CommitWithPvtData -> DEBU 6ea Channel [shine0channel2]: Validating state for block [0]
2018-01-03 08:49:33.877 UTC [lockbasedtxmgr] ValidateAndPrepare -> DEBU 6eb Validating new block with num trans = [1]
2018-01-03 08:49:33.877 UTC [valimpl] ValidateAndPrepareBatch -> DEBU 6ec ValidateAndPrepareBatch() for block number = [0]
2018-01-03 08:49:33.877 UTC [valimpl] ValidateAndPrepareBatch -> DEBU 6ed preprocessing ProtoBlock...
2018-01-03 08:49:33.877 UTC [cauthdsl] deduplicate -> ERRO 6ee Principal deserialization failure (MSP OrdererOrg1MSP is unknown) for identity 0a0e4f7264657265724f7267314d53501292072d2d2d2d2d424547494e202d2d2d2d2d0a4d49494368
544343416979674177494241674955414e49502f754f66347043673574446342757254306d58775a4b4577436759494b6f5a497a6a3045417749770a6144454c4d416b474131554542684d4356564d78467a415642674e5642416754446b3576636e526f49454e68636d3973615735684d52517
7456759445651514b0a457774496558426c636d786c5a47646c636a45504d4130474131554543784d47526d4669636d6c6a4d526b7746775944565151444578426d59574a7961574d740a5932457463325679646d56794d423458445445334d5449784d5441344e4455774d466f58445445344d
5449784d5441344e4455774d466f77667a454c4d416b470a4131554542684d4351303478456a415142674e564241675443564e6f5957356e49456868615445534d4241474131554542784d4a55326868626d6367534746700a4d525177456759445651514b45777450636d526c636d567954334
a6e4d5445584d4255474131554543784d4f54334a6b5a584a6c636b39795a7a464e553141780a4754415842674e5642414d4d45484e6f6157356c4d46397362324e686247397a626a45775754415442676371686b6a4f5051494242676771686b6a4f50514d420a42774e43414153456c595333
336733414a76433156386e6248645a4963314373675968612f4f7a4c5650742f635665586766374f2b62513371754747694774410a71666d5a30477764556d6367436f574e59556e5243393142527070326f3447634d49475a4d41344741315564447745422f775145417749486744414d42674
e560a48524d4241663845416a41414d423047413155644467515742425252787649376d7164584d44592b6655784868562f74626f426a4c7a416642674e5648534d450a47444157674252522f3274522b495375466f68467270316555657255386e5a344f7a415342674e5648524545437a414a
67676469654449304d6a49784d4134470a413156695a41514862334a6b5a584a6c636a415642674e56596d5545446b39795a4756795a584a50636d637854564e514d416f4743437147534d343942414d430a413063414d45514349424864774355384c41414d67394649375854504a524248724
34a6d505171364535636b4e7363635761636a416941464c344f33682f72580a51684c332f7339774a4932625261703277633663787a7a6d6959704e5169737474773d3d0a2d2d2d2d2d454e44202d2d2d2d2d0a
2018-01-03 08:49:33.877 UTC [valimpl] preprocessProtoBlock -> DEBU 6ef txType=CONFIG
2018-01-03 08:49:33.877 UTC [valimpl] processNonEndorserTx -> DEBU 6f1 Performing custom processing for transaction [txid=], [txType=CONFIG]
Expected Result
Actual Result
添加监控的设计文档
监控中主要组件包括:
- Job
- Event
- Websocket
- Alert
[Frontend] No anchor peers in the channel edit page
Reproeuce steps:
- 创建一个通道, 选择一个应用组织, 并为其设置anchor peer
- 编辑上一步创建的应用组织, 并右键点击其应用组织
- Expected Result: 显示第一步添加的anchor peer
- Actual Result: 没有anchor peer
创建节点需要根据当前节点所在区块链网络的MSP类型进行合理性检查
为了防止同一个CA下存在两个一样的Identity, 需要根据区块链网络的MSP类型进行检查其合法性
[Backend] 创建通道包含两个应用组织, 删除其中的一个后, 无法再次添加回来
Reproduced Steps:
- 创建通道, 包含两个应用组织
- 编辑上一步创建的通道, 去掉其中的一个应用组织
- 编辑第一步创建的通道, 把之前删掉的应用组织加回来, 确定创建
Expected Result: 创建成功
Actual Result: 创建失败, 后台提示 Error validating DeltaSet: Attempt to set key [Values] /Channel/Application/COBOrg/MSP to version 0, but key is at version 0
TODO: 新添加业务组织和peer以及新添加排序组织和OSN的测试
Reproduced Steps
Expected Result
Actual Result
实现区块链和通道的删除操作
删除区块链
要删除以下数据:
- 区块链本身
- 对应的系统通道
- 与联盟相关联的数据
- 与排序组织相关联的数据
- 与排序节点相关联的数据
删除通道
要删除一下数据
- 通道本身
- 与应用组织关联的数据
- 与排序组织关联的数据
- 与排序节点关联的数据
- 与联盟关联的数据
前段表单验证国际化需要刷新页面
前端表单的rules中validator的message绑定之后, 后面更改语言后无法自动更换提示信息
Reproduced Steps
在智能合约创建页面, 删除智能合约名称, 提示请输入名称, 鼠标点击其他位置后, 提示请输入智能合约名称, 这是切换语言
Expected Result
请输入智能合约名称 变成英文
Actual Result
请输入智能合约名称 还是中午, 只有刷新页面后才能变成英文
前端性能优化
- 缓存metadata到浏览器本地缓存
- 缓存system config
msp id 必须是一个合法的变量型字符串
由于msp id 会放到endorsement policy进行evaluate, msp id 会被当做普通的golang 变量处理, 所有msp id应该满足:
- 首字符是字母;
- 仅包含字母, 数字和下划线
创建通道时切换区块链网络后, multi-select 左边包含右边已选项
Reproduced Steps
- 创建通道, 选择排序服务组织
- 切换到一个区块链网络, 该网络的排序服务组织中包含上一步选的排序服务组织
- 检查 当前可选的排序服务组织
Expected Result
不包含已选的排序服务组织
Actual Result
两边有重复的排序服务组织
[Frontend] 编辑通道时, 添加一个新的排序组织后, 提交后提示这个组织不存在
Reproduce Steps
- 创建一个区块链网络, 包含两个排序组织
- 创建一个通道, 先包含一个排序组织
- 编辑该通道, 添加另外一个排序组织
Expected Result: 添加成功
Actual Result: 添加失败, 提示有排序组织不存在
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.