Commit def8d4d2 authored by duanjinfei's avatar duanjinfei

change commit validator

parent 5b4b486b
.idea .idea
logs logs
*.DS_Store *.DS_Store
*/mydb/ */mydb/
\ No newline at end of file mydb
...@@ -22,7 +22,6 @@ type Config struct { ...@@ -22,7 +22,6 @@ type Config struct {
HeartRespTimeMillis int64 HeartRespTimeMillis int64
TaskValidatorTime float64 `json:"task_validator_time"` TaskValidatorTime float64 `json:"task_validator_time"`
BenefitAddress string `json:"benefit_address"` BenefitAddress string `json:"benefit_address"`
DockerSignApi string `json:"docker_sign_api"`
ContainerNum int64 `json:"container_num"` ContainerNum int64 `json:"container_num"`
} }
...@@ -36,7 +35,7 @@ func init() { ...@@ -36,7 +35,7 @@ func init() {
viper.SetConfigType("json") viper.SetConfigType("json")
// 设置配置文件所在的目录 // 设置配置文件所在的目录
viper.AddConfigPath("../") viper.AddConfigPath("./")
// 读取配置文件 // 读取配置文件
if err := viper.ReadInConfig(); err != nil { if err := viper.ReadInConfig(); err != nil {
......
...@@ -5,6 +5,5 @@ ...@@ -5,6 +5,5 @@
"benefit_address": "0x84A3175be614F5886f99Da506dF08682DF530739", "benefit_address": "0x84A3175be614F5886f99Da506dF08682DF530739",
"heart_response": 30, "heart_response": 30,
"task_validator_time": 1, "task_validator_time": 1,
"docker_sign_api":"http://192.168.1.120:8888/llm/test/get/sign",
"container_num": 1 "container_num": 1
} }
\ No newline at end of file
...@@ -17,12 +17,23 @@ func init() { ...@@ -17,12 +17,23 @@ func init() {
if err != nil { if err != nil {
log.Error("Leveldb open file failed: ", err) log.Error("Leveldb open file failed: ", err)
} }
defer func(dbInstance *leveldb.DB) {
err := dbInstance.Close() // 遍历数据库,删除所有数据
if err != nil { iter := dbInstance.NewIterator(nil, nil)
log.Error("Leveldb close file failed: ", err) for iter.Next() {
key := iter.Key()
// 删除 key 对应的数据
if err := dbInstance.Delete(key, nil); err != nil {
log.Error("Leveldb delete failed: ", err)
} }
}(dbInstance) }
iter.Release()
//defer func(dbInstance *leveldb.DB) {
// err := dbInstance.Close()
// if err != nil {
// log.Error("Leveldb close file failed: ", err)
// }
//}(dbInstance)
} }
func Put(key string, value []byte) error { func Put(key string, value []byte) error {
......
...@@ -18,7 +18,9 @@ type DockerCmd struct { ...@@ -18,7 +18,9 @@ type DockerCmd struct {
} }
type TaskReq struct { type TaskReq struct {
TaskId string `json:"task_id"` TaskId string `json:"task_id"`
TaskParam []byte `json:"task_param"`
TaskResult []byte `json:"task_result"`
} }
type ContainerSignStruct struct { type ContainerSignStruct struct {
......
MANIFEST-000063 MANIFEST-000026
MANIFEST-000061 MANIFEST-000024
=============== Jan 26, 2024 (CST) =============== =============== Jan 30, 2024 (CST) ===============
18:03:29.824360 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed 16:08:16.675783 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
18:03:29.856869 db@open opening 16:08:16.690258 db@open opening
18:03:29.857845 version@stat F·[] S·0B[] Sc·[] 16:08:16.691103 version@stat F·[] S·0B[] Sc·[]
18:03:29.861074 db@janitor F·2 G·0 16:08:16.698374 db@janitor F·2 G·0
18:03:29.861105 db@open done T·4.200125ms 16:08:16.698422 db@open done T·8.133042ms
18:03:29.861131 db@close closing =============== Jan 30, 2024 (CST) ===============
18:03:29.861221 db@close done T·88.833µs 16:12:48.012694 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
=============== Jan 26, 2024 (CST) =============== 16:12:48.013143 version@stat F·[] S·0B[] Sc·[]
18:04:09.688193 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed 16:12:48.013217 db@open opening
18:04:09.689166 version@stat F·[] S·0B[] Sc·[] 16:12:48.013304 journal@recovery F·1
18:04:09.689197 db@open opening 16:12:48.013927 journal@recovery recovering @1
18:04:09.689283 journal@recovery F·1 16:12:48.019428 memdb@flush created L0@2 N·1 S·596B "598..e5c,v1":"598..e5c,v1"
18:04:09.689740 journal@recovery recovering @1 16:12:48.019673 version@stat F·[1] S·596B[596B] Sc·[0.25]
18:04:09.690045 version@stat F·[] S·0B[] Sc·[] 16:12:48.039624 db@janitor F·3 G·0
18:04:09.718435 db@janitor F·2 G·0 16:12:48.039666 db@open done T·26.438875ms
18:04:09.718467 db@open done T·29.260167ms =============== Jan 30, 2024 (CST) ===============
18:04:09.718488 db@close closing 16:15:51.077043 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
18:04:09.718654 db@close done T·157.375µs 16:15:51.077438 version@stat F·[1] S·596B[596B] Sc·[0.25]
=============== Jan 26, 2024 (CST) =============== 16:15:51.077509 db@open opening
18:05:07.360931 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed 16:15:51.077626 journal@recovery F·1
18:05:07.361910 version@stat F·[] S·0B[] Sc·[] 16:15:51.078171 journal@recovery recovering @3
18:05:07.361950 db@open opening 16:15:51.083144 memdb@flush created L0@5 N·2 S·646B "129..063,v4":"598..e5c,d3"
18:05:07.362029 journal@recovery F·1 16:15:51.083398 version@stat F·[2] S·1KiB[1KiB] Sc·[0.50]
18:05:07.362507 journal@recovery recovering @2 16:15:51.116319 db@janitor F·4 G·0
18:05:07.362786 version@stat F·[] S·0B[] Sc·[] 16:15:51.116362 db@open done T·38.83625ms
18:05:07.402917 db@janitor F·2 G·0 =============== Jan 30, 2024 (CST) ===============
18:05:07.402966 db@open done T·41.002875ms 16:30:39.692132 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
18:05:07.402990 db@close closing 16:30:39.693027 version@stat F·[2] S·1KiB[1KiB] Sc·[0.50]
18:05:07.403077 db@close done T·84.333µs 16:30:39.693099 db@open opening
=============== Jan 26, 2024 (CST) =============== 16:30:39.693192 journal@recovery F·1
18:06:00.593992 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed 16:30:39.693910 journal@recovery recovering @6
18:06:00.594798 version@stat F·[] S·0B[] Sc·[] 16:30:39.707666 memdb@flush created L0@8 N·2 S·642B "129..063,d6":"e19..a9a,v7"
18:06:00.594965 db@open opening 16:30:39.707968 version@stat F·[3] S·1KiB[1KiB] Sc·[0.75]
18:06:00.595069 journal@recovery F·1 16:30:39.734814 db@janitor F·5 G·0
18:06:00.596321 journal@recovery recovering @4 16:30:39.735257 db@open done T·42.148375ms
18:06:00.596667 version@stat F·[] S·0B[] Sc·[] =============== Jan 30, 2024 (CST) ===============
18:06:00.619305 db@janitor F·2 G·0 16:32:14.627221 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
18:06:00.619350 db@open done T·24.372292ms 16:32:14.627960 version@stat F·[3] S·1KiB[1KiB] Sc·[0.75]
18:06:00.619373 db@close closing 16:32:14.628036 db@open opening
18:06:00.620079 db@close done T·239.416µs 16:32:14.628132 journal@recovery F·1
=============== Jan 26, 2024 (CST) =============== 16:32:14.628857 journal@recovery recovering @9
18:06:20.235333 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed 16:32:14.638785 memdb@flush created L0@11 N·3 S·1KiB "070..c0b,v11":"e19..a9a,d9"
18:06:20.236351 version@stat F·[] S·0B[] Sc·[] 16:32:14.639172 version@stat F·[4] S·2KiB[2KiB] Sc·[1.00]
18:06:20.236402 db@open opening 16:32:14.657783 db@janitor F·6 G·0
18:06:20.236510 journal@recovery F·1 16:32:14.657841 db@open done T·29.793583ms
18:06:20.236991 journal@recovery recovering @6 16:32:14.658012 table@compaction L0·4 -> L1·0 S·2KiB Q·12
18:06:20.237335 version@stat F·[] S·0B[] Sc·[] 16:32:14.661769 table@build created L1@14 N·2 S·983B "070..c0b,v11":"071..271,v10"
18:06:20.262771 db@janitor F·2 G·0 16:32:14.661826 version@stat F·[0 1] S·983B[0B 983B] Sc·[0.00 0.00]
18:06:20.262809 db@open done T·26.393208ms 16:32:14.665796 table@compaction committed F-3 S-1KiB Ke·0 D·6 T·7.756083ms
18:06:20.262861 db@close closing 16:32:14.665979 table@remove removed @8
18:06:20.262978 db@close done T·108.417µs 16:32:14.666364 table@remove removed @5
=============== Jan 26, 2024 (CST) =============== 16:32:14.666580 table@remove removed @2
18:07:34.236592 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed =============== Jan 30, 2024 (CST) ===============
18:07:34.237434 version@stat F·[] S·0B[] Sc·[] 16:37:15.768880 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
18:07:34.237489 db@open opening 16:37:15.771005 version@stat F·[0 1] S·983B[0B 983B] Sc·[0.00 0.00]
18:07:34.237576 journal@recovery F·1 16:37:15.771067 db@open opening
18:07:34.238066 journal@recovery recovering @8 16:37:15.771180 journal@recovery F·1
18:07:34.238386 version@stat F·[] S·0B[] Sc·[] 16:37:15.771768 journal@recovery recovering @12
18:07:34.265078 db@janitor F·2 G·0 16:37:15.776460 memdb@flush created L0@15 N·4 S·1KiB "070..c0b,d13":"b4e..be4,v16"
18:07:34.265122 db@open done T·27.622709ms 16:37:15.776753 version@stat F·[1 1] S·2KiB[1KiB 983B] Sc·[0.25 0.00]
18:07:34.265145 db@close closing 16:37:15.799788 db@janitor F·5 G·1
18:07:34.265301 db@close done T·144.291µs 16:37:15.799806 db@janitor removing table-11
=============== Jan 26, 2024 (CST) =============== 16:37:15.799887 db@open done T·28.807417ms
18:08:27.420140 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed =============== Jan 30, 2024 (CST) ===============
18:08:27.421157 version@stat F·[] S·0B[] Sc·[] 16:39:53.371400 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
18:08:27.421189 db@open opening 16:39:53.372296 version@stat F·[1 1] S·2KiB[1KiB 983B] Sc·[0.25 0.00]
18:08:27.421282 journal@recovery F·1 16:39:53.372372 db@open opening
18:08:27.421769 journal@recovery recovering @10 16:39:53.372494 journal@recovery F·1
18:08:27.422054 version@stat F·[] S·0B[] Sc·[] 16:39:53.373025 journal@recovery recovering @16
18:08:27.445249 db@janitor F·2 G·0 16:39:53.380195 memdb@flush created L0@18 N·2 S·196B "4a9..104,d18":"b4e..be4,d19"
18:08:27.445282 db@open done T·24.08425ms 16:39:53.380440 version@stat F·[2 1] S·2KiB[1KiB 983B] Sc·[0.50 0.00]
18:08:27.445294 db@close closing 16:39:53.403601 db@janitor F·5 G·0
18:08:27.445393 db@close done T·93.083µs 16:39:53.403636 db@open done T·31.251375ms
=============== Jan 26, 2024 (CST) =============== =============== Jan 30, 2024 (CST) ===============
18:09:02.091931 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed 16:41:09.891449 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
18:09:02.092765 version@stat F·[] S·0B[] Sc·[] 16:41:09.892288 version@stat F·[2 1] S·2KiB[1KiB 983B] Sc·[0.50 0.00]
18:09:02.092805 db@open opening 16:41:09.892357 db@open opening
18:09:02.092893 journal@recovery F·1 16:41:09.892448 journal@recovery F·1
18:09:02.093422 journal@recovery recovering @12 16:41:09.893208 journal@recovery recovering @19
18:09:02.093739 version@stat F·[] S·0B[] Sc·[] 16:41:09.893551 version@stat F·[2 1] S·2KiB[1KiB 983B] Sc·[0.50 0.00]
18:09:02.116099 db@janitor F·2 G·0 16:41:09.925162 db@janitor F·5 G·0
18:09:02.116143 db@open done T·23.328833ms 16:41:09.925210 db@open done T·32.8435ms
18:09:02.116156 db@close closing =============== Jan 30, 2024 (CST) ===============
18:09:02.116266 db@close done T·102.833µs 17:13:08.073592 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
=============== Jan 26, 2024 (CST) =============== 17:13:08.074332 version@stat F·[2 1] S·2KiB[1KiB 983B] Sc·[0.50 0.00]
18:09:30.704871 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed 17:13:08.074433 db@open opening
18:09:30.705762 version@stat F·[] S·0B[] Sc·[] 17:13:08.074540 journal@recovery F·1
18:09:30.705804 db@open opening 17:13:08.075214 journal@recovery recovering @21
18:09:30.705884 journal@recovery F·1 17:13:08.075574 version@stat F·[2 1] S·2KiB[1KiB 983B] Sc·[0.50 0.00]
18:09:30.706422 journal@recovery recovering @14 17:13:08.119105 db@janitor F·5 G·0
18:09:30.706712 version@stat F·[] S·0B[] Sc·[] 17:13:08.119156 db@open done T·44.707584ms
18:09:30.729460 db@janitor F·2 G·0 =============== Jan 30, 2024 (CST) ===============
18:09:30.729495 db@open done T·23.681083ms 18:44:01.432023 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
18:09:30.729506 db@close closing 18:44:01.433068 version@stat F·[2 1] S·2KiB[1KiB 983B] Sc·[0.50 0.00]
18:09:30.729633 db@close done T·122.208µs 18:44:01.433132 db@open opening
=============== Jan 26, 2024 (CST) =============== 18:44:01.433251 journal@recovery F·1
18:10:58.808117 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed 18:44:01.433882 journal@recovery recovering @23
18:10:58.808711 version@stat F·[] S·0B[] Sc·[] 18:44:01.434712 version@stat F·[2 1] S·2KiB[1KiB 983B] Sc·[0.50 0.00]
18:10:58.808750 db@open opening 18:44:01.455446 db@janitor F·5 G·0
18:10:58.808843 journal@recovery F·1 18:44:01.455484 db@open done T·22.337708ms
18:10:58.809295 journal@recovery recovering @16
18:10:58.809649 version@stat F·[] S·0B[] Sc·[]
18:10:58.840081 db@janitor F·2 G·0
18:10:58.840165 db@open done T·31.404958ms
18:10:58.840178 db@close closing
18:10:58.840266 db@close done T·86.917µs
=============== Jan 26, 2024 (CST) ===============
18:11:12.379193 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
18:11:12.379833 version@stat F·[] S·0B[] Sc·[]
18:11:12.379870 db@open opening
18:11:12.379955 journal@recovery F·1
18:11:12.380407 journal@recovery recovering @18
18:11:12.380710 version@stat F·[] S·0B[] Sc·[]
18:11:12.409020 db@janitor F·2 G·0
18:11:12.409062 db@open done T·29.182792ms
18:11:12.409084 db@close closing
18:11:12.409286 db@close done T·155.625µs
=============== Jan 26, 2024 (CST) ===============
18:26:36.720642 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
18:26:36.721481 version@stat F·[] S·0B[] Sc·[]
18:26:36.721513 db@open opening
18:26:36.721627 journal@recovery F·1
18:26:36.722113 journal@recovery recovering @20
18:26:36.722463 version@stat F·[] S·0B[] Sc·[]
18:26:36.750227 db@janitor F·2 G·0
18:26:36.750273 db@open done T·28.750166ms
18:26:36.750297 db@close closing
18:26:36.750447 db@close done T·143.417µs
=============== Jan 26, 2024 (CST) ===============
18:45:12.217148 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
18:45:12.219024 version@stat F·[] S·0B[] Sc·[]
18:45:12.219069 db@open opening
18:45:12.219168 journal@recovery F·1
18:45:12.219608 journal@recovery recovering @22
18:45:12.219968 version@stat F·[] S·0B[] Sc·[]
18:45:12.250104 db@janitor F·2 G·0
18:45:12.250138 db@open done T·31.078167ms
18:45:12.250148 db@close closing
18:45:12.250244 db@close done T·91.417µs
=============== Jan 26, 2024 (CST) ===============
18:48:06.754415 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
18:48:06.755299 version@stat F·[] S·0B[] Sc·[]
18:48:06.755336 db@open opening
18:48:06.755704 journal@recovery F·1
18:48:06.756360 journal@recovery recovering @24
18:48:06.756735 version@stat F·[] S·0B[] Sc·[]
18:48:06.786134 db@janitor F·2 G·0
18:48:06.786192 db@open done T·30.846083ms
18:48:06.786229 db@close closing
18:48:06.786361 db@close done T·130.583µs
=============== Jan 26, 2024 (CST) ===============
18:48:16.828157 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
18:48:16.828556 version@stat F·[] S·0B[] Sc·[]
18:48:16.828586 db@open opening
18:48:16.828670 journal@recovery F·1
18:48:16.829160 journal@recovery recovering @26
18:48:16.829508 version@stat F·[] S·0B[] Sc·[]
18:48:16.855269 db@janitor F·2 G·0
18:48:16.855303 db@open done T·26.707208ms
18:48:16.855325 db@close closing
18:48:16.855468 db@close done T·141.417µs
=============== Jan 26, 2024 (CST) ===============
19:16:28.010273 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
19:16:28.011183 version@stat F·[] S·0B[] Sc·[]
19:16:28.011220 db@open opening
19:16:28.011529 journal@recovery F·1
19:16:28.012067 journal@recovery recovering @28
19:16:28.012368 version@stat F·[] S·0B[] Sc·[]
19:16:28.035107 db@janitor F·2 G·0
19:16:28.035155 db@open done T·23.907584ms
19:16:28.035197 db@close closing
19:16:28.035279 db@close done T·81.375µs
=============== Jan 29, 2024 (CST) ===============
11:09:14.179108 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
11:09:14.180477 version@stat F·[] S·0B[] Sc·[]
11:09:14.180517 db@open opening
11:09:14.180620 journal@recovery F·1
11:09:14.181123 journal@recovery recovering @30
11:09:14.181526 version@stat F·[] S·0B[] Sc·[]
11:09:14.210468 db@janitor F·2 G·0
11:09:14.210511 db@open done T·29.982791ms
11:09:14.210522 db@close closing
11:09:14.210609 db@close done T·81.167µs
=============== Jan 29, 2024 (CST) ===============
11:12:38.100494 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
11:12:38.102370 version@stat F·[] S·0B[] Sc·[]
11:12:38.102397 db@open opening
11:12:38.102470 journal@recovery F·1
11:12:38.102853 journal@recovery recovering @32
11:12:38.103111 version@stat F·[] S·0B[] Sc·[]
11:12:38.127028 db@janitor F·2 G·0
11:12:38.127072 db@open done T·24.665958ms
11:12:38.127095 db@close closing
11:12:38.127259 db@close done T·162.166µs
=============== Jan 29, 2024 (CST) ===============
11:15:51.436668 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
11:15:51.437605 version@stat F·[] S·0B[] Sc·[]
11:15:51.437640 db@open opening
11:15:51.437733 journal@recovery F·1
11:15:51.438292 journal@recovery recovering @34
11:15:51.438584 version@stat F·[] S·0B[] Sc·[]
11:15:51.465411 db@janitor F·2 G·0
11:15:51.465444 db@open done T·27.794667ms
11:15:51.465462 db@close closing
11:15:51.465550 db@close done T·85.917µs
=============== Jan 29, 2024 (CST) ===============
11:17:03.426617 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
11:17:03.427614 version@stat F·[] S·0B[] Sc·[]
11:17:03.427653 db@open opening
11:17:03.427941 journal@recovery F·1
11:17:03.428588 journal@recovery recovering @36
11:17:03.428889 version@stat F·[] S·0B[] Sc·[]
11:17:03.463174 db@janitor F·2 G·0
11:17:03.463218 db@open done T·35.55525ms
11:17:03.463250 db@close closing
11:17:03.463326 db@close done T·73.875µs
=============== Jan 29, 2024 (CST) ===============
11:21:19.798258 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
11:21:19.799170 version@stat F·[] S·0B[] Sc·[]
11:21:19.799201 db@open opening
11:21:19.799288 journal@recovery F·1
11:21:19.799751 journal@recovery recovering @38
11:21:19.800127 version@stat F·[] S·0B[] Sc·[]
11:21:19.834100 db@janitor F·2 G·0
11:21:19.834145 db@open done T·34.935291ms
11:21:19.834184 db@close closing
11:21:19.834257 db@close done T·65.375µs
=============== Jan 29, 2024 (CST) ===============
11:22:14.678626 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
11:22:14.679611 version@stat F·[] S·0B[] Sc·[]
11:22:14.679647 db@open opening
11:22:14.679743 journal@recovery F·1
11:22:14.680253 journal@recovery recovering @40
11:22:14.680602 version@stat F·[] S·0B[] Sc·[]
11:22:14.709390 db@janitor F·2 G·0
11:22:14.709435 db@open done T·29.779667ms
11:22:14.709445 db@close closing
11:22:14.709540 db@close done T·91.75µs
=============== Jan 29, 2024 (CST) ===============
11:23:44.191169 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
11:23:44.192247 version@stat F·[] S·0B[] Sc·[]
11:23:44.192285 db@open opening
11:23:44.192394 journal@recovery F·1
11:23:44.192937 journal@recovery recovering @42
11:23:44.193325 version@stat F·[] S·0B[] Sc·[]
11:23:44.215264 db@janitor F·2 G·0
11:23:44.215312 db@open done T·23.01175ms
11:23:44.215364 db@close closing
11:23:44.215442 db@close done T·78.125µs
=============== Jan 29, 2024 (CST) ===============
11:40:34.197824 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
11:40:34.198719 version@stat F·[] S·0B[] Sc·[]
11:40:34.198748 db@open opening
11:40:34.198821 journal@recovery F·1
11:40:34.199235 journal@recovery recovering @44
11:40:34.199581 version@stat F·[] S·0B[] Sc·[]
11:40:34.228213 db@janitor F·2 G·0
11:40:34.228255 db@open done T·29.494583ms
11:40:34.228267 db@close closing
11:40:34.228431 db@close done T·163.917µs
=============== Jan 29, 2024 (CST) ===============
11:43:09.312932 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
11:43:09.313892 version@stat F·[] S·0B[] Sc·[]
11:43:09.313922 db@open opening
11:43:09.314023 journal@recovery F·1
11:43:09.314489 journal@recovery recovering @46
11:43:09.314808 version@stat F·[] S·0B[] Sc·[]
11:43:09.350357 db@janitor F·2 G·0
11:43:09.350402 db@open done T·36.468ms
11:43:09.350424 db@close closing
11:43:09.350516 db@close done T·91.375µs
=============== Jan 29, 2024 (CST) ===============
11:45:23.835335 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
11:45:23.836282 version@stat F·[] S·0B[] Sc·[]
11:45:23.836317 db@open opening
11:45:23.836417 journal@recovery F·1
11:45:23.836856 journal@recovery recovering @48
11:45:23.837124 version@stat F·[] S·0B[] Sc·[]
11:45:23.867511 db@janitor F·2 G·0
11:45:23.867568 db@open done T·31.228375ms
11:45:23.867586 db@close closing
11:45:23.867681 db@close done T·84.292µs
=============== Jan 29, 2024 (CST) ===============
11:47:23.345871 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
11:47:23.346872 version@stat F·[] S·0B[] Sc·[]
11:47:23.346906 db@open opening
11:47:23.346997 journal@recovery F·1
11:47:23.347464 journal@recovery recovering @50
11:47:23.347736 version@stat F·[] S·0B[] Sc·[]
11:47:23.378294 db@janitor F·2 G·0
11:47:23.378336 db@open done T·31.417042ms
11:47:23.378364 db@close closing
11:47:23.378427 db@close done T·62.5µs
=============== Jan 29, 2024 (CST) ===============
12:12:20.785865 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
12:12:20.786834 version@stat F·[] S·0B[] Sc·[]
12:12:20.786900 db@open opening
12:12:20.786979 journal@recovery F·1
12:12:20.787637 journal@recovery recovering @52
12:12:20.787976 version@stat F·[] S·0B[] Sc·[]
12:12:20.810285 db@janitor F·2 G·0
12:12:20.810331 db@open done T·23.415916ms
12:12:20.810382 db@close closing
12:12:20.810584 db@close done T·189.958µs
=============== Jan 29, 2024 (CST) ===============
12:13:18.939925 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
12:13:18.940801 version@stat F·[] S·0B[] Sc·[]
12:13:18.940877 db@open opening
12:13:18.940986 journal@recovery F·1
12:13:18.941563 journal@recovery recovering @54
12:13:18.941924 version@stat F·[] S·0B[] Sc·[]
12:13:18.965259 db@janitor F·2 G·0
12:13:18.965303 db@open done T·24.409917ms
12:13:18.965325 db@close closing
12:13:18.965547 db@close done T·220.083µs
=============== Jan 29, 2024 (CST) ===============
12:23:57.676869 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
12:23:57.677743 version@stat F·[] S·0B[] Sc·[]
12:23:57.677824 db@open opening
12:23:57.677979 journal@recovery F·1
12:23:57.678712 journal@recovery recovering @56
12:23:57.679126 version@stat F·[] S·0B[] Sc·[]
12:23:57.708980 db@janitor F·2 G·0
12:23:57.709016 db@open done T·31.192916ms
12:23:57.709037 db@close closing
12:23:57.709258 db@close done T·219µs
=============== Jan 29, 2024 (CST) ===============
12:39:45.915434 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
12:39:45.916260 version@stat F·[] S·0B[] Sc·[]
12:39:45.916289 db@open opening
12:39:45.916367 journal@recovery F·1
12:39:45.917026 journal@recovery recovering @58
12:39:45.917375 version@stat F·[] S·0B[] Sc·[]
12:39:45.946807 db@janitor F·2 G·0
12:39:45.946852 db@open done T·30.551792ms
12:39:45.946933 db@close closing
12:39:45.947100 db@close done T·161.666µs
=============== Jan 29, 2024 (CST) ===============
12:41:34.002711 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
12:41:34.003829 version@stat F·[] S·0B[] Sc·[]
12:41:34.003911 db@open opening
12:41:34.004016 journal@recovery F·1
12:41:34.004746 journal@recovery recovering @60
12:41:34.005096 version@stat F·[] S·0B[] Sc·[]
12:41:34.029340 db@janitor F·2 G·0
12:41:34.029385 db@open done T·25.456792ms
12:41:34.029401 db@close closing
12:41:34.029484 db@close done T·78.958µs
...@@ -35,6 +35,7 @@ func (o *RespMsgWorker) RegisterMsgResp(nodeManager *models.NodeManagerClient, w ...@@ -35,6 +35,7 @@ func (o *RespMsgWorker) RegisterMsgResp(nodeManager *models.NodeManagerClient, w
handler: handler, handler: handler,
params: params, params: params,
} }
log.Info("---------------------------------------Send register msg ------------------------------------")
} }
func (o *RespMsgWorker) SendMsg() { func (o *RespMsgWorker) SendMsg() {
...@@ -65,6 +66,7 @@ func HeartbeatResp(params ...interface{}) *nodemanagerV1.WorkerMessage { ...@@ -65,6 +66,7 @@ func HeartbeatResp(params ...interface{}) *nodemanagerV1.WorkerMessage {
}, },
}, },
} }
log.Info("---------------------------------------Send heart beat msg ------------------------------------")
return heartRes return heartRes
} }
...@@ -83,6 +85,7 @@ func SubmitResourceMapRes(params ...interface{}) *nodemanagerV1.WorkerMessage { ...@@ -83,6 +85,7 @@ func SubmitResourceMapRes(params ...interface{}) *nodemanagerV1.WorkerMessage {
}, },
}, },
} }
log.Info("---------------------------------------Send resource map msg ------------------------------------")
return heartRes return heartRes
} }
...@@ -137,6 +140,7 @@ func DeviceInfoResp(params ...interface{}) *nodemanagerV1.WorkerMessage { ...@@ -137,6 +140,7 @@ func DeviceInfoResp(params ...interface{}) *nodemanagerV1.WorkerMessage {
}, },
}, },
} }
log.Info("---------------------------------------Send device info msg ------------------------------------")
return deviceInfoRes return deviceInfoRes
} }
...@@ -147,6 +151,7 @@ func DeviceUsageResp(params ...interface{}) *nodemanagerV1.WorkerMessage { ...@@ -147,6 +151,7 @@ func DeviceUsageResp(params ...interface{}) *nodemanagerV1.WorkerMessage {
DeviceUsage: &nodemanagerV1.DeviceUsageResponse{}, DeviceUsage: &nodemanagerV1.DeviceUsageResponse{},
}, },
} }
log.Info("---------------------------------------Send device usage msg ------------------------------------")
return deviceInfoRes return deviceInfoRes
} }
...@@ -159,6 +164,7 @@ func StatusResp(params ...interface{}) *nodemanagerV1.WorkerMessage { ...@@ -159,6 +164,7 @@ func StatusResp(params ...interface{}) *nodemanagerV1.WorkerMessage {
}, },
}, },
} }
log.Info("---------------------------------------Send device status msg ------------------------------------")
return statusRes return statusRes
} }
...@@ -175,6 +181,7 @@ func GoodbyeResp(params ...interface{}) *nodemanagerV1.WorkerMessage { ...@@ -175,6 +181,7 @@ func GoodbyeResp(params ...interface{}) *nodemanagerV1.WorkerMessage {
}, },
}, },
} }
log.Info("---------------------------------------Send good bye msg ------------------------------------")
return goodbyeMsgRes return goodbyeMsgRes
} }
...@@ -196,5 +203,6 @@ func SubmitResultResp(params ...interface{}) *nodemanagerV1.WorkerMessage { ...@@ -196,5 +203,6 @@ func SubmitResultResp(params ...interface{}) *nodemanagerV1.WorkerMessage {
}, },
}, },
} }
log.Info("---------------------------------------Send task result msg ------------------------------------")
return submitResultMsgRes return submitResultMsgRes
} }
...@@ -2,6 +2,7 @@ package nm ...@@ -2,6 +2,7 @@ package nm
import ( import (
"context" "context"
"example.com/m/conf"
"example.com/m/log" "example.com/m/log"
"example.com/m/models" "example.com/m/models"
"example.com/m/operate" "example.com/m/operate"
...@@ -29,25 +30,25 @@ func init() { ...@@ -29,25 +30,25 @@ func init() {
nodeManagerIsDel = make(map[string]bool, 0) nodeManagerIsDel = make(map[string]bool, 0)
nodeManagerChan = make(chan *models.NodeManagerClient, 0) nodeManagerChan = make(chan *models.NodeManagerClient, 0)
nodeManagerMsgChan = make(chan *nodeManagerV1.ManagerMessage, 0) nodeManagerMsgChan = make(chan *nodeManagerV1.ManagerMessage, 0)
//seed := conf.GetConfig().NmSeed seed := conf.GetConfig().NmSeed
//log.Info("Nm seed url:", seed) log.Info("Nm seed url:", seed)
//seedServiceClient := operate.ConnNmGrpc(seed) seedServiceClient := operate.ConnNmGrpc(seed)
//if seedServiceClient == nil { if seedServiceClient == nil {
// panic("Dial nm seed service client failed") panic("Dial nm seed service client failed")
//} }
//ctx, cancel := context.WithTimeout(context.Background(), time.Second*10) ctx, cancel := context.WithTimeout(context.Background(), time.Second*10)
//defer cancel() defer cancel()
//list, err := seedServiceClient.ManagerList(ctx, &nodeManagerV1.ManagerListRequest{}, grpc.EmptyCallOption{}) list, err := seedServiceClient.ManagerList(ctx, &nodeManagerV1.ManagerListRequest{}, grpc.EmptyCallOption{})
//if err != nil { if err != nil {
// panic(fmt.Sprintf("Get manager list failed : %s", err.Error())) panic(fmt.Sprintf("Get manager list failed : %s", err.Error()))
//} }
//if list.GetManagers() == nil || len(list.GetManagers()) == 0 { if list.GetManagers() == nil || len(list.GetManagers()) == 0 {
// panic("Get manager list failed,the manager list is nil") panic("Get manager list failed,the manager list is nil")
//} }
//for _, node := range list.GetManagers() { for _, node := range list.GetManagers() {
// nodeManagers = append(nodeManagers, node) nodeManagers = append(nodeManagers, node)
// nodeManagerIsDel[node.Publickey] = false nodeManagerIsDel[node.Publickey] = false
//} }
} }
func StartMonitor() { func StartMonitor() {
...@@ -57,10 +58,10 @@ func StartMonitor() { ...@@ -57,10 +58,10 @@ func StartMonitor() {
panic("Docker client is not healthy") panic("Docker client is not healthy")
} }
go monitorModelInfo(dockerOp)
go monitorWorker(dockerOp) go monitorWorker(dockerOp)
go monitorModelInfo(dockerOp)
for _, manager := range nodeManagers { for _, manager := range nodeManagers {
// TODO: 需要对索引进行一定的规则判断,随机选择其中的nodeManager进行链接 // TODO: 需要对索引进行一定的规则判断,随机选择其中的nodeManager进行链接
isSuccess := inputNodeManagerChan(manager) isSuccess := inputNodeManagerChan(manager)
...@@ -128,11 +129,14 @@ func monitorWorker(op *operate.DockerOp) { ...@@ -128,11 +129,14 @@ func monitorWorker(op *operate.DockerOp) {
proofWorker := validator.NewProofWorker() proofWorker := validator.NewProofWorker()
// 上报image信息 // 上报image信息
go reportImageInfo(nodeManager, worker, msgRespWorker, op) go reportModelInfo(nodeManager, worker, msgRespWorker, op)
// 证明上报 // 证明存储
go proofWorker.ProofStorage() go proofWorker.ProofStorage()
// 证明提交
go proofWorker.CommitWitness()
// 处理其他消息 // 处理其他消息
go handlerMsg(nodeManager, worker, msgRespWorker, taskMsgWorker, proofWorker) go handlerMsg(nodeManager, worker, msgRespWorker, taskMsgWorker, proofWorker)
...@@ -172,7 +176,7 @@ func monitorModelInfo(dockerOp *operate.DockerOp) { ...@@ -172,7 +176,7 @@ func monitorModelInfo(dockerOp *operate.DockerOp) {
Pwd: "", Pwd: "",
Repository: "", Repository: "",
SignUrl: "http://192.168.1.120:8888/llm/test/get/sign", SignUrl: "http://192.168.1.120:8888/llm/test/get/sign",
ImageName: "llm-server:test", ImageName: "onlydd/llm-server:0119",
DiskSize: 10000, DiskSize: 10000,
MemorySize: 10000, MemorySize: 10000,
IsImageExist: false, IsImageExist: false,
...@@ -188,22 +192,25 @@ func monitorModelInfo(dockerOp *operate.DockerOp) { ...@@ -188,22 +192,25 @@ func monitorModelInfo(dockerOp *operate.DockerOp) {
// todo: 如果够用 // todo: 如果够用
if isPull { if isPull {
go dockerOp.PullImage(modelInfo) go dockerOp.PullImage(modelInfo)
dockerOp.SignApi[modelInfo.ImageName] = modelInfo.SignUrl
modelInfo.IsImageExist = true modelInfo.IsImageExist = true
dockerOp.ModelTaskIdChan <- modelInfo.TaskId dockerOp.ModelTaskIdChan <- modelInfo.TaskId
} }
} else if !dockerOp.IsReportModelTaskId[modelInfo.TaskId] {
dockerOp.ModelTaskIdChan <- modelInfo.TaskId
dockerOp.IsReportModelTaskId[modelInfo.TaskId] = true
} }
dockerOp.SignApi[modelInfo.ImageName] = modelInfo.SignUrl
dockerOp.ModelsInfo = append(dockerOp.ModelsInfo, modelInfo) dockerOp.ModelsInfo = append(dockerOp.ModelsInfo, modelInfo)
} }
func reportImageInfo(nodeManager *models.NodeManagerClient, func reportModelInfo(nodeManager *models.NodeManagerClient,
worker nodeManagerV1.NodeManagerService_RegisterWorkerClient, worker nodeManagerV1.NodeManagerService_RegisterWorkerClient,
msgRespWorker *RespMsgWorker, dockerOp *operate.DockerOp) { msgRespWorker *RespMsgWorker, dockerOp *operate.DockerOp) {
for { for {
select { select {
case taskId := <-dockerOp.ModelTaskIdChan: case taskId := <-dockerOp.ModelTaskIdChan:
params := buildParams(taskId) params := buildParams(taskId)
msgRespWorker.RegisterMsgResp(nodeManager, worker, SubmitResultResp, params) msgRespWorker.RegisterMsgResp(nodeManager, worker, SubmitResourceMapRes, params)
} }
} }
} }
...@@ -241,7 +248,7 @@ func handlerMsg(nodeManager *models.NodeManagerClient, ...@@ -241,7 +248,7 @@ func handlerMsg(nodeManager *models.NodeManagerClient,
taskMsgWorker.Wg.Wait() taskMsgWorker.Wg.Wait()
taskResBytes := taskMsgWorker.TaskResp[taskMsg.TaskUuid] taskResBytes := taskMsgWorker.TaskResp[taskMsg.TaskUuid]
isSuccess := taskMsgWorker.TaskIsSuccess[taskMsg.TaskUuid] isSuccess := taskMsgWorker.TaskIsSuccess[taskMsg.TaskUuid]
containerSign := taskMsgWorker.DockerOp.GetContainerSign(taskMsg) containerSign := taskMsgWorker.DockerOp.GetContainerSign(taskMsg, taskResBytes)
if containerSign == nil || len(containerSign) == 0 { if containerSign == nil || len(containerSign) == 0 {
log.Error("Container signing failed................") log.Error("Container signing failed................")
isSuccess = false isSuccess = false
......
...@@ -2,14 +2,13 @@ package nm ...@@ -2,14 +2,13 @@ package nm
import ( import (
"bytes" "bytes"
"crypto/ecdsa"
cryptoRand "crypto/rand"
"encoding/json" "encoding/json"
"example.com/m/conf" "example.com/m/conf"
"example.com/m/log" "example.com/m/log"
"example.com/m/models" "example.com/m/models"
"example.com/m/operate" "example.com/m/operate"
"fmt" "fmt"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/crypto"
"github.com/golang/groupcache/lru" "github.com/golang/groupcache/lru"
baseV1 "github.com/odysseus/odysseus-protocol/gen/proto/go/base/v1" baseV1 "github.com/odysseus/odysseus-protocol/gen/proto/go/base/v1"
...@@ -113,11 +112,18 @@ func (t *TaskHandler) ComputeTaskHandler(taskMsg *nodeManagerV1.PushTaskMessage) ...@@ -113,11 +112,18 @@ func (t *TaskHandler) ComputeTaskHandler(taskMsg *nodeManagerV1.PushTaskMessage)
return return
} }
imageId := "" imageId := ""
isFound := false
for _, image := range images { for _, image := range images {
if image.RepoTags[0] == taskCmd.ImageName { if isFound {
imageId = image.ID
break break
} }
for _, tag := range image.RepoTags {
if tag == taskCmd.ImageName {
imageId = image.ID
isFound = true
break
}
}
log.Println(image.ID) log.Println(image.ID)
} }
...@@ -185,9 +191,10 @@ func (t *TaskHandler) GetMinerSign(msg *nodeManagerV1.PushTaskMessage, taskResul ...@@ -185,9 +191,10 @@ func (t *TaskHandler) GetMinerSign(msg *nodeManagerV1.PushTaskMessage, taskResul
reqHash := crypto.Keccak256Hash(msg.TaskParam) reqHash := crypto.Keccak256Hash(msg.TaskParam)
respHash := crypto.Keccak256Hash(taskResult) respHash := crypto.Keccak256Hash(taskResult)
signHash := crypto.Keccak256Hash(bytes.NewBufferString(msg.TaskUuid).Bytes(), reqHash.Bytes(), respHash.Bytes()) signHash := crypto.Keccak256Hash(bytes.NewBufferString(msg.TaskUuid).Bytes(), reqHash.Bytes(), respHash.Bytes())
sign, err := ecdsa.SignASN1(cryptoRand.Reader, conf.GetConfig().SignPrivateKey, signHash.Bytes()) sign, err := crypto.Sign(signHash.Bytes(), conf.GetConfig().SignPrivateKey)
if err != nil { if err != nil {
log.Error("custom task handler") log.Error("custom task handler")
} }
log.Info("Miner sign:", common.Bytes2Hex(sign))
return reqHash.Bytes(), respHash.Bytes(), sign return reqHash.Bytes(), respHash.Bytes(), sign
} }
...@@ -10,7 +10,6 @@ import ( ...@@ -10,7 +10,6 @@ import (
"github.com/docker/docker/api/types" "github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/container"
"github.com/docker/docker/client" "github.com/docker/docker/client"
"github.com/docker/docker/pkg/stdcopy"
"github.com/docker/go-connections/nat" "github.com/docker/go-connections/nat"
"github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common"
nodemanagerv1 "github.com/odysseus/odysseus-protocol/gen/proto/go/nodemanager/v1" nodemanagerv1 "github.com/odysseus/odysseus-protocol/gen/proto/go/nodemanager/v1"
...@@ -23,13 +22,14 @@ import ( ...@@ -23,13 +22,14 @@ import (
var httpClient *http.Client var httpClient *http.Client
type DockerOp struct { type DockerOp struct {
IsHealthy bool IsHealthy bool
Reason string Reason string
dockerClient *client.Client dockerClient *client.Client
UsedExternalPort map[int64]bool UsedExternalPort map[int64]bool
SignApi map[string]string SignApi map[string]string
ModelsInfo []*models.ModelInfo ModelsInfo []*models.ModelInfo
ModelTaskIdChan chan uint64 IsReportModelTaskId map[uint64]bool
ModelTaskIdChan chan uint64
} }
func init() { func init() {
...@@ -45,19 +45,22 @@ func NewDockerOp() *DockerOp { ...@@ -45,19 +45,22 @@ func NewDockerOp() *DockerOp {
} }
} }
return &DockerOp{ return &DockerOp{
IsHealthy: true, IsHealthy: true,
Reason: "", Reason: "",
dockerClient: dockerClient, dockerClient: dockerClient,
SignApi: make(map[string]string, 0), SignApi: make(map[string]string, 0),
ModelsInfo: make([]*models.ModelInfo, 0), ModelsInfo: make([]*models.ModelInfo, 0),
UsedExternalPort: make(map[int64]bool, 0), IsReportModelTaskId: make(map[uint64]bool, 0),
ModelTaskIdChan: make(chan uint64, 0), UsedExternalPort: make(map[int64]bool, 0),
ModelTaskIdChan: make(chan uint64, 0),
} }
} }
func (d *DockerOp) GetContainerSign(taskMsg *nodemanagerv1.PushTaskMessage) []byte { func (d *DockerOp) GetContainerSign(taskMsg *nodemanagerv1.PushTaskMessage, taskRes []byte) []byte {
reqBody := &models.TaskReq{ reqBody := &models.TaskReq{
TaskId: taskMsg.TaskUuid, TaskId: taskMsg.TaskUuid,
TaskParam: taskMsg.TaskParam,
TaskResult: taskRes,
} }
body, err := json.Marshal(reqBody) body, err := json.Marshal(reqBody)
if err != nil { if err != nil {
...@@ -124,8 +127,7 @@ func (d *DockerOp) ListContainer() []types.Container { ...@@ -124,8 +127,7 @@ func (d *DockerOp) ListContainer() []types.Container {
} }
func (d *DockerOp) CreateAndStartContainer(imageName string, dockerCmd *models.DockerCmd) (string, error) { func (d *DockerOp) CreateAndStartContainer(imageName string, dockerCmd *models.DockerCmd) (string, error) {
ctx, cancel := context.WithTimeout(context.Background(), time.Second*60)
defer cancel()
containerId, err := d.CreateContainer(imageName, dockerCmd) containerId, err := d.CreateContainer(imageName, dockerCmd)
if err != nil { if err != nil {
log.Error("Error creating container image failed: ", err) log.Error("Error creating container image failed: ", err)
...@@ -138,26 +140,28 @@ func (d *DockerOp) CreateAndStartContainer(imageName string, dockerCmd *models.D ...@@ -138,26 +140,28 @@ func (d *DockerOp) CreateAndStartContainer(imageName string, dockerCmd *models.D
log.Error("start container failed:", startContainerIsSuccess) log.Error("start container failed:", startContainerIsSuccess)
} }
statusCh, errCh := d.dockerClient.ContainerWait(ctx, containerId, container.WaitConditionNotRunning) //ctx, cancel := context.WithTimeout(context.Background(), time.Second*60)
select { //defer cancel()
case err := <-errCh: //statusCh, errCh := d.dockerClient.ContainerWait(ctx, containerId, container.WaitConditionNotRunning)
if err != nil { //select {
panic(err) //case err := <-errCh:
} // if err != nil {
case <-statusCh: // panic(err)
break // }
} //case <-statusCh:
// break
out, err := d.dockerClient.ContainerLogs(ctx, containerId, types.ContainerLogsOptions{ShowStdout: true}) //}
if err != nil { //
panic(err) //out, err := d.dockerClient.ContainerLogs(ctx, containerId, types.ContainerLogsOptions{ShowStdout: true})
} //if err != nil {
// panic(err)
_, err = stdcopy.StdCopy(os.Stdout, os.Stderr, out) //}
if err != nil { //
log.Error("std out put failed:", err) //_, err = stdcopy.StdCopy(os.Stdout, os.Stderr, out)
return "", err //if err != nil {
} // log.Error("std out put failed:", err)
// return "", err
//}
return containerId, nil return containerId, nil
} }
...@@ -259,7 +263,9 @@ func (d *DockerOp) PsImageNameMap() (map[string]bool, error) { ...@@ -259,7 +263,9 @@ func (d *DockerOp) PsImageNameMap() (map[string]bool, error) {
} }
res := make(map[string]bool, 0) res := make(map[string]bool, 0)
for _, image := range images { for _, image := range images {
res[image.RepoTags[0]] = true for _, tag := range image.RepoTags {
res[tag] = true
}
} }
return res, nil return res, nil
} }
......
...@@ -14,6 +14,36 @@ import ( ...@@ -14,6 +14,36 @@ import (
"testing" "testing"
) )
func TestJson(t *testing.T) {
type DockerCmd struct {
ContainerPort string `json:"container_port"`
HostIp string
HostPort string
}
type TaskCmd struct {
ImageName string `json:"image_name"`
DockerCmd *DockerCmd `json:"docker_cmd"`
ApiUrl string `json:"api_url"`
}
taskCmd := &TaskCmd{
ImageName: "onlydd/llm-server:0119",
DockerCmd: &DockerCmd{
ContainerPort: "80",
},
ApiUrl: "https://192.168.1.120:5001/aigic",
}
marshal, err := json.Marshal(taskCmd)
if err != nil {
_ = fmt.Errorf("error marshalling task cmd: %s", err.Error())
return
}
fmt.Println("marshal:", string(marshal))
}
func TestTaskHandler_computeTaskHandler(t1 *testing.T) { func TestTaskHandler_computeTaskHandler(t1 *testing.T) {
type fields struct { type fields struct {
wg *sync.WaitGroup wg *sync.WaitGroup
......
...@@ -14,7 +14,6 @@ import ( ...@@ -14,7 +14,6 @@ import (
) )
type ProofWorker struct { type ProofWorker struct {
lastCommitTime time.Time
productProofChan chan *witnessV1.Proof productProofChan chan *witnessV1.Proof
consumeProofChan chan []*witnessV1.Proof consumeProofChan chan []*witnessV1.Proof
isCommitProof map[string]bool isCommitProof map[string]bool
...@@ -22,9 +21,9 @@ type ProofWorker struct { ...@@ -22,9 +21,9 @@ type ProofWorker struct {
func NewProofWorker() *ProofWorker { func NewProofWorker() *ProofWorker {
return &ProofWorker{ return &ProofWorker{
lastCommitTime: time.Now(),
productProofChan: make(chan *witnessV1.Proof, 0), productProofChan: make(chan *witnessV1.Proof, 0),
consumeProofChan: make(chan []*witnessV1.Proof, 0), consumeProofChan: make(chan []*witnessV1.Proof, 0),
isCommitProof: make(map[string]bool, 0),
} }
} }
...@@ -41,9 +40,6 @@ func (p *ProofWorker) ProductProof(taskId string, workLoad uint64, reqHash []byt ...@@ -41,9 +40,6 @@ func (p *ProofWorker) ProductProof(taskId string, workLoad uint64, reqHash []byt
} }
func (p *ProofWorker) ProofStorage() { func (p *ProofWorker) ProofStorage() {
// 定义区间
min := 40
max := 59
go func(productProofChan chan *witnessV1.Proof) { go func(productProofChan chan *witnessV1.Proof) {
for { for {
select { select {
...@@ -64,23 +60,27 @@ func (p *ProofWorker) ProofStorage() { ...@@ -64,23 +60,27 @@ func (p *ProofWorker) ProofStorage() {
} }
} }
}(p.productProofChan) }(p.productProofChan)
// todo: 需要修改为 Minute
timer := time.NewTicker(time.Minute)
defer timer.Stop()
randomMinute := getRandInt()
for { for {
// todo: 每个小时的提交时间,应该随机 select {
since := time.Since(p.lastCommitTime) case <-timer.C:
if since.Hours() == conf.GetConfig().TaskValidatorTime { min := time.Now().Minute()
nowTime := time.Now() // 检查是否在指定时间范围内(40-59分钟)
rand.Seed(nowTime.UnixNano()) if min >= 40 && min <= 59 && min == randomMinute {
// 生成在 [min, max] 范围内的随机整数 randomMinute = getRandInt()
randomNumber := rand.Intn(max-min+1) + min
if nowTime.Minute() > min && nowTime.Minute() < randomNumber {
proofs := make([]*witnessV1.Proof, 0) proofs := make([]*witnessV1.Proof, 0)
// TODO: 取出数据并且消费
iter, err := db.NewIterator() iter, err := db.NewIterator()
if err != nil { if err != nil {
log.Error("db new iterator failed: ", err) log.Error("db new iterator failed: ", err)
continue continue
} }
// todo: 数据堆积越多,可能循环的次数越多,对性能有影响 if iter == nil {
log.Warn("level db iterator is nil")
continue
}
for iter.Next() { for iter.Next() {
proof := &witnessV1.Proof{} proof := &witnessV1.Proof{}
err := json.Unmarshal(iter.Value(), proof) err := json.Unmarshal(iter.Value(), proof)
...@@ -99,15 +99,16 @@ func (p *ProofWorker) ProofStorage() { ...@@ -99,15 +99,16 @@ func (p *ProofWorker) ProofStorage() {
// return // return
//} //}
} }
p.lastCommitTime = nowTime if len(proofs) > 0 {
p.consumeProofChan <- proofs p.consumeProofChan <- proofs
}
} }
} }
} }
} }
func (p *ProofWorker) CommitWitness() { func (p *ProofWorker) CommitWitness() {
validatorClient := operate.ConnValidatorGrpc("") validatorClient := operate.ConnValidatorGrpc("192.168.1.180:9431")
for { for {
select { select {
case proofs := <-p.consumeProofChan: case proofs := <-p.consumeProofChan:
...@@ -126,3 +127,7 @@ func (p *ProofWorker) CommitWitness() { ...@@ -126,3 +127,7 @@ func (p *ProofWorker) CommitWitness() {
} }
} }
} }
func getRandInt() int {
return rand.Intn(20) + 40
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment