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

ignore (workaround for lack of itest runability) #11987

Draft
wants to merge 35 commits into
base: release/v1.26.4
Choose a base branch
from

Conversation

ribasushi
Copy link
Contributor

@ribasushi ribasushi commented May 11, 2024

DO NOT MERGE
DO NOT LOOK
KEEP WALKING

☨ this PR is never meant to leave draft status: it is merely temporary CI for https://github.com/ribasushi/ltsh#readme, as running itests locally is currently quite challenging

@ribasushi ribasushi force-pushed the master branch 5 times, most recently from 9fbbc41 to 795c1ce Compare May 11, 2024 17:31
rvagg and others added 24 commits May 16, 2024 11:10
* remove and replace some linters
* remove some exclusions
* make all exclusions more explicit matches
chore: remove unmaintained bootstrappers
This will re-execute tipsets to forcibly re-compute and store events
when they're missing. This is effectively lazy backfilling of events.

NOTE: This _won't_ backfill the index itself, it'll just give us the
events.

fixes filecoin-project#11335
Eth subscribe tipsets API should only return tipsets that have been executed.

We do this by only returning the parent tipset of the latest tipset received by ETH Subscribe from it's TipSetFilter subscription.

Closes filecoin-project#11807
Subsumes filecoin-project#11816
Upstream has merged our code to expose a `SignatureBytes` function, so
we can now switch back to using it directly. This also brings bug fixes.
This was used to run an internal IPFS node...
1. Demote a noisy blocksync request error to info. All this warning
means is that someone is requesting a tipset we don't have.
3. Fix a TODO and return a single CompactedMessages rather than 4
separate values.
Use native go implementation to sort and adjust imports. Compared to the
previous bash version, this is at least 2X faster.
* add claim-extend cli

* fix arg usage

* add missing question

* fix client addr, datacap prompt

* replace waitGrp with errGrp

* use promptUI

* replace fmt.ErrorF with xerror

* apply var name suggestion

* GST rc3, update types

* add itest

* make gen
…ilecoin-project#11764)

* fix Datacap TermMax

* fix itest

* add batching

* make batch size variable

* docsgen-cli

* reduce batch size, fix batch dc

* apply suggestion from review

* put back TODO

---------

Co-authored-by: LexLuthr <lexluthr@protocol.ai>
ribasushi and others added 10 commits May 16, 2024 11:11
There are no perf gains to be had here anyway
By a wide margin the top issue with large blockstores is the size of their index.

Transparently switch the badger lookup key to the leading 128 bits of the hash,
regardless of type/codec. In the proccess forbid AllKeysChan and rewrite ForEachKey.

Also unconditionally enable HashOnRead (only safe way to do partial keys)

This is safe (and has been tested) to run on an existing lotus install, with splitstore
enabled and compacting properly. When converting an existing setup simply set the
envvar LOTUS_CHAIN_BADGERSTORE_QUERY_LEGACY_KEYS to true. When sufficient amount of
FullGC cycles have passed and all the keys in your blockstore are "new" - the envvar
is no longer needed.

Reasoning:

The filecoin blockstore in April 2024 sits at about 26 billion blocks. The
current scheme of /blocks/base32-enc-of-entire-mh puts a key at 66 bytes, for
a total raw index of about 1.6TiB.

Reduction of every key to mere 16 bytes reduces this to just 390GiB, potentially
even fitting in memory.
Prefix every bin-key value with a single uint64 varint containing:
  (3bit store-type)            // 0 for as-is, 1 for basic zstd compression, remainder reserved
    +
  (one reserved bit)     << 3  // always 0 for now
    +
  (3bit compressability) << 4  // 0 if store-type is 0, otherwise `c := (origLen-compLen) * 8 / origLen`
                               // (using integer math, `origLen > compLen > 0` holds for any non-0 store-type)
    +
  (IPLD block data size) << 7  // 0 if store-type is 0

Include a rudimentary, dictionary-less zstd compressor as the first
non-verbatim storage type 1
@rvagg
Copy link
Member

rvagg commented May 30, 2024

OK, but just be aware that the cost of running these tests is coming off a certain budget; it's good to be supporting the ecosystem, but bills will add up if this is going to be a regular thing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet