Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
power-node
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Odysseus
power-node
Commits
def8d4d2
Commit
def8d4d2
authored
Jan 30, 2024
by
duanjinfei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
change commit validator
parent
5b4b486b
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
279 additions
and
452 deletions
+279
-452
.gitignore
.gitignore
+2
-1
config.go
conf/config.go
+1
-2
config.json
config.json
+0
-1
db.go
db/db.go
+16
-5
node_manager.go
models/node_manager.go
+3
-1
000062.log
mydb/000062.log
+0
-0
CURRENT
mydb/CURRENT
+1
-1
CURRENT.bak
mydb/CURRENT.bak
+1
-1
LOG
mydb/LOG
+101
-349
MANIFEST-000063
mydb/MANIFEST-000063
+0
-0
msg_resp.go
nm/msg_resp.go
+8
-0
start.go
nm/start.go
+35
-28
task_msg.go
nm/task_msg.go
+12
-5
docker.go
operate/docker.go
+46
-40
task_msg_test.go
test/task_msg_test.go
+30
-0
validator.go
validator/validator.go
+23
-18
No files found.
.gitignore
View file @
def8d4d2
.idea
.idea
logs
logs
*.DS_Store
*.DS_Store
*/mydb/
*/mydb/
\ No newline at end of file
mydb
conf/config.go
View file @
def8d4d2
...
@@ -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
{
...
...
config.json
View file @
def8d4d2
...
@@ -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
db/db.go
View file @
def8d4d2
...
@@ -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
{
...
...
models/node_manager.go
View file @
def8d4d2
...
@@ -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
{
...
...
mydb/000062.log
deleted
100644 → 0
View file @
5b4b486b
mydb/CURRENT
View file @
def8d4d2
MANIFEST-0000
63
MANIFEST-0000
26
mydb/CURRENT.bak
View file @
def8d4d2
MANIFEST-0000
61
MANIFEST-0000
24
mydb/LOG
View file @
def8d4d2
=============== 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
mydb/MANIFEST-000063
deleted
100644 → 0
View file @
5b4b486b
File deleted
nm/msg_resp.go
View file @
def8d4d2
...
@@ -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
}
}
nm/start.go
View file @
def8d4d2
...
@@ -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
report
Image
Info
(
nodeManager
,
worker
,
msgRespWorker
,
op
)
go
report
Model
Info
(
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
report
Image
Info
(
nodeManager
*
models
.
NodeManagerClient
,
func
report
Model
Info
(
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
,
SubmitRes
ultResp
,
params
)
msgRespWorker
.
RegisterMsgResp
(
nodeManager
,
worker
,
SubmitRes
ourceMapRes
,
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
...
...
nm/task_msg.go
View file @
def8d4d2
...
@@ -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
}
}
operate/docker.go
View file @
def8d4d2
...
@@ -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
}
}
...
...
test/task_msg_test.go
View file @
def8d4d2
...
@@ -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
...
...
validator/validator.go
View file @
def8d4d2
...
@@ -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
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment