-
Notifications
You must be signed in to change notification settings - Fork 186
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adds NodeInfo endpoint to retriever and dispersal services for observability #630
Conversation
…ervability into node versions ``` grpcurl --plaintext localhost:32005 node.Dispersal.VersionInfo { "semver": "0.7.5" } ``` ``` grpcurl --plaintext localhost:32005 node.Dispersal.VersionInfo { "semver": "0.8.0-rc.1" } ```
6e4b456
to
ad343e7
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
Does this work in parallel with the existing http endpoint? xxx.xxx.xxx.xxx/eigen/node
What's the advantage over the previous version check?
api/proto/node/node.proto
Outdated
@@ -14,13 +14,17 @@ service Dispersal { | |||
// for the protocol-defined length of custody. It will return a signature at the | |||
// end to attest to the data in this request it has processed. | |||
rpc StoreChunks(StoreChunksRequest) returns (StoreChunksReply) {} | |||
// Retrieve version into metadata |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: indent
@@ -33,7 +33,7 @@ var ( | |||
0: "eth_quorum", | |||
1: "permissioned_quorum", | |||
} | |||
SemVer = "v0.0.0" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How is this used today and what difference does this make?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a fallback. Only gets triggered if you do a go build
without passing -ldflags="-X 'github.com/Layr-Labs/eigenda/node.SemVer=${SEMVER}'
so pretty much just our unit tests will see 0.0.0
I'm removed the v
to be semver spec compliant. None of our released docker builds use the v
prefix.
node/config.go
Outdated
@@ -33,7 +33,7 @@ var ( | |||
0: "eth_quorum", | |||
1: "permissioned_quorum", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure how this is used. Do we need to update this to eigen_quorum
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1
node/config.go
Outdated
@@ -33,7 +33,7 @@ var ( | |||
0: "eth_quorum", | |||
1: "permissioned_quorum", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1
api/proto/node/node.proto
Outdated
} | ||
|
||
service Retrieval { | ||
// RetrieveChunks retrieves the chunks for a blob custodied at the Node. | ||
rpc RetrieveChunks(RetrieveChunksRequest) returns (RetrieveChunksReply) {} | ||
// GetBlobHeader is similar to RetrieveChunks, this just returns the header of the blob. | ||
rpc GetBlobHeader(GetBlobHeaderRequest) returns (GetBlobHeaderReply) {} | ||
// Retrieve version into metadata |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
into
-> info
The advantage is that we have a guarantee that it is reachable because the IP:PORT is registered. The node api runs on port |
ba014f7
to
fb9314f
Compare
Adds node info metadata
|
If we want to rely on this API operationally (not just informationally), it has to have a granrantee. |
Exposing System level info is less defensible and operators could raise security/privacy concerns to allowing the enumeration of internal specs. cc @anupsv |
Added a flag to disable resource information (os, arch, cpus, mem) from the NodeInfo API.
|
…mem) on the NodeInfo endpoint
6e6f421
to
44695ea
Compare
If we want to be less aggressive, perhaps this should be OPT-IN. @jianoaix @ian-shim @anupsv @nivethapu |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think opt out is totally reasonable
After deploying this change, we can have dataapi (via reachability check) hit this endpoint and log semver per operator.
Why are these changes needed?
Checks