cosmos-sdk/docs
yihuang 1f91ee2ee9
fix: state listener observe writes at wrong time (#13516)
* fix: state listener observe writes at wrong time

Closes: #13457

Currently state listener is notified when the cache store write, which happens in commit event only, which breaks the current design.
The solution (as discussed in the issue) is to listen state writes on rootmulti store only.

It also changes the file streamer to output single data file for the writes in the whole block, since we can't distinguish writes from different stage of abci events.

It adds new config items for file streamer:
- streamers.file.output-metadata
- streamers.file.stop-node-on-error
- streamers.file.fsync

* synchronous abci call, and format doc

* fix comment

* update file streamer readme and fix typos

* typo

* fix: state listener observe writes at wrong time

Closes: #13457

Currently state listener is notified when the cache store write, which happens in commit event only, which breaks the current design.
The solution (as discussed in the issue) is to listen state writes on rootmulti store only.

It also changes the file streamer to output single data file for the writes in the whole block, since we can't distinguish writes from different stage of abci events.

It adds new config items for file streamer:
- streamers.file.output-metadata
- streamers.file.stop-node-on-error
- streamers.file.fsync

synchronous abci call, and format doc

fix comment

update file streamer readme and fix typos

typo

* improve UX of file streamer, make it immediately usable after enabled

- set default value to write_dir.
- make write_dir based on home directory by default.
- auto-create the directory if not exists.

* get homePage from opts

Co-authored-by: Marko <marbar3778@yahoo.com>
2022-12-02 15:43:21 +01:00
..
architecture fix: state listener observe writes at wrong time (#13516) 2022-12-02 15:43:21 +01:00
docs feat: add tx limit to mempool (#14014) 2022-12-02 00:39:55 +00:00
spec docs: fix tooling (#13593) 2022-10-19 12:38:36 +00:00
src/css docs: add documentation about depinject and app wiring (#13683) 2022-11-07 19:19:07 +00:00
static docs: small ui fixes (#13546) 2022-10-13 19:58:25 +00:00
.gitignore docs: add 0.47 to docs (#13852) 2022-11-14 15:06:20 +01:00
babel.config.js feat: migrate to docusaurus (#13471) 2022-10-10 14:01:53 +00:00
build-all.sh docs: add 0.47 to docs (#13852) 2022-11-14 15:06:20 +01:00
DOC_WRITING_GUIDELINES.md docs: add documentation on documentation deployment (#13739) 2022-11-03 17:23:52 +01:00
docusaurus.config.js chore: bumps math and api deps (#14035) 2022-11-27 23:11:25 +01:00
package-lock.json build(deps): Bump minimatch, recursive-readdir and serve-handler (#13954) 2022-11-21 18:51:14 +01:00
package.json build(deps): Bump postcss from 8.4.18 to 8.4.19 in /docs (#13857) 2022-11-14 16:50:10 +00:00
post.sh docs: add docs about x/auth/tx (#14021) 2022-11-27 20:30:23 +00:00
pre.sh docs: add docs about x/auth/tx (#14021) 2022-11-27 20:30:23 +00:00
README.md docs: add 0.47 to docs (#13852) 2022-11-14 15:06:20 +01:00
sidebars.js feat: migrate to docusaurus (#13471) 2022-10-10 14:01:53 +00:00
tailwind.config.js docs: small ui fixes (#13546) 2022-10-13 19:58:25 +00:00
versions.json docs: add 0.47 to docs (#13852) 2022-11-14 15:06:20 +01:00
vuepress_versions feat: migrate to docusaurus (#13471) 2022-10-10 14:01:53 +00:00

Updating the docs

If you want to open a PR in Cosmos SDK to update the documentation, please follow the guidelines in CONTRIBUTING.md and the Documentation Writing Guidelines.

Stack

The documentation for Cosmos SDK is hosted at https://docs.cosmos.network and built from the files in the /docs directory. It is built using the following stack:

  • Docusaurus 2

  • Vuepress (pre v0.47)

  • Algolia DocSearch

        algolia: {
          appId: "QLS2QSP47E",
          apiKey: "067b84458bfa80c295e1d4f12c461911",
          indexName: "cosmos_network",
          contextualSearch: false,
        },
    
  • GitHub Pages

Docs Build Workflow

The docs are built and deployed automatically on GitHub Pages by a GitHub Action workflow. The workflow is triggered on every push to the main and release/v** branches, every time documentations or specs are modified.

How It Works

There is a GitHub Action listening for changes in the /docs directory for the main branch and each supported version branch (e.g. release/v0.46.x). Any updates to files in the /docs directory will automatically trigger a website deployment. Under the hood, the private website repository has a make build-docs target consumed by a Github Action within that repository.

How to Build the Docs Locally

Go to the docs directory and run the following commands:

cd docs
npm install

For starting only the current documentation, run:

npm start

It runs pre.sh scripts to get all the docs that are not already in the docs/docs folder. It also runs post.sh scripts to clean up the docs and remove unnecessary files when quitting.

Note, the command above only build the docs for the current versions. With the drawback that none of the redirections works. So, you'll need to go to /main to see the docs.

To build all the docs (including versioned documentation), run:

make build-docs

What to for new major SDK versions

When a new major version of the SDK is released, the following steps should be taken:

  • On the release/vX.Y.Z branch, remove the deploy action (.github/workflows/deploy-docs.yml), for avoiding deploying the docs from the release branches.

  • On the release/vX.Y.Z branch, update docusaurus.config.js and set the lastVersion to current, remove all other versions from the config.

  • Each time a new version is released (on docusaurus), drop support from the oldest versions.

    • If the old version is still running vuepress (v0.45, v0.46), remove its line from vuepress_versions

    • If any, remove the outdated redirections from docusaurus.config.js and add the base version redirection (/vX.XX) to /main.

        {
          from: ["/", "/master", "/v0.43", "/v0.44", "/v0.XX"], // here add the deprecated version
          to: "/main",
        },
      
  • Add the new version sidebar to the list of versionned sidebar and add the version to versions.json.

  • Update the latest version (presets[1].docs.lastVersion) in docusaurus.config.js.

  • Add the new version with in presets[1].docs.versions in docusaurus.config.js.

Learn more about versioning in Docusaurus.