Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into fix/revamp-loadtest
Browse files Browse the repository at this point in the history
  • Loading branch information
red-0ne committed Dec 17, 2024
2 parents e0a70fe + 91250b3 commit 1f6e1a8
Show file tree
Hide file tree
Showing 6 changed files with 108 additions and 6 deletions.
81 changes: 81 additions & 0 deletions docusaurus/docs/operate/quickstart/full_node_cheatsheet.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ step of the process, check out the [Full Node Walkthrough](../run_a_node/full_no
- [Pre-Requisites](#pre-requisites)
- [Install and Run a Full Node using Cosmovisor](#install-and-run-a-full-node-using-cosmovisor)
- [Automatic Upgrades Out of the Box](#automatic-upgrades-out-of-the-box)
- [Verify successful installation (curl latest block)](#verify-successful-installation-curl-latest-block)
- [FAQ \& Troubleshooting](#faq--troubleshooting)
- [\[OPTIONAL\] Do you care to know what just happened?](#optional-do-you-care-to-know-what-just-happened)

Expand Down Expand Up @@ -75,6 +76,86 @@ When a chain upgrade is proposed and approved:
3. Cosmovisor will switch to the new binary
4. The node will restart automatically

#### Verify successful installation (curl latest block)

You can verify the installation was successful by querying the latest block (i.e. checking the node height).

Running the following command:

```bash
curl -X GET http://localhost:26657/block | jq
```

Should provide a response in this form:

```json
{
"jsonrpc": "2.0",
"id": -1,
"result": {
"block_id": {
"hash": "924904A2FB97327D2D91EB18225041B3DF82D1DBA5BA988AB79CD3EAC4A4960C",
"parts": {
"total": 1,
"hash": "90E8EDC6841779CF4BADE35CDB53AA1276153BD26690999C5E87EB0E49E91AC8"
}
},
"block": {
"header": {
"version": {
"block": "11"
},
"chain_id": "pocket-beta",
"height": "4971",
"time": "2024-11-25T21:33:54.785576474Z",
"last_block_id": {
"hash": "E1D9F26882FD28447063CC11D326331C4B7C4A6417B2B2E5E38C5484C6D98168",
"parts": {
"total": 1,
"hash": "85847883D9A34F345A2C3E610E1EC524B3C12F41DD2BDC49B36824D9A12EAB32"
}
},
"last_commit_hash": "D49C2BF69F43658D63EF78487258DCA05F7239554E668CF9AE2502A5C6DB104E",
"data_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
"validators_hash": "5DC32F6AF7A2B6BAF1738FC5ADC8760E3A1A33A98839071D6A6FE503AD3BD52E",
"next_validators_hash": "5DC32F6AF7A2B6BAF1738FC5ADC8760E3A1A33A98839071D6A6FE503AD3BD52E",
"consensus_hash": "048091BC7DDC283F77BFBF91D73C44DA58C3DF8A9CBC867405D8B7F3DAADA22F",
"app_hash": "DEACCBB96F23B7B58CADAFBE7894DDC2C5ACA0F29A68EA1C67407FA06C8D617C",
"last_results_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
"evidence_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
"proposer_address": "21FABB12F80DAFF6CB83BA0958B2509FC127C3BD"
},
"data": {
"txs": []
},
"evidence": {
"evidence": []
},
"last_commit": {
"height": "4970",
"round": 0,
"block_id": {
"hash": "E1D9F26882FD28447063CC11D326331C4B7C4A6417B2B2E5E38C5484C6D98168",
"parts": {
"total": 1,
"hash": "85847883D9A34F345A2C3E610E1EC524B3C12F41DD2BDC49B36824D9A12EAB32"
}
},
"signatures": [
{
"block_id_flag": 2,
"validator_address": "21FABB12F80DAFF6CB83BA0958B2509FC127C3BD",
"timestamp": "2024-11-25T21:33:54.770507235Z",
"signature": "zQb3QPt032nIRTUc7kk4cSxgVF4hpMZycE6ZvpSSZM4Bj1XlOEcdFtHWiLsileVX9RkZHqChzGBstCnfCfK8Bg=="
},
...
]
}
}
}
}
```

### FAQ & Troubleshooting

See the [FAQ & Troubleshooting section in the Full Node Walkthrough](../run_a_node/full_node_walkthrough.md#faq--troubleshooting)
Expand Down
8 changes: 8 additions & 0 deletions e2e/tests/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,14 @@ func (p *pocketdBin) runCurlCmd(rpcBaseURL, service, method, path, appAddr, data
}
rpcUrl.Path = rpcUrl.Path + path

// Ensure that the path also ends with a "/" if it only contains the version.
// This is required because the server responds with a 301 redirect for "/v1"
// and curl binaries on some platforms MAY NOT support re-sending POST data
// while following a redirect (`-L` flag).
if strings.HasSuffix(rpcUrl.Path, "/v1") {
rpcUrl.Path = rpcUrl.Path + "/"
}

base := []string{
"-v", // verbose output
"-sS", // silent with error
Expand Down
3 changes: 2 additions & 1 deletion pkg/relayer/session/session.go
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ func (rs *relayerSessionsManager) ensureSessionTree(
// If the sessionTree does not exist, create and assign it to the
// sessionTreeWithSessionId map for the given supplier operator address.
if !ok {
sessionTree, err = NewSessionTree(sessionHeader, &supplierOperatorAccAddress, rs.storesDirectory)
sessionTree, err = NewSessionTree(sessionHeader, &supplierOperatorAccAddress, rs.storesDirectory, rs.logger)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -468,6 +468,7 @@ func (rs *relayerSessionsManager) deleteExpiredSessionTreesFn(
return
}

// TODO_TEST: Add tests that cover existing expired failed session trees.
for _, sessionTree := range failedSessionTrees {
sessionEndHeight := sessionTree.GetSessionHeader().GetSessionEndBlockHeight()
proofWindowCloseHeight := expirationHeightFn(sharedParams, sessionEndHeight)
Expand Down
9 changes: 8 additions & 1 deletion pkg/relayer/session/sessiontree.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ func NewSessionTree(
sessionHeader *sessiontypes.SessionHeader,
supplierOperatorAddress *cosmostypes.AccAddress,
storesDirectory string,
logger polylog.Logger,
) (relayer.SessionTree, error) {
// Join the storePrefix and the session.sessionId and supplier's operator address to
// create a unique storePath.
Expand All @@ -95,7 +96,14 @@ func NewSessionTree(
// contain a non-hashed Relay that could be used to validate the proof on-chain.
trie := smt.NewSparseMerkleSumTrie(treeStore, protocol.NewTrieHasher(), smt.WithValueHasher(nil))

logger = logger.With(
"store_path", storePath,
"session_id", sessionHeader.SessionId,
"supplier_operator_address", supplierOperatorAddress,
)

sessionTree := &sessionTree{
logger: logger,
sessionHeader: sessionHeader,
storePath: storePath,
treeStore: treeStore,
Expand Down Expand Up @@ -268,7 +276,6 @@ func (st *sessionTree) Delete() error {
} else {
st.logger.With(
"claim_root", fmt.Sprintf("%x", st.GetClaimRoot()),
"session_id", st.GetSessionHeader().SessionId,
).Info().Msg("KVStore is already stopped")
}

Expand Down
7 changes: 6 additions & 1 deletion testutil/testtree/tree.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"github.com/stretchr/testify/require"

"github.com/pokt-network/poktroll/pkg/crypto"
"github.com/pokt-network/poktroll/pkg/polylog"
"github.com/pokt-network/poktroll/pkg/relayer"
"github.com/pokt-network/poktroll/pkg/relayer/session"
"github.com/pokt-network/poktroll/testutil/testrelayer"
Expand All @@ -31,7 +32,7 @@ func NewFilledSessionTree(
t.Helper()

// Initialize an empty session tree with the given session header.
sessionTree := NewEmptySessionTree(t, sessionTreeHeader, supplierOperatorAddr)
sessionTree := NewEmptySessionTree(t, ctx, sessionTreeHeader, supplierOperatorAddr)

// Add numRelays of relays to the session tree.
FillSessionTree(
Expand All @@ -50,6 +51,7 @@ func NewFilledSessionTree(
// NewEmptySessionTree creates a new empty session tree with for given session.
func NewEmptySessionTree(
t *testing.T,
ctx context.Context,
sessionTreeHeader *sessiontypes.SessionHeader,
supplierOperatorAddr string,
) relayer.SessionTree {
Expand All @@ -66,11 +68,14 @@ func NewEmptySessionTree(

accAddress := cosmostypes.MustAccAddressFromBech32(supplierOperatorAddr)

logger := polylog.Ctx(ctx)

// Construct a session tree to add relays to and generate a proof from.
sessionTree, err := session.NewSessionTree(
sessionTreeHeader,
&accAddress,
testSessionTreeStoreDir,
logger,
)
require.NoError(t, err)

Expand Down
6 changes: 3 additions & 3 deletions x/proof/keeper/proof_validation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ func TestEnsureValidProof_Error(t *testing.T) {
desc: "relay must be deserializable",
newProof: func(t *testing.T) *prooftypes.Proof {
// Construct a session tree to which we'll add 1 unserializable relay.
mangledRelaySessionTree := testtree.NewEmptySessionTree(t, validSessionHeader, supplierOperatorAddr)
mangledRelaySessionTree := testtree.NewEmptySessionTree(t, ctx, validSessionHeader, supplierOperatorAddr)

// Add the mangled relay to the session tree.
err = mangledRelaySessionTree.Update([]byte{1}, mangledRelayBz, 1)
Expand Down Expand Up @@ -444,7 +444,7 @@ func TestEnsureValidProof_Error(t *testing.T) {

// Construct a session tree with 1 relay with a session header containing
// a session ID that doesn't match the expected session ID.
invalidRequestSignatureSessionTree := testtree.NewEmptySessionTree(t, validSessionHeader, supplierOperatorAddr)
invalidRequestSignatureSessionTree := testtree.NewEmptySessionTree(t, ctx, validSessionHeader, supplierOperatorAddr)

// Add the relay to the session tree.
err = invalidRequestSignatureSessionTree.Update([]byte{1}, invalidRequestSignatureRelayBz, 1)
Expand Down Expand Up @@ -505,7 +505,7 @@ func TestEnsureValidProof_Error(t *testing.T) {

// Construct a session tree with 1 relay with a session header containing
// a session ID that doesn't match the expected session ID.
invalidResponseSignatureSessionTree := testtree.NewEmptySessionTree(t, validSessionHeader, supplierOperatorAddr)
invalidResponseSignatureSessionTree := testtree.NewEmptySessionTree(t, ctx, validSessionHeader, supplierOperatorAddr)

// Add the relay to the session tree.
err = invalidResponseSignatureSessionTree.Update([]byte{1}, relayBz, 1)
Expand Down

0 comments on commit 1f6e1a8

Please sign in to comment.