Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nodemanager
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
nodemanager
Commits
dd656801
Commit
dd656801
authored
Feb 28, 2024
by
vicotor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update worker registry
parent
de15185a
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
293 additions
and
37 deletions
+293
-37
Dockerfile
Dockerfile
+2
-1
Config.go
config/Config.go
+0
-4
constant.go
config/constant.go
+1
-0
go.mod
go.mod
+9
-6
go.sum
go.sum
+6
-6
filter.go
nmregister/filter.go
+5
-0
register.go
nmregister/register.go
+150
-0
node.go
server/node.go
+29
-8
service.go
server/service.go
+1
-1
workerManager.go
server/workerManager.go
+36
-10
worker_registry.go
server/worker_registry.go
+49
-0
workerstatu.go
server/workerstatu.go
+5
-1
No files found.
Dockerfile
View file @
dd656801
...
@@ -11,7 +11,8 @@ WORKDIR /build
...
@@ -11,7 +11,8 @@ WORKDIR /build
RUN
git clone https://code.wuban.net.cn/odysseus/nodemanager
&&
\
RUN
git clone https://code.wuban.net.cn/odysseus/nodemanager
&&
\
git clone https://code.wuban.net.cn/odysseus/odysseus-protocol
&&
\
git clone https://code.wuban.net.cn/odysseus/odysseus-protocol
&&
\
git clone https://code.wuban.net.cn/odysseus/cache
git clone https://code.wuban.net.cn/odysseus/cache
&&
\
git clone https://code.wuban.net.cn/odysseus/service-registry
RUN
cd
/build/nodemanager
&&
make
&&
cp
build/bin/manager /manager
RUN
cd
/build/nodemanager
&&
make
&&
cp
build/bin/manager /manager
...
...
config/Config.go
View file @
dd656801
...
@@ -73,10 +73,6 @@ func (conf *Config) PublicEndpoint() string {
...
@@ -73,10 +73,6 @@ func (conf *Config) PublicEndpoint() string {
return
fmt
.
Sprintf
(
"%s:%d"
,
conf
.
RemoteHost
,
conf
.
Port
)
return
fmt
.
Sprintf
(
"%s:%d"
,
conf
.
RemoteHost
,
conf
.
Port
)
}
}
func
(
conf
*
Config
)
LocalEndpoint
()
string
{
return
fmt
.
Sprintf
(
"%s:%d"
,
conf
.
LocalHost
,
conf
.
Port
)
}
func
(
conf
*
Config
)
ApiEndpoint
()
string
{
func
(
conf
*
Config
)
ApiEndpoint
()
string
{
return
fmt
.
Sprintf
(
"0.0.0.0:%d"
,
conf
.
Port
)
return
fmt
.
Sprintf
(
"0.0.0.0:%d"
,
conf
.
Port
)
}
}
...
...
config/constant.go
View file @
dd656801
...
@@ -5,4 +5,5 @@ const (
...
@@ -5,4 +5,5 @@ const (
WORKER_STATUS_PREFIX
=
"worker_status_"
WORKER_STATUS_PREFIX
=
"worker_status_"
WORKER_QUEUE_PREFIX
=
"worker_queue_"
WORKER_QUEUE_PREFIX
=
"worker_queue_"
WORKER_DEVICE_INFO_PREFIX
=
"worker_device_info_"
WORKER_DEVICE_INFO_PREFIX
=
"worker_device_info_"
WORKER_USAGE_INFO_PREFIX
=
"worker_usage_info_"
)
)
go.mod
View file @
dd656801
...
@@ -6,15 +6,18 @@ require (
...
@@ -6,15 +6,18 @@ require (
github.com/BurntSushi/toml v1.3.2
github.com/BurntSushi/toml v1.3.2
github.com/IBM/sarama v1.42.1
github.com/IBM/sarama v1.42.1
github.com/astaxie/beego v1.12.3
github.com/astaxie/beego v1.12.3
github.com/ethereum/go-ethereum v1.13.1
0
github.com/ethereum/go-ethereum v1.13.1
3
github.com/gogo/protobuf v1.3.2
github.com/gogo/protobuf v1.3.2
github.com/golang/protobuf v1.5.3
github.com/golang/protobuf v1.5.3
github.com/google/uuid v1.5.0
github.com/hashicorp/golang-lru v0.5.4
github.com/hashicorp/golang-lru v0.5.4
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible
github.com/
odysseus/odysseus-protocol v0.0.0-00010101000000-000000000000
github.com/
magiconair/properties v1.8.7
github.com/odysseus/cache v0.0.0-00010101000000-000000000000
github.com/odysseus/cache v0.0.0-00010101000000-000000000000
github.com/odysseus/odysseus-protocol v0.0.0-00010101000000-000000000000
github.com/odysseus/service-registry v0.0.0-00010101000000-000000000000
github.com/prometheus/client_golang v1.18.0
github.com/prometheus/client_golang v1.18.0
github.com/redis/go-redis/v9 v9.
4.0
github.com/redis/go-redis/v9 v9.
5.1
github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5
github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5
github.com/sirupsen/logrus v1.9.3
github.com/sirupsen/logrus v1.9.3
github.com/spf13/cobra v1.8.0
github.com/spf13/cobra v1.8.0
...
@@ -37,7 +40,6 @@ require (
...
@@ -37,7 +40,6 @@ require (
github.com/go-sql-driver/mysql v1.7.1 // indirect
github.com/go-sql-driver/mysql v1.7.1 // indirect
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect
github.com/gomodule/redigo v2.0.0+incompatible // indirect
github.com/gomodule/redigo v2.0.0+incompatible // indirect
github.com/google/uuid v1.5.0 // indirect
github.com/hashicorp/errwrap v1.0.0 // indirect
github.com/hashicorp/errwrap v1.0.0 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/hashicorp/go-uuid v1.0.3 // indirect
github.com/hashicorp/go-uuid v1.0.3 // indirect
...
@@ -52,7 +54,6 @@ require (
...
@@ -52,7 +54,6 @@ require (
github.com/jonboulle/clockwork v0.4.0 // indirect
github.com/jonboulle/clockwork v0.4.0 // indirect
github.com/klauspost/compress v1.17.0 // indirect
github.com/klauspost/compress v1.17.0 // indirect
github.com/lestrrat-go/strftime v1.0.6 // indirect
github.com/lestrrat-go/strftime v1.0.6 // indirect
github.com/magiconair/properties v1.8.7 // indirect
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/pelletier/go-toml/v2 v2.1.0 // indirect
github.com/pelletier/go-toml/v2 v2.1.0 // indirect
...
@@ -73,7 +74,7 @@ require (
...
@@ -73,7 +74,7 @@ require (
go.uber.org/multierr v1.9.0 // indirect
go.uber.org/multierr v1.9.0 // indirect
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect
golang.org/x/net v0.19.0 // indirect
golang.org/x/net v0.19.0 // indirect
golang.org/x/sys v0.1
5
.0 // indirect
golang.org/x/sys v0.1
6
.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/text v0.14.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect
google.golang.org/protobuf v1.32.0 // indirect
google.golang.org/protobuf v1.32.0 // indirect
...
@@ -85,3 +86,5 @@ require (
...
@@ -85,3 +86,5 @@ require (
replace github.com/odysseus/odysseus-protocol => ../odysseus-protocol
replace github.com/odysseus/odysseus-protocol => ../odysseus-protocol
replace github.com/odysseus/cache => ../cache
replace github.com/odysseus/cache => ../cache
replace github.com/odysseus/service-registry => ../service-registry
go.sum
View file @
dd656801
...
@@ -53,8 +53,8 @@ github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFP
...
@@ -53,8 +53,8 @@ github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFP
github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
github.com/elastic/go-elasticsearch/v6 v6.8.5/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox93HoX8utj1kxD9aFUcI=
github.com/elastic/go-elasticsearch/v6 v6.8.5/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox93HoX8utj1kxD9aFUcI=
github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4=
github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4=
github.com/ethereum/go-ethereum v1.13.1
0 h1:Ppdil79nN+Vc+mXfge0AuUgmKWuVv4eMqzoIVSdqZek
=
github.com/ethereum/go-ethereum v1.13.1
3 h1:KYn9w7pEWRI9oyZOzO94OVbctSusPByHdFDPj634jII
=
github.com/ethereum/go-ethereum v1.13.1
0/go.mod h1:sc48XYQxCzH3fG9BcrXCOOgQk2JfZzNAmIKnceogzsA
=
github.com/ethereum/go-ethereum v1.13.1
3/go.mod h1:TN8ZiHrdJwSe8Cb6x+p0hs5CxhJZPbqB7hHkaUXcmIU
=
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
...
@@ -206,8 +206,8 @@ github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k
...
@@ -206,8 +206,8 @@ github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k
github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/redis/go-redis/v9 v9.
4.0 h1:Yzoz33UZw9I/mFhx4MNrB6Fk+XHO1VukNcCa1+lwyKk
=
github.com/redis/go-redis/v9 v9.
5.1 h1:H1X4D3yHPaYrkL5X06Wh6xNVM/pX0Ft4RV0vMGvLBh8
=
github.com/redis/go-redis/v9 v9.
4.0
/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M=
github.com/redis/go-redis/v9 v9.
5.1
/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M=
github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5 h1:mZHayPoR0lNmnHyvtYjDeq0zlVHn9K/ZXoy17ylucdo=
github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5 h1:mZHayPoR0lNmnHyvtYjDeq0zlVHn9K/ZXoy17ylucdo=
github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5/go.mod h1:GEXHk5HgEKCvEIIrSpFI3ozzG5xOKA2DVlEX/gGnewM=
github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5/go.mod h1:GEXHk5HgEKCvEIIrSpFI3ozzG5xOKA2DVlEX/gGnewM=
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
...
@@ -315,8 +315,8 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc
...
@@ -315,8 +315,8 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1
5.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc
=
golang.org/x/sys v0.1
6.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU
=
golang.org/x/sys v0.1
5
.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.1
6
.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
...
...
nmregist
ry
/filter.go
→
nmregist
er
/filter.go
View file @
dd656801
package
nmregist
ry
package
nmregist
er
type
ManagerFilter
interface
{
type
ManagerFilter
interface
{
Filter
(
Registry
Info
)
bool
Filter
(
FullNodeManager
Info
)
bool
}
}
nmregist
ry/registry
.go
→
nmregist
er/register
.go
View file @
dd656801
package
nmregist
ry
package
nmregist
er
import
(
import
(
"context"
"crypto/ecdsa"
"crypto/ecdsa"
"encoding/json"
"fmt"
"fmt"
"github.com/odysseus/nodemanager/config"
"github.com/odysseus/nodemanager/config"
"github.com/odysseus/nodemanager/utils"
"github.com/odysseus/nodemanager/utils"
"github.com/odysseus/service-registry/common"
"github.com/odysseus/service-registry/query"
"github.com/odysseus/service-registry/registry"
"github.com/redis/go-redis/v9"
"github.com/redis/go-redis/v9"
log
"github.com/sirupsen/logrus"
log
"github.com/sirupsen/logrus"
"os"
"sync"
"sync"
"time"
"time"
)
)
...
@@ -15,11 +19,9 @@ import (
...
@@ -15,11 +19,9 @@ import (
// nmregistry implement register nodemanger to redis, and get nodemanger list from redis.
// nmregistry implement register nodemanger to redis, and get nodemanger list from redis.
// filter some nodemanager to worker.
// filter some nodemanager to worker.
type
RegistryInfo
struct
{
type
FullNodeManagerInfo
struct
{
Pubkey
string
`redis:"pubkey"`
Reginfo
registry
.
RegistryInfo
Timestamp
int64
`redis:"timestamp"`
NmInfo
query
.
NodeManagerInfo
Endpoint
string
`redis:"endpoint"`
Addr
string
`redis:"addr"`
}
}
type
NodeManagerInfo
struct
{
type
NodeManagerInfo
struct
{
...
@@ -27,8 +29,9 @@ type NodeManagerInfo struct {
...
@@ -27,8 +29,9 @@ type NodeManagerInfo struct {
Endpoint
string
`json:"endpoint"`
Endpoint
string
`json:"endpoint"`
}
}
type
RegistryService
struct
{
type
NMRegister
struct
{
nodelist
[]
RegistryInfo
querier
*
query
.
ServiceQuerier
nodelist
[]
FullNodeManagerInfo
rdb
*
redis
.
Client
rdb
*
redis
.
Client
conf
*
config
.
Config
conf
*
config
.
Config
rw
sync
.
RWMutex
rw
sync
.
RWMutex
...
@@ -36,18 +39,47 @@ type RegistryService struct {
...
@@ -36,18 +39,47 @@ type RegistryService struct {
quit
chan
struct
{}
quit
chan
struct
{}
}
}
func
NewRegistryService
(
conf
*
config
.
Config
,
rdb
*
redis
.
Client
,
public
ecdsa
.
PublicKey
)
*
RegistryService
{
func
(
s
*
NMRegister
)
ServiceType
()
common
.
ServiceType
{
return
&
RegistryService
{
return
common
.
SERVICE_NODE_MANAGER
rdb
:
rdb
,
}
conf
:
conf
,
public
:
public
,
func
(
s
*
NMRegister
)
Instance
()
string
{
quit
:
make
(
chan
struct
{}),
hname
,
_
:=
os
.
Hostname
()
return
fmt
.
Sprintf
(
"%s:%s"
,
s
.
conf
.
RemoteHost
,
hname
)
}
func
(
s
*
NMRegister
)
Status
()
string
{
return
"running"
}
func
(
s
*
NMRegister
)
DetailInfo
()
(
json
.
RawMessage
,
error
)
{
priv
,
err
:=
utils
.
HexToPrivatekey
(
s
.
conf
.
PrivateKey
)
if
err
!=
nil
{
panic
(
fmt
.
Sprintf
(
"invalid private key: %s"
,
err
))
}
addr
:=
utils
.
PrivatekeyToHex
(
priv
)
pubHex
:=
utils
.
PubkeyToHex
(
&
priv
.
PublicKey
)
endpoint
:=
s
.
conf
.
PublicEndpoint
()
info
:=
query
.
NodeManagerInfo
{}
info
.
Addr
=
addr
info
.
Pubkey
=
pubHex
info
.
Endpoint
=
endpoint
return
json
.
Marshal
(
info
)
}
func
NewNMRegister
(
conf
*
config
.
Config
,
querier
*
query
.
ServiceQuerier
,
public
ecdsa
.
PublicKey
)
*
NMRegister
{
return
&
NMRegister
{
querier
:
querier
,
conf
:
conf
,
public
:
public
,
quit
:
make
(
chan
struct
{}),
}
}
}
}
func
(
s
*
RegistryService
)
Start
()
{
func
(
s
*
NMRegister
)
Start
()
{
ticker
:=
time
.
NewTicker
(
time
.
Second
*
1
)
defer
ticker
.
Stop
()
refresh
:=
time
.
NewTicker
(
time
.
Second
*
5
)
refresh
:=
time
.
NewTicker
(
time
.
Second
*
5
)
defer
refresh
.
Stop
()
defer
refresh
.
Stop
()
...
@@ -55,14 +87,8 @@ func (s *RegistryService) Start() {
...
@@ -55,14 +87,8 @@ func (s *RegistryService) Start() {
select
{
select
{
case
<-
s
.
quit
:
case
<-
s
.
quit
:
return
return
case
<-
ticker
.
C
:
if
err
:=
s
.
registry
(
s
.
rdb
);
err
!=
nil
{
log
.
WithError
(
err
)
.
Error
(
"registry failed"
)
}
else
{
ticker
.
Reset
(
time
.
Second
*
10
)
}
case
<-
refresh
.
C
:
case
<-
refresh
.
C
:
if
nodes
,
err
:=
s
.
allNodeManager
(
s
.
rdb
);
err
!=
nil
{
if
nodes
,
err
:=
s
.
allNodeManager
();
err
!=
nil
{
log
.
WithError
(
err
)
.
Error
(
"refresh all nodemanager failed"
)
log
.
WithError
(
err
)
.
Error
(
"refresh all nodemanager failed"
)
}
else
{
}
else
{
s
.
rw
.
Lock
()
s
.
rw
.
Lock
()
...
@@ -75,31 +101,11 @@ func (s *RegistryService) Start() {
...
@@ -75,31 +101,11 @@ func (s *RegistryService) Start() {
}
}
}
}
func
(
s
*
RegistryService
)
Stop
()
{
func
(
s
*
NMRegister
)
Stop
()
{
close
(
s
.
quit
)
close
(
s
.
quit
)
}
}
func
(
s
*
RegistryService
)
registry
(
rdb
*
redis
.
Client
)
error
{
func
(
s
*
NMRegister
)
GetNodeManagerList
(
filter
ManagerFilter
)
[]
NodeManagerInfo
{
priv
,
err
:=
utils
.
HexToPrivatekey
(
s
.
conf
.
PrivateKey
)
if
err
!=
nil
{
panic
(
fmt
.
Sprintf
(
"invalid private key: %s"
,
err
))
}
addr
:=
utils
.
PrivatekeyToHex
(
priv
)
pubHex
:=
utils
.
PubkeyToHex
(
&
priv
.
PublicKey
)
endpoint
:=
s
.
conf
.
PublicEndpoint
()
err
=
rdb
.
HSet
(
context
.
Background
(),
config
.
NODE_MANAGER_SET
+
addr
,
RegistryInfo
{
Pubkey
:
pubHex
,
Timestamp
:
time
.
Now
()
.
Unix
(),
Endpoint
:
endpoint
,
Addr
:
addr
,
})
.
Err
()
return
err
}
func
(
s
*
RegistryService
)
GetNodeManagerList
(
filter
ManagerFilter
)
[]
NodeManagerInfo
{
s
.
rw
.
RLock
()
s
.
rw
.
RLock
()
defer
s
.
rw
.
RUnlock
()
defer
s
.
rw
.
RUnlock
()
var
ret
[]
NodeManagerInfo
var
ret
[]
NodeManagerInfo
...
@@ -107,32 +113,38 @@ func (s *RegistryService) GetNodeManagerList(filter ManagerFilter) []NodeManager
...
@@ -107,32 +113,38 @@ func (s *RegistryService) GetNodeManagerList(filter ManagerFilter) []NodeManager
for
_
,
node
:=
range
s
.
nodelist
{
for
_
,
node
:=
range
s
.
nodelist
{
if
filter
==
nil
||
filter
.
Filter
(
node
)
{
if
filter
==
nil
||
filter
.
Filter
(
node
)
{
ret
=
append
(
ret
,
NodeManagerInfo
{
ret
=
append
(
ret
,
NodeManagerInfo
{
Pubkey
:
node
.
Pubkey
,
Pubkey
:
node
.
NmInfo
.
Pubkey
,
Endpoint
:
node
.
Endpoint
,
Endpoint
:
node
.
NmInfo
.
Endpoint
,
})
})
}
}
}
}
return
ret
return
ret
}
}
func
(
s
*
RegistryService
)
allNodeManager
(
rdb
*
redis
.
Client
)
([]
Registry
Info
,
error
)
{
func
(
s
*
NMRegister
)
allNodeManager
()
([]
FullNodeManager
Info
,
error
)
{
var
ret
[]
Registry
Info
var
ret
[]
FullNodeManager
Info
var
tsExpired
=
100
var
tsExpired
=
100
keys
,
err
:=
rdb
.
Keys
(
context
.
Background
(),
config
.
NODE_MANAGER_SET
+
"*"
)
.
Resul
t
()
nmlist
,
err
:=
s
.
querier
.
Select
(
common
.
SERVICE_NODE_MANAGER
)
.
Lis
t
()
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
for
_
,
key
:=
range
keys
{
for
_
,
v
:=
range
nmlist
{
res
:=
rdb
.
HGetAll
(
context
.
Background
(),
key
)
var
info
registry
.
RegistryInfo
var
info
RegistryInfo
var
nminfo
query
.
NodeManagerInfo
if
err
:=
res
.
Scan
(
&
info
);
err
!=
nil
{
if
err
:=
json
.
Unmarshal
([]
byte
(
v
),
&
info
);
err
!=
nil
{
continue
}
if
err
:=
json
.
Unmarshal
([]
byte
(
info
.
Detail
),
&
nminfo
);
err
!=
nil
{
continue
continue
}
}
if
time
.
Now
()
.
Unix
()
-
info
.
Timestamp
>
int64
(
tsExpired
)
{
if
time
.
Now
()
.
Unix
()
-
info
.
Timestamp
>
int64
(
tsExpired
)
{
// heart beat expired, ignore this nodemanager
// heart beat expired, ignore this nodemanager
continue
continue
}
}
ret
=
append
(
ret
,
info
)
ret
=
append
(
ret
,
FullNodeManagerInfo
{
Reginfo
:
info
,
NmInfo
:
nminfo
,
})
}
}
return
ret
,
nil
return
ret
,
nil
}
}
server/node.go
View file @
dd656801
...
@@ -8,10 +8,12 @@ import (
...
@@ -8,10 +8,12 @@ import (
"github.com/odysseus/cache/cachedata"
"github.com/odysseus/cache/cachedata"
"github.com/odysseus/cache/model"
"github.com/odysseus/cache/model"
"github.com/odysseus/nodemanager/config"
"github.com/odysseus/nodemanager/config"
"github.com/odysseus/nodemanager/nmregist
ry
"
"github.com/odysseus/nodemanager/nmregist
er
"
"github.com/odysseus/nodemanager/utils"
"github.com/odysseus/nodemanager/utils"
basev1
"github.com/odysseus/odysseus-protocol/gen/proto/go/base/v1"
basev1
"github.com/odysseus/odysseus-protocol/gen/proto/go/base/v1"
omanager
"github.com/odysseus/odysseus-protocol/gen/proto/go/nodemanager/v1"
omanager
"github.com/odysseus/odysseus-protocol/gen/proto/go/nodemanager/v1"
"github.com/odysseus/service-registry/query"
"github.com/odysseus/service-registry/registry"
"github.com/redis/go-redis/v9"
"github.com/redis/go-redis/v9"
log
"github.com/sirupsen/logrus"
log
"github.com/sirupsen/logrus"
"google.golang.org/grpc"
"google.golang.org/grpc"
...
@@ -20,7 +22,8 @@ import (
...
@@ -20,7 +22,8 @@ import (
)
)
type
Node
struct
{
type
Node
struct
{
registry
*
nmregistry
.
RegistryService
register
*
nmregister
.
NMRegister
registry
*
registry
.
Registry
apiServer
*
grpc
.
Server
apiServer
*
grpc
.
Server
rdb
*
redis
.
Client
rdb
*
redis
.
Client
wm
*
WorkerManager
wm
*
WorkerManager
...
@@ -32,6 +35,26 @@ type Node struct {
...
@@ -32,6 +35,26 @@ type Node struct {
func
NewNode
()
*
Node
{
func
NewNode
()
*
Node
{
redisConfig
:=
config
.
GetConfig
()
.
Redis
redisConfig
:=
config
.
GetConfig
()
.
Redis
privk
,
err
:=
utils
.
HexToPrivatekey
(
config
.
GetConfig
()
.
PrivateKey
)
if
err
!=
nil
{
log
.
WithError
(
err
)
.
Error
(
"failed to parse node manager private key"
)
return
nil
}
querier
:=
query
.
NewQuery
(
registry
.
RedisConnParam
{
Addr
:
redisConfig
.
Addr
,
Password
:
redisConfig
.
Password
,
DbIndex
:
redisConfig
.
DbIndex
,
})
register
:=
nmregister
.
NewNMRegister
(
config
.
GetConfig
(),
querier
,
privk
.
PublicKey
)
reg
:=
registry
.
NewRegistry
(
registry
.
RedisConnParam
{
Addr
:
redisConfig
.
Addr
,
Password
:
redisConfig
.
Password
,
DbIndex
:
redisConfig
.
DbIndex
,
},
register
)
rdb
:=
utils
.
NewRedisClient
(
utils
.
RedisConnParam
{
rdb
:=
utils
.
NewRedisClient
(
utils
.
RedisConnParam
{
Addr
:
redisConfig
.
Addr
,
Addr
:
redisConfig
.
Addr
,
Password
:
redisConfig
.
Password
,
Password
:
redisConfig
.
Password
,
...
@@ -50,19 +73,15 @@ func NewNode() *Node {
...
@@ -50,19 +73,15 @@ func NewNode() *Node {
DbName
:
dbconf
.
DbName
,
DbName
:
dbconf
.
DbName
,
})
})
privk
,
err
:=
utils
.
HexToPrivatekey
(
config
.
GetConfig
()
.
PrivateKey
)
if
err
!=
nil
{
log
.
WithError
(
err
)
.
Error
(
"failed to parse node manager private key"
)
return
nil
}
brokers
:=
strings
.
Split
(
config
.
GetConfig
()
.
Kafka
.
Brokers
,
";"
)
brokers
:=
strings
.
Split
(
config
.
GetConfig
()
.
Kafka
.
Brokers
,
";"
)
producer
,
_
:=
utils
.
NewKafkaProducer
(
brokers
)
producer
,
_
:=
utils
.
NewKafkaProducer
(
brokers
)
node
:=
&
Node
{
node
:=
&
Node
{
register
:
register
,
registry
:
reg
,
rdb
:
rdb
,
rdb
:
rdb
,
privk
:
privk
,
privk
:
privk
,
cache
:
pay
,
cache
:
pay
,
apiServer
:
grpc
.
NewServer
(
grpc
.
MaxSendMsgSize
(
1024
*
1024
*
20
),
grpc
.
MaxRecvMsgSize
(
1024
*
1024
*
20
)),
apiServer
:
grpc
.
NewServer
(
grpc
.
MaxSendMsgSize
(
1024
*
1024
*
20
),
grpc
.
MaxRecvMsgSize
(
1024
*
1024
*
20
)),
registry
:
nmregistry
.
NewRegistryService
(
config
.
GetConfig
(),
rdb
,
privk
.
PublicKey
),
kafkaProducer
:
producer
,
kafkaProducer
:
producer
,
taskResultCh
:
make
(
chan
*
basev1
.
TaskReceipt
,
100000
),
taskResultCh
:
make
(
chan
*
basev1
.
TaskReceipt
,
100000
),
}
}
...
@@ -79,6 +98,7 @@ func (n *Node) Sign(hash []byte) ([]byte, error) {
...
@@ -79,6 +98,7 @@ func (n *Node) Sign(hash []byte) ([]byte, error) {
func
(
n
*
Node
)
Start
()
error
{
func
(
n
*
Node
)
Start
()
error
{
go
n
.
registry
.
Start
()
go
n
.
registry
.
Start
()
go
n
.
register
.
Start
()
go
n
.
postLoop
()
go
n
.
postLoop
()
if
err
:=
n
.
apiStart
();
err
!=
nil
{
if
err
:=
n
.
apiStart
();
err
!=
nil
{
...
@@ -134,6 +154,7 @@ func (n *Node) postLoop() {
...
@@ -134,6 +154,7 @@ func (n *Node) postLoop() {
func
(
n
*
Node
)
Stop
()
{
func
(
n
*
Node
)
Stop
()
{
n
.
registry
.
Stop
()
n
.
registry
.
Stop
()
n
.
register
.
Stop
()
n
.
apiServer
.
Stop
()
n
.
apiServer
.
Stop
()
close
(
n
.
taskResultCh
)
close
(
n
.
taskResultCh
)
}
}
server/service.go
View file @
dd656801
...
@@ -20,7 +20,7 @@ type NodeManagerService struct {
...
@@ -20,7 +20,7 @@ type NodeManagerService struct {
}
}
func
(
n
*
NodeManagerService
)
ManagerList
(
ctx
context
.
Context
,
request
*
omanager
.
ManagerListRequest
)
(
*
omanager
.
ManagerListResponse
,
error
)
{
func
(
n
*
NodeManagerService
)
ManagerList
(
ctx
context
.
Context
,
request
*
omanager
.
ManagerListRequest
)
(
*
omanager
.
ManagerListResponse
,
error
)
{
list
:=
n
.
node
.
regist
ry
.
GetNodeManagerList
(
nil
)
list
:=
n
.
node
.
regist
er
.
GetNodeManagerList
(
nil
)
res
:=
new
(
omanager
.
ManagerListResponse
)
res
:=
new
(
omanager
.
ManagerListResponse
)
res
.
Managers
=
make
([]
*
omanager
.
NodeManagerInfo
,
0
,
len
(
list
))
res
.
Managers
=
make
([]
*
omanager
.
NodeManagerInfo
,
0
,
len
(
list
))
for
_
,
v
:=
range
list
{
for
_
,
v
:=
range
list
{
...
...
server/workerManager.go
View file @
dd656801
...
@@ -14,6 +14,7 @@ import (
...
@@ -14,6 +14,7 @@ import (
"github.com/odysseus/nodemanager/utils"
"github.com/odysseus/nodemanager/utils"
odysseus
"github.com/odysseus/odysseus-protocol/gen/proto/go/base/v1"
odysseus
"github.com/odysseus/odysseus-protocol/gen/proto/go/base/v1"
omanager
"github.com/odysseus/odysseus-protocol/gen/proto/go/nodemanager/v1"
omanager
"github.com/odysseus/odysseus-protocol/gen/proto/go/nodemanager/v1"
"github.com/odysseus/service-registry/registry"
"github.com/redis/go-redis/v9"
"github.com/redis/go-redis/v9"
log
"github.com/sirupsen/logrus"
log
"github.com/sirupsen/logrus"
"golang.org/x/crypto/sha3"
"golang.org/x/crypto/sha3"
...
@@ -44,9 +45,10 @@ type Worker struct {
...
@@ -44,9 +45,10 @@ type Worker struct {
status
[]
byte
status
[]
byte
online
bool
online
bool
usageInfo
[]
*
omanager
.
DeviceUsage
usageInfo
[]
*
omanager
.
DeviceUsage
deviceInfo
[]
*
omanager
.
DeviceInfo
deviceInfo
*
omanager
.
DeviceInfoResponse
deviceInfoHash
[]
byte
deviceInfoHash
[]
byte
recentTask
*
lru
.
Cache
recentTask
*
lru
.
Cache
state
string
stream
omanager
.
NodeManagerService_RegisterWorkerServer
stream
omanager
.
NodeManagerService_RegisterWorkerServer
}
}
...
@@ -63,10 +65,11 @@ type WorkerManager struct {
...
@@ -63,10 +65,11 @@ type WorkerManager struct {
heartBeat
map
[
int64
]
int64
heartBeat
map
[
int64
]
int64
hbRwLock
sync
.
RWMutex
hbRwLock
sync
.
RWMutex
workers
map
[
int64
]
*
Worker
workers
map
[
int64
]
*
Worker
workid
map
[
string
]
*
Worker
workid
map
[
string
]
*
Worker
wkRwLock
sync
.
RWMutex
workerReg
map
[
int64
]
*
registry
.
Registry
quit
chan
struct
{}
wkRwLock
sync
.
RWMutex
quit
chan
struct
{}
node
*
Node
node
*
Node
std
*
standardlib
.
StandardTasks
std
*
standardlib
.
StandardTasks
...
@@ -94,10 +97,6 @@ func (wm *WorkerManager) UpdateHeartBeat(uuid int64) {
...
@@ -94,10 +97,6 @@ func (wm *WorkerManager) UpdateHeartBeat(uuid int64) {
wm
.
heartBeat
[
uuid
]
=
time
.
Now
()
.
Unix
()
wm
.
heartBeat
[
uuid
]
=
time
.
Now
()
.
Unix
()
}
}
func
(
wm
*
WorkerManager
)
UpdateStatus
(
worker
*
Worker
)
{
}
func
(
wm
*
WorkerManager
)
GetHeartBeat
(
uuid
int64
)
int64
{
func
(
wm
*
WorkerManager
)
GetHeartBeat
(
uuid
int64
)
int64
{
wm
.
hbRwLock
.
RLock
()
wm
.
hbRwLock
.
RLock
()
defer
wm
.
hbRwLock
.
RUnlock
()
defer
wm
.
hbRwLock
.
RUnlock
()
...
@@ -111,6 +110,21 @@ func (wm *WorkerManager) GetWorker(uuid int64) *Worker {
...
@@ -111,6 +110,21 @@ func (wm *WorkerManager) GetWorker(uuid int64) *Worker {
return
wm
.
workers
[
uuid
]
return
wm
.
workers
[
uuid
]
}
}
func
(
wm
*
WorkerManager
)
SetWorkerRegistry
(
uuid
int64
,
reg
*
registry
.
Registry
)
{
wm
.
wkRwLock
.
Lock
()
defer
wm
.
wkRwLock
.
Unlock
()
wm
.
workerReg
[
uuid
]
=
reg
}
func
(
wm
*
WorkerManager
)
StopRegistry
(
uuid
int64
)
{
wm
.
wkRwLock
.
Lock
()
defer
wm
.
wkRwLock
.
Unlock
()
if
reg
,
exist
:=
wm
.
workerReg
[
uuid
];
exist
{
reg
.
Stop
()
delete
(
wm
.
workerReg
,
uuid
)
}
}
func
(
wm
*
WorkerManager
)
SetWorkerAddr
(
worker
*
Worker
,
addr
string
)
{
func
(
wm
*
WorkerManager
)
SetWorkerAddr
(
worker
*
Worker
,
addr
string
)
{
wm
.
wkRwLock
.
Lock
()
wm
.
wkRwLock
.
Lock
()
defer
wm
.
wkRwLock
.
Unlock
()
defer
wm
.
wkRwLock
.
Unlock
()
...
@@ -194,14 +208,26 @@ func (wm *WorkerManager) manageWorker(worker *Worker) error {
...
@@ -194,14 +208,26 @@ func (wm *WorkerManager) manageWorker(worker *Worker) error {
deviceUsageTicker
:=
time
.
NewTicker
(
initialInterval
)
deviceUsageTicker
:=
time
.
NewTicker
(
initialInterval
)
defer
deviceUsageTicker
.
Stop
()
defer
deviceUsageTicker
.
Stop
()
reg
:=
registry
.
NewRegistry
(
registry
.
RedisConnParam
{
Addr
:
config
.
GetConfig
()
.
Redis
.
Addr
,
Password
:
config
.
GetConfig
()
.
Redis
.
Password
,
DbIndex
:
config
.
GetConfig
()
.
Redis
.
DbIndex
,
},
workerRegistry
{
worker
:
worker
,
wm
:
wm
})
wm
.
SetWorkerRegistry
(
worker
.
uuid
,
reg
)
worker
.
state
=
"connected"
go
reg
.
Start
()
defer
func
()
{
defer
func
()
{
log
.
WithFields
(
log
.
Fields
{
log
.
WithFields
(
log
.
Fields
{
"worker-addr"
:
worker
.
addr
,
"worker-addr"
:
worker
.
addr
,
"worker-uuid"
:
worker
.
uuid
,
"worker-uuid"
:
worker
.
uuid
,
})
.
Info
(
"exit manage worker"
)
})
.
Info
(
"exit manage worker"
)
worker
.
online
=
false
worker
.
online
=
false
worker
.
state
=
"disconnected"
wm
.
InActiveWorker
(
worker
)
wm
.
InActiveWorker
(
worker
)
wm
.
StopRegistry
(
worker
.
uuid
)
}()
}()
for
{
for
{
...
@@ -431,7 +457,7 @@ func (wm *WorkerManager) handleWorkerMsg(worker *Worker) {
...
@@ -431,7 +457,7 @@ func (wm *WorkerManager) handleWorkerMsg(worker *Worker) {
// receive device info
// receive device info
worker
.
online
=
true
worker
.
online
=
true
worker
.
publicKey
=
msg
.
DeviceInfo
.
MinerPubkey
worker
.
publicKey
=
msg
.
DeviceInfo
.
MinerPubkey
worker
.
deviceInfo
=
msg
.
DeviceInfo
.
Devices
worker
.
deviceInfo
=
msg
.
DeviceInfo
worker
.
benefitAddr
=
msg
.
DeviceInfo
.
BenefitAddress
worker
.
benefitAddr
=
msg
.
DeviceInfo
.
BenefitAddress
var
addr
=
""
var
addr
=
""
if
pubkey
,
err
:=
utils
.
HexToPubkey
(
worker
.
publicKey
);
err
!=
nil
{
if
pubkey
,
err
:=
utils
.
HexToPubkey
(
worker
.
publicKey
);
err
!=
nil
{
...
...
server/worker_registry.go
0 → 100644
View file @
dd656801
package
server
import
(
"encoding/json"
"fmt"
"github.com/odysseus/service-registry/common"
"github.com/odysseus/service-registry/query"
"github.com/odysseus/service-registry/registry"
)
var
(
wr
registry
.
Register
=
workerRegistry
{}
)
type
workerRegistry
struct
{
worker
*
Worker
wm
*
WorkerManager
}
func
(
w
workerRegistry
)
ServiceType
()
common
.
ServiceType
{
return
common
.
SERVICE_WORKER
}
func
(
w
workerRegistry
)
Instance
()
string
{
return
fmt
.
Sprintf
(
"%s"
,
w
.
worker
.
addr
)
}
func
(
w
workerRegistry
)
Status
()
string
{
return
fmt
.
Sprintf
(
"%s"
,
w
.
worker
.
status
)
}
func
(
w
workerRegistry
)
DetailInfo
()
(
json
.
RawMessage
,
error
)
{
if
w
.
worker
==
nil
{
return
nil
,
fmt
.
Errorf
(
"worker is nil"
)
}
if
w
.
worker
.
addr
==
""
{
return
nil
,
fmt
.
Errorf
(
"worker address is empty"
)
}
info
:=
query
.
WorkerInfo
{}
info
.
BenefitAddress
=
w
.
worker
.
benefitAddr
if
w
.
worker
.
deviceInfo
!=
nil
{
info
.
IP
=
w
.
worker
.
deviceInfo
.
DeviceIps
[
0
]
}
info
.
ActiveNM
,
_
=
w
.
wm
.
WorkerNmList
(
w
.
worker
)
info
.
HearBeat
=
w
.
wm
.
GetHeartBeat
(
w
.
worker
.
uuid
)
info
.
MinerAddress
=
w
.
worker
.
addr
return
json
.
Marshal
(
info
)
}
server/workerstatu.go
View file @
dd656801
...
@@ -15,7 +15,7 @@ func (wm *WorkerManager) UpdateWorkerDeviceInfo(worker *Worker, deviceInfos stri
...
@@ -15,7 +15,7 @@ func (wm *WorkerManager) UpdateWorkerDeviceInfo(worker *Worker, deviceInfos stri
func
(
wm
*
WorkerManager
)
AddWorkerFirst
(
worker
*
Worker
)
error
{
func
(
wm
*
WorkerManager
)
AddWorkerFirst
(
worker
*
Worker
)
error
{
log
.
WithField
(
"worker"
,
worker
.
addr
)
.
Info
(
"add worker first time."
)
log
.
WithField
(
"worker"
,
worker
.
addr
)
.
Info
(
"add worker first time."
)
for
_
,
device
:=
range
worker
.
deviceInfo
{
for
_
,
device
:=
range
worker
.
deviceInfo
.
Devices
{
// add device to redis
// add device to redis
priority
:=
0
priority
:=
0
_
=
device
// todo: set priority with device info.
_
=
device
// todo: set priority with device info.
...
@@ -47,6 +47,10 @@ func (wm *WorkerManager) ActiveWorker(worker *Worker) {
...
@@ -47,6 +47,10 @@ func (wm *WorkerManager) ActiveWorker(worker *Worker) {
wm
.
rdb
.
SAdd
(
context
.
Background
(),
workerStatusKey
(
worker
),
config
.
GetConfig
()
.
PublicEndpoint
())
wm
.
rdb
.
SAdd
(
context
.
Background
(),
workerStatusKey
(
worker
),
config
.
GetConfig
()
.
PublicEndpoint
())
}
}
func
(
wm
*
WorkerManager
)
WorkerNmList
(
worker
*
Worker
)
([]
string
,
error
)
{
return
wm
.
rdb
.
SMembers
(
context
.
Background
(),
workerStatusKey
(
worker
))
.
Result
()
}
func
(
wm
*
WorkerManager
)
InActiveWorker
(
worker
*
Worker
)
{
func
(
wm
*
WorkerManager
)
InActiveWorker
(
worker
*
Worker
)
{
wm
.
rdb
.
SRem
(
context
.
Background
(),
workerStatusKey
(
worker
),
config
.
GetConfig
()
.
PublicEndpoint
())
wm
.
rdb
.
SRem
(
context
.
Background
(),
workerStatusKey
(
worker
),
config
.
GetConfig
()
.
PublicEndpoint
())
}
}
...
...
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