Skip to content
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

fix: rosetta getHeight function to use tmRPC.GenesisChunked() instead tmRPC.Genesis() #10340

Merged
merged 6 commits into from
Oct 19, 2021

Conversation

yun-yeo
Copy link
Contributor

@yun-yeo yun-yeo commented Oct 12, 2021

Description

When we enable rosetta from the chain with non-zero initial height & huge genesis, it always return

Error: rosetta: (502) bad gateway

This is due to huge genesis load rejection from Tendermint.

In current implementation, rosetta server requests genesis to get initial height

c.tmRPC.Genesis(ctx)

but, this will be failed with below message when the genesis is huge

{
  "jsonrpc": "2.0",
  "id": -1,
  "error": {
    "code": -32603,
    "message": "Internal error",
    "data": "genesis response is large, please use the genesis_chunked API instead"
  }
}

To fix this, we can use following lines

status, err := c.tmRPC. GenesisChunked(ctx)


Author Checklist

All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.

I have...

  • included the correct type prefix in the PR title
  • added ! to the type prefix if API or client breaking change
  • targeted the correct branch (see PR Targeting)
  • provided a link to the relevant issue or specification
  • followed the guidelines for building modules
  • included the necessary unit and integration tests
  • added a changelog entry to CHANGELOG.md
  • included comments for documenting Go code
  • updated the relevant documentation or specification
  • reviewed "Files changed" and left comments if necessary
  • confirmed all CI checks have passed

Reviewers Checklist

All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.

I have...

  • confirmed the correct type prefix in the PR title
  • confirmed ! in the type prefix if API or client breaking change
  • confirmed all author checklist items have been addressed
  • reviewed state machine logic
  • reviewed API design and naming
  • reviewed documentation is accurate
  • reviewed tests and test coverage
  • manually tested (if applicable)

@codecov
Copy link

codecov bot commented Oct 12, 2021

Codecov Report

Merging #10340 (ef42cff) into master (26bcb1e) will decrease coverage by 0.01%.
The diff coverage is 36.17%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master   #10340      +/-   ##
==========================================
- Coverage   64.27%   64.26%   -0.02%     
==========================================
  Files         572      570       -2     
  Lines       54230    54222       -8     
==========================================
- Hits        34859    34846      -13     
- Misses      17389    17391       +2     
- Partials     1982     1985       +3     
Impacted Files Coverage Δ
x/auth/client/cli/tx_multisign.go 0.00% <0.00%> (ø)
x/auth/client/cli/validate_sigs.go 0.00% <0.00%> (ø)
x/auth/tx/mode_handler.go 78.94% <ø> (-2.01%) ⬇️
x/auth/tx/direct_aux.go 88.88% <25.00%> (-11.12%) ⬇️
server/rosetta/client_online.go 1.70% <28.57%> (+1.70%) ⬆️
client/tx/tx.go 41.23% <100.00%> (+0.30%) ⬆️
server/rosetta/converter.go 56.55% <100.00%> (+0.17%) ⬆️
x/auth/middleware/sigverify.go 66.66% <100.00%> (+0.16%) ⬆️
x/auth/tx/legacy_amino_json.go 88.00% <100.00%> (ø)
x/bank/keeper/keeper.go 72.10% <100.00%> (+0.38%) ⬆️
... and 1 more

@yun-yeo yun-yeo changed the title [Rosetta] fix getHeight function to use tmRPC.Status() instead tmRPC.Genesis() [Rosetta] fix getHeight function to use tmRPC.GenesisChunk() instead tmRPC.Genesis() Oct 12, 2021
@yun-yeo yun-yeo changed the title [Rosetta] fix getHeight function to use tmRPC.GenesisChunk() instead tmRPC.Genesis() [Rosetta] fix getHeight function to use tmRPC.GenesisChunked() instead tmRPC.Genesis() Oct 12, 2021
@yun-yeo yun-yeo changed the title [Rosetta] fix getHeight function to use tmRPC.GenesisChunked() instead tmRPC.Genesis() fix - rosetta getHeight function to use tmRPC.GenesisChunked() instead tmRPC.Genesis() Oct 12, 2021
@amaury1093 amaury1093 self-assigned this Oct 12, 2021
CHANGELOG.md Outdated Show resolved Hide resolved
return 0, err
}

re, err := regexp.Compile("\"initial_height\":\"(\\d+)\"")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this works, but can we not just decode into a map? I guess this would be faster...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried, but the chunked data is not complete JSON string, so hard to decode it to map.

Copy link
Contributor

@alexanderbez alexanderbez Oct 13, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really? The chunked response is a JSON object. How is it not complete? Do you have an example response?

Copy link
Contributor Author

@yun-yeo yun-yeo Oct 19, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah I mean, the chunked genesis is not complete JSON.

The response itself is JSON.

Here is genesis_chunk response example

yun-yeo and others added 3 commits October 13, 2021 00:25
…nesis() due to huge genesis load rejection from server
It is possible to submit a TX with a fees object containing a Coin with a nil amount. This results in a rather cryptic redacted panic response when the basic validation checks fee Coins for negative amounts.

This PR adds an additional check for nil to provide a friendlier error message.

---

*All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.*

I have...

- [x] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] added `!` to the type prefix if API or client breaking change
- [x] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting))
- [x] provided a link to the relevant issue or specification (note: No issue exists)
- [x] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules)
- [x] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing) (note: First PR against the SDK so please comment with what needs to be done)
- [x] added a changelog entry to `CHANGELOG.md`
- [x] included comments for [documenting Go code](https://blog.golang.org/godoc)
- [ ] updated the relevant documentation or specification
- [x] reviewed "Files changed" and left comments if necessary
- [x] confirmed all CI checks have passed

*All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.*

I have...

- [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] confirmed `!` in the type prefix if API or client breaking change
- [ ] confirmed all author checklist items have been addressed
- [ ] reviewed state machine logic
- [ ] reviewed API design and naming
- [ ] reviewed documentation is accurate
- [ ] reviewed tests and test coverage
- [ ] manually tested (if applicable)

Update CHANGELOG.md
<!--
The default pull request template is for types feat, fix, or refactor.
For other templates, add one of the following parameters to the url:
- template=docs.md
- template=other.md
-->

## Description

Closes: cosmos#10292 

<!-- Add a description of the changes that this PR introduces and the files that
are the most critical to review. -->

---

### Author Checklist

*All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.*

I have...

- [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] added `!` to the type prefix if API or client breaking change
- [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting))
- [ ] provided a link to the relevant issue or specification
- [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules)
- [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing)
- [ ] added a changelog entry to `CHANGELOG.md`
- [ ] included comments for [documenting Go code](https://blog.golang.org/godoc)
- [ ] updated the relevant documentation or specification
- [ ] reviewed "Files changed" and left comments if necessary
- [ ] confirmed all CI checks have passed

### Reviewers Checklist

*All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.*

I have...

- [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] confirmed `!` in the type prefix if API or client breaking change
- [ ] confirmed all author checklist items have been addressed 
- [ ] reviewed state machine logic
- [ ] reviewed API design and naming
- [ ] reviewed documentation is accurate
- [ ] reviewed tests and test coverage
- [ ] manually tested (if applicable)
@yun-yeo yun-yeo force-pushed the bugfix/rosetta-genensis-block-loading branch from 67a6431 to 8ba4aaf Compare October 12, 2021 15:26
Copy link
Member

@tac0turtle tac0turtle left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@tac0turtle tac0turtle added the A:automerge Automatically merge PR once all prerequisites pass. label Oct 13, 2021
@tac0turtle tac0turtle changed the title fix - rosetta getHeight function to use tmRPC.GenesisChunked() instead tmRPC.Genesis() fix: rosetta getHeight function to use tmRPC.GenesisChunked() instead tmRPC.Genesis() Oct 13, 2021
@amaury1093
Copy link
Contributor

Nice! Could we fix the failing test?

@mergify mergify bot merged commit 6789862 into cosmos:master Oct 19, 2021
mergify bot pushed a commit that referenced this pull request Oct 19, 2021
…ad tmRPC.Genesis() (#10340)

<!--
The default pull request template is for types feat, fix, or refactor.
For other templates, add one of the following parameters to the url:
- template=docs.md
- template=other.md
-->

## Description

When we enable rosetta from the chain with non-zero initial height & huge genesis, it always return
```
Error: rosetta: (502) bad gateway
```

This is due to huge genesis load rejection from Tendermint.

In current implementation, rosetta server requests genesis to get initial height
```
c.tmRPC.Genesis(ctx)
```

but, this will be failed with below message when the genesis is huge
```
{
  "jsonrpc": "2.0",
  "id": -1,
  "error": {
    "code": -32603,
    "message": "Internal error",
    "data": "genesis response is large, please use the genesis_chunked API instead"
  }
}
```

To fix this, we can use following lines
```
status, err := c.tmRPC. GenesisChunked(ctx)

```
---

### Author Checklist

*All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.*

I have...

- [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] added `!` to the type prefix if API or client breaking change
- [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting))
- [ ] provided a link to the relevant issue or specification
- [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules)
- [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing)
- [ ] added a changelog entry to `CHANGELOG.md`
- [ ] included comments for [documenting Go code](https://blog.golang.org/godoc)
- [ ] updated the relevant documentation or specification
- [ ] reviewed "Files changed" and left comments if necessary
- [ ] confirmed all CI checks have passed

### Reviewers Checklist

*All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.*

I have...

- [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] confirmed `!` in the type prefix if API or client breaking change
- [ ] confirmed all author checklist items have been addressed
- [ ] reviewed state machine logic
- [ ] reviewed API design and naming
- [ ] reviewed documentation is accurate
- [ ] reviewed tests and test coverage
- [ ] manually tested (if applicable)

(cherry picked from commit 6789862)

# Conflicts:
#	CHANGELOG.md
mergify bot pushed a commit that referenced this pull request Oct 19, 2021
…ad tmRPC.Genesis() (#10340)

<!--
The default pull request template is for types feat, fix, or refactor.
For other templates, add one of the following parameters to the url:
- template=docs.md
- template=other.md
-->

## Description

When we enable rosetta from the chain with non-zero initial height & huge genesis, it always return
```
Error: rosetta: (502) bad gateway
```

This is due to huge genesis load rejection from Tendermint.

In current implementation, rosetta server requests genesis to get initial height
```
c.tmRPC.Genesis(ctx)
```

but, this will be failed with below message when the genesis is huge
```
{
  "jsonrpc": "2.0",
  "id": -1,
  "error": {
    "code": -32603,
    "message": "Internal error",
    "data": "genesis response is large, please use the genesis_chunked API instead"
  }
}
```

To fix this, we can use following lines
```
status, err := c.tmRPC. GenesisChunked(ctx)

```
---

### Author Checklist

*All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.*

I have...

- [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] added `!` to the type prefix if API or client breaking change
- [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting))
- [ ] provided a link to the relevant issue or specification
- [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules)
- [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing)
- [ ] added a changelog entry to `CHANGELOG.md`
- [ ] included comments for [documenting Go code](https://blog.golang.org/godoc)
- [ ] updated the relevant documentation or specification
- [ ] reviewed "Files changed" and left comments if necessary
- [ ] confirmed all CI checks have passed

### Reviewers Checklist

*All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.*

I have...

- [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] confirmed `!` in the type prefix if API or client breaking change
- [ ] confirmed all author checklist items have been addressed
- [ ] reviewed state machine logic
- [ ] reviewed API design and naming
- [ ] reviewed documentation is accurate
- [ ] reviewed tests and test coverage
- [ ] manually tested (if applicable)

(cherry picked from commit 6789862)

# Conflicts:
#	CHANGELOG.md
#	server/rosetta/client_online.go
amaury1093 pushed a commit that referenced this pull request Oct 20, 2021
…ad tmRPC.Genesis() (backport #10340) (#10399)

* fix: rosetta `getHeight` function to use tmRPC.GenesisChunked() instead tmRPC.Genesis() (#10340)

<!--
The default pull request template is for types feat, fix, or refactor.
For other templates, add one of the following parameters to the url:
- template=docs.md
- template=other.md
-->

## Description

When we enable rosetta from the chain with non-zero initial height & huge genesis, it always return
```
Error: rosetta: (502) bad gateway
```

This is due to huge genesis load rejection from Tendermint.

In current implementation, rosetta server requests genesis to get initial height
```
c.tmRPC.Genesis(ctx)
```

but, this will be failed with below message when the genesis is huge
```
{
  "jsonrpc": "2.0",
  "id": -1,
  "error": {
    "code": -32603,
    "message": "Internal error",
    "data": "genesis response is large, please use the genesis_chunked API instead"
  }
}
```

To fix this, we can use following lines
```
status, err := c.tmRPC. GenesisChunked(ctx)

```
---

### Author Checklist

*All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.*

I have...

- [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] added `!` to the type prefix if API or client breaking change
- [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting))
- [ ] provided a link to the relevant issue or specification
- [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules)
- [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing)
- [ ] added a changelog entry to `CHANGELOG.md`
- [ ] included comments for [documenting Go code](https://blog.golang.org/godoc)
- [ ] updated the relevant documentation or specification
- [ ] reviewed "Files changed" and left comments if necessary
- [ ] confirmed all CI checks have passed

### Reviewers Checklist

*All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.*

I have...

- [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] confirmed `!` in the type prefix if API or client breaking change
- [ ] confirmed all author checklist items have been addressed
- [ ] reviewed state machine logic
- [ ] reviewed API design and naming
- [ ] reviewed documentation is accurate
- [ ] reviewed tests and test coverage
- [ ] manually tested (if applicable)

(cherry picked from commit 6789862)

# Conflicts:
#	CHANGELOG.md

* fix conflicts

Co-authored-by: yys <sw.yunsuk@gmail.com>
Co-authored-by: marbar3778 <marbar3778@yahoo.com>
evan-forbes pushed a commit to evan-forbes/cosmos-sdk that referenced this pull request Nov 1, 2021
…ad tmRPC.Genesis() (backport cosmos#10340) (cosmos#10399)

* fix: rosetta `getHeight` function to use tmRPC.GenesisChunked() instead tmRPC.Genesis() (cosmos#10340)

<!--
The default pull request template is for types feat, fix, or refactor.
For other templates, add one of the following parameters to the url:
- template=docs.md
- template=other.md
-->

## Description

When we enable rosetta from the chain with non-zero initial height & huge genesis, it always return
```
Error: rosetta: (502) bad gateway
```

This is due to huge genesis load rejection from Tendermint.

In current implementation, rosetta server requests genesis to get initial height
```
c.tmRPC.Genesis(ctx)
```

but, this will be failed with below message when the genesis is huge
```
{
  "jsonrpc": "2.0",
  "id": -1,
  "error": {
    "code": -32603,
    "message": "Internal error",
    "data": "genesis response is large, please use the genesis_chunked API instead"
  }
}
```

To fix this, we can use following lines
```
status, err := c.tmRPC. GenesisChunked(ctx)

```
---

### Author Checklist

*All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.*

I have...

- [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] added `!` to the type prefix if API or client breaking change
- [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting))
- [ ] provided a link to the relevant issue or specification
- [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules)
- [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing)
- [ ] added a changelog entry to `CHANGELOG.md`
- [ ] included comments for [documenting Go code](https://blog.golang.org/godoc)
- [ ] updated the relevant documentation or specification
- [ ] reviewed "Files changed" and left comments if necessary
- [ ] confirmed all CI checks have passed

### Reviewers Checklist

*All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.*

I have...

- [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] confirmed `!` in the type prefix if API or client breaking change
- [ ] confirmed all author checklist items have been addressed
- [ ] reviewed state machine logic
- [ ] reviewed API design and naming
- [ ] reviewed documentation is accurate
- [ ] reviewed tests and test coverage
- [ ] manually tested (if applicable)

(cherry picked from commit 6789862)

# Conflicts:
#	CHANGELOG.md

* fix conflicts

Co-authored-by: yys <sw.yunsuk@gmail.com>
Co-authored-by: marbar3778 <marbar3778@yahoo.com>
Eengineer1 pushed a commit to cheqd/cosmos-sdk that referenced this pull request Aug 26, 2022
…ad tmRPC.Genesis() (backport cosmos#10340) (cosmos#10399)

* fix: rosetta `getHeight` function to use tmRPC.GenesisChunked() instead tmRPC.Genesis() (cosmos#10340)

<!--
The default pull request template is for types feat, fix, or refactor.
For other templates, add one of the following parameters to the url:
- template=docs.md
- template=other.md
-->

When we enable rosetta from the chain with non-zero initial height & huge genesis, it always return
```
Error: rosetta: (502) bad gateway
```

This is due to huge genesis load rejection from Tendermint.

In current implementation, rosetta server requests genesis to get initial height
```
c.tmRPC.Genesis(ctx)
```

but, this will be failed with below message when the genesis is huge
```
{
  "jsonrpc": "2.0",
  "id": -1,
  "error": {
    "code": -32603,
    "message": "Internal error",
    "data": "genesis response is large, please use the genesis_chunked API instead"
  }
}
```

To fix this, we can use following lines
```
status, err := c.tmRPC. GenesisChunked(ctx)

```
---

*All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.*

I have...

- [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] added `!` to the type prefix if API or client breaking change
- [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting))
- [ ] provided a link to the relevant issue or specification
- [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules)
- [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing)
- [ ] added a changelog entry to `CHANGELOG.md`
- [ ] included comments for [documenting Go code](https://blog.golang.org/godoc)
- [ ] updated the relevant documentation or specification
- [ ] reviewed "Files changed" and left comments if necessary
- [ ] confirmed all CI checks have passed

*All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.*

I have...

- [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] confirmed `!` in the type prefix if API or client breaking change
- [ ] confirmed all author checklist items have been addressed
- [ ] reviewed state machine logic
- [ ] reviewed API design and naming
- [ ] reviewed documentation is accurate
- [ ] reviewed tests and test coverage
- [ ] manually tested (if applicable)

(cherry picked from commit 6789862)

* fix conflicts

Co-authored-by: yys <sw.yunsuk@gmail.com>
Co-authored-by: marbar3778 <marbar3778@yahoo.com>
JeancarloBarrios pushed a commit to agoric-labs/cosmos-sdk that referenced this pull request Sep 28, 2024
…ad tmRPC.Genesis() (backport cosmos#10340) (cosmos#10399)

* fix: rosetta `getHeight` function to use tmRPC.GenesisChunked() instead tmRPC.Genesis() (cosmos#10340)

<!--
The default pull request template is for types feat, fix, or refactor.
For other templates, add one of the following parameters to the url:
- template=docs.md
- template=other.md
-->

## Description

When we enable rosetta from the chain with non-zero initial height & huge genesis, it always return
```
Error: rosetta: (502) bad gateway
```

This is due to huge genesis load rejection from Tendermint.

In current implementation, rosetta server requests genesis to get initial height
```
c.tmRPC.Genesis(ctx)
```

but, this will be failed with below message when the genesis is huge
```
{
  "jsonrpc": "2.0",
  "id": -1,
  "error": {
    "code": -32603,
    "message": "Internal error",
    "data": "genesis response is large, please use the genesis_chunked API instead"
  }
}
```

To fix this, we can use following lines
```
status, err := c.tmRPC. GenesisChunked(ctx)

```
---

### Author Checklist

*All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.*

I have...

- [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] added `!` to the type prefix if API or client breaking change
- [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting))
- [ ] provided a link to the relevant issue or specification
- [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules)
- [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing)
- [ ] added a changelog entry to `CHANGELOG.md`
- [ ] included comments for [documenting Go code](https://blog.golang.org/godoc)
- [ ] updated the relevant documentation or specification
- [ ] reviewed "Files changed" and left comments if necessary
- [ ] confirmed all CI checks have passed

### Reviewers Checklist

*All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.*

I have...

- [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] confirmed `!` in the type prefix if API or client breaking change
- [ ] confirmed all author checklist items have been addressed
- [ ] reviewed state machine logic
- [ ] reviewed API design and naming
- [ ] reviewed documentation is accurate
- [ ] reviewed tests and test coverage
- [ ] manually tested (if applicable)

(cherry picked from commit 6789862)

# Conflicts:
#	CHANGELOG.md

* fix conflicts

Co-authored-by: yys <sw.yunsuk@gmail.com>
Co-authored-by: marbar3778 <marbar3778@yahoo.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A:automerge Automatically merge PR once all prerequisites pass.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants