Compare commits

..
4644 Commits
Author SHA1 Message Date
jennijuju 94d9dee0dd update changelog 2022-05-02 11:33:46 -04:00
Jiaying Wang 8d0b28bda4 Merge pull request #8577 from filecoin-project/jen/logfix
deps: ffi: update ffi that includes the log fix
2022-05-02 11:24:56 -04:00
jennijuju 4d5e850aa9 update ffi that includes the log fix 2022-05-02 10:59:21 -04:00
Jiaying Wang ece51c5372 Merge pull request #8533 from filecoin-project/jen/v1522
chore: release: v1.15.2-rc2
2022-05-02 10:54:58 -04:00
jennijuju 48c54605ae release v1.15.2-rc2 2022-04-26 21:19:03 +02:00
Steven Allen 5b1800556b ci: fix linting 2022-04-25 14:13:16 +02:00
jennijuju bd9e8c7663 update go version thats needed by the new libp2p 2022-04-23 22:20:07 +02:00
vyzo efad692353 go mod tidy 2022-04-22 02:54:30 +02:00
vyzo 357da15e5c update go-libp2p@v0.19 2022-04-22 02:53:05 +02:00
vyzo cc328689e1 dear linter, using xerrors is what we want to do. 2022-04-22 02:51:15 +02:00
Masih H. Derkani d044e30e12 Infer index provider topic from network name by default
Index provider integration uses a gossipsub topic to announce changes to
the advertised content. The topic name was fixed to the default topic
which is `/indexer/ingest/mainnet`.

In the case of lotus, the gossipsub validators enforce a list of topics
the instance is permitted to join by setting subscription filter option
when `PubSub` instance is constructed via DI.

Having the fixed topic name meant that any SP starting up a node on a
network other than `mainnet` would have to override the default config
to avoid the node crashing when index provider is enabled.

Instead of a fixed default, the changes here infer the allowed indexer
topic name from network name automatically if the topic configuration is
left empty.

Fixes #8510
2022-04-22 02:46:05 +02:00
Jiaying Wang dcf6f64143 Merge pull request #8482 from filecoin-project/jen/11521
build: release: v1.15.2-rc1
2022-04-13 19:29:24 +02:00
jennijuju 372dd2ced9 v1.15.2-rc1 2022-04-13 19:11:02 +02:00
Jiaying Wang ce3c6472fb Merge pull request #8470 from filecoin-project/feat/enable-rcmgr-by-default
enable rcmgr by default
2022-04-12 16:12:03 +02:00
Łukasz Magiera cf92776c64 Merge pull request #8468 from filecoin-project/jen/mergeback
chore: merge releases back to master
2022-04-12 15:41:36 +02:00
Jiaying WangandŁukasz Magiera 1fc94e33b2 Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
fix merge error
Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
2022-04-12 15:29:54 +02:00
jennijuju 137f494619 tidy and gen 2022-04-12 13:53:03 +02:00
Łukasz Magiera df7e2a884b Merge pull request #8469 from filecoin-project/update-libp2p-rcmgr-optout
Update libp2p to v0.18.1
2022-04-12 12:02:24 +02:00
Łukasz Magiera ac57797904 Merge pull request #8464 from filecoin-project/feat/getask-protos
feat: cli: lotus client list-asks --protocols
2022-04-12 10:47:52 +02:00
vyzo 3c8aa18f70 enabled rcmgr by default; disable with LOTUS_RCMGR=0 2022-04-12 11:32:37 +03:00
vyzo 0f4019cbb7 update go-libp2p@v0.18.1 2022-04-12 11:30:24 +03:00
Aayush Rajasekaran 656a33863f Fixup merge 2022-04-11 20:45:13 -04:00
jennijuju 0dcad9cc18 Merge branch 'releases' into jen/mergeback 2022-04-12 01:25:02 +02:00
Łukasz Magiera 6bef1aeb82 feat: cli: lotus client list-asks --protocols 2022-04-11 19:49:52 +02:00
Łukasz Magiera 3cd563622e Merge pull request #8439 from filecoin-project/revert-appimage-removal
Revert appimage removal
2022-04-11 19:24:36 +02:00
Łukasz Magiera 66f88773c0 Merge pull request #8461 from filecoin-project/fix/release-unseal-nosnap-panic
sealing: Don't panic in ReleaseUnsealed with no ranges
2022-04-09 21:40:35 +02:00
Łukasz Magiera 3ecb1fd5d9 sealing: Don't panic in ReleaseUnsealed with no ranges 2022-04-09 20:58:47 +02:00
Łukasz Magiera 7900479e9c Merge pull request #8447 from filecoin-project/feat/sched-better
feat: sched: Improve worker assigning logic
2022-04-09 20:50:31 +02:00
Jiaying Wang 731da455d4 Merge pull request #8457 from filecoin-project/release/v1.15.1
build: release: v1.15.1
2022-04-07 18:14:15 -04:00
Aayush Rajasekaran b5791d4442 Merge pull request #8456 from filecoin-project/jen/v1.15.1
chore: release: v1.15.1 prep
2022-04-07 18:04:15 -04:00
Jennifer Wang af7e301867 bump the version to v1.15.1 2022-04-07 17:40:58 -04:00
Jennifer Wang 681c255bc5 update changelog 2022-04-07 17:40:47 -04:00
Jiaying Wang 8a30448fa7 Merge pull request #8455 from filecoin-project/jen/v1516prep
build: release: v1.15.1-rc6
2022-04-07 14:52:20 -04:00
Jennifer Wang fa6389a7e7 add missing item to changelog 2022-04-07 14:43:38 -04:00
Jennifer Wang 0c099dfbd0 bump the version to v1.15.1-rc6 2022-04-07 14:10:01 -04:00
Jennifer Wang fd40280300 update changelog 2022-04-07 14:08:36 -04:00
Jiaying Wang 5a48c3a921 Merge pull request #8451 from filecoin-project/jen/v1516
chore: backport: #8443 #8444 #8446
2022-04-07 13:27:17 -04:00
Aayush Rajasekaran 68b6190c12 Merge pull request #8453 from filecoin-project/asr/backport
fix: FVM: add finality check for consensus faults
2022-04-07 13:16:47 -04:00
Łukasz Magiera e2f4c70b70 Merge pull request #8452 from filecoin-project/asr/fvm-consensus-fault
fix: FVM: add finality check for consensus faults
2022-04-07 13:07:40 -04:00
Aayush 7518854625 fix: FVM: add finality check for consensus faults 2022-04-07 12:27:33 -04:00
Aayush d1c0b8b0c9 fix: FVM: add finality check for consensus faults 2022-04-07 12:22:07 -04:00
Masih H. Derkani 0a2429b467 Fix DI of PubSub in markets by binding dependencies it needs
Bind drand and bootstrap peers config so that `PubSub` instantiated by
`ConfigCommon` has all the dependencies it needs when `PubSub` instance
is needed in markets. In ths case, the instance is needed by the index
provider engine to announce new indexing advertisements.
2022-04-07 11:06:29 -04:00
Masih H. Derkani e37c54f38e Reuse the market process PubSub instance in index provider engine
The markets process instantiates its own `PubSub` instance with all
validators, peer scoring, etc. set up. Use that instane to join the
indexing topic, otherwise the default topic instantiated by
index-provider internally (via go-legs) has no validators.
2022-04-07 11:06:23 -04:00
Masih H. Derkani 4043923e56 Set index provider options based on lotus config
Always set index provider options based on the lotus configuration.
Otherwise, they will have no effect.
2022-04-07 11:05:09 -04:00
Cory Schwartz 76c10807d6 disable publish-packer 2022-04-07 11:04:45 -04:00
Łukasz Magiera 20698a7843 Merge pull request #8446 from filecoin-project/disable-publish-packer
chore: ci: disable publish-packer
2022-04-07 10:44:13 -04:00
Cory Schwartz a4c24985e8 disable publish-packer 2022-04-07 10:32:15 -04:00
Łukasz Magiera b26ac2bd0e Merge pull request #8450 from filecoin-project/fix/testkit-rpc-shutdown
testkit: give up on waiting for the RPC server to shutdown after 1s
2022-04-07 08:06:46 -04:00
dirkmcandAnton Evangelatov c34ade9ffb Update itests/kit/rpc.go
Co-authored-by: Anton Evangelatov <anton.evangelatov@gmail.com>
2022-04-07 13:32:00 +02:00
Dirk McCormick 5f0489ace0 fix: testkit: give up on waiting for the RPC server to shutdown after 1 second 2022-04-07 12:22:36 +02:00
Łukasz Magiera 80133aaa79 feat: sched: Improve worker assigning logic 2022-04-06 18:24:14 -04:00
Łukasz Magiera 6de4e3d4cd feat: sched: Cache worker tasks 2022-04-06 18:24:14 -04:00
Łukasz Magiera f652dd3436 Merge pull request #8441 from filecoin-project/frrist/observer-deregister
chore: events: implement event observer deregister method
2022-04-06 18:22:41 -04:00
Łukasz Magiera 9f98d0ae4a Merge pull request #8443 from filecoin-project/masih/idxprov-reuse-pubsub
fix: market: Reuse the market `PubSub` in index provider
2022-04-06 17:51:46 -04:00
Masih H. Derkani f369d99138 Fix DI of PubSub in markets by binding dependencies it needs
Bind drand and bootstrap peers config so that `PubSub` instantiated by
`ConfigCommon` has all the dependencies it needs when `PubSub` instance
is needed in markets. In ths case, the instance is needed by the index
provider engine to announce new indexing advertisements.
2022-04-06 20:04:39 +01:00
Masih H. Derkani 7e7e88e330 Reuse the market process PubSub instance in index provider engine
The markets process instantiates its own `PubSub` instance with all
validators, peer scoring, etc. set up. Use that instane to join the
indexing topic, otherwise the default topic instantiated by
index-provider internally (via go-legs) has no validators.
2022-04-06 19:39:12 +01:00
frrist 20bf46f309 chore: events: implement event observer deregister method 2022-04-06 11:01:18 -07:00
Łukasz Magiera f378c6d3ee Merge pull request #8444 from filecoin-project/masih/fix-idxprov-config
fix: market: set all index provider options based on lotus config
2022-04-06 11:59:37 -04:00
Masih H. Derkani b88307f875 Set index provider options based on lotus config
Always set index provider options based on the lotus configuration.
Otherwise, they will have no effect.
2022-04-06 16:08:10 +01:00
Łukasz Magiera 696659d6bc Merge pull request #8437 from filecoin-project/fix/fvm-aarch64-build
chore: ffi: update the FFI to fix the aarch64 build
2022-04-05 21:56:08 -04:00
Łukasz Magiera 8a16e1ca7d Merge pull request #8440 from filecoin-project/chore/update-fvm
chore: ffi: update the FFI to update the FVM
2022-04-05 21:36:42 -04:00
Steven Allen 39dee1410b chore: ffi: update the FFI to update the FVM
This fixes the build on aarch64.
2022-04-05 21:25:00 -04:00
Cory Schwartz c715254d54 Revert "stop publishing appimagine since its disabled by #7707"
This reverts commit 6b0868089b.
2022-04-05 17:26:44 -07:00
Cory Schwartz d1f3ab5dec Revert "remove from the bundlde"
This reverts commit 7d65a2664d.
2022-04-05 17:26:39 -07:00
Łukasz Magiera 0fa74a7712 Merge pull request #8438 from filecoin-project/fix/release-unseal-snap-abort
fix: sealing: Release unsealed sector files after snapdeals abort
2022-04-05 18:26:20 -04:00
Steven Allen e69cc545b3 chore: ffi: update to fix build on aarch64 2022-04-05 17:59:30 -04:00
Łukasz Magiera 68f3e4483f fix: sealing: Release unsealed sector files after snapdeals abort 2022-04-05 16:45:07 -04:00
Łukasz Magiera e1ef1b759e Merge pull request #8206 from firesWu/fix/optimize-worker-tracker-lock
release worker tracker lock when call cb func
2022-04-05 12:53:09 -04:00
Łukasz Magiera 1bd0f55945 Merge pull request #8425 from filecoin-project/fix/market-node-startup
fix: node: Fix market node startup
2022-04-03 14:55:19 -04:00
Łukasz Magiera a40381a700 Merge pull request #8426 from filecoin-project/feat/multi-vlog2car
feat: shed: Multi-file vlog2car
2022-04-02 18:00:21 -04:00
Łukasz Magiera 9a34f5803c feat: shed: Multi-file vlog2car 2022-04-02 13:25:14 -04:00
Jiaying Wang 913478b21e Merge pull request #8421 from filecoin-project/jen/v1515
build: release: v1.15.1-rc5
2022-04-01 17:57:21 -04:00
Łukasz Magiera 2b3fad1261 fix: node: Fix market node startup 2022-04-01 17:32:55 -04:00
Jennifer Wang bba2ee92bd update dockerfile 2022-04-01 17:08:27 -04:00
Jennifer Wang c4aece4ab4 pull ffi that includes the latest fvm 2022-04-01 17:02:32 -04:00
Jiaying Wang e74e56947b Merge pull request #8424 from filecoin-project/jen/ffibump
deps: ffi: pull ffi that includes the latest fvm
2022-04-01 17:01:49 -04:00
Jennifer Wang ce0b8149e9 pull ffi that includes the latest fvm 2022-04-01 15:58:15 -04:00
Jennifer Wang 5915d4ac6a fix ci 2022-04-01 15:31:10 -04:00
Aayush Rajasekaran 940505569c Merge pull request #8422 from filecoin-project/asr/log
Update to go-log 2.5.1
2022-04-01 09:41:26 -04:00
Aayush Rajasekaran 8c46d00ee7 Update to go-log 2.5.1 2022-04-01 01:13:55 -04:00
Cory Schwartz cc57f732d2 fix template 2022-04-01 00:07:48 -04:00
Cory Schwartz f410da2a0a restore filters 2022-04-01 00:07:28 -04:00
Cory Schwartz cb39ce66bc add packer executor 2022-04-01 00:07:10 -04:00
Cory Schwartz eb0d52a249 copy packer_build source 2022-04-01 00:05:27 -04:00
Cory Schwartz 2804c2ca99 tmp: remove filters 2022-04-01 00:05:23 -04:00
Cory Schwartz 71614bd639 add debug 2022-04-01 00:05:19 -04:00
Cory Schwartz 78187ab8d1 fix template 2022-04-01 00:05:10 -04:00
Cory Schwartz 6b4cc44060 fix template 2022-04-01 00:05:06 -04:00
Cory Schwartz 61742f5d5a restore filters 2022-04-01 00:05:02 -04:00
Cory Schwartz c330641866 use 1.8 2022-04-01 00:04:58 -04:00
Cory Schwartz 33019ee496 add packer executor 2022-04-01 00:04:53 -04:00
Cory Schwartz b40b7cc40e copy packer_build source 2022-04-01 00:04:38 -04:00
Cory Schwartz 17bcf91910 tmp: remove filters 2022-04-01 00:04:29 -04:00
Cory Schwartz f04b5f2963 add debug 2022-04-01 00:04:23 -04:00
Jennifer Wang 6ff99568cf pull the latest ffi 2022-03-31 23:52:08 -04:00
Jennifer Wang 0a220a3efb update the changelog 2022-03-31 23:51:57 -04:00
Jennifer Wang 0bc3e26090 bump the version to v1.15.1-rc5 2022-03-31 23:13:35 -04:00
Łukasz Magiera 257bc70c2e fix lotus-sim build 2022-03-31 23:08:05 -04:00
koalacxr 6c1651cb3d modify quantile imports error 2022-03-31 23:08:00 -04:00
zl 01efb3b1a7 fix: dead loop on removing a sector 2022-03-31 23:06:54 -04:00
Łukasz Magiera 2ad3a117f1 fix: sealing: Fix PR1 worker selection 2022-03-31 23:06:17 -04:00
Łukasz Magiera e19c5bfcd7 Merge pull request #8413 from filecoin-project/packer-publish-copy-orb
Packer publish copy orb
2022-03-31 18:45:40 -04:00
Łukasz Magiera f9ae5c0cb3 Merge pull request #8420 from filecoin-project/fix/8226
fix: sealing: Fix PR1 worker selection
2022-03-31 17:52:45 -04:00
Łukasz Magiera ac82366b9e fix: sealing: Fix PR1 worker selection 2022-03-31 17:01:33 -04:00
Cory Schwartz b493855195 fix template 2022-03-30 23:10:17 -07:00
Cory Schwartz 4bb8865e2f fix template 2022-03-30 22:57:02 -07:00
Cory Schwartz 9c25aea327 restore filters 2022-03-30 22:53:57 -07:00
Cory Schwartz cc5e96b23f use 1.8 2022-03-30 22:35:20 -07:00
Cory Schwartz 0095d93686 add packer executor 2022-03-30 22:30:17 -07:00
Cory Schwartz 1da3e2c711 copy packer_build source 2022-03-30 22:27:18 -07:00
Cory Schwartz 73468e706e tmp: remove filters 2022-03-30 22:03:41 -07:00
Cory Schwartz 4894e0b18d add debug 2022-03-30 22:02:43 -07:00
Łukasz Magiera f155b3003b Merge pull request #8411 from filecoin-project/deps/update-data-transfer-fix-master
chore(deps): update go-data-transfer with fixes (master edition)
2022-03-30 15:11:26 -04:00
hannahhoward 4974b6874e chore(deps): update go-data-transfer with fixes 2022-03-30 14:59:31 -04:00
Łukasz Magiera 1fac7981a4 Merge pull request #8410 from filecoin-project/feat/go-1.18
fix: go: make Go 1.18 builds work
2022-03-30 14:56:19 -04:00
Łukasz Magiera b244277ff2 Merge pull request #8403 from filecoin-project/deps/update-data-transfer-fix
Update go-data-transfer with fixes
2022-03-30 14:54:45 -04:00
Łukasz Magiera 0c6f3ee19c fix lotus-sim build 2022-03-30 14:34:20 -04:00
Łukasz Magiera 12752c6970 Merge github.com:koalacxr/lotus into feat/go-1.18 2022-03-30 14:31:32 -04:00
Łukasz Magiera 39c38c44a3 Merge pull request #8404 from simlecode/fix/not_check_error
fix: sealing: Added error checking
2022-03-29 22:57:35 -04:00
simlecode f0944030b7 Added error checking 2022-03-30 10:28:56 +08:00
Aayush Rajasekaran 7eb7edb950 Merge pull request #8402 from filecoin-project/jen/ffiupdate
deps: update ffi with actor v7.1.0 and fvm that uses the bundle that includes the new manifest
2022-03-29 21:17:33 -04:00
Jiaying Wang 6a88a94a8b Merge pull request #8401 from filecoin-project/jen/v1514
chore: release: v1.15.1-rc4
2022-03-29 21:15:34 -04:00
hannahhoward 7e86f7196e chore(deps): update go-data-transfer with fixes 2022-03-29 18:12:42 -07:00
Jiaying WangandAayush Rajasekaran eeeb33c9ac Update CHANGELOG.md
Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
2022-03-29 20:59:16 -04:00
Jennifer Wang b8e412884b deps: update ffi with actor v7.1.0 and fvm that uses the bundle that includes the new manifest 2022-03-29 20:49:40 -04:00
Jennifer Wang 4d2691a2e1 build: release: v1.15.1-rc4 2022-03-29 20:36:39 -04:00
Łukasz Magiera 3ce467a25f Merge pull request #8391 from filecoin-project/feat/parallel-fault-check
feat: storage: Parallel proving checks
2022-03-29 16:36:12 -04:00
Łukasz Magiera 0710342317 fix waiting in sector proving checks 2022-03-29 15:28:37 -04:00
Łukasz Magiera d95f24b9d2 config: Sane default parallel sector read defaults 2022-03-29 14:52:37 -04:00
Łukasz Magiera c456836ad5 Merge pull request #8400 from filecoin-project/asr/update
Update to specs-storage v0.2.2
2022-03-29 14:23:07 -04:00
Aayush be418e77f9 Update to specs-storage v0.2.2 2022-03-29 14:08:55 -04:00
Jennifer Wang 21a1f3a34d deps: update ffi 2022-03-29 12:02:41 -04:00
Łukasz Magiera ebd34f1884 feat: storage: Parallel proving checks 2022-03-29 11:45:08 -04:00
Łukasz Magiera ba2596e318 Merge pull request #8397 from filecoin-project/feat/thread-safe-piecereader
Thread safe piecereader
2022-03-29 11:22:19 -04:00
Aarsh Shah d0af0eff9f thread safe piecereader 2022-03-29 19:41:06 +05:30
Łukasz Magiera d502eeba2b Merge pull request #8389 from filecoin-project/feat/manual-wdpost
feat: miner: API/CLI to compute window-post
2022-03-28 21:20:06 -04:00
Łukasz Magiera 064c3d473c Merge pull request #8390 from filecoin-project/feat/worker-ulimitn-check
feat: worker: check fd limit on startup
2022-03-28 18:33:26 -04:00
Łukasz Magiera 5a42083abd feat: worker: check fd limit on startup 2022-03-28 18:07:54 -04:00
Łukasz Magiera 54cb55a7ae feat: miner: API/CLI to compute window-post 2022-03-28 17:06:51 -04:00
Łukasz Magiera a709a0a682 Merge pull request #8384 from rjan90/fix/change-worker-msg
fix: ux: Change Propose-worker msg
2022-03-28 12:57:01 -04:00
Łukasz Magiera 029610fb40 Merge pull request #8386 from zl03jsj/fix/dead_loop_on_remove_sector
fix: miner: dead loop on removing sector
2022-03-28 12:51:53 -04:00
zl 1646edf513 fix: dead loop on removing a sector 2022-03-28 20:51:57 +08:00
Rjan e2781ea0f2 Change test to reflect renaming
Change what string the TestWorkerKeyChange-test is looking for, to reflect the new Propose-worker msg-changes
2022-03-28 10:04:47 +02:00
Rjan 555ff81cbf Add punctuation. 2022-03-28 09:46:08 +02:00
Jiaying Wang 003df89edf Merge pull request #8383 from filecoin-project/jen/v1512
chore: build: v1.15.1-rc3
2022-03-28 02:54:15 -04:00
Rjan bfc2cc3aa3 fix: ux: Change Propose-worker msg
Changes the message so it´s clear that it´s only Storage Providers without active deadlines that needs to call 'confirm-change-worker'.
2022-03-28 08:18:30 +02:00
jennijuju eeab118a05 chore: build: v1.15.1-rc3 2022-03-27 19:36:10 -04:00
Jiaying Wang 04458ea12b Merge pull request #8382 from filecoin-project/jen/v1513
chore: backport: #8381 #8378
2022-03-27 19:17:28 -04:00
Łukasz Magiera c951e348b4 feat: config: Move MakeNewSectorForDeals config into the Sealing sectoin 2022-03-26 23:45:48 -04:00
Jennifer Wang 2a988d453c chore: ffi: the latest fvm release 2022-03-26 23:25:02 -04:00
Jiaying Wang b8b33c4f06 Merge pull request #8381 from filecoin-project/jen/ffi
chore: ffi: the latest fvm release
2022-03-26 22:57:02 -04:00
Jennifer Wang f2fa2f5067 chore: ffi: the latest fvm release 2022-03-26 22:45:47 -04:00
Łukasz Magiera 001de1a915 Merge pull request #8379 from filecoin-project/feat/proving-workers-cli
feat: miner cli: Separate proving workers command
2022-03-26 16:36:00 -04:00
Łukasz Magiera f0f0fe38a3 Merge pull request #8380 from filecoin-project/feat/worker-type-logic
fix: worker: Fix default value handling
2022-03-26 16:35:38 -04:00
Łukasz Magiera 2498da742d fix: worker: Fix default value handling 2022-03-26 16:26:19 -04:00
Łukasz Magiera ad684ed0ea feat: miner cli: Separate proving workers command 2022-03-26 16:16:25 -04:00
Łukasz Magiera 0d7d02da35 Merge pull request #8378 from filecoin-project/feat/move-makedealsector-cfg
feat: config: Move MakeNewSectorForDeals config into the Sealing sectoin
2022-03-26 16:08:21 -04:00
Łukasz Magiera b78892934b feat: config: Move MakeNewSectorForDeals config into the Sealing sectoin 2022-03-26 15:50:21 -04:00
Aayush Rajasekaran c50b63c5f6 Merge pull request #8374 from filecoin-project/revert-8119-travis/fvm-interopnet
Revert "Update params for interopnet for fvm"
2022-03-25 22:26:35 -04:00
Aayush Rajasekaran b0ff3dfb90 Revert "Update params for interopnet for fvm" 2022-03-25 22:21:36 -04:00
Łukasz Magiera 7401fa234e Merge pull request #7971 from filecoin-project/feat/post-worker
feat: PoSt workers
2022-03-25 20:31:49 -04:00
Łukasz Magiera 7a009abcdd sealing: Fix TaskType.WorkerType 2022-03-25 18:54:59 -04:00
Aayush Rajasekaran b305244405 Merge pull request #8119 from filecoin-project/travis/fvm-interopnet
Update params for interopnet for fvm
2022-03-25 17:28:41 -04:00
Aayush 02a0770436 Caterpillarnet 2022-03-25 17:05:45 -04:00
Florian Ruen 196030bee2 fix: cli: Reset miner/ask lists in interactive deal 'miner' step (#8155)
* Update client.go

Bug fixed : if hitting return instead of filling with a valid value, the CLI crashed (line 796)
Change return err by continue to ask a valid value again

* Fix #8100

Bug fixed : if hitting return instead of filling with a valid value, the CLI crashed (line 796)
Change return err by continue to ask a valid value again

* lint reported errors on CircleCI

Commit to fix lint reported errors during tests on CircleCI
(remove blank lines x2)

* lint reported errors on CircleCI

Commit to fix lint reported errors during tests on CircleCI
(remove trailling whitespace)

* Fix #8095
Clear the list of miner addresses and successfull get-asked before asking for new ones
Previous behavior : if get-ask failed for miner(s), the faulty miner will be retried each time,
so you have to stop the command and start again to change this faulty miner (instead of removing from the list on the new attempt)

* Clear the list of miner addresses and successfull get-asked before asking for new ones
Previous behavior : if get-ask failed for miner(s), the faulty miner will be retried each time,
so you have to stop the command and start again to change this faulty miner (instead of removing from the list on the new attempt)
2022-03-25 17:05:19 -04:00
Łukasz Magiera d49297f898 Merge pull request #8371 from filecoin-project/raulk/shed-compute-state-range
feat: lotus-shed: add command to compute state over a range of tipsets.
2022-03-25 17:00:35 -04:00
Łukasz Magiera b5ce847579 Merge pull request #8372 from filecoin-project/chore/gomock-temp-cleanup
chore: Remove temp gomock reflect file
2022-03-25 16:57:13 -04:00
Łukasz Magiera 7dc19bb26e Merge pull request #8369 from filecoin-project/asr/pricelist
VM: Refactor pricelist to be based on network versions
2022-03-25 16:50:52 -04:00
Łukasz Magiera 82343a06e7 Merge remote-tracking branch 'origin/master' into feat/post-worker 2022-03-25 16:49:46 -04:00
Łukasz Magiera 5f9753933a chore: Remove temp gomock reflect file 2022-03-25 16:46:50 -04:00
Łukasz Magiera fcaad20ecc cli: Update docs 2022-03-25 16:28:08 -04:00
Łukasz Magiera f1ddb55252 worker: Fix challengeThrottle 2022-03-25 16:07:47 -04:00
Łukasz Magiera 69e8516d1f stores: log 404 in remote.GenerateSingleVanillaProof 2022-03-25 15:37:35 -04:00
Łukasz Magiera d437f19aae Merge pull request #8349 from filecoin-project/feat/faulty-cli-utils
feat: miner cli: proving check --faulty, faults in storage list sectors
2022-03-25 15:29:27 -04:00
Raúl Kripalani 977e302e0c lotus-shed: add command to compute state over a range of tipsets. 2022-03-25 19:12:16 +00:00
Aayush 0bfbcfb5e9 stmgr: GetNtwkVersion: return genesis network version before the first upgrade 2022-03-25 15:09:14 -04:00
Łukasz Magiera 7c4d3a457c Merge pull request #8343 from filecoin-project/feat/more-snap-config
feat: sealing: More SnapDeals config knobs
2022-03-25 15:07:00 -04:00
Aayush 25b2e144b8 VM: Refactor pricelist to be based on network versions 2022-03-25 15:06:10 -04:00
Łukasz Magiera 11db419735 Merge pull request #8357 from filecoin-project/feat/net-ping
feat: cli/net: implement 'net ping' command
2022-03-25 14:57:21 -04:00
Łukasz Magiera 4e2d7fe1db Merge pull request #8370 from rjan90/ux/sectors-snap-up
fix:snapup: Rename error message
2022-03-25 14:33:20 -04:00
Rjan 910d3caacf fix:snapup: Rename error message
Renaming the the error-message you get if you try to snap-up the same sector twice, to better reflect that you are snapping a sector, and not marki-for-upgrade, which now has been deprecated.
2022-03-25 16:39:53 +01:00
Jiaying Wang a449937682 Merge pull request #8368 from rjan90/fix/ux-msig-create
fix: multisig: Print "waiting for confirmation.."
2022-03-25 11:15:15 -04:00
Łukasz Magiera 0b3144f566 workers: PoSt challenge throttle/timeout config 2022-03-24 19:42:44 -04:00
Łukasz Magiera 13701c7ce2 wdpost: Lock update files in snapped sectors 2022-03-24 18:43:08 -04:00
Łukasz Magiera 3f152ae2bf workers: cmd/lotus-seal-worker->cmd/lotus-worker 2022-03-24 18:37:01 -04:00
Łukasz Magiera a53dc5a7c7 workers: WorkerType mehdod on SealTask 2022-03-24 18:28:45 -04:00
Rjan da64f241eb Print "waiting for confirmation.." in msigCreateCmd
Prints an addition "waiting for confirmation.." when running `lotus msig create [address1 address2]` to indicate that command is waiting for the msg to be mined into block, and not just hanging.

Should fix #4053
2022-03-24 16:11:24 +01:00
Jiaying Wang b2dbe8dfef Merge pull request #8365 from filecoin-project/jen/v1512prep
chore: build: v1.15.1-rc2
2022-03-23 16:32:49 -04:00
Jennifer Wang 9436b15528 chore: release: v1.15.1-rc2 2022-03-23 16:22:51 -04:00
Jiaying Wang d6e6bfbb5a Merge pull request #8364 from filecoin-project/jen/v1512
chore: backport:  #8355 #8353 #8363
2022-03-23 16:20:07 -04:00
Aayush 3fbf765605 FVM: log when fvm is used 2022-03-23 14:05:43 -04:00
Łukasz Magiera 8e75a8d12d fix: sealing: always do cooldown in handleSubmitReplicaUpdateFailed 2022-03-23 14:05:43 -04:00
vyzo 450d4b256a update go-libp2p to v0.18 2022-03-23 14:05:43 -04:00
Aayush 595e29186e stmgr: call: use a buffered concurrent-access blockstore 2022-03-23 14:05:43 -04:00
Jiaying Wang caeeb6a7d9 Merge pull request #8363 from filecoin-project/asr/fvm-log
chore: FVM: log when fvm is used
2022-03-23 13:43:35 -04:00
Jiaying Wang c070f253ac Merge pull request #8359 from filecoin-project/asr/vm-memstore
stmgr: call: use a buffered concurrent-access blockstore
2022-03-23 13:22:56 -04:00
Aayush 694c45cd65 FVM: log when fvm is used 2022-03-23 13:19:28 -04:00
Aayush 46447ef55c stmgr: call: use a buffered concurrent-access blockstore 2022-03-23 12:30:27 -04:00
Łukasz Magiera dbc6b32a4c Merge pull request #8361 from filecoin-project/gstuart/set-ask-optional-params
--max-piece-size in set-ask is no longer required
2022-03-23 16:08:35 +01:00
Geoff Stuart 5ba4a78657 --max-piece-size in set-ask is no longer required 2022-03-22 22:05:06 -04:00
Jiaying Wang 6861705354 Merge pull request #8360 from filecoin-project/asr/v7-actors-bump
FFI: Bump v7 actors to v7.0.6
2022-03-22 21:14:22 -04:00
Aayush 7d0f5dd4f9 FFI: Bump v7 actors to v7.0.6 2022-03-22 20:44:51 -04:00
Steven Allen 1609317ac8 Merge pull request #8358 from filecoin-project/asr/vm-memstore
feat: stmgr: call: use a buffered concurrent-access blockstore
2022-03-21 21:08:12 -04:00
Aayush 3a121f99c7 stmgr: call: use a buffered concurrent-access blockstore 2022-03-21 19:32:18 -04:00
Łukasz Magiera 56b97e1386 lotus-worker: default non-exclusive flags to false when exclusive flag is set 2022-03-21 19:53:43 +01:00
Aayush Rajasekaran 3a62c8b4a2 Merge pull request #8356 from filecoin-project/fix/wallet-init-type
fix: lotus-wallet: pass correct repo type to repo.Init
2022-03-21 11:59:39 -04:00
Łukasz Magiera 1a0fc75325 Merge pull request #8353 from filecoin-project/fix/ru-retry-loop
fix: sealing: always do cooldown in handleSubmitReplicaUpdateFailed
2022-03-21 16:38:44 +01:00
Łukasz Magiera 945b93590d ping: Match go-ipfs in cmd output 2022-03-21 15:11:19 +01:00
Łukasz Magiera 701d0a111e Merge branch 'feat/net-ping' of github.com:ychiaoli18/lotus into feat/net-ping 2022-03-21 13:06:11 +01:00
Łukasz Magiera 3c1edca902 Merge pull request #8351 from filecoin-project/asr/vm-memstore
fix: avoid racy memstores when estimating gas
2022-03-21 12:12:28 +01:00
Łukasz Magiera 92e4caa151 Merge remote-tracking branch 'origin/master' into feat/post-worker 2022-03-21 12:09:47 +01:00
Łukasz Magiera e767981aaf itests: Fix ccupgrade post test 2022-03-21 12:07:00 +01:00
Łukasz Magiera 0536eb898d itests: Share WaitForSectorActive correctly 2022-03-21 12:07:00 +01:00
Łukasz Magiera 433e9c351d config: Fix doc on PreferNewSectorsForDeals; gofmt 2022-03-21 12:07:00 +01:00
Łukasz Magiera 49a6d7ebcc itests: Breakup ccupgrade_test.go 2022-03-21 12:07:00 +01:00
Łukasz Magiera 4c25358a08 itests: Test Sealing.MakeCCSectorsAvailable 2022-03-21 12:07:00 +01:00
Łukasz Magiera ecd1ab4b42 itests: Test Sealing.PreferNewSectorsForDeals 2022-03-21 12:07:00 +01:00
Łukasz Magiera 97a73f1c29 sealing: More SnapDeals config knobs 2022-03-21 12:04:23 +01:00
Łukasz Magiera d118ef9202 Merge pull request #8355 from filecoin-project/deps/update-libp2p
deps: update go-libp2p to v0.18 release
2022-03-21 12:00:49 +01:00
Łukasz Magiera 3cd17f0ee4 fix: lotus-wallet: pass correct repo type to repo.Init 2022-03-21 12:00:37 +01:00
Łukasz Magiera fc34d9ba1c Merge pull request #8086 from filecoin-project/nonsense/refactor-nodetype
refactor: convert RepoType from int to interface
2022-03-21 11:57:39 +01:00
Łukasz Magiera 1eb101d70e Merge pull request #8354 from filecoin-project/nonsense/extract-unixfs-filestore
lib: extract unixfs filestore into lib
2022-03-21 11:47:14 +01:00
vyzo 7fea2e4d6c update go-libp2p to v0.18 2022-03-21 12:33:07 +02:00
Łukasz Magiera cca69a6c16 gen 2022-03-21 10:49:30 +01:00
Anton Evangelatov 0ed8647b6f extract unixfs filestore into lib 2022-03-21 10:48:52 +01:00
Łukasz Magiera 58843857e5 fix: sealing: always do cooldown in handleSubmitReplicaUpdateFailed 2022-03-21 10:32:03 +01:00
Łukasz Magiera efdcd00da4 Merge pull request #7956 from filecoin-project/nonsense/add-lotus-test-image-building
feat: infra/ci: add `lotus-test` image as CI build step
2022-03-21 10:26:37 +01:00
Anton Evangelatov fee69a889b modify .circleci/template.yml 2022-03-21 08:41:30 +01:00
Aayush 4af8b8ecf3 fix: avoid racy memstores when estimating gas 2022-03-20 16:25:38 -04:00
Łukasz Magiera 9a31b65cd0 feat: miner cli: proving check --faulty, faults in storage list sectors 2022-03-19 12:55:52 +01:00
Łukasz Magiera 5365ccfdb1 cli: Show separate worker types in miner info 2022-03-18 21:31:15 +01:00
Łukasz Magiera 36f1dd7bb3 itests: Fix flaky TestWindowPostWorkerSkipBadSector 2022-03-18 20:51:47 +01:00
Łukasz Magiera 7b81369c8c wdpost: Don't attempt to snark with skipped sectors 2022-03-18 19:45:25 +01:00
Łukasz Magiera 7a1beacd00 ffiwrapper: Test some assumptions about GeneratePoStFallbackSectorChallenges 2022-03-18 13:11:14 +01:00
Łukasz Magiera 32818c528f wdpost: Test repro broken challenge skipping 2022-03-18 12:32:16 +01:00
Anton Evangelatov 0d6493ec3f resolve merge conflicts with master 2022-03-18 12:28:22 +01:00
Łukasz Magiera 8715745feb wdpost: Dedupe skipped sectors in generateWindowPoSt 2022-03-18 12:10:42 +01:00
Łukasz Magiera aa124cf414 fix lint issues 2022-03-18 11:38:27 +01:00
Łukasz Magiera a94e47c6be Merge pull request #8345 from filecoin-project/fix/itest-minepost-hang
fix: itests: Don't hang on exit in MineBlocksMustPost
2022-03-18 11:27:51 +01:00
Łukasz Magiera 6ddbe41376 Merge remote-tracking branch 'origin/master' into feat/post-worker 2022-03-18 10:54:44 +01:00
Łukasz Magiera 42b2adddee fix: itests: Don't hang on exit in MineBlocksMustPost 2022-03-18 10:42:21 +01:00
Jiaying Wang cd499e3ab8 Merge pull request #8342 from filecoin-project/jen/v151rc1prep
chore: release: v1.15.1-rc1
2022-03-17 17:46:30 -04:00
Jiaying Wang 7244ff9e14 Update CHANGELOG.md 2022-03-17 17:42:45 -04:00
Jennifer Wang 3c252e1d87 bump the version to v1.15.1-rc1 2022-03-17 17:42:45 -04:00
Jennifer Wang 84896f4790 update the change log for v1.15.1 2022-03-17 17:42:45 -04:00
Łukasz Magiera d4cbb0803b Merge pull request #8339 from filecoin-project/backport/v1.15.1/smallfixes
backport: #8338, #8337
2022-03-17 19:50:21 +01:00
Łukasz Magiera 18987f92ee Merge pull request #8340 from filecoin-project/arajasek-patch-1
Shed: fix error message
2022-03-17 17:48:02 +01:00
Łukasz Magiera b26405226e Merge pull request #8336 from filecoin-project/fix/snap-list-estimate
fix: miner cli: Estimate deal weight in sector list when upgrading
2022-03-17 17:30:41 +01:00
Aayush Rajasekaran e1c7f30e60 Shed: fix error message 2022-03-17 12:24:32 -04:00
Aayush Rajasekaran ff244fba6c Merge pull request #8332 from filecoin-project/feat/fvm
FVM integration
2022-03-17 12:20:05 -04:00
Łukasz Magiera 49a4c06a88 fix: sealing: FinalizeSector doesn't need sealed replica access 2022-03-17 17:08:25 +01:00
Łukasz Magiera 361dc55dfd fix: storagefsm: Fix error loop on bad event 2022-03-17 17:08:25 +01:00
Łukasz Magiera b366e2c91f Merge pull request #8337 from filecoin-project/fix/fin-sealed-acc
fix: sealing: FinalizeSector doesn't need sealed replica access
2022-03-17 16:58:51 +01:00
Łukasz Magiera eb4bda2302 Merge pull request #8338 from filecoin-project/fix/fsm-badevt-loop
fix: storagefsm: Fix error loop on bad event
2022-03-17 16:58:17 +01:00
Aayush Rajasekaran 2ed2ee1da7 Merge branch 'release/v1.15.1' into feat/fvm 2022-03-17 11:31:56 -04:00
Aayush Rajasekaran 58876aefa3 Update FFI 2022-03-17 11:31:47 -04:00
Aayush 77b123b02f CircSupply: Remove unused method 2022-03-17 11:31:39 -04:00
Łukasz Magiera d9a1ecd387 fix: storagefsm: Fix error loop on bad event 2022-03-17 15:40:11 +01:00
Łukasz Magiera 9debd14b6c fix: sealing: FinalizeSector doesn't need sealed replica access 2022-03-17 15:15:54 +01:00
Łukasz Magiera ff14cd3f9d fix: Estimate deal weight in sector list when upgrading 2022-03-17 14:52:54 +01:00
Łukasz Magiera e0481bbeca Merge pull request #8281 from spark8899/change-worker
feat:  multisig: lotus-sheed miner-multisig change-worker command.
2022-03-17 13:55:30 +01:00
Łukasz Magiera 73ab064137 Merge pull request #8295 from Juneezee/test/t.TempDir
test: use `T.TempDir` to create temporary test directory
2022-03-17 12:30:41 +01:00
Łukasz Magiera 2cf0e4cb32 #8281: Apply suggestions from code review 2022-03-17 12:30:02 +01:00
Łukasz Magiera 7123b29f06 Merge pull request #8241 from rjan90/master
fix: cli: add ArgsUsage field to clientGetDealCmd
2022-03-17 12:19:49 +01:00
Łukasz Magiera 037e80c70c gofmt 2022-03-17 12:10:24 +01:00
Łukasz Magiera 1c055fe83b Merge branch 'master' into test/t.TempDir 2022-03-17 12:06:52 +01:00
Łukasz Magiera 858538284f Merge pull request #8305 from filecoin-project/asr/shed-label
Shed: Add a tool to check UTF-8 validity of labels
2022-03-17 12:05:52 +01:00
Łukasz Magiera 114cb4e0d5 Merge pull request #8333 from filecoin-project/backport/v1.15.1/feat/snap-queue
backport: v1.15.1: feat: sealing: Sector upgrade queue
2022-03-16 22:50:33 +01:00
Łukasz Magiera 4a1b211876 miner cli: Treat Activating sectors like Proving in sectors list 2022-03-16 22:30:59 +01:00
Łukasz Magiera d78f1e4eee sealing: Rename Sealing.creating to a less confusing name 2022-03-16 22:30:58 +01:00
Łukasz Magiera 5e14892ef8 sealing: fix lint issues 2022-03-16 22:30:57 +01:00
Aayush Rajasekaran 97c95a4e82 Update FFI 2022-03-16 17:30:47 -04:00
Łukasz Magiera 9e4c8881b6 sealing: regenerate mocks 2022-03-16 22:30:09 +01:00
Łukasz Magiera b8ba5274e2 sealing: Enforce minimum expiration in tryGetUpgradeSector 2022-03-16 22:30:09 +01:00
Łukasz Magiera aa4adb0dfd sealing: Fix build 2022-03-16 22:30:09 +01:00
Łukasz Magiera 62a393bf12 sealing: Address snap queue review 2022-03-16 22:30:09 +01:00
Łukasz Magiera a440339548 sealing: Run more checks when considering Available sectors 2022-03-16 22:30:07 +01:00
Łukasz Magiera 3c15314ed5 sealing: Use bitfields in sectorActive 2022-03-16 22:29:40 +01:00
Łukasz Magiera d3cec2f0d1 sealing: Add MakeCCSectorsAvailable config 2022-03-16 22:29:40 +01:00
Łukasz Magiera 1158a928ec itests: Test reverting Available sectors to Proving 2022-03-16 22:29:40 +01:00
Łukasz Magiera 1bd2cbbef6 sealing: Support abort uprade for Available sectors 2022-03-16 22:29:40 +01:00
Łukasz Magiera a9d757f3a0 itests: TestTooManyMarkedForUpgrade is not applicable anymore 2022-03-16 22:29:40 +01:00
Łukasz Magiera 9a854e9ab7 feat: sealing: Linter did have a good point 2022-03-16 22:29:40 +01:00
Łukasz Magiera 2cef55a4f6 feat: sealing: Sector upgrade queue 2022-03-16 22:29:37 +01:00
Łukasz Magiera a3bdd29615 Merge pull request #8330 from filecoin-project/feat/snap-queue
feat: sealing: Sector upgrade queue
2022-03-16 22:24:45 +01:00
Łukasz Magiera a431fdbdde miner cli: Treat Activating sectors like Proving in sectors list 2022-03-16 22:16:39 +01:00
Łukasz Magiera 60ba133fc8 sealing: Rename Sealing.creating to a less confusing name 2022-03-16 21:29:57 +01:00
Aayush Rajasekaran 90d78f924f Merge pull request #8293 from filecoin-project/feat/fvm
Filecoin Virtual Machine integration
2022-03-16 15:51:56 -04:00
Łukasz Magiera 3b2a1ea41d sealing: fix lint issues 2022-03-16 20:28:15 +01:00
Łukasz Magiera 2961f3b864 sealing: regenerate mocks 2022-03-16 20:20:07 +01:00
Łukasz Magiera 3f23cf0c1e sealing: Enforce minimum expiration in tryGetUpgradeSector 2022-03-16 20:17:20 +01:00
Łukasz Magiera aac1f5abef sealing: Fix build 2022-03-16 20:09:18 +01:00
Łukasz Magiera 724d80cf02 sealing: Address snap queue review 2022-03-16 20:04:48 +01:00
Łukasz Magiera e7ee5b5932 sealing: Run more checks when considering Available sectors 2022-03-16 19:57:37 +01:00
Łukasz Magiera 4d4739497d sealing: Use bitfields in sectorActive 2022-03-16 19:53:00 +01:00
Łukasz Magiera 4ded059a1c sealing: Add MakeCCSectorsAvailable config 2022-03-16 19:29:47 +01:00
Jiaying Wang 5ea1502b02 Merge pull request #8331 from filecoin-project/backport/v1.15.1/fix/snap-worker-cleanup
backport: v1.15.1: feat: sealing: Sector upgrade queue
2022-03-16 14:20:53 -04:00
Łukasz Magiera 99c6ef564e worker: RemoveCopies expects one type at a time 2022-03-16 19:07:42 +01:00
Łukasz Magiera 39e3ddb0ed storagemgr: MoveStorage in separate steps 2022-03-16 19:07:42 +01:00
Łukasz Magiera defdea7b49 worker: Call RemoveCopies in MoveStorage 2022-03-16 19:07:42 +01:00
Łukasz Magiera d249eb3f93 stores: Support RemoveCopies on remote store 2022-03-16 19:07:42 +01:00
Łukasz Magiera 668c33fdcd stores: http: Support multiple storage IDs in ?keep 2022-03-16 19:07:42 +01:00
Łukasz Magiera 799d3ebe5e itests: Test reverting Available sectors to Proving 2022-03-16 19:05:53 +01:00
Łukasz Magiera 628102ab6c sealing: Support abort uprade for Available sectors 2022-03-16 18:53:54 +01:00
Łukasz Magiera f2c0ba1df5 Merge pull request #8329 from filecoin-project/fix/snap-worker-cleanup
fix: sealing: Remove sector copies from workers after snapdeals
2022-03-16 18:48:21 +01:00
79453663b3 feat: Add additional test annotations (#8272)
* Annotate api,proxy_util,blockstore_badger, policy tests

* Annotate splitstore: bsbadger / markset

* Annotate splitstore feature

* Annotate union/timed blockstore tests

* Annotate openrpc, diff_adt tests

* Annotate error,drand,events tests

* Annotate predicates_test

* Fix annotations

* Annotate tscache, gen tests

* Annotate fundmanager test

* Annotate repub and selection tests

* Annotate statetree_test

* Annotate forks_test

* Annotate searchwait_test.go

* Fix duplicated @@ symbols

* Annotate chain stmgr/store tests

* Annotate more (types) tests

* More tests annotated

* Annotate conformance chaos actor tests

* Annotate more integration tests

* Annotate journal system tests

* Annotate more tests.

* Annotate gas,head buffer behaviors

* Fix markset annotations

* doc: test annotations for the markets dagstore wrapper

* Annotate miner_api test in dagstore

* Annotate more test files

* Remove bad annotations from fsrepo

* Annotate wdpost system

* Remove bad annotations

* Renamce "conformance" to "chaos_actor" tests

* doc: stm annotations for blockheader & election proof tests

* Annotate remaining "A" tests

* annotate: stm for error_test

* memrepo_test.go

* Annotate "b" file tests

* message_test.go

* doc: stm annotate for fsrepo_test

* Annotate "c" file tests

* Annotate "D" test files

* message_test.go

* doc: stm annotate for chain, node/config & client

* docs: stm annotate node_test

* Annotate u,v,wl tests

* doc: stm annotations for various test files

* Annotate "T" test files

* doc: stm annotate for proxy_util_test & policy_test

* doc: stm annotate for various tests

* doc: final few stm annotations

* Add mempool unit tests

* Add two more memPool Add tests

* Update submodules

* Add check function tests

* Add stm annotations, refactor test helper

* Annotate api,proxy_util,blockstore_badger, policy tests

* Annotate splitstore: bsbadger / markset

solving merge conflicts

* Annotate splitstore feature

* Annotate union/timed blockstore tests

* Annotate openrpc, diff_adt tests

* Annotate error,drand,events tests

* Annotate predicates_test

* Fix annotations

* Annotate tscache, gen tests

* Annotate fundmanager test

* Annotate statetree_test

* Annotate forks_test

* Annotate searchwait_test.go

* Fix duplicated @@ symbols

* Annotate chain stmgr/store tests

* Annotate more (types) tests

* More tests annotated

* Annotate conformance chaos actor tests

* Annotate more integration tests

* Annotate journal system tests

* Annotate more tests.

* Annotate gas,head buffer behaviors

solve merge conflict

* Fix markset annotations

* Annotate miner_api test in dagstore

* Annotate more test files

* doc: test annotations for the markets dagstore wrapper

* Annotate wdpost system

* Renamce "conformance" to "chaos_actor" tests

* Annotate remaining "A" tests

* doc: stm annotations for blockheader & election proof tests

* annotate: stm for error_test

* Annotate "b" file tests

* memrepo_test.go

* Annotate "c" file tests

* message_test.go

* Annotate "D" test files

* doc: stm annotate for fsrepo_test

* Annotate u,v,wl tests

* message_test.go

* doc: stm annotate for chain, node/config & client

* docs: stm annotate node_test

* Annotate "T" test files

* doc: stm annotations for various test files

* Add mempool unit tests

solve merge conflict

* doc: stm annotate for proxy_util_test & policy_test

* doc: stm annotate for various tests

* doc: final few stm annotations

* Add two more memPool Add tests

* Update submodules

* Add check function tests

solve conflict

* Add stm annotations, refactor test helper

solve merge conflict

* Change CLI test kinds to "unit"

* Fix double merged test

* Fix ccupgrade_test merge

* Fix lint issues

* Add stm annotation to types_Test

* Test vectors submodule

* Add file annotation to burn_test

Co-authored-by: Nikola Divic <divicnikola@gmail.com>
Co-authored-by: TheMenko <themenkoprojects@gmail.com>
2022-03-16 18:37:34 +01:00
Łukasz Magiera 8600ae2ac4 itests: TestTooManyMarkedForUpgrade is not applicable anymore 2022-03-16 17:48:02 +01:00
Łukasz Magiera 193c84811a feat: sealing: Linter did have a good point 2022-03-16 17:45:22 +01:00
Łukasz Magiera aef2ec513f feat: sealing: Sector upgrade queue 2022-03-16 17:33:05 +01:00
Aayush 37539ccb84 CircSupply: Remove unused method 2022-03-16 11:58:23 -04:00
Aayush 16128a0212 Merge branch 'master' into feat/fvm 2022-03-16 11:57:46 -04:00
KAYUII 159da73fcd Update Dockerfile.lotus
fix docker can't find gpus
2022-03-16 09:19:47 -06:00
Łukasz Magiera 9f6f94bd02 Merge pull request #8215 from filecoin-project/feat/remove-mark-for-upgrade
chore:sealing:remove endpoint from cli
2022-03-16 15:33:21 +01:00
Łukasz Magiera c4259cb594 worker: RemoveCopies expects one type at a time 2022-03-16 12:28:56 +01:00
Łukasz Magiera 5ed5744cb6 storagemgr: MoveStorage in separate steps 2022-03-16 12:28:56 +01:00
Łukasz Magiera a88edeb79d worker: Call RemoveCopies in MoveStorage 2022-03-16 12:28:56 +01:00
Łukasz Magiera 4d65e0101d stores: Support RemoveCopies on remote store 2022-03-16 12:28:56 +01:00
Łukasz Magiera 45b07674e5 stores: http: Support multiple storage IDs in ?keep 2022-03-16 12:28:56 +01:00
Łukasz Magiera 4906962da0 Merge pull request #8322 from filecoin-project/jen/versionbump
chore: build: bump the master version to v1.15.2-dev
2022-03-16 11:34:02 +01:00
Rjan 3ad1ea386c Merge branch 'filecoin-project:master' into master 2022-03-16 09:09:20 +01:00
koalacxr 7f26ce614b modify quantile imports error 2022-03-16 13:10:03 +08:00
Aayush 9ea623e125 Rename the Lotus VM to LegacyVM 2022-03-15 19:40:17 -04:00
Aayush e6117c49ef Address review 2022-03-15 19:34:59 -04:00
Aayush 673f558ba5 Rename vm.VMI to vm.Interface 2022-03-15 19:34:39 -04:00
Jiaying Wang ada499ef14 Merge pull request #8314 from filecoin-project/jen/indexsetting
feat: config: enable indexer providing by default
2022-03-15 19:33:49 -04:00
Jennifer Wang 56b80c41b6 bump the master version to v1.15.2-dev 2022-03-15 19:32:28 -04:00
Jiaying Wang c98ef0aaf8 Merge pull request #8317 from filecoin-project/jen/backport
chore: backport: release to master
2022-03-15 19:12:20 -04:00
Aayush 2170b4deb5 Fixup merge 2022-03-15 18:58:32 -04:00
Łukasz Magiera 913cab2785 Merge pull request #8320 from filecoin-project/fix/listsectors-primary
fix: storage cli: Output primary sector status correctly
2022-03-15 17:41:41 +01:00
Aayush 6c51adc334 Update FFI: fix cargo.lock 2022-03-15 11:07:25 -04:00
Łukasz Magiera c6bda0e5d4 fix: storage cli: Output primary sector status correctly 2022-03-15 14:29:21 +01:00
Łukasz Magiera c3cadcba0e Merge pull request #8318 from filecoin-project/feat/rcmgr-limits-envvar
improve resource manager integration
2022-03-15 12:07:43 +01:00
vyzo 9fcafff847 adjust conns to 2x maxconns for duplicate connections 2022-03-15 10:02:27 +02:00
vyzo 53c525f0ed improve resource manager integration
- add opt-in env var to control instantation, until we are comfortable with testing to enble by default.
- adjust default limits if the connection manager high mark is higher than the default inbound conn limit.
2022-03-15 09:43:18 +02:00
Jennifer Wang 8a2a2d065d Merge branch 'releases' into jen/backport 2022-03-15 02:07:35 -04:00
Jennifer Wang 6240729ee4 enable indexer providing by default 2022-03-14 23:24:52 -04:00
Eng Zer Jun c229842f57 test: use T.TempDir to create temporary test directory
The directory created by `T.TempDir` is automatically removed when the
test and all its subtests complete.

Reference: https://pkg.go.dev/testing#T.TempDir
Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
2022-03-15 00:21:31 +08:00
Aayush 9a1a89d98c Shed: Add a tool to check UTF-8 validity of labels 2022-03-12 18:11:10 -05:00
Aayush 1bf40ad9df Fix broken go.sum 2022-03-12 14:31:04 -05:00
Aayush 67889b473c Merge branch 'master' into feat/fvm 2022-03-12 11:12:23 -05:00
Aayush 05fa9c81de Rename FVM envvar to LOTUS_USE_FVM_EXPERIMENTAL 2022-03-12 11:03:43 -05:00
Aayush Rajasekaran 6d4fb8866e Merge pull request #8197 from filecoin-project/asr/fvm/nv15
FVM: support nv15
2022-03-11 17:35:20 -05:00
Aayush d2054e8653 FVM: support nv15 2022-03-11 17:03:34 -05:00
Łukasz Magiera 6401363ef1 docsgen 2022-03-11 18:17:29 +01:00
Łukasz Magiera ce99aad438 Fix provingCheckProvableCmd 2022-03-11 18:13:51 +01:00
Łukasz Magiera 135aef78d7 Merge remote-tracking branch 'origin/master' into feat/post-worker 2022-03-11 17:04:58 +01:00
Aayush Rajasekaran 362c73bfbd Merge pull request #8291 from filecoin-project/fix/fsm-input-locking
fix: sealing fsm: Handle inputLk correctly
2022-03-11 10:02:26 -05:00
Łukasz Magiera ad66ad4f7d fix: sealing fsm: Handle inputLk correctly 2022-03-11 13:34:14 +01:00
Łukasz Magiera 9fc6242e5b Merge pull request #8289 from filecoin-project/deps/update-libp2p-things
deps: update go-libp2p and go-libp2p-resource-manager
2022-03-11 10:36:50 +01:00
Jiaying Wang 0ac1bbc7ae Merge pull request #8279 from filecoin-project/release/v1.15.0
build: release: v1.15.0
2022-03-11 00:33:18 -05:00
Jiaying Wang 61a1a172fa Merge pull request #8277 from filecoin-project/jen/v15prep
chore: release: v1.15.0 prep
2022-03-11 00:19:42 -05:00
spark8899 3c96dcaec7 add minerMultisigs ProposeControlSet 2022-03-11 09:37:38 +08:00
Jennifer Wang 98642ec4b5 fix the change log 2022-03-10 17:28:40 -05:00
Łukasz Magiera 81f0cfdd1e Merge pull request #8276 from filecoin-project/feat/faster-clientcalccommp
feat: api: Make ClientCalcCommP multithreaded
2022-03-10 23:22:48 +01:00
Łukasz Magiera b248097b42 Merge pull request #8283 from filecoin-project/feat/loglvl-config
feat: config: Persistent subsystem log level config
2022-03-10 23:22:26 +01:00
Łukasz Magiera 9ce6a15edc Merge pull request #8265 from filecoin-project/feat/shed-car-tools
feat: shed: blockstore/vlog to car export cmds
2022-03-10 23:21:47 +01:00
Łukasz Magiera 55189fbe53 Merge pull request #8287 from filecoin-project/fix/dont-log-binary-cids
fix: piece provider: Don't log CIDs as binary
2022-03-10 22:44:59 +01:00
Łukasz Magiera 0d9e34d651 client impl: Fix typo in ClientCalcCommP CopyBuffer error 2022-03-10 22:41:45 +01:00
Łukasz Magiera e1ac3f641b Merge pull request #8290 from filecoin-project/feat/itestd
feat: shed: ItestD
2022-03-10 20:00:37 +01:00
Łukasz Magiera 231893a794 feat: shed: ItestD 2022-03-10 19:39:10 +01:00
vyzo 65e599fb8e update go-libp2p and go-libp2p-resource-manager
- go-libp2p at v0.18.0-rc6, which includes fixes for some severe bugs in mplex
- go-libp2p-resource-manager at v0.1.5, which improves debug logging
2022-03-10 18:20:11 +02:00
Łukasz Magiera 4421bf2fa1 feat: config: Persistent subsystem log level config 2022-03-10 14:44:56 +01:00
Łukasz Magiera 91ccb7fbda fix: piece provider: Don't log CIDs as binary 2022-03-10 14:28:18 +01:00
Łukasz Magiera 9c4f8254ee post workers: Fix build post-merge 2022-03-10 14:20:07 +01:00
Łukasz Magiera 326a9b673e Merge pull request #8273 from filecoin-project/feat/graphsync-20-protocol-update
feat(deps): update to graphsync v0.13.0 with 2.0 protocol
2022-03-10 11:11:20 +01:00
spark8899 b6278d2a6c add miner-multisig change-worker command. 2022-03-10 14:11:30 +08:00
Jennifer Wang 1daaba9224 bump the version to v1.15.0 2022-03-09 18:32:02 -05:00
Jennifer Wang 3ecc58d036 update v1.15.0 changelog 2022-03-09 18:28:30 -05:00
Łukasz Magiera a715fb3063 feat: Make ClientCalcCommP multithreaded 2022-03-09 23:25:29 +01:00
hannahhoward 49742f8fdc feat(deps): update to graphsync v0.13.0 with 2.0 protocol 2022-03-09 18:06:35 +00:00
Łukasz Magiera 046a9f8af0 Merge remote-tracking branch 'origin/master' into feat/post-worker 2022-03-09 16:27:03 +01:00
Łukasz Magiera ffabb015ef shed: fix lint 2022-03-09 10:26:02 +01:00
Łukasz Magiera 84dbb229b6 shed: blockstore/vlog to car export cmds 2022-03-09 10:21:36 +01:00
zenground0 c192637741 Fix warmup 2022-03-08 21:01:57 -07:00
zenground0 61f453fcd3 Print sector key in state sector command 2022-03-08 21:01:57 -07:00
Anton Evangelatov 7cdf6dc680 remove .Type() now that we have singletons for repos 2022-03-07 13:00:26 +01:00
Anton Evangelatov b9fe61f9da Merge branch 'master' into nonsense/refactor-nodetype 2022-03-07 11:51:28 +01:00
Jiaying Wang 4525395cc5 Merge pull request #8245 from filecoin-project/jen/v15backport
chore: backport: release
2022-03-04 15:44:08 -05:00
Jennifer Wang 9b838f515b Merge branch 'releases' into jen/v15backport 2022-03-04 13:58:56 -05:00
Jiaying Wang 5b33555fda Merge pull request #8243 from filecoin-project/release/v1.14.4
chore: build: v1.14.4
2022-03-03 21:28:31 -05:00
Jiaying Wang 8d737a1428 Merge pull request #8242 from filecoin-project/jen/v144prep
build: release: v1.14.4
2022-03-03 21:03:36 -05:00
Jennifer Wang e51b10e6a5 release v1.14.4 2022-03-03 20:52:03 -05:00
zenground0 93e22da539 Log instead of error normal shutdown of state machine 2022-03-03 18:17:09 -05:00
zenground0 8ec7da0dee Handle finalize failures in fsm 2022-03-03 18:17:01 -05:00
Łukasz Magiera 5416ce5443 Merge pull request #7313 from filecoin-project/feat/cid-to-piece-idx
feat: markets: Integrate index ingest protocol and retrieve by any CID
2022-03-03 16:50:35 +00:00
Masih H. Derkani 4c8015c0a1 Update deps in lotus-soup mod and remove replace directive
Update dependency to go-fil-markets in `lotus-soup` module and remove
the redundant replace directive.
2022-03-03 16:05:50 +00:00
Anton Evangelatov 5734a39e8e move DealmakingConfiger and SealingConfiger away from config/types.go 2022-03-03 16:51:47 +01:00
Anton Evangelatov 62e352ef88 move APIInfoEnvVars, RepoFlags, APIFlags under RepoType 2022-03-03 16:45:11 +01:00
Anton Evangelatov e1c2cf446e add lotus-test image as CI build step 2022-03-03 15:50:23 +01:00
Rjan c5dc898ed0 fix: cli: add ArgsUsage field to clientGetDealCmd
Adds [proposalCID] as ArgsUsage field in the 'lotus client get-deal' command. Fixes #8133
2022-03-03 15:40:16 +01:00
Anton Evangelatov acbfc879aa config: extract DealmakingConfig and Sealing config from Lotus for Boost (#8172)
* refactor sealingCfg and dealmakingCfg to be able to abstract Config

* fix error messages
2022-03-03 15:37:23 +01:00
Anton Evangelatov 066d0edf51 add SupportsStagingDeals trait 2022-03-03 15:37:23 +01:00
Anton Evangelatov 949ec65118 drop defConfForType 2022-03-03 15:37:23 +01:00
Anton Evangelatov f1f878a000 unexport repo types; use a global var for every repo type 2022-03-03 15:37:23 +01:00
Anton Evangelatov e3edab66e3 refactor RepoType 2022-03-03 15:37:23 +01:00
Łukasz Magiera 28d751b2e0 mod tidy 2022-03-03 14:21:28 +00:00
Łukasz Magiera 7dcfeee0ea use old go-path 2022-03-03 14:17:25 +00:00
Masih H. Derkani 1bb65189af Upgrade to go-path v0.2.1 and remove replace directive
The dependency was used in the chain API. Integrated the new fetcher
factory.
2022-03-03 13:29:32 +00:00
Łukasz Magiera 6b06c1b5d3 Merge pull request #8232 from filecoin-project/fix/not-so-normal-shutdown-of-state-machine
fix:sealing:Log instead of error normal shutdown of state machine
2022-03-03 13:28:57 +00:00
Masih H. Derkani 8cf6f24f4d Upgrade go-fil-markets to include index provider metadata changes
Upgrade to the latest `go-fil-markets` that integrates concrete
multicodec for the indexing metadata.
2022-03-03 12:57:09 +00:00
Aayush Rajasekaran b7e1548041 Merge pull request #8236 from filecoin-project/asr/backport
Lotus release v1.15.0-rc3
2022-03-02 17:06:56 -05:00
Aayush 2e1bb7e8cc Lotus release v1.15.0-rc3 2022-03-02 16:55:33 -05:00
Aayush Rajasekaran 1c21690dfe Merge pull request #8235 from filecoin-project/asr/backport
Handle finalize failures in fsm
2022-03-02 16:50:03 -05:00
zenground0 7073f31f84 Handle finalize failures in fsm 2022-03-02 16:48:24 -05:00
Aayush Rajasekaran 5ac1c59527 Merge pull request #8234 from filecoin-project/asr/backport
pay for the collateral difference needed if the miner available balance is insufficient
2022-03-02 16:47:48 -05:00
Jiaying Wang c9799e1369 pay for the collateral difference needed if the miner available balance is insufficient 2022-03-02 16:44:27 -05:00
Aayush Rajasekaran 91d773451b Merge pull request #8233 from filecoin-project/asr/libp2p-downgrade
Downgrade libp2p to 0.17.0
2022-03-02 16:42:17 -05:00
Aayush ebe1ca7c77 make gen 2022-03-02 15:48:07 -05:00
Aayush 1bc1cd3366 Upgrade to go-fil-markets 1.19.2 2022-03-02 15:41:53 -05:00
Aayush 898f523162 Upgrade to go-data-transfer 1.14.1 2022-03-02 15:41:41 -05:00
Aayush 08bbfed825 Revert "go mod: go-libp2p@v0.18.0-rc1"
This reverts commit 2fb5837a55.
2022-03-02 15:39:24 -05:00
Aayush 04f2d3543b Revert "go mod: go-libp2p-resource-manager"
This reverts commit c394fbdfc3.
2022-03-02 15:39:23 -05:00
Aayush 85886287b4 Revert "use the libp2p connmgr"
This reverts commit 826cdb2186.
2022-03-02 15:39:23 -05:00
Aayush b5912d1543 Revert "instantiate resource manager in DI"
This reverts commit 8d3f98fe38.
2022-03-02 15:39:22 -05:00
Aayush e9e28f75e2 Revert "add resource manager NetStat api"
This reverts commit d05d5bcb70.
2022-03-02 15:39:22 -05:00
Aayush b8747e3afc Revert "add resource manager Net(Set)Limit api"
This reverts commit 554848fe6b.
2022-03-02 15:39:21 -05:00
Aayush bac17061d4 Revert "add examples to docgen"
This reverts commit 39bf59d372.
2022-03-02 15:39:21 -05:00
Aayush 99e1b9e2aa Revert "add net stat and limit cli"
This reverts commit 0de1566eaf.
2022-03-02 15:39:20 -05:00
Aayush 11fc068cfe Revert "go mod: go-libp2p-resource-manager@v0.1.1"
This reverts commit 62c0f35b5a.
2022-03-02 15:39:19 -05:00
Aayush f9f6f35b93 Revert "go mod: update go-libp2p-pubsub"
This reverts commit aa599bfaf9.
2022-03-02 15:39:19 -05:00
Aayush f281027a1c Revert "fix mocknet.New invocation"
This reverts commit c3fb68545a.
2022-03-02 15:39:19 -05:00
Aayush e49d499bb5 Revert "fix mocknet.New invocation"
This reverts commit 0870f48b5c.
2022-03-02 15:39:18 -05:00
Aayush 581cb34b11 Revert "go mod: update go-yamux@v3.0.2"
This reverts commit 83427c478f.
2022-03-02 15:39:18 -05:00
Aayush 4968babb32 Revert "go mod: update go-libp2p-resource-manager@v0.1.2"
This reverts commit 6260271b78.
2022-03-02 15:39:17 -05:00
Aayush ce040b7d33 Revert "add description for net stat and limit commands"
This reverts commit 19c8ea3288.
2022-03-02 15:39:17 -05:00
Aayush a7e02f7207 Revert "update go-fil-markets@v0.19.0-rc1"
This reverts commit 2e5474e864.
2022-03-02 15:39:16 -05:00
Aayush bf0470ad09 Revert "fix issues with fil-markets/data-transfer updates"
This reverts commit ca4ee1e8cf.
2022-03-02 15:39:15 -05:00
Aayush 7dbf0ced82 Revert "make gen and friends"
This reverts commit b360c9403f.
2022-03-02 15:39:14 -05:00
Aayush 48e28898a6 Revert "fix lint"
This reverts commit 325a4c0e5b.
2022-03-02 15:29:27 -05:00
Aayush 17ac583508 Revert "close the rcmgr on shutdown"
This reverts commit 73ec10a49e.
2022-03-02 15:29:26 -05:00
Aayush 6dc696b745 Revert "feat: update to go-fil-markets v1.19.0"
This reverts commit 8a47a71772.
2022-03-02 15:29:25 -05:00
Aayush 2aab4d4f05 Revert "update go-libp2p to v0.18.0-rc2"
This reverts commit 6e5f521463.
2022-03-02 15:22:06 -05:00
Aayush 94678bacea Revert "update go-libp2p to v0.18.0-rc3"
This reverts commit e78c4ab9b3.
2022-03-02 15:21:31 -05:00
Aayush 7207740af4 Revert "update libp2p to v0.18.0-rc4"
This reverts commit 80e9f76261.
2022-03-02 15:21:10 -05:00
Aayush 5329f18938 Revert "update go-libp2p to v0.18.0-rc5"
This reverts commit a575947294.
2022-03-02 15:20:18 -05:00
zenground0 b81d189ec1 Log instead of error normal shutdown of state machine 2022-03-02 13:03:03 -07:00
Łukasz Magiera a52b4b72e9 gomod: Use latest cbor-gen 2022-03-02 20:23:47 +01:00
ZenGround0 14b76743c6 Merge pull request #8229 from filecoin-project/fix/handle-finalize-ru-failure
fix:sealing:Handle finalize replica update failures in fsm
2022-03-02 10:40:18 -07:00
zenground0 874124c4e7 Handle finalize failures in fsm 2022-03-02 09:33:33 -07:00
Aayush 0a67b6e222 Merge branch 'master' into feat/fvm 2022-03-02 11:24:48 -05:00
Łukasz Magiera 6d464c478e Merge pull request #8160 from filecoin-project/fix/addpiece-idempotent
feat: Make add piece idempotent
2022-03-02 15:10:16 +00:00
Masih H. Derkani eb83001bbc Fix wrong ffi commit 2022-03-02 15:07:05 +00:00
Masih H. Derkani aacc246ba3 Merge branch 'master' into feat/cid-to-piece-idx 2022-03-02 14:06:30 +00:00
Masih H. Derkani 444a2bf355 Integrate the latest index-provider with config to disable announcements
Integrate the latest `index-provider` and reflect the changes to engine
configuration. Note that this commit disables announcements of indices
on the network by default as requested for initial merge to master.

Introduce dedicated index provider configuration parameters with
documentation and defaults that match the defaults in index-provider.

Re-generate code as needed.
2022-03-02 13:45:09 +00:00
Łukasz Magiera b8473aeedd Merge pull request #7883 from filecoin-project/feat/paych-avail-reuse
feat: paychmgr: Support paych funding (a.k.a. fast paid retrieval)
2022-03-02 13:28:12 +00:00
Łukasz Magiera 91ae72d47a Merge pull request #7819 from filecoin-project/digitalocean-use-snap
feat: ci: packer snap
2022-03-02 13:17:48 +00:00
Łukasz Magiera 74e6260fbd Merge pull request #7560 from EmadMF/emad22552-patch-1
add check manual-stateless-deal with interactive deal making
2022-03-02 13:16:14 +00:00
Łukasz Magiera a6892f956e Merge pull request #7844 from llifezou/add_workerName_in_sealing_err
feat: #6147: Include worker name in sealing errors
2022-03-02 13:13:34 +00:00
Łukasz Magiera c018dac13a Merge pull request #8079 from filecoin-project/cli_wallet_tests
test: cli: adding wallet tests
2022-03-02 12:59:09 +00:00
Łukasz Magiera e9a6f5f287 Merge remote-tracking branch 'origin/master' into feat/paych-avail-reuse 2022-03-02 12:56:56 +00:00
Łukasz Magiera a74c466b50 Merge pull request #7943 from filecoin-project/fix/restore-appimage
ci: appimage: re-install appimage CI
2022-03-02 12:54:14 +00:00
Łukasz Magiera 97cda51fcf Merge pull request #8219 from filecoin-project/jennijuju-patch-2
fix: sealing: PRU insufficient collateral
2022-03-02 12:24:34 +00:00
Masih H. Derkani 963caf2e9d Fix gen-check 2022-03-02 11:40:02 +00:00
Masih H. Derkani 769b0f30ef Address review comments
- Add comment to clarify the reason for loop in testkit
- Trim common prefix in state printed in CLI commands for better
  readability
- Upgrade to a tagged release of `go-fil-markets` that includes indexing
  work; see: https://github.com/filecoin-project/go-fil-markets/pull/673
- Fix typo in CLI usage.
- Add comments to note that it is safe to use fx `OnStart` context when
  starting the provider engine.
- Fix string concatenation in error message formatting.
2022-03-02 11:04:50 +00:00
Jiaying Wang e0922a7dd2 pay for the collateral difference needed if the miner available balance is insufficient 2022-03-01 21:56:12 -05:00
Aayush Rajasekaran 9c22065459 Merge pull request #8072 from filecoin-project/bloxico/syncer-tests
test: chain: unit tests for the syncer & sync manager
2022-03-01 19:32:42 -05:00
ZenGround0 8091e7086e Merge pull request #8202 from filecoin-project/arajasek-patch-1
fix: shed: diff command
2022-03-01 11:54:26 -07:00
ZenGround0 00e52296ce Merge pull request #8207 from rjan90/patch-4
Make `--lite` option visible in the lotus daemon help text
2022-03-01 11:51:38 -07:00
zenground0 59ef2fe1b8 Remove unused fields from sealing 2022-03-01 11:46:36 -07:00
Łukasz Magiera 714ce54135 Merge pull request #8213 from filecoin-project/fix/overlog-manager-ru
fix:sealing:Less verbose sector manager logging
2022-03-01 18:34:10 +00:00
zenground0 a463c90057 remove endpoint from cli 2022-03-01 11:27:03 -07:00
zenground0 f138ae8882 Less verbose sector manager logging 2022-03-01 10:52:09 -07:00
Aayush Rajasekaran bc5be0c30e Merge pull request #8211 from filecoin-project/asr/rc2
Lotus release v1.15.0-rc2
2022-03-01 09:49:34 -05:00
Aayush 30ae1dd8e8 Lotus release v1.15.0-rc2 2022-03-01 09:48:19 -05:00
Aayush dd91857bf6 Merge branch 'master' into feat/fvm 2022-02-28 22:17:20 -05:00
TheMenko 4a5b0b87ea add assert to output for wallet sign 2022-03-01 02:34:52 +01:00
TheMenko 0708268c75 add assert to output for wallet list 2022-03-01 02:21:22 +01:00
zenground0 77a954c7c3 Merge branch 'master' into feat/cid-to-piece-idx 2022-02-28 12:57:11 -07:00
zenground0 992a01617a Merge branch 'releases' into release/v1.15.0 2022-02-28 12:18:55 -07:00
Rjan c9e2c1b1d7 Make --lite 2022-02-28 17:14:05 +01:00
Rjan 686ada0582 Make --lite option visibile in the cli 2022-02-28 15:19:53 +01:00
Łukasz Magiera 6291c0c581 Merge pull request #8205 from s1mple1122/master
avoid panic
2022-02-28 13:31:33 +00:00
Łukasz Magiera f9900ba426 Merge pull request #8204 from bhaskarvilles/patch-2
A package is vulnerable to Exposure of Sensitive Information
2022-02-28 13:31:25 +00:00
Jerry 8f95cd4149 release worker tracker lock when call cb func 2022-02-28 16:55:04 +08:00
duzy555666 296ae4305f avoid panic 2022-02-28 16:51:15 +08:00
Bhaskara Ram 8a9ea66bdf node-fetch is vulnerable to Exposure of Sensitive Information to an Unauthorized Actor
upgrade to node-fetch npm package
2022-02-28 12:40:43 +05:30
Aayush Rajasekaran 92c07f877b fix: shed: diff command 2022-02-27 20:03:45 -05:00
Aayush Rajasekaran 6d0066eafa Merge pull request #8194 from filecoin-project/jen/actor
dep: actor: get v7
2022-02-27 19:25:35 -05:00
Łukasz Magiera a49ec594ca Merge pull request #8080 from filecoin-project/bloxico/cli-sync-tests
test: cli: unit tests for sync related commands
2022-02-27 11:54:03 +00:00
Łukasz Magiera 40ed266617 Merge pull request #8192 from filecoin-project/jen/releasesbacktomaster
chore: build: backport releases
2022-02-26 19:37:59 +00:00
Jiaying Wang b8eb4ddb0b Merge pull request #8193 from filecoin-project/jen/v15
chore: build: backport releases
2022-02-25 21:13:42 -05:00
Jiaying Wang d495c3cc16 Merge pull request #8190 from filecoin-project/jen/flagfix
fix: sealing: add flag usage
2022-02-25 21:13:18 -05:00
Jiaying Wang a92981c967 Merge pull request #8171 from filecoin-project/asr/libp2p-update
update go-libp2p to v0.18.0-rc5
2022-02-25 21:13:01 -05:00
jennijuju 254f821564 get actor v7 (same commit as v7-rc1) 2022-02-25 21:03:46 -05:00
jennijuju c6361b391c Merge branch 'releases' into jen/v15 2022-02-25 21:01:31 -05:00
Jiaying Wang 6347daf847 Merge pull request #8189 from filecoin-project/jen/reallydoitflag
fix: sealing: add flag usage
2022-02-25 20:55:11 -05:00
jennijuju f21ddf0c50 Merge branch 'releases' into jen/releasesbacktomaster 2022-02-25 20:54:11 -05:00
jennijuju 865c7e587c make gen 2022-02-25 17:34:14 -05:00
Łukasz Magiera 949a046432 Merge pull request #7928 from filecoin-project/bloxico/basic_wallet_tests
misc: wallet: wallet tests with annotations for system test matrix
2022-02-25 19:29:50 +00:00
Łukasz Magiera 69470db596 Merge pull request #8162 from filecoin-project/cli-mempool-tests
test: Cli: add mempool tests
2022-02-25 16:09:32 +00:00
jennijuju 52756128da add flag usage 2022-02-25 10:49:18 -05:00
jennijuju 433f9f8a13 make gen 2022-02-25 10:48:08 -05:00
jennijuju 79562a7175 add flag usage 2022-02-25 10:28:47 -05:00
llifezouandŁukasz Magiera dac5518005 Update extern/sector-storage/worker_local.go
Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
2022-02-25 11:12:18 +08:00
Aayush Rajasekaran a65386b491 Merge pull request #8183 from filecoin-project/jen/v142prep
build: version: v1.14.2
2022-02-24 19:17:42 -05:00
Aayush Rajasekaran 37b857a0b2 Update CHANGELOG.md 2022-02-24 19:17:33 -05:00
Jennifer Wang 5cfe8f315f add changelog 2022-02-24 18:33:52 -05:00
Jennifer Wang a567a745b2 bump the version to v1.14.2 2022-02-24 18:30:31 -05:00
Jennifer Wang 51fc965beb ayyush sucks at math with time 2022-02-24 18:12:36 -05:00
Jiaying Wang ec6b786fbf Merge pull request #8182 from filecoin-project/jen/backports
chore: backports: snappy related improvements/bug fixes
2022-02-24 18:07:41 -05:00
Aayush Rajasekaran 64b13afee5 Merge pull request #8163 from filecoin-project/steb/fix-inclusion-price-at-upgrade
Fix the epoch used for gas in the message pool & validation
2022-02-24 18:06:08 -05:00
Peter Rabbitson 3c366160bb Retract force-pushed v1.14.0 to work around stale gomod caches 2022-02-24 17:59:38 -05:00
eben.xie be3462eb76 [Describe]: when excute cmd "lotus-bench sealing" without "benchmark-existing-sectorbuilder", panic will occur
[BugFix]:

[FeatureAdd]:

[CodeReview]:

[ModifyDesc]:

[Author]:

[BugID]:
2022-02-24 17:54:38 -05:00
zenground0 6862015929 add rdi flag for abort upgrade 2022-02-24 17:54:10 -05:00
zenground0 e5de237990 Fix fault tracker to handle snap deals 2022-02-24 17:53:21 -05:00
Jiaying Wang d054340f13 Merge pull request #8181 from filecoin-project/fix/really-do-it-for-abort
fix:sealing:really-do-it flag for abort upgrade
2022-02-24 17:50:12 -05:00
zenground0 77bf46d018 Tiny clean up 2022-02-24 15:46:15 -07:00
Jiaying Wang 3621d8675f Merge pull request #8180 from filecoin-project/jennijuju-patch-2
fix: sealing: missing file type
2022-02-24 17:41:48 -05:00
zenground0 367146f032 add rdi flag for abort upgrade 2022-02-24 15:20:21 -07:00
Jiaying Wang f9641d70af fix: sealing: missing file type 2022-02-24 16:27:24 -05:00
Aayush Rajasekaran 755ce8cb91 Merge pull request #8174 from filecoin-project/asr/consistent-vm
Use either Lotus VM or FVM consistently
2022-02-24 16:19:29 -05:00
Aayush Rajasekaran b8cd154516 Merge pull request #8175 from filecoin-project/gstuart/remove-verified-data-cap-cli
Feat: cli: Remove verified data cap
2022-02-24 13:33:47 -05:00
ZenGround0 d711775cdf Merge pull request #8177 from filecoin-project/fix/fault-tracker-snap-deals
fix:proving:post check sector handles snap deals replica faults
2022-02-24 11:30:10 -07:00
Geoff StuartandAayush Rajasekaran e0382c546d Update cmd/lotus-shed/verifreg.go
Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
2022-02-24 13:07:10 -05:00
Geoff Stuart 4293023731 Updated cli docs 2022-02-24 12:43:02 -05:00
Geoff Stuart 83bf0c5a11 Review fixes 2022-02-24 12:40:13 -05:00
Aayush 2ba34add2a stmgr: call needs to flush VM before fetching nonce 2022-02-24 12:19:59 -05:00
Aayush d58babe32c fix: set FilVested when constructing VmOpts 2022-02-24 12:04:05 -05:00
Aayush b6682f4bbe feat: use either lotus vm or fvm consistently 2022-02-24 12:04:05 -05:00
Aayush 9bb936b75c chore: refactor: rename NewVM to NewLotusVM 2022-02-24 12:04:05 -05:00
Aayush Rajasekaran c940727cb4 Merge pull request #8179 from filecoin-project/asr/comm-p-fix
fix: client: calculate commps for pieces bigger than 32GB
2022-02-24 11:56:12 -05:00
Aayush fd8cb44e67 fix: client: calculate commps for pieces bigger than 32GB 2022-02-24 10:27:37 -05:00
Łukasz Magiera 7c2f653323 Merge pull request #8168 from filecoin-project/feat/ufs-selectors
feat: market utils: Support unixfsnode in TraverseDag
2022-02-23 22:35:24 +01:00
Steven Allen 420c5fb568 fvm: time message execution 2022-02-23 19:23:20 +00:00
Steven Allen aad376296e fvm: set gas costs to nil for implicit messages
This is what the lotus VM does.
2022-02-23 19:22:47 +00:00
Geoff StuartandAayush Rajasekaran ef68fdb261 Update cmd/lotus-shed/verifreg.go
Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
2022-02-23 12:16:42 -05:00
Geoff StuartandAayush Rajasekaran 25912e72a1 Update cli/filplus.go
Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
2022-02-23 12:14:26 -05:00
Geoff Stuart 22760f0922 Handle pre-v7 case more gracefully 2022-02-23 12:02:26 -05:00
zenground0 abe04c33c1 Fix fault tracker to handle snap deals 2022-02-23 09:56:47 -07:00
ZenGround0 ba65d1e1e3 Merge pull request #8173 from xgswust/lotus-bench-fix
[Describe]: when excute cmd "lotus-bench sealing" without "benchmark-…
2022-02-23 09:07:57 -07:00
TheMenko 5ece3d4c10 Merge branch 'master' into bloxico/basic_wallet_tests
merge master to update the branch
2022-02-23 15:48:53 +01:00
Masih H. Derkani b802ddb848 Upgrade dependency to markets 2022-02-23 14:41:55 +00:00
Masih H. Derkani c3b406c5c2 Update indexing and markets dependencies
Update indexing dependencies to latest along with go-fil-markets
dependency, to the head of:
- https://github.com/filecoin-project/go-fil-markets/pull/673
2022-02-23 14:10:38 +00:00
Geoff Stuart e9715cae3b Small fixes 2022-02-22 22:58:51 -05:00
Geoff Stuart 5a5d1bf9aa Updated cli docs 2022-02-22 22:07:20 -05:00
Geoff Stuart 23147378a3 Added cli command for vrk to send RemoveVerifiedClientDataCap message 2022-02-22 22:07:20 -05:00
Geoff Stuart 375d9fdfc9 Added cli command for verifier to sing RemoveDataCapProposal 2022-02-22 22:07:20 -05:00
eben.xie e2cbad6ff4 [Describe]: when excute cmd "lotus-bench sealing" without "benchmark-existing-sectorbuilder", panic will occur
[BugFix]:

[FeatureAdd]:

[CodeReview]:

[ModifyDesc]:

[Author]:

[BugID]:
2022-02-23 10:49:53 +08:00
Darko Brdareski a54d2fd19d Update cli docs 2022-02-22 17:08:04 +01:00
vyzo a575947294 update go-libp2p to v0.18.0-rc5 2022-02-22 11:04:21 -05:00
Darko Brdareski 79ba74ce71 Merge branch 'master' into cli-mempool-tests 2022-02-22 16:27:38 +01:00
Darko Brdareski 0a03ec569a Merge branch 'master' into bloxico/syncer-tests 2022-02-22 16:17:04 +01:00
TheMenko cd64eba76c add stm annotations 2022-02-22 16:00:01 +01:00
TheMenko de68f1e5fe Merge branch 'master' into cli_wallet_tests
update branch from master
2022-02-22 15:37:09 +01:00
TheMenko fce9ff237a add fmt output checks 2022-02-22 15:35:46 +01:00
Darko Brdareski 10c939bc36 Remove leftover logging from sync_manager_test 2022-02-22 14:54:56 +01:00
Darko Brdareski e753e7a66e Merge branch 'master' into bloxico/cli-sync-tests 2022-02-22 14:03:44 +01:00
Łukasz Magiera 5d416de32e Merge pull request #8169 from filecoin-project/deps/update-libp2p
deps: update go-libp2p to v0.18.0-rc5
2022-02-22 11:47:42 +01:00
Aarsh Shah f0f2b3e1f4 changes as per review 2022-02-22 14:22:51 +04:00
vyzo 012cf96d60 update go-libp2p to v0.18.0-rc5 2022-02-22 12:19:26 +02:00
Łukasz Magiera a0cb6094c6 Merge remote-tracking branch 'origin/master' into feat/paych-avail-reuse 2022-02-22 10:55:03 +01:00
Łukasz Magiera a05a462c8c market utils: Support unixfsnode in TraverseDag 2022-02-22 10:51:57 +01:00
Aarsh Shah 8e62fec1d3 address review 2022-02-22 13:48:39 +04:00
ZenGround0 6123aa2ed4 Merge pull request #8048 from filecoin-project/cli-chain-tests
test: cli: chain category unit tests
2022-02-21 19:12:18 -07:00
Steven Allen 1234fcfd4f fix: mempool: check messages against the next block's height
Previously, we checked message gas/validity with the previous block's
height. This doesn't affect consensus, but will help us avoid adding
messages to the message pool that shouldn't be there.
2022-02-21 18:13:07 +00:00
Steven Allen 04bc4405c7 fix: chain: check against the inclusion price at the correct height
We need to use the height at which the messages will be executed, not
the height of the previous tipset. This brings the gas checking for
validation with the gas we actually _charge_ during message execution.

This only matters for the Calico upgrade (the only upgrade where we
changed the gas prices).

This change could potentially cause a block at that height to be
rejected if it includes a message with insufficient gas for inclusion.
However, that _should_ have shown up as a miner penalty when we executed
the blocks in the following tipset. Given that there were no miner
penalties at 265199-265201, this change should be "safe".
2022-02-21 18:12:51 +00:00
Darko Brdareski 7b203eae1b More lint issues fixed 2022-02-21 18:35:31 +01:00
Darko Brdareski 76157c5e03 Merge branch 'master' into cli-mempool-tests 2022-02-21 18:08:15 +01:00
Darko Brdareski ad4acf3baa Fix lint issues 2022-02-21 17:58:00 +01:00
Darko Brdareski 580fa86ea3 Change annotation to #cli 2022-02-21 17:57:01 +01:00
Darko Brdareski 675012fe1c Fix matching for TestInspectUsage 2022-02-21 16:49:07 +01:00
Aarsh Shah 56926b349a changes as per review 2022-02-21 18:27:51 +04:00
Darko Brdareski 87c63e2cb7 Add stm file annotation 2022-02-21 12:33:07 +01:00
Darko Brdareski c8cd8bb591 Add stm annotations 2022-02-21 12:32:53 +01:00
Darko Brdareski c3817652dc Add cli tests for mempool 2022-02-21 11:28:45 +01:00
Aarsh Shah 3fd83e9345 dagstore size bloating fix 2022-02-21 13:57:29 +04:00
Aarsh Shah c2522e8ca9 idempotent add piece 2022-02-21 13:51:43 +04:00
Aarsh Shah 1245871004 guard with ctx 2022-02-21 11:56:49 +04:00
Aarsh Shah 26707a5e03 make add piece idempotent 2022-02-21 11:51:25 +04:00
Łukasz Magiera 214c32d2ef Merge pull request #8131 from FlorianRuen/master
fix:cli:Continue instead of return error if no valid value is filled
2022-02-21 00:43:25 +01:00
Łukasz Magiera 051ff5d205 Merge pull request #8149 from filecoin-project/fix/reify-limit
fix: limit reification sizes
2022-02-21 00:09:06 +01:00
Łukasz Magiera 31ad8e647a Merge pull request #8104 from ychiaoli18/feat/gateway-msig-get-vesting-schedule
feat: gateway: add MsigGetVestingSchedule to gateway api
2022-02-21 00:06:18 +01:00
Łukasz Magiera 7351939053 Merge pull request #8157 from elijaharita/feat/ensemble-mocknet-getter
feat: itests: add itests ensemble mocknet getter
2022-02-21 00:04:20 +01:00
Peter Rabbitson 2d1ebee139 Merge pull request #8159 from filecoin-project/chore/retract_1_14_0
Retract force-pushed v1.14.0 to work around stale gomod caches
2022-02-19 23:59:59 +01:00
Peter Rabbitson 9bb9bb5682 Retract force-pushed v1.14.0 to work around stale gomod caches 2022-02-19 16:25:18 +01:00
Cory Schwartz cdd2d5cc6a update template 2022-02-18 15:37:53 -08:00
Cory Schwartz 6ec82b7446 Merge branch 'master' into digitalocean-use-snap 2022-02-18 15:26:13 -08:00
Elijah Seed-Arita e2a93a3feb add itests ensemble mocknet getter 2022-02-18 11:09:56 -10:00
Aayush Rajasekaran 942922960e Merge pull request #8156 from filecoin-project/asr/releases-master
chore: Merge releases into master
2022-02-18 13:57:47 -05:00
Aayush 9ba7bcea23 Merge branch 'releases' into release/v1.15.0 2022-02-18 13:57:07 -05:00
Aayush d35216434f Merge branch 'releases' into asr/releases-master 2022-02-18 13:45:08 -05:00
Aayush Rajasekaran d2dca7b217 Merge pull request #8154 from filecoin-project/release/v1.14.1
chore: release: merge release/v1.14.1 to releases branch
2022-02-18 13:36:57 -05:00
Jiaying Wang 0ce666aaa0 Merge branch 'releases' into release/v1.14.1 2022-02-18 13:36:37 -05:00
Aayush Rajasekaran f3db3da153 Merge pull request #8153 from filecoin-project/jen/rv141prep
chore: build: fix the typo in upgrade epoch date and version bump to v1.14.1
2022-02-18 13:35:21 -05:00
Aayush 6e1d5c5733 Merge branch 'master' into feat/fvm 2022-02-18 13:33:06 -05:00
Aayush Rajasekaran 562c59b6c1 Merge pull request #8101 from filecoin-project/asr/fault
Fvm: impl VerifyConsensusFault
2022-02-18 13:27:25 -05:00
Aayush 5be125ad1a address review feedback 2022-02-18 13:21:17 -05:00
Aayush 393479ea69 Fvm: impl VerifyConsensusFault 2022-02-18 13:21:01 -05:00
florian@eyesr.fr 623272aa96 Merge branch 'master' of https://github.com/FlorianRuen/lotus 2022-02-18 15:51:19 +00:00
florian@eyesr.fr 1c39730531 Fix #8095
Clear the list of miner addresses and successfull get-asked before asking for new ones
Previous behavior : if get-ask failed for miner(s), the faulty miner will be retried each time,
so you have to stop the command and start again to change this faulty miner (instead of removing from the list on the new attempt)
2022-02-18 15:46:40 +00:00
jennijuju 94bfd5cf66 version v1.14.1 2022-02-18 09:12:43 -05:00
Jiaying Wang c5bd019a7c Fix mainnet upgrade date, epoch is correct 2022-02-18 09:11:49 -05:00
Aayush Rajasekaran c8edd5bd52 CHANGELOG: add a note about premigrations 2022-02-18 09:10:24 -05:00
vyzo a7b1d86533 make cidset (in memory) visitors smarter; no need to ever visit unitary objects 2022-02-18 12:35:42 +02:00
vyzo 2795995989 add reification limit test 2022-02-18 12:19:19 +02:00
vyzo cbd23c2b1b add reification limit 2022-02-18 12:19:09 +02:00
Aarsh Shah e3f5b7c59f update dagstore top level index db 2022-02-18 14:00:01 +04:00
Aayush Rajasekaran 3bb6efe0db Merge pull request #8144 from filecoin-project/asr/release
CHANGELOG: add a note about premigrations
2022-02-17 21:03:47 -05:00
Aayush Rajasekaran e05b9ce039 CHANGELOG: add a note about premigrations 2022-02-17 20:55:32 -05:00
Aayush Rajasekaran 94e3088f56 Merge pull request #8143 from filecoin-project/asr/release
Lotus version 1.14.0: set OhSnap upgrade epoch
2022-02-17 20:29:22 -05:00
Aayush Rajasekaran b311c26e21 Lotus version 1.14.0: set OhSnap upgrade epoch 2022-02-17 20:28:38 -05:00
Aayush Rajasekaran 0521d793db tidy go.sum 2022-02-17 19:11:41 -05:00
Aayush Rajasekaran cf7a0415c1 Merge pull request #8130 from filecoin-project/feat/lm-snap-clis
feat: Snapdeals support in `storage find` CLI
2022-02-17 14:49:08 -05:00
Aayush Rajasekaran ab2cea6b46 Merge pull request #8137 from filecoin-project/asr/backport
sealer: fix error message
2022-02-17 14:44:16 -05:00
Aayush b708fbcd20 sealer: fix error message 2022-02-17 14:31:59 -05:00
Aayush Rajasekaran bf36363109 Merge pull request #8136 from filecoin-project/asr/backport
sealer: fix error message
2022-02-17 14:31:43 -05:00
Aayush 3399f72113 sealer: fix error message 2022-02-17 14:24:32 -05:00
Aayush Rajasekaran 8c0b4a5132 Merge pull request #8135 from filecoin-project/asr/backport
typo in  variable name
2022-02-17 14:22:04 -05:00
Jennifer Wang f6e545bce5 typo in variable name 2022-02-17 14:09:10 -05:00
Aayush Rajasekaran c6c5cdd1dc Merge pull request #8134 from filecoin-project/asr/backport
typo in  variable name
2022-02-17 14:08:31 -05:00
Jennifer Wang ae7e5f4b2c typo in variable name 2022-02-17 14:07:45 -05:00
Aayush Rajasekaran 33134e617f Merge pull request #8123 from filecoin-project/jen/fixcli
fix: sealing: replica-update variable name is inconsistent
2022-02-17 14:06:48 -05:00
Łukasz Magiera 81d2fd615d Merge pull request #8132 from filecoin-project/fix/disable-reify
temporarily disable reification
2022-02-17 19:30:17 +01:00
vyzo 899a65ae87 fix test 2022-02-17 20:13:46 +02:00
Florian Ruen 6ce9321094 lint reported errors on CircleCI
Commit to fix lint reported errors during tests on CircleCI
(remove trailling whitespace)
2022-02-17 19:01:52 +01:00
vyzo a20c6cb04b temporarily disable reification
big reifications can use a lot of memory during sync apparently.
2022-02-17 19:56:50 +02:00
Florian Ruen ddd369e731 lint reported errors on CircleCI
Commit to fix lint reported errors during tests on CircleCI
(remove blank lines x2)
2022-02-17 18:53:21 +01:00
Florian Ruen 78817bd001 Fix #8100
Bug fixed : if hitting return instead of filling with a valid value, the CLI crashed (line 796)
Change return err by continue to ask a valid value again
2022-02-17 17:57:42 +01:00
Florian Ruen 6d32a2f299 Update client.go
Bug fixed : if hitting return instead of filling with a valid value, the CLI crashed (line 796)
Change return err by continue to ask a valid value again
2022-02-17 17:35:33 +01:00
Aayush Rajasekaran 72021b3221 Merge pull request #8111 from filecoin-project/travis/set-current-network-version
feat: cli: set current network version from params
2022-02-17 11:25:07 -05:00
Aayush Rajasekaran 5e4e7c6d34 Merge pull request #8122 from filecoin-project/asr/make-jen
makefile: add make jen
2022-02-17 10:56:39 -05:00
Łukasz Magiera c974872494 lotus-miner: More sector-related data in info all 2022-02-17 16:35:09 +01:00
Łukasz Magiera 7823363bba lotus-miner: Support update files in storage find 2022-02-17 16:29:27 +01:00
Darko Brdareski 6feae1993d Fix PR comments.
Refactor random addr generation to use a rand seed.
Remove unused lines in tests.
2022-02-17 14:24:42 +01:00
Łukasz Magiera 93bc3af7c6 Merge pull request #8128 from filecoin-project/fix/splitstore-reify-incomplete
don't fail reification on missing references
2022-02-17 13:16:34 +01:00
vyzo 74556edcff don't fail reification on missing references 2022-02-17 12:52:52 +02:00
Łukasz Magiera 36224838dd Merge pull request #8121 from filecoin-project/asr/nil-update
sealer: fix error message
2022-02-17 11:30:53 +01:00
Kevin Li bc88a02fe2 fix docsgen-cli 2022-02-17 17:29:09 +08:00
Kevin Li ba72eff3e6 feat: cli/net: implement 'net ping' command 2022-02-17 17:22:52 +08:00
Steven Allen d835cade15 chore: update FFI
Updates the FVM
2022-02-16 17:47:25 -08:00
Aayush 355b73843c makefile: add make jen 2022-02-16 19:34:45 -05:00
Jennifer Wang 43c0344fb2 typo in variable name 2022-02-16 19:31:45 -05:00
Aayush Rajasekaran 4767f3d87e Merge pull request #8120 from filecoin-project/travis/set-current-network-version
feat: cli: set current network version from params
2022-02-16 19:28:59 -05:00
Aayush 36aa243c56 sealer: fix error message 2022-02-16 19:26:00 -05:00
Aayush Rajasekaran 9df5ce1fb7 Merge pull request #8116 from filecoin-project/asr/migration-tweak
feat: tweak v15 migration params
2022-02-16 17:54:46 -05:00
Aayush 71f0f4c335 feat: tweak v15 migration params 2022-02-16 17:53:59 -05:00
Aayush Rajasekaran 7a0f88cc7c Merge pull request #8115 from filecoin-project/asr/migration-tweak
feat: tweak v15 migration params
2022-02-16 17:53:46 -05:00
Aayush 3b3b0725ed feat: tweak v15 migration params 2022-02-16 17:52:57 -05:00
Aayush Rajasekaran f17bbc9eac Merge pull request #8108 from filecoin-project/asr/migration-tweak
feat: tweak v15 migration params
2022-02-16 17:50:10 -05:00
Travis Person ca9bcc90a5 lotus-seed: set current network version from params
allows automation to correctly set the network version for the currently
built network with no variable inputs.
2022-02-16 21:02:51 +00:00
Łukasz Magiera 384999556c paychmgr: AvailableAmt -> NonReservedAmt 2022-02-16 20:39:43 +01:00
Aayush afc29ed445 feat: tweak v15 migration params 2022-02-16 13:04:48 -05:00
Masih H. Derkani a09f386537 Remove redundant IndexProvider config now that host is shared
Now that host is shared having separate config for listen and announce
addresses along with graphsync limit makes no sense since all of that is
shared with the markets host and datatransfer manager.
2022-02-16 13:46:44 +00:00
Masih H. Derkani 2ebc111b70 Use the same host and datatransfer as markets for index provider
Remove the bespoke instantiation of libp2p host and datatransfer manager
for index provider and reuse the existing instances used by markets.

The rationale for reuse is the following:
 1. Separation of host introduces a discovery problem, where without
    gossipsub the index provider endpoint will not be discoverable.
    Using the same host as markets would mean the chain can be used to
    discover addresses, putting less empassis on criticality of
    gossipsub considering its set-up cost and lack of message delivery
    guarantees.

 2. Only a single instance of graphsync/datatransfer can be instantiated
    per libp2p host; therefore, if the host is shared, so should
    datatransfer manager.

 3. it is not clear if the assumptions under which separation was
    decided still hold.
2022-02-16 13:46:44 +00:00
Łukasz Magiera e961766e4b fix lotus-soup build 2022-02-16 10:08:44 +01:00
Łukasz Magiera 681b90768a Merge remote-tracking branch 'origin/master' into feat/paych-avail-reuse 2022-02-16 10:06:36 +01:00
Łukasz Magiera cdca1a46b1 Merge pull request #8102 from filecoin-project/feat/paych-avail-reuse-updated-markets
feat(markets): update markets to simplify client adapter
2022-02-16 10:01:10 +01:00
Kevin Li f677995603 feat: add MsigGetVestingSchedule to gateway api
expose MsigGetVestingSchedule method to gateway api
2022-02-16 16:11:46 +08:00
hannahhoward e1a36058b4 feat(markets): update markets to simplify client adapter 2022-02-15 21:52:06 -08:00
Aayush Rajasekaran 439b424261 Merge pull request #8093 from filecoin-project/asr/enabler15
fix: sealer: allow enable/disabling ReplicaUpdate tasks
2022-02-15 14:57:20 -05:00
Aayush Rajasekaran c217ccf540 Merge pull request #8092 from filecoin-project/asr/enabler14
fix: sealer: allow enable/disabling ReplicaUpdate tasks
2022-02-15 14:56:11 -05:00
Łukasz Magiera 6f21a10a56 Merge pull request #8098 from filecoin-project/feat/sectorlist-pledge
feat: lotus-miner sectors list --initial-pledge
2022-02-15 16:44:49 +01:00
Łukasz Magiera fd66c0dcf6 Merge pull request #8099 from filecoin-project/feat/rcmgr-metrics-redux
don't track peer ids in rcmgr metrics
2022-02-15 15:52:26 +01:00
vyzo 9c00af1b86 don't track peer ids in rcmgr metrics 2022-02-15 16:12:17 +02:00
Łukasz Magiera a3e785cb4a Merge pull request #8057 from mtelka/info-noadmin
fix: state: Allow lotus-miner info to complete without admin permission
2022-02-15 15:00:29 +01:00
Łukasz Magiera 6926d63655 Merge pull request #8088 from filecoin-project/fix/flakey-paychapi-test
fix:paychan:deflake integration test
2022-02-15 14:45:14 +01:00
Łukasz Magiera 48dea93c7e Merge pull request #8089 from filecoin-project/feat/rcmgr-metrics
Resource Manager Metrics
2022-02-15 14:40:44 +01:00
Łukasz Magiera 0b7addc031 lotus-miner sectors list --initial-pledge 2022-02-15 14:21:30 +01:00
Masih H. Derkani 031bfaf120 Update to the head of go-fil-markets#673
Update to the head of the PR that introduces indexing integration in
`go-fil-markets` so that failure to connect to full node is logged only
instead of crashing markets process.

Relates to:
 - https://github.com/filecoin-project/go-fil-markets/pull/673
 - https://github.com/filecoin-project/index-provider/issues/177
2022-02-15 12:37:13 +00:00
Masih H. Derkani f15a1edbf2 Protect index provider peer ID before connecting to full node
Add the peer ID of index provider host to the list of protected peers
before connecting to full node. Otherwise, it is possible for the
connection to be reset by full node before we reach the line that adds
the ID to list of protected peers via JsonRPC API.

Relates to:
 - https://github.com/filecoin-project/index-provider/issues/177
2022-02-15 11:49:29 +00:00
Aayush 75b8e4c981 fix: sealer: allow enable/disabling ReplicaUpdate tasks 2022-02-14 15:25:52 -05:00
Aayush 56df886b55 fix: sealer: allow enable/disabling ReplicaUpdate tasks 2022-02-14 15:24:13 -05:00
Aayush Rajasekaran bcaeb83fef Merge pull request #8090 from filecoin-project/asr/snap-tasks
fix: worker: allow enable/disabling ReplicaUpdate tasks
2022-02-14 15:23:42 -05:00
Łukasz Magiera 60b9acc09d gen 2022-02-14 21:16:41 +01:00
Łukasz Magiera deb9882520 Merge branch 'feat/paych-avail-reuse' of github.com:filecoin-project/lotus into feat/paych-avail-reuse 2022-02-14 21:11:48 +01:00
Łukasz Magiera da5ae1efe1 paychmgr: erlier checks in completeAmount 2022-02-14 21:11:31 +01:00
Aayush eebe784191 fix: sealer: allow enable/disabling ReplicaUpdate tasks 2022-02-14 15:08:28 -05:00
Łukasz Magieraanddirkmc f9485eb9c2 Update paychmgr/store.go
Co-authored-by: dirkmc <dirkmdev@gmail.com>
2022-02-14 20:42:45 +01:00
Łukasz Magiera 36a1934845 paychmgr: Fix tests after api changes 2022-02-14 20:16:30 +01:00
df5bd147fa paychmgr: Review comments
Co-authored-by: Hannah Howard <hannah@hannahhoward.net>
Co-authored-by: dirkmc <dirkmdev@gmail.com>
2022-02-14 20:07:13 +01:00
zenground0 977351f419 Fix from Magik to remove hanging behavior 2022-02-14 14:00:41 -05:00
Łukasz Magiera f61eb23f8f api: separate method for paych funding 2022-02-14 19:56:02 +01:00
Łukasz Magiera 10af768c60 Merge commit 'origin/release/v1.15.0~2' into feat/paych-avail-reuse 2022-02-14 19:27:12 +01:00
Łukasz Magiera 7efed6617c Merge pull request #8029 from filecoin-project/feat/splistore-cold-object-reification-redux
splistore cold object reification redux
2022-02-14 19:04:02 +01:00
vyzo a9ec408844 collect resource manager metrics 2022-02-14 19:46:05 +02:00
vyzo b260c849f7 deps: update go-libp2p-resource-manager to v0.1.4 2022-02-14 19:43:07 +02:00
zenground0 2c06eb76d6 Improve MineBlocksMustPost use it in PaychAPI itest 2022-02-14 09:47:18 -05:00
vyzo 6bcade5e6d add comment about bigness of reification batch 2022-02-14 16:13:54 +02:00
vyzo 4524fbe936 wait for reify workers to finish when closing 2022-02-14 16:10:54 +02:00
vyzo 6c7ababd3f add comment about trackTxnRefs being noops if txnActive is false 2022-02-14 16:06:12 +02:00
vyzo a428f44793 don't reify objects while still warming up 2022-02-14 16:04:39 +02:00
vyzo b576785aac rename GetHotView to IsHotView 2022-02-14 16:03:17 +02:00
ZenGround0 3b5b55de19 Merge pull request #8017 from filecoin-project/bloxico/mempool_tests
test: mempool: Add unit and integration tests
2022-02-14 08:46:45 -05:00
Aayush ee6989970f Merge branch 'master' into feat/fvm 2022-02-13 14:25:39 -05:00
Aayush Rajasekaran bac708fa34 Merge pull request #8081 from filecoin-project/feat/shed-state-diff
add a state-tree diff command to lotus shed
2022-02-13 14:03:22 -05:00
Nikola Divic 93d9bfb682 doc: stm test annotations for cli/sync category 2022-02-13 18:39:37 +01:00
Nikola Divic e6c8c9a6ab doc: add stm annotation to cli chain tests 2022-02-13 17:14:27 +01:00
Nikola Divic 34387326d1 test: fix flaky message pool integration tests
Using the same pattern described in my previous commit.
I also added the CircuitBreaker to the itests kit as it may be useful
for other integration tests when debugging flakyness caused by timeouts.
2022-02-12 19:52:51 +01:00
Nikola Divic aca2a0fd1b test: fix flake in TestMemPoolBatchPushUntrusted integration test
The flake was caused by improper waiting for certain chain operations
to finish:

- We didn't wait for messages to be registered as pushed
- We improperly waited for a fixed time (10 seconds) for messages to be
mined, which in the best case would wait longer than necessary and in the
worst case would cause the test to break.

What I did:
- fixed by waiting in a loop for "just enough time". This fixed the flake
and made the test run faster, on average, because we don't have unnecessary
waiting.
- I added a "circuit-breaker" where the wait loop will timeout after 10 seconds.
2022-02-12 17:48:45 +01:00
Nikola Divic 0e8a709f92 Merge branch 'master' of https://github.com/filecoin-project/lotus into bloxico/mempool_tests 2022-02-12 17:11:24 +01:00
Nikola Divic d50a26f4ae Revert "test: (kinda) fix flaky test"
This reverts commit baee4a1576.
2022-02-12 17:10:00 +01:00
Nikola Divic baee4a1576 test: (kinda) fix flaky test
deals_retry_deal_no_funds_test.go:TestDealsRetryLackOfFunds seems to be
flaky, sometimes it passes and sometimes it doesn't.
The first suspect for me was time.Sleep(), which I replaced with waiting
until a deal state where you can restart is reached.
2022-02-11 21:56:28 +01:00
Masih H. Derkani 1bf7e6a408 Fix gen-check 2022-02-11 20:02:56 +00:00
Masih H. Derkani 59351c8cb8 Add lotus net CLI command to add/remove/list protected peers
Add CLI commands under `lotus net` to add/ remove/list protected peers.
2022-02-11 19:54:59 +00:00
Masih H. Derkani 230b8554f6 Override testnetnet to mainnet in indexer ingest topic
Override `testnetnet` to `mainnet` when constructing indexer ingestion
topic.
2022-02-11 19:52:19 +00:00
Masih H. Derkani b47cde70fa Decode gossip extra data as []bytes
The type of extra data in go-legs gossip is bytes. But when it is parsed
as miner ID, it is cast to string then parsed. Instead, it should be
decoded from bytes.
2022-02-11 18:59:00 +00:00
Steven Allen e89f7d9023 feat: shed: add a state-tree diff command to lotus shed
This makes it easier to debug state mismatches by providing a nice way
to figure out which actors differ between two state-trees and
how (balance, nonce, state, etc.).

It doesn't provide a way to actually _diff_ those state-trees, but one
can use `lotus chain get` to figure that out (although it would be
_nice_ to provide something a bit smarter).
2022-02-11 10:35:56 -08:00
Nikola Divic 94374aa93d test: sync checkpoint cli command 2022-02-11 18:30:07 +01:00
Nikola Divic 05c8635749 test: sync check-bad cli command 2022-02-11 18:08:36 +01:00
Nikola Divic 0f79a0024c test: sync unmark-bad cli command 2022-02-11 18:00:01 +01:00
Nikola Divic 7fc2f9dc29 test: sync mark-bad cli command 2022-02-11 17:54:53 +01:00
Nikola Divic ec0607900d test: sync state cli command 2022-02-11 17:45:19 +01:00
TheMenko 8a2d27309d adding cli wallet tests 2022-02-11 16:30:28 +01:00
TheMenko d77e59309d Merge remote-tracking branch 'origin/cli-chain-tests' into cli_wallet_tests
merging cli-chain-tests for mock full api function dependency
2022-02-11 16:17:30 +01:00
Nikola Divic 2a1f18b6ab Merge branch 'cli-chain-tests' into bloxico/cli-sync-tests 2022-02-11 15:56:49 +01:00
Nikola Divic 34bfd13548 doc: add stm annotations to the syncer tests
Add annotations for the test crawler for the lotus.systemtestmatrix.com
dashboard.
2022-02-11 15:06:06 +01:00
Masih H. Derkani 7e7844f169 Fix log message formatting when instantiating index provider 2022-02-11 12:15:21 +00:00
Łukasz Magiera 2e22781f8f Merge pull request #8073 from filecoin-project/jen/v151
feat: build: bump the version to v1.15.1-dev
2022-02-11 09:51:21 +00:00
Jennifer Wang 99d5ad097c Merge remote-tracking branch 'origin/master' into jen/v151 2022-02-11 00:16:52 -05:00
Jennifer Wang 1b2bbd3888 bump master version to v1.15.1-dev 2022-02-11 00:13:18 -05:00
Jennifer Wang 095d5d2e31 add changelog 2022-02-10 23:56:42 -05:00
Jennifer Wang 7fd4c9617d typo in change log 2022-02-10 23:46:49 -05:00
Jennifer Wang 1916561e60 bump the version to v1.15.0-rc1 2022-02-10 23:38:41 -05:00
Jiaying Wang ad0f44f0c5 Merge pull request #8070 from filecoin-project/jen/rc7
chore: build: v1.14.0-rc7
2022-02-10 19:19:04 -05:00
Nikola Divic ae66f57fa0 test: chain syncer & sync manager
Added a few tests for some uncovered methods of the syncer and sync
manager. Deleted some dead code (sync.go:getLatestBeaconEntry).
2022-02-11 00:46:59 +01:00
Nikola Divic 107eb76b20 cleanup: small cleanup before final push 2022-02-11 00:09:07 +01:00
Jennifer Wang cb2518716c v1.14.0-rc7 2022-02-10 17:43:57 -05:00
Łukasz Magiera a1098f6dc2 Cleanup go.mod 2022-02-10 17:37:09 -05:00
zenground0 407c6cf120 Stop recovery attempts after fault 2022-02-10 17:33:57 -05:00
Łukasz Magiera 9e76a788e2 sealing: Use ChainAt in handleUpdateActivating 2022-02-10 17:32:31 -05:00
Łukasz Magiera 02c0fb7b65 ffiwrapper: Use ClearCache for update cache cleanup 2022-02-10 17:32:13 -05:00
Łukasz Magiera a5bddbcdc6 proofs master 2022-02-10 17:32:04 -05:00
Łukasz Magiera 9f54c4d002 Fix CheckProvable with updated sectors 2022-02-10 17:30:23 -05:00
Łukasz Magiera 4289ce10e4 fsm: Call ReleaseSectorKey after WinningPoSt lookback period 2022-02-10 17:30:18 -05:00
Łukasz Magiera 263de5b0c1 Use tagged specs-storage 2022-02-10 17:29:57 -05:00
Łukasz Magiera ecc1f4b8f1 Make FinalizeReplicaUpdate actually do cleanup 2022-02-10 17:29:52 -05:00
Łukasz Magiera ea32b415f0 Fix missing FinalizeReplicaUpdate in tests 2022-02-10 17:29:47 -05:00
Łukasz Magiera 229cfafa8d make gen 2022-02-10 17:29:39 -05:00
Łukasz Magiera 53e1f75c2c Add FinalizeReplicaUpdate into some more places 2022-02-10 17:27:49 -05:00
Łukasz Magiera 9a01964f5f itests: Print API info env vars in ThroughRPC tests 2022-02-10 17:27:43 -05:00
Łukasz Magiera f2a6c9458c mod tidy 2022-02-10 17:27:38 -05:00
Łukasz Magiera 9a117fa39a try ClearCache for update cache 2022-02-10 17:27:24 -05:00
Łukasz Magiera 212f5ddb4f wip FinalizeReplicaUpdate 2022-02-10 17:24:26 -05:00
Will 296eab3045 Merge pull request #8045 from gammazero/feat/cid-to-piece-idx
Add indexer pubsub message authentication and rate limiting
2022-02-10 13:49:58 -08:00
Nikola Divic e5ac8662c8 test: chain gas-price cli command
Contains some funny mocking logic, because estimate gas price is called
multiple times (for various nblocks) and I wanted to make it as flexible
as possible.
2022-02-10 21:55:09 +01:00
gammazero c1b2080f4e spelling in comment 2022-02-10 11:25:30 -08:00
gammazero eedcf910eb change scoring based on review 2022-02-10 10:53:07 -08:00
gammazero b72cd90c19 Add indexer message scoring 2022-02-10 09:21:21 -08:00
Nikola Divic c0f89e5b2d test: chain export cli command
Modified ChainExportCmd to use io.WriterCloser instead of os.File so
it the file can be mocked in unit tests, without side effects to the FS.
2022-02-10 18:18:31 +01:00
gammazero 1e37185d74 Ignore, not regect, indexer messages from self. 2022-02-10 08:44:40 -08:00
gammazero 3f3d61b043 Service creation takes interface, not implementation 2022-02-10 08:41:18 -08:00
Steven Allen 7ef1513f9b ffi: update fvm 2022-02-10 07:56:27 -08:00
Nikola Divic b536dfa552 test: chain bisect cli command 2022-02-10 15:46:06 +01:00
Masih H. Derkani f0accce286 Upgrade index-provider and go-fil-markets to latest
See: https://github.com/filecoin-project/go-fil-markets/pull/680
2022-02-10 14:04:11 +00:00
Nikola Divic 6bc2ee2735 test: chain get cli command
Cover the essential function execution paths, no time for every -as-type
combination.
2022-02-10 14:49:38 +01:00
Marcel Telka 3c82ee49c0 Allow lotus-miner info to complete without admin permission 2022-02-10 12:45:57 +01:00
Łukasz Magiera e435b42426 Merge pull request #8053 from filecoin-project/jen/v15
chore: build: v1.14.0 -> master
2022-02-10 11:06:01 +00:00
gammazero 9481fa0a4b Use new indexer pubsub message encoding 2022-02-09 16:40:27 -08:00
Jennifer Wang 1d67b7ffb6 undo ffi 2022-02-09 19:31:50 -05:00
Jennifer Wang de1f4792cd Merge remote-tracking branch 'origin/master' into jen/v15 2022-02-09 19:27:34 -05:00
gammazero 681ce94a34 Correctly handle seqno check 2022-02-09 16:21:05 -08:00
Jiaying WangandŁukasz Magiera cd3772bf4f Update go.mod
Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
2022-02-09 19:08:00 -05:00
Nikola Divic b3f7db7a15 test: chain list (love) cli command
Some "funky" string matching in this one, but I think that's ok.

Chain is love. ❤️
2022-02-10 00:36:38 +01:00
Nikola Divic 4e37131602 test: chain inspect-usage cli command 2022-02-09 23:47:40 +01:00
Steven Allen 0d6eb7fefc ffi: update for fixed FVM lifetime management 2022-02-09 14:13:58 -08:00
Jennifer Wang 7b7733077a update the proofs in test plans` 2022-02-09 15:11:29 -05:00
Jiaying Wang 3b5f367822 Merge pull request #8042 from filecoin-project/jen/testplanproof
feat: build: update the snap proofs in testplans
2022-02-09 15:04:11 -05:00
Nikola Divic ae49729afb test: chain sethead cli command
Also moved the mock definition to a separate file (mocks_test.go)
because it's gonna be used in other test files, and it didn't make sense
for it to stay inside chain_test.go.
2022-02-09 20:46:51 +01:00
gammazero 3ff209d95d Add replay rejection 2022-02-09 11:06:56 -08:00
Nikola Divic 7d2810abbc test: don't parse err messages in messagepool_test
Per @vyzo's feedback, we shouldn't parse err messages but figure out
a way to do this smarter. I updated the code just check for error
existence and @brdji should figure out what to do next.
2022-02-09 19:54:45 +01:00
Jennifer Wang 8b68d37e84 remove change log 2022-02-09 13:33:47 -05:00
gammazero a62e027002 review changes 2022-02-09 10:29:49 -08:00
Łukasz Magiera e7038d286d Merge pull request #8018 from filecoin-project/feat/fru
FinalizeReplicaUpdate
2022-02-09 17:40:47 +00:00
Łukasz Magiera 44fd0e3349 Merge pull request #8008 from filecoin-project/feat/splitstore-sortless-compaction
splitstore sortless compaction
2022-02-09 17:17:57 +00:00
Łukasz Magiera 84d70caa87 sealing: Use ChainAt in handleUpdateActivating 2022-02-09 17:50:56 +01:00
vyzo e129ae3706 refactor nextBatch in badger markset 2022-02-09 18:34:50 +02:00
Nikola Divic e797ec138d test: chain getmessage cli command
I also added some helper functions for mocking in the types/mock pkg
2022-02-09 17:29:29 +01:00
Nikola Divic a923d7c884 test: chain stat-obj cli command
Test expected output with respect to the --base flag
2022-02-09 16:22:52 +01:00
Łukasz Magiera cce77196cd proofs v11.0.2 2022-02-09 16:22:35 +01:00
Nikola Divic c0f47e5eed test: chain delete-obj cli command
Contains two subtests, that check if the --really-do-it flag (force)
is respected, since removing wrong objects may lead to sync issues.
2022-02-09 15:56:13 +01:00
Nikola Divic 1cd590ace9 test: chain read-obj
Simple test that checks if this CLI method prints the IPLD node referenced
by the given CID encoded in hexadecimal.
2022-02-09 15:29:10 +01:00
Łukasz Magiera f33cf74d0f ffiwrapper: Use ClearCache for update cache cleanup 2022-02-09 14:54:36 +01:00
Łukasz Magiera 6cb411e5bb proofs master 2022-02-09 14:46:29 +01:00
Łukasz Magiera b1a74d71f1 Fix CheckProvable with updated sectors 2022-02-09 14:41:36 +01:00
Rob Quist 026c51033c perf: chain: Make drand logs in daemon less noisy (#7955)
Makes logs less noisy
2022-02-09 13:34:55 +01:00
Łukasz Magiera eff73c9728 Merge pull request #7941 from filecoin-project/chore/more_detailed_network-wide_shed_stats
chore: shed: storage stats 2.0
2022-02-09 12:03:49 +00:00
Łukasz Magiera 947000c94f fsm: Call ReleaseSectorKey after WinningPoSt lookback period 2022-02-09 12:41:39 +01:00
Łukasz Magiera 67e3f182f5 Use tagged specs-storage 2022-02-09 11:28:48 +01:00
Jennifer Wang 6ed97f0d04 Merge branch 'release/v1.14.0' into jen/v15 2022-02-09 03:17:38 -05:00
Steven Allen 743862857e ffi: update FFI for fvm changes 2022-02-08 20:57:20 -08:00
Steven Allen e8bdf8171b chore: cleanup fil vested calculation
1. Move lock, loading, etc into GetFilVested.
2. Call it directly when creating the FVM.
3. Detach GetFilLocked from state manager.

Really, this just makes it a bit easier to reason about this code.
2022-02-08 20:54:53 -08:00
Jiaying Wang eecb0831a8 Merge pull request #8049 from filecoin-project/asr/dep
deps: update go-paramfetch to v0.0.4
2022-02-08 21:06:32 -05:00
Jiaying Wang 7319420c8f Merge pull request #7905 from filecoin-project/feat/snap-deals-add-ons
StartEpochSealingBuffer triggers packing on timer
2022-02-08 21:06:11 -05:00
Steven Allen e8d771fcac pass only fil-vested into FVM 2022-02-08 15:26:20 -08:00
Steven Allen 32b3618c74 fvm: feed in correct "base" circulating supply 2022-02-08 13:20:03 -08:00
Łukasz Magiera 22e72e19b3 Merge pull request #8050 from filecoin-project/asr/dep-master
deps: update go-paramfetch to v0.0.4
2022-02-08 19:04:34 +00:00
zenground0 485568d460 make docsgen-cli 2022-02-08 13:52:24 -05:00
Aayush Rajasekaran 8d5be1c012 Merge pull request #8051 from filecoin-project/fix/8011-1.14.0
Stop recovery attempts after fault
2022-02-08 13:23:09 -05:00
zenground0 e32704e7f6 Update node doc gen 2022-02-08 12:56:32 -05:00
zenground0 03bc45a26a Update ci config to match auto gen 2022-02-08 12:47:23 -05:00
zenground0 1e524b7210 Review Response 2022-02-08 12:39:35 -05:00
zenground0 5a09b6496d Actually read config value 2022-02-08 12:39:35 -05:00
zenground0 2aa5911fb9 config gen 2022-02-08 12:39:35 -05:00
zenground0 a19c0a8255 Remove extra file 2022-02-08 12:39:35 -05:00
zenground0 4d8b912acc New config for turning off auto deal creation 2022-02-08 12:39:35 -05:00
zenground0 1af8987c79 StartEpochSealingBuffer triggers packing on timer 2022-02-08 12:39:35 -05:00
zenground0 6fdf76b5d2 Stop recovery attempts after fault
Check sector is active before PRU

Fix log

nit: edit a comment
2022-02-08 12:25:24 -05:00
Nikola Divic 78649d45b9 test: cli chain getblock command
Unit test for the cli `chain getblock` command.
Tests if output is JSON  in the expected format.
2022-02-08 18:24:45 +01:00
Aayush Rajasekaran 899ae8aa8e Merge pull request #8014 from filecoin-project/fix/8011
fix: sealing: Stop recovery attempts after fault
2022-02-08 12:06:55 -05:00
Aayush Rajasekaran b6c141c059 nit: edit a comment 2022-02-08 12:06:33 -05:00
Aayush Rajasekaran 316836f43b deps: update go-paramfetch to v0.0.4 2022-02-08 12:00:55 -05:00
Aayush Rajasekaran 9df19ae436 deps: update go-paramfetch to v0.0.4 2022-02-08 12:00:19 -05:00
Łukasz Magiera 6123339baf Make FinalizeReplicaUpdate actually do cleanup 2022-02-08 17:45:26 +01:00
Nikola Divic 35918cbd7e Merge branch 'master' of https://github.com/filecoin-project/lotus into cli-chain-tests 2022-02-08 17:25:45 +01:00
Łukasz Magiera c8e0341248 Fix missing FinalizeReplicaUpdate in tests 2022-02-08 17:22:41 +01:00
Łukasz Magiera 4ad97f6a36 make gen 2022-02-08 17:22:41 +01:00
Łukasz Magiera 09cfad9d71 Add FinalizeReplicaUpdate into some more places 2022-02-08 17:22:41 +01:00
Łukasz Magiera 7fa84518c8 itests: Print API info env vars in ThroughRPC tests 2022-02-08 17:22:41 +01:00
Łukasz Magiera 6675aec686 mod tidy 2022-02-08 17:22:41 +01:00
Łukasz Magiera e271bae5ec try ClearCache for update cache 2022-02-08 17:22:41 +01:00
Łukasz Magiera 142ba6660a wip FinalizeReplicaUpdate 2022-02-08 17:22:41 +01:00
Łukasz Magiera b27196b770 Merge pull request #8047 from filecoin-project/asr/params
chore: update build and deps
2022-02-08 16:22:12 +00:00
Nikola Divic 811bc62d65 test: cli test setup & test chain head
CLI actions lack unit tests. I decided to use the approach similar to
what I found in `send_test.go` using gomock, but I don't rely on custom
"service" implementations but mock the whole FullNode API.
This first commit validates the test setup by testing the simplest method
of the chain category, e.g. `chain head`.

This requires a minor refactor of the CLI action code:
- The constructor (`GetFullNodeAPI`) checks if there's an injected mock
API in the app Metadata and uses that in unit tests.
- Actions shouldn't use raw `fmt.*` but instead write to the `app.Writer`
so the CLI output is testable
2022-02-08 17:15:45 +01:00
Aayush Rajasekaran f476aa937e update to latest FFI 2022-02-08 10:45:58 -05:00
Jennifer Wang 932110fb93 update the param version 2022-02-08 10:44:36 -05:00
Jennifer Wang 1865e8f088 reset butterfly net 2022-02-08 10:43:51 -05:00
Jennifer Wang fdae1face5 Set Calib OhSnap upgrade epoch 2022-02-08 10:43:43 -05:00
Aayush Rajasekaran ad39d8707d build: add empty sector update params 2022-02-08 10:41:18 -05:00
Masih H. Derkani cc61650f86 Upgrade to latest index-provider and set miner ID as extra gossip data
Upgrade to the latest `index-provider` which upgrades the go-legs
protocol to allow the inclusion of extra gossip data that may be used
for gossip validation purposes. In the case of lotus gossip message
validators the miner ID is used to verify the sender's peer ID on chain.

Relates to:
- https://github.com/filecoin-project/lotus/pull/8045
2022-02-08 14:32:03 +00:00
gammazero b2805823ce Pass to validator the interfaces needed to get miner info 2022-02-08 04:55:59 -08:00
gammazero 1dc6a2fea6 Add indexer pubsub message authentication and rate limiting 2022-02-08 02:53:25 -08:00
Łukasz Magiera b38adaa736 Merge pull request #8044 from filecoin-project/deps/update-libp2p
update libp2p to v0.18.0-rc4
2022-02-08 10:52:56 +00:00
vyzo 80e9f76261 update libp2p to v0.18.0-rc4 2022-02-08 11:51:14 +02:00
Aarsh Shah 399a1afd94 Merge remote-tracking branch 'origin/master' into feat/cid-to-piece-idx 2022-02-08 12:37:57 +04:00
vyzo 8ddf4766ea update README
Adds note about 3k IOPs requirement with badger markset, updates the memory requirement for
map to 48G based on observed behaviour of test nodes.
2022-02-08 10:10:51 +02:00
Jiaying Wang 171a0461b2 Merge pull request #8041 from filecoin-project/jen/v14rc6
build: release: v1.14.0-rc6
2022-02-08 02:24:14 -05:00
Jennifer Wang 73208b8081 update the proofs in test plans` 2022-02-08 02:10:09 -05:00
Jennifer Wang d6d2c2fc39 update changelog 2022-02-08 02:08:30 -05:00
Jennifer Wang b8f3d936c4 bump the version to v1.14.0-rc6 2022-02-08 01:53:15 -05:00
Jiaying Wang da31b61ba1 Merge pull request #8038 from filecoin-project/asr/soup-fix
Fix: soup: Downgrade datastore to 0.4.6
2022-02-08 00:45:11 -05:00
Jiaying Wang a3c9f5ed79 Merge pull request #8039 from filecoin-project/jen/rmpram
fix: params: remove experimental params that's not used for production mainnet
2022-02-08 00:31:02 -05:00
Jennifer Wang 8d4876d1ee remove unrelated parmas 2022-02-07 17:45:05 -05:00
Aayush 8bd848c8d7 Fix: lotus soup 2022-02-07 17:11:48 -05:00
Łukasz Magiera 966071d437 Merge pull request #8034 from filecoin-project/feat/splitstore-default-markset-badger
splitstore: set badger as the default default markset type
2022-02-07 19:27:13 +00:00
Steven Allen 279cdd0760 fvm: fix implicit messages and message inclusion gas charging 2022-02-07 10:33:57 -08:00
zenground0 1ab2744c84 Fix log 2022-02-07 09:15:23 -05:00
zenground0 47ffceef0d Check sector is active before PRU 2022-02-07 07:41:48 -05:00
vyzo 0ad1f0e233 moar make gen 2022-02-06 12:48:49 +02:00
vyzo 1221c0ba3f make gen 2022-02-06 12:28:21 +02:00
vyzo d45e2074a6 update README for map as the default 2022-02-06 11:25:27 +02:00
vyzo 03352ea863 make badger the default splitstore markset type 2022-02-06 11:21:16 +02:00
vyzo 713edd565c fix lint 2022-02-05 21:30:53 +02:00
vyzo a32b7a32f3 directly mark objects in cold object reification 2022-02-05 20:00:15 +02:00
Jiaying Wang f51d8323c0 Merge pull request #8032 from filecoin-project/jen/v14rc5
[WIP] v1.14.0-rc6
2022-02-04 16:36:48 -05:00
Travis Person 9b68174231 reset of the butterfly network 2022-02-04 21:31:09 +00:00
Steven Allen 04092f3e6b update ffi 2022-02-04 12:46:15 -08:00
Steven Allen fc74a6c8ca update fvm/ffi bindings 2022-02-04 12:46:15 -08:00
Aayush Rajasekaran 2a669b95fb :Hook up the FVM 2022-02-04 12:46:15 -08:00
Jennifer Wang 9117b89b83 update the calib upgrade epoch 2022-02-04 15:37:07 -05:00
vyzo 9d92b6eb92 correctly wrap hotview in the context for compute_state 2022-02-04 16:57:08 +02:00
vyzo 73c741f20c reify cold objects on block validation/application 2022-02-04 16:19:28 +02:00
vyzo 929a05e898 add reification test 2022-02-04 16:16:34 +02:00
vyzo 268366e446 cold object reification context option 2022-02-04 16:07:58 +02:00
vyzo 4cddfd1074 background cold object reification 2022-02-04 14:29:50 +02:00
Aarsh Shah eb8296120b changes to mesh creation code 2022-02-04 13:58:47 +04:00
Aarsh Shah daac7f2988 fix lint 2022-02-04 13:55:26 +04:00
Aarsh Shah ca46a79144 protect full node connection 2022-02-04 13:04:07 +04:00
Aarsh Shah e155eb9fa3 Merge pull request #8016 from filecoin-project/nonsense/add-fullnode-api
add indexProvider host to markets
2022-02-04 12:56:36 +04:00
Aarsh Shah 4691b2b809 changes to the indexer message relay PR 2022-02-04 12:15:01 +04:00
Aarsh Shah 3ecf478ff0 Merge pull request #8026 from gammazero/feat/cid-to-piece-idx
Lotus chain nodes relay indexer pubsub messages
2022-02-04 12:05:46 +04:00
gammazero c084130d3e Lotus chain nodes relay indexer pubsub messages
Content providers announce the availability of indexer data using gossip pubsub.  The content providers are not connected directly to indexers, so the pubsub messages are relayed to indexers via chain nodes. This PR makes chain nodes relay gossip pubsub messages, on the /indexer/ingest/<netname> topic.
2022-02-03 14:56:21 -08:00
Jiaying Wang f4af6b670c Merge pull request #8021 from filecoin-project/willscott/net-protect-api
add net protect api methods
2022-02-03 17:54:33 -05:00
Jiaying Wang d2d8c06f52 Merge pull request #8025 from filecoin-project/jen/butterfly
chore: butterfly: reset SnapNet
2022-02-03 14:55:03 -05:00
Jennifer Wang c65142782f reset butterfly net 2022-02-03 14:54:25 -05:00
Jiaying Wang 266b3750c9 Merge pull request #8024 from filecoin-project/fix/ctxci
fix: test: remove unneeded ctx
2022-02-03 14:47:40 -05:00
Jennifer Wang 3233755282 remove ctx 2022-02-03 14:40:37 -05:00
Jiaying Wang b1d9fd3b70 Merge pull request #8023 from filecoin-project/jen/calibupgrade
Set Calib OhSnap upgrade epoch
2022-02-03 14:37:53 -05:00
Jennifer Wang e23768fa58 Set Calib OhSnap upgrade epoch 2022-02-03 14:26:59 -05:00
Jiaying Wang 533e76ff2e Merge pull request #8020 from filecoin-project/jen/finalproof
dep: proof: rust proof v11.0.1
2022-02-03 14:21:43 -05:00
Jennifer Wang a30493446e update the param version 2022-02-03 13:49:22 -05:00
Łukasz Magiera d9c763437e Merge pull request #8022 from filecoin-project/deps/update-libp2p
update go-libp2p to v0.18.0-rc3
2022-02-03 18:42:04 +00:00
vyzo e78c4ab9b3 update go-libp2p to v0.18.0-rc3 2022-02-03 19:32:30 +02:00
Will Scott 7247f8e41f add net protect api methods
fix #8015
2022-02-03 17:24:49 +01:00
Jennifer Wang 33b53c4a0d update to ffi v11.0.1 2022-02-03 11:15:47 -05:00
Jennifer Wang ac5cbe5a82 update to the final proof for snap
source: https://github.com/filecoin-project/rust-fil-proofs/blob/master/parameters.json
2022-02-03 11:15:40 -05:00
Anton Evangelatov b6b5046cce upgrade go-fil-markets 2022-02-03 16:26:04 +01:00
Anton Evangelatov dde2ab59ae fixup 2022-02-03 15:53:46 +01:00
Anton Evangelatov bb6235733d go mod tidy 2022-02-03 15:48:05 +01:00
Anton Evangelatov 595ad44ee7 refactor indexprovider libp2p host connection to fullnode with meshcreator 2022-02-03 15:44:18 +01:00
Anton Evangelatov 20fc5ffa38 fixing tests 2022-02-03 14:43:20 +01:00
Masih H. Derkani 6ef0c382c3 Fix typos in default miner config 2022-02-03 13:24:46 +00:00
Masih H. Derkani 575e6add43 Rename IndexerProvider to IndexProvider and add more docs
Rename the config section corresponding to indexing to `IndexProvider`
for better readability.

Update existing docs for better clarity and add docs for config
parameters embedded from `index-provider` `Ingest` config library.
2022-02-03 13:10:47 +00:00
Masih H. Derkani 235377585d Clarify the purpose of MaxSimultaneousTransfers config
Clarify the documentation of `MaxSimultaneousTransfers` to state that
the "transfer" refers to multihash syncing only and not the data itself.
2022-02-03 11:51:01 +00:00
Łukasz Magiera b74e085272 don't sort 2022-02-02 19:08:21 +00:00
Darko Brdareski 008fbbd652 Add unit and integration tests for mempool 2022-02-02 17:08:50 +01:00
Anton Evangelatov c3d41d4e17 upgrade go-fil-markets 2022-02-02 16:14:44 +01:00
Anton Evangelatov faa3a79a5f use NetAddrListener iface 2022-02-02 16:01:19 +01:00
Anton Evangelatov 03dd33dbbe upgrade go-fil-markets 2022-02-02 14:07:41 +01:00
vyzo 049b48928f add note about compaction algorithm changes in README 2022-02-02 14:39:21 +02:00
vyzo 75ad0c3c2d badger markset option tweaks 2022-02-02 14:34:30 +02:00
Anton Evangelatov 79403f169e fix autogenerated docs 2022-02-02 13:18:53 +01:00
Anton Evangelatov 2790cf35af change fullnodeApi to listen addrs 2022-02-02 13:06:53 +01:00
Anton Evangelatov f9b63c5f8c add idxProvHost to StorageProvider 2022-02-02 13:03:41 +01:00
Anton Evangelatov db5e4da268 add fullnodeApi to StorageProvider 2022-02-02 13:03:41 +01:00
vyzo c1d8368fdc share a concurrent visitor between workers in markLiveRefs 2022-02-01 21:40:09 +02:00
vyzo 4b4104e400 fix comment 2022-02-01 12:10:30 +02:00
Masih H. Derkani ad348c8e2f Upgrade to the latest index provider
Upgrade to the latest index provider which rolls out a more compact ad
signature mechanism along with dependency updates.
2022-02-01 09:53:57 +00:00
vyzo b13aa8f172 unblock waitForSync on close 2022-02-01 11:30:21 +02:00
vyzo 9c92d77b64 improve robustness of waitForSync 2022-02-01 11:25:07 +02:00
vyzo cd95892bf0 fix test 2022-02-01 11:13:01 +02:00
vyzo 7b4ab2077b wait for sync in a non racey way 2022-02-01 11:10:51 +02:00
vyzo 578b5691bc check for closing after the sync wait 2022-02-01 10:59:08 +02:00
vyzo 6353fa72d8 decouple SyncGapTime from wait time 2022-02-01 10:55:15 +02:00
vyzo fd07ca87ce wait for the sync gap time befor starting the purge 2022-02-01 10:46:42 +02:00
vyzo 11ae85645b optimize single object marking in markLiveRefs 2022-02-01 09:13:21 +02:00
vyzo 3aabb0314a synchronously mark live refs on put/putmany 2022-02-01 09:07:14 +02:00
zenground0 13ccb8cbfe Stop recovery attempts after fault 2022-02-01 11:39:42 +05:30
Łukasz Magiera efdb854a7c fix some races 2022-01-31 20:53:25 +00:00
Łukasz Magiera 98f4d37f1a Merge remote-tracking branch 'origin/master' into feat/post-worker 2022-01-31 19:50:52 +00:00
vyzo 37673c6de6 downgrade marking log to debug 2022-01-31 21:44:10 +02:00
vyzo 7896af731f use walkObjectIncomplete for marking live refs 2022-01-31 21:41:42 +02:00
vyzo 877dfbe992 hold the lock in the second protect call 2022-01-31 19:21:03 +02:00
vyzo 5b9ea1b4e0 avoid races in beginCriticalSection 2022-01-31 18:48:53 +02:00
vyzo 710fda49f0 fix putmany marking 2022-01-31 17:35:30 +02:00
vyzo 2b14bda6b8 recursively mark puts during the critical section 2022-01-31 17:26:08 +02:00
vyzo 1abfc5b1cf fix comment 2022-01-31 15:00:03 +02:00
vyzo c9bd5ec452 mark tipset references to protect them during critical section 2022-01-31 14:54:23 +02:00
Łukasz Magiera 51643caf60 Merge pull request #7835 from filecoin-project/bloxico/system-test-matrix
misc: api: Annotate lotus tests according to listed behaviors
2022-01-31 12:23:09 +01:00
vyzo ee63be26a1 fix race in protectView 2022-01-31 12:40:26 +02:00
vyzo 1900c907fd account for missing refs in the markset in Has 2022-01-31 09:44:51 +02:00
vyzo a9d4495d83 use both hot and cold when doing fetches for markset positive objects 2022-01-30 22:47:20 +02:00
vyzo 7b8447a95a reinstante waitForMissingRefs 2022-01-30 19:00:52 +02:00
vyzo 7931f1f8f9 fix lint 2022-01-30 15:43:52 +02:00
vyzo 20b75022aa fix mockStore for splitstore tests 2022-01-30 15:33:30 +02:00
vyzo dbc8903bac sortless compaction 2022-01-30 15:33:15 +02:00
vyzo a4f720d866 coldset test 2022-01-30 15:11:25 +02:00
vyzo 4b8369c071 fix buffered reads 2022-01-30 15:11:18 +02:00
vyzo 72333147d3 prettier checkpoint close 2022-01-30 15:00:03 +02:00
vyzo 64cda4aeda on disk coldsets 2022-01-30 14:19:05 +02:00
vyzo 6ede77b254 checkpoint test 2022-01-30 14:10:11 +02:00
vyzo c94eee5fc3 on disk checkpoints 2022-01-30 12:47:30 +02:00
vyzo 322b85898f make markSets synchronous in critical section 2022-01-30 12:10:08 +02:00
vyzo cf09dd044a moar markset tests 2022-01-30 11:45:12 +02:00
vyzo a4c1a34163 check for existence of badger db in recover 2022-01-30 11:44:27 +02:00
vyzo d140909562 add MarkMany to MarkSet interface 2022-01-30 11:43:45 +02:00
vyzo f9fd47e7d0 use temporary dir for splitstore test path 2022-01-29 13:11:58 +02:00
vyzo 67fbf9eb00 improve peristence test 2022-01-28 15:55:34 +02:00
vyzo 730aceac6d immediately flush pending writes when entering critical section 2022-01-28 15:55:10 +02:00
vyzo 1bf396f9af add test for markset persistence 2022-01-28 15:49:41 +02:00
vyzo 45c2f34295 refactor marksets for critical section on-disk persistence 2022-01-28 15:41:33 +02:00
vyzo ff10e0eaf1 Merge pull request #7999 from filecoin-project/feat/splistore-refactors
some basic splitstore refactors
2022-01-28 13:55:16 +02:00
Aayush 40485eb88a Lotus release v1.14.0-rc5 2022-01-27 15:36:25 -05:00
Aayush 37a345b39d Update FFI 2022-01-27 15:30:01 -05:00
Darko Brdareski 6b8f526df3 Fix merge 2022-01-27 11:06:04 +01:00
Darko Brdareski e51ce5c508 Merge remote-tracking branch 'upstream/master' into bloxico/system-test-matrix 2022-01-27 10:57:56 +01:00
Darko Brdareski 8c41e17c93 Fix typo in client_test annotations 2022-01-27 10:56:33 +01:00
Masih H. Derkani 5d72ebe0cc Upgrade index-provider and update topic name
Update the topic name to be consistent with default
configured in storetheindex.

Upgrade to the latest `index-provider`.
2022-01-27 09:48:10 +00:00
vyzo f07ce297f6 optimize slice allocations in walk 2022-01-26 21:55:24 +02:00
vyzo a87239e802 avoid extraneous assignment 2022-01-26 21:48:03 +02:00
Łukasz Magiera 3e6c482229 Merge pull request #8005 from filecoin-project/feat/mpool-cache-statenonces
feat: mpool: Cache state nonces
2022-01-26 16:22:12 +01:00
Łukasz Magiera 176ecd4c3b mpool: Cache state nonces 2022-01-26 15:39:58 +01:00
Aarsh Shah 211ad166af update markets deps 2022-01-26 15:53:27 +04:00
vyzo fe47d6a1a4 fix check and warmup for parallel walk 2022-01-26 09:01:51 +02:00
Aarsh Shah 4dd93e5bbb update deps 2022-01-26 10:58:44 +04:00
vyzo 10f2445a99 use minimum of 2 workers 2022-01-25 21:37:48 +02:00
Aayush 6cc9eecc85 Lotus release v1.14.0-rc4 2022-01-25 13:28:03 -05:00
Aayush 817c155287 chore: deps: update to latest proofs 2022-01-25 13:23:00 -05:00
Aayush Rajasekaran 6e44de1e10 Update params_2k.go 2022-01-25 13:04:22 -05:00
Aayush Rajasekaran a6460be37b remove a log 2022-01-25 13:02:45 -05:00
Aayush 6b7b488e00 Lotus release v1.14.0-rc3 2022-01-25 13:02:08 -05:00
Aayush e7123d1a8e fix: sealer: correctly pipe through errors for SectorAbortUpgrade 2022-01-25 13:02:00 -05:00
Aayush 50aba9a8e6 fix: sealer: don't replica update sectors unless they have deals in them 2022-01-25 13:01:56 -05:00
Aayush 1b18236f91 feat: sealer: allow users to abort in-flight snap upgrades 2022-01-25 13:01:51 -05:00
Aayush e17ae2eaf4 fix: sealer: manager should lock Unsealed for ReplicaUpdate 2022-01-25 13:01:37 -05:00
Aayush 6d567b36e3 Fix: sealer: ReplicaUpdate should fetch the correct files 2022-01-25 13:01:27 -05:00
Aayush Rajasekaran 7b7ab016db create replica update paths in acquireSectors 2022-01-25 13:01:18 -05:00
Aayush Rajasekaran 0c9c94bad1 fix: checkReplica incorrectly returns ErrBadPR 2022-01-25 13:01:12 -05:00
Aayush Rajasekaran a3c5fadcc0 feat: sealing: Add ReplicaUpdate work to Resource table 2022-01-25 13:01:05 -05:00
Aayush Rajasekaran f1b24598f5 Merge pull request #7998 from filecoin-project/arajasek-patch-3
chore: sealer: quieten a log
2022-01-25 12:56:30 -05:00
Aayush Rajasekaran 2d0929e305 remove a log 2022-01-25 12:55:56 -05:00
vyzo 8e01e73de4 dynamically compute number of workers for parallel chain walk 2022-01-25 19:47:58 +02:00
vyzo 7c8edf5632 parallelize walkChain 2022-01-25 17:29:02 +02:00
vyzo 25284b5325 refactor: eliminate distinction between markset and markset visitors 2022-01-25 16:31:45 +02:00
Łukasz Magiera 06d2ac65b5 Merge pull request #7995 from filecoin-project/arajasek-patch-2
chore: build: make the OhSnap epoch configurable by an envvar for devnets
2022-01-25 10:51:26 +01:00
Łukasz Magiera e3888b38bb Merge pull request #7993 from filecoin-project/arajasek-patch-1
chore: chain: fix log
2022-01-25 10:50:47 +01:00
Masih H. Derkani 5da2995bcd Upgrade to index-provider v0.2.3
Upgrade index provider to latest so that on engine restart the head
advertisement is published.
2022-01-25 09:37:44 +00:00
Aayush Rajasekaran 92e6f29cc8 chore: sealer: quieten a log 2022-01-24 18:28:52 -05:00
raulk a2468656e4 Merge pull request #7996 from filecoin-project/raulk/tvx-network-version
tvx: supply network version when extracting messages.
2022-01-24 20:50:51 +00:00
Aayush Rajasekaran 0358ad83cb Update params_2k.go 2022-01-24 15:44:20 -05:00
Raúl Kripalani 3aab77af8d tvx: add missing network upgrade names. 2022-01-24 20:13:04 +00:00
Raúl Kripalani 85447abe7f tvx: supply network version when extracting messages. 2022-01-24 20:06:07 +00:00
Aayush Rajasekaran 71c6d05902 chore: chain: fix log 2022-01-24 11:18:01 -05:00
Aarsh Shah 8d062bc880 update index provider 2022-01-24 14:26:17 +04:00
Aarsh Shah 9e2d46b33f Merge remote-tracking branch 'origin/master' into feat/cid-to-piece-idx 2022-01-23 10:32:54 +04:00
Łukasz Magiera 6080431383 Merge pull request #7986 from filecoin-project/asr/more-fixes-master
fix: sealer: manager should lock Unsealed for ReplicaUpdate
2022-01-21 17:38:23 +01:00
Aayush 5cafdc2f29 fix: sealer: manager should lock Unsealed for ReplicaUpdate 2022-01-21 11:12:12 -05:00
Aayush Rajasekaran ff845aa793 Merge pull request #7977 from filecoin-project/chore/sealtasks-comment
chore: remove inaccurate comment in sealtasks
2022-01-21 10:53:04 -05:00
Łukasz Magiera 55c9271695 post workers: Test skips 2022-01-21 13:33:47 +01:00
Łukasz Magiera f148397e1b post workers: Fix race in setting vproofs 2022-01-21 12:31:24 +01:00
Łukasz Magiera 82c9e72aab post workers: Fix skipped handling 2022-01-21 10:39:14 +01:00
Łukasz Magiera cdeac2bca0 Merge pull request #7984 from filecoin-project/deps/update-libp2p
update go-libp2p to v0.18.0-rc2
2022-01-21 10:11:27 +01:00
Łukasz Magiera 4682e72cf4 Address review 2022-01-21 10:11:04 +01:00
Łukasz MagieraandAayush Rajasekaran 1e5e69ec9d Typos
Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
2022-01-21 10:02:00 +01:00
vyzo 6e5f521463 update go-libp2p to v0.18.0-rc2 2022-01-21 10:45:45 +02:00
Aayush Rajasekaran abdad1f6d3 Merge pull request #7983 from filecoin-project/asr/snap-paths-master
Fix: sealer: ReplicaUpdate should fetch the correct files
2022-01-20 15:21:18 -05:00
Aayush 752f4a3d67 Fix: sealer: ReplicaUpdate should fetch the correct files 2022-01-20 15:06:53 -05:00
Łukasz Magiera 550e2743d7 paych: Don't return settling/collected chennals from OutboundActiveByFromTo 2022-01-20 18:24:01 +01:00
Łukasz Magiera 8f9e730ad6 paych: Better off-chain errors 2022-01-20 18:19:27 +01:00
Łukasz Magiera 4235a97cf4 retrieval: OffChainRetrieval config 2022-01-20 18:19:27 +01:00
Łukasz Magiera 8b19b84140 paych: option to force off-chain get 2022-01-20 18:19:26 +01:00
Łukasz Magiera 5b585c0285 paych: reset fundsReqQueue correctly 2022-01-20 18:17:19 +01:00
Łukasz Magiera b0e7bc15c2 paych: Cleanup available fund logic 2022-01-20 18:17:19 +01:00
Łukasz Magiera 533349cc0d paych: Fix cli tests 2022-01-20 18:17:18 +01:00
Łukasz Magiera eab8fecd26 gen stuff 2022-01-20 18:17:17 +01:00
Łukasz Magiera 1f2621b574 Make retrieval work with reused channels 2022-01-20 18:16:00 +01:00
Łukasz Magiera ff8b95df93 paych: Reserve flag for add-funds cli 2022-01-20 18:16:00 +01:00
Łukasz Magiera 8f6f21c94c paych: Print available amounts in paych status 2022-01-20 18:16:00 +01:00
Łukasz Magiera 7a938b2dea paych: Output FIL in cli 2022-01-20 18:16:00 +01:00
Łukasz Magiera 2e76375e8a Fix paych itests 2022-01-20 18:16:00 +01:00
Łukasz Magiera 9715113898 paych: Test pre-funding 2022-01-20 18:15:59 +01:00
Łukasz Magiera 8e46b9ea5d paych: API to pre-fund channels 2022-01-20 18:15:46 +01:00
Łukasz Magiera 33dfcf2663 stores: Fix single post proof reading with updated sectors 2022-01-20 15:27:42 +01:00
Aarsh Shah 7508d96327 fix lint 2022-01-20 16:47:15 +04:00
Aarsh Shah b8bf2af3e3 upgrade on master 2022-01-20 16:34:13 +04:00
Aarsh Shah 9ee940098d Merge remote-tracking branch 'origin/master' into feat/cid-to-piece-idx 2022-01-20 16:21:48 +04:00
Łukasz Magiera e476cf7968 Merge remote-tracking branch 'origin/master' into feat/post-worker 2022-01-20 13:15:48 +01:00
Łukasz Magiera c315111bc7 Merge pull request #7969 from filecoin-project/feat/libp2p18
libp2p v0.18.0-rc1 and initial resource manager integration
2022-01-20 12:59:39 +01:00
Dirk McCormick 8a47a71772 feat: update to go-fil-markets v1.19.0 2022-01-20 11:46:17 +01:00
Łukasz Magiera b115e2879a don't defer in a loop 2022-01-20 11:19:57 +01:00
vyzo 73ec10a49e close the rcmgr on shutdown 2022-01-20 11:47:39 +02:00
vyzo 325a4c0e5b fix lint 2022-01-20 11:46:39 +02:00
vyzo b360c9403f make gen and friends 2022-01-20 11:44:01 +02:00
vyzo ca4ee1e8cf fix issues with fil-markets/data-transfer updates 2022-01-20 11:38:37 +02:00
vyzo 2e5474e864 update go-fil-markets@v0.19.0-rc1 2022-01-20 11:37:08 +02:00
vyzo 19c8ea3288 add description for net stat and limit commands 2022-01-20 11:36:11 +02:00
vyzo 6260271b78 go mod: update go-libp2p-resource-manager@v0.1.2 2022-01-20 11:36:11 +02:00
vyzo 83427c478f go mod: update go-yamux@v3.0.2 2022-01-20 11:36:11 +02:00
vyzo 0870f48b5c fix mocknet.New invocation 2022-01-20 11:36:11 +02:00
vyzo c3fb68545a fix mocknet.New invocation 2022-01-20 11:36:11 +02:00
vyzo aa599bfaf9 go mod: update go-libp2p-pubsub 2022-01-20 11:36:11 +02:00
vyzo 62c0f35b5a go mod: go-libp2p-resource-manager@v0.1.1 2022-01-20 11:36:11 +02:00
vyzo 0de1566eaf add net stat and limit cli 2022-01-20 11:36:11 +02:00
vyzo 39bf59d372 add examples to docgen 2022-01-20 11:36:11 +02:00
vyzo 554848fe6b add resource manager Net(Set)Limit api 2022-01-20 11:36:11 +02:00
vyzo d05d5bcb70 add resource manager NetStat api 2022-01-20 11:36:11 +02:00
vyzo 8d3f98fe38 instantiate resource manager in DI 2022-01-20 11:36:11 +02:00
vyzo 826cdb2186 use the libp2p connmgr 2022-01-20 11:36:11 +02:00
vyzo c394fbdfc3 go mod: go-libp2p-resource-manager 2022-01-20 11:36:11 +02:00
vyzo 2fb5837a55 go mod: go-libp2p@v0.18.0-rc1 2022-01-20 11:36:11 +02:00
Cory Schwartz 8cbf1a3e1b undo tmp edits 2022-01-19 12:30:36 -08:00
Łukasz Magiera 04ce49130a Merge pull request #7979 from filecoin-project/asr/cherry-picks
chore: merge release/v1.14.0 PRs into master
2022-01-19 18:17:21 +01:00
Aayush Rajasekaran 3ff23ecbfa :fix: checkReplica incorrectly returns ErrBadPR 2022-01-19 12:00:27 -05:00
Aayush Rajasekaran ab8bf393c2 create replica update paths in acquireSectors 2022-01-19 11:41:38 -05:00
Aayush Rajasekaran d0390181ec feat: sealing: Add ReplicaUpdate work to Resource table 2022-01-19 11:41:32 -05:00
Łukasz Magiera 2f5c036faa Merge pull request #7918 from filecoin-project/jennijuju-patch-1
chore: update PR template
2022-01-19 10:48:24 +01:00
Łukasz Magiera c41ccb6c37 chore: remove inaccurate comment in sealtasks 2022-01-19 10:46:37 +01:00
Aarsh Shah 9e40e246ec deps update 2022-01-19 11:36:07 +04:00
Cory Schwartz afac38e492 spelling 2022-01-18 17:36:44 -08:00
Cory Schwartz 1cd93e63fd edge 2022-01-18 17:35:34 -08:00
Cory Schwartz a3458213f4 Merge branch 'master' into digitalocean-use-snap 2022-01-18 17:02:41 -08:00
Aayush Rajasekaran c0f29ea9c6 Merge pull request #7966 from filecoin-project/asr/compute-state-vm
Fix: chain: create a new VM for each epoch
2022-01-18 14:11:02 -05:00
Łukasz Magiera fa09b9afb1 post workers: Share resource accounting code 2022-01-18 16:02:37 +01:00
Łukasz Magiera 7dba12fc81 Merge pull request #7967 from filecoin-project/chore/mod-comments
chore: Cleanup go.mod
2022-01-18 15:18:19 +01:00
Łukasz Magiera 95442094df Merge pull request #7959 from filecoin-project/feat/update-data-transfer-graphsync
feat(deps): update markets stack
2022-01-18 15:08:59 +01:00
Dirk McCormick 1ce1dbbc50 feat: update go-fil-markets to tagged release 2022-01-18 14:29:59 +01:00
Łukasz Magiera 8ac20305df Fix double unlock in WorkerStats 2022-01-18 12:40:04 +01:00
Łukasz Magiera 98fed009d7 docsgen 2022-01-18 12:21:30 +01:00
Łukasz Magiera c79f2b9d38 post workers: Fix lint 2022-01-18 12:11:59 +01:00
Łukasz Magiera b38141601c Untangle ffi from api 2022-01-18 11:57:04 +01:00
Łukasz Magiera 03fa955e9e Cleanup imports 2022-01-18 11:37:24 +01:00
Łukasz Magiera f41dd4feb6 gen 2022-01-18 11:28:55 +01:00
Łukasz Magiera f2496d87c9 post workers: Snapdeals updates 2022-01-18 11:25:04 +01:00
Łukasz Magiera 0c062f9c08 Merge remote-tracking branch 'origin/master' into feat/post-worker 2022-01-18 10:49:42 +01:00
Łukasz Magiera d677826312 Cleanup go.mod 2022-01-18 10:24:43 +01:00
Aayush 9ec1abf880 :Fix: create a new VM for each epoch 2022-01-17 16:28:22 -05:00
hannahhoward 92d56d82f4 feat(deps): update markets stack
update go-fil-markets, go-data-transfer 1.13.0, go-graphsync 0.12.0
2022-01-14 17:21:04 -08:00
Jennifer Wang ca444bb71d revert #7646 from v1.14.0 - this is not concensus breaking change and needs more testing before landing 2022-01-14 19:00:33 -05:00
Jennifer Wang 5f1ae545e3 add 7939 to change log 2022-01-14 18:57:57 -05:00
Aayush Rajasekaran 99d0d5019b Add missing locks to Get() 2022-01-14 18:57:57 -05:00
Aayush Rajasekaran be09474615 Apply suggestions from code review 2022-01-14 18:57:57 -05:00
Jennifer Wang a67f97e8a2 address reviews 2022-01-14 18:57:57 -05:00
Jennifer Wang 9453734434 fix the statsboard link 2022-01-14 18:57:57 -05:00
Jennifer Wang 2fde9e63cd update change log 2022-01-14 18:57:57 -05:00
Aayush Rajasekaran f628e121df Merge pull request #7957 from filecoin-project/asr/conn-mgr-revert
Use go-libp2p-connmgr v0.3.1
2022-01-14 17:57:51 -05:00
Aayush 2b29ceab83 Use go-libp2p-connmgr v0.3.1 2022-01-14 17:38:56 -05:00
Aayush Rajasekaran 51b4458d32 Resolve conflict 2022-01-14 17:18:47 -05:00
Steven Allen 9872ca7f12 correctness fixes for the autobatch blockstore
1. Simplify shutdown and make it idempotent by using a context.
2. Make sure `Flush` actually _fully_ flushes if the previous flush failed.
3. Don't clear the flush batch if flushing fails.
2022-01-14 17:17:51 -05:00
Aayush Rajasekaran 2871ed74d0 go mod tidy 2022-01-14 17:17:51 -05:00
Jiaying Wang 07e68aa064 update snap net upgrade epoch 2022-01-14 17:17:51 -05:00
Jennifer Wang 1b264d5a53 update network version for test ground 2022-01-14 17:17:51 -05:00
Jennifer Wang 03cb555d1d Update the ntwk v15 name to OhSnap 2022-01-14 17:17:51 -05:00
Jennifer Wang e097578e85 add butterfly ohsnap epoch 2022-01-14 17:17:51 -05:00
Aayush Rajasekaran b3ab3ce170 Update butterflynet params 2022-01-14 17:17:49 -05:00
Aayush Rajasekaran 84e6ba5dff Update butterflynet params 2022-01-14 17:17:36 -05:00
Jennifer Wang b7ba08476c remove power change 2022-01-14 17:15:44 -05:00
Aayush Rajasekaran aad8aa0893 Appease the linter 2022-01-14 17:15:44 -05:00
Jennifer Wang 30013c1f06 fix lint 2022-01-14 17:15:44 -05:00
Jennifer Wang 6901e998e6 Check piece before PRU2 instead of PRU1 as PRU2 is the heavy computation part 2022-01-14 17:15:44 -05:00
Jennifer Wang 8939d5982f just use checkPiece 2022-01-14 17:15:44 -05:00
Jennifer Wang a20916f9af Add more deal expiration handling for snap deals 2022-01-14 17:15:44 -05:00
Aayush Rajasekaran 107f80274c Don't lock in Get 2022-01-14 17:15:44 -05:00
Aayush Rajasekaran 4ec8fbf1ff Address review part 2 2022-01-14 17:15:44 -05:00
Aayush Rajasekaran 5b38419c5f Address review 2022-01-14 17:15:44 -05:00
Aayush Rajasekaran dafd1f77fa Support faster Get, retry flushes on error 2022-01-14 17:15:44 -05:00
Aayush Rajasekaran ce6e328d52 Use channels to trigger flushes in a dedicated goroutine 2022-01-14 17:15:44 -05:00
Aayush Rajasekaran 2bc4b35f51 implement stubs 2022-01-14 17:15:44 -05:00
Aayush Rajasekaran 031b06be77 cache added cids 2022-01-14 17:15:43 -05:00
Aayush Rajasekaran b9474cf0a2 Implement an autobatcher 2022-01-14 17:15:20 -05:00
Aayush Rajasekaran 074a4cc3e4 Update to actors v7.0.0-rc1 2022-01-14 17:15:20 -05:00
Aayush Rajasekaran 790ba155b8 Fast migration for v15 2022-01-14 17:15:15 -05:00
vyzo 0ca95a5ea0 satisfy the spellchecker that masquarades as a linter 2022-01-14 17:14:33 -05:00
vyzo 7e43bfc109 hook the upgrade schedule to splitstore start 2022-01-14 17:14:32 -05:00
vyzo 6cfee12f31 add unit test for compaction supression 2022-01-14 17:14:32 -05:00
vyzo 6ac3d529ef add logic for supressing compaction near upgrade boundaries 2022-01-14 17:14:32 -05:00
Aayush Rajasekaran e4cb68e05d format 2022-01-14 17:14:32 -05:00
Jiaying Wang 0626330d44 Update default-lotus-miner-config.toml 2022-01-14 17:14:32 -05:00
Jennifer Wang 60cf2a71cf fix lint 2022-01-14 17:14:32 -05:00
Jennifer Wang 87babdf3e7 Disable mark-for-upgrade two days before the network v15 OhSnap upgrade to avoid unexpected edge cases that may cause deal/sector failure 2022-01-14 17:14:32 -05:00
Jennifer Wang ac3bea489b Integrate proof v11.0.0 2022-01-14 17:14:32 -05:00
Aayush Rajasekaran ca57546ef5 Remove unnecessary params from VerifyWinningPost 2022-01-14 17:14:32 -05:00
Łukasz Magiera 7bd9af7856 address review 2022-01-14 17:14:32 -05:00
zenground0 5b0a0baa9a Fix hande deal recover return value bug 2022-01-14 17:14:32 -05:00
zenground0 a9a523d8c0 Fix TooManyMarkedForUpgrade 2022-01-14 17:14:32 -05:00
zenground0 c6277922ac Deflake more practically 2022-01-14 17:14:32 -05:00
zenground0 a82ac00d9a Deflake snap deals integration test 2022-01-14 17:14:32 -05:00
zenground0 d6aa17e21f Snap Deals Integration
- FSM handles the actual cc upgrade process including error states
- PoSting (winning and window) works over upgraded and upgrading sectors
- Integration test and changes to itest framework to reduce flakes
- Update CLI to handle new upgrade
- Update dependencies
2022-01-14 17:14:32 -05:00
Jennifer Wang ba816a1c13 bump the version to v1.14.0-rc1 2022-01-14 17:14:32 -05:00
Aayush Rajasekaran ceb11bfe77 Update go-paramfetch 2022-01-14 17:14:32 -05:00
Jiaying Wang c99f8a17ac Update pull_request_template.md 2022-01-14 17:14:32 -05:00
Jiaying Wang 1e03fac105 Remove ticket number from the title
issue number in PR title is not that useful because reader cannot click it and need to mention the issue in the body for auto close either way.
2022-01-14 17:14:32 -05:00
Jakub Sztandera 0b105dad97 Add gas charge for VerifyReplicaUpdate
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2022-01-14 17:14:32 -05:00
Aayush Rajasekaran 832e204ec4 Fix circsuypply calc around null blocks 2022-01-14 17:14:32 -05:00
Aayush Rajasekaran bfbd01ab15 VM: Circ supply should be constant per epoch 2022-01-14 17:14:32 -05:00
Aayush Rajasekaran 58f63ca8a2 Add a log for when message selection fails 2022-01-14 17:14:32 -05:00
Aayush Rajasekaran 012efed117 Mempool: add selection tests 2022-01-14 17:14:32 -05:00
Aayush Rajasekaran 1f1e341c36 Mempool: Selection should respect CBOR limits 2022-01-14 17:14:32 -05:00
Aayush Rajasekaran 80c9c26560 Consensus: Safety check against unknown sig types 2022-01-14 17:14:32 -05:00
Aayush Rajasekaran 011ea43496 Mempool: Selection logic should respect block message limits 2022-01-14 17:14:32 -05:00
Aayush Rajasekaran 3a8ac6dffa Update FFI 2022-01-14 17:14:32 -05:00
zenground0 d1480c36c0 RemoveData and Decode
- Unsealing replica update with sector key works and tested
- Sector key generation added and tested
2022-01-14 17:14:32 -05:00
Jiaying Wang 5c9a10617b Create pull_request_template.md
This is the very first iteration of the lotus PR template. The goal of adding PR template is to standardize PR requests and encourage contributors to:
- come up with good PR descriptions to give code reviewers a clear overview of what's in the PR 
- have a clear PR title as lotus generates a change log based on it
- check that tests and documentation for the codes that changed are icnluded 

The PR type follows the https://www.conventionalcommits.org/en/v1.0.0-beta.2/.  The [contribution guideline](https://github.com/filecoin-project/lotus#contribute) should be updated with how to create a pr after the template is accepted.
2022-01-14 17:14:32 -05:00
Jennifer Wang a93d7499d9 docs gen 2022-01-14 17:14:32 -05:00
Jennifer Wang e24b454a1f Bump the master version to v1.13.3-dev 2022-01-14 17:14:32 -05:00
zenground0 4936b4ea44 Review Response 2022-01-14 17:14:32 -05:00
zenground0 c4069824f7 WIP 2022-01-14 17:14:32 -05:00
c r 7efaa708a6 reorder transfer checks so as to ensure sending more money than you have to yourself fails with an error (fixing issue 7596)
PR #7637, also adds tests to make sure behavior is correct across versions.
2022-01-14 17:14:32 -05:00
zenground0 93656e65f8 WIP sector storage and integration test 2022-01-14 17:14:32 -05:00
Aayush Rajasekaran 3a7c364562 Address review 2022-01-14 17:14:32 -05:00
Aayush Rajasekaran c0bb554d8d Update actors 2022-01-14 17:14:32 -05:00
Aayush Rajasekaran 073b7b4ff5 Update FFI 2022-01-14 17:14:32 -05:00
Aayush Rajasekaran 393d8541e2 Update deps 2022-01-14 17:14:32 -05:00
Aayush Rajasekaran 1ef780d96f Plug in the FFI call 2022-01-14 17:14:32 -05:00
Aayush Rajasekaran a8cb027c08 Integrate v7 actors 2022-01-14 17:14:32 -05:00
Łukasz Magiera 4a874eff70 post workers: Cleanup, tests 2022-01-14 14:17:52 +01:00
Peter Rabbitson e3c250f240 Force float in output to remain decimal 2022-01-14 13:17:45 +01:00
Cory Schwartz 899db1f7c3 fix template 2022-01-14 03:07:20 -08:00
Cory Schwartz d9562e2aee restore appiamge 2022-01-14 03:01:12 -08:00
Peter Rabbitson d568d6fabc As per Why&Aayush: slashing deals is not really a thing 2022-01-13 20:03:33 +01:00
c r da6752eccb feat: #7747 sealing: Adding conf variable for capping number of concurrent unsealing jobs (#7884)
* adding the new variables- now time for logic

* putting parameters into right placeS

* adding unsealing throttle

* fixing linter issues

* removing one last thing...
2022-01-13 12:26:13 -06:00
Peter Rabbitson 9a5b13b7c8 Storage stats 2.0 2022-01-13 17:21:13 +01:00
Aarsh Shah 8459d75597 update index provider config 2022-01-13 16:15:43 +04:00
Aarsh Shah b780a64ed9 send markets multiaddrs to the engine 2022-01-13 15:31:15 +04:00
Jiaying Wang 60fae3a59d Merge pull request #7922 from filecoin-project/build/15dev
build: release: bump master version to v1.15.0-dev
2022-01-12 20:11:02 -05:00
Jennifer Wang c1d04a9d13 bump master version to v1.15.0-dev 2022-01-12 19:28:08 -05:00
Aayush Rajasekaran 424c27bada Merge pull request #7932 from filecoin-project/ntwk-butterfly-snapnet
feat: build: butterfly SNAPNET
2022-01-12 19:24:31 -05:00
Aayush Rajasekaran 3c57b980e5 Merge pull request #7940 from filecoin-project/steb/buffered-blockstore-correctness
correctness fixes for the autobatch blockstore
2022-01-12 19:17:03 -05:00
Aayush Rajasekaran 52411b12e3 Resolve conflict 2022-01-12 19:15:56 -05:00
Aayush Rajasekaran 6f8d00310b Merge branch 'master' into ntwk-butterfly-snapnet 2022-01-12 19:12:02 -05:00
Aayush Rajasekaran f955084572 Merge pull request #7871 from filecoin-project/jen/7869
fix: #7869 sealing: Add more deal expiration checks during PRU pipeline
2022-01-12 18:50:50 -05:00
Aayush Rajasekaran d923620d5a go mod tidy 2022-01-12 18:49:24 -05:00
Steven Allen 2a862d497f correctness fixes for the autobatch blockstore
1. Simplify shutdown and make it idempotent by using a context.
2. Make sure `Flush` actually _fully_ flushes if the previous flush failed.
3. Don't clear the flush batch if flushing fails.
2022-01-12 15:19:44 -08:00
Aayush Rajasekaran bda4e5be95 Appease the linter 2022-01-12 18:10:07 -05:00
Aayush Rajasekaran ae12c70afe Merge pull request #7939 from filecoin-project/asr/migration-autobatch
fix: blockstore: Add missing locks to autobatch::Get()
2022-01-12 17:55:31 -05:00
Aayush Rajasekaran efe9ec4906 Add missing locks to Get() 2022-01-12 17:22:54 -05:00
Aayush Rajasekaran b161f56bd2 Merge pull request #7933 from filecoin-project/asr/migration-autobatch
feat: state: Fast migration for v15
2022-01-12 17:17:49 -05:00
Aayush Rajasekaran 3464dc2fdf Don't lock in Get 2022-01-12 16:04:47 -05:00
Aayush Rajasekaran 893998cb70 Address review part 2 2022-01-12 15:03:34 -05:00
Aayush Rajasekaran 083c5b003c Address review 2022-01-12 12:57:34 -05:00
Aarsh Shah 8c8652e7bb add a new cli 2022-01-12 18:06:48 +04:00
Aarsh Shah 051d993d62 update markets 2022-01-12 17:48:12 +04:00
Aarsh Shah 07c842d6e0 lotus soup green 2022-01-12 17:43:56 +04:00
Aarsh Shah b9d3585f4c get tests working 2022-01-12 16:55:45 +04:00
Aarsh Shah 05afaf6094 make gen 2022-01-12 16:03:39 +04:00
Aarsh Shah 3a52f05692 green ci 2022-01-12 15:53:15 +04:00
Aarsh Shah 64bf3fccd2 update index provider dep 2022-01-12 15:05:27 +04:00
Aarsh Shah dec79c70a1 fix compilation 2022-01-12 15:03:46 +04:00
Aarsh Shah 21a8f71859 compiles 2022-01-12 14:59:09 +04:00
Aarsh Shah edfc2c215c Merge remote-tracking branch 'origin/main' into feat/cid-to-piece-idx 2022-01-12 12:48:54 +04:00
Jiaying Wang 16d491a134 update snap net upgrade epoch 2022-01-11 21:41:58 -05:00
Aayush Rajasekaran 7559e4311e Support faster Get, retry flushes on error 2022-01-11 20:30:34 -05:00
Aayush Rajasekaran a41b4acec3 Use channels to trigger flushes in a dedicated goroutine 2022-01-11 19:44:56 -05:00
Jennifer Wang fd50cd128a fix lint 2022-01-11 18:34:26 -05:00
Jennifer Wang e99b98873c Check piece before PRU2 instead of PRU1 as PRU2 is the heavy computation part 2022-01-11 18:34:20 -05:00
Jennifer Wang 6b953a03d0 just use checkPiece 2022-01-11 18:34:15 -05:00
Jennifer Wang 37a3e610b7 Add more deal expiration handling for snap deals 2022-01-11 18:34:10 -05:00
Aayush Rajasekaran f87d8d0b7f Merge pull request #7900 from filecoin-project/7891
enhancement: #7891 sectors: disable existing existing cc upgrade path 2 days before the upgrade epoch
2022-01-11 18:12:16 -05:00
Jiaying Wang a95b77a940 Merge pull request #7931 from filecoin-project/jen/proof
feat: param: add temp snap params
2022-01-11 18:08:50 -05:00
Aayush Rajasekaran 5ff6148444 implement stubs 2022-01-11 18:03:37 -05:00
Jiaying Wang 0130b28879 Merge pull request #7923 from filecoin-project/jen/proofv11
chore: deps: Integrate proof v11.0.0
2022-01-11 17:49:43 -05:00
Jennifer Wang 4cdd830003 update network version for test ground 2022-01-11 17:46:49 -05:00
Jennifer Wang f1425dcb26 go mod tidy 2022-01-11 17:43:03 -05:00
Jennifer Wang cd8d3a0c88 Update the ntwk v15 name to OhSnap 2022-01-11 17:41:20 -05:00
Jennifer Wang 8729ee4fa2 add butterfly ohsnap epoch 2022-01-11 17:37:06 -05:00
Aayush Rajasekaran 544cfa63ab cache added cids 2022-01-11 17:22:36 -05:00
Jiaying Wang 0b9a2cc11c Merge branch 'master' into ntwk-butterfly-snapnet 2022-01-11 17:22:16 -05:00
Aayush Rajasekaran 25768a291e Implement an autobatcher 2022-01-11 17:20:10 -05:00
Aayush Rajasekaran 19bd9cf945 Update to actors v7.0.0-rc1 2022-01-11 17:20:08 -05:00
Aayush Rajasekaran 8aabe1b488 Fast migration for v15 2022-01-11 17:19:38 -05:00
Jiaying Wang 3a0f80da74 Merge pull request #7899 from filecoin-project/asr/butterfly
build: butterflynet: update genesis and bootstrappers
2022-01-11 17:06:14 -05:00
Jennifer Wang edd3486d2c add temp snap params 2022-01-11 17:01:15 -05:00
TheMenko 5911780735 remove test files since they have been split to other PR 2022-01-11 19:55:54 +01:00
Aayush Rajasekaran 1e24ef4d0d format 2022-01-11 12:50:34 -05:00
Aayush Rajasekaran 207d33eaba Merge pull request #7810 from filecoin-project/feat/snap-deals
Snap Deals Lotus Integration: FSM Posting and integration test
2022-01-11 12:46:55 -05:00
Aayush Rajasekaran d645c5fbab Remove unnecessary params from VerifyWinningPost 2022-01-11 12:06:39 -05:00
Łukasz Magiera 960759d22b address review 2022-01-11 17:31:27 +01:00
Jennifer Wang 5b7da270c9 Integrate proof v11.0.0 2022-01-10 23:45:04 -05:00
Jiaying Wang 58edb1b15d remove log change 2022-01-10 22:24:25 -05:00
Jiaying Wang 655051ef98 Update default-lotus-miner-config.toml 2022-01-10 22:23:55 -05:00
Jiaying Wang 93653d9a58 Merge branch 'feat/snap-deals' into 7891 2022-01-10 22:22:46 -05:00
TheMenko 492fb9d054 wallet basic tests with annotations for system test matrix 2022-01-11 02:16:53 +01:00
Aayush Rajasekaran 4e16d600b0 Merge pull request #7917 from filecoin-project/asr/params
chore: deps: Update go-paramfetch
2022-01-10 19:30:53 -05:00
Jiaying Wang fa8372a83b Update pull_request_template.md
- remove misc, can use chore instead
- add deps for area
2022-01-10 19:07:54 -05:00
Aayush Rajasekaran 9614f6db8d Update go-paramfetch 2022-01-10 19:03:26 -05:00
Łukasz Magiera e216aefd23 fix make gen 2022-01-10 18:24:00 +01:00
Łukasz Magiera cf7dd36829 Merge branch 'feat/decoupling-post-worker' of github.com:wusirdcenter/lotus into feat/decoupling-post-worker 2022-01-10 15:06:04 +01:00
Łukasz Magiera 3fb71cdfea Merge pull request #7897 from filecoin-project/feat/snap-gas
feat: #7880 gas: add gas charge for VerifyReplicaUpdate
2022-01-10 13:27:59 +01:00
Łukasz Magiera a01f5d4495 Merge pull request #7910 from filecoin-project/jen/releasetomaster
misc: build: v1.13.2 back to master
2022-01-10 13:26:25 +01:00
zenground0 d16c5d0e93 Fix hande deal recover return value bug 2022-01-10 15:47:20 +05:30
zenground0 825e2c9527 doscgen cli 2022-01-10 15:39:38 +05:30
zenground0 c309686679 Fix TooManyMarkedForUpgrade 2022-01-10 15:39:38 +05:30
zenground0 3dc3f55ecb Deflake more practically 2022-01-10 15:39:38 +05:30
zenground0 f59bfd65da Deflake snap deals integration test 2022-01-10 15:39:38 +05:30
zenground0 33f2d24f54 Snap Deals Integration
- FSM handles the actual cc upgrade process including error states
- PoSting (winning and window) works over upgraded and upgrading sectors
- Integration test and changes to itest framework to reduce flakes
- Update CLI to handle new upgrade
- Update dependencies
2022-01-10 15:39:38 +05:30
Jennifer Wang 03a4316dcd Merge branch 'releases' into jen/releasetomaster 2022-01-09 23:26:27 -05:00
Jiaying Wang f9db71ee12 Merge pull request #7908 from filecoin-project/release/v1.13.2
build: release: v1.13.2
2022-01-09 23:12:14 -05:00
Jiaying Wang 62a85e60a7 Merge pull request #7907 from filecoin-project/build/v1.13.2prep
build: release: v1.13.2 prep
2022-01-09 23:00:59 -05:00
Jiaying Wang 4cb5622d18 Merge pull request #7903 from filecoin-project/fix/conformance-bleeding-edge
FIX: #7904 CI: generated vectors from v7 for bleeding edge
2022-01-09 23:00:06 -05:00
Jiaying Wang 4abcdd80bf Merge pull request #7902 from filecoin-project/jennijuju-patch-1
misc: docs: remove issue number from the pr title
2022-01-09 22:49:58 -05:00
Jennifer Wang 6ce9f232dc update changelog 2022-01-09 22:47:41 -05:00
Jennifer Wang 20d1a5db70 bump the version to v1.13.2 2022-01-09 22:39:09 -05:00
Jennifer Wang d46ee7c89b add changelog 2022-01-09 22:32:59 -05:00
zenground0 d2abc409f9 Fix template 2022-01-09 21:20:05 -05:00
zenground0 5f9e7c4ff4 generated vectors from v7 for bleeding edge 2022-01-09 21:20:00 -05:00
zenground0 4963fe7809 Fix template 2022-01-09 09:41:53 +05:30
zenground0 a64cf77e84 generated vectors from v7 for bleeding edge 2022-01-09 09:33:07 +05:30
Jiaying Wang 57fa377730 Update pull_request_template.md 2022-01-07 19:02:51 -05:00
Jiaying Wang d4f46122f7 Remove ticket number from the title
issue number in PR title is not that useful because reader cannot click it and need to mention the issue in the body for auto close either way.
2022-01-07 19:01:32 -05:00
Jennifer Wang bf23e59900 fix lint 2022-01-07 18:24:57 -05:00
Jennifer Wang c578efaabd Disable mark-for-upgrade two days before the network v15 OhSnap upgrade to avoid unexpected edge cases that may cause deal/sector failure 2022-01-07 18:05:36 -05:00
Aayush Rajasekaran a98ca86a45 Update butterflynet params 2022-01-07 16:54:15 -05:00
zenground0 b26d952d09 Deflake more practically 2022-01-07 22:20:49 +05:30
Jakub Sztandera 736fb5c5b0 Add gas charge for VerifyReplicaUpdate
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2022-01-07 15:18:08 +01:00
Jennifer Wang a777cf7166 remove power change 2022-01-07 00:37:14 -05:00
Aayush Rajasekaran 6ff889c8d6 Merge pull request #7890 from filecoin-project/asr/circsupply-fix
Fix: state: circsuypply calc around null blocks
2022-01-06 15:48:09 -05:00
Jiaying Wang 3f9849a63b Merge pull request #7892 from filecoin-project/jen/rmapp100
build: release: v1.13.2-rc7 fix: remove app image from the bundle script
2022-01-05 19:42:50 -05:00
Jennifer Wang 09cd258780 lotus v1.13.2-rc7 2022-01-05 19:27:00 -05:00
Jennifer Wang 7d65a2664d remove from the bundlde 2022-01-05 19:27:00 -05:00
Jiaying Wang d29e3afc28 Merge pull request #7882 from filecoin-project/jen/rmapp
build: release: v1.13.2-rc6 fix: publish ci job
2022-01-05 18:35:20 -05:00
Aayush Rajasekaran 5ec5ebac31 Fix circsuypply calc around null blocks 2022-01-05 14:17:40 -05:00
mz-sirius 793b5c7cc3 fix ci err 2022-01-05 21:41:21 +08:00
zenground0 237d0bb1b0 Deflake snap deals integration test 2022-01-05 08:24:46 -05:00
zenground0 61e173215b Snap Deals Integration
- FSM handles the actual cc upgrade process including error states
- PoSting (winning and window) works over upgraded and upgrading sectors
- Integration test and changes to itest framework to reduce flakes
- Update CLI to handle new upgrade
- Update dependencies
2022-01-05 03:10:31 -05:00
Jennifer Wang ff949d84ad v1.13.2-rc6 prep 2022-01-04 17:58:18 -05:00
Jennifer Wang 6b0868089b stop publishing appimagine since its disabled by #7707 2022-01-04 17:57:57 -05:00
Łukasz Magiera 6f316cddbb Merge pull request #7881 from filecoin-project/raulk/fix/test-vector-runner
test vector runner fixes for v6 vectors
2022-01-04 22:46:10 +01:00
Jiaying Wang 2474c0b633 Merge pull request #7817 from filecoin-project/jen/things
build: release: v1.13.2-rc5
2022-01-04 16:33:13 -05:00
Raúl Kripalani 75d8c52004 tvx runner: exec: add support for multiple-level dirs. 2022-01-04 18:13:24 +00:00
mz-sirius 6867f017ec update ffi 2022-01-05 01:50:53 +08:00
mz-sirius 3fd55fa56b decoupling winningpost and windowpost from lotus-miner 2022-01-05 01:50:49 +08:00
Raúl Kripalani 572114b8ba Merge branch 'master' into raulk/fix/test-vector-runner 2022-01-04 17:34:16 +00:00
Raúl Kripalani 1215f26a84 tvx runner: improve error reporting. 2022-01-04 17:32:57 +00:00
Raúl Kripalani d4fa5a0f1d tvx runner: adjust gas pricing to cope with synthetic epochs. 2022-01-04 17:32:57 +00:00
Raúl Kripalani 2c3d0d826d tvx runner: use network version from variant. 2022-01-04 17:23:17 +00:00
Łukasz Magiera 100e198eb3 Merge pull request #7667 from filecoin-project/asr/shed-balances
Shed: Add a util to send a batch of messages
2022-01-04 17:15:13 +01:00
Łukasz Magiera 63d7ca328f Merge branch 'master' into asr/shed-balances 2022-01-04 16:52:37 +01:00
Łukasz Magiera b72b12a960 Merge pull request #7802 from filecoin-project/snapcraft-grade-no-develgrade
Snapcraft grade no develgrade
2022-01-04 11:14:28 +01:00
Łukasz Magiera 0523c946f9 Merge pull request #7851 from zl03jsj/fix/goc-gen-slice
fix: doc generation struct slice example value
2022-01-04 10:34:23 +01:00
zl 4172a3c8b7 ExampleValue for a silce is nil 2022-01-04 14:27:10 +08:00
Łukasz Magiera 9b11c4b319 Merge pull request #7852 from pefish/patch-1
fix: returned error not be accept correctly
2022-01-03 19:57:43 +01:00
emad22552 135186e33d go fmt ./client.go 2022-01-02 19:08:22 +03:30
pefish f82a262ffe Update wdpost_run.go 2021-12-29 17:37:37 +08:00
llifezou 4b685c5e26 Include worker name in sealing errors 2021-12-23 17:44:43 +08:00
Jiaying Wang 921fda94c7 Merge pull request #7759 from filecoin-project/feat/transfer-diagnostics
Add api for transfer diagnostics
2021-12-22 17:07:54 -05:00
hannahhoward 1078dff3a9 feat(storageminer): also list data transfers with no id 2021-12-22 13:41:56 -08:00
hannahhoward 8a923fb420 fix(storageminer): fix conditional 2021-12-22 13:41:56 -08:00
hannahhoward ced22687eb fix(cmd): fix cli peer decoding 2021-12-22 13:41:56 -08:00
hannahhoward 177282d9f9 fix(storageminer): lint/mod-tidy/extra checks 2021-12-22 13:41:55 -08:00
hannahhoward cddf63efe9 feat(storageminer): add api for transfer diagnostics
Add API + CLI for inspecting in depth diagnostics on graphsync transfers with a given peer
2021-12-22 13:41:29 -08:00
Aayush Rajasekaran 1bc987772c Merge pull request #7818 from filecoin-project/asr/vm-nvfactor
Refactor: VM: Remove the NetworkVersionGetter
2021-12-21 12:19:53 -05:00
Łukasz Magiera c755ceeffa Merge pull request #7812 from filecoin-project/feat/retry-ap-seek-start
fix: #7577 markets: When retrying Add Piece, first seek to start of reader
2021-12-21 18:06:47 +01:00
Dirk McCormick 6db8a862bb feat: update to go-fil-markets v1.14.1 2021-12-21 16:36:47 +01:00
Dirk McCormick 6311e53a76 feat: update to go-fil-markets v1.14.0 2021-12-21 11:23:38 +01:00
Łukasz Magiera ef65ddf351 Merge pull request #7814 from filecoin-project/feat/retrieval-ask-cli
feat: #6017 market: retrieval ask CLI command
2021-12-20 18:04:21 +01:00
Darko Brdareski a54ac2ef79 Remove FS, MEM, GAS leftover test anotations. 2021-12-20 17:00:01 +01:00
Darko Brdareski 86cf17c1f4 Remove bad annotation from gas_test.go 2021-12-20 16:51:09 +01:00
Łukasz Magiera daa2d89ef5 Merge pull request #7831 from shotcollin/master
misc: n/a sealing: Fix grammatical error in a log warning message
2021-12-20 16:03:58 +01:00
Dirk McCormick 0e53275d40 feat: retrieval-ask - if size param is zero use QueryOffer.Size 2021-12-20 16:03:03 +01:00
Darko Brdareski dda1a42a2a Merge branch 'bloxico/system-test-matrix' of https://github.com/filecoin-project/lotus into merge_lotus 2021-12-20 15:48:16 +01:00
shotcollin a259c7bd75 Merge pull request #1 from shotcollin/typo-fixes
fix typo in log warning
2021-12-19 17:10:39 -07:00
shotcollin d10d0a20b1 fix typo in log warning
very minor but this warning comes up a lot so it'd be nicer if it wasn't a grammatical error too
2021-12-19 17:07:11 -07:00
Cory Schwartz 70b8557b63 tmp, don't stop 2021-12-17 18:12:23 -08:00
Cory Schwartz 0e7e252951 set +e before cleanup 2021-12-17 18:07:54 -08:00
Cory Schwartz d53a9e877a cleanup script 2021-12-17 17:49:32 -08:00
Cory Schwartz a03e9e34ab reinstall snapd 2021-12-17 17:30:23 -08:00
Cory Schwartz d874c633d7 set -e after switch user 2021-12-17 17:14:53 -08:00
Cory Schwartz dedf46ed1f use correct snap name 2021-12-17 17:12:10 -08:00
Cory Schwartz d42f7e4a1c packer snap 2021-12-17 17:06:32 -08:00
Aayush Rajasekaran dd20829dbe Merge pull request #7762 from filecoin-project/feat/sectors-update-state-guard
sectors update-state checks if sector exists before changing its state
2021-12-17 19:21:26 -05:00
Aayush Rajasekaran 670bd993f3 Refactor: VM: Remove the NetworkVersionGetter 2021-12-17 19:14:21 -05:00
Aayush Rajasekaran 6f6f5d79fb Refactor: State: Let Rand get network versions 2021-12-17 18:54:17 -05:00
Aayush Rajasekaran 3f4eaa99d5 Refactor: State: Rename stmgr::GetNtwkVersion to GetNetworkVersion 2021-12-17 18:43:39 -05:00
Aayush Rajasekaran 94e1a833d6 Merge pull request #7816 from filecoin-project/asr/rand-refactor
refactor: state: Move randomness versioning out of the VM
2021-12-17 15:57:10 -05:00
Jennifer Wang eabb9639a3 v1.13.2-rc5 prep 2021-12-17 15:02:42 -05:00
gstuart 27e48d73dd Check if sector exists before changing its state 2021-12-17 14:32:18 -05:00
Aayush Rajasekaran aa1b770974 Rand: Refactor so that versioning lives in StateRand 2021-12-17 13:58:53 -05:00
Dirk McCormick bb56e97177 fix: rename query-retrieval-ask to retrieval-ask 2021-12-17 18:01:12 +01:00
dirkmcandŁukasz Magiera 0f22d51309 Update cli/client.go
Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
2021-12-17 17:54:32 +01:00
Dirk McCormick b1734f84b3 feat: retrieval ask CLI command 2021-12-17 15:55:12 +01:00
Dirk McCormick 839fc8df7d fix: when retrying Add Piece, first seek to start of reader 2021-12-17 14:44:51 +01:00
Łukasz Magiera a4728d3c72 Merge pull request #7578 from filecoin-project/rvagg/SimultaneousTransfersForStoragePerClient
feat(graphsync): allow setting of per-peer incoming requests for miners
2021-12-17 14:27:15 +01:00
Łukasz Magiera 6806bff57b Merge pull request #7646 from filecoin-project/deps/update-ctx-dsbs
updating to new datastore/blockstore code with contexts
2021-12-17 13:50:46 +01:00
Łukasz Magiera 66f8f8aff2 fix shed 2021-12-17 13:05:44 +01:00
Łukasz Magiera bc384c01e3 Merge remote-tracking branch 'origin/master' into deps/update-ctx-dsbs 2021-12-17 13:01:22 +01:00
vyzo 976a3a5e7b fix blockstore test contexts 2021-12-17 13:44:05 +02:00
Łukasz Magiera 122b319520 don't update ffi 2021-12-17 11:45:40 +01:00
Łukasz Magiera 29d5976c01 Merge pull request #7774 from filecoin-project/asr/shed-pieces
Shed: Add a util to list terminated deals
2021-12-17 11:26:01 +01:00
vyzo cd266a05d2 fix tests 2021-12-17 12:04:04 +02:00
vyzo 6ba2533e2b fix lotus-shed 2021-12-17 11:47:28 +02:00
vyzo dd327f0b22 plumb more contexts 2021-12-17 11:42:09 +02:00
Aayush Rajasekaran 927448601c Merge pull request #7811 from filecoin-project/asr/vm-circ
VM: Circ supply should be constant per epoch
2021-12-17 01:03:26 -05:00
Aayush Rajasekaran 1f04cc1f23 VM: Circ supply should be constant per epoch 2021-12-17 00:29:55 -05:00
Cory Schwartz cfb6aca9a4 restore .circleci 2021-12-17 00:09:12 -05:00
Cory Schwartz c37271422b try stable 2021-12-17 00:09:07 -05:00
Cory Schwartz 975090256d tmp: publish to snapcraft edge 2021-12-17 00:09:00 -05:00
Cory Schwartz cbf308a01d remove devel grade 2021-12-17 00:08:53 -05:00
Jiaying Wang ec6580d840 Merge pull request #7726 from filecoin-project/jen/pull-request-template
chore: create pull_request_template.md
2021-12-17 00:07:01 -05:00
Rod Vagg 9e7d9affbe feat(graphsync): allow setting of per-peer incoming requests for miners 2021-12-17 15:04:16 +11:00
Jiaying Wang 52fbee6749 Update .github/pull_request_template.md 2021-12-16 23:01:03 -05:00
Jiaying Wang 0f0a70e251 Update .github/pull_request_template.md 2021-12-16 23:00:58 -05:00
Jennifer Wang fac769ff17 i forced pushed and brought a bug that was fixed back so im fixing it back 2021-12-16 22:25:00 -05:00
Aayush Rajasekaran 690be5bf7f Merge pull request #7321 from filecoin-project/asr/msg-limit
Mempool msg selection should respect block message limits
2021-12-16 22:13:07 -05:00
Aayush Rajasekaran 1d8de2791a Merge pull request #7784 from filecoin-project/next
Merge v15 work into master
2021-12-16 22:12:14 -05:00
Darko Brdareski 3e32aa896c Annotate client storage deals feature 2021-12-16 14:36:02 +01:00
Cory Schwartz 65ecca2904 restore .circleci 2021-12-15 15:54:40 -08:00
Aayush Rajasekaran 62de84d5b6 Deps: Update drand to 1.3.0 2021-12-15 18:34:21 -05:00
Cory Schwartz 2f30322a4e try stable 2021-12-15 15:01:42 -08:00
Cory Schwartz 145c862ee0 tmp: publish to snapcraft edge 2021-12-15 14:49:56 -08:00
Cory Schwartz bd1bec5c93 remove devel grade 2021-12-15 14:48:19 -08:00
Darko Brdareski 2f1f35cc71 Annotate storage miner features 2021-12-15 15:30:42 +01:00
Darko Brdareski be1123b5df Merge branch 'wallet_tests_stm' 2021-12-15 12:28:06 +01:00
TheMenko 5ccb4586b5 add header annotations 2021-12-15 12:27:19 +01:00
TheMenko d8d708704d Merge branch 'msgpool_tests_stm'
message pool tests
2021-12-15 12:20:57 +01:00
TheMenko 063eefe896 Merge branch 'wallet_tests_stm'
wallet tests
2021-12-15 12:20:22 +01:00
TheMenko 65819140dd annotated tests for messagepool 2021-12-15 00:56:05 +01:00
Aayush Rajasekaran 0e2278cc76 Merge branch 'master' into deps/update-ctx-dsbs 2021-12-14 18:08:29 -05:00
Aayush Rajasekaran bdd56d2516 Deps: Update go-car to v0.3.3 2021-12-14 18:06:28 -05:00
Aayush Rajasekaran 7fb590208c Deps: Update lotus-soup to point to tagged releases 2021-12-14 18:05:52 -05:00
Aayush Rajasekaran 02b00c025a Deps: Update go-fil-markets to v1.13.5 2021-12-14 17:55:55 -05:00
Aayush Rajasekaran 8935c4386c Deps: Update go-ipld-cbor to v0.0.6 2021-12-14 17:53:11 -05:00
Aayush Rajasekaran bcd2c71031 Deps: Update go-storedcounter to v0.1.0 2021-12-14 17:51:49 -05:00
Aayush Rajasekaran 69495f5b59 Deps: Update dagstore to v0.4.4 2021-12-14 17:50:18 -05:00
Aayush Rajasekaran 3f703ff8a4 Deps: Update go-car/v2 to v2.1.1 2021-12-14 16:54:22 -05:00
Aayush Rajasekaran 46d8ae47dc Deps: Update go-ipld-prime to v0.14.3 2021-12-14 16:41:34 -05:00
Aayush Rajasekaran 5bc4ee257f Deps: Update go-ds-badger2 to v0.1.2 2021-12-14 16:33:38 -05:00
Aayush Rajasekaran aac6d88f72 Deps: Update actors v2 to v2.3.6 2021-12-14 12:49:18 -05:00
vyzo f00698aafd fix more paychmgr tests 2021-12-14 19:01:51 +02:00
vyzo e1634128c1 fix paychmgr test 2021-12-14 18:48:17 +02:00
Aayush Rajasekaran a3ea3ad911 Deps: Update actors v2 2021-12-14 11:39:06 -05:00
vyzo 0eec00055f fix lotus-soup build 2021-12-14 18:23:43 +02:00
vyzo e8df325796 update lotus-soup deps 2021-12-14 18:23:33 +02:00
Darko Brdareski ec8baf23d8 Annotate message signer subsystem 2021-12-14 17:21:01 +01:00
vyzo 63487e1d69 fix checkpoint test 2021-12-14 18:05:23 +02:00
vyzo a0353c8627 fix messagepool selection test 2021-12-14 18:01:34 +02:00
vyzo 6ecbcebd44 fix messagepool repub test 2021-12-14 17:57:37 +02:00
Darko Brdareski 0f83a0a634 Annotate paych tests 2021-12-14 16:56:16 +01:00
vyzo e6a8c278f5 fix messagepool test mock provider 2021-12-14 17:53:31 +02:00
vyzo 780dfa0c7c fix ReorgOps incantation in events test 2021-12-14 17:49:34 +02:00
vyzo 5e692f9071 fix more tests 2021-12-14 17:45:38 +02:00
vyzo 40c61a310f fix splitstore test 2021-12-14 17:17:30 +02:00
vyzo 22ce395130 fix some unit tests 2021-12-14 17:05:10 +02:00
vyzo 716b4a3b09 hook a great context in the sky to satisfy DI; sigh... 2021-12-14 16:57:09 +02:00
vyzo eb48dc9b68 fix issues with new peerstore constructor signature in DI 2021-12-14 16:21:55 +02:00
vyzo fc7d4a13b0 fix itests 2021-12-14 16:06:59 +02:00
vyzo 73ca65a6ff update drand 2021-12-14 15:55:00 +02:00
vyzo f157ac9b68 update for new ConnManager constructor 2021-12-14 15:30:29 +02:00
vyzo 773f896bcd update go-libp2p-connmgr to v0.3 2021-12-14 15:27:34 +02:00
vyzo 0001a6bad0 update go-libp2p to v0.17 2021-12-14 15:26:15 +02:00
Darko Brdareski a64f2421d2 Annotate 'incoming' subsystem 2021-12-14 11:33:33 +01:00
Aayush Rajasekaran 8a42462271 Merge pull request #7781 from filecoin-project/asr/update-ffi
Update FFI
2021-12-13 18:38:17 -05:00
Aayush Rajasekaran b08bf32040 Add a log for when message selection fails 2021-12-13 18:31:31 -05:00
Aayush Rajasekaran a45803d8a0 Mempool: add selection tests 2021-12-13 18:28:05 -05:00
Aayush Rajasekaran ec00e73c9d Mempool: Selection should respect CBOR limits 2021-12-13 18:28:05 -05:00
Aayush Rajasekaran dd20cb7301 Consensus: Safety check against unknown sig types 2021-12-13 18:28:05 -05:00
Aayush Rajasekaran ac3cdf75fa Mempool: Selection logic should respect block message limits 2021-12-13 18:28:05 -05:00
Aayush Rajasekaran 3e288f1066 Update FFI 2021-12-13 15:47:17 -05:00
Aayush Rajasekaran 80d5e52923 Merge branch 'master' into next 2021-12-13 13:24:28 -05:00
Dirk McCormick a51b08e386 feat: add IndexerProvider AnnounceAddress config 2021-12-13 18:24:05 +01:00
Masih H. Derkani 6b7b9793ab Set default index provider ingest config values
Set default values for index-provider ingest config.

Leave a TODO to use provider config APIs once defaults exposed.

Run `go mod tidy`
2021-12-13 14:44:56 +00:00
vyzo e4233e45be plumb contexts in lotus-sim 2021-12-13 15:15:38 +02:00
vyzo 47bac4a0c9 plumb context in tvx 2021-12-13 15:03:54 +02:00
vyzo b31480232b plumb contexts in conformance 2021-12-13 14:59:52 +02:00
vyzo 73c7e9edf1 go mod tidy 2021-12-13 14:47:01 +02:00
vyzo 5eb5fcd0f4 fix lotus-bench 2021-12-13 14:46:49 +02:00
Darko Brdareski fbcb05388e Remove last bad annotations 2021-12-13 13:44:15 +01:00
Darko Brdareski 0addca1070 Fix bad annotations 2021-12-13 13:41:04 +01:00
vyzo a8fcaeb141 plumb contexts in lotus-shed 2021-12-13 14:35:24 +02:00
vyzo 2e057b8f52 plumb contexts in lotus-miner 2021-12-13 14:28:29 +02:00
vyzo 84710cf27e plumb more contexts in lotus 2021-12-13 14:26:59 +02:00
vyzo 7ed40c1ec7 go get drand@release/v1.3 2021-12-13 14:17:05 +02:00
vyzo 97a91f23f1 update go-ds-measure and go-filestore 2021-12-13 14:12:14 +02:00
Darko Brdareski 5065626984 Merge remote-tracking branch 'origin/wallet_tests_stm' into syncer_tests 2021-12-13 11:17:03 +01:00
TheMenko 15263bc0d7 basic tests for local and multi wallets 2021-12-13 11:16:06 +01:00
Jennifer Wang 8c4c2eeffc add client address 2021-12-13 04:02:53 -05:00
Aayush Rajasekaran d7528557df Shed: Add a util to list terminated deals 2021-12-12 22:37:05 -05:00
Łukasz Magiera dc26f3bd74 Merge pull request #7750 from filecoin-project/gstuart/lotus-vm-gas-tracing-env-var
Expose EnableGasTracing as an env_var
2021-12-12 12:16:24 +01:00
Łukasz Magiera 8652f80ab3 Merge pull request #7760 from filecoin-project/feat/open-telemetry-fix
Minor improvement for OpenTelemetry
2021-12-12 12:14:55 +01:00
Aayush Rajasekaran e5895af4a2 Update go-ipld-cbor 2021-12-11 18:15:35 -05:00
Aayush Rajasekaran dfb65ed89f Plumb contexts through 2021-12-11 17:04:00 -05:00
Aayush Rajasekaran 6c31cecc7d Update markets 2021-12-11 14:37:37 -05:00
Jiaying Wang e05fdf8923 Merge pull request #7761 from filecoin-project/jen/rcgain
build: release: v1.13.2-rc4
2021-12-10 22:06:43 -05:00
Jiaying WangandAayush Rajasekaran 2343778559 Update CHANGELOG.md
Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
2021-12-10 19:43:25 -05:00
Aayush Rajasekaran 095361bead Update carv2 2021-12-10 19:15:53 -05:00
gstuart 9108828aeb Make Lotus vm gas tracing an env var 2021-12-10 17:27:44 -05:00
Jennifer Wang 1ffc3ed3a6 v1.13.2-rc4 2021-12-10 16:58:58 -05:00
hannahhoward 8e376c84cf feat(tracing): setup logging 2021-12-10 13:50:12 -08:00
Łukasz Magiera ba3c96f8c6 stores: Reduce log spam during retrievals 2021-12-10 16:47:32 -05:00
Łukasz Magiera b7912cbe0b fix lint 2021-12-10 16:47:22 -05:00
Łukasz Magiera dafdb7689c Fix mock ReadPiece 2021-12-10 16:47:12 -05:00
Łukasz Magiera 46ba2b6b4f fr32: Reduce MTTresh from 32M to 512k per core
This results in 64x less bytes allocated when spawning new readers
for larger pieces.

Results in about 30% speedup in 1G unpad benchmark on AMD TR 2950x
2021-12-10 16:47:07 -05:00
Łukasz Magiera b4c1e340ea piecereader: Avoid allocating 1024MB slices per read 2021-12-10 16:47:01 -05:00
Łukasz Magiera a438e6fa73 piecereader: Avoid redundant roundtrips when seeking 2021-12-10 16:46:57 -05:00
Łukasz Magiera b21d3ded2f piecereader: Move closer to storage 2021-12-10 16:46:52 -05:00
Darko Brdareski 0169d0dafd Annotate state feature tests 2021-12-10 16:08:25 +01:00
Łukasz Magiera a0d76bda99 Merge pull request #7749 from filecoin-project/gstuart/sort-lotus-miner-retrieval-deals
Sort lotus-miner retrieval-deals by dealId
2021-12-10 12:16:00 +01:00
Łukasz Magiera 36f1a8f3ca Merge pull request #7746 from filecoin-project/feat/faster-retrieval
Make retrieval even faster
2021-12-10 12:01:01 +01:00
Darko Brdareski f04bae3f0b Annotate rand_test 2021-12-10 11:41:24 +01:00
Darko Brdareski 95f86f9de0 Annotate feature syncer 2021-12-10 11:33:29 +01:00
Łukasz Magiera e8ef39e734 stores: Reduce log spam during retrievals 2021-12-10 11:28:04 +01:00
Aayush Rajasekaran 702a7815b9 Update go-car 2021-12-09 22:46:30 -05:00
Aayush Rajasekaran 276eabd4e5 Update go-storedcounter and go-ds-versioning 2021-12-09 22:31:46 -05:00
Jiaying Wang 09a5c2e025 Merge pull request #7752 from filecoin-project/jen/13.2rc3
build: release: v1.13.2-rc3
2021-12-09 22:26:16 -05:00
Jiaying Wang 509aea5d04 Merge pull request #7751 from filecoin-project/fix/getnode
dep/fix 7701 Dependency: update to ipld-legacy to v0.1.1
2021-12-09 21:16:53 -05:00
Jennifer Wang 3f9f9eb667 v1.13.2-rc3 2021-12-09 21:15:49 -05:00
Jennifer Wang 29cdee761b update to ipld-legacy to v0.1.1 2021-12-09 21:06:56 -05:00
Jennifer Wang f7a49e7be7 update to ipld-legacy to v0.1.1 2021-12-09 21:02:24 -05:00
gstuart 21e6c963ab Sort lotus-miner retrieval-deals by dealId 2021-12-09 19:53:13 -05:00
Łukasz Magiera 74d3ba6b5e fix lint 2021-12-09 18:10:34 +01:00
Masih H. Derkani 43cde484f4 Upgrade go-legs to a version with debugging features
In order to debug the gossipsub issue, upgrade go-legs to a branch that
implments an admin HTTP API to allow checking peerstate connecting to a
host and explicitly publishing CIDs.

This is to reduce the roundtrip time we have to wait for a deal to be
made and advertisement published to debug issues.

Admin server runs on localhost only and will not be present in the final
version of go-legs or will be disabled.

See:
- https://github.com/filecoin-project/go-legs/pull/47
2021-12-09 16:23:12 +00:00
Łukasz Magiera c31f4de7d5 Fix mock ReadPiece 2021-12-09 16:26:59 +01:00
Łukasz Magiera 6fd1609410 fr32: Reduce MTTresh from 32M to 512k per core
This results in 64x less bytes allocated when spawning new readers
for larger pieces.

Results in about 30% speedup in 1G unpad benchmark on AMD TR 2950x
2021-12-09 16:14:47 +01:00
Łukasz Magiera 9c75a3aaa8 piecereader: Avoid allocating 1024MB slices per read 2021-12-09 15:49:43 +01:00
Łukasz Magiera a3d8494a04 piecereader: Avoid redundant roundtrips when seeking 2021-12-09 14:52:33 +01:00
vyzo a9e22df765 update deps 2021-12-09 15:14:48 +02:00
Aayush Rajasekaran b9b4a2659d Update go-data-transfer 2021-12-09 14:12:25 +02:00
whyrusleeping 072297e661 WIP: updating to new datastore/blockstore code with contexts 2021-12-09 14:12:25 +02:00
Łukasz Magiera 13b260e7f7 piecereader: Move closer to storage 2021-12-08 23:20:20 +01:00
ZenGround0 ac31651a42 Merge pull request #7730 from filecoin-project/feat/sector-storage-unseal
Feat/sector storage unseal
2021-12-08 10:10:21 -05:00
Jiaying Wang 67bedc4ace Merge pull request #7745 from filecoin-project/jen/v1.13.2rc2
build: release: v1.13.2-rc2
2021-12-08 02:38:06 -05:00
Jennifer Wang 55ae9e8414 update changelog 2021-12-08 02:26:11 -05:00
Jennifer Wang 4768c425d1 bump version to v1.13.2-rc2 2021-12-08 02:04:39 -05:00
Łukasz Magiera b4bdb89f65 CARv2 v2.1.0 2021-12-08 01:52:00 -05:00
Łukasz Magiera ea9130256c dagstore pieceReader: Fix wrong ErrUnexpectedEOF return in ReadAt 2021-12-08 01:51:56 -05:00
Łukasz Magiera cde687bbe1 dagstore pieceReader: Always read full in ReadAt 2021-12-08 01:51:47 -05:00
Łukasz Magiera 9725d72a80 Add metrics to dagstore piecereader 2021-12-08 01:51:43 -05:00
Travis Person fbd3c90b80 disable building of appimage on release
appimage testing is currently broken due to a requirement to have access
to /dev/snd, which is not present on the image we are using in circleci.
2021-12-08 01:02:17 -05:00
Łukasz Magiera 49c619d65d Merge pull request #7735 from filecoin-project/feat/storlocks-cmd
Command to list active sector locks
2021-12-08 00:11:17 +01:00
Aayush Rajasekaran b0a9a27288 Shed: Allow send-csv to specify params and method 2021-12-07 17:14:29 -05:00
Aayush Rajasekaran c9a557e0d9 Address review 2021-12-07 17:09:07 -05:00
Aayush Rajasekaran fcb7cd0eb0 Shed: Add a util to send a batch of messages 2021-12-07 17:09:07 -05:00
Łukasz Magiera 9ccd4ee240 Merge pull request #7737 from filecoin-project/feat/opt-ds-pr
dagstore pieceReader: Always read full in ReadAt
2021-12-06 23:14:21 +01:00
Łukasz Magiera 84c48de5d9 CARv2 v2.1.0 2021-12-06 15:39:03 +01:00
Łukasz Magiera 9f6265e0b4 dagstore pieceReader: Fix wrong ErrUnexpectedEOF return in ReadAt 2021-12-03 23:36:36 +01:00
zenground0 a5be80828a RemoveData and Decode
- Unsealing replica update with sector key works and tested
- Sector key generation added and tested
2021-12-03 15:21:06 -05:00
Łukasz Magiera 3969d6b767 dagstore pieceReader: Always read full in ReadAt 2021-12-03 20:14:35 +01:00
Łukasz Magiera dad9190142 Add metrics to dagstore piecereader 2021-12-03 17:07:14 +01:00
Łukasz Magiera 9d143426ee Merge pull request #7734 from filecoin-project/feat/splitstore-upgrade-protection
SplitStore: supress compaction near upgrades
2021-12-03 15:18:07 +01:00
Łukasz Magiera 727765b248 Command to list active sector locks 2021-12-03 12:33:23 +01:00
Masih H. Derkani 780c40329e Upgrade to the latest indexer dependencies
Do not upgrade to the latest storetheindex, because it uses go-ipfs for
bootstrapping mechanism and that comes with dependencies that we don not
wish to upgrade in lotus just now; namely:
- go-bitswap
- go-path
- interface-go-ipfs-core
- go-libp2p-kad-dht
- go-libp2p-quic-transport
2021-12-03 10:29:17 +00:00
vyzo 489782e21b satisfy the spellchecker that masquarades as a linter 2021-12-03 12:15:28 +02:00
vyzo 5d6398f20e hook the upgrade schedule to splitstore start 2021-12-03 12:11:54 +02:00
vyzo 6ce5879071 add unit test for compaction supression 2021-12-03 12:05:15 +02:00
vyzo 05c1325885 add logic for supressing compaction near upgrade boundaries 2021-12-03 11:50:35 +02:00
Łukasz Magiera 9331714089 Merge pull request #7707 from filecoin-project/fix/app-image-build
Disable appimage
2021-12-02 14:39:48 +01:00
Łukasz Magiera d5e1cc095c Merge pull request #7725 from filecoin-project/feat/open-telemetry
Initial switch to OpenTelemetry
2021-12-02 14:39:20 +01:00
Jiaying Wang c2437b7bf2 Create pull_request_template.md
This is the very first iteration of the lotus PR template. The goal of adding PR template is to standardize PR requests and encourage contributors to:
- come up with good PR descriptions to give code reviewers a clear overview of what's in the PR 
- have a clear PR title as lotus generates a change log based on it
- check that tests and documentation for the codes that changed are icnluded 

The PR type follows the https://www.conventionalcommits.org/en/v1.0.0-beta.2/.  The [contribution guideline](https://github.com/filecoin-project/lotus#contribute) should be updated with how to create a pr after the template is accepted.
2021-12-01 22:37:22 -05:00
hannahhoward bfd1099ef3 fix(main): fix bug in startup when tracing is not present 2021-12-01 18:53:00 -08:00
hannahhoward f3b691d618 feat(tracing): switch to OpenTelemetry
Switch the underlying tracing library to OpenTelemetry, with a bridge to OpenCensus for
compatibility
2021-12-01 16:19:47 -08:00
Travis Person 66c8c66f40 disable building of appimage on release
appimage testing is currently broken due to a requirement to have access
to /dev/snd, which is not present on the image we are using in circleci.
2021-12-01 19:15:35 +00:00
Jiaying Wang 52c7fa2427 Merge pull request #7718 from filecoin-project/jen/new-prep
v1.13.2-rc1
2021-11-30 19:23:09 -05:00
Jiaying Wang 0cfc344f82 Merge pull request #7717 from filecoin-project/jen/bumpmaster
Bump the master version to v1.13.3-dev
2021-11-30 19:06:46 -05:00
Jennifer Wang 02fa0df81c update change log 2021-11-30 19:06:11 -05:00
Jennifer Wang 027017d0d2 update the version to v1.13.2-rc1 2021-11-30 19:03:24 -05:00
Jennifer Wang c3ecf8355d docs gen 2021-11-30 18:29:13 -05:00
Jennifer Wang a09aa0aa72 Bump the master version to v1.13.3-dev 2021-11-30 18:24:34 -05:00
Łukasz Magiera 26c9120d22 Merge pull request #7714 from filecoin-project/feat/sched-review
Address Scheduler enhancements (#7703) review
2021-11-30 23:03:03 +01:00
Łukasz Magiera 71329f6c41 Address Scheduler enhancements (#7703) review 2021-11-30 20:50:40 +01:00
ZenGround0 91f6d4b013 Merge pull request #7615 from filecoin-project/feat/snap-deals-storage
Feat/snap deals storage
2021-11-30 14:18:24 -05:00
zenground0 40d16a8f88 Review Response 2021-11-30 13:53:37 -05:00
Łukasz Magiera 73f16f08e3 Merge pull request #7703 from filecoin-project/feat/scheduler-enhancements
Scheduler enhancements
2021-11-30 19:14:25 +01:00
zenground0 f88fcdbcfc WIP 2021-11-30 12:40:14 -05:00
Łukasz MagieraandAayush Rajasekaran 330cfc33ee worker: Typo in resources cmd usage
Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
2021-11-30 02:06:58 +01:00
Łukasz Magiera cf20b0b2b8 worker: Command to print resource-table env vars 2021-11-30 02:06:58 +01:00
Łukasz Magiera 001ecbb561 fix lint 2021-11-30 02:06:58 +01:00
Łukasz Magiera a597b072b8 fix sched tests 2021-11-30 02:06:58 +01:00
Łukasz Magiera f25efecb74 worker: Test resource table overrides 2021-11-30 02:06:58 +01:00
Łukasz Magiera 6d52d8552b Fix docsgen 2021-11-30 02:06:58 +01:00
Łukasz Magiera c9a2ff4007 cleanup worker resource overrides 2021-11-30 02:06:58 +01:00
Łukasz Magiera b961e1aab5 sched resources: Separate Parallelism defaults depending on GPU presence 2021-11-30 02:06:58 +01:00
Łukasz Magiera 36868a8749 sched: C2 is not all-core load 2021-11-30 02:06:58 +01:00
Clint Armstrong 4ef8543128 Permit workers to override resource table
In an environment with heterogenious worker nodes, a universal resource
table for all workers does not allow effective scheduling of tasks. Some
workers may have different proof cache settings, changing the required
memory for different tasks. Some workers may have a different count of
CPUs per core-complex, changing the max parallelism of PC1.

This change allows workers to customize these parameters with
environment variables. A worker could set the environment variable
PC1_MIN_MEMORY for example to customize the minimum memory requirement
for PC1 tasks. If no environment variables are specified, the resource
table on the miner is used, except for PC1 parallelism.

If PC1_MAX_PARALLELISM is not specified, and
FIL_PROOFS_USE_MULTICORE_SDR is set, PC1_MAX_PARALLELSIM will
automatically be set to FIL_PROOFS_MULTICORE_SDR_PRODUCERS + 1.
2021-11-30 02:06:58 +01:00
Clint Armstrong 93e4656a27 Use a float to represent GPU utilization
Before this change workers can only be allocated one GPU task,
regardless of how much of the GPU resources that task uses, or how many
GPUs are in the system.

This makes GPUUtilization a float which can represent that a task needs
a portion, or multiple GPUs. GPUs are accounted for like RAM and CPUs so
that workers with more GPUs can be allocated more tasks.

A known issue is that PC2 cannot use multiple GPUs. And even if the
worker has multiple GPUs and is allocated multiple PC2 tasks, those
tasks will only run on the first GPU.

This could result in unexpected behavior when a worker with multiple
GPUs is assigned multiple PC2 tasks. But this should not suprise any
existing users who upgrade, as any existing users who run workers with
multiple GPUs should already know this and be running a worker per GPU
for PC2. But now those users have the freedom to customize the GPU
utilization of PC2 to be less than one and effectively run multiple PC2
processes in a single worker.

C2 is capable of utilizing multiple GPUs, and now workers can be
customized for C2 accordingly.
2021-11-30 02:06:58 +01:00
Clint Armstrong c4f46171ae Report memory used and swap used in worker res
Attempting to report "memory used by other processes" in the MemReserved
field fails to take into account the fact that the system's memory used
includes memory used by ongoing tasks.

To properly account for this, worker should report the memory and swap
used, then the scheduler that is aware of the memory requirements for a
task can determine if there is sufficient memory available for a task.
2021-11-30 02:06:58 +01:00
Clint Armstrong e2a1ca7caa Use cgroup limits in worker memory calculations
Worker processes may have memory limitations imposed by Systemd. But
/proc/meminfo shows the entire system memory regardless of these limits.
This results in the scheduler believing the worker has the entire system
memory avaliable and the worker being allocated too many tasks.

This change attempts to read cgroup memory limits for the worker
process. It supports cgroups v1 and v2, and compares cgroup limits
against the system memory and returns the most conservative values to
prevent the worker from being allocated too many tasks and potentially
triggering an OOM event.
2021-11-30 02:06:58 +01:00
Łukasz Magiera 19e808fffb Merge pull request #7710 from filecoin-project/feat/pc2-validation
ffiwrapper: Validate PC2 by calling C1 with random seeds
2021-11-30 02:05:32 +01:00
Łukasz Magiera d21c44e266 ffiwrapper: Validate PC2 by calling C1 with random seeds 2021-11-30 01:33:05 +01:00
Jiaying Wang 01215b7d2c Merge pull request #7709 from filecoin-project/logic-error-miner-entrypoint
fix logic error
2021-11-29 18:16:58 -05:00
Łukasz Magiera da9b0c6735 Merge pull request #7708 from filecoin-project/feat/update-graphsync-v0.10.6
Update go-graphsync v0.10.6
2021-11-29 23:51:32 +01:00
Jiaying Wang 4d2f3375e8 Merge pull request #7699 from filecoin-project/feat/listcids-verbose
Add verbose mode to lotus-miner pieces list-cids
2021-11-29 17:43:09 -05:00
c r e16e9ad343 reorder transfer checks so as to ensure sending more money than you have to yourself fails with an error (fixing issue 7596)
PR #7637, also adds tests to make sure behavior is correct across versions.
2021-11-29 17:26:47 -05:00
Cory Schwartz 27efbc3485 fix logic error 2021-11-29 13:52:06 -08:00
hannahhoward d4074e45cf feat(deps): update go-graphsync v0.10.6 2021-11-29 13:29:12 -08:00
Łukasz Magiera f39942283b Merge pull request #7706 from filecoin-project/feat/ret-matchding-cars
retrieval: Only output matching nodes, MatchPath dagspec
2021-11-29 22:14:25 +01:00
Łukasz Magiera 468b90a4a4 cli docsgen 2021-11-29 21:50:23 +01:00
Łukasz Magiera 092e12d1be cli: boolean logic is hard 2021-11-29 21:41:38 +01:00
Łukasz Magiera 320b36495d gofmt 2021-11-29 21:39:27 +01:00
Łukasz Magiera e4f47de6ef retrieval: Check required flags for --car-export-merkle-proof 2021-11-29 21:39:18 +01:00
Łukasz Magiera 410ecb4bbc retrieval: --car-export-merkle-proof flag for client retrieve 2021-11-29 21:37:28 +01:00
Łukasz MagieraandPeter Rabbitson d019853687 review: Cleanup some comments
Co-authored-by: Peter Rabbitson <ribasushi@protocol.ai>
2021-11-29 21:29:00 +01:00
Łukasz Magiera 4d51980cb5 deps: Use tagged go-ipld-selector-text-lite 2021-11-29 21:22:30 +01:00
Łukasz Magiera 5b5e6b9e44 retrieval: DagSpec.MatchPath -> ExportMerkleProof 2021-11-29 21:14:00 +01:00
Łukasz Magiera 58a084049d retrieval: Fix traversal in ls 2021-11-29 21:08:53 +01:00
Łukasz Magiera 9538fc9723 mod tidy, docsgen 2021-11-29 20:56:40 +01:00
Łukasz Magiera 227188e908 retrieval: Test non-matching path traversal 2021-11-29 20:52:55 +01:00
Łukasz Magiera 61791b90ea retrieval: Only output matching nodes, MatchPath dagspec 2021-11-29 20:40:55 +01:00
Steven Allen 797147097c Merge pull request #7689 from filecoin-project/disable-mplex
disable mplex stream muxer
2021-11-29 09:46:24 -08:00
Łukasz Magiera f8b132890c Add verbose mode to lotus-miner pieces list-cids 2021-11-29 17:19:47 +01:00
Łukasz Magiera 134aee4582 mod tidy 2021-11-29 16:44:58 +01:00
Łukasz Magiera 77d75b7739 Merge pull request #7688 from filecoin-project/chore/partret_cleanup_comment_and_flow
Cleanup partial retrieval codepaths ( zero functional changes )
2021-11-29 16:39:55 +01:00
zenground0 7d2b3f05db WIP sector storage and integration test 2021-11-29 10:24:00 -05:00
Łukasz Magiera 26c3752f48 Merge pull request #7693 from filecoin-project/feat/randacc-dagstore-mount
Make small retrieval 200x faster
2021-11-29 16:10:18 +01:00
Łukasz Magiera 4bcde2f0ff dagstore pieceReader: Cleanup reader nil check 2021-11-29 15:32:27 +01:00
Jiaying Wang 160bb0b050 Merge pull request #7698 from filecoin-project/jen/releasetomaster
Releases back to master
2021-11-26 18:44:18 -05:00
Łukasz Magiera 05aa860459 Request correct read size with startOffset in pieceProvider 2021-11-27 00:05:45 +01:00
Jiaying Wang a4c2a20851 Merge pull request #7691 from filecoin-project/misc/rle-dump
Add RLE dump code
2021-11-26 17:15:52 -05:00
Jennifer Wang 4df9179d34 Merge branch 'releases' into jen/releasetomaster 2021-11-26 17:09:22 -05:00
Jiaying Wang 8943de27e4 Merge pull request #7695 from filecoin-project/release/v1.13.1
Release/v1.13.1
2021-11-26 16:59:54 -05:00
Jiaying Wang fc728d9e11 Merge pull request #7694 from filecoin-project/jen/v1.13.1-prep
v1.13.1 prep
2021-11-26 16:44:46 -05:00
Jennifer Wang f6131ce3b5 v1.13.1 prep 2021-11-26 16:33:39 -05:00
Łukasz Magiera 9110e6f632 dagstore pieceReader: add debug log on stream restart 2021-11-26 20:24:51 +01:00
Łukasz Magiera 331702cd95 Tweak MaxPieceReaderBurnBytes 2021-11-26 18:49:41 +01:00
Łukasz Magiera 743ce5a40f Add startOffset support to mock SectorMgr.ReadPiece 2021-11-26 18:48:52 +01:00
Łukasz Magiera abec7dd3bc Fix imports 2021-11-26 18:40:27 +01:00
Łukasz Magiera f6de16e95a Fix sector-storage tests 2021-11-26 18:16:53 +01:00
Łukasz Magiera a9ee263682 Fix dagstore pieceReader burn logic 2021-11-26 18:01:09 +01:00
Łukasz Magiera 8d955d5f30 dagstore mount: Add random access support 2021-11-26 17:40:53 +01:00
Jakub Sztandera 4d8be81a8f Add usage
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-11-26 15:01:05 +01:00
Jakub SztanderaandAayush Rajasekaran e3c7b8d006 Fix typo
Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
2021-11-26 14:42:18 +01:00
Łukasz Magiera 3b1d86b750 Merge pull request #7690 from filecoin-project/misc/updage-archive-script
Update archive script
2021-11-26 13:47:40 +01:00
Marten Seemann cf0faf58dc remove muxer config via LIBP2P_MUX_PREFS env 2021-11-26 11:01:54 +04:00
Jakub Sztandera af113f867d Add dump code
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-11-25 20:53:49 +01:00
Jakub Sztandera ca230bba09 Add releases to protected
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-11-25 20:19:20 +01:00
Jakub Sztandera a26a2160ae Fix the script
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-11-25 20:14:19 +01:00
Jakub Sztandera aafdf3d093 Update archive script
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-11-25 19:52:04 +01:00
Marten Seemann 12dc3baff9 disable mplex stream muxer 2021-11-25 09:38:57 -08:00
Peter Rabbitson d5b4d93575 Cleanup partial retrieval codepaths ( zero functional changes )
- Adjust the ExportRef comment to reflect change from #7673
- Simplify control flow in parseDagSpec() ( read diff under -w )
2021-11-25 10:35:05 +01:00
Łukasz Magiera ab55a6fbbe Merge pull request #7681 from filecoin-project/feat/storage-tar-buf
storage: Use 1M buffers for Tar transfers
2021-11-24 20:52:02 +01:00
Łukasz Magiera 0c884734a3 Merge pull request #7673 from filecoin-project/chore/DM-level-tests_plus_merkle-proof-cars
Chore/dm level tests plus merkle proof cars
2021-11-24 20:43:39 +01:00
Łukasz Magiera 58dd814765 Merge pull request #7610 from filecoin-project/feat/partret-ux
Partial retrieval ux improvements
2021-11-24 20:25:05 +01:00
Łukasz Magiera bd4927b494 retrieval: Cleanup some comments 2021-11-24 20:13:49 +01:00
Łukasz Magiera 8454abcf45 storage: Use 1M buffers for Tar transfers 2021-11-24 20:08:37 +01:00
Peter Rabbitson 407bf4961c Modify preexisting test to reflect the simple-path car export behavior
I am open to having a flag or something, as long as the behavior reflected in
deals_partial_retrieval_dm-level_test.go can be preserved for v0, and opt-in for v1
2021-11-24 15:31:19 +01:00
Peter Rabbitson 46937a1b9f Add tests cementing the DM-level behavior on simple paths 2021-11-24 15:31:15 +01:00
Łukasz Magiera 210485d800 Add some description to the retrieve command 2021-11-23 22:44:57 +01:00
Łukasz Magiera 135796d4fa Merge remote-tracking branch 'origin/master' into feat/partret-ux 2021-11-23 19:08:56 +01:00
Łukasz Magiera 78949d6c05 retrieval: Fix deadlock in ClientGetRetrievalUpdates 2021-11-23 18:32:56 +01:00
Łukasz Magiera 83f65a673b retrieval: Docsgen 2021-11-23 17:45:56 +01:00
Łukasz Magiera 407c2ed114 retrieval: Drop the RootSelector hack 2021-11-23 17:42:43 +01:00
Łukasz Magiera 37141779ac Merge pull request #7453 from filecoin-project/feat/storage-groups
Sector storage groups
2021-11-23 16:36:12 +01:00
Łukasz Magiera b522901845 update storage attach allowTo usage 2021-11-23 16:23:06 +01:00
Łukasz Magiera e362d47903 Add optional group flags to storage attach commands 2021-11-23 16:11:04 +01:00
Łukasz Magiera b1781c33ce Show group info in storage list 2021-11-23 16:11:04 +01:00
Łukasz Magiera 2a1505b364 storage: Test StorageFindSector with groups 2021-11-23 16:11:04 +01:00
Łukasz Magiera 8b548ac02f storage: Check allowlists in StorageFindSector 2021-11-23 16:11:04 +01:00
Łukasz Magiera 5c77c25747 storage: Add Group tags to StorageInfo 2021-11-23 16:11:04 +01:00
Łukasz Magiera 6c0374cd3c Merge pull request #7659 from filecoin-project/fix/docgen-cli-nodesc
docsgen-cli: Handle commands with no description correctly
2021-11-22 20:34:30 +01:00
Łukasz Magiera 51753a1e25 Merge pull request #7414 from filecoin-project/feat/shed-wallet-balancer
shed: simple wallet balancer util
2021-11-22 18:11:42 +01:00
Łukasz Magiera dc744a8dd9 Merge pull request #7664 from filecoin-project/chore/spammy-log
remote store: Remove debug printf
2021-11-22 18:08:02 +01:00
Łukasz Magiera d1a63e4173 remote store: Remove debug printf 2021-11-22 17:50:12 +01:00
Łukasz Magiera 90d57f0243 Merge pull request #7660 from filecoin-project/dependabot/npm_and_yarn/lotuspond/front/ws-5.2.3
Bump ws from 5.2.2 to 5.2.3 in /lotuspond/front
2021-11-22 14:54:09 +01:00
Łukasz Magiera 3a81411d28 Merge pull request #7658 from filecoin-project/dependabot/npm_and_yarn/lotuspond/front/color-string-1.6.0
Bump color-string from 1.5.3 to 1.6.0 in /lotuspond/front
2021-11-22 14:53:50 +01:00
dependabot[bot] b12bb32ece Bump ws from 5.2.2 to 5.2.3 in /lotuspond/front
Bumps [ws](https://github.com/websockets/ws) from 5.2.2 to 5.2.3.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/5.2.2...5.2.3)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-22 13:53:40 +00:00
Łukasz Magiera 0992e56fee Merge pull request #7657 from filecoin-project/dependabot/npm_and_yarn/lotuspond/front/postcss-7.0.39
Bump postcss from 7.0.17 to 7.0.39 in /lotuspond/front
2021-11-22 14:53:38 +01:00
Łukasz Magiera 5fe1726484 Merge pull request #7656 from filecoin-project/dependabot/npm_and_yarn/lotuspond/front/path-parse-1.0.7
Bump path-parse from 1.0.6 to 1.0.7 in /lotuspond/front
2021-11-22 14:53:23 +01:00
Łukasz Magiera 189b27f36e Merge pull request #7655 from filecoin-project/dependabot/npm_and_yarn/lotuspond/front/tmpl-1.0.5
Bump tmpl from 1.0.4 to 1.0.5 in /lotuspond/front
2021-11-22 14:53:12 +01:00
Łukasz Magiera a0d6daa180 Merge pull request #7654 from filecoin-project/dependabot/npm_and_yarn/lotuspond/front/url-parse-1.5.3
Bump url-parse from 1.4.7 to 1.5.3 in /lotuspond/front
2021-11-22 14:52:52 +01:00
Łukasz Magiera 699d2c7b24 docsgen-cli: Handle commands with no description correctly 2021-11-22 14:49:24 +01:00
Łukasz Magiera 0262f1cd6e shed: simple wallet balancer util 2021-11-22 14:29:23 +01:00
Łukasz Magiera bdac11ade7 retrieval: Update some API comments 2021-11-22 14:19:03 +01:00
Łukasz Magiera 25e89d3a7a retrieval: require unixfs exports to be aligned on block boundary 2021-11-22 13:29:09 +01:00
Łukasz Magiera c6ac582c99 retrieval: update cli docs 2021-11-22 13:18:56 +01:00
Łukasz Magiera 9ea229ed5a retrieval: fix defult ask 2021-11-22 13:04:12 +01:00
Łukasz Magiera f88c514be9 make lint happy 2021-11-22 12:52:11 +01:00
Łukasz Magiera 3e70b8420e retrieval: Make the cat command work 2021-11-22 12:46:29 +01:00
Łukasz Magiera 2c583b03ff retrieval: Support DM-paths in ls 2021-11-22 12:46:29 +01:00
Łukasz Magiera dd78e75dd6 retrieval: add depth parameter to ls 2021-11-22 12:46:29 +01:00
Łukasz Magiera c6101aa02f retrieval: Support listing ipld links in ls 2021-11-22 12:46:29 +01:00
Łukasz Magiera 46ee3a0c46 retrieval: Don't default to non-zero cost retrieval 2021-11-22 12:46:29 +01:00
Łukasz Magiera 763659b8a3 retrieval: Update lotus-soup 2021-11-22 12:46:29 +01:00
Łukasz Magiera 74f645a098 retrieval: Fix parseDagSpec root check 2021-11-22 12:46:29 +01:00
Łukasz Magiera 53a48df77e retrieval: Don't use subcommands 2021-11-22 12:46:29 +01:00
Łukasz Magiera 597b72e286 retrieval: Fix lint, cli docsgen 2021-11-22 12:46:29 +01:00
Łukasz Magiera ec2bfb99bb make gen 2021-11-22 12:46:25 +01:00
Łukasz Magiera 8ea5162ad9 retrieval: Cleanup retrieve command output 2021-11-22 12:46:17 +01:00
Łukasz Magiera 9c119bfdad retrieval: Make the ls command work 2021-11-22 12:46:17 +01:00
Łukasz Magiera a1d5b2a293 retrieval: wip improved retrieval commands 2021-11-22 12:46:17 +01:00
Łukasz Magiera 450d0687da retrieval: REST export endpoint 2021-11-22 12:46:17 +01:00
Łukasz Magiera b83a9b902a gofmt 2021-11-22 12:46:17 +01:00
Łukasz Magiera b26906963b retrieval: Support multi-root export 2021-11-22 12:46:17 +01:00
Łukasz Magiera b0c043cc2f make gen 2021-11-22 12:46:15 +01:00
Łukasz Magiera d0503d409f fix TestPartialRetrieval 2021-11-22 12:46:04 +01:00
Łukasz Magiera b9bd061bdd fix unixfs selector root node selection 2021-11-22 12:46:04 +01:00
Łukasz Magiera b868769ec8 more retrieval api work 2021-11-22 12:46:02 +01:00
Łukasz Magiera 89138bab4d Simplify retrieval APIs 2021-11-22 12:45:42 +01:00
Łukasz Magiera 60ea33b1c7 client: cleanup clientRetrieve 2021-11-22 12:45:42 +01:00
Łukasz Magiera 08e297a217 client: Support json selectors in retrieval 2021-11-22 12:45:42 +01:00
dependabot[bot] 19732d3bd7 Bump color-string from 1.5.3 to 1.6.0 in /lotuspond/front
Bumps [color-string](https://github.com/Qix-/color-string) from 1.5.3 to 1.6.0.
- [Release notes](https://github.com/Qix-/color-string/releases)
- [Changelog](https://github.com/Qix-/color-string/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Qix-/color-string/commits/1.6.0)

---
updated-dependencies:
- dependency-name: color-string
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-22 11:44:58 +00:00
dependabot[bot] e3c9430e7e Bump postcss from 7.0.17 to 7.0.39 in /lotuspond/front
Bumps [postcss](https://github.com/postcss/postcss) from 7.0.17 to 7.0.39.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/7.0.39/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/7.0.17...7.0.39)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-22 11:44:57 +00:00
dependabot[bot] a189906b9b Bump path-parse from 1.0.6 to 1.0.7 in /lotuspond/front
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-22 11:44:55 +00:00
dependabot[bot] 205f54d80d Bump tmpl from 1.0.4 to 1.0.5 in /lotuspond/front
Bumps [tmpl](https://github.com/daaku/nodejs-tmpl) from 1.0.4 to 1.0.5.
- [Release notes](https://github.com/daaku/nodejs-tmpl/releases)
- [Commits](https://github.com/daaku/nodejs-tmpl/commits/v1.0.5)

---
updated-dependencies:
- dependency-name: tmpl
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-22 11:44:53 +00:00
dependabot[bot] d9d54a918f Bump url-parse from 1.4.7 to 1.5.3 in /lotuspond/front
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.4.7 to 1.5.3.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.4.7...1.5.3)

---
updated-dependencies:
- dependency-name: url-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-22 11:44:53 +00:00
Łukasz Magiera 81a2f2f06d Merge pull request #7329 from filecoin-project/feat/lotus-stats-update
Add caches to lotus-stats and splitcode
2021-11-22 12:44:00 +01:00
Łukasz Magiera 3e41844e6c Merge pull request #7644 from filecoin-project/feat/gateway-new-methods
add additional methods to lotus gateway
2021-11-22 12:34:06 +01:00
Łukasz Magiera 2620eab45e Merge pull request #7555 from diancun/dc/check-commit
checkCommit should return SectorCommitFailed
2021-11-22 12:28:16 +01:00
Łukasz Magiera 5b7bf6ca9f Merge pull request #7572 from filecoin-project/asr/post
Wdpost worker: Reduce challenge confidence to 1 epoch
2021-11-22 12:21:41 +01:00
Łukasz Magiera 77dd022243 Merge pull request #7624 from filecoin-project/feat/docker-file-generic
remove api and jaeger env from docker file
2021-11-22 12:21:09 +01:00
Travis Person 17cb5117f4 add additional methods to lotus gateway 2021-11-22 12:19:27 +01:00
Łukasz Magiera 7a9824f00e Merge pull request #7645 from filecoin-project/asr/msig-cancel
CLI: Add a lotus multisig cancel command
2021-11-22 12:14:47 +01:00
Aayush Rajasekaran 9d4489360b Merge pull request #7617 from filecoin-project/asr/v7-actors
Integrate v7 actors
2021-11-19 15:25:45 -05:00
Aayush Rajasekaran 5f1783c9a5 Address review 2021-11-19 15:11:13 -05:00
Aayush Rajasekaran 32fc03886d CLI: Add a lotus multisig cancel command 2021-11-18 19:21:17 -05:00
Travis Person 73182cff3a remove api and jaeger env from docker file 2021-11-18 22:12:31 +00:00
Łukasz Magiera ef0771ee48 Merge pull request #7631 from filecoin-project/remove-jaeger-envvars
remove jaeger envvars
2021-11-18 10:49:52 +01:00
Łukasz Magiera 943c40a233 Merge pull request #7639 from filecoin-project/feat/shed-msg-submsg
lotus-shed msg: Decode submessages/msig proposals
2021-11-18 10:48:16 +01:00
Aarsh Shah 7655e660f3 integrate store-the-hash 2021-11-18 12:07:12 +04:00
Aayush Rajasekaran a5847fd06f Update actors 2021-11-17 20:33:18 -05:00
Aayush Rajasekaran 91fb111462 Update FFI 2021-11-17 17:50:36 -05:00
Łukasz Magiera 9adaa9b967 lotus-shed msg: Decode submessages/msig proposals 2021-11-17 23:10:14 +01:00
Aayush Rajasekaran 8665e32221 Update deps 2021-11-17 15:55:14 -05:00
Aayush Rajasekaran 07f1be0ff6 Plug in the FFI call 2021-11-17 15:55:14 -05:00
Aayush Rajasekaran 1449644c34 Integrate v7 actors 2021-11-17 15:55:14 -05:00
Anton Evangelatov 5454aebf13 CLI tools for the DAGStore inverted index (#7361)
* cli commands for dagstore

* address comments from Dirk

* rename inverted index to piece index
2021-11-17 15:39:45 +02:00
dirkmc a4fd3de0b0 Merge pull request #7634 from filecoin-project/feat/cli-announce-index
CLI command to announce deal to indexers
2021-11-17 13:55:15 +01:00
Dirk McCormick 599a6bfb24 fix: err message 2021-11-17 12:37:15 +01:00
Aarsh Shah 60fe55cdc0 fix lint and gen 2021-11-17 15:25:25 +04:00
Dirk McCormick 501308239f feat: CLI command to announce deal to indexers 2021-11-17 12:16:22 +01:00
Aarsh Shah 21e27b8034 Merge pull request #7622 from filecoin-project/feat/indexer-provider
Integrate indexer provider
2021-11-17 15:11:51 +04:00
Aarsh Shah 8d3017febb make gen should work 2021-11-17 15:02:11 +04:00
Aarsh Shah d196c236b8 fix lint 2021-11-17 14:55:09 +04:00
Aarsh Shah f8c675bc5e green tests 2021-11-17 14:48:28 +04:00
Aarsh Shah caf3cfa7d8 Merge branch 'feat/cid-to-piece-idx' into feat/indexer-provider 2021-11-17 11:43:49 +04:00
Aarsh Shah bfee6699d2 update go mod and inject store the hash index in dagstore 2021-11-17 11:42:14 +04:00
Dirk McCormick 627d4fbf74 wip: storage miner index provider 2021-11-16 17:45:42 +01:00
Cory Schwartz 2894567165 remove jaeger envvars 2021-11-16 06:36:30 -08:00
Anton Evangelatov a633f93707 upgrade go modules 2021-11-12 12:28:43 +01:00
Dirk McCormick 588d6ec828 fix: docs-gen 2021-11-12 09:43:42 +01:00
Dirk McCormick 025d8ebc59 feat: include TestDealRetrieveByAnyCid in CI 2021-11-12 09:43:42 +01:00
Aarsh Shah 189f5f8aae fix deals test 2021-11-12 09:43:42 +01:00
Dirk McCormick 3c37078a85 fix: dagstore wrapper test 2021-11-12 09:43:42 +01:00
Dirk McCormick e309293a47 fix: lint fixes 2021-11-12 09:43:42 +01:00
Aarsh Shah 4d87f16e95 better comparision in test 2021-11-12 09:43:42 +01:00
Aarsh Shah 053317e334 test for retrieval by any cid 2021-11-12 09:43:42 +01:00
Dirk McCormick 662c51605f feat: retrieve from any cid (not just root cid) 2021-11-12 09:43:42 +01:00
Łukasz Magiera e196a81e99 Merge pull request #7613 from hunjixin/feat/add_log_windows_restart
add log for restart windows post scheduler
2021-11-11 15:27:30 +00:00
hunjixin eaac4b6de4 add log for restart windows post scheduler 2021-11-10 14:47:42 +08:00
Aayush Rajasekaran a3c806a7a8 Merge pull request #7605 from filecoin-project/asr/miner-faults
Shed: Add a util to list miner faults
2021-11-07 23:46:39 +00:00
Aayush Rajasekaran 495f08473d Shed: Add a util to list miner faults 2021-11-07 23:33:37 +00:00
Łukasz Magiera 40d5c6f0dc Merge pull request #7592 from filecoin-project/feat/wait-api-flags
add timeout flag to wait-api command
2021-11-04 16:04:24 +01:00
Aayush Rajasekaran 6056858bf8 Merge pull request #7595 from filecoin-project/asr/miner-create
Shed: Add a util to create miners more easily
2021-11-04 12:29:54 +00:00
Menko f01015bac5 Merge pull request #1 from Bloxico/repo_test
Tests
2021-11-03 21:44:04 +01:00
TheMenko ad16bafa66 annotated paych_test 2021-11-03 21:31:33 +01:00
Aayush Rajasekaran 3be0c068b9 Shed: Add a util to create miners more easily 2021-11-03 00:20:48 +00:00
Jiaying Wang cd95b40d61 Merge pull request #7594 from filecoin-project/jen/fix
fix the changelog
2021-11-02 18:02:10 +00:00
Travis Person 60b3ae2ac2 add timeout flag to wait-api command 2021-11-02 17:28:11 +00:00
Jiaying Wang e94e26f529 Merge pull request #7593 from filecoin-project/jen/v1.13.1-rc2
v1.13.1-rc2 prep
2021-11-02 17:26:00 +00:00
Jiaying Wang 6958b6fc2b Merge pull request #7593 from filecoin-project/jen/v1.13.1-rc2
v1.13.1-rc2 prep
2021-11-02 17:25:07 +00:00
jennijuju 34df787be6 update the changelog 2021-11-02 16:27:17 +00:00
Aayush Rajasekaran b3eb9edc34 Merge pull request #7591 from filecoin-project/asr/state-types
Update go-state-types
2021-11-02 16:07:36 +00:00
jennijuju 2767cdba9c v1.13.1-rc2 prep 2021-11-02 15:57:19 +00:00
Aayush Rajasekaran 8cb9c6e21f Update go-state-types 2021-11-02 15:39:46 +00:00
TheMenko b45924a234 annotated repo_test 2021-11-01 10:49:30 +01:00
Travis Person 2d4f5958e2 Add caches to lotus-stats and splitcode 2021-11-01 09:05:14 +00:00
TheMenko fb911a4542 annotated repo_test 2021-11-01 01:24:26 +01:00
TheMenko 9297e1b90d annotated repo_test 2021-10-31 12:24:07 +01:00
vyzo 735f6fec1a update go-libp2p-pubsub to v0.5.6 2021-10-30 19:59:20 -04:00
Łukasz Magiera e0a9cae386 Merge pull request #7559 from diancun/dc/miss-tag
add missing NodeType tag
2021-10-30 09:24:00 +01:00
Jakub Sztandera e7a7d4c75a Merge pull request #7581 from filecoin-project/deps/update-pubsub
update go-libp2p-pubsub to v0.5.6
2021-10-29 20:04:21 +02:00
vyzo 758b54f36d update go-libp2p-pubsub to v0.5.6 2021-10-29 13:53:55 +03:00
Aayush Rajasekaran 6455b0edcc Wdpost worker: Reduce challenge confidence to 1 epoch 2021-10-27 11:32:37 -04:00
Jiaying Wang 6fbaba1323 Merge pull request #7569 from filecoin-project/jen/v1.13.1-rc1
lotus v1.13.1-rc1
2021-10-26 22:41:13 -04:00
Jiaying Wang d9fd1d9a46 Merge pull request #7568 from filecoin-project/jen/v13.2
bump the master version to v1.13.2-dev
2021-10-26 22:36:59 -04:00
Jennifer Wang 5a5a6f9cd2 lotus v1.13.1-rc1 2021-10-26 22:31:32 -04:00
Jennifer Wang 14c26567b2 bump the master version to v1.13.2-dev 2021-10-26 21:58:02 -04:00
Jiaying Wang 8efc8051d1 Merge pull request #7563 from filecoin-project/jen/7561
fix  the withdrawn amount unit
2021-10-26 21:13:22 -04:00
Jiaying Wang bcfe7a76e8 Merge pull request #7562 from filecoin-project/raulk/rename-makeActor
rename vm#make{=>Account}Actor().
2021-10-26 20:55:09 -04:00
Jiaying Wang 7d17ee5960 Merge pull request #7566 from filecoin-project/jen/actor
update to actor v6.0.1 to make the logs less noisy
2021-10-26 20:53:35 -04:00
Jennifer Wang dc6bd2b015 use existing util 2021-10-26 20:53:16 -04:00
Jennifer Wang 724dfc6a4d tidy 2021-10-26 20:10:18 -04:00
Jennifer Wang 47b82bdaea update to actor v6.0.1 to make the logs less noisy 2021-10-26 19:53:53 -04:00
Jennifer Wang 0fc1239445 make jen 2021-10-26 19:50:17 -04:00
Jennifer Wang 18834de7d0 parse attofil to fil 2021-10-26 19:37:29 -04:00
Jiaying Wang 6607019788 Merge pull request #7564 from filecoin-project/jen/proof
update to proof v10.1.0
2021-10-26 14:45:30 -04:00
Jennifer Wang 1f339f623e update to proof v10.1.0 2021-10-26 14:36:19 -04:00
Raúl Kripalani 95d294db63 rename vm#make{=>Account}Actor(). 2021-10-26 19:11:00 +01:00
emad22552 4eaf89666f fix manual-stateless-deal with interactive
fix checking manual-stateless-deal with interactive deal making as --manual-stateless-deal can not be combined with interactive deal mode.
2021-10-26 14:00:41 +03:30
Jiaying Wang a94a48f70b Merge pull request #7546 from filecoin-project/jen/deep-da-boss-order
To make Deep happy
2021-10-26 01:49:02 -04:00
yaohcn 3bfaf5af16 add missing NodeType tag 2021-10-22 10:19:23 +08:00
yaohcn 3123400759 checkCommit should return SectorCommitFailed 2021-10-22 10:09:44 +08:00
Aayush Rajasekaran e1deed3b1a Merge pull request #7544 from filecoin-project/asr/shed
Shed: Add a util to find miner based on peerid
2021-10-20 17:55:16 -07:00
jennijuju 9369c54f54 rename a fil plus cmd upon request 2021-10-20 17:53:16 -07:00
Jiaying Wang 67c732a100 Merge pull request #7537 from filecoin-project/jen/13tomaster
misc: back-port v1.13.0 back to master
2021-10-20 17:30:47 -07:00
jennijuju 3f7b15b598 Resolve Conflicts 2021-10-20 17:23:09 -07:00
Łukasz Magiera f7884c4f45 Merge pull request #7527 from filecoin-project/feat/show-prepared-waitres
Show prepared tasks in sealing jobs
2021-10-20 15:22:35 +01:00
Łukasz Magiera a60ccbf106 Merge pull request #7541 from filecoin-project/feat/sector-state-prom
Expose per-state sector counts on the prometheus endpoint
2021-10-20 15:22:22 +01:00
Łukasz Magiera 97e4921a4a Merge pull request #7542 from filecoin-project/feat/gs-metrics
Collect and expose graphsync metrics
2021-10-20 15:22:03 +01:00
Łukasz Magiera 8182ffcf9f Merge pull request #7532 from filecoin-project/chore/unpin-yamux
unpin the yamux dependency
2021-10-20 14:58:11 +01:00
Aayush Rajasekaran 9ba7f372cd Shed: Add a util to find miner based on peerid 2021-10-19 18:46:09 -07:00
Łukasz Magiera b7fe165b8f metrics: More correct units in graphsync metrics 2021-10-19 19:57:47 +02:00
Łukasz Magiera d2e9d21031 Gather graphsync metrics on provider side as well 2021-10-19 19:45:25 +02:00
Łukasz Magiera 32a855b984 Fix lint 2021-10-19 19:22:32 +02:00
Łukasz Magiera 9a993d25d0 Collect and expose graphsync metrics 2021-10-19 19:20:00 +02:00
Łukasz Magiera b1c06ece85 mod tidy 2021-10-19 19:03:53 +02:00
Łukasz Magiera 32ce12acfc Update go-graphsync to v0.10.4 2021-10-19 19:03:38 +02:00
Łukasz Magiera 726d9b86ea fix lint 2021-10-19 18:56:30 +02:00
Łukasz Magiera 852ac4c178 Expose per-state sector counts on the prometheus endpoint 2021-10-19 18:53:07 +02:00
Łukasz Magiera d9100981ad Merge pull request #7495 from filecoin-project/feat/inline-codegen
Inline codegen
2021-10-19 10:25:32 +01:00
Łukasz Magiera e508055dc1 make gen 2021-10-19 11:13:23 +02:00
Łukasz Magiera ba171954b4 Merge pull request #7479 from filecoin-project/feat/prov-check-by-storage
Add storage-id flag to proving check
2021-10-19 10:06:30 +01:00
Łukasz Magiera 1d8a9c75d4 Use .latestActorsVersion in actors/version.go 2021-10-19 11:05:14 +02:00
Łukasz Magiera c2d4dcae19 Merge pull request #7538 from filecoin-project/feat/markets-v1.13.3
Update to go-fil-markets v1.13.3
2021-10-19 10:02:33 +01:00
Dirk McCormick 116ed01197 feat: update to go-fil-markets v1.13.3 2021-10-19 10:03:07 +02:00
jennijuju 7b8d1cc54c Merge branch 'releases' into jen/13tomaster 2021-10-18 20:58:28 -07:00
Jiaying Wang 7a55e8e892 Merge pull request #7534 from filecoin-project/release/v1.13.0
Release/v1.13.0
2021-10-18 18:43:32 -07:00
Jiaying Wang 3ab8ec57f1 Merge pull request #7533 from filecoin-project/jen/v13
v1.13.0 prep
2021-10-18 18:31:33 -07:00
Jiaying WangandAayush Rajasekaran 0e17b6c066 Update CHANGELOG.md
Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
2021-10-18 18:20:13 -07:00
Jiaying WangandAayush Rajasekaran 44e092c07c Update CHANGELOG.md
Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
2021-10-18 18:20:07 -07:00
jennijuju c8a187e779 update the changelog 2021-10-18 18:13:14 -07:00
jennijuju 76d009e409 bump the version to v1.13.0
export SEND_GRID_USER_VERIFICATION_ID=d-cee69cd8d2e34c09b8454cb58cb18b69
2021-10-18 13:55:06 -07:00
Łukasz Magiera 080aa3356a Fix locks in worker-tracked 2021-10-18 20:19:21 +02:00
Steven Allen 3b2e8c439a unpin the yamux dependency
This has been pinned for a while under suspicion that it was causing
graphsync stalls. However, the libp2p team has been unable to reliably
reproduce the issue and believes that it's likely a graphsync issue.

Libp2p issue: https://github.com/libp2p/go-yamux/issues/61
2021-10-18 10:44:32 -07:00
Łukasz Magiera 70589e4406 Block work in tracked worker before it is started 2021-10-18 18:44:56 +02:00
Łukasz Magiera 261238e157 Show prepared tasks in sealing jobs 2021-10-18 18:44:56 +02:00
Łukasz Magiera 11d738eee0 Track prepared work 2021-10-18 18:44:56 +02:00
Łukasz Magiera 3943c3ae6f inline-gen: Fix lint 2021-10-18 17:54:12 +02:00
Łukasz Magiera 463f55ba13 Use more inline-gen 2021-10-18 17:46:50 +02:00
Łukasz Magiera e493d9e2e3 make: Run inline-gen 2021-10-18 17:33:28 +02:00
Łukasz Magiera 19f52b4541 inline-gen: Slightly nicer comment format 2021-10-18 17:21:53 +02:00
Łukasz Magiera 9606dce425 Add inline-gen to itests 2021-10-18 17:17:54 +02:00
Łukasz Magiera 98ff1c4d20 Merge pull request #7531 from marten-seemann/statfs-build-constraint
add missing build constraint to statfs_unix.go
2021-10-18 16:02:48 +01:00
Łukasz Magiera e5d73f2923 Merge pull request #7530 from filecoin-project/fix/ap-fail-used-acc
Fix used sector space accounting after AddPieceFailed
2021-10-18 15:55:37 +01:00
Marten Seemann 03806f7063 add missing build constraint to statfs_unix.go 2021-10-18 16:29:01 +02:00
Łukasz Magiera 63c8b8edd1 Fix used sectors space accounting after AddPieceFailed 2021-10-18 09:55:28 +02:00
Łukasz Magiera a0795165af Merge pull request #7494 from filecoin-project/fix/move-shared-data-loss
Don't remove sector data when moving data into a shared path
2021-10-15 08:16:10 +01:00
Jiaying Wang c23cff45f6 Merge pull request #7492 from filecoin-project/jen/v1.13.0-rc3-prep
v1.13.0 rc3
2021-10-13 23:00:26 -04:00
Jennifer Wang 02cef1353e update changelog 2021-10-13 22:49:52 -04:00
Łukasz Magiera 008120747e sealing: Recover sectors after failed AddPiece 2021-10-13 21:29:54 -04:00
frrist 9964f80bb7 fix: support node instantiation in external packages
- implement ChainGetPath on ChainModuleAPI
2021-10-13 21:29:26 -04:00
Jiaying Wang afe54ab5f3 Merge pull request #7511 from filecoin-project/frrist/fix-lily
fix: support node instantiation in external packages
2021-10-13 20:33:17 -04:00
frrist 6cd6732225 fix: support node instantiation in external packages
- implement ChainGetPath on ChainModuleAPI
2021-10-13 15:24:28 -07:00
Jiaying WangandAayush Rajasekaran 429b9a1bc5 Update CHANGELOG.md
Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
2021-10-13 11:37:58 -04:00
Aayush Rajasekaran d063a32def Merge pull request #7507 from filecoin-project/jen/12tomaster
releases -> master
2021-10-13 11:16:57 -04:00
jennijuju 1ebd908fe3 update CHANGELOG 2021-10-12 20:15:50 -04:00
jennijuju e1a08b1c89 Merge branch 'releases' into jen/v1.13.0-rc3-prep 2021-10-12 20:15:18 -04:00
jennijuju dd998037cf Merge branch 'releases' into jen/12tomaster 2021-10-12 20:06:55 -04:00
Jiaying Wang 6d8a6c480f Merge pull request #7505 from filecoin-project/release/v1.12.0
Release/v1.12.0
2021-10-12 19:51:06 -04:00
Jiaying Wang b1b558ed07 Update CHANGELOG.md 2021-10-12 19:40:53 -04:00
Jiaying Wang 593c7e78b1 Update CHANGELOG.md 2021-10-12 19:37:54 -04:00
Jiaying Wang 9a3c8a2134 Update CHANGELOG.md 2021-10-12 19:33:06 -04:00
Jiaying WangandAayush Rajasekaran c54ecd2802 Update CHANGELOG.md
Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
2021-10-12 19:28:25 -04:00
Jiaying Wang d5e22e0fee Merge pull request #7506 from filecoin-project/jen/v1.12.0
v1.12.0
2021-10-12 19:25:07 -04:00
jennijuju 1a3a4d23c0 update the changelog 2021-10-12 19:24:05 -04:00
Jiaying Wang 0eb2152012 Merge pull request #7480 from filecoin-project/jen/v1.12.0-rc2-prep
v1.12.0-rc2
2021-10-12 19:15:26 -04:00
jennijuju 57f1cd71ad bump the version to v1.12.0 2021-10-12 15:21:06 -04:00
jennijuju fa64cacfa7 integrate actor v6 2021-10-12 15:11:06 -04:00
Łukasz Magiera 9dbeb3028d Merge pull request #7499 from filecoin-project/arajasek-patch-1
FilecoinEC: Improve a log message
2021-10-12 16:13:00 +01:00
Aayush Rajasekaran 8e168cb657 FilecoinEC: Improve a log message 2021-10-12 10:34:47 -04:00
Łukasz Magiera 5616dfb1bc Some more inline codegen 2021-10-11 22:57:24 +02:00
Łukasz Magiera ddef708178 Basic inline codegen 2021-10-11 22:25:41 +02:00
Łukasz Magiera 67bdc266af Merge pull request #7493 from filecoin-project/jen/12-master
Make chocolate back to master
2021-10-11 20:45:20 +01:00
Łukasz Magiera f352c18290 Don't remove sector data when moving data into a shared path 2021-10-11 21:11:38 +02:00
Jennifer Wang d1e15e61d0 Merge branch 'release/v1.12.0' into jen/12-master 2021-10-11 14:37:32 -04:00
Jennifer Wang 9fcc27edd5 Merge branch 'release/v1.12.0' into jen/v1.13.0-rc3-prep 2021-10-11 14:11:01 -04:00
Rod Vagg e47cbae885 chore(deps): use tagged github.com/ipld/go-ipld-selector-text-lite
Ref: https://github.com/filecoin-project/lotus/pull/6393#discussion_r722866111
2021-10-11 13:24:50 -04:00
Jakub Sztandera 1a6c9b9c0e gofmt
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-10-11 13:18:54 -04:00
Jakub Sztandera f1b4d2b1b3 Fix missnamed variable
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-10-11 13:18:49 -04:00
Jakub SztanderaandJiaying Wang 1bd7f5b7ec Fix withdrawn amount equiality check
Co-authored-by: Jiaying Wang <42981373+jennijuju@users.noreply.github.com>
2021-10-11 13:18:39 -04:00
Jakub SztanderaandJiaying Wang 8319323329 Fix withdrawn amount equiality check
Co-authored-by: Jiaying Wang <42981373+jennijuju@users.noreply.github.com>
2021-10-11 13:18:34 -04:00
Jakub SztanderaandJiaying Wang 20544b6b7b Fix withdrawn amount equiality check
Co-authored-by: Jiaying Wang <42981373+jennijuju@users.noreply.github.com>
2021-10-11 13:18:17 -04:00
Aayush RajasekaranandJiaying Wang 1242e4a292 Update cmd/lotus-miner/actor.go
Co-authored-by: Jiaying Wang <42981373+jennijuju@users.noreply.github.com>
2021-10-11 13:18:12 -04:00
Aayush Rajasekaran 42a233c083 Bugfix: Use current startup network versions 2021-10-11 13:15:57 -04:00
Aayush Rajasekaran 047f7e5015 Bugfix: actor withdraw CLI should depend on network version 2021-10-11 13:13:33 -04:00
Jiaying Wang d1e1f8bdce Merge pull request #7482 from filecoin-project/chore/backport_cleanup-withdrawn-dependency
Chore/backport cleanup withdrawn dependency
2021-10-11 13:09:32 -04:00
Jiaying Wang 6e61431759 Merge pull request #7480 from filecoin-project/jen/v1.12.0-rc2-prep
v1.12.0-rc2
2021-10-11 12:57:58 -04:00
Jennifer Wang 16743a25c2 print confidence in decimal 2021-10-11 12:34:51 -04:00
Jiaying Wang 3a3edbbb16 Merge pull request #7489 from filecoin-project/feat/go-fil-marketsv1.13.2
update to go-fil-markets v1.13.2
2021-10-11 10:42:15 -04:00
Dirk McCormick 8957213c56 feat: update to go-fil-markets v1.13.2 2021-10-11 15:29:59 +02:00
dirkmc f9433811c7 Merge pull request #7454 from filecoin-project/nonsense/retry-in-publish-deal
itests: retry deal when control addr is out of funds
2021-10-11 15:14:27 +02:00
Jennifer Wang a5ee1c69fe update the changelog 2021-10-11 08:48:58 -04:00
Jakub Sztandera 61e1297cc7 gofmt
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-10-11 08:24:55 -04:00
Jakub Sztandera bb74308ac9 Fix missnamed variable
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-10-11 08:24:50 -04:00
Jakub SztanderaandJiaying Wang 8eeecb431b Fix withdrawn amount equiality check
Co-authored-by: Jiaying Wang <42981373+jennijuju@users.noreply.github.com>
2021-10-11 08:24:45 -04:00
Łukasz Magiera df2a852e6c Merge pull request #7477 from filecoin-project/chore/fix-docsgen-cli-envvar-polution
Stop adding Jennifer's $HOME to lotus docs
2021-10-11 13:24:35 +01:00
Jakub SztanderaandJiaying Wang e40c7b7a86 Fix withdrawn amount equiality check
Co-authored-by: Jiaying Wang <42981373+jennijuju@users.noreply.github.com>
2021-10-11 08:24:33 -04:00
Jakub SztanderaandJiaying Wang 177033d0f2 Fix withdrawn amount equiality check
Co-authored-by: Jiaying Wang <42981373+jennijuju@users.noreply.github.com>
2021-10-11 08:24:24 -04:00
Aayush RajasekaranandJiaying Wang cab724841a Update cmd/lotus-miner/actor.go
Co-authored-by: Jiaying Wang <42981373+jennijuju@users.noreply.github.com>
2021-10-11 08:24:00 -04:00
Aayush Rajasekaran 2241f02621 Bugfix: actor withdraw CLI should depend on network version 2021-10-11 08:23:53 -04:00
Łukasz Magiera c6b28b4d8b Merge pull request #7481 from filecoin-project/chore/cleanup-withdrawn-dependency
peerstore@v0.2.9 was withdrawn, let's not depend on it directly
2021-10-11 13:23:43 +01:00
Jiaying Wang c92d73384b Merge pull request #7483 from filecoin-project/asr/withdraw-fix
Bugfix: withdraw CLIs should depend on network version
2021-10-11 08:23:23 -04:00
Jakub Sztandera 5abba9ca9f gofmt
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-10-11 14:10:06 +02:00
Jakub Sztandera 35291983a1 Fix missnamed variable
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-10-11 14:06:21 +02:00
Anton Evangelatov a19dbb8c91 remove log 2021-10-11 14:03:56 +02:00
Anton Evangelatov 6a3bb184b7 more tests for deals when provider has no funds in control addr 2021-10-11 14:03:56 +02:00
Anton Evangelatov 1acb6b4328 update CLI command to take arg; reduce time for itest 2021-10-11 14:03:56 +02:00
Anton Evangelatov 6e5ccc87cf cli: add retry for deals stuck in Publish with no funds 2021-10-11 14:03:55 +02:00
Jakub SztanderaandJiaying Wang 4853762763 Fix withdrawn amount equiality check
Co-authored-by: Jiaying Wang <42981373+jennijuju@users.noreply.github.com>
2021-10-11 14:03:37 +02:00
Jakub SztanderaandJiaying Wang 8533ae0032 Fix withdrawn amount equiality check
Co-authored-by: Jiaying Wang <42981373+jennijuju@users.noreply.github.com>
2021-10-11 14:03:28 +02:00
Jakub SztanderaandJiaying Wang 90ff1d3ccf Fix withdrawn amount equiality check
Co-authored-by: Jiaying Wang <42981373+jennijuju@users.noreply.github.com>
2021-10-11 14:03:21 +02:00
Aayush Rajasekaran 23c6597836 Bugfix: Use current startup network versions 2021-10-11 08:02:58 -04:00
Jiaying Wang b4302df892 Merge pull request #7486 from filecoin-project/asr/builds
Bugfix: Use correct startup network versions
2021-10-11 07:37:19 -04:00
Aayush Rajasekaran 1723793c35 Bugfix: Use current startup network versions 2021-10-10 14:26:10 -04:00
Aayush RajasekaranandJiaying Wang be774f55ce Update cmd/lotus-miner/actor.go
Co-authored-by: Jiaying Wang <42981373+jennijuju@users.noreply.github.com>
2021-10-10 10:40:22 -04:00
Aayush Rajasekaran e158b1d1e4 Bugfix: actor withdraw CLI should depend on network version 2021-10-09 20:17:03 -04:00
Peter Rabbitson 28e94bf9db peerstore@v0.2.9 was withdrawn, let's not depend on it directly 2021-10-08 22:55:15 +02:00
Peter Rabbitson 6184e8a943 peerstore@v0.2.9 was withdrawn, let's not depend on it directly 2021-10-08 22:47:51 +02:00
Jennifer Wang fb4ef413f4 bump the version to v1.12.0-rc2 2021-10-08 15:15:29 -04:00
Cory Schwartz b0687ecb09 restore filters for the build-macos job 2021-10-08 15:15:25 -04:00
Jennifer Wang 46688e501b set network v14 chocolate upgrade epoch 2021-10-08 15:10:10 -04:00
Jennifer Wang e62aaa3d3d update to actor v6-rc2 2021-10-08 15:09:57 -04:00
Steven Allen c776811ea9 Merge pull request #7478 from filecoin-project/chore/depupgrade-2021-10-08
Dep upgrade pass
2021-10-08 10:05:28 -07:00
Łukasz Magiera c8042540d5 Merge pull request #7474 from filecoin-project/backport/prometheus-common-bump
Stop indirectly depending on deprecated github.com/prometheus/common
2021-10-08 14:15:52 +01:00
Łukasz Magiera bfcfb199a0 Add storage-id flag to proving check 2021-10-08 14:56:08 +02:00
Peter Rabbitson 8b01725129 Dep upgrade pass
Touching just the seemingly non-controversial ones
2021-10-08 12:37:40 +02:00
Peter Rabbitson cb39dd8ed0 Stop adding Jennifer's $HOME to lotus docs 2021-10-08 10:15:20 +02:00
Łukasz Magiera 734a03cf82 Merge pull request #7467 from filecoin-project/chore/normalize-recursive-sel-references
Normlize selector use within lotus
2021-10-07 19:05:07 +01:00
Łukasz Magiera aed6e8d0be Merge pull request #7335 from filecoin-project/feat/sched-ready-work
sealing: Improve scheduling of ready work
2021-10-07 18:49:02 +01:00
Peter Rabbitson ec0f7795d3 Stop indirectly depending on deprecated github.com/prometheus/common
Backport of #7473
2021-10-07 19:45:43 +02:00
Łukasz Magiera c95940acac Merge pull request #7466 from filecoin-project/chore/remove-dead-example
Remove dead example code + dep
2021-10-07 17:42:21 +01:00
Łukasz Magiera 3215eba0eb Merge pull request #7464 from filecoin-project/rvagg/tag-go-ipld-selector-text-lite
chore(deps): use tagged github.com/ipld/go-ipld-selector-text-lite
2021-10-07 17:41:41 +01:00
Łukasz Magiera 4e98f0abdc Merge pull request #7473 from filecoin-project/chore/bump-prometheus-export-get-out-of-deprecated-deploop
Stop indirectly depending on deprecated github.com/prometheus/common
2021-10-07 17:37:29 +01:00
Łukasz Magiera 0ba88ac53a Merge pull request #7469 from filecoin-project/chore/remove-obsolete-gs-testplan
Remove obsolete GS testplan - it now lives in go-graphsync
2021-10-07 17:35:25 +01:00
Peter Rabbitson 2c10dc6c57 Stop indirectly depending on deprecated github.com/prometheus/common parts 2021-10-07 18:23:13 +02:00
Peter Rabbitson 778483166f Remove obsolete GS testplan - it now lives in go-graphsync 2021-10-07 12:23:43 +02:00
Peter Rabbitson a40aa9f90b Normlize selector use within lotus 2021-10-07 11:01:29 +02:00
Peter Rabbitson c4a7de9d37 Remove dead example code + dep 2021-10-07 09:44:50 +02:00
Rod Vagg 9e76aba3d1 chore(deps): use tagged github.com/ipld/go-ipld-selector-text-lite
Ref: https://github.com/filecoin-project/lotus/pull/6393#discussion_r722866111
2021-10-07 17:34:28 +11:00
Łukasz Magiera 1993efe201 Merge pull request #7444 from filecoin-project/feat/ap-fail-retry
sealing: Recover sectors after failed AddPiece
2021-10-07 03:18:15 +01:00
Łukasz Magiera e74f70346e Merge pull request #7456 from filecoin-project/asr/shed-util
Shed: Add a util to find the most recent null tipset
2021-10-07 03:18:02 +01:00
Jiaying Wang 530011fd09 Merge pull request #7458 from filecoin-project/jen/13rc2prep
v1.13.0-rc2
2021-10-06 22:16:36 -04:00
Łukasz Magiera 1cdb414bf8 Merge pull request #7457 from filecoin-project/feat/update-graphsync-v0.10.1
Update go-graphsync v0.10.1
2021-10-07 03:08:04 +01:00
Jennifer Wang a572787013 v1.13.0-rc1 2021-10-06 21:20:19 -04:00
Cory Schwartz 3f92940a19 restore filters for the build-macos job 2021-10-06 21:18:51 -04:00
Jiaying Wang 177aa3cffd Merge pull request #7455 from filecoin-project/restore-macos-filters
restore filters for the build-macos job
2021-10-06 21:18:24 -04:00
hannahhoward 6e44755b55 feat(deps): update go-graphsync v0.10.1 2021-10-06 21:08:36 -04:00
hannahhoward 7e6c3a330a feat(deps): update go-graphsync v0.10.1 2021-10-06 17:21:38 -07:00
Aayush Rajasekaran 89db4235ce Shed: Add a util to find the most recent null tipset 2021-10-06 19:37:35 -04:00
Cory Schwartz 001fc7dd53 restore filters for the build-macos job 2021-10-06 13:40:44 -07:00
Jiaying Wang 46ae2556c7 Merge pull request #7452 from filecoin-project/jen/13prep
v1.13.0-rc1
2021-10-06 02:12:44 -04:00
Jennifer Wang 9b69b10fea update changelog 2021-10-06 02:02:11 -04:00
Jiaying Wang a460ab84fa Merge pull request #7451 from filecoin-project/jen/masterbump
bump master to v1.13.1-dev
2021-10-06 01:34:56 -04:00
Jennifer Wang bac783774d v1.13.0-rc1 2021-10-06 00:36:23 -04:00
Jennifer Wang 4221461ede bump master to v1.13.1-dev 2021-10-06 00:31:41 -04:00
Aayush Rajasekaran a324b3fce0 Merge pull request #7450 from filecoin-project/arajasek-patch-1
StateSearchMsg: Correct usage of the allowReplaced flag
2021-10-06 00:25:02 -04:00
Aayush Rajasekaran bd2176c398 Test StateSearchMsg's use of the allowReplaced flag 2021-10-05 23:58:31 -04:00
Aayush Rajasekaran 441bcdc4af StateSearchMsg: Correct usage of the allowReplaced flag 2021-10-05 23:58:16 -04:00
Jiaying Wang 26ae8bb3a7 Merge pull request #6393 from filecoin-project/feat/datamodel-selector-retrieval
Feat/datamodel selector retrieval
2021-10-05 12:27:41 -04:00
Peter Rabbitson f8ac98bf46 Adjust error wording 2021-10-05 18:16:14 +02:00
Peter Rabbitson 5e6aceeb0e Merge remote-tracking branch 'origin/master' into feat/datamodel-selector-retrieval 2021-10-05 18:15:51 +02:00
Jiaying Wang cbb147de23 Merge pull request #7405 from filecoin-project/feat/update-graphsync-0.10.0
Update to graphsync to v0.10.0, enable seperate storage and retrieval transfer limits
2021-10-05 11:50:59 -04:00
Jiaying Wang f60692c7ef Merge pull request #7427 from filecoin-project/rvagg/traversal-budget
Limit maximum number of DAG links to traverse
2021-10-05 11:21:14 -04:00
Rod Vagg 97c2cdb8d6 traversals: limit link load count for SelectiveCar use as well 2021-10-05 10:47:49 +02:00
Rod Vagg 43f7fd5e10 traversals: limit maximum number of DAG links to traverse
Impacts CommP and graphsync transfers
2021-10-05 10:47:49 +02:00
Dirk McCormick a4e2fce9ca feat: update to go-fil-markets v1.13.1 2021-10-05 10:40:01 +02:00
Rod Vagg bff3af81d5 chore(docs): docsgen 2021-10-05 14:25:14 +11:00
Jiaying Wang 1d2f84322d Merge pull request #7440 from filecoin-project/jen/12tomaster
Chocolate to master
2021-10-04 23:20:19 -04:00
hannahhoward 368d72ebfe feat(graphsync): update to v0.10.0-rc1
also add config changes
2021-10-05 14:13:58 +11:00
Jiaying Wang 8d9f3719ce Update CHANGELOG.md 2021-10-04 22:51:01 -04:00
Peter Rabbitson af0d9b650d Error on corner cases with corresponding negative tests 2021-10-04 23:21:24 +02:00
Peter Rabbitson 2a1094fc17 Merge banch feat/go-fil-markets-v1.13.0 into feat/datamodel-selector-retrieval 2021-10-04 21:56:11 +02:00
Łukasz Magiera cadbd00ac4 sealing: Recover sectors after failed AddPiece 2021-10-04 20:00:07 +02:00
Dirk McCormick f70ec02a6c feat: go-fil-markets-v1.13.0 2021-10-04 17:35:32 +02:00
Dirk McCormick 16973bc2e8 feat: use go-fil-markets@v1.13.0 2021-10-04 15:41:40 +02:00
Jennifer Wang 38e01cba83 Merge branch 'release/v1.12.0' into jen/12tomaster 2021-10-04 02:38:00 -04:00
Łukasz Magiera 9af82f2d68 sched: Fix taskDone chan deadlock 2021-10-03 17:09:43 +02:00
Łukasz Magiera b87142ec8e wip improve scheduling of ready work 2021-10-03 10:38:08 +02:00
Aayush Rajasekaran 41be8fc9e5 Set the calibnet chocolate epoch 2021-10-02 17:28:46 -04:00
Aayush Rajasekaran ec14259b5a Prep the butterfly network for v14 2021-10-02 17:27:39 -04:00
Aayush Rajasekaran 172bbed962 Merge pull request #7426 from filecoin-project/jen/12rc1prep
v1.12.0-rc1 prep
2021-10-02 12:04:09 -04:00
Jennifer Wang faece90316 update butterfly 2021-10-01 20:37:13 -04:00
Jennifer Wang 2e1d463933 make lint happy 2021-10-01 20:36:13 -04:00
Jennifer Wang 5f8c44125b Merge branch 'releases' into jen/12rc1prep 2021-10-01 20:31:29 -04:00
Jennifer Wang 5b9104f68e add changelog 2021-10-01 19:55:12 -04:00
Jennifer Wang 2931be5fc5 bump the version to v1.12.0-rc1 2021-10-01 19:45:49 -04:00
Aayush Rajasekaran 50ce475701 Upgrade to actors v6-rc1 2021-10-01 17:57:32 -04:00
Aayush Rajasekaran 77de45f684 Set Chocolate upgrade epoch for butterfly 2021-10-01 17:50:46 -04:00
Travis Person 9b80ea4cf1 reset of the butterfly network 2021-10-01 17:33:58 -04:00
Travis Person c104cb446b reset butterfly network 2021-10-01 17:25:59 -04:00
Aayush Rajasekaran 207746f8c4 Merge pull request #7410 from filecoin-project/feat/nv14-pc-balancer
Precommit batch balancer support/config
2021-10-01 17:23:47 -04:00
Łukasz Magiera fc10281d96 Merge pull request #7420 from filecoin-project/deps/proofs-v10.0.0
Update proofs to v10.0.0
2021-10-01 22:20:09 +01:00
Aayush Rajasekaran a335cb3767 Update to latest actors 2021-10-01 17:11:05 -04:00
Aayush Rajasekaran 367112fd4b Merge pull request #7421 from filecoin-project/asr/fault-max
Extend FaultMaxAge to 6 weeks for actors v6 on test networks only
2021-10-01 16:35:08 -04:00
Aayush Rajasekaran 54695c6f8c Extend FaultMaxAge to 6 weeks for actors v6 on test networks only 2021-10-01 15:47:23 -04:00
Aayush Rajasekaran f004d036dc Set BatchPreCommitAboveBaseFee correctly 2021-10-01 14:23:41 -04:00
Aayush Rajasekaran f8a89cafd8 Fix logs 2021-10-01 14:23:41 -04:00
Aayush Rajasekaran d6dd86b419 Fix lint 2021-10-01 14:23:41 -04:00
Łukasz Magiera 6fd9d5f28b Precommit batch balancer support/config 2021-10-01 14:23:41 -04:00
Łukasz Magiera 28e720fef2 Merge pull request #7407 from filecoin-project/nonsense/check-deal-start-epoch-on-SectorAddPieceToAny
check for deal start epoch on SectorAddPieceToAny
2021-10-01 18:03:10 +01:00
Łukasz Magiera d7fbd8b67d Update proofs to v10.0.0 2021-10-01 18:38:27 +02:00
Anton Evangelatov 809289f5ef add Dealmaking.StartEpochSealingBuffer config 2021-10-01 17:44:15 +02:00
Anton Evangelatov c2fa54ca9c check for deal start epoch on SectorAddPieceToAny 2021-10-01 17:42:09 +02:00
Łukasz Magiera edcb28737c Merge pull request #7418 from filecoin-project/feat/storage-stats
Expose storage stats on the metrics endpoint
2021-10-01 15:40:14 +01:00
Łukasz Magiera a8a9818043 Expose storage states on the metrics endpoint 2021-10-01 14:45:01 +02:00
Łukasz Magiera 95e8b59367 Merge pull request #7341 from filecoin-project/mg/feat/panic-reporter
feat: Catch panic to generate report and reraise
2021-10-01 10:50:19 +01:00
Aayush Rajasekaran 1b1879342c Merge pull request #7412 from filecoin-project/feat/config-env-docs
Add envconfig docs to the config
2021-09-30 12:49:46 -04:00
Łukasz Magiera b3432b512e Generate default configs into docs 2021-09-30 18:23:53 +02:00
Łukasz Magiera 7c84e22c3e Add envconfig docs to the config 2021-09-30 18:23:05 +02:00
Aayush Rajasekaran 89d61ca238 Merge pull request #7404 from filecoin-project/asr/specs-update
Update to actors master
2021-09-30 11:19:03 -04:00
Mike GreenbergandŁukasz Magiera 2f8a2fc907 fix: Update lotusminer default paths
Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
2021-09-30 09:06:55 -04:00
Łukasz Magiera 4192e40a9a Merge pull request #7403 from filecoin-project/jen/backport
releases -> master
2021-09-30 11:44:53 +01:00
Aayush Rajasekaran 0fd5dbee11 Merge pull request #7376 from filecoin-project/asr/fix-drand
Fix Drand fetching around null tipsets
2021-09-29 21:28:22 -04:00
Aayush Rajasekaran 8756df2447 Fix tests after specs update 2021-09-29 21:27:49 -04:00
Aayush Rajasekaran 84b6734063 Incorporate the new PublishStorageDealsReturn 2021-09-29 19:13:13 -04:00
Aayush Rajasekaran 2bafdf7271 Modify tooling to support new WithdrawBalance return 2021-09-29 13:01:04 -04:00
Aayush Rajasekaran dc8de20b9a Update to latest actors 2021-09-29 12:16:01 -04:00
Aayush Rajasekaran c3c46e9097 Fix Drand fetching around null tipsets 2021-09-29 11:57:59 -04:00
Jennifer Wang d7690aa719 Merge branch 'releases' into jen/backport 2021-09-29 03:21:19 -04:00
Jiaying Wang a0ddb10deb Merge pull request #7401 from filecoin-project/release/v1.11.3
Release/v1.11.3
2021-09-29 03:04:27 -04:00
Jiaying Wang bb244f2e0b Merge pull request #7400 from filecoin-project/jen/release-prep
v1.11.3 release prep
2021-09-29 02:52:20 -04:00
Jennifer Wang 7c015840a6 v1.11.3 release prep 2021-09-29 02:42:38 -04:00
Mike Greenberg 89d7a72a4b fix: undo hasty changes 2021-09-28 11:30:35 -04:00
Jakub Sztandera 98c99b4fea Merge pull request #5609 from filecoin-project/fix/vouchers
Verify Voucher locks in VoucherValidUnlocked
2021-09-28 14:29:04 +02:00
Łukasz Magiera cd66afb05c Merge pull request #7355 from filecoin-project/feat/shed-fr32
lotus shed: fr32 utils
2021-09-27 23:33:19 +01:00
Mike Greenberg c3faadf749 fix: Remove debug syscall; Tighten perms; Strip spaces in label 2021-09-27 17:54:43 -04:00
Aayush Rajasekaran d9e711eac5 Merge pull request #7378 from filecoin-project/asr/weight
ChainStore: Add a tiebreaker rule for tipsets of equal weight
2021-09-27 12:34:16 -04:00
Łukasz Magiera 83c8e981b4 lotus shed: fr32 utils 2021-09-27 18:31:36 +02:00
Aayush Rajasekaran 44405bd1a0 ChainStore: Add a tiebreaker rule for tipsets of equal weight 2021-09-27 10:23:30 -04:00
Łukasz Magiera dbcb662f9c Merge pull request #7384 from filecoin-project/feat/more-allinfo
Add more info to miner allinfo command
2021-09-27 11:54:19 +01:00
Łukasz Magiera 53a9dd5da4 Add more info to miner allinfo command 2021-09-24 12:02:06 +02:00
Łukasz Magiera 0e7e665e6d Merge pull request #7312 from filecoin-project/nonsense/crossref-datatransfer-storagedeal
add `lotus-miner storage-deals list --format=json` with transfers
2021-09-24 10:57:59 +01:00
Łukasz Magiera 8e0314b3a3 Merge pull request #7362 from filecoin-project/chore/update-libp2p
Update go-libp2p to v0.15.0
2021-09-23 14:24:12 +01:00
Łukasz Magiera 7759f13a13 Merge pull request #7373 from filecoin-project/jen/nerpa
remove nerpanet related code
2021-09-23 14:22:47 +01:00
Łukasz Magiera fa7a5789aa Merge pull request #7383 from lanzafame/patch-1
Fix formatting
2021-09-23 14:20:35 +01:00
Aarsh Shah 7694f895c2 update lotus soup dep 2021-09-23 09:15:47 +04:00
Adrian Lanzafame 92190c7e0b Fix formatting 2021-09-23 12:39:39 +10:00
Jennifer Wang f57d4b4126 say bye to more nerpa 2021-09-22 21:17:05 -04:00
Jiaying Wang 21148c90db Merge pull request #7377 from filecoin-project/mg/fix/binary-ci-check-grep
fix: escape periods to match actual periods in version
2021-09-22 21:15:27 -04:00
Łukasz Magiera 381638abea Merge pull request #7379 from filecoin-project/asr/msg-header
Sync: Sanity check msg siggy type
2021-09-22 23:32:25 +01:00
Aayush Rajasekaran 31666b9617 Sync: Sanity check msg siggy type 2021-09-22 16:59:11 -04:00
Jakub Sztandera 7e933f7045 Merge pull request #7366 from filecoin-project/feat/sync-master-main
sync branch main with master on updates
2021-09-22 21:03:55 +02:00
Mike Greenberg 67864334a3 fix: escape periods to match actual periods in version 2021-09-22 15:00:59 -04:00
Mike Greenberg 574b5c03dc chore: Expose build.BuildTypeString() 2021-09-22 09:58:07 -04:00
Łukasz Magiera e68c8cb1ee Merge pull request #7357 from filecoin-project/asr/v6actors
Add v6 actors
2021-09-22 11:08:10 +01:00
Mike Greenberg b3816bc2dc chore: inline build version within PanicReporter 2021-09-22 04:55:39 -04:00
Aarsh Shah 9a07c2fd38 revert go car update 2021-09-22 12:55:22 +04:00
Aarsh Shah 44ed3dc46b update go mod 2021-09-22 10:44:42 +04:00
Jennifer Wang 6064d2f2f1 remove nerpanet related code base as it was deprecated on aug 16 https://docs.filecoin.io/about-filecoin/networks/#deprecated-networks 2021-09-22 00:59:38 -04:00
Jiaying Wang 2c8357beb0 Merge pull request #7371 from filecoin-project/jen/rc2
v1.11.3-rc2
2021-09-21 23:10:44 -04:00
Jennifer Wang 08cec487cf make gen 2021-09-21 23:01:43 -04:00
Jennifer Wang 6b9aeca71d update the changelog 2021-09-21 22:51:01 -04:00
Jennifer Wang 153470c3d2 bump lotus version to v1.11.3-rc2 2021-09-21 22:48:56 -04:00
hannahhoward f77dc42ef0 fix(deps): use go-graphsync v0.9.3 with hotfix 2021-09-21 22:14:20 -04:00
hannahhoward 490f70f071 feat(deps): update go-graphsync v0.9.2 2021-09-21 22:14:04 -04:00
Anton Evangelatov 0c1e29390a unit test where StateMarketStorageDeal return nil, err 2021-09-21 22:13:51 -04:00
Anton Evangelatov bf9d0bca40 GetCurrentDealInfo err: handle correctly err case 2021-09-21 22:13:46 -04:00
Jiaying Wang 8e45d27a06 Merge pull request #7369 from filecoin-project/jen/proof
update to ffi to update-bellperson-proofs-v9-0-2
2021-09-21 22:08:39 -04:00
Jennifer Wang e996c27619 update to ffi to update-bellperson-proofs-v9-0-2 2021-09-21 17:43:27 -04:00
Travis Person ac2194b0eb sync branch main with master on updates 2021-09-21 20:07:41 +00:00
Aayush Rajasekaran 7b4c657e90 Add v6 actors 2021-09-21 14:23:14 -04:00
Aayush Rajasekaran b9bfcc4b69 Randomness: Move getters from ChainAPI to StateAPI 2021-09-21 14:20:15 -04:00
Łukasz Magiera fe56995244 Merge pull request #7363 from filecoin-project/nonsense/fix-filepath-join
fix staging area path buildup
2021-09-21 16:06:36 +01:00
Łukasz Magiera 714d7a146e Merge pull request #7359 from filecoin-project/feat/update-graphsync-v0.9.2
Update go-graphsync v0.9.2
2021-09-21 15:55:50 +01:00
Anton Evangelatov c7e4217693 fix staging area path buildup 2021-09-21 16:45:00 +02:00
Aarsh Shah 7863a269ad fix lotus-soup 2021-09-21 15:31:16 +04:00
hannahhoward e70cefaa28 fix(deps): use go-graphsync v0.9.3 with hotfix 2021-09-21 04:26:02 -07:00
Aarsh Shah a80bc34d59 fix build 2021-09-21 15:23:01 +04:00
Aarsh Shah 89ac8b09b5 update libp2p 2021-09-21 15:10:04 +04:00
Łukasz Magiera 2437a4182d Merge pull request #7322 from filecoin-project/asr/drand-state
Randomness: Move getters from ChainAPI to StateAPI
2021-09-21 09:20:12 +01:00
hannahhoward ee7b6f2470 feat(deps): update go-graphsync v0.9.2 2021-09-20 16:12:58 -07:00
Mike Greenberg 926858aeec fix: persist defaults to repo path; incl version dump 2021-09-20 15:40:48 -04:00
Łukasz Magiera 3c65595406 Merge pull request #7337 from ldoublewood/fix/wrong-life-time
fix bug for CommittedCapacitySectorLifetime
2021-09-19 14:51:52 +02:00
Jiaying Wang 38f7cbc6c7 Merge pull request #7346 from filecoin-project/nonsense/add-missing-continue-to-err-GetCurrentDealInfo
GetCurrentDealInfo err: handle correctly err case
2021-09-18 08:50:54 -04:00
Mike Greenberg b4a129068a fix: lint errors 2021-09-17 18:11:56 -04:00
Mike Greenberg ccf24b9952 chore: Configurable LOTUS_PANIC_JOURNAL_LOOKBACK 2021-09-17 18:09:47 -04:00
Mike Greenberg 3508a5b664 chore: Use After hooks and proper args 2021-09-17 18:01:54 -04:00
Mike Greenberg f79d34be5c chore: Separate repo and persistance paths 2021-09-17 18:01:26 -04:00
Jiaying Wang 79e141e71d Merge pull request #7331 from filecoin-project/mg/release/binary-version-check
feat(ci): include version/cli checks in tagged releases
2021-09-17 11:26:57 -04:00
Anton Evangelatov 605953565b unit test where StateMarketStorageDeal return nil, err 2021-09-17 15:14:53 +02:00
Anton Evangelatov 34e3dc2b37 GetCurrentDealInfo err: handle correctly err case 2021-09-17 14:55:56 +02:00
Mike Greenberg 595b51ecdd feat: Catch panic to generate report and reraise 2021-09-16 22:51:10 -04:00
ldoublewood eb2bbfebe3 format code by make gen 2021-09-17 00:20:24 +08:00
Łukasz Magiera 6df17bceb1 Merge pull request #7334 from filecoin-project/chore/sched-worklk
storagemgr: Cleanup workerLk around worker resources
2021-09-16 12:08:12 +02:00
Łukasz Magiera 45dc9697bf Merge pull request #7336 from filecoin-project/fix/dealcheck-panic
fix a panic in HandleRecoverDealIDs
2021-09-16 12:06:58 +02:00
ldoublewood 3a1fc8e7da fix bug for CommittedCapacitySectorLifetime 2021-09-16 09:25:02 +08:00
Łukasz Magiera 438d5ce78e fix a panic in HandleRecoverDealIDs 2021-09-15 18:13:01 +02:00
Mike Greenberg 90827afa47 feat(ci): include version/cli checks in tagged releases 2021-09-15 12:12:05 -04:00
Łukasz Magiera ef03314c6d storagemgr: Cleanup workerLk around worker resources 2021-09-15 16:35:19 +02:00
Łukasz Magiera 4fc78bf720 Merge pull request #7327 from filecoin-project/mg/feat/check-params-on-start
fix: Enforce verification key integrity check regardless of TRUST_PARAMS=1
2021-09-15 11:42:37 +02:00
Aayush Rajasekaran 1d6db306ec Randomness: Move getters from ChainAPI to StateAPI 2021-09-15 00:03:13 +02:00
Mike Greenberg b681078b06 feat(lotus): Ensure vk and srs keys are checked despite TRUST_PARAMS 2021-09-14 12:09:33 -04:00
Łukasz Magiera aab42dd96f Merge pull request #7328 from filecoin-project/asr/change-actor
Miner CLI: Allow trying to change owners of any miner actor
2021-09-14 12:17:05 +02:00
Aayush Rajasekaran 888b2040de Miner CLI: Allow trying to change owners of any miner actor 2021-09-14 11:50:30 +02:00
Łukasz Magiera e786a0507e Merge pull request #7307 from filecoin-project/jen/ci
build macOS CI
2021-09-11 00:18:37 -07:00
Jennifer Wang cd08788792 Bump the xcode version for ci and run build macos jobs more 2021-09-10 13:35:25 -04:00
ognots 143b6d7a37 remove job to install jq
jq is already installed now in either a newer version of CircleCI's MacOS VMs or in a previous CI step.
I ran a failing macos job with ssh enabled, and inspected '/usr/local/bin' and found found the following output

lrwxr-xr-x    1 distiller  admin    23 Jun 22 14:50 jq -> ../Cellar/jq/1.6/bin/jq

the existing symlink causes the 'Install jq' job to fail.
removing this job should resolve the issue
2021-09-10 13:32:17 -04:00
Łukasz Magiera aae9bf3f46 Merge pull request #7309 from filecoin-project/ci/mac-os-jq-fix
remove job to install jq
2021-09-10 09:21:19 -07:00
ognots 4d9b852875 remove job to install jq
jq is already installed now in either a newer version of CircleCI's MacOS VMs or in a previous CI step.
I ran a failing macos job with ssh enabled, and inspected '/usr/local/bin' and found found the following output

lrwxr-xr-x    1 distiller  admin    23 Jun 22 14:50 jq -> ../Cellar/jq/1.6/bin/jq

the existing symlink causes the 'Install jq' job to fail.
removing this job should resolve the issue
2021-09-10 10:21:40 -04:00
Anton Evangelatov 3e10f2e250 make gen 2021-09-10 15:18:32 +02:00
Anton Evangelatov 67dc7523d5 fixup 2021-09-10 15:09:37 +02:00
Anton Evangelatov caaff9b7af remove flag 2021-09-10 15:06:51 +02:00
Anton Evangelatov fe602ab3bb refactor 2021-09-10 15:05:51 +02:00
Łukasz Magiera 20a7193b06 Merge pull request #7311 from filecoin-project/feat/minerinfo-more-dealstates
Show more deal states in miner info
2021-09-10 04:18:00 -07:00
Łukasz Magiera 65befc281e Merge pull request #7310 from swift-mx/master
fix: check padSector Cid
2021-09-10 03:39:48 -07:00
Łukasz Magiera b4a3eb55e1 Show more deal states in miner info 2021-09-10 12:21:33 +02:00
Anton Evangelatov 027c1b5ab8 add lotus-miner storage-deals lwt 2021-09-10 12:21:02 +02:00
swift-mx b0b016b58c fix: check padSector Cid 2021-09-10 18:13:07 +08:00
Peter Rabbitson 0444435589 Expose basic text-based datamodel selector on retrieval
Syntaxt of selection is located at
https://pkg.go.dev/github.com/ipld/go-ipld-selector-text-lite#SelectorSpecFromPath

Example use, assuming that:
  - The root of the deal is a plain dag-pb unixfs directory
  - The directory is not sharded
  - The user wants to retrieve the first entry in that directory

  lotus client retrieve --miner f0XXXXX --datamodel-path-selector 'Links/0/Hash' bafyROOTCID ~/output

For a much more elaborate example see the top of ./itests/deals_partial_retrieval_test.go
2021-09-10 09:44:11 +02:00
Łukasz Magiera 0a04302fb2 Merge pull request #7308 from filecoin-project/feat/sectors-list-unproven
Add --unproven flag to the sectors list command
2021-09-09 17:08:58 -07:00
Łukasz Magiera 8612d1e824 Add --unproven flag to the sectors list command 2021-09-09 23:29:52 +02:00
Jiaying Wang 1ce7c250d7 Merge pull request #7306 from filecoin-project/chore/prep-retrieval-for-selectors_no-func-changes
Prep retrieval for selectors: no functional changes
2021-09-09 10:45:42 -07:00
Peter Rabbitson 2c5f4386ba Prepare the retrieval codepath for selectors
Slight import-name shuffle, no functional changes
2021-09-09 12:42:58 +02:00
Łukasz Magiera 92c12f9bde Merge pull request #7304 from filecoin-project/asr/seed
Seed: improve helptext
2021-09-09 02:45:49 -07:00
Łukasz Magiera 3b25934649 Merge pull request #7305 from filecoin-project/asr/mempool-hash
Mempool: reduce size of sigValCache
2021-09-09 02:43:53 -07:00
Aayush Rajasekaran aef741ae19 Mempool: reduce size of sigValCache 2021-09-08 16:08:41 -04:00
Aayush Rajasekaran 16c60914eb Seed: improve helptext 2021-09-08 15:26:37 -04:00
Jiaying Wang 5db02ca059 Merge pull request #7299 from filecoin-project/jen/v1.11.3-rc1-prep
v1.11.3-rc1
2021-09-07 23:08:28 -07:00
Jennifer Wang d8a5812f76 increase miner codecov threshold from 1% to 1.5% 2021-09-08 01:57:33 -04:00
Jennifer Wang daf0b57528 make gen 2021-09-08 01:42:51 -04:00
Jennifer Wang b7c6143cef init v1.11.3 changelog 2021-09-08 01:36:07 -04:00
Jiaying Wang d1d8845ab2 Merge pull request #7298 from filecoin-project/jen/v1.11.4-dev
bump master to v1.11.4-dev
2021-09-07 22:33:14 -07:00
Jennifer Wang 6907797783 version bump v1.11.3-rc1 2021-09-08 01:31:23 -04:00
Jennifer Wang 612befc962 bump master to v1.11.4-dev 2021-09-08 01:23:35 -04:00
Jiaying Wang aa09b799b3 Merge pull request #7297 from filecoin-project/jen/proof
update to proof v0.9.2
2021-09-07 22:11:45 -07:00
Jennifer Wang f751291f1a update to proof v0.9.2 2021-09-08 01:03:11 -04:00
Łukasz Magiera b7f771b258 Merge pull request #7261 from filecoin-project/feat/sectors-list-sealing-deals
Show deal sizes is sealing sectors
2021-09-07 11:17:19 -07:00
Łukasz Magiera 93e1c80569 Merge pull request #7291 from Kayuii/master
docker entrypoint.sh missing variable escape character
2021-09-07 10:57:20 -07:00
Łukasz Magiera dfc039276d address review 2021-09-07 19:42:52 +02:00
Łukasz Magiera 8b9e9fede4 docsgen 2021-09-07 18:49:53 +02:00
Łukasz Magiera 186c4990dd Reduce nesting in sectors list command 2021-09-07 18:49:53 +02:00
Łukasz Magiera e4044151f0 Show deal sizes is sealing sectors 2021-09-07 18:49:53 +02:00
Jiaying Wang b089cc4fc3 Merge pull request #7294 from filecoin-project/feat/update-graphsync-v0.9.1
Update go-graphsync v0.9.1
2021-09-07 08:27:10 -07:00
hannahhoward a63bc10d26 feat(deps): update go-graphsync v0.9.1 2021-09-07 16:24:06 +02:00
Steven Allen b093d8a6e4 Merge pull request #7292 from filecoin-project/nonsense/fix-flaky-test-increase-deal-size
itests: remove cid equality comparison
2021-09-07 12:21:03 +02:00
Anton Evangelatov 567d0546ec itests: remove equality comparison for cids 2021-09-07 10:57:10 +02:00
KAYUII a75d67a42c Update docker-lotus-miner-entrypoint.sh
Missing variable escape character
2021-09-07 15:11:29 +08:00
KAYUII 4f5fa3be3c Update docker-lotus-entrypoint.sh
Missing variable escape character
2021-09-07 15:10:43 +08:00
Jiaying Wang 0216697b98 Merge pull request #7288 from filecoin-project/jen/backport
v1.11.2 -> master
2021-09-06 18:35:29 -07:00
Jennifer Wang 768ecbc397 Merge branch 'releases' into jen/backport 2021-09-06 21:24:57 -04:00
Jiaying Wang 785a54692b Merge pull request #7284 from filecoin-project/release/v1.11.2
Release/v1.11.2
2021-09-06 17:23:39 -07:00
Jiaying Wang 41b8b6d416 Merge pull request #7266 from filecoin-project/jen/v1.11.2-final
v1.11.2
2021-09-06 17:11:50 -07:00
Jennifer Wang aef4cc829b add dag bulk initialization note in changelog 2021-09-06 19:53:57 -04:00
Jennifer Wang f7b90cb5c1 docsgen 2021-09-06 19:36:10 -04:00
Jennifer Wang db34b828e4 update changelog 2021-09-06 19:25:19 -04:00
Łukasz Magiera ff12fd3a61 Merge pull request #7273 from frankffenn/fix/commit-batch-panic
fix index out of range
2021-09-06 10:24:42 -07:00
Jiaying Wang 52cb19cc5c Merge pull request #7234 from filecoin-project/feat/dealpub-validation
dealpublisher: Fully validate deals before publishing
2021-09-06 10:12:11 -07:00
Łukasz Magiera 3a3a4fc413 Merge pull request #7276 from filecoin-project/nonsense/reject-deal-too-many-staging-deals
introduce MaxStagingDealsBytes - reject new deals if our staging deals area is full
2021-09-06 10:01:44 -07:00
Jiaying Wang e922791012 Merge pull request #7197 from filecoin-project/feat/update-graphsync-v0.9.0
Update to unified go-graphsync v0.9.0
2021-09-06 08:44:42 -07:00
Anton Evangelatov 992cc3ffbf itests: MaxStagingDealsBytes integration test 2021-09-06 17:39:35 +02:00
Anton Evangelatov 9e2129338a clarify that 0 is unlimited 2021-09-06 17:07:19 +02:00
Anton Evangelatov 0b7793a927 GiB to Bytes 2021-09-06 15:52:25 +02:00
Anton Evangelatov c69d1db1eb introduce MaxStagingDealsGiB - reject new deals if our staging deals area is "full" 2021-09-06 15:01:06 +02:00
frank 179458efe9 index out of range 2021-09-06 16:20:23 +08:00
Łukasz Magiera 42135ec7cc dealpublisher: Test deal verification 2021-09-03 19:40:02 +02:00
Dirk McCormick dc1f482a7d feat: update to markets v1.12.0 2021-09-03 16:23:36 +02:00
hannahhoward 91804d5746 feat(deps): update go-graphsync v0.9.0 2021-09-03 16:22:51 +02:00
hannahhoward b4e9bc50f8 feat(deps): update go-graphsync v0.8.0
Update to go-graphsync v0.8.0 with go-ipld-prime linksystem branch & trusted store.
2021-09-03 16:21:55 +02:00
Jennifer Wang 0853b99fca bump the version 2021-09-02 17:43:54 -04:00
Jennifer Wang a6ddd167c6 integrate the proof patch: tag proofs-v9-revert-deps-hotfix 2021-09-02 17:25:46 -04:00
Łukasz Magiera 386910589d dealpublisher: Fully validate deals before publishing 2021-09-02 23:11:09 +02:00
Łukasz Magiera 212400b635 Merge pull request #7262 from filecoin-project/chore/tweak-codecov-threshold
Increase threshold from 0.5% to 1%
2021-09-02 22:30:02 +02:00
ZenGround0 56acfe30af 0.5% => 1% test threshold after seeing .75% in the wild 2021-09-02 16:03:55 -04:00
Łukasz Magiera c9bf20ec56 Merge pull request #7260 from filecoin-project/jen/proof-patch
integrate the proof patch: tag proofs-v9-revert-deps-hotfix
2021-09-02 22:03:09 +02:00
Jennifer Wang 6379d5129f integrate the proof patch: tag proofs-v9-revert-deps-hotfix 2021-09-02 15:40:15 -04:00
Łukasz Magiera baa1ec098d Merge pull request #7253 from filecoin-project/feat/markets-v1.11
update to go-fil-markets v1.11.0
2021-09-02 20:48:54 +02:00
Łukasz Magiera 3c2d854a9e Merge pull request #7246 from filecoin-project/feat/sectorinfo-partition
Add partition info to the 'sectors status' command
2021-09-02 20:22:11 +02:00
Łukasz Magiera fea430a553 Add partition info to the 'sectors status' command 2021-09-02 20:01:15 +02:00
Łukasz Magiera 4659b9207c Merge pull request #7256 from filecoin-project/fix/finearly-accounting
sealing: Fix sector state accounting with FinalizeEarly
2021-09-02 19:56:45 +02:00
Łukasz Magiera 31efe8a690 Merge pull request #7255 from filecoin-project/cleanup/consensus
chain: Cleanup consensus logic
2021-09-02 19:48:37 +02:00
Łukasz Magiera 7ef1b62b41 sealing: Fix sector state accounting with FinalizeEarly 2021-09-02 19:27:10 +02:00
Łukasz Magiera 727bb84592 stmgr: drop MethdosMap 2021-09-02 18:58:34 +02:00
Łukasz Magiera 30fccaa0bd fix lint 2021-09-02 18:45:18 +02:00
Łukasz Magiera 95b128b7bc chain: Cleanup consensus logic 2021-09-02 18:09:37 +02:00
Dirk McCormick dbee23c895 feat: update to go-fil-markets v1.11.0 2021-09-02 14:06:14 +02:00
Steven Allen 591f8f561a Merge pull request #7232 from filecoin-project/chore/builder-repo-cleanup
builder: Handle chainstore config in ConfigFullNode
2021-09-02 13:54:30 +02:00
Łukasz Magiera 5831a6ba4a Merge pull request #7245 from filecoin-project/fix/commagg-loop
sealing: Fix retry loop in SubmitCommitAggregate
2021-09-02 11:31:34 +02:00
Łukasz Magiera 41db98d49f sealing: Fix tests 2021-09-01 12:09:44 +02:00
Łukasz Magiera b280e29409 sealing: Fix retry loop in SubmitCommitAggregate 2021-09-01 11:33:23 +02:00
Jiaying Wang 570edcbbb9 Merge pull request #7225 from filecoin-project/jen/rc2-prep
v1.11.2-rc2
2021-08-31 12:32:35 -07:00
Steven Allen 6a02237f6f Merge pull request #7210 from filecoin-project/fix/fork-check
fix: correctly handle null blocks when detecting an expensive fork
2021-08-31 11:01:45 -07:00
Jennifer Wang 074eac16cc update the ffi commit 2021-08-31 13:46:03 -04:00
Steven Allen 91da70fb7d fix: comment spelling 2021-08-31 10:37:51 -07:00
Łukasz Magiera 7a38cd9286 Merge pull request #7236 from filecoin-project/fix/expired-precomm
sectors expired: Handle precomitted and unproven sectors correctly
2021-08-31 18:25:24 +02:00
Łukasz Magiera 4c607d92f9 Merge pull request #7233 from filecoin-project/fix/storage-reserved-spam
stores: Fix reserved disk usage log spam
2021-08-31 18:20:52 +02:00
Łukasz Magiera daaa725e3b sectors expired: Handle precomitted and unproven sectors correctly 2021-08-31 16:24:29 +02:00
Łukasz Magiera a85e9953c9 Merge pull request #7230 from filecoin-project/fix/gateway-check-getpath-ts
gateway: check tipsets in ChainGetPath
2021-08-31 13:46:46 +02:00
Łukasz Magiera 3118bd1039 stores: Fix reserved disk usage log spam 2021-08-31 13:36:09 +02:00
Łukasz Magiera ed05eaf1d1 gateway: Fix lint 2021-08-31 13:26:46 +02:00
Łukasz Magiera 52e93371bd builder: Handle chainstore config in ConfigFullNode 2021-08-31 13:25:18 +02:00
Łukasz Magiera 41dfd010b3 gateway: check tipsets in ChainGetPath 2021-08-31 12:51:13 +02:00
Łukasz Magiera b0f57d74e5 Merge pull request #7000 from filecoin-project/feat/refactor-events
Refactor events subsystem
2021-08-31 12:02:22 +02:00
Steven Allen d113813b33 Merge pull request #7211 from filecoin-project/test/audit-disabled-tests
test: re-enable disabled tests
2021-08-30 17:03:03 -07:00
dirkmc 1da59fa2fe fix events API timeout handling for nil blocks (#7184) 2021-08-30 17:00:24 -07:00
Steven Allen 1cf556c3a2 feat: expose ChainGetPath on the gateway 2021-08-30 16:43:21 -07:00
Steven Allen 003eae81ce fix: address review 2021-08-30 16:43:21 -07:00
Steven Allen f518e34131 fix: atomically get head when registering an observer
This lets us always call check (accurately).
2021-08-30 16:43:21 -07:00
Steven Allen 82ac0a24a0 test: improve chain event tests 2021-08-30 16:43:21 -07:00
Steven Allen 3846170302 refactor events system 2021-08-30 16:43:21 -07:00
Steven Allen a875e9ba73 fix: check parents when adding tipsets to the "cache" 2021-08-30 16:43:21 -07:00
Steven Allen 43bbde1e6b fix: close chain head subscription when the reader is slow
The reader can just re-subscribe when they're ready to catch up. This
prevents a slow reader from bogging down the entire system.
2021-08-30 16:43:21 -07:00
Steven Allen 14754f1b18 chore: dedup datastore import 2021-08-30 16:43:21 -07:00
Steven Allen 08207912a5 fix: check if at genesis when testing for expensive forks in Call
Otherwise, we could try to lookup the parent of the block at height 0.
2021-08-30 16:23:13 -07:00
Steven Allen e6902304d5 fix: address expensive fork review 2021-08-30 16:20:23 -07:00
Jennifer Wang c298d8ca3e update the changelog 2021-08-30 18:58:25 -04:00
Jennifer Wang b4719c9daf docsgen 2021-08-30 19:03:11 -04:00
Jennifer Wang f44ba40450 update the changelog 2021-08-30 18:58:25 -04:00
Jennifer Wang 8385f1d2a1 bump the version 2021-08-30 18:54:15 -04:00
Jennifer Wang 37c9c397d3 update ffi to b4e4271db8f6e961934cd6ffff44fda3c610b9c0 per #7207 2021-08-30 18:52:16 -04:00
Raúl Kripalani c3e12a69cc upgrade go-data-transfer; propagate deal cancellations. 2021-08-30 18:50:38 -04:00
Steven Allen d1a68df21a Merge pull request #7221 from filecoin-project/fix/soup-mod
fix: make lotus soup use the correct dependencies
2021-08-30 10:47:41 -07:00
Steven Allen 0789a2927a fix: make lotus soup use the correct dependencies
1. Add a replace directive for lotus.
2. Make sure we're not depending on commits that don't exist.
2021-08-30 08:57:24 -07:00
Łukasz Magiera 3e450b8818 Merge pull request #7208 from filecoin-project/raulk/fix-deal-cancellation
upgrade go-data-transfer; propagate deal cancellations.
2021-08-30 14:06:14 +02:00
Łukasz Magiera 14bfd00c0e Merge pull request #7220 from filecoin-project/revert/on-deal-exp-changes
revert changes to OnDealExpiredOrChanged in #5431 #7201
2021-08-30 11:10:37 +02:00
Dirk McCormick 7b7a5b0b21 revert: changes to OnDealExpiredOrChanged in #5431 #7201 2021-08-30 10:42:41 +02:00
Steven Allen 8e52bf30c1 test: re-enable disabled tests
1. Rewrite VRF test to actually test win counts, and enable it.
2. Stop skipping some tests that now pass.
2021-08-27 15:43:55 -07:00
Steven Allen 165735d01a fix: correctly handle null blocks when detecting an expensive fork
Also improve/fix documentation to reflect the _actual_ tipset that's
passed into upgrades.

And update some comments.

fixes #7192
2021-08-27 15:04:01 -07:00
Raúl Kripalani 8f2d6ac042 upgrade go-data-transfer; propagate deal cancellations. 2021-08-27 20:50:16 +01:00
Steven Allen 714635c75c Merge pull request #7205 from filecoin-project/feat/reduce-startup-spam
Reduce lotus-miner startup spam
2021-08-27 12:49:46 -07:00
Łukasz Magiera b0293fe0e5 Merge pull request #7204 from filecoin-project/feat/natmap-config
config for disabling NAT port mapping
2021-08-27 19:44:08 +02:00
Łukasz Magiera 2293ecd8e8 Reduce lotus-miner startup spam 2021-08-27 19:41:54 +02:00
Łukasz Magiera 7db4ddaae7 Merge pull request #7202 from filecoin-project/filcloud-info-blocks
Add optional mined block list to miner info
2021-08-27 19:18:38 +02:00
Łukasz Magiera 3708a7ac30 config: Port some docstrings from go-ipfs 2021-08-27 19:17:32 +02:00
Łukasz Magiera 17b7dcef6f config for disabling NAT port mapping 2021-08-27 19:14:29 +02:00
raulk 982a3774f1 Merge pull request #7201 from filecoin-project/fix/on-deal-expired 2021-08-27 12:45:36 +01:00
Łukasz Magiera 22d75f4843 Tweak miner info --blocks output 2021-08-27 13:41:41 +02:00
Łukasz Magiera 4630216c38 Merge branch 'info-blocks' of github.com:filcloud/lotus-mirror into filcloud-info-blocks 2021-08-27 13:20:05 +02:00
Dirk McCormick 07dcb074f8 fix: catch deal slashed because sector was terminated 2021-08-27 12:56:23 +02:00
Łukasz Magiera a63f5c8bf2 Merge pull request #7025 from lanzafame/fix/need-empty-storage-json
fix: init restore adds empty storage.json
2021-08-27 12:29:27 +02:00
Łukasz Magiera c19ee58f46 Merge pull request #7194 from filecoin-project/feat/big-data
Insert miner and network power data as gibibytes to avoid int64 overflows
2021-08-27 11:19:54 +02:00
Łukasz Magiera 525c584fcf Merge pull request #7185 from filecoin-project/feat/ap-check-cid
sealing: Check piece CIDs after AddPiece
2021-08-27 11:14:12 +02:00
raulk a8bd8d13a9 Merge pull request #5431 from filecoin-project/refactor/mkts-deal-exp-params
markets: OnDealExpiredOrSlashed - get deal by proposal instead of deal ID
2021-08-27 09:26:09 +01:00
Dirk McCormick ac51b8eabc feat: go-fil-markets v1.9.0 2021-08-27 09:22:44 +02:00
dirkmc 77a19774cf fix events API timeout handling for nil blocks (#7184) 2021-08-27 09:05:00 +02:00
Dirk McCormick aa8ac05d6b fix: replace panic with err in OnDealExpiredOrSlashed 2021-08-27 09:02:56 +02:00
Dirk McCormick c7e7f89026 refactor: OnDealExpiredOrSlashed get deal by proposal instead of deal ID 2021-08-27 09:02:56 +02:00
Travis Person 0e8abc1973 Insert miner and network power data as gibibytes to avoid int64 overflows. 2021-08-27 00:01:44 +00:00
Steven Allen f33c02e56b Merge pull request #7191 from filecoin-project/ci/re-enable-broken-integration-test
Revert "Merge pull request #7187 from filecoin-project/test/disable-broken-testground"
2021-08-26 15:07:48 -07:00
Steven Allen 737ee90e69 Revert "Merge pull request #7187 from filecoin-project/test/disable-broken-testground"
This reverts commit a9826dce27, reversing
changes made to 8bcd917c12.
2021-08-26 14:27:28 -07:00
Łukasz Magiera b42171dc04 sealing: Check piece CIDs after AddPiece 2021-08-26 13:02:15 -07:00
Steven Allen c664f9e30c Merge pull request #7189 from filecoin-project/ci/code-cov-ignore
ci: exclude cruft from code coverage
2021-08-26 13:01:00 -07:00
Steven Allen a9826dce27 Merge pull request #7187 from filecoin-project/test/disable-broken-testground
fix: disable broken testground integration test
2021-08-26 12:45:19 -07:00
Steven Allen 1cecf3c9cb ci: exclude cruft from code coverage
1. Exclude generated code.
2. Exclude generated actors, we mostly test against the latest version.
2021-08-26 12:40:12 -07:00
Steven Allen b9015f8f29 fix: disable broken testground integration test 2021-08-26 12:25:35 -07:00
Steven Allen 8bcd917c12 Merge pull request #7181 from filecoin-project/asr/log
Incoming: improve a log message
2021-08-26 10:25:01 -07:00
Łukasz Magiera 55dbbf5f0c Merge pull request #7108 from filecoin-project/feat/alerting
Simple alert system; FD limit alerts
2021-08-26 16:34:04 +02:00
Łukasz Magiera 1ba427f638 alerting: Address review 2021-08-26 16:09:18 +02:00
Łukasz Magiera 667836fbe5 alerting: Add a test 2021-08-26 15:45:19 +02:00
Łukasz Magiera 88df721dcc alerting: Add Type to AlertEvent 2021-08-26 15:45:19 +02:00
Łukasz Magiera 502f2ba2ef alerting: Add some docs 2021-08-26 15:45:19 +02:00
Łukasz Magiera 2d79b34a1d fix lint 2021-08-26 15:45:19 +02:00
Łukasz Magiera d6e309aa01 Show alert count in lotus-miner info 2021-08-26 15:45:19 +02:00
Łukasz Magiera e2ba650a8c cli for checking alerts 2021-08-26 15:45:17 +02:00
Łukasz Magiera b094e0913d untangle fsjournal dependencies 2021-08-26 15:44:45 +02:00
Łukasz Magiera 5366821144 api for getting alert states 2021-08-26 15:44:45 +02:00
Łukasz Magiera 81b1dd12f8 Simple alert system; FD limit alerts 2021-08-26 15:44:45 +02:00
Adrian Lanzafame 15667db6a9 journal: make current log file have a fixed named (#7112) 2021-08-26 09:48:28 +01:00
Steven Allen 7c484cae13 Merge pull request #7104 from filecoin-project/nonsense/fix-repeat-string-negative
call string.Repeat always with positive int
2021-08-25 09:34:16 -07:00
Aayush Rajasekaran bdd1c36802 Incoming: improve a log message 2021-08-25 12:26:10 -04:00
Łukasz Magiera 1dbfa9caf6 Merge pull request #7180 from filecoin-project/asr/versionbump
Bump version to v1.11.3-dev
2021-08-25 17:51:03 +02:00
Aayush Rajasekaran de79bf57e5 Bump version to v1.11.13-dev 2021-08-25 11:18:38 -04:00
Aarsh Shah 7739051725 Merge pull request #7177 from filecoin-project/feat/fix-send-nil-throttle
Fix throttling bug
2021-08-25 16:44:25 +05:30
Aarsh Shah 928ac2191b fix throttling bug 2021-08-25 16:19:02 +05:30
Anton Evangelatov 548865e8dd simplify assignments to vmemBar and ramBar 2021-08-25 11:48:15 +03:00
Anton Evangelatov 0eacb9b9c8 call string.Repeat always with positive int 2021-08-25 11:48:15 +03:00
Steven Allen 87fc8db5a9 Merge pull request #7174 from filecoin-project/fix/timed-blockstore-test
fix: make TestTimedCacheBlockstoreSimple pass reliably
2021-08-24 18:06:06 -07:00
Aayush Rajasekaran 2495c52b05 Merge pull request #7099 from filecoin-project/asr/verifreg-nonmsig
Shed: Create a verifreg command for when VRK isn't a multisig
2021-08-24 21:03:38 -04:00
Aayush Rajasekaran b3966ab4eb Fix typo in comment 2021-08-24 20:39:28 -04:00
Aayush Rajasekaran 0c0fd00788 Merge pull request #7173 from filecoin-project/fix/publish-test-redux
fix TestDealPublisher
2021-08-24 20:39:15 -04:00
Aayush Rajasekaran 95965615a4 Merge pull request #7176 from filecoin-project/fix/disable-batch-deal-test
test: disable flaky TestBatchDealInput
2021-08-24 20:37:29 -04:00
Steven Allen 1105c24e8c test: disable flaky TestBatchDealInput
See #4611.
2021-08-24 15:37:52 -07:00
Steven Allen b509f1f098 Merge pull request #7148 from filecoin-project/raulk/test-large-deals
itests: support larger sector sizes; add large deal test.
2021-08-24 12:21:11 -07:00
Steven Allen cbf69f6ded fix: make TestTimedCacheBlockstoreSimple pass reliably 2021-08-24 11:35:56 -07:00
Steven Allen ee62dac67b Merge pull request #7166 from filecoin-project/chore/remove-replace
chore: remove unecessary replace
2021-08-24 11:11:25 -07:00
Steven Allen add699d238 fix: make sure we start the publish timer before recording the time
Otherwise, our nice and deterministic test may keep repeatedly setting
the time to _right_ before the timer fires.
2021-08-24 11:05:51 -07:00
Steven Allen 16f8a35e76 fix: idiomatic go
1. No need to slice a slice.
2. Idiomatic filter (https://github.com/golang/go/wiki/SliceTricks).
2021-08-24 11:05:05 -07:00
ZenGround0 263a85c2a6 Merge pull request #7172 from filecoin-project/fix/disable-patch
Turn off patch
2021-08-24 12:39:36 -04:00
ZenGround0 d29509b233 turn off patch 2021-08-24 11:52:45 -04:00
Łukasz Magiera d61612e05b Merge pull request #7140 from filecoin-project/feat/miner-expired-cmd
miner: Command to list/remove expired sectors
2021-08-24 11:52:31 +02:00
Łukasz Magiera 5a23c2bb90 sectors expired: Address review 2021-08-24 11:29:25 +02:00
Aarsh Shah 5993257eb1 Merge pull request #7169 from filecoin-project/feat/dagstore-zero-concurrency
Ignore nil throttler
2021-08-24 13:20:49 +05:30
Aarsh Shah e1a056db46 ignore nil throttler 2021-08-24 10:42:00 +05:30
Steven Allen 95d4483593 chore: remove unecessary replace 2021-08-23 15:18:01 -07:00
Łukasz Magiera a9bf24695d Fix lint 2021-08-23 11:27:34 -07:00
Łukasz Magiera ccf8844689 lotus-miner sectors expired --remove-expired 2021-08-23 11:27:34 -07:00
Łukasz Magiera d1759a4335 Show more info in sectors expired cmd 2021-08-23 11:27:34 -07:00
Łukasz Magiera 927ef041f8 miner: Command to list expired sectors 2021-08-23 11:27:34 -07:00
Steven Allen 01ea39adad Merge pull request #7153 from filecoin-project/fix/disable-flaky-test
test: disable flaky TestSimultaneousTransferLimit
2021-08-23 11:13:58 -07:00
Aayush Rajasekaran 371e90a40a Fix typos 2021-08-23 13:23:28 -04:00
Aayush RajasekaranandJacob Heun 80624845c4 Apply suggestions from code review
Co-authored-by: Jacob Heun <jacobheun@gmail.com>
2021-08-23 10:57:51 -04:00
Jiaying Wang 151cd76f75 Update CHANGELOG.md 2021-08-23 10:51:38 -04:00
Jennifer Wang 1858c0e290 fix docsgen 2021-08-23 10:51:38 -04:00
Jennifer Wang a7ab55dc00 lotus v1.11.2-rc prep 2021-08-23 10:48:06 -04:00
Aarsh Shah 68269b23fb Merge pull request #7160 from filecoin-project/feat/update-markets
Update markets, dt and graphsync
2021-08-23 15:10:24 +05:30
Aarsh Shah b096887b16 update deps 2021-08-23 14:45:17 +05:30
Aarsh Shah b3e73e4dad update markets, dt and graphsync 2021-08-23 11:23:11 +05:30
Łukasz Magiera 6c3acb8e21 Merge pull request #7117 from filecoin-project/fix/recoverdealids-loop
sealing: Fix RecoverDealIDs loop with changed PieceCID
2021-08-21 02:20:43 +02:00
Steven Allen 2a4ad207a5 test: disable flaky TestSimultaneousTransferLimit
See https://github.com/filecoin-project/lotus/issues/7152 for details.
2021-08-20 14:59:01 -07:00
Łukasz Magiera 36cb7d9451 Merge pull request #7150 from filecoin-project/feat/state-encode-params
api/command for encoding actor params
2021-08-20 20:09:17 +02:00
ZenGround0 de1c041900 Merge pull request #7151 from filecoin-project/fix/check-codecov-works
Fix nits and see if codecov works now with auto
2021-08-20 13:35:19 -04:00
ZenGround0 b7cda68c1c Allow for more threshold buffer 2021-08-20 13:10:17 -04:00
Raúl Kripalani 342134f853 EnableLargeSectors: restore previous supported proof types. 2021-08-20 18:07:25 +01:00
ZenGround0 abb0ea01a7 Fix nits and see if codecov works now with auto 2021-08-20 12:54:37 -04:00
ZenGround0 57337c1ae0 Merge pull request #7147 from filecoin-project/chore/codecov-projects
Codecov Projects
2021-08-20 12:53:23 -04:00
ZenGround0 c7aac60c6f Set code projects as non-informational 2021-08-20 12:43:18 -04:00
ZenGround0 b026c70f79 Stop being stupid 2021-08-20 12:30:11 -04:00
Łukasz Magiera 1ac87279d7 Add --to-code to chain encode params 2021-08-20 18:13:05 +02:00
ZenGround0 3506b9e8f2 Try to force failure 2021-08-20 12:09:00 -04:00
ZenGround0 4510fa7dcb Remove whitespace 2021-08-20 11:50:45 -04:00
Łukasz Magiera c05eb1251b Merge pull request #7149 from filecoin-project/feat/shed-cidid-raw
shed: Support raw encoding in cid id
2021-08-20 17:50:19 +02:00
ZenGround0 e74c374783 make everything informational=true to see if it works 2021-08-20 11:49:12 -04:00
Łukasz Magiera 12875a9664 api/command for encoding actor params 2021-08-20 17:32:57 +02:00
ZenGround0 ece154d73b Subdivide into projects 2021-08-20 11:27:37 -04:00
Łukasz Magiera 69204eea04 shed: Support raw encoding in cid id 2021-08-20 17:12:26 +02:00
Raúl Kripalani 0030e208a0 avoid reordering imports. 2021-08-20 15:59:19 +01:00
ZenGround0 5579001366 Try new file structure 2021-08-20 10:56:29 -04:00
Raúl Kripalani 2dde022a00 itests: support larger sector sizes; add large deal test. 2021-08-20 15:53:24 +01:00
ZenGround0 862a2ce695 Undo 2021-08-20 10:41:18 -04:00
ZenGround0 94f7205943 Give it a try 2021-08-20 10:38:46 -04:00
Łukasz Magiera 5bdc1862d9 Merge pull request #6952 from filecoin-project/feat/jsonrpc-redir
rpcenc: Support reader redirect
2021-08-20 16:18:01 +02:00
Łukasz Magiera 62769e3b11 sealing: Fix RecoverDealIDs loop with changed PieceCID 2021-08-20 16:00:40 +02:00
Łukasz Magiera fcc3103123 Merge pull request #7135 from filecoin-project/fix/addpiece-errval
Fix error handling in SectorAddPieceToAny api impl
2021-08-19 13:18:10 +02:00
Łukasz Magiera 0beb48f11d Fix error handling in SectorAddPieceToAny api impl 2021-08-19 12:56:40 +02:00
Jiaying Wang 28bf9688f1 Merge pull request #7125 from filecoin-project/fix/rice-box
add rice box to required binaries
2021-08-18 16:31:55 -04:00
Łukasz Magiera da86f445c8 Merge pull request #7121 from filecoin-project/jen/tempstuff
remove m1 templates and make area selection multi-optionable
2021-08-18 22:16:23 +02:00
Jiaying Wang 2d1494314e Merge branch 'master' into fix/rice-box 2021-08-18 15:05:12 -04:00
Travis Person 8c586d7f7c add rice box to required binaries 2021-08-18 17:38:52 +00:00
Jiaying WangandJacob Heun 5ca128e8bb Update .github/ISSUE_TEMPLATE/enhancement.yml
Co-authored-by: Jacob Heun <jacobheun@gmail.com>
2021-08-18 12:10:08 -04:00
Jennifer Wang c143fa922e format fix 2021-08-18 11:32:06 -04:00
Jennifer Wang 192fb159d2 copy paste is evil 2021-08-18 11:31:08 -04:00
Jennifer Wang 47d9a69802 renive and make area selection multi-optionable 2021-08-18 11:29:52 -04:00
Jiaying Wang 3350bd422f Merge pull request #7115 from filecoin-project/raulk/upgrade-deps
upgrade upstream dependencies.
2021-08-18 09:54:06 -04:00
Raúl Kripalani d494778435 upgrade upstream dependencies. 2021-08-18 11:13:11 +01:00
Aarsh Shah 88f5bcdb63 Remove replace directive for multihash dep (#7113) 2021-08-18 11:00:29 +01:00
Jiaying Wang f0143e351d Merge pull request #7110 from filecoin-project/asr/ffi-update
Update to latest FFI
2021-08-17 20:38:32 -04:00
Aayush Rajasekaran 113ea6dc4b Update to latest FFI 2021-08-17 18:15:12 -04:00
Jiaying Wang 1e6cc6f836 Merge pull request #7105 from filecoin-project/jen/mas
release -> master
2021-08-17 13:32:29 -04:00
Jennifer Wang e467b130c2 make go mod happy 2021-08-17 10:44:38 -04:00
Jennifer Wang 7ff5844aa2 Merge branch 'releases' into jen/mas 2021-08-17 10:38:36 -04:00
FrristandRaúl Kripalani 518b6f1d41 fix(miner): always create miner deal staging directory (#7098)
- fixes #7097

Co-authored-by: Raúl Kripalani <raul@protocol.ai>

Co-authored-by: Raúl Kripalani <raul@protocol.ai>
2021-08-17 00:16:06 +01:00
d7076778e2 integrate DAG store and CARv2 in deal-making (#6671)
This commit removes badger from the deal-making processes, and
moves to a new architecture with the dagstore as the cental
component on the miner-side, and CARv2s on the client-side.

Every deal that has been handed off to the sealing subsystem becomes
a shard in the dagstore. Shards are mounted via the LotusMount, which
teaches the dagstore how to load the related piece when serving
retrievals.

When the miner starts the Lotus for the first time with this patch,
we will perform a one-time migration of all active deals into the
dagstore. This is a lightweight process, and it consists simply
of registering the shards in the dagstore.

Shards are backed by the unsealed copy of the piece. This is currently
a CARv1. However, the dagstore keeps CARv2 indices for all pieces, so
when it's time to acquire a shard to serve a retrieval, the unsealed
CARv1 is joined with its index (safeguarded by the dagstore), to form
a read-only blockstore, thus taking the place of the monolithic
badger.

Data transfers have been adjusted to interface directly with CARv2 files.
On inbound transfers (client retrievals, miner storage deals), we stream
the received data into a CARv2 ReadWrite blockstore. On outbound transfers
(client storage deals, miner retrievals), we serve the data off a CARv2
ReadOnly blockstore.

Client-side imports are managed by the refactored *imports.Manager
component (when not using IPFS integration). Just like it before, we use
the go-filestore library to avoid duplicating the data from the original
file in the resulting UnixFS DAG (concretely the leaves). However, the
target of those imports are what we call "ref-CARv2s": CARv2 files placed
under the `$LOTUS_PATH/imports` directory, containing the intermediate
nodes in full, and the leaves as positional references to the original file
on disk.

Client-side retrievals are placed into CARv2 files in the location:
`$LOTUS_PATH/retrievals`.

A new set of `Dagstore*` JSON-RPC operations and `lotus-miner dagstore`
subcommands have been introduced on the miner-side to inspect and manage
the dagstore.

Despite moving to a CARv2-backed system, the IPFS integration has been
respected, and it continues to be possible to make storage deals with data
held in an IPFS node, and to perform retrievals directly into an IPFS node.

NOTE: because the "staging" and "client" Badger blockstores are no longer
used, existing imports on the client will be rendered useless. On startup,
Lotus will enumerate all imports and print WARN statements on the log for
each import that needs to be reimported. These log lines contain these
messages:

- import lacks carv2 path; import will not work; please reimport
- import has missing/broken carv2; please reimport

At the end, we will print a "sanity check completed" message indicating
the count of imports found, and how many were deemed broken.

Co-authored-by: Aarsh Shah <aarshkshah1992@gmail.com>
Co-authored-by: Dirk McCormick <dirkmdev@gmail.com>

Co-authored-by: Raúl Kripalani <raul@protocol.ai>
Co-authored-by: Dirk McCormick <dirkmdev@gmail.com>
2021-08-16 23:34:32 +01:00
raulk 473a192b85 fix build after merging #6097. (#7096)
fix build after merging #6097.
2021-08-16 23:18:32 +01:00
Jiaying Wang 15d90c24ed Merge pull request #7095 from filecoin-project/release/v1.11.1
Release v1.11.1
2021-08-16 17:27:45 -04:00
Jiaying Wang 52746911d8 Merge pull request #7094 from filecoin-project/jen/releasev1.11.1
V1.11.1 release prep
2021-08-16 16:39:58 -04:00
Jennifer Wang ea242b5bad Remove reverted pr from changelog 2021-08-16 16:34:31 -04:00
Jennifer Wang c37241c733 resolve conflicts and docsgen 2021-08-16 16:26:50 -04:00
Jennifer Wang 263ae6f99f update version 2021-08-16 16:21:06 -04:00
Jennifer Wang 11ff756b2e Add ChangeLog 2021-08-16 16:20:48 -04:00
ZenGround0 10615b53ad Merge pull request #6853 from filecoin-project/frrist/miner-temp-file-path
feat(miner deals): create subdir to miner repo for staged deals
2021-08-16 16:19:05 -04:00
ZenGround0 2e5b492edd Merge pull request #6097 from filcloud/sectors-renew
Extending sectors: more practical and flexible tools
2021-08-16 13:50:38 -04:00
Aayush Rajasekaran 90e60f7a98 Shed: Create a verifreg command for when VRK isn't a multisig 2021-08-16 12:56:27 -04:00
raulk 0d7654d2c9 Merge pull request #7088 from filecoin-project/nonsense/improve-get-api-error-msgs 2021-08-16 14:38:58 +01:00
He Weidong 92402e9f23 Update doc 2021-08-16 21:31:21 +08:00
Anton Evangelatov adcb8f3b15 improve get api error messages 2021-08-16 14:33:08 +03:00
Jiaying Wang 56c35ff1e9 Merge pull request #7065 from filecoin-project/jen/rc3
v1.11.3 rc3
2021-08-14 00:57:12 -04:00
Jennifer Wang e397a079c1 docsgen 2021-08-13 23:42:59 -04:00
Jennifer Wang 4bcf159381 v1.11.1-rc3 2021-08-13 23:16:03 -04:00
He Weidong b50b1e9ac4 Optimize for ci 2021-08-14 10:41:01 +08:00
He Weidong c5f81d35f5 minor modification 2021-08-13 13:47:48 +08:00
Jiaying Wang 6812c293b1 Merge pull request #6944 from filecoin-project/Lotus---release-process
Lotus release process  - how we make releases
2021-08-13 00:41:42 -04:00
Jennifer Wang 34dc70ca2a nits 2021-08-13 00:39:51 -04:00
Jiaying Wang 81a5521845 Merge pull request #7051 from filecoin-project/jen/backports
Master->v1.11.1
2021-08-13 00:16:40 -04:00
Jennifer Wang f7cfb74a3f tidy1 2021-08-13 00:02:20 -04:00
ZenGround0 f34631facc Fix docsgen 2021-08-13 00:00:56 -04:00
ZenGround0 35c8c5885b Update deps to revert version representation 2021-08-12 23:58:40 -04:00
ZenGround0 8c9321ce7b revert pricelist by version to pricelist by epoch 2021-08-12 23:58:20 -04:00
ZenGround0 2e2b9009fc Fix actor policy codegen 2021-08-12 23:50:47 -04:00
ZenGround0 eaff65c00f Remove network version panic 2021-08-12 23:50:30 -04:00
whyrusleeping 931cf9342e WIP: dont panic if input is bad 2021-08-12 23:50:25 -04:00
Raúl Kripalani e23c3b3e77 remove commented code. 2021-08-12 23:13:54 -04:00
Raúl Kripalani 230f81661c make lotus-miner net commands hit markets subsystem. 2021-08-12 23:13:50 -04:00
vyzo d95fcd55bf clear splitstore dir before deleting, only warn if the latter fails
to address situations with symlinks
2021-08-12 23:07:16 -04:00
vyzo 3983dadf3a add option to only clear splistore keys 2021-08-12 23:07:10 -04:00
vyzo f312ba376c document splitstore clear shed command 2021-08-12 23:07:00 -04:00
vyzo 13e9d7c71c add lotus-shed splitstore clear command 2021-08-12 23:06:47 -04:00
Raúl Kripalani 8c326d7bad fix compilation error. 2021-08-12 23:06:06 -04:00
Raúl Kripalani 04b358f340 use fallback api infos last; init service with markets-path. 2021-08-12 23:05:51 -04:00
Raúl Kripalani 23cd561f2e bugfix. 2021-08-12 23:05:34 -04:00
Raúl Kripalani 3733fa9cc2 add RepoType#String; adjust repo parsing logic. 2021-08-12 23:05:13 -04:00
Raúl Kripalani a94ab050bf fix docs, add flag. 2021-08-12 23:04:45 -04:00
Raúl Kripalani 1527ed46bc fix tests. 2021-08-12 23:04:08 -04:00
Raúl Kripalani 43d48f37b6 polish. 2021-08-12 23:04:03 -04:00
Raúl Kripalani 2c9edb1d1a refactor miner info command. 2021-08-12 23:03:59 -04:00
Raúl Kripalani a1aed960a9 target markets API for markets commands. 2021-08-12 23:03:50 -04:00
Raúl Kripalani 22461f30e9 support MARKETS_API_INFO env var; support markets-repo, markets-api-url flags. 2021-08-12 23:02:52 -04:00
Aarsh Shah 7b1a82a3cc update deps for logging 2021-08-12 22:25:33 -04:00
aarshkshah1992 0d06527507 more logging in data transfer and markets 2021-08-12 22:25:07 -04:00
vyzo 2b5bcfdb7f make symlink helper freestanding 2021-08-12 22:24:20 -04:00
vyzoandJakub Sztandera 9133f819e0 fix typo
Co-authored-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-08-12 22:24:14 -04:00
vyzo 73c161a295 fix format specifier 2021-08-12 22:24:09 -04:00
vyzo b46b26f1ae improve detection of relative links 2021-08-12 22:23:29 -04:00
vyzo 18eadd338e extend test to check the validity of relative links 2021-08-12 22:23:15 -04:00
vyzo 21b1059ba5 make relative links when the canonical and new db paths are in the same directory 2021-08-12 22:22:55 -04:00
vyzo c25ed49f0d code cosmetics: rename variables for better readability and some comments 2021-08-12 22:19:03 -04:00
hannahhoward 2ecf8914a1 feat(deps): update to branches with improved logging
update sub repos with improved logging around data transfer processing
2021-08-12 22:18:03 -04:00
Raúl Kripalani f9ea2e834c address nits. 2021-08-12 22:11:09 -04:00
Raúl Kripalani 85a4f8325f fix docs and nits. 2021-08-12 22:08:20 -04:00
Anton Evangelatov 60b612247d make linter happy 2021-08-12 22:06:57 -04:00
Anton Evangelatov d92c6a2097 extract outputs for mining node and markets node in separate functions 2021-08-12 22:06:41 -04:00
Anton Evangelatov 45166e760b fixup 2021-08-12 22:06:11 -04:00
Anton Evangelatov e90e71456b add RuntimeSubsystems API method; use it in lotus-miner info 2021-08-12 22:05:08 -04:00
ZenGround0 ce58b119bf Merge pull request #7038 from filecoin-project/spike/restrict-api-versions
Strict major minor version checking on v0 and v1 apis
2021-08-12 14:34:31 -04:00
ZenGround0 2d8c9bba99 more fix 2021-08-12 14:03:19 -04:00
ZenGround0 c8720fef02 Fix tests 2021-08-12 14:01:24 -04:00
ZenGround0 73a644f320 Review response 2021-08-12 13:09:43 -04:00
raulk 3960f719db Merge pull request #7042 from filecoin-project/fix/lotus-miner-net-markets 2021-08-12 16:45:58 +01:00
Raúl Kripalani 2484fbc1f7 remove commented code. 2021-08-12 15:38:19 +01:00
Raúl Kripalani 5f6166435c make lotus-miner net commands hit markets subsystem. 2021-08-12 11:15:00 +01:00
Steven Allen af9a71ac7c Merge pull request #6998 from filecoin-project/feat/latest-genesis
Test with latest actors version
2021-08-11 14:29:18 -07:00
Steven Allen ee44312c00 Merge pull request #7039 from filecoin-project/fix/codecov-again
codecov: fix mock name
2021-08-11 13:56:59 -07:00
Steven Allen 4214ab12ef codecov: fix mock name 2021-08-11 13:50:33 -07:00
ZenGround0 3bb5d4eb8f Strict major minor version checking on v0 and v1 apis 2021-08-11 16:40:14 -04:00
Steven Allen dcff06bd91 test: genesis actors version
Properly handle genesis in actors tests. Fast-forward upgrading to
actors v13 doesn't work because there needs to be at least a day between
v0 genesis and v13 (due to differences in miner cron).
2021-08-11 13:30:15 -07:00
Steven Allen 3235dbfaee fix genesis for actors v2 2021-08-11 13:30:15 -07:00
Steven Allen 9911ab1000 Merge pull request #7037 from filecoin-project/fix/codecov-regex
codecov: fix regexes
2021-08-11 13:27:14 -07:00
Steven Allen 4bf8cb455b codecov: fix regexes
Unfortunately, these changes don't apply till they hit master.
2021-08-11 13:25:19 -07:00
Steven Allen cbb7c191e6 Merge pull request #7036 from filecoin-project/codecov/ignore-old-shims
Magically increase code coverage
2021-08-11 13:14:25 -07:00
Steven Allen b2714e19d5 codecov: ignore generated and non-essential code
1. Ignore debugging/testing commands.
2. Ignore build related code.
3. Ignore all generated "mocks" code.
4. Ignore all *_gen.go files.
5. Ignore old actors shims.
2021-08-11 12:38:20 -07:00
Steven Allen 498644acab Merge pull request #7011 from filecoin-project/fix/no-t-aux
fix: don't check for t_aux when proving
2021-08-11 11:28:29 -07:00
Łukasz Magiera e8a6ea1dc8 Merge pull request #7027 from swift-mx/master
Support --actor in miner actor control list
2021-08-11 19:56:30 +02:00
Aayush Rajasekaran 07c636bf86 Merge pull request #7018 from filecoin-project/asr/sector-exp-alignment
PreCommitPolicy: Don't try to align expirations on proving period boundaries
2021-08-11 13:05:27 -04:00
Aayush Rajasekaran a52352b13a PreCommitPolicy: Don't try to align expirations on proving period boundaries 2021-08-11 12:44:12 -04:00
ZenGround0 14dcc477f1 Merge pull request #7022 from filecoin-project/revert/pricelist-fix
revert pricelist by version to pricelist by epoch
2021-08-11 12:14:26 -04:00
ZenGround0 bfda864c1b Fix docsgen 2021-08-11 09:49:23 -04:00
ZenGround0 bf41240ee1 Update deps to revert version representation 2021-08-11 09:49:23 -04:00
ZenGround0 b914e95f34 revert pricelist by version to pricelist by epoch 2021-08-11 09:49:23 -04:00
swift-mx d6562bccfc Merge branch 'filecoin-project:master' into master 2021-08-11 19:25:27 +08:00
mx 46a93bb78a fix: get other actor controlList 2021-08-11 19:23:37 +08:00
lanzafame 0b8a211e70 fix: init restore adds empty storage.json 2021-08-11 13:36:01 +10:00
Steven Allen 130fc6fce1 Merge pull request #7019 from filecoin-project/asr/genesis-shed
Shed: Include network name in genesis-verify
2021-08-10 16:25:02 -07:00
Steven Allen 65e3540d03 Merge pull request #7007 from filecoin-project/fix/panic-less
Dont panic if input is bad
2021-08-10 16:22:56 -07:00
Aayush Rajasekaran feb9d3c557 Shed: Include network name in genesis-verify 2021-08-10 14:46:24 -04:00
ZenGround0 234030218c Fix actor policy codegen 2021-08-10 13:32:00 -04:00
ZenGround0 6da26dcefc Remove network version panic 2021-08-10 13:07:30 -04:00
vyzo c24d4e11d5 Merge pull request #6949 from filecoin-project/fix/splitstore-memory-usage
Reduce splitstore memory usage during chain walks
2021-08-10 11:05:41 +03:00
vyzo eb0a62e9e9 RIP bloom filter markset; you weren't used anyway. 2021-08-10 10:47:01 +03:00
vyzo 742c85bf81 add SupportsVisitor in the markset env interface 2021-08-10 10:47:01 +03:00
vyzo 79f348a01c make the write lock scope limited within a function
Also avoid removing the writing set if there was an error while writing.
2021-08-10 10:47:01 +03:00
vyzo a9403b42f0 deduplicate put code 2021-08-10 10:47:01 +03:00
vyzo 1a59b73adc add .tmp suffix to transient db names 2021-08-10 10:47:01 +03:00
vyzo 26a5832f92 simplify and deduplicate Has/Visit using helper methods tryPending and tryDB. 2021-08-10 10:47:01 +03:00
vyzo 380e16d465 remove redundant writers state variable 2021-08-10 10:47:01 +03:00
vyzo b83b5405c6 widen MarkSetVisitor interface and get rid of the casts 2021-08-10 10:47:01 +03:00
vyzo 57c984cea1 improve concurrency properties of Visit with optimistic concurrency 2021-08-10 10:47:01 +03:00
vyzo 563fa1e31a take advantage of MarkSet/Visitor unification to atomically check+mark 2021-08-10 10:47:01 +03:00
vyzo cb3c53664d unify marksets and visitors 2021-08-10 10:47:01 +03:00
vyzo 3c994d94aa deduplicate some code in markset_badger 2021-08-10 10:47:01 +03:00
vyzo 32d94d4e85 reset walked set as epoch boundaries are crossed
the walk is BFS, so we can do this!
2021-08-10 10:47:01 +03:00
vyzo 49346f5679 use visitors instead of cidsets in walks 2021-08-10 10:47:01 +03:00
vyzo 1323d8fb20 markset-backed visitors 2021-08-10 10:47:01 +03:00
vyzo 6f22cffb6b object visitor interface 2021-08-10 10:47:01 +03:00
Steven Allen e1e5af8661 Merge pull request #6999 from filecoin-project/fix/vets
fix: vet actors shims
2021-08-09 11:11:51 -07:00
Steven Allen 18f39be3ba fix: don't check for t_aux when proving
We don't need it.
2021-08-09 11:07:35 -07:00
whyrusleeping bfd69f5381 WIP: dont panic if input is bad 2021-08-09 12:17:54 +02:00
Steven Allen 5e27023ba7 Merge pull request #6996 from swift-mx/master
fix: more logging in maybeStartBatch error
2021-08-06 15:25:37 -07:00
Steven Allen 5a321f970e fix: vet actors shims
1. Check error in EraseAllUnproven
2. Avoid dead code.
2021-08-06 14:56:29 -07:00
Steven Allen f7e288589b Merge pull request #6991 from filecoin-project/fix/flaky-deal-test
fix flaky TestDealPublisher and re-enable
2021-08-06 03:15:39 -07:00
Steven Allen 66bfadd7f0 Merge pull request #6990 from filecoin-project/feat/add-chain-after
feat: add ChainGetTipSetAfterHeight
2021-08-06 02:18:52 -07:00
mx cfc10e9b52 fix: more logging in maybeStartBatch error 2021-08-06 16:50:37 +08:00
Steven Allen be2ecf6236 fix flaky TestDealPublisher and re-enable
fixes #6799
2021-08-05 19:46:08 -07:00
Steven Allen 57bf5c2143 feat: add ChainGetTipSetAfterHeight
This is identical to ChainGetTipSetByHeight, but returns the tipset
following any null tipsets. This is what the user usually wants anyways.

(and I need it for another PR)
2021-08-05 12:07:14 -07:00
Whyrusleeping 9dca65634d Merge pull request #6970 from filecoin-project/chore/remove-old-tracer
Remove forgotten non-functioning config from the pre-mainnet days
2021-08-04 10:46:08 +02:00
Frank 2744bb4e5a update 2021-08-04 15:49:35 +08:00
Frank 2fec0c2440 add produced blocks info 2021-08-04 15:41:06 +08:00
Jiaying Wang faf8a47684 Merge pull request #6967 from filecoin-project/tools/shed-splitstore-clear
lotus-shed splitstore clear command
2021-08-03 18:49:30 -04:00
vyzo c9124bd1a9 clear splitstore dir before deleting, only warn if the latter fails
to address situations with symlinks
2021-08-03 15:39:48 +03:00
vyzo db6b7b91d8 add option to only clear splistore keys 2021-08-03 15:32:53 +03:00
Peter Rabbitson eefdcb0454 Remove forgotten non-functioning config from the pre-mainnet days 2021-08-02 17:04:23 +02:00
He Weidong 94c5076710 Make flags more intuitive 2021-08-02 16:44:22 +08:00
He Weidong 66e8418125 Enable exclude 2021-08-02 16:39:16 +08:00
He Weidong 677afbcb91 update to miner5 2021-08-02 16:26:29 +08:00
He Weidong 7f6c942b81 Use max-fee instead of gas-feecap 2021-08-02 16:09:00 +08:00
He Weidong e09cdc45a7 Add gas-feecap flag for cmd sectors renew 2021-08-02 16:08:57 +08:00
He Weidong 9ee80fd1db Prettify json output of extending params 2021-08-02 16:08:55 +08:00
He Weidong 77166f88ac Optimize search of sectors location 2021-08-02 16:08:52 +08:00
He Weidong e0777fed15 Add a more flexible cli tool: sectors renew 2021-08-02 16:08:50 +08:00
He Weidong 075bb3b314 Add a cli tool: sectors check-expire 2021-08-02 16:08:47 +08:00
vyzo a768dd84fa document splitstore clear shed command 2021-08-01 19:18:34 +03:00
vyzo 4a1655b225 add lotus-shed splitstore clear command 2021-08-01 19:18:29 +03:00
Jiaying Wang 40449f1ccb Merge pull request #6966 from filecoin-project/jen/v1.11.1-rc2
v1.11.1-rc2
2021-08-01 04:02:40 -04:00
Jennifer Wang 020cc5e64f docsgen 2021-08-01 03:46:36 -04:00
Jennifer Wang 52b76c9d5c Prepare for v1.11.1-rc2:
- bump the version
- update the changelog
2021-08-01 03:32:03 -04:00
Jiaying Wang 5939623f26 Merge pull request #6965 from filecoin-project/jen/backport
Backport master -> v1.11.1
2021-08-01 03:24:38 -04:00
Jiaying Wang 9e707e18e1 Merge pull request #6909 from filecoin-project/nonsense/better-error-on-wrong-repo-location
add explicit error msg if repo dir does not exist
2021-08-01 01:06:24 -04:00
Anton Evangelatov 783fa6b7c0 add explicit error msg if repo dir does not exist 2021-08-01 00:26:52 -04:00
Anton Evangelatov fa7e52dbda add explicit error msg if repo dir does not exist 2021-08-01 00:22:55 -04:00
Steven Allen 1ce5c3bf9c Merge pull request #6958 from filecoin-project/deps/update-pubsub
update go-libp2p-pubsub to v0.5.4
2021-07-30 13:34:43 -07:00
vyzo 8d51c5a971 update go-libp2p-pubsub to v0.5.4 2021-07-30 23:15:24 +03:00
Łukasz Magiera d06f38757d Merge pull request #6957 from filecoin-project/fix/disable-flaky-deals-test
chore: disable flaky test
2021-07-30 18:49:14 +02:00
Steven Allen b885d69aaa chore: disable flaky test 2021-07-30 09:01:31 -07:00
Łukasz Magiera 8426a62d15 rpcenc: Test early close, add reader.MustRedirect 2021-07-30 13:35:16 +02:00
Łukasz Magiera 555c402ba3 rpcenc: Fix POST read 2021-07-30 13:03:31 +02:00
Łukasz Magiera 0c809d3a5f rpcenc: Support reader redirect 2021-07-30 12:58:35 +02:00
frrist ca697c9aa2 feat(miner deals): create subdir to miner repo for staged deals 2021-07-29 21:08:38 -07:00
Steven Allen 73b2b5f384 Merge pull request #6537 from filecoin-project/test/pledge-batching-msg-prop
Test/pledge batching msg prop
2021-07-29 21:07:21 -07:00
Aayush Rajasekaran 0340189baa Merge pull request #6085 from filecoin-project/feat/more-build-types
set buildtype in nerpa and butterfly
2021-07-30 00:05:19 -04:00
ZenGround0 823bd54484 Review 2021-07-29 20:48:27 -07:00
ZenGround0 756e5ac0b8 Add a separate node to ensemble and check propagation reached 2021-07-29 20:48:27 -07:00
ZenGround0 7c99169fb4 Fix 2021-07-29 20:48:27 -07:00
ZenGround0 2380d252e1 Post rebase fix 2021-07-29 20:48:27 -07:00
ZenGround0 f2f6c209ea Integration test forcing max batch size 2021-07-29 20:48:27 -07:00
Steven Allen ff734ed080 Merge pull request #6099 from filcloud/min-max-exp
reasonable max value for initial sector expiration
2021-07-29 20:43:42 -07:00
Cory Schwartz c4ca3660de set buildtype in nerpa and butterfly 2021-07-29 20:41:24 -07:00
Steven Allen b584f44661 Merge pull request #6940 from filcloud/fix-skip-count
fix skipCount
2021-07-29 13:29:24 -07:00
Steven Allen f63d1b114a Merge pull request #6945 from filecoin-project/fix/mpool-pending
fix bug in MpoolPending message exclusion
2021-07-29 13:24:14 -07:00
Aayush Rajasekaran e5fb4a6c04 Merge pull request #6942 from filecoin-project/asr/nit
Improve formatting of workers CLI
2021-07-29 15:09:06 -04:00
vyzo 1d50dadc18 fix bug in message exclusion 2021-07-29 21:58:59 +03:00
Aayush Rajasekaran 1f7d584517 Update cmd/lotus-miner/sealing.go 2021-07-29 14:46:19 -04:00
raulk 7d70ef79af Merge pull request #6933 from filecoin-project/jen/bp-to-release
Fixes in master -> release
2021-07-29 18:30:46 +01:00
Dragan Z 08e046066d Lotus release process - how we make releases
Lotus release philosophy explained
2021-07-29 19:23:15 +02:00
Raúl Kripalani bb040abb2c fix compilation error. 2021-07-29 12:23:04 -04:00
Raúl Kripalani 00c3432e5a use fallback api infos last; init service with markets-path. 2021-07-29 12:22:53 -04:00
Raúl Kripalani 4b6fa79ea2 bugfix. 2021-07-29 12:22:49 -04:00
Raúl Kripalani b3c951c924 add RepoType#String; adjust repo parsing logic. 2021-07-29 12:22:27 -04:00
Raúl Kripalani 299b106f38 fix docs, add flag. 2021-07-29 12:22:19 -04:00
Raúl Kripalani 1b5a2dd79a fix tests. 2021-07-29 12:22:11 -04:00
Raúl Kripalani 107777fdac polish. 2021-07-29 12:22:03 -04:00
Raúl Kripalani d37ae957e0 refactor miner info command. 2021-07-29 12:21:29 -04:00
Raúl Kripalani 92056423c3 target markets API for markets commands. 2021-07-29 12:20:26 -04:00
Raúl Kripalani 8442bac5b2 support MARKETS_API_INFO env var; support markets-repo, markets-api-url flags. 2021-07-29 12:20:05 -04:00
Aarsh Shah 029ba39fd9 update deps for logging 2021-07-29 12:19:37 -04:00
aarshkshah1992 0daee83735 more logging in data transfer and markets 2021-07-29 12:08:41 -04:00
raulk c17a0c4fed Merge pull request #6936 from filecoin-project/feat/markets-env-var
support MARKETS_API_INFO env var, and markets-repo, markets-api-url CLI flags.
2021-07-29 16:53:20 +01:00
Aayush Rajasekaran 28e3c8bd3f Improve formatting of workers CLI 2021-07-29 11:46:42 -04:00
Raúl Kripalani 00fb675452 fix compilation error. 2021-07-29 16:18:43 +01:00
Aarsh Shah 83a4d7dc1c Merge pull request #6941 from filecoin-project/feat/update-sm-logging
Update state machine deps for logging
2021-07-29 20:46:41 +05:30
Raúl Kripalani 8433aae1af use fallback api infos last; init service with markets-path. 2021-07-29 16:10:04 +01:00
Aarsh Shah 9549087ba9 update deps for logging 2021-07-29 20:04:50 +05:30
Raúl Kripalani b17fcfc4d1 bugfix. 2021-07-29 14:36:04 +01:00
Raúl Kripalani 3144da86f3 add RepoType#String; adjust repo parsing logic. 2021-07-29 13:49:51 +01:00
Raúl Kripalani 90427bc3af fix docs, add flag. 2021-07-29 13:39:03 +01:00
Raúl Kripalani 8fae68a5ae fix tests. 2021-07-29 13:21:55 +01:00
Raúl Kripalani 3b2c3a3f6b polish. 2021-07-29 12:56:08 +01:00
Raúl Kripalani d9c6a32b8e refactor miner info command. 2021-07-29 12:54:08 +01:00
He Weidong 00e32d1ede fix skipCount 2021-07-29 19:51:25 +08:00
Raúl Kripalani 7d6eb250ea Merge branch 'master' into feat/markets-env-var 2021-07-29 12:37:46 +01:00
Raúl Kripalani 22c0884f5f target markets API for markets commands. 2021-07-29 12:37:29 +01:00
Łukasz Magiera e00cb29804 Merge pull request #6937 from filecoin-project/feat/update-deps-logging
Update deps for more logging in data transfer and markets
2021-07-29 12:29:16 +02:00
aarshkshah1992 973476930e more logging in data transfer and markets 2021-07-29 15:28:08 +05:30
Raúl Kripalani 4e19d8d562 support MARKETS_API_INFO env var; support markets-repo, markets-api-url flags. 2021-07-29 10:55:37 +01:00
Łukasz Magiera 595695a459 Merge pull request #6929 from filecoin-project/jen/backport-to-master
release v1.11.1 backport -> master
2021-07-29 11:07:11 +02:00
Łukasz Magiera 7f41d30ce8 Merge branch 'master' into jen/backport-to-master 2021-07-29 11:06:57 +02:00
Jennifer Wang 786d3e79eb make gen 2021-07-29 04:51:28 -04:00
Łukasz Magiera 18652bc388 Merge pull request #6932 from filecoin-project/fix/make-gocc-early
make: set default GOCC earlier
2021-07-29 10:49:03 +02:00
Łukasz Magiera 4f2722e7cf Merge branch 'master' into jen/backport-to-master 2021-07-29 10:44:57 +02:00
vyzo fd33b96e08 make symlink helper freestanding 2021-07-29 04:43:19 -04:00
vyzoandJakub Sztandera 4417be81ad fix typo
Co-authored-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-07-29 04:43:07 -04:00
vyzo ec78d3d7b1 fix format specifier 2021-07-29 04:42:56 -04:00
vyzo 0caabf1328 improve detection of relative links 2021-07-29 04:42:41 -04:00
vyzo a24b2436b0 extend test to check the validity of relative links 2021-07-29 04:42:35 -04:00
vyzo 7a3193a75b make relative links when the canonical and new db paths are in the same directory 2021-07-29 04:42:29 -04:00
vyzo d039764a34 code cosmetics: rename variables for better readability and some comments 2021-07-29 04:41:57 -04:00
Raúl Kripalani d8c90b91be address nits. 2021-07-29 04:41:27 -04:00
Raúl Kripalani c119ab6ed9 fix docs and nits. 2021-07-29 04:39:28 -04:00
Anton Evangelatov 0c036b1157 make linter happy 2021-07-29 04:38:43 -04:00
Anton Evangelatov cea26348c4 extract outputs for mining node and markets node in separate functions 2021-07-29 04:38:33 -04:00
Anton Evangelatov 0dd83c6755 fixup 2021-07-29 04:38:25 -04:00
Anton Evangelatov 9b7a7713a7 add RuntimeSubsystems API method; use it in lotus-miner info 2021-07-29 04:38:19 -04:00
hannahhoward 5073c7e6cf feat(deps): update to branches with improved logging
update sub repos with improved logging around data transfer processing
2021-07-29 04:31:23 -04:00
Łukasz Magiera 57d87ef24b make: set default GOCC earlier 2021-07-29 10:29:22 +02:00
He Weidong 4273fb067c reduce diff 2021-07-29 15:01:52 +08:00
He Weidong ef6620ad8e reasonable max value for initial sector expiration 2021-07-29 14:57:06 +08:00
He Weidong ee20d30480 reasonable min and max value for initial sector expiration 2021-07-29 14:55:11 +08:00
vyzo 2fd12daf9f Merge pull request #6905 from filecoin-project/fix/moving-gc-followup
Moving GC Followup
2021-07-29 08:54:57 +03:00
vyzo 351f615ce6 Merge branch 'master' into fix/moving-gc-followup 2021-07-29 08:36:15 +03:00
vyzo 5e8b2c7860 make symlink helper freestanding 2021-07-29 08:35:53 +03:00
Jiaying Wang 8be8f043bd Merge branch 'master' into jen/backport-to-master 2021-07-29 01:17:21 -04:00
hannahhoward 8d6bff36f2 fix(marketevents): use ReceivedCidsLen
improve data transfer logger by not reading in entire cid lists
2021-07-29 01:12:13 -04:00
Jiaying Wang c8b0f11841 Merge pull request #6895 from filecoin-project/fix/data-transfer-logging-received-cids
Eliminate inefficiency in markets logging
2021-07-29 01:09:25 -04:00
ZenGround0 ee59479e25 Merge pull request #6927 from filecoin-project/wnezhenxiang/patch-3-fixed
PR #5109 + suggested fix
2021-07-29 00:53:40 -04:00
ZenGround0 11394aa4aa Improve cli docs 2021-07-29 00:29:27 -04:00
ZenGround0 8ccee51887 docsgen 2021-07-29 00:24:24 -04:00
ZenGround0 5c823e9b42 PR #5109 + suggested fix 2021-07-28 23:59:59 -04:00
Steven Allen ca76822fde Merge pull request #6918 from filecoin-project/feat/print-runtime-send-update
Log more call context during errors
2021-07-28 20:47:15 -07:00
Steven Allen fe74311209 Merge branch 'master' into feat/print-runtime-send-update 2021-07-28 18:55:38 -07:00
Steven Allen 742321dd08 Merge pull request #6916 from filecoin-project/fix/make-gotip-ver-check
make: fix version check when using gotip
2021-07-28 18:55:05 -07:00
Steven Allen cf94aed32e Merge branch 'master' into fix/vouchers 2021-07-28 18:45:58 -07:00
Steven Allen 69f0bdd486 Merge branch 'master' into fix/make-gotip-ver-check 2021-07-28 18:36:29 -07:00
Steven Allen 6ffcf611a6 Merge pull request #6923 from filecoin-project/frrist/better-state-tree-errors
polish(errors): better state tree errors
2021-07-28 18:35:57 -07:00
frrist 256d12773b polish(errors): better state tree errors 2021-07-28 17:50:22 -07:00
raulk 5be5f255d1 Merge pull request #6919 from filecoin-project/feat/improve-logging-transfers
Update to branches with improved logging
2021-07-29 00:47:54 +01:00
raulk b812d3ec26 Merge branch 'master' into feat/improve-logging-transfers 2021-07-29 00:27:41 +01:00
raulk 640407aae7 Merge pull request #6906 from filecoin-project/nonsense/get-enabled-subsystems-api
adding an RuntimeSubsystems API to storage miner; fix `lotus-miner info`
2021-07-29 00:04:29 +01:00
Raúl Kripalani d3742048f9 address nits. 2021-07-28 23:56:18 +01:00
Raúl Kripalani a61ba7b09c Merge branch 'master' into nonsense/get-enabled-subsystems-api 2021-07-28 23:55:59 +01:00
Steven Allen b1fb707a3a Merge pull request #6882 from hunjixin/fix/check_ticket_msg
fix ticket check
2021-07-28 15:44:06 -07:00
ZenGround0 e09a25ca68 Remove unnecessary ret log 2021-07-28 18:26:29 -04:00
ZenGround0 a968784908 fix new panics in invoker_test.go 2021-07-28 18:26:29 -04:00
ZenGround0 0202192fc0 Log more call context during errors 2021-07-28 18:26:29 -04:00
Steven Allen dbe4891a39 Merge branch 'master' into fix/check_ticket_msg 2021-07-28 15:25:40 -07:00
hannahhoward 5a3b4ab34c feat(deps): update to branches with improved logging
update sub repos with improved logging around data transfer processing
2021-07-28 14:46:13 -07:00
Aayush Rajasekaran acf6b07794 Merge pull request #6907 from filecoin-project/deps/update-pubsub
update go-libp2p-pubsub to v0.5.3
2021-07-28 17:34:29 -04:00
Aayush Rajasekaran b397955f24 Merge branch 'master' into deps/update-pubsub 2021-07-28 17:15:38 -04:00
Aayush Rajasekaran 4a90c0f13b Merge pull request #6803 from filecoin-project/mg/feat/configurable-sector-expirations
Configurable CC Sector Expiration
2021-07-28 17:07:19 -04:00
Aayush Rajasekaran 21244704fc Merge branch 'master' into mg/feat/configurable-sector-expirations 2021-07-28 16:45:27 -04:00
raulk 80aedcd276 Merge branch 'master' into nonsense/get-enabled-subsystems-api 2021-07-28 20:09:43 +01:00
Raúl Kripalani 07f40b9488 fix docs and nits. 2021-07-28 20:03:25 +01:00
Łukasz Magiera a1a23d8be5 make: fix version check when using gotip 2021-07-28 19:12:23 +02:00
Łukasz Magiera ef94509eac Merge pull request #6912 from filecoin-project/chore/drop-dead-utils
Drop townhall/chainwatch
2021-07-28 18:20:34 +02:00
Łukasz Magiera 3b617f4528 mod tidy 2021-07-28 17:59:37 +02:00
Łukasz Magiera 25052fe48f Remove chainwatch (now filecoin-project/sentinel) 2021-07-28 17:59:01 +02:00
Łukasz Magiera 389f71251c Remove townhall 2021-07-28 17:58:46 +02:00
Łukasz Magiera 5867e34ec9 Merge pull request #6911 from filecoin-project/feat/make-gocc
make: Allow setting Go compiler with GOCC
2021-07-28 17:57:27 +02:00
Łukasz Magiera f8afb699cd make: Allow setting Go compiler with GOCC 2021-07-28 17:29:17 +02:00
Anton Evangelatov 6969202a03 make linter happy 2021-07-28 17:47:01 +03:00
Anton Evangelatov 54c6a3a454 extract outputs for mining node and markets node in separate functions 2021-07-28 17:31:48 +03:00
vyzoandJakub Sztandera b75ff37448 fix typo
Co-authored-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-07-28 17:11:04 +03:00
Łukasz Magiera c8900aac42 Merge branch 'release/v1.11.1' into fix/data-transfer-logging-received-cids 2021-07-28 16:05:36 +02:00
Anton Evangelatov 4cf5c8f656 fixup 2021-07-28 16:23:04 +03:00
vyzo c65d72fbca fix format specifier 2021-07-28 16:20:25 +03:00
vyzo fff1c0ae57 improve detection of relative links 2021-07-28 16:15:39 +03:00
Anton Evangelatov de4a847078 add RuntimeSubsystems API method; use it in lotus-miner info 2021-07-28 16:02:05 +03:00
vyzo 66e793531d update go-libp2p-pubsub to v0.5.3 2021-07-28 15:59:16 +03:00
vyzo 297c9e2f7a extend test to check the validity of relative links 2021-07-28 11:56:35 +03:00
vyzo 0740274b7c make relative links when the canonical and new db paths are in the same directory 2021-07-28 11:56:23 +03:00
vyzo 950ded454d code cosmetics: rename variables for better readability and some comments 2021-07-28 11:49:42 +03:00
Steven Allen 9d0cc2c9d7 Merge pull request #6899 from filecoin-project/fix/issue-templates
chore: fixup issue templates
2021-07-27 22:29:17 -07:00
Steven Allen 0bc7456b7f Merge branch 'master' into fix/issue-templates 2021-07-27 22:03:52 -07:00
Jiaying Wang 193cb91340 Merge pull request #6900 from filecoin-project/feat/1111rc1
Add changelog  for v1.11.1-rc1 and bump the version
2021-07-27 23:39:46 -04:00
Jiaying Wang b8bb673b75 Merge pull request #6903 from filecoin-project/feat/v1.11.2
bump master version to v1.11.2-dev
2021-07-27 23:38:45 -04:00
Jiaying Wang 2e7ba05173 Merge branch 'master' into feat/v1.11.2 2021-07-27 23:05:15 -04:00
Jennifer Wang f9595b58ee make gen 2021-07-27 23:02:54 -04:00
Jennifer Wang e49c77e29c bump master version to v1.11.2-dev 2021-07-27 22:54:23 -04:00
Jennifer Wang 2e98f8b5d2 make gen 2021-07-27 22:52:39 -04:00
Jennifer Wang 8a54273f8b add v1.11.1-rc1 changelog and bump the version 2021-07-27 22:42:18 -04:00
Jiaying Wang db86630fb3 Merge pull request #6897 from filecoin-project/fix/release-v1.11.1
Fix  merge release -> v1.11.1
2021-07-27 21:56:30 -04:00
Steven Allen 01c786c141 chore: fixup issue templates
1. Render logs/version as text, body as markdown. Previously, the _body_
was rendered as bash.
2. Fix spelling of "required".
2021-07-27 18:48:08 -07:00
Jennifer Wang 7a9a4bac1e Merge branch 'releases' into release/v1.11.1 2021-07-27 21:15:45 -04:00
Jiaying Wang c0b07286aa Merge pull request #6894 from filecoin-project/fix/11-masyer
releases -> master for v1.11.0
2021-07-27 21:14:48 -04:00
hannahhoward f4fa4c8cce fix(marketevents): use ReceivedCidsLen
improve data transfer logger by not reading in entire cid lists
2021-07-27 17:09:44 -07:00
Jennifer Wang 9afb63d2e4 Merge branch 'master' into fix/11-masyer 2021-07-27 20:03:43 -04:00
Jiaying Wang c31e5596e8 Merge pull request #6889 from filecoin-project/chore/cleanup-chain
Reduce entropy in the chain package
2021-07-27 18:04:27 -04:00
Jiaying Wang 29b2d27f00 Merge branch 'master' into chore/cleanup-chain 2021-07-27 18:04:17 -04:00
Aayush Rajasekaran 56d8003000 Merge pull request #6890 from filecoin-project/jen/proof
Update to proof v8.0.3
2021-07-27 17:40:13 -04:00
Jiaying Wang 90fa7ff057 Merge branch 'master' into jen/proof 2021-07-27 17:20:46 -04:00
raulk 35c90349ce Merge pull request #6840 from filecoin-project/nonsense/lotus-shed-support-rollback-for-mra
lotus-shed: initial export cmd for markets related metadata
2021-07-27 22:13:29 +01:00
Jiaying Wang d45b4a7a1f Merge branch 'master' into chore/cleanup-chain 2021-07-27 17:11:36 -04:00
raulk 505bc58530 Merge pull request #6888 from filecoin-project/feat/cli-super-verbose
add a very verbose -vv flag to lotus and lotus-miner.
2021-07-27 22:09:49 +01:00
raulk 38c91a28aa Merge branch 'master' into feat/cli-super-verbose 2021-07-27 22:09:35 +01:00
Jiaying Wang 2ba48a7581 Merge pull request #6880 from filecoin-project/jennijuju-patch-1
Update RELEASE_ISSUE_TEMPLATE.md
2021-07-27 17:09:03 -04:00
Jiaying Wang 4918a7c16f Merge branch 'master' into feat/cli-super-verbose 2021-07-27 17:07:16 -04:00
Jiaying Wang 83f7dc8c96 Merge branch 'master' into jen/proof 2021-07-27 17:04:39 -04:00
vyzo 6751185d6f Merge pull request #6854 from filecoin-project/feat/moving-gc
Moving GC for badger
2021-07-27 23:27:04 +03:00
raulk e4b225f4ba Merge branch 'master' into feat/cli-super-verbose 2021-07-27 20:49:44 +01:00
Raúl Kripalani b04fb75a92 rename flag to very verbose. 2021-07-27 20:49:30 +01:00
Łukasz Magiera cef65cd989 Merge branch 'master' into jen/proof 2021-07-27 21:39:31 +02:00
Łukasz Magiera dfac7c5f29 Merge branch 'master' into chore/cleanup-chain 2021-07-27 21:35:48 +02:00
vyzo 7c28ff3826 Merge branch 'master' into feat/moving-gc 2021-07-27 21:48:51 +03:00
Jiaying Wang 1d87ffcee4 Merge branch 'master' into jennijuju-patch-1 2021-07-27 13:45:03 -04:00
Jiaying Wang 0e99500b93 Merge pull request #6879 from filecoin-project/jen/stale-pr
Add github actions for staled pr
2021-07-27 13:43:25 -04:00
Jiaying Wang db12fd4a03 Merge branch 'master' into jen/stale-pr 2021-07-27 13:43:17 -04:00
Jennifer Wang 2790c9439f Update to proof v8.0.3 2021-07-27 13:29:07 -04:00
Jakub Sztandera a5bcf8b5b2 Add nolint
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-07-27 09:10:41 -07:00
Jakub Sztandera ab71bc0e78 Don't test extra as we don't support it
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-07-27 09:10:41 -07:00
Jakub Sztandera 26da526379 Verify Voucher locks in VoucherValidUnlocked
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-07-27 09:10:41 -07:00
Jiaying Wang 2f03b456de Update RELEASE_ISSUE_TEMPLATE.md 2021-07-27 12:00:08 -04:00
Łukasz Magiera e163d556fb Merge branch 'master' into chore/cleanup-chain 2021-07-27 17:49:42 +02:00
Raúl Kripalani 3451acbc03 docgen. 2021-07-27 15:28:10 +01:00
Jiaying Wang bc82a48693 Merge pull request #4638 from filecoin-project/feat/vis-sector-alloc
Add allocated sectorid vis
2021-07-27 10:08:05 -04:00
Łukasz Magiera c57c20c6e4 fix lint 2021-07-27 15:58:18 +02:00
Łukasz Magiera 05a3710288 chainstore: Fix test build 2021-07-27 15:53:47 +02:00
Jiaying Wang e46f02f59d Merge branch 'master' into feat/vis-sector-alloc 2021-07-27 09:49:33 -04:00
Łukasz Magiera ae63a4b33b fix lotus-sim build 2021-07-27 15:49:01 +02:00
Łukasz Magiera ce82f2827b stmgr: Put actor state accessors in actors.go 2021-07-27 15:43:11 +02:00
Łukasz Magiera e7d73cbe56 vm: Remove unused ActorBalance 2021-07-27 15:34:39 +02:00
Łukasz Magiera 9bd312881d VMSys doesn't belong in chainstore 2021-07-27 15:30:23 +02:00
Raúl Kripalani 48cddd3644 add a super verbose -vv flag to lotus and lotus-miner. 2021-07-27 14:25:28 +01:00
Łukasz Magiera ca1cd741c3 stmgr: Split stmgr.go into smaller subfiles 2021-07-27 15:15:50 +02:00
Łukasz Magiera 50b217817e stmgr: Split upgrade code from upgrade runtime 2021-07-27 14:48:30 +02:00
Łukasz Magiera 6ba42e3e6b chainstore: refactor store.go into more subfiles 2021-07-27 14:41:36 +02:00
Łukasz Magiera e4ebbf106a Merge pull request #6886 from filecoin-project/fix/rename-lotus-storage-miner
rename `cmd/lotus{-storage=>}-miner` to match binary.
2021-07-27 14:20:35 +02:00
Łukasz Magiera 69f0b22f6a Merge branch 'master' into fix/rename-lotus-storage-miner 2021-07-27 13:57:17 +02:00
Łukasz Magiera c2575327c0 Merge pull request #6885 from filecoin-project/feat/update-market
update to go-fil-market v1.6.0
2021-07-27 13:00:38 +02:00
Raúl Kripalani e0522a6b1f rename cmd/lotus{-storage=>}-miner to match binary. 2021-07-27 11:54:46 +01:00
Jennifer Wang 06d01d7dc0 Add github actions for staled pr 2021-07-27 05:33:48 -04:00
vyzo 7c195245a1 make cfgdoc-gen 2021-07-27 12:13:26 +03:00
vyzo da3e36acdc Merge branch 'master' into feat/moving-gc 2021-07-27 12:12:38 +03:00
vyzo 8809707158 update README 2021-07-27 12:08:39 +03:00
vyzo c21c413695 remove db2 to dbNext 2021-07-27 12:06:40 +03:00
vyzo bb2d99908c make state constants typed 2021-07-27 12:03:26 +03:00
vyzo b82f953fd5 use the badger streaming interface in doCopy 2021-07-27 11:46:35 +03:00
vyzo 59aebba0d9 use a slab allocator for the copy 2021-07-27 11:35:21 +03:00
Jennifer Wang d24b2acc63 update to go-fil-market v1.6.0 2021-07-27 04:34:35 -04:00
hunjixin ac8937245c fix ticket check 2021-07-27 16:21:47 +08:00
vyzo 0baeec0686 remove filter from doCopy; it's not used
it was there to support a potential CopyTo interface; but we'll cross that bridge when we get there.
2021-07-27 11:18:24 +03:00
vyzo 649fc62863 panic if we fail to correctly setup the db paths.
we can't really continue and leave a ticking bomb for the next restart; the user might not see it.
2021-07-27 10:27:16 +03:00
vyzo d6ace68540 extend test to do a double move and check symlink following 2021-07-27 10:16:50 +03:00
vyzo cbaffab9dd use EvalSymlinks in deleteDB 2021-07-27 10:08:07 +03:00
vyzo c03859c1b5 resolve symlinks when constructing the new db path
so that the new path is adjacent to the old path, allowing the user to symlink the db in
a different file system.
2021-07-27 10:05:35 +03:00
vyzo 9d25464703 use functional options for hotstore gc, rename MovingGC to FullGC 2021-07-27 09:53:22 +03:00
vyzo 96c1123c33 use functional options in the BlockstoreGC interface 2021-07-27 09:52:06 +03:00
Jiaying Wang 0dd325866d Update RELEASE_ISSUE_TEMPLATE.md 2021-07-26 23:15:09 -04:00
Jiaying Wang 790f27d6a2 Merge branch 'master' into feat/vis-sector-alloc 2021-07-26 16:15:15 -04:00
Peter Rabbitson 2ca174482b Merge pull request #6674 from filecoin-project/chore/upgrade_go-multihash
Bump go-multihash, adjust test for supported version
2021-07-26 21:46:10 +02:00
Peter Rabbitson 20c5dd5bdc Merge remote-tracking branch 'origin/master' into chore/upgrade_go-multihash 2021-07-26 21:26:10 +02:00
Peter Rabbitson 7ffe63a358 Merge pull request #6683 from filecoin-project/feat/allow_padding_redux
Fix padding of deals, which only partially shipped in #5988
2021-07-26 21:12:40 +02:00
Peter Rabbitson 39325e5463 Merge branch 'master' into feat/allow_padding_redux 2021-07-26 20:53:27 +02:00
Jakub Sztandera acc38817ec Merge pull request #6862 from filecoin-project/fix/racy-TestSimultanenousTransferLimit
fix racy TestSimultanenousTransferLimit.
2021-07-26 20:33:28 +02:00
Jiaying Wang 2772b54eda Merge branch 'master' into fix/racy-TestSimultanenousTransferLimit 2021-07-26 14:09:05 -04:00
Jiaying Wang 98c8a2abe5 Merge branch 'master' into feat/allow_padding_redux 2021-07-26 13:59:33 -04:00
vyzo ef24593544 Merge pull request #6867 from filecoin-project/fix/splitstore-warmup
Improve splitstore warmup
2021-07-26 19:15:59 +03:00
vyzo c7e94beddc Merge branch 'master' into fix/splitstore-warmup 2021-07-26 18:56:53 +03:00
Peter Rabbitson ed387b43cc Bump go-multihash, adjust test for supported version 2021-07-26 17:50:19 +02:00
Steven Allen 26e961380a Merge pull request #6872 from filecoin-project/asr/block-height-fix
ValidateBlock: Assert that block header height's are greater than parents
2021-07-26 08:44:06 -07:00
vyzo c52c2738ab fix potential underflow 2021-07-26 18:38:42 +03:00
vyzo 18caefc4a1 fix missing object condition; short-circuit walk 2021-07-26 18:34:05 +03:00
vyzo 0fd8fc24e1 load a full finality worth of state during warmup 2021-07-26 18:34:05 +03:00
Aayush Rajasekaran 104626acb7 ValidateBlock: Assert that block header height's are greater than their parents 2021-07-26 11:09:23 -04:00
Anton EvangelatovandAayush Rajasekaran 9d61f91cdf Update cmd/lotus-shed/market.go
Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
2021-07-26 16:41:22 +02:00
Jakub Sztandera 7de866d881 lint = happy
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-07-26 16:39:12 +02:00
Łukasz Magiera 11d3f19a5b Merge pull request #6857 from filecoin-project/mg/feat/graceful-lite-api-w-missing-methods
feat: Don't panic when api impl is nil
2021-07-26 14:26:26 +02:00
vyzo 938330e6c3 moveMx is not an RWMutex, just a regular mutex 2021-07-26 15:09:31 +03:00
vyzo aa0bd51b2c thread GCFrequency option into the splitstore config 2021-07-26 15:05:57 +03:00
vyzo 20f93a520f make cfgdoc-gen 2021-07-26 15:05:57 +03:00
vyzo 4cdb34e448 add docstrings for splitstore config 2021-07-26 15:05:57 +03:00
vyzo 21e7c188da use CollectGarbage in blockstore move test, as it is the real interface 2021-07-26 15:05:57 +03:00
vyzo b1f60e85e9 document moving GC frequency option in README 2021-07-26 15:05:57 +03:00
vyzo 5acae50e07 add config option for splitstore moving gc frequency 2021-07-26 15:05:57 +03:00
vyzo fb3986226f do hotstore moving GC in splitstore with a user-specified frequency 2021-07-26 15:05:57 +03:00
vyzo c747f2f1e2 do moving GC if the user asks for it 2021-07-26 15:05:57 +03:00
vyzo a843665132 add options to BlockstoreGC trait 2021-07-26 15:05:57 +03:00
vyzo 94509968a0 make moveTo a private method 2021-07-26 15:05:20 +03:00
vyzo 5cf6fdf81d don't heap allocate the cond, just set L 2021-07-26 15:04:46 +03:00
vyzo 524564e2cf add some more logging around move 2021-07-26 15:04:46 +03:00
vyzo f2c7b08be5 follow symbolic links when deleting old dbs 2021-07-26 15:04:46 +03:00
vyzo 608a9f84d2 fix copy: flush discards the transaction 2021-07-26 15:04:46 +03:00
vyzo 4b0b37a4ef fix lint
the great spellchecker strikes again
2021-07-26 15:04:46 +03:00
vyzo 4715b1f436 fix lotus-shed 2021-07-26 15:04:46 +03:00
vyzo aec126879e add MoveTo test 2021-07-26 15:04:46 +03:00
vyzo 001c04f2dd use pooled slices for the copy 2021-07-26 15:04:46 +03:00
vyzo b741d61b20 implement BlockstoreMover in badger 2021-07-26 15:04:46 +03:00
Mike Greenberg 76a9f4241b feat: Graceful error when api impl is nil 2021-07-26 13:51:37 +02:00
Łukasz Magiera 5048c3f717 Merge pull request #6811 from filecoin-project/feat/splitstore-shed-utils
splitstore shed utils
2021-07-26 13:44:27 +02:00
vyzo 1f6935f8c4 make gen 2021-07-26 12:15:01 +03:00
vyzo 3c409d5023 require admin for running checks on the splitstore. 2021-07-26 12:13:41 +03:00
vyzo 2cfd73c879 manually compute size when badger is being stupid 2021-07-26 09:46:21 +03:00
vyzo 74009bd67f document lotus-shed splitstore utiilities in the README 2021-07-26 08:52:32 +03:00
vyzo 221dc7024f add splitstore info command 2021-07-26 08:47:02 +03:00
vyzo ce528a1293 implement Info in splitstore 2021-07-26 08:45:46 +03:00
vyzo 30e4b405b7 implement BlockstoreSize for badger 2021-07-26 08:43:09 +03:00
vyzo baaa9a7738 add BlockstoreSize trait for reporting size 2021-07-26 08:42:54 +03:00
vyzo 77604db716 make gen 2021-07-26 08:33:25 +03:00
vyzo a0d6fdba33 add ChainBlockstoreInfo APIv1 endpoint 2021-07-26 08:30:07 +03:00
vyzo c00b86e8a8 stop the walk on missing references 2021-07-25 13:42:20 +03:00
vyzo 2dc72d5849 satisfy linter who wants to be a spell checker in comments 2021-07-25 11:47:21 +03:00
vyzo 5285a14d27 write check summary at the end 2021-07-25 11:42:13 +03:00
vyzo 5718da237f handle newlines consistently in check output 2021-07-25 11:30:58 +03:00
vyzo 21bb2bda09 make gen 2021-07-25 11:25:29 +03:00
vyzo 5b2e4d8ad4 add permission tag to ChainCheckBlockstore API 2021-07-25 11:24:06 +03:00
vyzo c99dc3e811 add splitstore check command 2021-07-25 11:24:06 +03:00
vyzo 3d2ae433ee add ChainCheckBlockstore API 2021-07-25 11:14:48 +03:00
vyzo 1918ffda4e implement splitstore check 2021-07-25 10:35:37 +03:00
vyzo e317c831a8 quiet excessive badger logs 2021-07-25 09:07:27 +03:00
vyzo ce6f410f2a add options to control compaction/gc of the coldstore and config rewrite during rollback 2021-07-25 09:01:34 +03:00
vyzoandraulk 254c489164 fix typo
Co-authored-by: raulk <raul@protocol.ai>
2021-07-25 09:01:34 +03:00
vyzoandraulk 33cdc90f13 fix typo
Co-authored-by: raulk <raul@protocol.ai>
2021-07-25 09:01:34 +03:00
vyzo da66e7a878 fix typo 2021-07-25 09:01:34 +03:00
vyzo e696a2c0cc fix newline in progres message 2021-07-25 09:01:34 +03:00
vyzo 36b209ca5c compact and gc coldstore after copying 2021-07-25 09:01:34 +03:00
vyzo 92b9d8c895 quiet linter 2021-07-25 09:01:34 +03:00
vyzo 0c68bccbda add splitstore rollback lotus-shed command 2021-07-25 09:01:34 +03:00
whyrusleeping 78f94c4c6b This pulls in forgotten parts properly implementing PR#5988
( previous testing focused exclusively on offline dealflow .cars )

Allows a workflow of:

~$ dd if=/dev/urandom bs=1M count=1 | ~/go-ipfs/cmd/ipfs/ipfs add --pin=false
added QmcFLqjyh2kvixuuvxgNUoHy55Rb6N6uuSq4CNfvtPoTJ2 QmcFLqjyh2kvixuuvxgNUoHy55Rb6N6uuSq4CNfvtPoTJ2

~$ ~/go-ipfs/cmd/ipfs/ipfs dag export QmcFLqjyh2kvixuuvxgNUoHy55Rb6N6uuSq4CNfvtPoTJ2 > test_mib.car

~$ lotus client import --car ~/test_mib.car
Import 2, Root QmcFLqjyh2kvixuuvxgNUoHy55Rb6N6uuSq4CNfvtPoTJ2

~$ ~/go/bin/stream-commp -p $(( 256 * 1024 * 1024 )) < test_mib.car
CommP:    54e4e75ddc3fffa8fd33d3ededc06e564603ac0fe62543ec6463d51b553be40b
CommPCid: baga6ea4seaqfjzhhlxod775i7uz5h3pnybxfmrqdvqh6mjkd5rsghvi3ku56icy
Raw bytes:           1049073 bytes
Unpadded piece:    266338304 bytes
Padded piece:      268435456 bytes
CARv1 detected in stream:
Blocks:         5
Roots:          1
    1: QmcFLqjyh2kvixuuvxgNUoHy55Rb6N6uuSq4CNfvtPoTJ2

~$ curl http://127.0.0.1:1234/rpc/v0 -X POST -H "Authorization: Bearer $(cat ~/.lotus/token)" -H "Content-Type: application/json" --data '
  { "jsonrpc": "2.0", "id":1, "method": "Filecoin.ClientStartDeal", "params": [
    {
      "Wallet":"t01004",
      "Miner":"t01005",
      "EpochPrice":"0",
      "MinBlocksDuration":518400,
      "Data": {
        "Root":{ "/":"QmcFLqjyh2kvixuuvxgNUoHy55Rb6N6uuSq4CNfvtPoTJ2" },
        "PieceCid":{ "/":"baga6ea4seaqfjzhhlxod775i7uz5h3pnybxfmrqdvqh6mjkd5rsghvi3ku56icy" },
        "PieceSize": 266338304
      }
    }
  ] }
'

~$ ~/go/bin/stream-commp -p $(( 128 * 1024 * 1024 )) < test_mib.car
CommP:    ed904105399ed346f6b03844abc14710a1748854c2781824d6bd1100e63b1807
CommPCid: baga6ea4seaqo3ecbau4z5u2g62ydqrflyfdrbilurbkme6ayetll2eia4y5rqby
Raw bytes:           1049073 bytes
Unpadded piece:    133169152 bytes
Padded piece:      134217728 bytes
CARv1 detected in stream:
Blocks:         5
Roots:          1
    1: QmcFLqjyh2kvixuuvxgNUoHy55Rb6N6uuSq4CNfvtPoTJ2

~$ curl http://127.0.0.1:1234/rpc/v0 -X POST -H "Authorization: Bearer $(cat ~/.lotus/token)" -H "Content-Type: application/json" --data '
  { "jsonrpc": "2.0", "id":1, "method": "Filecoin.ClientStatelessDeal", "params": [
    {
      "Wallet":"t01004",
      "Miner":"t01005",
      "EpochPrice":"0",
      "ProviderCollateral":"0",
      "MinBlocksDuration":518400,
      "Data": {
        "TransferType": "manual",
        "Root":{ "/":"QmcFLqjyh2kvixuuvxgNUoHy55Rb6N6uuSq4CNfvtPoTJ2" },
        "PieceCid":{ "/":"baga6ea4seaqo3ecbau4z5u2g62ydqrflyfdrbilurbkme6ayetll2eia4y5rqby" },
        "PieceSize": 133169152
      }
    }
  ] }
'
{"jsonrpc":"2.0","result":{"/":"bafyreianhjvev3w6q5lteap3h7tkxbe2jaobwlsi7vzbcoobjpicg3foqi"},"id":1}

~$ lotus-miner storage-deals import-data bafyreianhjvev3w6q5lteap3h7tkxbe2jaobwlsi7vzbcoobjpicg3foqi ~/test_mib.car
2021-07-24 18:17:13 +02:00
Peter Rabbitson 8d873e3edc Tests for online and offline dealpadding
Also bump the times on several flaky tests that can not complete in time
on a typical laptop ( and fail half the time on CircleCI )
2021-07-24 17:46:04 +02:00
Raúl Kripalani 8693df4656 fix racy TestSimultanenousTransferLimit. 2021-07-24 12:53:56 +01:00
Peter Rabbitson 2edf7fd25b Rewire itest's StartDeal to take the full API struct
This allows one to use the harness for much more versatile deal conditions
2021-07-24 04:17:42 +02:00
Mike Greenberg e68c59f984 fix: Update node config docs 2021-07-23 21:05:50 -04:00
Mike Greenberg 64d2b7a122 Merge branch 'origin/master' into mg/feat/configurable-sector-expirations
* origin/master: (47 commits)
  Fix links in issue templates
  Update issue templates and add templates for M1
  config: Add newlines consistently
  config: Add note on codegen to types.go
  fix lint
  cli docsgen
  config: Bring some docs from filecoin-docs
  add comment about the necessity of FileIO
  improve README
  config doc gen: generate formatted code
  config: Fix doc finding logic
  Nicer lotus-miner config commands
  Move doc-comment logic to the config pkg
  config: doc struct codegen
  lotus daemon config utils
  adjust compaction test with badger to hit the db
  add splitstore compaction test with badger markset
  update README with configuration options
  tweak badger options
  some tweaks in badger markset
  ...

Conflicts:
        node/config/def.go
2021-07-23 20:36:54 -04:00
Mike Greenberg 41bce7925a fix: Remove unnecessary Truncate 2021-07-23 20:12:30 -04:00
Jennifer Wang 5cb7411c2a docs fix 2021-07-23 19:11:26 -04:00
Jennifer Wang 7832545b7a Rebase onto master 2021-07-23 19:09:28 -04:00
Jakub Sztandera e615eecbea Skip also set sectors
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-07-23 19:01:50 -04:00
Jakub Sztandera 39cc536115 Add sectors vis
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-07-23 19:01:48 -04:00
Jennifer Wang f09c4733ad Fix links in issue templates 2021-07-23 18:39:41 -04:00
Jennifer d14b84cd11 Merge pull request #6856 from filecoin-project/misc/m1-form
Update issue templates and add templates for M1
2021-07-23 18:35:37 -04:00
Jennifer Wang 816ee0b004 Update issue templates and add templates for M1 2021-07-23 18:32:54 -04:00
Łukasz Magiera 02a37a1e22 Merge pull request #6833 from filecoin-project/feat/splitstore-badger-markset
Splitstore: support on-disk marksets using badger
2021-07-23 19:56:54 +02:00
Łukasz Magiera 5b4d5c2eb4 Merge branch 'master' into feat/splitstore-badger-markset 2021-07-23 19:37:45 +02:00
Łukasz Magiera 964df1a2ec Merge pull request #6848 from filecoin-project/feat/config-ux
Config UX improvements
2021-07-23 19:35:22 +02:00
Łukasz Magiera 91c6aca7e7 config: Add newlines consistently 2021-07-23 16:59:55 +02:00
Łukasz Magiera 80af6de316 config: Add note on codegen to types.go 2021-07-23 16:02:45 +02:00
Łukasz Magiera ac2a1bfeab fix lint 2021-07-23 15:53:31 +02:00
Łukasz Magiera 4b8a5068bd cli docsgen 2021-07-23 15:44:52 +02:00
Łukasz Magiera a26712ebc4 config: Bring some docs from filecoin-docs 2021-07-23 15:40:40 +02:00
vyzo d6ebead756 add comment about the necessity of FileIO 2021-07-23 16:30:55 +03:00
vyzo 1480c22447 improve README 2021-07-23 16:27:09 +03:00
Łukasz Magiera ed7f70e68e config doc gen: generate formatted code 2021-07-23 15:18:20 +02:00
Łukasz Magiera 3f4973cb41 config: Fix doc finding logic 2021-07-23 15:17:22 +02:00
Łukasz Magiera 4757b014bc Nicer lotus-miner config commands 2021-07-23 14:57:42 +02:00
Łukasz Magiera 8b1f19e94c Move doc-comment logic to the config pkg 2021-07-23 14:55:19 +02:00
Łukasz Magiera 97f5bb66c7 config: doc struct codegen 2021-07-23 13:55:50 +02:00
Łukasz Magiera cf65804883 lotus daemon config utils 2021-07-23 13:09:03 +02:00
vyzo 9faa3d5fd7 adjust compaction test with badger to hit the db 2021-07-23 12:47:18 +03:00
vyzo 9d5cf4177b add splitstore compaction test with badger markset 2021-07-23 12:47:18 +03:00
vyzo dec5e13c85 update README with configuration options 2021-07-23 12:47:18 +03:00
vyzo a8c0fd1654 tweak badger options 2021-07-23 12:47:18 +03:00
vyzo 4df6073382 some tweaks in badger markset 2021-07-23 12:47:18 +03:00
vyzo f492f8d450 track in flight writes in badger markste, as they happen outside the lock 2021-07-23 12:47:18 +03:00
vyzo f75d982c76 remove early occurs check from trackTxnRef
this happens inline, and it might block when using the badger markset
2021-07-23 12:47:18 +03:00
vyzo 2891a31c99 make badger markset concurrent close safe 2021-07-23 12:47:18 +03:00
vyzo f2b7c3e6f2 reduce scope of exclusive lock in badger markset 2021-07-23 12:47:18 +03:00
vyzo 12c3432b8d document the "badger" markset type option 2021-07-23 12:47:18 +03:00
vyzo be9530b66e finetune badger options 2021-07-23 12:47:18 +03:00
vyzo 2c26abc551 add badger markset test 2021-07-23 12:47:18 +03:00
vyzo 54a6968327 add badger-backed markset implementation 2021-07-23 12:47:18 +03:00
Łukasz Magiera db39323390 Merge pull request #6724 from filecoin-project/raulk/merge-gs-fix
fix deal concurrency test failures by upgrading graphsync and others
2021-07-23 11:20:04 +02:00
Łukasz Magiera d3564cc2a3 Merge branch 'master' into raulk/merge-gs-fix 2021-07-23 10:50:51 +02:00
Dirk McCormick 52498f78a1 feat: add import market datastore cmd 2021-07-23 10:30:58 +02:00
Dirk McCormick 7ef167b04f refactor: simplify market datastore backup 2021-07-23 09:33:26 +02:00
Jennifer b79690cef4 Merge pull request #6798 from filecoin-project/misc/issueform
Update issue templates to forms
2021-07-23 01:07:02 -04:00
Jennifer Wang e41bc229e3 Address the feedbacks 2021-07-23 00:36:31 -04:00
Jennifer Wang bda25dd6f2 Use forms for creating lotus issues. 2021-07-23 00:36:31 -04:00
Liviu Damian d6783736dc Nerpa v13 upgrade 2021-07-22 23:58:12 -04:00
Jennifer 19048e6a91 Merge pull request #6837 from Digital-MOB-Filecoin/master
Nerpa v13 upgrade
2021-07-22 23:56:09 -04:00
Raúl Kripalani 21f9dc8096 update graphsync to an actual release. 2021-07-22 23:47:47 +01:00
raulk 4ffbb03a82 Merge branch 'master' into raulk/merge-gs-fix 2021-07-22 23:37:17 +01:00
Cory Schwartz c08e547efa Merge pull request #6544 from filecoin-project/feat/docker-compose
add docker-compose file
2021-07-22 14:34:25 -07:00
Cory Schwartz f68b43a526 make work with go gen 2021-07-22 14:15:27 -07:00
Cory Schwartz ab02ca7e38 Merge branch 'master' into feat/docker-compose 2021-07-22 12:42:58 -07:00
Łukasz Magiera 0f21fcc87e Merge pull request #6841 from filecoin-project/fix/splitstore-warmup
fix warmup by decoupling state from message receipt walk
2021-07-22 21:22:06 +02:00
Mike Greenberg 3829d6bd9a fix: Remove actor method from autogen source; Move inline to pkg 2021-07-22 15:10:49 -04:00
Mike Greenberg 123a976f62 chore: Add unit test for custom CC lifetime value expiration 2021-07-22 15:07:03 -04:00
Mike Greenberg 7ee46ad4e0 fix: PreCommitPolicy unit tests 2021-07-22 15:07:03 -04:00
Mike Greenberg adb62a3fff chore: Move cfg getter into PCPolicy; Clamp values on get 2021-07-22 15:07:03 -04:00
Mike Greenberg 9e34cce1f2 feat(config): support configurable CC sector expiration 2021-07-22 15:07:03 -04:00
vyzo 5266b240b8 coalesce message and message receipt retention 2021-07-22 22:02:29 +03:00
vyzo 2a68ae8dad fix warmup by decoupling state from message receipt walk 2021-07-22 20:49:36 +03:00
Łukasz Magiera 2d40089b7e Merge pull request #4640 from filecoin-project/feat/compact-sectors-numbers-cmd
add a command for compacting sector numbers bitfield
2021-07-22 19:16:14 +02:00
Łukasz Magiera f9752d8a0a Merge branch 'master' into feat/compact-sectors-numbers-cmd 2021-07-22 19:00:33 +02:00
Anton Evangelatov adba595350 commit from @dirkmc - initial export cmd for martkers related metadata 2021-07-22 18:41:57 +02:00
Łukasz Magiera 15a6995cda fix lint 2021-07-22 16:31:04 +02:00
ZenGround0 e6eb51b2d5 Merge pull request #6766 from filecoin-project/feat/fix-pricelist
PriceListByVersion
2021-07-22 10:22:36 -04:00
Łukasz Magiera 0656b62176 Merge remote-tracking branch 'origin/master' into feat/compact-sectors-numbers-cmd 2021-07-22 16:04:25 +02:00
ZenGround0 e647d9913e Merge branch 'master' into feat/fix-pricelist 2021-07-22 09:52:45 -04:00
Łukasz Magiera 604e972e6e Merge pull request #5183 from filcloud/make-app
easy way to make install app
2021-07-22 15:51:43 +02:00
ZenGround0 c130d2cb87 Rebase fix 2021-07-22 09:50:43 -04:00
ZenGround0 3155609304 Finalize deps + fix after rebase 2021-07-22 09:49:56 -04:00
ZenGround0 09adc4d5e2 make docsgen changes 2021-07-22 09:49:47 -04:00
ZenGround0 fe5e1b23d5 Update api version to account for new network version 6.5 + new underlying repr 2021-07-22 09:49:47 -04:00
ZenGround0 d6a8a7aeb8 Remove validation because of sync TestDrandNull test 2021-07-22 09:49:47 -04:00
ZenGround0 4cd05fa39c Lint 2021-07-22 09:49:47 -04:00
ZenGround0 ed844c5283 Use current ntwk version in mpool message check 2021-07-22 09:49:47 -04:00
ZenGround0 9fc4a25bd1 Fix tests with bad network version refs 2021-07-22 09:49:47 -04:00
ZenGround0 56d71a190f Update versions to have more digits 2021-07-22 09:49:47 -04:00
ZenGround0 cbc07cb939 Add 6.5 to VersionForNetwork commit updated docs 2021-07-22 09:49:47 -04:00
ZenGround0 545cc723e0 Fix test 2021-07-22 09:49:47 -04:00
ZenGround0 aff7200b3e Add missing upgrade height 2021-07-22 09:49:47 -04:00
ZenGround0 47b5afa84b Add version six and a half 2021-07-22 09:49:47 -04:00
ZenGround0 f49a8248f0 PriceListByVersion 2021-07-22 09:49:47 -04:00
Łukasz Magiera 90ad0d85a5 Merge pull request #6627 from filecoin-project/feat/split-net-api
api: Separate the Net interface from Common
2021-07-22 15:48:28 +02:00
Łukasz Magiera 660829703a Merge remote-tracking branch 'origin/master' into feat/split-net-api 2021-07-22 15:38:06 +02:00
Liviu Damian e64626cdf3 Nerpa v13 upgrade 2021-07-22 16:31:28 +03:00
Łukasz Magiera 3006dda786 Merge pull request #6760 from ipfs-force-community/feat/cache_blkmsg_events
cache loaded block messages
2021-07-22 13:54:51 +02:00
Łukasz Magiera 1ebfc74657 Merge pull request #6805 from filecoin-project/fix/new-rand
fix: on randomness change, use new rand
2021-07-22 13:54:37 +02:00
Łukasz Magiera 4fc1dfacb4 Merge branch 'master' into fix/new-rand 2021-07-22 13:42:34 +02:00
Łukasz Magiera 0c02207fc9 Merge pull request #6775 from filecoin-project/feat/splitstore-hot-messages
Splitstore: add retention policy option for keeping messages in the hotstore
2021-07-22 13:41:45 +02:00
Łukasz Magiera da5aeda197 Merge branch 'master' into feat/splitstore-hot-messages 2021-07-22 12:58:06 +02:00
Łukasz Magiera 91107df701 Merge branch 'master' into fix/new-rand 2021-07-22 12:51:05 +02:00
Łukasz Magiera c8776d74ec Merge pull request #6817 from filecoin-project/feat/sync-less_chainstore
Introduce the LOTUS_CHAIN_BADGERSTORE_DISABLE_FSYNC envvar
2021-07-22 11:55:04 +02:00
Łukasz Magiera 9a12247840 Merge pull request #6818 from filecoin-project/feat/gateway-read-state
add StateReadState to gateway api
2021-07-22 11:52:14 +02:00
Łukasz Magiera bf066403e8 Merge branch 'master' into feat/gateway-read-state 2021-07-22 11:29:00 +02:00
Łukasz Magiera c9bc247732 api gen 2021-07-22 11:23:43 +02:00
Łukasz Magiera a3687a6cfa Merge pull request #6815 from filecoin-project/nonsense/add-sealproof-in-sectorbuilder-master
add SealProof in SectorBuilder
2021-07-22 11:21:06 +02:00
Jennifer 283793f943 Merge pull request #6831 from filecoin-project/feat/v1.11.0
Feat/v1.11.0
2021-07-22 05:19:43 -04:00
Łukasz Magiera e7f39a3179 Merge branch 'master' into nonsense/add-sealproof-in-sectorbuilder-master 2021-07-22 11:11:28 +02:00
Jennifer Wang 395451b3e9 Merge branch 'releases' into feat/v1.11.0 2021-07-22 05:05:33 -04:00
Jennifer c9999f7ca2 Merge pull request #6829 from filecoin-project/feat/v11
Release v1.11.0
2021-07-22 04:56:51 -04:00
Jennifer Wang e52c639f02 Release v1.11.0 2021-07-22 04:50:31 -04:00
Jennifer ab4093fea0 Merge pull request #6828 from filecoin-project/misc/merge-release
release -> master
2021-07-22 01:51:54 -04:00
Jennifer Wang dfa57ffbc1 Merge branch 'master' into misc/merge-release 2021-07-22 01:49:16 -04:00
Jennifer 4b6258f2a2 Update CHANGELOG.md 2021-07-22 01:29:53 -04:00
JenniferandAayush Rajasekaran f972021b23 Update CHANGELOG.md
Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
2021-07-22 01:29:53 -04:00
JenniferandAayush Rajasekaran 8bf06bacfa Update CHANGELOG.md
Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
2021-07-22 01:29:53 -04:00
JenniferandŁukasz Magiera 067b45d9ab Update CHANGELOG.md
Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
2021-07-22 01:29:53 -04:00
Jennifer Wang 7531e543f3 bump the version to v1.10.1 2021-07-22 01:29:53 -04:00
whyrusleeping d89e2f065c add StateReadState to gateway api 2021-07-21 17:21:28 -07:00
Peter Rabbitson 4830a3406b Introduce the LOTUS_CHAIN_BADGERSTORE_DISABLE_FSYNC envvar
Allows the user to control the opts.SyncWrites option of BadgerDs
2021-07-21 22:38:14 +02:00
Anton Evangelatov 9ad408a0ba add SealProof in sector builder 2021-07-21 16:45:57 +02:00
Łukasz Magiera 90c8891f95 Merge pull request #6763 from filecoin-project/johnli-helloworld-fix/fsm-error
sealing: Handle preCommitParams errors more correctly
2021-07-21 15:18:29 +02:00
Łukasz Magiera 0236f2ec5d Merge pull request #6802 from filecoin-project/fix/6786-rest
fix: always check if StateSearchMessage returns nil
2021-07-21 15:05:57 +02:00
Łukasz Magiera c29f375a7a Merge pull request #6807 from filecoin-project/nonsense/fetch-peerid-from-chain
ClientFindData: always fetch peer id from chain
2021-07-21 15:04:25 +02:00
raulk 9d0596e6e8 Merge branch 'master' into nonsense/fetch-peerid-from-chain 2021-07-21 11:56:06 +01:00
Steven Allen 29195470d6 Merge pull request #6804 from filecoin-project/fix/flaky-window-post-test
test: fix flaky window post tests
2021-07-21 03:41:36 -07:00
Jakub Sztandera 2c5a867eab Merge branch 'master' into fix/6786-rest 2021-07-21 12:39:31 +02:00
Anton Evangelatov fe31956713 fetch peer id from chain 2021-07-21 11:43:19 +02:00
Steven Allen c49dbf0999 fix: on randomness change, use new rand 2021-07-20 20:19:36 -07:00
Łukasz Magiera 8029a9ffe3 sealing: Address riview on preCommitParams send fix 2021-07-20 17:46:19 -07:00
johnli-helloworld aea338ecf0 fix handleSubmitPreCommitBatch() preCommitParams error 2021-07-20 17:46:19 -07:00
Steven Allen 38919f59ad test: fix flaky window post tests
Wait until the network upgrade is finished. If we try to seal while it's
happening, we have a few annoying edge cases that can fail if we try to
submit some messages right on the upgrade epoch (which is why everyone
turns that kind of stuff off for the upgrade epoch).
2021-07-20 16:31:14 -07:00
raulk c1f0ebbefa Merge pull request #6800 from filecoin-project/nonsense/fix-double-close-panic 2021-07-21 00:02:12 +01:00
Raúl Kripalani 8413c080e3 add godocs. 2021-07-20 15:43:03 -07:00
Anton Evangelatov cd4571f0b0 wrap close(wait) with sync.Once to avoid panic 2021-07-20 15:43:03 -07:00
Cory Schwartz 6c6df04112 publish to dockerhub circleci 2021-07-20 15:23:29 -07:00
Steven Allen 8ddd12d144 Merge pull request #6787 from xloem/fix/deal-segfault
fixes #6786 segfault
2021-07-20 13:53:26 -07:00
Steven Allen 865e7ca80a test(sealing): test message not found 2021-07-20 12:09:50 -07:00
Steven Allen f9c759fcb2 fix: always check if StateSearchMessage returns nil
It returns nil on "not found".

Fixes the cases not covered in:
https://github.com/filecoin-project/lotus/pull/6787
2021-07-20 11:28:27 -07:00
Steven Allen ad1dd36193 fix: better error message on missing message 2021-07-20 11:20:45 -07:00
xloem e0208e3595 fixes #6786 segfault 2021-07-20 11:20:45 -07:00
Steven Allen 591320dd44 Merge pull request #6777 from filecoin-project/feat/splitstore-protect
Splitstore: add support for protecting out of chain references in the blockstore
2021-07-20 11:11:45 -07:00
raulk bd7aa99175 Merge pull request #6770 from filecoin-project/raulk/merge-gs-fix-simultaneous-fix 2021-07-20 17:51:24 +01:00
Raúl Kripalani 5e66960ab6 fix merge error. 2021-07-20 17:51:09 +01:00
raulk 353ccf0c55 Merge branch 'raulk/merge-gs-fix' into raulk/merge-gs-fix-simultaneous-fix 2021-07-20 17:37:51 +01:00
Raúl Kripalani c1b304b633 update graphsync. 2021-07-20 15:43:44 +01:00
Raúl Kripalani 546d192439 Merge branch 'master' into raulk/merge-gs-fix-simultaneous-fix 2021-07-20 15:31:40 +01:00
vyzo c9930cb7db disable flaky test 2021-07-20 09:49:22 +03:00
vyzo 839b00ab40 rename messagepool ProtectMessages to ForEachPendingMessage 2021-07-20 09:23:36 +03:00
vyzo c47fce8d2d test protector support 2021-07-20 09:02:45 +03:00
vyzo ebbaf23af8 support out-of-chain reference protection 2021-07-20 09:02:40 +03:00
Cory Schwartz 4a93e3b8a8 Merge branch 'master' into feat/docker-compose 2021-07-19 14:41:15 -07:00
hunjixin eef3fd5d7a cache loaded block messages 2021-07-19 15:13:53 +08:00
Aayush Rajasekaran 1c30d07d68 Merge pull request #6773 from filecoin-project/biglep/codeowners
Resurrect CODEOWNERS, but for maintainers group
2021-07-18 10:27:17 -04:00
vyzo 006050ed27 implement hotstore message retention policy 2021-07-17 08:59:43 +03:00
Steve Loeppky d8431da9b9 Resurrect CODEOWNERS, but for maintainers group
Per updated CR policies for this repo, we want non-draft PRs to be assigned to the filecoin-project/lotus-maintainers team.
2021-07-16 22:53:26 -07:00
vyzo 1b77361301 add option for hotstore message retention 2021-07-17 08:35:35 +03:00
hannahhoward 3b4df5e10d fix(itests): fix simultaneous transfer logic
limit parallelism on client side and also fix the issue with how ongoing transfers are detected
2021-07-16 11:46:03 -07:00
Raúl Kripalani 089bcceb33 remove test concurrency guardrails. 2021-07-16 19:09:56 +01:00
Raúl Kripalani 9042429abd Merge branch 'master' into raulk/merge-gs-fix 2021-07-16 18:19:50 +01:00
Raúl Kripalani aeb8e57eef use https://github.com/ipfs/go-graphsync/pull/176. 2021-07-16 18:17:34 +01:00
Raúl Kripalani b2feb7e960 upgrade go-fil-markets, go-data-transfer; add logging. 2021-07-16 17:30:45 +01:00
Łukasz Magiera d5c9cccf21 address net interface split review 2021-07-15 15:51:47 +02:00
Łukasz Magiera b20581bac2 api: check that only the top-level internal struct gets picked up 2021-07-15 15:45:41 +02:00
Łukasz Magiera fd9f5dc83c Merge pull request #6764 from filecoin-project/deps/update-pubsub
update go-libp2p-pubsub to v0.5.0
2021-07-15 14:58:52 +02:00
vyzo 1d9dcef878 update go-libp2p-pubsub to v0.5.0 2021-07-15 15:07:14 +03:00
Łukasz Magiera 25cd577d06 Merge pull request #6762 from filecoin-project/feat/splitstore-exposed
Implement exposed splitstore
2021-07-15 13:11:45 +02:00
vyzo e003203bea implement exposed splitstore 2021-07-15 13:12:10 +03:00
Łukasz Magiera 812dc266cf builder: Don't require specific NetAPI impl in StorageMinerAPI 2021-07-15 12:01:13 +02:00
Łukasz Magiera 49e26cce7d api: Separate the Net interface from Common 2021-07-15 11:41:30 +02:00
Łukasz Magiera f07a370711 Merge pull request #6642 from hunjixin/feat/add_getmessagesints_api
Add ChainGetMessagesInTipset API
2021-07-15 11:12:51 +02:00
Łukasz Magiera a03c5ac3d2 Merge pull request #6758 from filecoin-project/test/deflake-fork-refuse-call
test: handle null blocks in TestForkRefuseCall
2021-07-15 11:01:15 +02:00
Łukasz Magiera ab2f159d54 Merge pull request #6757 from filecoin-project/jennijuju-patch-1
Master disclaimer
2021-07-15 10:37:55 +02:00
hunjixin d023026cb0 fix confilct 2021-07-15 14:55:03 +08:00
hunjixin b2f8b4011a fix imports 2021-07-15 14:52:12 +08:00
hunjixin 3e9ec01d04 rm fmt 2021-07-15 14:52:12 +08:00
hunjixin a48a6a168a add test for new api 2021-07-15 14:52:12 +08:00
hunjixin ac03c01e4a test for messages in tipset 2021-07-15 14:52:12 +08:00
hunjixin bdaa73a413 add ChainGetMessagesInTipset api 2021-07-15 14:52:09 +08:00
Steven Allen cf81c897df test: handle null blocks in TestForkRefuseCall
Otherwise, this fails on rare occasions.
2021-07-14 17:41:24 -07:00
Steven Allen 81d614a607 Merge pull request #6756 from filecoin-project/feat/splitstore-reorg
Splitstore code reorg
2021-07-14 16:57:11 -07:00
Jennifer 5e5b4b7191 Update README.md 2021-07-14 19:07:02 -04:00
Jennifer dd0f4dea81 Update README.md 2021-07-14 18:32:17 -04:00
Steven Allen c738d1f7ef Merge pull request #6747 from filecoin-project/action/stale
Create stale.yml
2021-07-14 13:50:38 -07:00
vyzo 5a23f64b3b code reorg: break splitstore.go into smaller logical units 2021-07-14 13:11:15 -07:00
Steven Allen 44d01712c8 Merge pull request #6754 from filecoin-project/feat/splitstore-refactor
Splitstore: Some small fixes
2021-07-14 13:09:59 -07:00
vyzo 3f3a12b75c remove BlockstoreMover interface
we decided it's premature
2021-07-14 22:59:53 +03:00
vyzo 023146803d use Broadcast for view barrier 2021-07-14 22:59:53 +03:00
vyzo 3d77ae1f4d make trackTxnRefMany consistent with trackTxnRef 2021-07-14 22:59:53 +03:00
vyzo 6f126c80bf remove redundant log, more descriptive error message for closing condition 2021-07-14 22:59:53 +03:00
vyzo ff093fae00 use a missing compactionIndex as an indicator for warmup
so that splitstore v0 nodes upgrading will get a fresh warmup.
2021-07-14 22:59:53 +03:00
vyzo 669b47cfc9 do moving gc for hotstore every 20 compactions
that's about once a week
2021-07-14 22:59:53 +03:00
vyzo 818b8de182 keep track of the compaction serial (index)
it is useful so that:
- we only do slow (but very effective) moving gc every 10 compactions
- we can detect a splitstore v0 upgrade and re-warm up
2021-07-14 22:59:53 +03:00
vyzo c93328b036 use the new traits for hotstore gc 2021-07-14 22:59:52 +03:00
vyzo 35180b4761 merge Compact and CollectGarbage in badger 2021-07-14 22:59:52 +03:00
vyzo dc81c0e6a2 add blockstore traits related to gc 2021-07-14 22:59:52 +03:00
Łukasz Magiera f0c9e4e8f2 Merge pull request #6746 from filecoin-project/chore/add_power_to_shed_storage-stats 2021-07-14 11:54:43 +02:00
Jennifer 71ddbdaf10 Update stale.yml 2021-07-14 02:52:39 -04:00
Jennifer 856cbb2ca0 Create stale.yml
Mark any issue thats labeled with `hint/needs-author-input` and has no activity more than 5 days as stale and give a 24 hours notice before closing.
2021-07-14 02:50:18 -04:00
Peter Rabbitson a37ababc20 Minor rearrange 2021-07-14 08:32:07 +02:00
Peter Rabbitson 677c193e6c Add current power to the stats 2021-07-14 08:11:23 +02:00
Łukasz Magiera dd09666399 Merge pull request #6743 from filecoin-project/chore/centralize_all_cli_color_handling
Handle the --color flag via proper global state
2021-07-13 17:34:25 +02:00
Łukasz Magiera 583a8a13d9 Merge pull request #6629 from filecoin-project/feat/pledge-from-miner-balance
Config for collateral from miner available balance
2021-07-13 17:22:00 +02:00
Łukasz Magiera 837322ea59 Merge pull request #6356 from filecoin-project/nonsense/split-market-miner-processes
Support standalone miner-market process
2021-07-13 17:16:07 +02:00
Łukasz Magiera 0678b3fa05 sealing: Cleanup DisableCollateralFallback handling 2021-07-13 17:06:41 +02:00
Łukasz Magiera 7526a074d9 sealing: collateral buffer / falback config 2021-07-13 17:04:58 +02:00
Anton Evangelatov 2af02af1c1 rename --name to --type; provide empty stores.StorageConfig when init new service 2021-07-13 12:57:43 +02:00
Łukasz Magiera c37401a1a3 Merge pull request #6474 from filecoin-project/feat/splitstore-redux
Splitstore Enhanchements
2021-07-13 12:43:57 +02:00
Peter Rabbitson 6efd2e7335 Handle the --color flag via proper global state
Use `color.NoColor` as a global progressively modified as one descends
down command flags. Allows non-surprising operation when --color is
accepted at multiple layers, and even makes this behave predictably:

    lotus-miner --color actor control list --color=false
2021-07-13 12:22:29 +02:00
vyzo af399529ec finetune view waiting 2021-07-13 09:06:40 +03:00
vyzo 257423e917 fix view waiting issues with the WaitGroup
We can add after Wait is called, which is problematic with WaitGroups.
This instead uses a mx/cond combo and waits while the count is > 0.
The only downside is that we might needlessly wait for (a bunch) of views
that started while the txn is active, but we can live with that.
2021-07-13 09:01:50 +03:00
Steven Allen 04abd190ab nit: remove useless goto
Because stebalien has allergies.
2021-07-12 21:46:50 -07:00
vyzo 60212c86cb put a mutex around HeadChange 2021-07-13 03:14:13 +03:00
vyzo 759594d01c always return the waitgroup in protectView
so that we preclude the following scenario:
    Start compaction.
    Start view.
    Finish compaction.
    Start compaction.

which would not wait for the view to complete.
2021-07-13 03:11:40 +03:00
raulk 5c3e79e8d0 Merge pull request #6739 from filecoin-project/fix/cancel-stops-retrieval 2021-07-12 23:22:35 +01:00
hannahhoward 92ec239202 fix(node): ClientRetrieve stops on cancel
When a deal is cancelled, any in progress calls to ClientRetrieve or ClientRetrieveWithEvents should
return
2021-07-12 14:46:18 -07:00
Łukasz Magiera 4433c3cd7c Merge pull request #6708 from filecoin-project/feat/miner-info-deals
Add more deal details to lotus-miner info
2021-07-12 22:18:56 +02:00
Anton Evangelatov 7728d6bfc3 remove --enable-markets flag; add --name string slice flag 2021-07-12 14:38:29 +02:00
Łukasz Magiera 83f2368507 Add CollateralFromMinerBalance config 2021-07-12 14:11:58 +02:00
Anton Evangelatov 4bc9fa04ba rename cfg.Subsystems.EnableStorageMarket to EnableMarkets 2021-07-12 12:12:29 +02:00
Anton Evangelatov 056136ef5a rename argument from url to apiInfo 2021-07-12 11:36:22 +02:00
Anton Evangelatov a423c46f2a rename mock.go to net.go 2021-07-12 11:35:03 +02:00
Anton Evangelatov d89ddb9315 resolve conflicts 2021-07-12 11:34:37 +02:00
Anton Evangelatov 16784aa2cc remove pieceProvider from DI; small refactors 2021-07-12 11:30:26 +02:00
Aayush Rajasekaran 88ac2ebc0c Merge pull request #6710 from filecoin-project/arajasek-patch-1
Release template: Update all testnet infra at once
2021-07-11 17:26:43 -04:00
Aayush Rajasekaran 13dcfec8fe Release template: Update all testnet infra at once 2021-07-11 17:26:21 -04:00
Aayush Rajasekaran 20582037c5 Fix Lotus shed 2021-07-11 14:03:22 -04:00
Aayush Rajasekaran e983d90a28 Merge pull request #6066 from chadwick2143/extend-v1-sectors
Fix bugs in sectors extend --v1-sectors
2021-07-11 13:19:35 -04:00
Aayush Rajasekaran ea9ad8c5a8 Update cmd/lotus-storage-miner/sectors.go 2021-07-11 13:01:19 -04:00
Aayush Rajasekaran 93d929a10a Merge pull request #5950 from zgfzgf/feat-shed-election-backtest
add election backtest
2021-07-11 12:08:21 -04:00
vyzo df9670c58d fix lint 2021-07-10 16:38:40 +03:00
vyzo 0c5e336ff1 address review comments 2021-07-10 16:30:27 +03:00
Raúl Kripalani cbf281d1ca go mod tidy. 2021-07-10 10:49:37 +01:00
Raúl Kripalani 71ddf73f44 check if merging ipfs/go-graphsync#177 fixes deal concurrency. 2021-07-10 10:48:18 +01:00
Aayush Rajasekaran f7f5fd4809 Merge pull request #6620 from filecoin-project/asr/no-filter
Envvar to disable slash filter
2021-07-09 17:12:16 -04:00
Aayush RajasekaranandPeter Rabbitson dff097a992 Update miner/miner.go
Co-authored-by: Peter Rabbitson <ribasushi@protocol.ai>
2021-07-09 17:07:23 -04:00
vyzo 870a47f55d handle id cids in internal versions of view/get 2021-07-09 20:07:17 +03:00
vyzo f5ae10e3d1 refactor debug log code to eliminate duplication 2021-07-09 19:53:51 +03:00
vyzo 41290383e2 fix test 2021-07-09 19:24:44 +03:00
vyzo b9a5ea8f7b update wording around discard store 2021-07-09 19:23:55 +03:00
vyzo c0a1cfffa1 rename noopstore to discardstore 2021-07-09 19:19:37 +03:00
vyzo 18161fee38 remove unused lookback constructs 2021-07-09 19:12:58 +03:00
vyzo 095d7427ba make view protection optimistic again, as there is a race window 2021-07-09 15:41:10 +03:00
vyzo da0feb3fa4 dont mark references inline; instad rely on the main compaction thread to do concurrent marking
The problem is that it is possible that an inline marking might take minutes for some objects
(infrequent, but still possible for state roots and prohibitive if that's a block validation).
So we simply track references continuously and rely on the main compaction thread to trigger
concurrent marking for all references at opportune moments.

Assumption: we can mark references faster than they are created during purge or else we'll
never purge anything.
2021-07-09 15:10:02 +03:00
vyzo acc4c374ef properly handle protecting long-running views 2021-07-09 13:20:18 +03:00
vyzo 565faff754 fix test 2021-07-09 11:38:09 +03:00
vyzo 4f89d260b0 kill isOldBlockHeader; it's dangerous. 2021-07-09 11:35:10 +03:00
vyzo de5e21bf1a correctly handle identity cids 2021-07-09 11:31:04 +03:00
vyzo 909f7039d4 make badger Close-safe 2021-07-09 09:54:12 +03:00
vyzo abdf4a161a explicitly switch marksets for concurrent marking
this has very noticeable impact in initial marking time; it also allows us
to get rid of the confusing ts monikers.
2021-07-09 04:26:36 +03:00
Łukasz Magiera 77a1a8a23f Merge pull request #6709 from filecoin-project/arajasek-patch-1
Release Template: remove binary validation step
2021-07-08 20:45:49 +02:00
Aayush Rajasekaran dbc721af3a Release Template: remove binary validation step 2021-07-08 14:45:24 -04:00
vyzo b6611125b6 add environment variables to turn on the debug log without recompiling 2021-07-08 21:30:39 +03:00
vyzo 60dd97c7fc fix potential deadlock in View
As pointed out by magik, it is possible to deadlock if the view callback performs
a blockstore operation while a Lock is pending.
This fixes the issue by optimistically tracking the reference before actually calling
the underlying View and limiting the scope of the lock.
2021-07-08 21:18:59 +03:00
Łukasz Magiera 44e81424f2 Print completed deal stats in miner info 2021-07-08 19:40:05 +02:00
Łukasz Magiera ed0cc0b56d Handle bad peerIDs in MarketListRetrievalDeals 2021-07-08 19:27:03 +02:00
Łukasz Magiera 10825e3a95 Add more info about deals to miner info 2021-07-08 19:02:18 +02:00
Łukasz Magiera 8f7bf1df86 Merge pull request #6697 from filecoin-project/feat/dealpublish-ctl-config
Config for deal publishing control addresses
2021-07-08 19:00:29 +02:00
Łukasz Magiera 79b0bfb272 policy: Add a docstring to SetProviderCollateralSupplyTarget 2021-07-08 18:56:03 +02:00
vyzoandŁukasz Magiera c0537848b3 fix typo
Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
2021-07-08 17:54:16 +03:00
vyzoandŁukasz Magiera fa30ac8c5d fix typo
Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
2021-07-08 17:53:59 +03:00
Łukasz Magiera 616fcb974c Merge pull request #6689 from filecoin-project/reset/interopnet
Reset of the interop network
2021-07-08 15:53:24 +02:00
vyzo 00d7772f57 move check for closure in walkChain
so that we don't do it too often and also cover warmup.
2021-07-08 13:12:19 +03:00
Łukasz Magiera e258e7c353 Merge pull request #6696 from filecoin-project/chore/even-less-color-on-cli
Enable color by default only if os.Stdout is a TTY
2021-07-08 12:05:10 +02:00
vyzo 5cf1e09e81 README: add instructions for how to enable 2021-07-08 13:00:31 +03:00
vyzo 9aa4f3b3b2 add README for documentation 2021-07-08 12:32:41 +03:00
Peter Rabbitson 4dd59b566c Respect GOLOG_LOG_FMT=color 2021-07-08 10:44:37 +02:00
Peter Rabbitson 140a2e0200 Stabilize default text and make gen docsgen-cli 2021-07-08 10:44:13 +02:00
vyzo e6eacbdd56 use RW mutexes in marksets 2021-07-08 10:20:29 +03:00
vyzo 48f13a43b7 intelligently close marksets and signal errors in concurrent operations 2021-07-08 10:18:43 +03:00
vyzo f5c45bd517 check the closing state variable often
so that we have a reasonably quick graceful shutdown
2021-07-08 10:13:44 +03:00
Łukasz Magiera 9bdea91a70 itests: Some kit cleanup 2021-07-07 21:40:44 +02:00
vyzo 4f808367f8 fix lint 2021-07-07 21:32:58 +03:00
vyzo fee50b13a2 check the closing state on each batch during the purge. 2021-07-07 21:32:05 +03:00
vyzo c6421f8a75 don't nil the mark sets on close, it's dangerous.
a concurrent marking can panic.
2021-07-07 21:27:36 +03:00
Łukasz Magiera d0e87a7487 dealpublisher: Fix provider address checks 2021-07-07 20:06:49 +02:00
Łukasz Magiera 2dc27d6ab4 itests: Fix deal provider collateral flakiness 2021-07-07 19:41:46 +02:00
Łukasz Magiera ee97aa0a8a dealpublisher: Use address selector 2021-07-07 19:12:03 +02:00
Peter Rabbitson c7bb326c78 Enable color by default only if os.Stdout is a TTY 2021-07-07 18:12:24 +02:00
Łukasz Magiera 8f5c0c60f5 Config for deal publishing control addresses 2021-07-07 18:00:54 +02:00
Anton Evangelatov 82efe01c70 fixup 2021-07-07 18:00:28 +02:00
Anton Evangelatov bb466ede66 fix cast on role_miner in testground lotus-soup plan 2021-07-07 16:04:01 +02:00
vyzo aec2ba2c82 nil map/bf on markset close 2021-07-07 16:46:14 +03:00
vyzo ec586a852a remove bbolt dependency from go.mod 2021-07-07 16:41:11 +03:00
vyzo 451ddf50ab RIP bbolt-backed markset 2021-07-07 16:39:37 +03:00
vyzo 9dbb2e0abd don't leak tracking errors through the API 2021-07-07 16:34:02 +03:00
Łukasz Magiera 49896afe9f Merge pull request #6694 from filecoin-project/chore/no-unexpected-color
Stop outputing ANSI color on non-TTY
2021-07-07 15:04:44 +02:00
Anton Evangelatov 1fe08f5973 refactor testkit in lotus-soup to include Subsystems when instantiating miner 2021-07-07 14:21:28 +02:00
Anton Evangelatov 6b014f57e5 pass Subsystems to StorageMiner option; add enableLibp2p bool in Settings 2021-07-07 13:56:37 +02:00
Anton Evangelatov caa366bc6a variadic WithSubsystems 2021-07-07 13:35:40 +02:00
Anton Evangelatov 42ae876711 remove ApplyIfEnableLibP2P 2021-07-07 13:31:56 +02:00
Peter Rabbitson dcfbb1998f Stop outputing ANSI color on non-TTY
No more stuff like: https://circleci.com/gh/filecoin-project/lotus/189136
2021-07-07 11:06:20 +02:00
vyzo 83c30dc4c0 protect assignment of warmup epoch with the mutex 2021-07-07 11:31:27 +03:00
vyzo 6cc2112749 remove the curTs state variable; we don't need it 2021-07-07 09:55:25 +03:00
vyzo 05dbbe9681 rename som Txn methods for better readability 2021-07-07 09:52:31 +03:00
vyzo 90da6227b3 transactional protect incoming tipsets 2021-07-07 02:11:37 +03:00
vyzo 0e2af11f6a prepare the transaction before launching the compaction goroutine 2021-07-07 01:39:58 +03:00
Łukasz Magiera 88c578bc54 Merge pull request #6690 from filecoin-project/fix-gate-dollar
add dollar sign
2021-07-06 22:56:42 +02:00
Cory Schwartz f268068457 add dollar sign 2021-07-06 13:29:49 -07:00
Łukasz Magiera 251214dfd9 Merge pull request #6681 from jimpick/patch-1
get-actor cli spelling fix
2021-07-06 21:05:40 +02:00
Jim Pick a8ca7baa93 Run make docsgen-cli 2021-07-06 18:16:06 +00:00
Travis Person 9977a6d1d7 Add genesis for interop network 2021-07-06 17:06:55 +00:00
Travis Person 9d6d1f5715 Reset interop network 2021-07-06 17:06:55 +00:00
Anton Evangelatov 566a9d5541 fix signature 2021-07-06 18:12:30 +02:00
Łukasz Magiera 9f83da836d Merge pull request #6688 from turuslan/fix/seed-car
fix "lotus-seed genesis car" error "merkledag: not found"
2021-07-06 17:59:54 +02:00
Anton Evangelatov 2a7af38538 fix testServ to Start with correct listener 2021-07-06 17:57:08 +02:00
Anton Evangelatov 7a78527fde remove not used sa; cleanup 2021-07-06 17:46:21 +02:00
Anton Evangelatov b572c2b7bc fix IsUnsealed 2021-07-06 17:40:03 +02:00
Anton Evangelatov 10dc90f7fe addressing comments 2021-07-06 17:33:47 +02:00
Anton EvangelatovandŁukasz Magiera 898687ea2e Update node/modules/storageminer.go
Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
2021-07-06 17:28:52 +02:00
Anton EvangelatovandŁukasz Magiera 8cf3accc53 Update itests/kit/ensemble.go
Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
2021-07-06 17:25:33 +02:00
Anton EvangelatovandŁukasz Magiera 604be5fc82 Update extern/sector-storage/stores/remote.go
Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
2021-07-06 17:24:56 +02:00
vyzo f2f4af669d clean up: simplify debug log, get rid of ugly debug log 2021-07-06 17:13:38 +03:00
Anton Evangelatov ff2772a58c resolved conflicts 2021-07-06 16:00:41 +02:00
Anton Evangelatov 9839d5701b fix SectorsStatus to query full node for on-chain data 2021-07-06 15:41:14 +02:00
vyzo c1c25868cc improve comments 2021-07-06 15:09:04 +03:00
vyzo fdff1bebc9 move map markset implementation to its own file 2021-07-06 14:44:40 +03:00
vyzo 5c514504f7 remove unused GetGenesis method from ChainAccessor interface 2021-07-06 14:41:41 +03:00
vyzo dc8139a1d2 add some comments for debug only code 2021-07-06 13:23:12 +03:00
turuslan 8697edc8b7 fix "lotus-seed car" error "merkledag: not found" 2021-07-06 12:54:09 +03:00
vyzo c4ae3e0c3d minor tweak 2021-07-06 09:17:35 +03:00
vyzo 169ab262f5 really optimize computing object weights
sort is still taking a long time, this should be as fast as it gets.
2021-07-06 09:02:44 +03:00
vyzo 55a9e0ccd1 short-circuit block headers on sort weight computation 2021-07-06 08:22:43 +03:00
vyzo bf7aeb3167 optimize sort a tad
it's taking a long time to compute weights...
2021-07-06 08:10:57 +03:00
vyzo 0659235e21 cache cid strings in sort
so as to avoid making a gazillion of strings
2021-07-06 07:26:13 +03:00
vyzo 525a2c71dd use hashes as keys in weight map to avoid duplicate work
otherwise the root object will be raw, but internal references will be dag; duplicate work.
2021-07-06 01:27:56 +03:00
vyzo c6ad8fdaed use walkObjectRaw for computing object weights
cids that come out of the hotstore with ForEach are raw.
2021-07-06 01:08:44 +03:00
vyzo 2cbd3faf5a make sure to nil everything in txnEndProtect 2021-07-05 23:56:31 +03:00
vyzo 51ab891d5c quiet linter
it's a false positive, function doesn't escape.
2021-07-05 23:53:45 +03:00
vyzo bd436ab9de make endTxnProtect idempotent 2021-07-05 23:51:10 +03:00
vyzo e859942fa4 code cleanup: refactor txn state code into their own functions 2021-07-05 23:31:37 +03:00
vyzo 3477d265c6 unify the two marksets
really, it's concurrent marking and there is no reason to have two different marksets
2021-07-05 20:10:47 +03:00
Łukasz Magiera 97207df705 Merge pull request #6639 from filecoin-project/frrist/context-in-statetree-diff
polish(statetree): accept a context in statetree diff for timeouts
2021-07-05 17:30:31 +02:00
vyzo 73d07999bf dont needlessly wait 1 min in first retry for missing refs 2021-07-05 18:24:48 +03:00
vyzo af8cf712be handle all missing refs together
so that we wait 6min at most, not 12.
2021-07-05 18:16:54 +03:00
Jim Pick 17c0b9be44 Spelling fix
Change 'actorr' to 'actor'
2021-07-05 07:44:06 -07:00
Łukasz Magiera d76cbf805a Merge pull request #6672 from filecoin-project/asr/nit
Add helptext to lotus chain export
2021-07-05 16:22:16 +02:00
Łukasz Magiera 5e5de9b41b Merge pull request #6679 from filecoin-project/fix/get-retrieval-pricing-input-error
Get retrieval pricing input should not error out on a deal state fetch
2021-07-05 16:18:48 +02:00
Łukasz Magiera a56b6fea99 Merge pull request #6680 from filecoin-project/chore/double-encoded-cid
Fix more CID double-encoding as hex
2021-07-05 16:14:52 +02:00
vyzo 5a099b7d05 more commentary on the missing refs situation 2021-07-05 16:12:17 +03:00
vyzo 59639a0788 reinstate some better code for handling missing references. 2021-07-05 16:08:08 +03:00
Anton Evangelatov 5a87f04e71 fix finalize sectors early test 2021-07-05 13:36:23 +02:00
vyzo fa195bede2 get rid of ugly missing reference handling code
those missing objects don't seem to ever get there, are they from an abandoned fork?
2021-07-05 14:29:55 +03:00
Anton Evangelatov 4be0a7a215 resolve conflicts with master 2021-07-05 13:13:32 +02:00
Peter Rabbitson a544fa0f97 Fix more CID doucle-encoding as hex 2021-07-05 12:51:15 +02:00
aarshkshah1992 add113f585 use multierror 2021-07-05 16:08:51 +05:30
vyzo 59936ef468 fix log 2021-07-05 13:30:31 +03:00
aarshkshah1992 44985722d2 changes as per review 2021-07-05 15:53:41 +05:30
vyzo 0b7153be86 use internal version of has for occurs checks 2021-07-05 12:41:11 +03:00
vyzo d8b8d75e0f readd minute delay before trying for missing objects 2021-07-05 12:38:09 +03:00
vyzo d7709deb2b reduce memory pressure from marksets when the size is decreased 2021-07-05 11:51:22 +03:00
vyzo 3ec834b2e3 improve logs and error messages 2021-07-05 11:41:09 +03:00
vyzo 918a7ec749 a bit more fil commitment short-circuiting 2021-07-05 11:38:53 +03:00
vyzo 2ea2abc07d short-circuit fil commitments
they don't make it to the blockstore anyway
2021-07-05 11:32:52 +03:00
vyzo 839f7bd2b5 only occur check for DAGs 2021-07-05 11:11:08 +03:00
vyzo c81ae5fc20 add some comments about the missing business and anothre log 2021-07-05 10:42:14 +03:00
vyzo 4c41f52828 add warning for missing objects for marking for debug purposes 2021-07-05 10:35:04 +03:00
vyzo 3597192d58 remove the sleeps and busy loop more times when waiting for missing objects 2021-07-05 10:31:47 +03:00
vyzo 1726eb993c deal with incomplete objects that need to be marked and protected
seems that something is writing DAGs before its consituents, which causes problems.
2021-07-05 10:22:52 +03:00
aarshkshah1992 8ecdc929b4 get retrieval pricing input should not error out on a deal state fetch 2021-07-05 09:34:56 +05:30
vyzo db53859e7a reduce CompactionThreshold to 5 finalities
so that we run compaction every finality, once we've first compacted
2021-07-04 22:12:51 +03:00
vyzo b08e0b7102 fix lint 2021-07-04 21:24:15 +03:00
vyzo 94efae419e reduce length of critical section
Just the purge; the rest is not critical -- e.g. it's ok if we do some duplicate copies
to the coldstore, we'll have gc soon.
2021-07-04 21:21:53 +03:00
vyzo f33d4e79aa simplify transactional protection logic
Now that we delete objects heaviest first, we don't have to do deep walk and rescan gymnastics.
2021-07-04 20:49:39 +03:00
vyzo 40c271cda1 sort cold objects before deleting
so that we can't shoot ourselves in the foot by deleting the constituents of a DAG while it is
still in the hotstore.
2021-07-04 20:17:07 +03:00
vyzo 13d612f72f smarter trackTxnRefMany 2021-07-04 19:33:49 +03:00
vyzo f124389b66 recursively protect all references 2021-07-04 19:21:00 +03:00
vyzo 4d286da593 fix error message 2021-07-04 18:58:39 +03:00
vyzo 680af8eb09 use deep object walking for more robust handling of transactional references 2021-07-04 18:38:28 +03:00
vyzo 1f02428225 fix lint 2021-07-04 18:38:28 +03:00
vyzo 2c7a89a1db short-circuit rescanning on block headers 2021-07-04 18:38:28 +03:00
vyzo 028a5c4942 make test do something useful again 2021-07-04 18:38:28 +03:00
vyzo 8e56fffb33 walkChain should visit the genesis state root 2021-07-04 18:38:28 +03:00
vyzo 95c3aaec9a fix test 2021-07-04 18:38:28 +03:00
vyzo 190cb18ab0 housekeeping
- remove defunct tracking store implementations
- update splitstore node config
- use mark set type config option (defaulting to mapts); a memory constrained node
  may want to use an on-disk one
2021-07-04 18:38:28 +03:00
vyzo 19d1b1f532 deal with partially written objects 2021-07-04 18:38:28 +03:00
vyzo 0a1d7b3732 fix log 2021-07-04 18:38:28 +03:00
vyzo 08cad30be2 reuse key buffer in badger ForEachKey
cid copies the bytes so it's safe
2021-07-04 18:38:28 +03:00
vyzo eafffc1634 more efficient trackTxnRefMany 2021-07-04 18:38:28 +03:00
vyzo 36f93649ef fix panic from concurrent map writes in txnRefs 2021-07-04 18:38:28 +03:00
vyzo 6fa2cd232d simplify compaction model 2021-07-04 18:38:28 +03:00
vyzo 5f7ae1f489 update splistore DI constructor 2021-07-04 18:38:28 +03:00
vyzo 1f2b604c07 RIP tracking store 2021-07-04 18:38:28 +03:00
vyzo d476a3db2c BlockstoreIterator trait with implementation for badger 2021-07-04 18:38:28 +03:00
vyzo 68a83500bc fix bug that turned candidate filtering to dead code 2021-07-04 18:38:28 +03:00
vyzo 00fcf6dd72 add staging cache to bolt tracking store 2021-07-04 18:38:28 +03:00
vyzo 642f0e4740 deal with memory pressure, don't walk under the boundary 2021-07-04 18:38:28 +03:00
vyzo c5cf8e226b remove unnecessary code 2021-07-04 18:38:28 +03:00
vyzo d79e4da7aa more accurate stats about mark set updates 2021-07-04 18:38:28 +03:00
vyzo 6f58fdcb22 remove vm copy context detection hack
stack tracing is slow.
2021-07-04 18:38:28 +03:00
vyzo 2b03316cd9 fix log message 2021-07-04 18:38:28 +03:00
vyzo 184d3802b6 remove dead code 2021-07-04 18:38:28 +03:00
vyzo 228a435ba7 rework tracking logic; do it lazily and far more efficiently 2021-07-04 18:38:28 +03:00
vyzo 9d6cabd18a if it's not a dag, it's not a block 2021-07-04 18:38:28 +03:00
vyzo 8157f889ce short-circuit marking walks when encountering a block and more efficient walking 2021-07-04 18:38:28 +03:00
vyzo 736d6a3c19 only treat Has as an implicit write within vm.Copy context 2021-07-04 18:38:28 +03:00
vyzo 39723bbe60 use a single map for tracking pending writes, properly track implicits 2021-07-04 18:38:28 +03:00
vyzo 5834231e58 create the transactional protect filter before walking 2021-07-04 18:38:28 +03:00
vyzo e4bb4be855 fix some residual purge races 2021-07-04 18:38:28 +03:00
vyzo 68bc5d2291 skip moving cold blocks when running with a noop coldstore
it is a noop but it still takes (a lot of) time because it has to read all the cold blocks.
2021-07-04 18:38:28 +03:00
vyzo b87295db93 bubble up dependent txn ref errors
This cause Has to return false if it fails to traverse/protect all links, which would cause
the vm to recompute.
2021-07-04 18:38:28 +03:00
vyzo 637fbf6c5b fix faulty if/else logic for implicit txn protection 2021-07-04 18:38:28 +03:00
vyzo 9d6bcd7705 avoid clown shoes: only walk links for tracking in implicit writes/refs 2021-07-04 18:38:28 +03:00
vyzo 484dfaebce reused cidset across all walks when flushing pending writes 2021-07-04 18:38:28 +03:00
vyzo 1d41e1544a optimize transitive write tracking a bit 2021-07-04 18:38:28 +03:00
vyzo da00fc66ee downgrade a couple of logs to warnings 2021-07-04 18:38:28 +03:00
vyzo 4071488ef2 first write, then track 2021-07-04 18:38:28 +03:00
vyzo bd92c230da refactor txn reference tracking, do deep marking of DAGs 2021-07-04 18:38:28 +03:00
vyzo a98a062347 do the dag walk for deep write tracking during flush
avoid crawling everything to a halt
2021-07-04 18:38:28 +03:00
vyzo 13a674330f add pending write check before tracking the object in Has 2021-07-04 18:38:28 +03:00
vyzo 982867317e transitively track dags from implicit writes in Has 2021-07-04 18:38:28 +03:00
vyzo 4de0cd9fcb move write log back to flush so that we don't crawl to a halt 2021-07-04 18:38:28 +03:00
vyzo b3ddaa5f02 fix panic at startup
genesis is written (!) before starting the splitstore, so curTs is nil
2021-07-04 18:38:28 +03:00
vyzo 2faa4aa993 debug log writes at track so that we get correct stack traces 2021-07-04 18:38:28 +03:00
vyzo aeaa59d4b5 move comments about tracking perf issues into a more pertinent place 2021-07-04 18:38:28 +03:00
vyzo 3e8e9273ca track all writes using async batching, not just implicit ones 2021-07-04 18:38:28 +03:00
vyzo d0bfe421b5 flush implicit writes at the right time before starting compaction to avoid races 2021-07-04 18:38:28 +03:00
vyzo 7f473f56eb flush implicit writes before starting compaction 2021-07-04 18:38:28 +03:00
vyzo a29947d47c flush implicit writes in all paths in updateWriteEpoch 2021-07-04 18:38:28 +03:00
vyzo be6cc2c3e6 batch implicit write tracking
bolt performance leaves something to be desired; doing a single Put takes 10ms, about the same time
as batching thousands of them.
2021-07-04 18:38:28 +03:00
vyzo e472cacb3e add missing return 2021-07-04 18:38:28 +03:00
vyzo 6a3cbea790 treat Has as an implicit Write
Rationale: the VM uses the Has check to avoid issuing a duplicate Write in the blockstore.
This means that live objects that would be otherwise written are not actually written, resulting
in the first write epoch being considered the write epoch.
2021-07-04 18:38:28 +03:00
vyzo f97535d87e store the hash in map markset 2021-07-04 18:38:28 +03:00
vyzo 90dc274113 better logging for chain walk 2021-07-04 18:38:28 +03:00
vyzo 40f42db7fa walk tweaks 2021-07-04 18:38:28 +03:00
vyzo 09efed50fd check for lookback references to block headers in walk 2021-07-04 18:38:28 +03:00
vyzo 7de0771883 count txn live objects explicitly for logging 2021-07-04 18:38:28 +03:00
vyzo e29b64c5de check both markset and txn liveset before declaring an object cold 2021-07-04 18:38:28 +03:00
vyzo 4bed3161f0 fix broken purge count log 2021-07-04 18:38:28 +03:00
vyzo 7307eb54dc cache stack repr computation 2021-07-04 18:38:28 +03:00
vyzo 57e25ae1cd use succint timetamp in debug logs 2021-07-04 18:38:28 +03:00
vyzo b2b13bbe89 fix debug panic 2021-07-04 18:38:28 +03:00
vyzo 0b315e97c8 fix index out of range 2021-07-04 18:38:28 +03:00
vyzo dec61fa333 deduplicate stack logs and optionally trace write stacks 2021-07-04 18:38:28 +03:00
vyzo 7ebef6d838 better log message 2021-07-04 18:38:28 +03:00
vyzo 40ff5bf164 log put errors in splitstore log 2021-07-04 18:38:28 +03:00
vyzo 9fda61abec fix error check for unreachable cids 2021-07-04 18:38:28 +03:00
vyzo 4a71c68e06 move code around for better readability 2021-07-04 18:38:28 +03:00
vyzo 31497f4bd3 use internal get during walk to avoid blowing the compaction txn
otherwise the walk itself precludes purge... duh!
2021-07-04 18:38:28 +03:00
vyzo 6af3a23dd4 use a map for txn protection mark set 2021-07-04 18:38:28 +03:00
vyzo 65ccc99e79 minor tweaks in purge
- allocate once
- log purge count
2021-07-04 18:38:28 +03:00
vyzo cb665d07e0 fix transactional race during compaction
It is possible for an object to be written or recreated (and checked with Has)
after the mark completes and during the purge; if this happens we will purge
a live block.
2021-07-04 18:38:28 +03:00
vyzo 649b7dd162 add config option for hot headers 2021-07-04 18:38:28 +03:00
vyzo 50ebaf25aa don't log read misses before warmup 2021-07-04 18:38:28 +03:00
vyzo 375a1790e7 reset counters after flush 2021-07-04 18:38:28 +03:00
vyzo b187b5c301 fix lint 2021-07-04 18:38:28 +03:00
vyzo a53c4e1597 implement debug log 2021-07-04 18:38:28 +03:00
vyzo fce7b8dc9b flush move log when cold collection is done 2021-07-04 18:38:28 +03:00
vyzo fc247e4223 add debug log skeleton 2021-07-04 18:38:28 +03:00
vyzo 0390285c4e always do full walks, not only when there is a sync gap 2021-07-04 18:38:28 +03:00
vyzo 30dbe4978b adjust compaction range 2021-07-04 18:38:28 +03:00
vyzo a21f55919b CompactionThreshold should be 4 finalities
otherwise we'll wear clown shoes with the slack and end up in continuous compaction.
2021-07-04 18:38:28 +03:00
vyzo 79d21489df fix test 2021-07-04 18:38:28 +03:00
vyzo a25ac80777 reintroduce compaction slack 2021-07-04 18:38:28 +03:00
vyzo a178c1fb93 fix test 2021-07-04 18:38:28 +03:00
vyzo c4d95de987 coalesce back-to-back compactions
get rid of the CompactionCold construct, run a single compaction on catch up
2021-07-04 18:38:28 +03:00
vyzo b7897595eb augment current epoch by +1
to account for off by one conditions
2021-07-04 18:38:28 +03:00
vyzo 933c786421 update write epoch in the background every second 2021-07-04 18:38:28 +03:00
vyzo 66f1630f14 fix lint issue 2021-07-04 18:38:28 +03:00
vyzo bb17608ae0 track writeEpoch relative to current wall clock time
The issue: head change notifications are not emitted until after catching up,
which results in all writes during a catch up period being tracked at the base epoch.
2021-07-04 18:38:28 +03:00
vyzo 421f05eab9 save the warm up epoch only if successful in warming up 2021-07-04 18:38:28 +03:00
vyzo 9b6448518c refactor warmup to trigger at startup and not wait for sync 2021-07-04 18:38:28 +03:00
vyzo 3fe4261f12 don't attempt compaction while still syncing 2021-07-04 18:38:28 +03:00
vyzo 7b02673620 don't try to visit genesis parent blocks 2021-07-04 18:38:28 +03:00
vyzo 997f2c098b keep headers hot when running with a noop splitstore 2021-07-04 18:38:28 +03:00
vyzo 7c814cd2e3 refactor genesis state loading code into its own method 2021-07-04 18:38:28 +03:00
vyzo 41573f1fb2 also walk parent message receipts when including messages in the walk 2021-07-04 18:38:28 +03:00
vyzo fa6481401d reduce SyncGapTime to 1 minute
for maximal safety.
2021-07-04 18:38:28 +03:00
vyzo fda291b876 fix test 2021-07-04 18:38:28 +03:00
vyzo d33a44e67f first visit the cid, then short-circuit non dagcbor objects 2021-07-04 18:38:28 +03:00
vyzo bdb97d6186 more robust handling of sync gap walks 2021-07-04 18:38:28 +03:00
vyzo 7cf75e667d keep genesis-linked state hot 2021-07-04 18:38:28 +03:00
vyzo e9f531b4aa don't open bolt tracking store with NoSync, it might get corrupted 2021-07-04 18:38:28 +03:00
Raúl Kripalani b2b7eb2ded metrics: increment misses in View(). 2021-07-04 18:38:28 +03:00
vyzo 3a9b7c592d mark from current epoch to boundary epoch when necessary
this is necessary to avoid wearing clown shoes when the node stays
offline for an extended period of time (more than 1 finality).

Basically it gets quite slow if we do the full 2 finality walk, so we
try to avoid it unless necessary.
The conditions under which a full walk is necessary is if there is a
sync gap (most likely because the node was offline) during which the
tracking of writes is inaccurate because we have not yet delivered the
HeadChange notification.  In this case, it is possible to have
actually hot blocks to be tracked before the boundary and fail to mark
them accordingly.  So when we detect a sync gap, we do the full walk;
if there is no sync gap, we can just use the much faster boundary
epoch walk.
2021-07-04 18:38:28 +03:00
vyzo d7ceef104e decrease CompactionThreshold to 3 finalities 2021-07-04 18:38:28 +03:00
vyzo e3cbeec6ee implement chain walking 2021-07-04 18:38:28 +03:00
vyzo 04f2e102a1 kill full splitstore compaction, simplify splitstore configuration 2021-07-04 18:38:28 +03:00
vyzo 5cca29d1db hook noop blockstore for splitstore in DI 2021-07-04 18:38:28 +03:00
vyzo 4d3c73f4ca noop blockstore 2021-07-04 18:38:28 +03:00
Łukasz Magiera a577bf340e Merge pull request #6675 from filecoin-project/chore/remove_vestigial_replace
Remove leftover from the great de-submoduling
2021-07-04 12:11:54 +02:00
Peter Rabbitson 5c643d6141 Remove leftover from the great de-submoduling
This is no longer used anywhere in lotus
2021-07-04 09:40:47 +02:00
Aayush Rajasekaran 069fd0a244 Add helptext to lotus chain export 2021-07-03 12:41:43 -04:00
Cory Schwartz 5a7743214a Merge branch 'master' into feat/docker-compose 2021-07-02 17:00:13 -07:00
Łukasz Magiera 13d4563c25 Merge pull request #6663 from filecoin-project/raulk/test-incremental-nonce
add an incremental nonce itest.
2021-07-02 23:33:52 +02:00
Jennifer 0519cd371e Merge pull request #6665 from filecoin-project/backports/v1.11.0-rc2
Backports for v1.11.0-rc2
2021-07-02 17:09:33 -04:00
Łukasz Magiera acc4888b13 Merge pull request #6667 from filecoin-project/jen/changelogv11
bump version to v1.11.0-rc2
2021-07-02 22:28:43 +02:00
Łukasz Magiera 83114546c6 Merge branch 'backports/v1.11.0-rc2' into jen/changelogv11 2021-07-02 22:28:24 +02:00
Jennifer Wang 68bde33977 update changelog and bump version to v1.11.0-rc2 2021-07-02 16:01:51 -04:00
Jennifer Wang 0b5d1551fe format fix and small clarification 2021-07-02 15:53:29 -04:00
Jennifer Wang a06ecde580 recommend to update 2021-07-02 15:33:58 -04:00
Jennifer Wang 94574447e6 Add v1.10.1-rc1 changelog 2021-07-02 15:30:58 -04:00
Łukasz Magiera 947c86bd77 set version to v1.11.0-rc2 2021-07-02 20:59:35 +02:00
Łukasz Magiera 6610965f87 storage: Fix FinalizeSector with sectors in stoage paths 2021-07-02 20:57:36 +02:00
Łukasz Magiera 29763df433 set version to v1.10.1-rc1 2021-07-02 20:56:09 +02:00
Łukasz Magiera 0511770d53 storage: Fix FinalizeSector with sectors in stoage paths 2021-07-02 20:49:47 +02:00
Łukasz Magiera e2f48b21ab Merge pull request #6653 from filecoin-project/fix/finalize-in-storage
storage: Fix FinalizeSector with sectors in stoage paths
2021-07-02 20:38:25 +02:00
Łukasz Magiera 8a94ab676e storage: Fix FinalizeSector with sectors in stoage paths 2021-07-02 19:54:45 +02:00
Peter Rabbitson da0920584c Fix tiny error in check-client-datacap 2021-07-02 18:29:15 +02:00
zhoutian527 57d70e58f3 Fix: precommit_batch method used the wrong cfg.PreCommitBatchWait 2021-07-02 18:29:09 +02:00
johnli-helloworld dbdbb6f0dd to optimize the batchwait 2021-07-02 18:29:06 +02:00
llifezouandŁukasz Magiera d5b7e81b09 Update extern/storage-sealing/states_sealing.go
fix sector precommitted but expired judgment

Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
2021-07-02 18:29:03 +02:00
llifezouandAayush Rajasekaran 101d152540 Update extern/storage-sealing/states_sealing.go
fix log

Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
2021-07-02 18:29:03 +02:00
llifezou 21528c0a95 fix getTicket: sector precommitted but expired case 2021-07-02 18:29:02 +02:00
llifezou 31c929e7b7 fix ticket expiration check, otherwise it may cause a large number of loops to retry GetTicket when retrying PreCommit1 2021-07-02 18:29:02 +02:00
Łukasz Magiera 3875746f80 commit batch: Regression test nil FailedSectors map 2021-07-02 18:29:00 +02:00
Łukasz Magiera 22f183e8ef commit batch: AggregateAboveBaseFee config 2021-07-02 18:29:00 +02:00
johnli-helloworld e9f3a2f486 handleSubmitCommitAggregate() exception handling 2021-07-02 18:28:56 +02:00
Łukasz Magiera 5f3b21269d gofmt 2021-07-02 18:28:52 +02:00
wangchao 10e00b1ba9 remove precommit check in handleCommitFailed 2021-07-02 18:28:52 +02:00
Jerry c164a9fbdc ensure agg fee is adequate 2021-07-02 18:28:46 +02:00
Jerry a4f65bed41 fix: miner balance is not enough, so that ProveCommitAggregate msg exec failed 2021-07-02 18:28:20 +02:00
Łukasz Magiera af1dd7d2ed commit batch: Initialize the FailedSectors map 2021-07-02 18:28:01 +02:00
Peter Rabbitson ebbfe03831 Fix tiny error in check-client-datacap 2021-07-02 18:24:43 +02:00
Łukasz Magiera bcb839a7d3 Merge pull request #6664 from filecoin-project/chore/fix_check-client-datacap
Fix tiny error in check-client-datacap
2021-07-02 18:24:18 +02:00
Peter Rabbitson 30efcf21f0 Fix tiny error in check-client-datacap 2021-07-02 18:15:08 +02:00
zhoutian527 c5ea17f838 Fix: precommit_batch method used the wrong cfg.PreCommitBatchWait 2021-07-02 18:09:13 +02:00
johnli-helloworld 4fe3ecb8fc to optimize the batchwait 2021-07-02 18:09:05 +02:00
llifezouandŁukasz Magiera db30d891c8 Update extern/storage-sealing/states_sealing.go
fix sector precommitted but expired judgment

Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
2021-07-02 18:05:49 +02:00
llifezouandAayush Rajasekaran 4c3bcd121b Update extern/storage-sealing/states_sealing.go
fix log

Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
2021-07-02 18:05:49 +02:00
llifezou 5aeacd2989 fix getTicket: sector precommitted but expired case 2021-07-02 18:05:49 +02:00
llifezou 504882e162 fix ticket expiration check, otherwise it may cause a large number of loops to retry GetTicket when retrying PreCommit1 2021-07-02 18:05:48 +02:00
Raúl Kripalani ca40234031 update circleci config. 2021-07-02 17:04:57 +01:00
Raúl Kripalani 592b8c4f4a add an incremental nonce itest. 2021-07-02 17:04:13 +01:00
Łukasz Magiera 3370450711 commit batch: Regression test nil FailedSectors map 2021-07-02 18:02:40 +02:00
Łukasz Magiera 6d555c9183 commit batch: AggregateAboveBaseFee config 2021-07-02 18:02:21 +02:00
johnli-helloworld c21e275ebd handleSubmitCommitAggregate() exception handling 2021-07-02 18:01:00 +02:00
Łukasz Magiera ab2503f446 gofmt 2021-07-02 17:59:45 +02:00
wangchao 76fff49266 remove precommit check in handleCommitFailed 2021-07-02 17:59:45 +02:00
Jerry 042166996b ensure agg fee is adequate 2021-07-02 17:58:30 +02:00
Jerry 1a869632f6 fix: miner balance is not enough, so that ProveCommitAggregate msg exec failed 2021-07-02 17:58:30 +02:00
Łukasz Magiera bb2b13430a commit batch: Initialize the FailedSectors map 2021-07-02 17:54:24 +02:00
Łukasz Magiera 38b476c507 set version to v1.10.1-dev 2021-07-02 17:53:36 +02:00
Łukasz Magiera 35c0e3cf8c Merge pull request #6658 from sunday527/master
Fix: precommit_batch method used the wrong cfg.CommitBatchWait
2021-07-02 15:18:48 +02:00
Łukasz Magiera 60ecbdee8f Merge pull request #6635 from llifezou/fix_checkTicketExpired
fix ticket expiration check
2021-07-02 15:18:04 +02:00
Anton Evangelatov adba1a792a add missing err check 2021-07-02 15:15:16 +02:00
Anton Evangelatov e9d0a25436 remove redundant flag from docs 2021-07-02 15:11:57 +02:00
Anton Evangelatov ab6e01e379 remove --enable-markets flag, read from repo 2021-07-02 15:08:25 +02:00
Anton Evangelatov 724f728f60 enable more tests 2021-07-02 14:54:09 +02:00
Anton Evangelatov 8dbae00847 fix lotus-soup 2021-07-02 12:45:56 +02:00
Anton Evangelatov 287e06995a missing flag, that will need to be refactored 2021-07-02 12:41:28 +02:00
Anton Evangelatov 9e85492b85 fix test 2021-07-02 12:24:07 +02:00
Anton Evangelatov 96245c3cfa lint 2021-07-02 12:02:36 +02:00
Anton Evangelatov 4194c7fa24 revert back optional for Miner; remove ActorAddress call in node.MinerHandler 2021-07-02 11:58:31 +02:00
zhoutian527 71e1577a62 Fix: precommit_batch method used the wrong cfg.PreCommitBatchWait 2021-07-02 15:53:21 +08:00
llifezouandŁukasz Magiera df53b97fe4 Update extern/storage-sealing/states_sealing.go
fix sector precommitted but expired judgment

Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
2021-07-02 11:44:46 +08:00
llifezouandAayush Rajasekaran fe3ad4fd60 Update extern/storage-sealing/states_sealing.go
fix log

Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
2021-07-02 11:38:04 +08:00
Łukasz Magiera 20c8250872 Merge pull request #6650 from filecoin-project/feat/agg-balancer-config
commit batch: AggregateAboveBaseFee config
2021-07-01 18:36:12 +02:00
Raúl Kripalani 1869de7662 unwire host from storage.Miner. 2021-07-01 13:53:20 +01:00
Łukasz Magiera 7c2c8b2a95 commit batch: Regression test nil FailedSectors map 2021-07-01 13:51:11 +02:00
Łukasz Magiera c094aa82ec commit batch: AggregateAboveBaseFee config 2021-07-01 13:33:54 +02:00
Łukasz Magiera 98a4be475c Merge pull request #6647 from filecoin-project/fix/nil-failedsectors-map
commit batch: Initialize the FailedSectors map
2021-07-01 12:40:15 +02:00
Łukasz Magiera 88bb9f422e commit batch: Initialize the FailedSectors map 2021-07-01 12:15:58 +02:00
llifezou 73e58f7af1 fix getTicket: sector precommitted but expired case 2021-07-01 10:53:42 +08:00
frrist d02a2a2cfa polish(statetree): accept a context in statetree diff for timeouts
- this operation can take a while, this changes gives users the option
to abort if it takes "too long".
2021-06-30 16:40:43 -07:00
Cory Schwartz d3ff5a2a4f Merge tag 'v1.11.0-rc1' into feat/docker-compose 2021-06-30 15:40:54 -07:00
Aayush RajasekaranandŁukasz Magiera 3091e2a771 Update miner/miner.go
Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
2021-06-30 12:15:43 -04:00
Anton Evangelatov 3aa6d03cc1 connect miner to full node , only when running markets 2021-06-30 16:45:11 +02:00
Łukasz Magiera 6a5b94ca3b Merge pull request #6638 from filecoin-project/feat/fastpath-aggsubmit-retry
Fast-path retry submitting commit aggregate if commit is still valid
2021-06-30 16:39:36 +02:00
johnli-helloworld 229d5e5c80 handleSubmitCommitAggregate() exception handling 2021-06-30 15:29:21 +02:00
Łukasz Magiera 2dad06d59f Merge pull request #6634 from GFZRZK/GFZRZK/correct_check_commit
remove precommit check in handleCommitFailed
2021-06-30 15:23:33 +02:00
Łukasz Magiera f45340461d gofmt 2021-06-30 15:19:29 +02:00
Łukasz Magiera 19a536d869 Merge pull request #6636 from johnli-helloworld/fix/batchwait
Reuse timers in sealing batch logic
2021-06-30 14:42:51 +02:00
Anton Evangelatov 4f0a96c9c7 resolved conflicts 2021-06-30 13:16:52 +02:00
Anton Evangelatov 9ec7cd7239 enable libp2p options 2021-06-30 12:55:43 +02:00
Łukasz Magiera ed2d7964ad Merge pull request #6631 from filecoin-project/feat/shed-agg-fees
shed tool to estimate aggregate network fees
2021-06-30 11:13:19 +02:00
johnli-helloworld b0b070ffe7 to optimize the batchwait 2021-06-30 16:56:40 +08:00
llifezou 3dd3476bfd fix ticket expiration check, otherwise it may cause a large number of loops to retry GetTicket when retrying PreCommit1 2021-06-30 16:32:44 +08:00
wangchao a4342f3997 remove precommit check in handleCommitFailed 2021-06-30 11:09:07 +08:00
Łukasz Magiera 022d4b548a shed tool to estimate aggregate network fees 2021-06-29 20:42:26 +02:00
Łukasz Magiera 49de60d33b Merge pull request #6625 from filecoin-project/firesWu-fix/prove-commit-aggregate
fix prove commit aggregate send token amount
2021-06-29 12:45:08 +02:00
Łukasz Magiera 7b1b082381 Merge branch 'master' into fix/prove-commit-aggregate 2021-06-29 11:48:52 +02:00
Łukasz Magiera 7d4887b1f1 Merge pull request #6621 from filecoin-project/arajasek-patch-1
Update version.go to 1.11.1
2021-06-29 11:31:22 +02:00
Łukasz Magiera df86efbd43 docsgen 2021-06-29 11:27:06 +02:00
Jerry 73704c92ba ensure agg fee is adequate 2021-06-29 14:36:26 +08:00
Jerry 5c3d67a811 fix: miner balance is not enough, so that ProveCommitAggregate msg exec failed 2021-06-29 14:06:41 +08:00
Aayush Rajasekaran 07487b6d20 Update version.go 2021-06-28 22:43:14 -04:00
Aayush Rajasekaran 6bbc5be1bd Lotus version 1.11.0 2021-06-28 22:39:39 -04:00
Aayush Rajasekaran 2d123aab47 Lotus version 1.11.0 2021-06-28 22:16:03 -04:00
Aayush Rajasekaran b8866f1d16 Envvar to disable slash filter 2021-06-28 22:00:21 -04:00
Łukasz Magiera ba7e730d24 Merge pull request #6618 from filecoin-project/feat/gateway-version
gateway: Add support for Version method
2021-06-28 20:25:34 +02:00
Łukasz Magiera 49a709a123 Merge pull request #6612 from filecoin-project/feat/miner-par-transfers-cfg
Miner SimultaneousTransfers config
2021-06-28 20:08:35 +02:00
Łukasz Magiera c1303f1eac gateway: Add support for Version method 2021-06-28 19:05:27 +02:00
Łukasz Magiera 69e0dff56c api: Fix Wrap for nested proxy structs 2021-06-28 19:00:37 +02:00
Łukasz Magiera e9dd3e8650 Test Miner SimultaneousTransfers 2021-06-28 18:17:29 +02:00
Łukasz Magiera 37c5dd5afc Miner SimultaneousTransfers config 2021-06-28 14:24:14 +02:00
Łukasz Magiera cefd140e45 Merge pull request #6329 from filecoin-project/raulk/itests-refactor-kit
revamped integration test kit (aka. Operation Sparks Joy)
2021-06-28 13:20:49 +02:00
Łukasz Magiera ed5cd3a6df Merge pull request #6605 from filecoin-project/raulk/fix-downgrade-yamux
downgrade libp2p/go-libp2p-yamux to v0.5.1.
2021-06-26 08:57:21 +02:00
Raúl Kripalani ec69ac0b2c downgrade libp2p/go-libp2p-yamux to v0.5.1. 2021-06-25 22:39:26 +01:00
Łukasz Magiera 39979c07f5 Merge pull request #6594 from filecoin-project/fix/wallet-errors
Fix wallet error messages
2021-06-25 21:43:36 +02:00
Łukasz Magiera c10d99e3fd multiwallet: Don't fail if key is found in any wallet 2021-06-25 12:17:53 +02:00
Łukasz Magiera 3f3336340f Fix wallet error messages 2021-06-25 10:48:47 +02:00
Łukasz Magiera 4e7d17e889 Merge pull request #6589 from filecoin-project/fix/circle-gen
Fix CircleCI gen
2021-06-24 19:59:20 +02:00
Łukasz Magiera 1c025e49c4 Merge pull request #6590 from filecoin-project/asr/query-ask-cli
Make query-ask CLI more graceful
2021-06-24 19:59:08 +02:00
Aayush Rajasekaran cb4d7cb9e7 Make query-ask CLI more graceful 2021-06-24 12:57:54 -04:00
Łukasz Magiera 0517ef260b Fix CircleCI gen 2021-06-24 18:48:12 +02:00
Łukasz Magiera ebd746cdec Merge pull request #6406 from filecoin-project/feat/lotus-sim 2021-06-24 18:20:43 +02:00
Łukasz Magiera f113430f07 Merge pull request #6587 from filecoin-project/appimage-build-ci-fix
move with changed name
2021-06-24 15:52:33 +02:00
Cory Schwartz 3cea8b5e26 .Appimage 2021-06-24 06:39:05 -07:00
Cory Schwartz 2e5e2f4e0e move with changed name 2021-06-24 06:33:32 -07:00
Łukasz Magiera 84dbcb63d2 Merge pull request #6566 from GFZRZK/GFZRZK/correct_sector_expire_time
scale up sector expiration to avoid sector expire in batch-pre-commit waitting
2021-06-24 10:59:49 +02:00
Łukasz Magiera 04b25e09ea Merge pull request #6583 from filecoin-project/chore/merge-release
Merge release branch into master
2021-06-24 10:02:36 +02:00
Łukasz Magiera c3480dc0e8 Merge remote-tracking branch 'origin/releases' into chore/merge-release 2021-06-24 09:39:11 +02:00
Łukasz Magiera 64e05ac57c Merge pull request #6582 from IPFSUnion/master 2021-06-24 08:38:51 +02:00
IPFSUnion 7c07dc9ed1 fix an error in msigLockCancel 2021-06-24 14:07:15 +08:00
Jennifer 764fa9dae6 Merge pull request #6580 from filecoin-project/release/v1.10.0
Release/v1.10.0
2021-06-23 23:37:57 -04:00
Jennifer b3a6dbb5d7 Merge pull request #6578 from filecoin-project/asr/release-v1.10.0
Lotus v1.10.0
2021-06-23 23:21:36 -04:00
Jennifer Wang 28f2f96b65 more edits 2021-06-23 22:29:03 -04:00
Steven Allen 7779d446ce remove hardware suggestion section
This isn't useful in its current state and isn't urgent at this point.
We can publish recommendations later.
2021-06-23 19:18:27 -07:00
Steven AllenandMollyM f5fad636cf Apply edits
Co-authored-by: MollyM <momack2@users.noreply.github.com>
2021-06-23 19:09:43 -07:00
Steven Allen 1411cff69e change mkreleaselog script to only include filecoin-project 2021-06-23 19:03:24 -07:00
Steven Allen efaa7b0d76 update contributors to include all filecoin projects 2021-06-23 19:02:14 -07:00
Steven Allen 64567d7f32 add simulation projections to changelog 2021-06-23 18:49:52 -07:00
Jennifer Wang 559f7f0cc3 add changelog 2021-06-23 20:54:52 -04:00
Aayush Rajasekaran a290982ca0 Lotus version 1.10.0 2021-06-23 20:50:18 -04:00
Jennifer 1c196e7e68 Merge pull request #6579 from filecoin-project/jennijuju-patch-1
Pull actor v5.0.1
2021-06-23 20:36:20 -04:00
Jennifer Wang 85f2fcf2c6 pull actor v5.0.1 2021-06-23 18:51:20 -04:00
Steven Allen 63626e1d0a feat(scripts): add the mkreleaselog script 2021-06-23 15:02:23 -07:00
Łukasz Magiera cb8149e047 Merge pull request #6576 from filecoin-project/feat/max-dealstart-config
Add miner-side MaxDealStartDelay config
2021-06-23 20:26:09 +02:00
Raúl Kripalani 6a48fbbc11 increase suspension threshold to 300. 2021-06-23 19:21:42 +01:00
Raúl Kripalani 58f348cb7f add ability to suspend deal-making until CE is stable. 2021-06-23 19:14:27 +01:00
Łukasz Magiera 9521c0b773 Add miner-side MaxDealStartDelay config 2021-06-23 19:45:13 +02:00
Raúl Kripalani fa4bcc6054 Merge branch 'master' into raulk/itests-refactor-kit 2021-06-23 18:31:28 +01:00
raulk ae38dfe3b9 Merge pull request #6573 from filecoin-project/fix/make-ci-good
fix circleci being out of sync.
2021-06-23 18:29:58 +01:00
Raúl Kripalani a1e57d35f9 circleci was out of sync. 2021-06-23 18:24:36 +01:00
Łukasz Magiera 0e4cd3c599 Merge pull request #6563 from filecoin-project/asr/batch-starter
Always flush when timer goes off
2021-06-23 19:19:30 +02:00
Łukasz Magiera 643b35c0c9 Merge pull request #6561 from filecoin-project/raulk/circleci-dynamic
dynamic circleci config for streamlining test execution
2021-06-23 19:17:13 +02:00
Raúl Kripalani 9b3188d110 split deals tests. 2021-06-23 18:13:29 +01:00
Raúl Kripalani 779626ceec fix circleci. 2021-06-23 18:05:20 +01:00
Raúl Kripalani ef8f35510d Merge branch 'master' into raulk/itests-refactor-kit 2021-06-23 17:55:06 +01:00
Raúl Kripalani f4d0db83d8 Merge branch 'raulk/circleci-dynamic' into raulk/itests-refactor-kit 2021-06-23 17:33:17 +01:00
Aayush Rajasekaran 616e5688fc Remove MinPreCommitBatch 2021-06-23 12:30:32 -04:00
Raúl Kripalani f4341409a1 deterministic order for rest unit tests. 2021-06-23 17:08:46 +01:00
Raúl Kripalani 2c605e08f1 Revert "(test) deliberately check in an outdated .circleci/config.yml to test the gen-check CI target."
This reverts commit 6017715fd7.
2021-06-23 16:50:11 +01:00
Raúl Kripalani 0c31676bf8 Makefile: add circleci target as dependency of gen target. 2021-06-23 16:46:13 +01:00
Raúl Kripalani 6017715fd7 (test) deliberately check in an outdated .circleci/config.yml to test the gen-check CI target. 2021-06-23 16:40:20 +01:00
Raúl Kripalani 211751f8b8 declare some tests as expensive. 2021-06-23 16:37:43 +01:00
Aayush Rajasekaran f1ed13d1ef Merge pull request #6571 from filecoin-project/chore/merge-1.10
Merge 1.10 branch into master
2021-06-23 10:10:11 -04:00
Łukasz Magiera fa2be42eb0 Merge remote-tracking branch 'origin/release/v1.10.0' into chore/merge-1.10 2021-06-23 15:51:00 +02:00
Anton Evangelatov a8d5ae5213 enable more tests 2021-06-23 13:39:03 +02:00
Anton Evangelatov 4217ec5308 make auth on remote rpc server optional 2021-06-23 13:27:03 +02:00
Łukasz Magiera 8adfdfb0fb Merge pull request #6560 from filecoin-project/asr/fix-comment
Fix helptext
2021-06-23 12:49:02 +02:00
Anton Evangelatov 21b51328f9 adding TestDealWithMarketAndMinerNode 2021-06-23 12:44:52 +02:00
Anton Evangelatov 99646d209e fix TestFirstDealEnablesMining 2021-06-23 11:56:09 +02:00
Anton Evangelatov 7fb93d4585 refactor kit.NewDealHarness to include main miner and market node 2021-06-23 11:24:55 +02:00
Anton Evangelatov 51a4657ef7 fix SDR test 2021-06-23 11:19:25 +02:00
Anton Evangelatov d98eca7260 Merge branch 'raulk/itests-refactor-kit' into nonsense/split-market-miner-processes 2021-06-23 10:58:37 +02:00
wangchao 03261771e2 scale up sector expiration to avoid sector expire in batch-pre-commit waitting 2021-06-23 14:10:28 +08:00
Jennifer cd9f6724a5 Merge pull request #6565 from filecoin-project/asr/hyperdrive-epoch
Set HyperDrive upgrade epoch
2021-06-23 00:44:32 -04:00
Aayush Rajasekaran 2dd498297f Set HyperDrive upgrade epoch 2021-06-22 19:34:03 -04:00
Aayush Rajasekaran 93f7cbe587 Add a helpful comment 2021-06-22 19:31:36 -04:00
Aayush RajasekaranandJennifer 4af59e0188 Apply suggestions from code review
Co-authored-by: Jennifer <42981373+jennijuju@users.noreply.github.com>
2021-06-22 19:23:24 -04:00
Aayush Rajasekaran 6ca2a14819 Always flush when timer goes off 2021-06-22 19:16:36 -04:00
Łukasz Magiera 32b986503d Merge pull request #6548 from filecoin-project/feat/maxprice-agg
Update default fees for aggregates
2021-06-23 01:13:48 +02:00
Steven Allen 63e2caae81 lint(lotus-sim): handle error 2021-06-22 15:06:44 -07:00
Steven Allen 87c306fd47 feat(lotus-sim): use current power instead of lookback
I'd _really_ like to use lookback, but don't have that when starting
from a snapshot.
2021-06-22 15:06:30 -07:00
Steven Allen 0b06de2bd3 fix(lotus-sim): unembed Node from Simulation
I wanted to expose the node's _fields_, but this also exposed the
methods. That got rather confusing.

(probably could have used a new type, but eh)

foo
2021-06-22 14:53:06 -07:00
Raúl Kripalani da96414bf8 switch test output format. 2021-06-22 21:39:20 +01:00
Raúl Kripalani b74ad796ce fix dangling import. 2021-06-22 21:39:20 +01:00
Raúl Kripalani c6c202d7d4 add makefile target. 2021-06-22 21:39:20 +01:00
Raúl Kripalani 539f8c1f61 fix test that references private symbols; avoid hacky test selection flags. 2021-06-22 21:39:20 +01:00
Raúl Kripalani ec6c394de7 remove dynamic circleci. 2021-06-22 21:39:20 +01:00
Aayush Rajasekaran 07fad6a201 Fix helptext 2021-06-22 16:02:06 -04:00
Raúl Kripalani 51e51d1b90 dynamic circleci config. 2021-06-22 20:55:10 +01:00
Aayush Rajasekaran 9e4875f210 Merge pull request #6492 from filecoin-project/appimage-v1.10.0-rc3
Appimage v1.10.0 rc3
2021-06-22 15:51:55 -04:00
Jakub Sztandera bf82b96fd8 Update default fees for aggregates
Resolves #6422

Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-06-22 20:20:01 +02:00
Raúl Kripalani 2e9e1c2330 avoid double BlockMiner instantiation. 2021-06-22 18:15:38 +01:00
Raúl Kripalani 120dd14979 avoid double close. 2021-06-22 17:18:07 +01:00
Raúl Kripalani 9b2efd5ace try to deflake window post itests. 2021-06-22 17:07:14 +01:00
Cory Schwartz accb03719a address some comments 2021-06-22 08:59:43 -07:00
Anton Evangelatov fc7feffaad Merge branch 'raulk/itests-refactor-kit' into nonsense/split-market-miner-processes 2021-06-22 17:37:50 +02:00
Raúl Kripalani 098eb6bfff try using bg context on constructor. 2021-06-22 16:36:06 +01:00
Raúl Kripalani 71a7270c98 cleanup gateway RPC. 2021-06-22 16:36:06 +01:00
Raúl Kripalani 2a58f830c0 fix sector_terminate_test.go flakiness. 2021-06-22 16:36:06 +01:00
Anton Evangelatov aa584475cc fix paych and sdr tests 2021-06-22 16:48:07 +02:00
Anton Evangelatov 218c9199f3 fix testNonGenesisMiner 2021-06-22 15:51:50 +02:00
Anton Evangelatov 4f2d8b0a85 add all subsystems to deadlines and wdpost_dispute tests 2021-06-22 15:35:46 +02:00
Anton Evangelatov a828b15fbe revert MockSectorMgr 2021-06-22 15:22:08 +02:00
Anton Evangelatov 9567807144 Merge branch 'raulk/itests-refactor-kit' into nonsense/split-market-miner-processes 2021-06-22 14:39:28 +02:00
Dirk McCormick da789939b1 fix: bump blocktime of TestQuotePriceForUnsealedRetrieval to 1 second 2021-06-22 14:33:44 +02:00
Anton Evangelatov e656aad298 regenerate docs 2021-06-22 13:36:24 +02:00
Anton Evangelatov b0d1668ab9 comment out preseal sectors 2021-06-22 13:34:45 +02:00
Anton Evangelatov 00618672f5 policy.SetPreCommitChallengeDelay to reduce WaitSeed stage time 2021-06-22 13:08:36 +02:00
Anton Evangelatov 5e10d53ca8 wip 2021-06-22 12:16:21 +02:00
Anton Evangelatov 6720463799 resolve merge conflicts 2021-06-22 11:28:23 +02:00
Raúl Kripalani bb032b526c switch back to ws API. 2021-06-21 23:24:59 +01:00
Raúl Kripalani 0e2d06fc39 switch to http API. 2021-06-21 23:10:17 +01:00
Raúl Kripalani 502e104e6a typo. 2021-06-21 21:35:39 +01:00
Raúl Kripalani e438ef99f8 fix merge error in window post dispute tests. 2021-06-21 21:25:55 +01:00
Raúl Kripalani e69335b35f Merge branch 'master' into raulk/itests-refactor-kit 2021-06-21 21:21:05 +01:00
Raúl Kripalani 4fcd0b7aca disable resource filtering on scheduler. 2021-06-21 21:20:45 +01:00
Łukasz Magiera 6e1cf6fdc9 Merge pull request #6542 from filecoin-project/raulk/worker-disable-resource-filtering
extern/storage: add ability to ignore worker resources when scheduling.
2021-06-21 22:11:14 +02:00
Raúl Kripalani b7a5e3cd0f Merge branch 'raulk/worker-disable-resource-filtering' into raulk/itests-refactor-kit 2021-06-21 21:09:04 +01:00
Raúl Kripalani c0a8a9f5b5 make gen. 2021-06-21 20:52:59 +01:00
Raúl Kripalani 684cce198f add a unit test. 2021-06-21 20:49:24 +01:00
Raúl Kripalani 59eab2df25 move scheduling filtering logic down. 2021-06-21 20:49:16 +01:00
Cory Schwartz 02f4182749 add docker-compose file 2021-06-21 12:48:07 -07:00
Raúl Kripalani 83839362c5 fix boolean condition. 2021-06-21 20:35:51 +01:00
Raúl Kripalani b6147fb27f extern/storage: retype resource filtering strategy to enum. 2021-06-21 20:28:15 +01:00
Raúl Kripalani f3b6f8de1a add ability to ignore worker resources when scheduling. 2021-06-21 20:08:18 +01:00
Steven Allen b7c36bc02c fix(lotus-sim): make NewNode take a repo
This is primarily for testing, so we can just pass an in-memory repo.
2021-06-21 11:32:19 -07:00
Steven Allen c532b1b819 fix(lotus-sim): remove unused field and function 2021-06-21 11:25:40 -07:00
Steven Allen 80eba1069a feat(lotus-sim): NewNode to construct a node without a repo 2021-06-21 11:25:40 -07:00
Steven Allen b5f9148748 build(lotus-sim): add a makefile target 2021-06-21 11:25:40 -07:00
Steven Allen ffb63a93ff fix(lotus-sim): make 'fund' easier to understand 2021-06-21 11:25:40 -07:00
Raúl Kripalani c22e10c4a4 use mock proofs in TestQuotePriceForUnsealedRetrieval. 2021-06-21 18:29:25 +01:00
Raúl Kripalani 132b49728c Merge branch 'master' into raulk/itests-refactor-kit 2021-06-21 18:26:04 +01:00
Raúl Kripalani 70929a99e6 speed up test. 2021-06-21 18:24:39 +01:00
Raúl Kripalani 00fa3878d4 remove debug statement. 2021-06-21 18:22:08 +01:00
Raúl Kripalani 0879ac496f uncomment lines in TestDealCyclesConcurrent. 2021-06-21 18:21:10 +01:00
Raúl Kripalani 83ee345b1c Merge branch 'master' into raulk/itests-refactor-kit 2021-06-21 18:19:26 +01:00
Steven AllenandŁukasz Magiera d6abcff63c fix(lotus-sim): apply code review from magik6k
Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
2021-06-21 09:05:48 -07:00
Łukasz Magiera fa2b247f75 Merge pull request #6540 from filecoin-project/chore/merge-1.10
Merge 1.10 branch into master
2021-06-21 17:19:51 +02:00
Łukasz Magiera b37a66c7c9 Merge remote-tracking branch 'origin/release/v1.10.0' into chore/merge-1.10 2021-06-21 17:03:03 +02:00
Raúl Kripalani d1b291de5e fix proof types. 2021-06-21 13:24:25 +01:00
Łukasz Magiera ae65e6595d Merge pull request #6498 from rjan90/patch-2
Initial draft: basic build instructions on Readme
2021-06-21 12:58:04 +02:00
Raúl Kripalani 7ee184e965 fix lotus-storage-miner tests. 2021-06-21 11:56:10 +01:00
Jennifer a641a03908 Merge pull request #6529 from filecoin-project/jen/rc6
version bump to lotus v1.10.0-rc6
2021-06-18 22:59:34 -04:00
Jennifer Wang e1c2567136 docs gen 2021-06-18 22:20:13 -04:00
Jennifer Wang b01189467a version bump to lotus v1.10.0-rc6 2021-06-18 22:05:19 -04:00
Jennifer fd15080ead Merge pull request #6528 from filecoin-project/ntwk/calibration-reset
Upgrade epochs for calibration reset
2021-06-18 22:00:08 -04:00
Travis Person c11a32cf69 Add calibration genesis 2021-06-19 00:53:21 +00:00
Travis Person 65844761b6 Calibration network reset 2021-06-18 23:55:01 +00:00
Steven Allen 69a8a6bc0e fix(lotus-sim): lint 2021-06-18 15:44:37 -07:00
Jakub Sztandera 2fdf49e7da Add histogram and quantiles for message sizes
Resolves https://github.com/filecoin-project/lotus/issues/6513

Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-06-18 15:44:37 -07:00
Steven Allen eb0a15faf0 fix(genesis): set initial balances to 0 2021-06-18 15:44:37 -07:00
Steven Allen b30b5dd629 fix: move actors changes to template files 2021-06-18 15:44:37 -07:00
Steven Allen eb2b706156 chore: fix lint errors in simulation 2021-06-18 15:44:37 -07:00
Steven Allen 2aedd82c72 fix(lotus-sim): correct window post batch sizes 2021-06-18 15:44:37 -07:00
Steven Allen bc2698a988 fix(lotus-sim): simulate using realistic gas numbers
Previously, we assumed the network was "optimal". Now, we're using real
numbers.
2021-06-18 15:44:37 -07:00
Steven Allen a26cd5a809 fix(lotus-sim): mark provecommit stage initialized 2021-06-18 15:44:37 -07:00
Steven Allen f0d0b40bd3 fix(lotus-sim): debug log mock 2021-06-18 15:44:37 -07:00
Steven Allen ce29a0ac17 fix(lotus-sim): initialize commit queue 2021-06-18 15:44:37 -07:00
Steven Allen 28e6fa5923 fix(lotus-sim): remove duplicate error handling 2021-06-18 15:44:37 -07:00
Steven Allen ec5fab09a1 feat(lotus-sim): log failing proofs 2021-06-18 15:44:37 -07:00
Steven Allen e41f0842b0 fix(lotus-sim): load prove-commits
(regression from refactor)
2021-06-18 15:44:37 -07:00
Steven Allen af33d69357 fix(lotus-sim): don't close node on list 2021-06-18 15:44:37 -07:00
Steven Allen 885062f712 fix(lotus-sim): fix info state imports 2021-06-18 15:44:37 -07:00
Steven Allen 73ae1924bc feat(lotus-sim): state size command 2021-06-18 15:44:37 -07:00
Steven Allen 22267eb45d feat(lotus-sim): split info command file 2021-06-18 15:44:36 -07:00
Steven Allen 5d7b7ce5c1 feat(lotus-sim): allow profile info 2021-06-18 15:44:36 -07:00
Steven Allen 95cf577447 fix(lotus-sim): really cancel walk immediately 2021-06-18 15:44:36 -07:00
Steven Allen 8fffaa5c47 fix(lotus-sim): average over 2 days
There's too much noise per day.
2021-06-18 15:44:36 -07:00
Steven Allen 63178ce982 feat(lotus-sim): daily capacity growth 2021-06-18 15:44:36 -07:00
Steven Allen 0af7dcdedb fix(lotus-sim): rename power to capacity 2021-06-18 15:44:36 -07:00
Steven Allen f9d2a23132 fix(lotus-sim): correctly handle cancellation in walk
1. Select order is not guaranteed, always check if the context has been
canceled explicitly.
2. Never close a work channel unless we're actually done. This can yield
out-of-order results due to buffering.
2021-06-18 15:44:36 -07:00
Steven Allen ec3f969e9a feat(lotus-sim): allow walking back past the start 2021-06-18 15:44:36 -07:00
Steven Allen f6043a0250 feat(lotus-sim): measure daily power growth 2021-06-18 15:44:36 -07:00
Steven Allen 52261fb814 refactor(lotus-sim): enterprise grade
While the previous version "worked", this version nicely separates out
the state for the separate stages. Hopefully, we'll be able to use this
to build different pipelines with different configs.
2021-06-18 15:44:36 -07:00
Steven Allen 8a215df46b fix(statetree): make StateTree.ForEach take layers into account
This likely isn't used anywhere, but this _should_ take layers into
account (and I kind of just assumed it did).
2021-06-18 15:44:36 -07:00
Jakub Sztandera 7dd58efb84 Add quantiles and histogram
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-06-18 15:44:36 -07:00
Steven Allen 2721279e87 fix(lotus-sim): describe info commands 2021-06-18 15:44:36 -07:00
Steven Allen 985994cc0f feat(lotus-sim): add command for analyzing post stats over time 2021-06-18 15:44:36 -07:00
Steven Allen 707b3bf08a fix(lotus-sim): refuse to start simulation with no miners 2021-06-18 15:44:36 -07:00
Steven Allen d551f2b4bd feat(lotus-sim): print duration info in days 2021-06-18 15:44:36 -07:00
Steven Allen 1df5445ed2 feat(lotus-sim): make walk parallel 2021-06-18 15:44:36 -07:00
Steven Allen fbaffe86da fix(lotus-sim): return error from walk 2021-06-18 15:44:36 -07:00
Steven Allen 500fae6a52 fix(lotus-sim): less indentation in info 2021-06-18 15:44:36 -07:00
Steven Allen ab59474c4c fix(lotus-sim): count single prove-commits when computing efficiency 2021-06-18 15:44:36 -07:00
Jakub Sztandera 3d3c26fa0c Add lookback limit
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-06-18 15:44:36 -07:00
Steven Allen 68593ce995 fix(lotus-sim): obey context in walk 2021-06-18 15:44:36 -07:00
Jakub Sztandera ca9eadd7c7 Add gas info command
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-06-18 15:44:36 -07:00
Steven Allen 16449007ab fix(lotus-sim): fix funding error check 2021-06-18 15:44:35 -07:00
Steven Allen 8d734d81d9 fix(lotus-sim): log failed pre-commits and continue 2021-06-18 15:44:35 -07:00
Steven Allen 783dc5a33d fix(lotus-sim): fund multiple times
Sometimes, a miner is deep in the red.
2021-06-18 15:44:35 -07:00
Steven Allen be713ec04a fix(lotus-sim): we always fill the block with pre-commits 2021-06-18 15:44:35 -07:00
Steven Allen c18ca60d28 fix(lotus-sim): specify ErrWriter
Apparently, it defaults to nil...
2021-06-18 15:44:35 -07:00
Steven Allen 977bf1cad9 fix(lotus-sim): write pprof profiles to a directory
We need to know the sizes up-front for tar, and that's not happening.
2021-06-18 15:44:35 -07:00
Steven Allen 7a8bfd8725 doc(lotus-sim): document signals 2021-06-18 15:44:35 -07:00
Steven Allen a3f64e0768 fix(lotus-sim): profile signal handling 2021-06-18 15:44:35 -07:00
Steven Allen 5766002370 fix(lotus-sim): guard info with dashes 2021-06-18 15:44:35 -07:00
Steven Allen 4a80c83533 fix(lotus-sim): fix spelling 2021-06-18 15:44:35 -07:00
Steven Allen 936659d087 feat(lotus-sim): print info on SIGUSR1 2021-06-18 15:44:35 -07:00
Steven Allen dcdb0abe27 feat(lotus-sim): profile on SIGUSR2 2021-06-18 15:44:35 -07:00
Steven Allen 2b77c17546 chore(lotus-sim): fix import grouping
I got a bit lazy when developing this.
2021-06-18 15:44:35 -07:00
Steven Allen 1802ae31a6 feat(lotus-sim): record timing information for pre/prove-commit packing 2021-06-18 15:44:35 -07:00
Steven Allen 868231adc7 fix(lotus-sim): don't take from the fund account when funding 2021-06-18 15:44:35 -07:00
Steven Allen 2b4f865665 feat(lotus-sim): fund from a funding account
Instead of funding the simulation from the burnt-funds actor, fund from
a custom account and take a "tax" to fund that account.

Otherwise, we run out of funds...
2021-06-18 15:44:35 -07:00
Steven Allen e7b1e09ade feat(multisig): expose ApproveReturn 2021-06-18 15:44:35 -07:00
Steven Allen 86e459f585 feat(lotus-sim): return receipt
Instead of returning a "full" boolean and an error, return a receipt and
an error. We now use the error to indicate if the block is "full".
2021-06-18 15:44:35 -07:00
Steven Allen 0075abea5e fix(vm): always specify an ActorErr when ApplyMessage fails.
This case shouldn't actually happen, but we might as well be consistent.
2021-06-18 15:44:35 -07:00
Steven Allen 88af350774 fix(lotus-sim): use global base-fee value 2021-06-18 15:44:35 -07:00
Steven Allen 747b3d3e57 fix(lotus-sim): skip miners without power when loading 2021-06-18 15:44:35 -07:00
Steven Allen ba65a1ba9b chore(lotus-sim): rename stat to info 2021-06-18 15:44:35 -07:00
Steven Allen e097ba8640 feat(lotus-sim): wire up signal handler 2021-06-18 15:44:35 -07:00
Steven Allen 4578e0dd8d chore(lotus-sim): remove dead code 2021-06-18 15:44:35 -07:00
Steven Allen 77f0fee58e chore(lotus-sim): fix comment about simulation block miner 2021-06-18 15:44:35 -07:00
Steven Allen bb4753ffbf feat(lotus-sim): add commands to rename and copy 2021-06-18 15:44:35 -07:00
Steven Allen 4f0b9eefc1 fix(lotus-sim): check for slash in names on copy 2021-06-18 15:44:35 -07:00
Steven Allen 8410b0f79f feat(lotus-sim): add a feature to copy/rename simulation.
Useful to backup old simulations before creating a new one.
2021-06-18 15:44:35 -07:00
Steven Allen c5dc67ccd8 feat(lotus-sim): add a walk function
This way, we can easily walk the chain and:

1. Inspect messages and their results.
2. Inspect tipset state.
2021-06-18 15:44:35 -07:00
Steven Allen ccdd660f0d feat(lotus-sim): more stats 2021-06-18 15:44:35 -07:00
Steven Allen 5f6733fe44 feat(lotus-sim): expose StateManager from Simulation 2021-06-18 15:44:35 -07:00
Steven Allen 0faacbe154 feat(lotus-sim): store start tipset 2021-06-18 15:44:35 -07:00
Steven Allen a57c509e1e fix(lotus-sim): cleanup and document pre-commit filtering 2021-06-18 15:44:35 -07:00
Steven Allen f9ebe3017d test(lotus-sim): test commit-queue rollover 2021-06-18 15:44:35 -07:00
Steven Allen 0725019bdb feat(lotus-sim): completely pack block
Instead of packing till we see "full". Prove-commits are large, we may
have room for some more pre-commits.
2021-06-18 15:44:34 -07:00
Steven Allen dfdafa3c15 fix(lotus-sim): pretend all messages are BLS
It doesn't really matter, and it ensures they all get executed in-order.
2021-06-18 15:44:34 -07:00
Steven Allen 5b31ae39ea fix: test commit queue 2021-06-18 15:44:34 -07:00
Steven Allen 82019ce474 fix(lotus-sim): correctly merge forward commit queue. 2021-06-18 15:44:34 -07:00
Steven Allen 2e4f526375 fix(lotus-sim): skip (and log) missing/expired pre-commits 2021-06-18 15:44:34 -07:00
Steven Allen 0ccf716989 fix(lotus-sim): refactor miner state loading
Add a helper function so we don't need to constantly repeat ourselves.
2021-06-18 15:44:34 -07:00
Steven Allen 7925b69573 doc(lotus-sim): document block generation logic 2021-06-18 15:44:34 -07:00
Steven Allen 2f7d7aed31 feat(lotus-sim): refactor and document
Hopefully, this'll make this code a bit easier to approach.
2021-06-18 15:44:34 -07:00
Steven Allen b7bfc06ebe feat(lotus-sim): add an info command 2021-06-18 15:44:34 -07:00
Steven Allen be9e30e39d fix(lotus-sim): rename step to run
And make it run forever by default.
2021-06-18 15:44:34 -07:00
Steven Allen 8000decac6 feat(lotus-sim): add command to list pending upgrades 2021-06-18 15:44:34 -07:00
Steven Allen e2f5c494b0 feat: implement lotus-sim 2021-06-18 15:44:34 -07:00
Raúl Kripalani 8a418bf982 rename {kit2=>kit}. 2021-06-18 19:45:29 +01:00
Raúl Kripalani a7d8d15c13 kill old kit 🎉 2021-06-18 19:42:06 +01:00
raulk a8bf7e7bad Merge pull request #6510 from filecoin-project/refactor/itest-wdpost-dispute 2021-06-18 19:40:12 +01:00
raulk 83de21e464 Merge pull request #6483 from filecoin-project/refactor/itest-multisig 2021-06-18 19:39:24 +01:00
Raúl Kripalani 718babd33a use miner owner address when posting proofs. 2021-06-18 19:38:17 +01:00
Raúl Kripalani 9604be6d2f Merge branch 'raulk/itests-refactor-kit' into refactor/itest-wdpost-dispute 2021-06-18 19:29:18 +01:00
Raúl Kripalani 3d8eb374bd cleaner instantiation of lite and gateway nodes + general cleanup. 2021-06-18 19:23:42 +01:00
Łukasz Magiera e7fa8589da Merge pull request #6526 from filecoin-project/fix/reorgch-deadlock
chainstore: Don't take heaviestLk with backlogged reorgCh
2021-06-18 20:18:58 +02:00
Raúl Kripalani 3ae42d4648 Merge branch 'raulk/itests-refactor-kit' into refactor/itest-multisig 2021-06-18 19:08:07 +01:00
raulk 7c329d43f2 Merge pull request #6511 from filecoin-project/refactor/itest-deadling-toggling 2021-06-18 18:29:11 +01:00
Łukasz Magiera 2c2c37a138 chainstore: Don't take heaviestLk with backlogged reorgCh 2021-06-18 19:18:51 +02:00
Raúl Kripalani 5548541e1a fix default proof type to use for non-genesis miners.
We need to instantiate non-genesis miners with a _concrete_
proof type.
2021-06-18 18:10:42 +01:00
Anton Evangelatov 577b730415 wip 2021-06-18 18:42:34 +02:00
Raúl Kripalani 4c2cc8e5f7 Merge branch 'raulk/itests-refactor-kit' into refactor/itest-deadling-toggling 2021-06-18 16:20:15 +01:00
Raúl Kripalani e85af3cba7 fix merge error. 2021-06-18 16:19:58 +01:00
Łukasz Magiera 085cabcda8 Merge pull request #6524 from filecoin-project/feat/proofs-v8.0.2
Update to proofs v8.0.2 with correct aggregate lengths
2021-06-18 17:15:56 +02:00
Łukasz Magiera 738ac926d1 Update ffi 2021-06-18 16:27:37 +02:00
Raúl Kripalani 32327c7d43 Merge branch 'raulk/itests-refactor-kit' into refactor/itest-deadling-toggling 2021-06-18 11:22:12 +01:00
Anton Evangelatov 89df3cc207 Merge branch 'raulk/itests-refactor-kit' into nonsense/split-market-miner-processes 2021-06-18 12:07:15 +02:00
Łukasz Magiera 5516f3492e ffiwrapper: Assert aggregate length 2021-06-18 12:02:42 +02:00
raulk 572277caf7 Merge pull request #6509 from filecoin-project/refactor/itest-wdpost 2021-06-18 10:27:57 +01:00
Raúl Kripalani 2548c224c7 switch to TestFullNode#WaitTillChain. 2021-06-18 10:27:20 +01:00
Raúl Kripalani 21848054d7 Merge branch 'raulk/itests-refactor-kit' into refactor/itest-wdpost 2021-06-18 10:26:17 +01:00
raulk c4e0ac21a0 Merge pull request #6507 from filecoin-project/refactor/itest-sector-terminate
refactor sector terminate test to use kit2
2021-06-18 10:23:06 +01:00
Łukasz Magiera 7f00a6e59c Proofs v8.0.2 with fixed aggregate lengths 2021-06-18 11:17:18 +02:00
Rjan e56a171ab6 Use prebuilt proof binaries when building
Make the basic build instructions use the prebuilt proof binaries instead of building them from source. Removed rustup as a dependency, and linked to it in the full docs instead.
2021-06-18 10:59:53 +02:00
Łukasz Magiera 00372e144d Merge pull request #6519 from filecoin-project/jen/bakcport-6041
Backport #6041 - storagefsm: Fix batch deal packing behavior
2021-06-18 10:43:32 +02:00
Łukasz Magiera 715176698f Merge pull request #6521 from yaohcn/fix-commit-finalize
fix commit finalize failed
2021-06-18 10:38:58 +02:00
Cory Schwartz d35fcd926f remove temp edits 2021-06-18 00:02:04 -07:00
Cory Schwartz 7f744b2760 require deps 2021-06-17 23:52:34 -07:00
Cory Schwartz 6e8cf9061a temp name 2021-06-17 23:48:35 -07:00
Cory Schwartz 86baa11937 test: build appimage in ci 2021-06-17 23:47:08 -07:00
Cory Schwartz 87f2a41052 only use embed for appimage 2021-06-17 23:46:01 -07:00
yaohcn 7c6736b3ef fix commit finalize failed 2021-06-18 12:09:02 +08:00
Łukasz Magiera 7f247bf553 Self-review cleanup 2021-06-17 20:53:14 -04:00
Łukasz Magiera 0a5a7cf45d storagefsm: Fix too-long log handling 2021-06-17 20:52:46 -04:00
Łukasz Magiera b0128bd99e storagefsm: Fix race spawning more than one new sector at once 2021-06-17 20:52:42 -04:00
Łukasz Magiera 097baeb9b0 Make batch deal input test less flaky 2021-06-17 20:52:09 -04:00
Łukasz Magiera 5c8498b603 storagefsm: Fix batch deal packing behavior 2021-06-17 20:50:14 -04:00
Łukasz Magiera bc27602bea events: Fix handling of multiple matched events per epoch 2021-06-17 20:48:58 -04:00
Raúl Kripalani 9436be5ff0 introduce TestFullNode#WaitTillChain(predicate). 2021-06-17 22:02:20 +01:00
raulk 6562a23666 Merge pull request #6506 from filecoin-project/refactor/itest-sector-pledge
Refactor sector pledge test to use kit2
2021-06-17 17:52:13 +01:00
Anton Evangelatov 338bd042b9 Merge branch 'raulk/itests-refactor-kit' into nonsense/split-market-miner-processes 2021-06-17 18:12:48 +02:00
Dirk McCormick 7a9769b807 refactor: deadline toggling test to kit2 2021-06-17 14:58:35 +02:00
Dirk McCormick 3de6beabe3 refactor: wdpost dispute test to use kit2 2021-06-17 14:31:57 +02:00
Dirk McCormick e9325fecc5 refactor: wdpost test to kit2 2021-06-17 14:31:20 +02:00
Dirk McCormick 6567887e6e refactor: sector terminate test to kit2 2021-06-17 14:27:44 +02:00
Łukasz Magiera 44de67cf7d Merge pull request #6175 from filecoin-project/feat/dynamic-retreival-pricing
Dynamic Retrieval pricing
2021-06-17 10:25:48 +02:00
Dirk McCormick 8f608dff45 refactor: sector pledge test to use kit2 2021-06-17 09:37:35 +02:00
aarshkshah1992 9002fcbe47 local unsealed file wont have the unsealed piece 2021-06-17 09:46:29 +05:30
Aayush Rajasekaran d250a59576 Merge pull request #6504 from filecoin-project/asr/rc5
Lotus version 1.10.0-rc5
2021-06-16 22:30:29 -04:00
Aayush Rajasekaran 71785f9099 Lotus version 1.10.0-rc5 2021-06-16 22:15:11 -04:00
Aayush Rajasekaran d6dc081cfe Merge pull request #6501 from filecoin-project/asr/fix-soup
Fix soup
2021-06-16 22:01:55 -04:00
Aayush Rajasekaran c41ccde73d Merge pull request #6503 from filecoin-project/backport/max-part-per-post
backport: pick the correct partitions-per-post limit
2021-06-16 20:12:14 -04:00
Aayush Rajasekaran f6fb41fce5 Merge pull request #6502 from filecoin-project/fix/max-part-per-post
fix: pick the correct partitions-per-post limit
2021-06-16 20:11:29 -04:00
Steven Allen 526674cefa fix: pick the correct partitions-per-post limit 2021-06-16 16:56:30 -07:00
Steven Allen 653b1d8231 fix: pick the correct partitions-per-post limit 2021-06-16 16:53:52 -07:00
Aayush Rajasekaran 514107a75b Fix soup 2021-06-16 18:04:45 -04:00
Aayush Rajasekaran 9c7db6d305 Fix the build 2021-06-16 17:53:53 -04:00
Aayush Rajasekaran 35f76f58df Merge pull request #6309 from filecoin-project/feat/better_mining_projection_and_accuracy
Adjust various CLI display ratios to arbitrary precision
2021-06-16 17:48:23 -04:00
Łukasz Magiera ae26e50682 Merge pull request #6500 from filecoin-project/asr/test-drand-more
Expand on Drand change testing
2021-06-16 21:32:42 +02:00
Raúl Kripalani f1bf080e04 Merge branch 'raulk/itests-refactor-kit' into refactor/itest-multisig 2021-06-16 20:00:11 +01:00
raulk 2c30ac394d Merge pull request #6469 from filecoin-project/refactor/itest-verifreg 2021-06-16 19:46:38 +01:00
Aayush Rajasekaran b9f864ba9e Expand on Drand change testing 2021-06-16 14:17:55 -04:00
Łukasz Magiera 9ab9e2a970 Merge pull request #6499 from filecoin-project/asr/cherry-pick-log
Backport Fix logging around mineOne
2021-06-16 19:58:45 +02:00
Łukasz Magiera 55d5c11b03 Merge pull request #6497 from filecoin-project/feat/sealing-batcher-mctx
sealing: Wire up context to batchers
2021-06-16 19:58:10 +02:00
Aayush Rajasekaran 36bc96a6bc Fix docsgen 2021-06-16 13:41:52 -04:00
Jennifer Wang c198e7aa9a make lint happy 2021-06-16 13:39:05 -04:00
Peter Rabbitson ef3ef85960 Add a lateStart indicator, differentiate on Error/Warn/Info 2021-06-16 13:38:59 -04:00
Peter Rabbitson 4007806068 Incorporate the 'Time delta between now...' log into the 'completed mineOne' 2021-06-16 13:38:49 -04:00
Peter Rabbitson 429419f210 Forgotten deadcode 2021-06-16 13:38:39 -04:00
Peter Rabbitson 3acd846dcd Fix logging around mineOne
- A nil MiningBaseInfo is *NOT* unexpected: it happens when one is in penalty
  https://github.com/filecoin-project/lotus/blob/v1.9.0/chain/stmgr/utils.go#L500-L502

- Remove the log from IsRoundWinner(): all we care about is the randbase epoch
2021-06-16 13:38:35 -04:00
Raúl Kripalani 8ed753a712 rename RootVerifier option. 2021-06-16 18:16:59 +01:00
Raúl Kripalani a3015ca9c2 Merge branch 'raulk/itests-refactor-kit' into refactor/itest-verifreg 2021-06-16 18:12:51 +01:00
Raúl Kripalani d2ff0cd88e fix verifreg test; add VerifierRootKey() and Account() ensemble opts. 2021-06-16 18:11:34 +01:00
Anton Evangelatov d45bb14015 Merge branch 'master' into nonsense/split-market-miner-processes 2021-06-16 18:49:15 +02:00
raulk 30148477a7 Merge pull request #6470 from filecoin-project/refactor/ccupgrade-test 2021-06-16 16:20:54 +01:00
Łukasz Magiera 7640ae47de docsgen 2021-06-16 14:51:40 +02:00
Dirk McCormick 4ea73b4088 refactor: use genesis preseals from kit2 2021-06-16 14:42:28 +02:00
Rjan ca4ca8cbcf Update README.md 2021-06-16 13:15:09 +02:00
Rjan 8b2d74bb2c Initial draft: basic build instructions on Readme
Inital draft for basic build instructions on the Readme page. Issue: #6348
2021-06-16 12:26:33 +02:00
Raúl Kripalani 305e3245b6 Merge branch 'master' into raulk/itests-refactor-kit 2021-06-16 11:02:16 +01:00
raulk fea5afd615 Merge pull request #6468 from filecoin-project/refactor/itest-tape
Refactor tape test to kit2
2021-06-16 10:58:08 +01:00
raulk 06cb3cf132 Merge pull request #6488 from filecoin-project/refactor/itest-sdr-upgrade 2021-06-16 10:49:03 +01:00
raulk 1d768a823f Merge pull request #6484 from filecoin-project/refactor/itest-paych-cli
refactor paych cli tests to use kit2
2021-06-16 10:45:53 +01:00
Łukasz Magiera 1f914053b4 sealing: Wire up context to batchers 2021-06-16 11:43:06 +02:00
raulk a0894a866d Merge pull request #6464 from filecoin-project/refactor/itest-cli
Refactor cli test to kit2
2021-06-16 10:42:29 +01:00
raulk f0a8a85928 Merge pull request #6486 from filecoin-project/refactor/itest-batch-deal
refactor batch deal test to use kit2
2021-06-16 10:41:30 +01:00
Łukasz Magiera 719bb988c9 Merge pull request #6490 from filecoin-project/asr/miner-multisig-shed
Add utils to use multisigs as miner owners
2021-06-16 11:15:43 +02:00
Łukasz Magiera 4bd2587e47 Merge pull request #6479 from filecoin-project/test/multicore-sdr
Test multicore SDR support
2021-06-16 11:02:09 +02:00
Jennifer Wang c1529714e6 v1.10.0-rc4 have this version base off the right head = v1.9.0 tag 2021-06-15 22:16:41 -04:00
Jennifer 9cb7964a77 Merge pull request #6494 from filecoin-project/asr/merge-releases
Merge releases into v1.10 release
2021-06-15 22:03:13 -04:00
Łukasz Magiera 0319ccbc4d Merge pull request #6495 from filecoin-project/asr/cherry-pick-rs
sealing: Fix restartSectors race
2021-06-15 23:57:42 +02:00
Łukasz Magiera 81b412399e sealing: Fix restartSectors race 2021-06-15 17:55:58 -04:00
Łukasz Magiera 74db586fdf sealing: Fix restartSectors race 2021-06-15 17:43:32 -04:00
Aayush Rajasekaran 520a0091f5 Merge branch 'releases' into release/v1.10.0 2021-06-15 17:40:36 -04:00
Łukasz Magiera d8e5359388 Merge pull request #6491 from filecoin-project/fix/fsm-startup-race2
sealing: Fix restartSectors race
2021-06-15 23:16:52 +02:00
Aayush Rajasekaran bee548face Add utils to use multisigs as miner owners 2021-06-15 16:57:52 -04:00
Peter Rabbitson 4efc3f8db0 Copy latest version to lotus-soup 2021-06-15 22:00:17 +02:00
Łukasz Magiera 21ba7408dd sealing: Fix restartSectors race 2021-06-15 21:20:40 +02:00
Cory Schwartz 2b7e809efe filter build-appimage 2021-06-15 12:20:19 -07:00
Cory Schwartz 9dc67abee6 add make appimage 2021-06-15 12:05:30 -07:00
Cory Schwartz 041bf9990e yaml syntax 2021-06-15 12:01:56 -07:00
Cory Schwartz 45b063648d tmp: test build in circleci 2021-06-15 11:59:47 -07:00
Cory Schwartz ad8b6baa03 bring appimage to v1.10.0-rc3 2021-06-15 11:58:59 -07:00
Łukasz Magiera c7c593c74e TestMulticoreSDR: Setup rust logger after envvar check 2021-06-15 17:59:46 +02:00
Łukasz Magiera 6b0aed9317 Setup rust logger in the test 2021-06-15 17:53:26 +02:00
Łukasz Magiera 265afd696e Run TestMulticoreSDR on Circle 2021-06-15 17:46:06 +02:00
Łukasz Magiera 9ae780902a Test multicore SDR support 2021-06-15 17:36:10 +02:00
Dirk McCormick cd903bec5e refactor: sdr upgrade test to use kit2 2021-06-15 17:30:51 +02:00
Łukasz Magiera d763dcf48b Merge pull request #6487 from filecoin-project/chore/merge-1.10
Merge 1.10 into master
2021-06-15 17:26:48 +02:00
Łukasz Magiera 20c4fe9bba Merge remote-tracking branch 'origin/release/v1.10.0' into chore/merge-1.10 2021-06-15 16:50:23 +02:00
Dirk McCormick cd53942525 refactor: batch deal test to use kit2 2021-06-15 15:38:09 +02:00
Anton Evangelatov 323c78ef44 comment for checkV1ApiSupport 2021-06-15 14:47:11 +02:00
Dirk McCormick 2267d15a0f refactor: update paych cli tests to use kit2 2021-06-15 14:37:03 +02:00
Anton Evangelatov 090a16316c bump miner version apiv0 2021-06-15 13:59:51 +02:00
Dirk McCormick 5ce482b817 refactor: change network upgrade NodeOption to node.Option 2021-06-15 13:53:41 +02:00
raulk c5b7e48cd1 Merge pull request #6467 from filecoin-project/refactor/itests-paych 2021-06-15 10:59:13 +01:00
Dirk McCormick 16cad0e01a refactor: convert gateway tests to kit2 2021-06-15 11:46:32 +02:00
Dirk McCormick 2d5b798763 refactor: cli test with kit2 2021-06-15 09:08:56 +02:00
Dirk McCormick 4cd0964ab1 refactor: replace if err with require 2021-06-15 08:27:02 +02:00
Dirk McCormick 803a3df6b4 refactor: ccupgrade test 2021-06-15 08:21:02 +02:00
Raúl Kripalani c27f3deadd start mining way more in the past. 2021-06-15 08:19:29 +02:00
Dirk McCormick 0bb5fffd88 refactor: clean up code 2021-06-15 08:09:14 +02:00
Jennifer fdd3a85033 Merge pull request #6481 from filecoin-project/hyperdriverc3
update lotus to v1.10.0-rc3
2021-06-14 22:21:12 -04:00
Jennifer Wang a79e6cb8c5 update changelog 2021-06-14 22:16:12 -04:00
Jennifer Wang 9d7f94bc67 make gen happy 2021-06-14 22:02:00 -04:00
Jennifer Wang ad6ddcb590 update lotus version to v1.10.0-rc3 2021-06-14 21:44:03 -04:00
Aayush Rajasekaran bffa716248 Merge pull request #6480 from filecoin-project/asr/ffi-update
Update to fixed Bellperson
2021-06-14 21:09:09 -04:00
Aayush Rajasekaran 18b13f6f58 Update to fixed Bellperson 2021-06-14 20:19:26 -04:00
Peter Rabbitson ae2b089a5c Be even more precise - properly account for multi-win Poisson 2021-06-14 23:57:17 +02:00
Łukasz Magiera f9596dd730 Merge pull request #6432 from filecoin-project/tests/batching-unit
Unit tests for sector batchers
2021-06-14 21:05:34 +02:00
Raúl Kripalani dae8be0881 migrate to require; use t.Log* instead of fmt.Print*. 2021-06-14 18:59:15 +01:00
Raúl Kripalani 8a7dba11bd add comment. 2021-06-14 18:58:40 +01:00
Raúl Kripalani 6fb31a34b3 start mining way more in the past. 2021-06-14 18:58:12 +01:00
Łukasz Magiera 471c365f36 Merge pull request #6473 from filecoin-project/deps/paramfetch-fslocks
Update to go-praamfetch with fslocks
2021-06-14 19:16:28 +02:00
Łukasz Magiera b00cbcaf5e Update to go-praamfetch with fslocks 2021-06-14 18:54:59 +02:00
Łukasz Magiera 88c49998a8 Merge pull request #6472 from filecoin-project/asr/backport
failed sectors should be added into res correctly
2021-06-14 17:58:32 +02:00
Łukasz Magiera 5008914846 Merge pull request #6466 from filecoin-project/chore/merge-1.10
Merge 1.10 changes into master
2021-06-14 17:58:10 +02:00
Peter Rabbitson 4d1fccd290 Better wolfram link 2021-06-14 17:54:38 +02:00
wangchao 4da30931c9 failed sectors should be added into res correctly 2021-06-14 11:33:38 -04:00
Łukasz Magiera 40efafb7cd Update ffi with fixed multicore sdr support 2021-06-14 17:29:21 +02:00
Łukasz Magiera d3594a014b Merge pull request #6471 from filecoin-project/deps/proofs-8.0.1
Update ffi with fixed multicore sdr support
2021-06-14 17:28:17 +02:00
Łukasz Magiera ff43d29bbd Update ffi with fixed multicore sdr support 2021-06-14 16:59:55 +02:00
Dirk McCormick eb5a263d74 refactor: convert verifreg test to kit2 2021-06-14 16:19:20 +02:00
Dirk McCormick d2c35db0c9 refactor: convert tape test to kit2 2021-06-14 15:51:10 +02:00
Dirk McCormick 7b00b1828b refactor: convert paych to kit2 2021-06-14 15:28:05 +02:00
Dirk McCormick 86cca7303d refactor: convert multisig tests to kit2 2021-06-14 14:03:08 +02:00
Łukasz Magiera 6f2c2c04b0 Merge pull request #6465 from rjan90/patch-1
Update chain list with correct help instructions
2021-06-14 13:36:28 +02:00
Łukasz Magiera 0514f38dc4 Merge remote-tracking branch 'origin/master' into chore/merge-1.10 2021-06-14 13:27:53 +02:00
Rjan 932f3ce1d1 Update chain list with correct help instructions
Fixes #6293, changes the help text from (Default: 0) to (Default: current head)
2021-06-14 13:13:25 +02:00
Łukasz Magiera 0403fc416c Merge pull request #6451 from GFZRZK/GFZRZK/handle_failed_sector
clean failed sectors in batch commit
2021-06-14 12:33:20 +02:00
Łukasz Magiera 38dc0eee32 Merge pull request #6453 from filecoin-project/feat/mpool-metrics
mpool: Add more metrics
2021-06-14 12:28:39 +02:00
Dirk McCormick d94a19ff65 refactor: cli test with kit2 2021-06-14 12:07:50 +02:00
Anton Evangelatov c0feb36e70 add missing debug 2021-06-14 11:31:55 +02:00
Anton Evangelatov 31e6fb154e resolve conflicts 2021-06-14 11:27:54 +02:00
aarshkshah1992 4419205b0e fix compilation 2021-06-14 10:10:29 +05:30
Aarsh Shahandraulk bed2bc73a3 Update node/config/def.go
Co-authored-by: raulk <raul@protocol.ai>
2021-06-14 09:42:22 +05:30
aarshkshah1992 3d086dfb43 changes as per review 2021-06-14 09:40:34 +05:30
Raúl Kripalani ac67e466ec fix test. 2021-06-14 00:13:15 +01:00
Raúl Kripalani f1ec0d6094 fix lint. 2021-06-14 00:10:37 +01:00
Raúl Kripalani 958b6b54a8 go mod tidy. 2021-06-13 23:53:13 +01:00
Raúl Kripalani 183814a826 finish migrating deals test. 2021-06-13 23:43:22 +01:00
wangchao f392c1295c failed sectors should be added into res correctly 2021-06-12 23:22:32 +08:00
Raúl Kripalani e84b8ab3a0 move new kit into kit2, re-enable unmigrated tests against kit1. 2021-06-11 18:26:25 +01:00
Łukasz Magiera 7f8718d805 Merge pull request #6452 from filecoin-project/feat/early-finalize
sealing: Early finalization option
2021-06-11 18:16:43 +02:00
Łukasz Magiera 534badad2a mpool: Add more metrics 2021-06-11 13:19:26 +02:00
aarshkshah1992 ea9bed2746 undo ffi change 2021-06-11 16:22:09 +05:30
Łukasz Magiera 733240a2bb sealing: Test early finalization fsm planners 2021-06-11 11:52:00 +02:00
Łukasz Magiera 94be3a973a Don't enable early finalization by default 2021-06-11 11:45:20 +02:00
Łukasz Magiera 05d9b5ce0f sealing: Add missing planner for CommitFinalizeFailed 2021-06-11 11:44:37 +02:00
Łukasz Magiera ec06f086ef sealing: Early finalization option 2021-06-11 11:41:28 +02:00
aarshkshah1992 fed5afa704 merge master 2021-06-11 09:35:20 +05:30
Raúl Kripalani 8b037e2da3 deals tests: migrate deals cycles tests and add coverage. 2021-06-10 18:25:02 +01:00
Raúl Kripalani dcd6fc239b deals tests: migrate TestOfflineDealFlow. 2021-06-10 15:54:16 +01:00
Raúl Kripalani 4f2aaa54d2 deals tests: refactor/simplify TestDealMining; now TestFirstDealEnablesMining. 2021-06-10 14:04:39 +01:00
Raúl Kripalani 329970934a deals tests: begin migration. 2021-06-10 13:25:36 +01:00
Łukasz Magiera adaf78961f Merge pull request #6445 from filecoin-project/raulk/itests-init-guard
itests/kit: add guard to ensure imports from tests only.
2021-06-10 13:49:13 +02:00
Łukasz Magiera 06195bc8e1 Unit tests for sector batchers 2021-06-10 13:46:36 +02:00
Raúl Kripalani cf0150e057 deals harness: use require. 2021-06-10 12:23:27 +01:00
Raúl Kripalani c27fdc263c deals harness: more improvements. 2021-06-10 12:22:55 +01:00
Raúl Kripalani 0d69c03a8d deals harness: use require. 2021-06-10 12:17:39 +01:00
Raúl Kripalani 0303a0297d rename DealHarness.{TestRetrieval=>PerformRetrieval}. 2021-06-10 12:15:03 +01:00
Raúl Kripalani 019394b9e5 remove debug statements. 2021-06-10 12:14:37 +01:00
Raúl Kripalani d3fc6833a5 itests/kit: add guard to ensure imports from tests only. 2021-06-10 12:05:35 +01:00
Raúl Kripalani bcbbd73d65 Merge branch 'raulk/itests' into raulk/itests-refactor-kit 2021-06-10 12:02:08 +01:00
Łukasz Magiera 6f80d9f3c2 Merge pull request #6311 from filecoin-project/raulk/itests
consolidate integration tests into `itests` package; create test kit; cleanup
2021-06-10 12:33:29 +02:00
Łukasz Magiera f0f78cce97 Merge pull request #6444 from filecoin-project/fix/make-asr-happy
Remove rc changelog, compile the new changelog for final release only
2021-06-10 08:55:45 +02:00
Jennifer Wang 8f426b49ec updated configuration comments for docs 2021-06-09 23:36:44 -04:00
Jennifer 3a1ad50da5 Merge pull request #6440 from filecoin-project/jen/miner-config-doc
updated configuration comments for docs
2021-06-09 23:35:04 -04:00
Aayush Rajasekaran cdca6d09ea Merge pull request #6443 from filecoin-project/asr/rc2
Lotus version 1.10.0-rc2
2021-06-09 23:33:11 -04:00
Jennifer Wang 83c465ca0f Remove rc changelog, compile the new changelog for final release only 2021-06-09 23:32:03 -04:00
Aayush Rajasekaran c4c71802f2 Lotus version 1.10.0-rc2 2021-06-09 23:31:52 -04:00
Aayush Rajasekaran fa440a1ca6 Merge pull request #6442 from filecoin-project/feat/ntwk13-calib
Set ntwk v13 HyperDrive Calibration upgrade epoch
2021-06-09 23:30:48 -04:00
Aayush Rajasekaran edf646d19c Merge pull request #6441 from filecoin-project/feat/ntwk13-hyperdrive
Set ntwk v13 HyperDrive Calibration upgrade epoch
2021-06-09 23:28:52 -04:00
Jennifer Wang 0379adc9f1 Set ntwk v13 HyperDrive Calibration upgrade epoch 2021-06-09 23:27:58 -04:00
Jennifer Wang 55b77a3c99 Set ntwk v13 HyperDrive Calibration upgrade epoch 2021-06-09 23:26:11 -04:00
Jennifer Wang 95ad74a156 updated configuration comments for docs 2021-06-09 20:44:20 -04:00
Raúl Kripalani fd783a6862 fix gateway URL. 2021-06-10 00:15:29 +01:00
Raúl Kripalani 39c19a0fe5 fix a merge error. 2021-06-10 00:15:29 +01:00
Raúl Kripalani 8ea7398d38 pacify gotestsum by adding a normal go file. 2021-06-10 00:15:29 +01:00
Raúl Kripalani 6d46be53bd make tests no longer create auth tokens. 2021-06-10 00:15:29 +01:00
Aayush Rajasekaran 8b9ae8414a Merge pull request #6439 from filecoin-project/asr/merge-release
Merge release/v1.10.10 into master
2021-06-09 19:05:03 -04:00
Łukasz Magiera c4a86ba684 Merge pull request #6405 from filecoin-project/steb/export-car
implement a command to export a car
2021-06-10 01:04:04 +02:00
Steven Allen a64a059780 implement a command to export a car 2021-06-09 15:52:32 -07:00
Aayush Rajasekaran 3766980331 Merge branch 'release/v1.10.0' into asr/merge-release 2021-06-09 18:41:10 -04:00
Łukasz Magiera 126d5cdfb8 Merge pull request #6438 from filecoin-project/feat/proofs-v8.0.1
Proofs v8.0.1
2021-06-10 00:27:01 +02:00
Łukasz Magiera 52199c9af3 Proofs v8.0.1 2021-06-10 00:17:13 +02:00
Łukasz Magiera bb4eee41d0 Merge pull request #6437 from filecoin-project/asr/specs-update
Update to specs-actors v5-rc-3
2021-06-10 00:16:07 +02:00
Łukasz Magiera 567d5cf587 Merge pull request #6436 from filecoin-project/asr/merge-master
Merge backported PRs into v1.10 release branch
2021-06-10 00:15:47 +02:00
Raúl Kripalani 6e4eae69ac fix merge error that led to test failures. 2021-06-09 23:11:34 +01:00
Aayush Rajasekaran 29ebdc07c9 Update to specs-actors v5-rc-3 2021-06-09 18:07:46 -04:00
wangchao 626d482990 correct the change of message size limit 2021-06-09 18:05:16 -04:00
Łukasz Magiera 3d09f468fe Merge pull request #6435 from filecoin-project/asr/merge-release
Merge v1.10 release branch into master
2021-06-10 00:00:17 +02:00
Jakub Sztandera 18043810c0 Create MaxMessageSize constant
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-06-09 14:24:42 -04:00
Jakub Sztandera 0cd0faa6fb Increase message size limit
Add test

Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-06-09 14:24:38 -04:00
Łukasz Magiera f0a2e97cb5 fee config for sector batching 2021-06-09 14:23:06 -04:00
Aayush Rajasekaran dede1b4758 Merge branch 'release/v1.10.0' into asr/merge-release 2021-06-09 14:05:41 -04:00
Łukasz Magiera 69ec16f634 Merge pull request #6428 from filecoin-project/asr/aggregate-fee
Fund miners with the aggregate fee when ProveCommitting
2021-06-09 19:33:31 +02:00
Łukasz Magiera f75922fd3d Merge pull request #6416 from filecoin-project/asr/sector-cutoffs
Commit and Precommit batcher cannot share a getSectorDeadline method
2021-06-09 19:27:06 +02:00
Łukasz Magiera d09924d5ce Merge pull request #6420 from filecoin-project/feat/sector-batching-config
Fee config for sector batching
2021-06-09 19:24:43 +02:00
Aayush Rajasekaran b0c9dd49f0 Fund miners with the aggregate fee when ProveCommitting 2021-06-09 13:08:54 -04:00
Raúl Kripalani 81b3c6e2ab Merge branch 'master' into raulk/itests 2021-06-09 17:34:46 +01:00
Raúl Kripalani 7df3f3755d itests: move init. 2021-06-09 17:32:08 +01:00
Aayush Rajasekaran dbb4e9fcc5 Drop soms logs 2021-06-09 12:26:20 -04:00
Łukasz Magiera b746dc2af1 Merge pull request #6430 from GFZRZK/GFZRZK/correct_message_size_check
Fix: correct the change of message size limit
2021-06-09 18:10:34 +02:00
Anton Evangelatov beb5bffaf6 fix log.Error; rename RemoteStore 2021-06-09 13:05:54 +02:00
Łukasz Magiera a0f1662a1b Merge pull request #6425 from filecoin-project/asr/state-power
UX: lotus state power CLI should fail if called with a not-miner
2021-06-09 12:18:58 +02:00
Łukasz MagieraandAayush Rajasekaran 92bb874327 Use correct batch fee config in commit batcher
Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
2021-06-09 12:17:18 +02:00
wangchao 4c87818de1 correct the change of message size limit 2021-06-09 15:19:35 +08:00
Raúl Kripalani d1f749a808 fix log. 2021-06-09 00:46:57 +01:00
Raúl Kripalani 9eecbb1b20 fix rpc tests. 2021-06-09 00:17:39 +01:00
Aayush Rajasekaran a44e91df4b UX: lotus state power CLI should fail if called with a not-miner 2021-06-08 18:46:21 -04:00
Cory Schwartz 4bff4f25ad network reset friday 2021-06-08 18:28:01 -04:00
Aayush Rajasekaran 71909c5642 Fix nerpa build 2021-06-08 16:46:53 -04:00
Aayush Rajasekaran ba27d45214 Split the getSectorCutoff methods between precommit and commit batchers 2021-06-08 16:46:35 -04:00
Łukasz Magiera 227932f9ee Merge pull request #6419 from filecoin-project/feat/increase-msg-limit
Increase message size limit
2021-06-08 18:04:29 +02:00
Jakub Sztandera 39bab148b8 Create MaxMessageSize constant
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-06-08 16:07:43 +02:00
Anton Evangelatov 9ab84bdc0a upgrade docsgen 2021-06-08 15:59:37 +02:00
Łukasz Magiera 78171055e7 fee config for sector batching 2021-06-08 15:45:32 +02:00
Anton Evangelatov 30ba9a2751 remove double http handler decl 2021-06-08 15:36:54 +02:00
Jakub Sztandera 4c605c349f Increase message size limit
Add test

Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-06-08 15:20:10 +02:00
Anton Evangelatov 3f5f96dcbd go mod tidy 2021-06-08 14:58:20 +02:00
Anton Evangelatov 4dd093b160 fix piece provider test 2021-06-08 14:57:45 +02:00
Anton Evangelatov c0607a0e2a Merge branch 'master' into nonsense/split-market-miner-processes 2021-06-08 14:54:59 +02:00
Anton Evangelatov 9f3ec82cc1 initial resolution of conflicts 2021-06-08 13:01:22 +02:00
Łukasz Magiera c98b6f6408 Merge pull request #6389 from filecoin-project/frrist/execmonitor-interface
polish(stmgr): define ExecMonitor for message application callback
2021-06-08 12:30:52 +02:00
Łukasz Magiera 3c205a46bb Merge pull request #6403 from filecoin-project/testground-update-action
upgrade testground action version
2021-06-08 12:10:53 +02:00
Łukasz Magiera d9ef2f3432 Merge pull request #6413 from filecoin-project/chore/fix-logging-double-cid-encoding
Fix logging of stringified CIDs double-encoded in hex
2021-06-08 11:57:22 +02:00
Łukasz Magiera 631fdaa217 Merge pull request #6404 from filecoin-project/fix/test-flake-race-conn
Update libp2p to 0.14.2
2021-06-08 11:44:13 +02:00
aarshkshah1992 4e9bb16532 changes as per review 2021-06-08 10:09:27 +05:30
aarshkshah1992 212d0fc264 fix remote store diff 2021-06-08 09:54:45 +05:30
aarshkshah1992 e4e60d7af4 fix mock 2021-06-08 09:37:12 +05:30
aarshkshah1992 16166504f4 merged master 2021-06-08 09:17:40 +05:30
Aayush Rajasekaran b13169f071 Rename deadlines to cutoffs in the batchers 2021-06-07 20:20:06 -04:00
Raúl Kripalani 40ea660cdd fix TestWorkerKeyChange. 2021-06-07 23:56:59 +01:00
Raúl Kripalani cd6f91ba6f fix lint. 2021-06-07 23:47:38 +01:00
Raúl Kripalani a274fcc533 Merge branch 'master' into raulk/itests 2021-06-07 23:44:22 +01:00
Raúl Kripalani db1a61852d Merge branch 'master' into raulk/itests 2021-06-07 23:17:44 +01:00
Peter Rabbitson 29d7561dd1 Fix logging of stringified CIDs double-encoded in hex 2021-06-08 00:05:48 +02:00
Steven Allen 4aecb83932 chore: update docs for new libp2p version 2021-06-07 12:17:05 -07:00
Steven Allen 5ef5680b98 chore: update to go-libp2p v0.14.2
This should fix test flakes due to a race in the go-libp2p mock network.
2021-06-07 12:14:01 -07:00
frrist 0519c77c24 polish(stmgr): define ExecMonitor for message applicaiton callback 2021-06-07 11:03:18 -07:00
Cory Schwartz e1242a20ee upgrade to v1.1 2021-06-07 09:54:08 -07:00
Jakub Sztandera f9acd07987 Update libp2p to 0.14.1
This does not resolve the CI issue but prepares us for it after https://github.com/libp2p/go-libp2p/pull/1116

Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-06-07 18:51:48 +02:00
Cory Schwartz abf9bd0c4d test master 2021-06-07 09:38:06 -07:00
Łukasz Magiera fadc79a487 Merge pull request #6280 from filecoin-project/feat/pieceread-outside-scheduler
Bypass task scheduler for reading unsealed pieces
2021-06-07 18:11:44 +02:00
Łukasz Magiera 8625da3479 Bump miner/worker api versions 2021-06-07 16:57:24 +02:00
aarshkshah1992 7124cd5149 fix lotus soup build 2021-06-07 19:33:16 +05:30
Łukasz Magiera 0117584728 Merge pull request #6400 from filecoin-project/fix-lotus-soup-tests
testplans: lotus-soup: use default WPoStChallengeWindow
2021-06-07 13:40:06 +02:00
aarshkshah1992 ddd9bf610e fix CI 2021-06-07 16:45:52 +05:30
aarshkshah1992 1a90d3bbb5 update ffi 2021-06-07 16:12:39 +05:30
aarshkshah1992 21e6b50294 finished rebasing PR 2021-06-07 16:02:15 +05:30
Anton Evangelatov de646a5b93 fix node builder 2021-06-07 12:16:10 +02:00
Anton Evangelatov b0cb0c1a4a do not depend on filecoin-ffi in api package 2021-06-07 11:51:25 +02:00
Łukasz Magiera 1c26b7220e Merge pull request #6388 from filecoin-project/feat/ci-snap-release
build snapcraft
2021-06-07 11:46:08 +02:00
Łukasz Magiera 7b5a9a3b9c Merge pull request #6399 from lionsoul2014/master
Fix the doc errors of the sealing config funcs
2021-06-07 11:45:04 +02:00
Anton Evangelatov 042ac8240f testplans: lotus-soup: new images with filecoin-ffi ; use default WPoStChallengeWindow 2021-06-07 11:38:23 +02:00
aarshkshah1992 8d9cef17af changes as per review 2021-06-07 15:03:09 +05:30
aarshkshah1992 2a134887c3 logs to debug read & unseal 2021-06-07 15:03:09 +05:30
aarshkshah1992 ec6a49693f logs to debug read and unseal 2021-06-07 15:03:09 +05:30
aarshkshah1992 207f0d901a integration test should remove unsealed files 2021-06-07 15:03:09 +05:30
aarshkshah1992 73f7825fbb clean up logging 2021-06-07 15:03:09 +05:30
aarshkshah1992 3b792a32c3 better logging 2021-06-07 15:03:09 +05:30
aarshkshah1992 22f36483cb more logging 2021-06-07 15:03:09 +05:30
aarshkshah1992 acfa3d7370 finish integration tests 2021-06-07 15:03:09 +05:30
aarshkshah1992 ad4b182bfe remove read task type and run gen and docsgen 2021-06-07 15:03:06 +05:30
aarshkshah1992 35a0dbfa8c fix go mod 2021-06-07 15:02:52 +05:30
aarshkshah1992 4efaa8d688 unit tests for the remote store Reader 2021-06-07 15:02:52 +05:30
aarshkshah1992 0d88800eb9 use mockgen 2021-06-07 15:02:52 +05:30
aarshkshah1992 77b5e8d045 use an actual worker in the integration tests 2021-06-07 15:02:52 +05:30
Dirk McCormick 6879ae9e6a feat: TestPieceProviderReadPiece 2021-06-07 15:02:52 +05:30
aarshkshah1992 74372d3e81 fix linting problems 2021-06-07 15:02:52 +05:30
aarshkshah1992 759d8f090b test http handler 2021-06-07 15:02:52 +05:30
aarshkshah1992 db5c88196d address review comments 2021-06-07 15:02:52 +05:30
Aarsh Shahanddirkmc c853350bdf Apply suggestions from code review
Co-authored-by: dirkmc <dirkmdev@gmail.com>
2021-06-07 15:02:52 +05:30
aarshkshah1992 65eb610ec3 docs, logs and green ci 2021-06-07 15:02:49 +05:30
aarshkshah1992 670835fca0 bypass task scheduler for reading unsealed pieces 2021-06-07 15:02:04 +05:30
Anton Evangelatov c7c029ea91 testplans: lotus-soup: new images with filecoin-ffi ; use default WPoStChallengeWindow 2021-06-07 11:28:24 +02:00
Cory Schwartz becc2465a5 homeplug 2021-06-06 23:07:59 -07:00
Lion e4588aed5c Fix the doc errors of the sealing config funcs 2021-06-07 12:35:43 +08:00
Cory Schwartz 02b35bf978 remove tmp publish 2021-06-06 15:52:56 -07:00
Cory Schwartz e61ff4153f spaces between urls 2021-06-04 20:52:12 -07:00
Cory Schwartz 25080956a7 rm license 2021-06-04 20:35:55 -07:00
Cory Schwartz 52380fe7fc more detailed information 2021-06-04 20:28:12 -07:00
Cory Schwartz 3921ea6916 add icon 2021-06-04 20:13:37 -07:00
Cory Schwartz 10632d0131 missing colon 2021-06-04 16:50:23 -07:00
Cory Schwartz 8b06f51fb4 vartmp 2021-06-04 16:47:06 -07:00
Cory Schwartz c12318f413 missing colon 2021-06-04 16:25:02 -07:00
Cory Schwartz 39f3384e7c confine 2021-06-04 16:22:57 -07:00
Łukasz Magiera b8deee048e Merge pull request #6081 from filecoin-project/test/offline-deals
Integration tests for offline deals
2021-06-04 23:27:26 +02:00
Dirk McCormick 52b90e4c9d test: offline deals 2021-06-04 22:42:07 +02:00
Łukasz Magiera 91c87b7069 Merge pull request #5921 from filecoin-project/fix/retrieve-success-handling
Fix success handling in Retreival
2021-06-04 22:15:34 +02:00
Łukasz Magiera ba654285f0 Merge pull request #6397 from filecoin-project/fix/some-flaky-tests
Fix some flaky tests
2021-06-04 22:00:29 +02:00
aarshkshah1992 35a466f4c4 add new line 2021-06-04 21:41:09 +02:00
aarshkshah1992 ed4748e8ac fix bug 2021-06-04 21:41:09 +02:00
aarshkshah1992 182da9d4ef fix error handling 2021-06-04 21:41:09 +02:00
aarshkshah1992 8733cea902 fix success handling in retreival 2021-06-04 21:41:09 +02:00
Łukasz Magiera 0244dfd76c Merge pull request #6384 from filecoin-project/feat/ci-appimage-release
build appimage in CI
2021-06-04 21:30:13 +02:00
Łukasz Magiera 393b60fb7d Merge pull request #6392 from filecoin-project/docs/gas
Add doc on gas balancing
2021-06-04 21:25:51 +02:00
Łukasz Magiera 42ec5928e3 Merge pull request #6337 from filecoin-project/feat/list-retrievals
Add a command to list retrievals
2021-06-04 21:13:25 +02:00
Łukasz Magiera 8286c6bd17 Merge pull request #6387 from filecoin-project/feat/interopnet
Add interop network
2021-06-04 21:11:48 +02:00
Łukasz Magiera a7746961fb Merge remote-tracking branch 'origin/master' into feat/list-retrievals 2021-06-04 20:49:01 +02:00
Anton Evangelatov ded5341da0 fixup test node builder 2021-06-04 17:22:36 +02:00
Anton Evangelatov ed634bc3a4 rebuild docs 2021-06-04 17:06:55 +02:00
Anton Evangelatov c4d10bc44e apply messagepool.NewProviderLite to lite nodes 2021-06-04 16:51:07 +02:00
Anton Evangelatov 6f125cc129 add prover to fullnode and miner builders 2021-06-04 16:26:32 +02:00
Anton Evangelatov d9a7348ae1 use masters filecoin-ffi 2021-06-04 16:20:40 +02:00
Raúl Kripalani 71cd268502 fix. 2021-06-04 15:17:30 +01:00
Anton Evangelatov 8bd09e39ca resolve merge conflicts 2021-06-04 16:17:00 +02:00
Anton Evangelatov c877166b4a add messagepool to test node constructor 2021-06-04 15:53:33 +02:00
Anton Evangelatov 7f234809fc make linter happy 2021-06-04 15:44:13 +02:00
Anton Evangelatov 88756f3ebf fix TestAPIDeal tests 2021-06-04 15:41:38 +02:00
Jakub Sztandera 86ab3926c5 Add doc on gas balancing
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-06-04 15:32:52 +02:00
aarshkshah1992 303ef15a83 fix ci 2021-06-04 17:33:11 +05:30
aarshkshah1992 05ba3de5cc changes as per review 2021-06-04 10:27:43 +05:30
Cory Schwartz 4dde67750c uncomment build-all 2021-06-03 20:47:07 -07:00
Cory Schwartz 0fba816846 publish on snap 2021-06-03 20:45:54 -07:00
Travis Person e89e0679b5 Interop genesis 2021-06-03 23:27:45 +00:00
Travis Person 96e67b80c3 Add interop network 2021-06-03 22:43:27 +00:00
Aayush Rajasekaran c66d66dfcb Fix state manager::Call() 2021-06-03 17:09:42 -04:00
Aayush Rajasekaran a41a1cbd93 Gate runtime's GetRandomnessFromBeacon on HyperdriveHeight, not network version 2021-06-03 15:47:49 -04:00
Cory Schwartz 8b2b488d17 remove temporary edits 2021-06-03 10:44:48 -07:00
Cory Schwartz eafcc14f0b comment out filters 2021-06-03 10:20:49 -07:00
Cory Schwartz 92fdbd80d9 tmp: publish dry run 2021-06-03 10:18:13 -07:00
Łukasz Magiera c5797482b2 Revert CallWithGas hack 2021-06-03 18:51:01 +02:00
Łukasz Magiera 565bb4f589 mock: Log debug info on bad aggregates 2021-06-03 17:35:10 +02:00
Łukasz Magiera fd2d2d3ff4 Fix TestDeadlineToggling flakiness 2021-06-03 17:08:05 +02:00
Łukasz Magiera 78c128f6a3 chain: Better logging in sync tests 2021-06-03 10:42:26 +02:00
Łukasz Magiera bf468762b6 Merge pull request #6342 from filecoin-project/feat/nv13-1.11
Network version 13 (v1.11)
2021-06-03 09:58:43 +02:00
Cory Schwartz 65651099b6 remove extraneous comment 2021-06-03 00:11:36 -07:00
Cory Schwartz 9d3410d374 include appimage on release 2021-06-03 00:05:43 -07:00
aarshkshah1992 43453bb633 fix broken test 2021-06-03 10:15:23 +05:30
Aayush Rajasekaran 4a321c6da2 Fix nerpa build 2021-06-02 19:19:32 -04:00
Aayush Rajasekaran cd4505dd63 Update to specs-actors v5-rc-2 2021-06-02 19:11:47 -04:00
Aayush Rajasekaran 1f10600f13 Lotus version 1.10.0-rc1 2021-06-02 19:04:17 -04:00
Łukasz Magiera d5002d7395 Merge pull request #6381 from filecoin-project/asr/specs-update
Update to actors v5rc2
2021-06-02 21:50:26 +02:00
Aayush Rajasekaran 55193bf36d Merge branch 'release/v1.9.0' into asr/specs-update 2021-06-02 14:58:14 -04:00
Aayush Rajasekaran 6854cc5944 Update to specs-actors v5-rc-2 2021-06-02 14:51:49 -04:00
Łukasz Magiera 40cc29d723 Skip FD check in TestDownloadParams 2021-06-02 19:50:17 +02:00
Łukasz Magiera 08b7ab90c1 mod tidy, fix testground build 2021-06-02 15:29:54 +02:00
Łukasz Magiera e1dc7ad6eb build: Use go embed for srs-inner-product.json 2021-06-02 15:12:26 +02:00
Łukasz Magiera 55f65702b2 Merge branch 'feat/nv13-1.11' of github.com:filecoin-project/lotus into feat/nv13-1.11 2021-06-02 15:07:40 +02:00
Łukasz Magiera 6d9779ecae Merge remote-tracking branch 'origin/master' into feat/nv13-1.11 2021-06-02 15:07:13 +02:00
Łukasz Magiera d77d3df698 Merge remote-tracking branch 'origin/feat/nv13' into feat/nv13-1.11 2021-06-02 15:06:50 +02:00
Łukasz Magiera f296385141 Merge pull request #6208 from filecoin-project/feat/appimage
Generate AppImage
2021-06-02 15:05:01 +02:00
Łukasz Magiera 6ead83b605 Go 1.16 in Dockerfile 2021-06-02 14:42:48 +02:00
Łukasz Magiera f1ebf320b5 Fix codeql with go 1.16 2021-06-02 12:49:11 +02:00
Łukasz Magiera cba5c34aef Fix lotus-soup build 2021-06-02 12:38:07 +02:00
Łukasz Magiera 6d7e0a57e4 fix lotus-gateway build 2021-06-02 12:34:48 +02:00
Łukasz Magiera 3ae817d549 Update required golang version to 1.16 2021-06-02 12:29:49 +02:00
Cory Schwartz ff82a4e9ec remove rice-box.go from gitignore 2021-06-02 12:16:09 +02:00
Cory Schwartz e13dea7da8 use go:embed 2021-06-02 12:16:09 +02:00
Cory Schwartz 16db46e6b9 rm generated file when clean 2021-06-02 12:16:09 +02:00
Cory Schwartz a7f7350c51 switch to go rice embedded 2021-06-02 12:16:09 +02:00
Cory Schwartz 2cf3674089 build on ubuntu 18.04 2021-06-02 12:16:09 +02:00
Cory Schwartz 56ce8fb293 appimage 2021-06-02 12:16:09 +02:00
Łukasz Magiera 07b025a54f Merge pull request #6373 from filecoin-project/feat/gateway-check
lotus-gateway: add check command
2021-06-02 12:13:39 +02:00
Łukasz Magiera ae90d7c3b5 Fix lint 2021-06-02 12:00:39 +02:00
Travis Person 07102ec686 lotus-gateway: add check command
The check command provides a quick way to try out different transports
and verify that a connection can be made to a running gateway.
2021-06-02 11:59:11 +02:00
Łukasz Magiera f6963523f8 Use filecoin-ffi master 2021-06-02 11:13:24 +02:00
Łukasz Magiera 1bc8c928b7 Merge pull request #6374 from filecoin-project/asr/warning
Add a warning to the release issue template
2021-06-02 11:07:33 +02:00
hannahhoward 93a2530803 fix(cli): make failed retrievals show by default 2021-06-01 16:02:35 -07:00
Aayush Rajasekaran f30b2dab66 Add a warning to the release issue template 2021-06-01 18:24:07 -04:00
Łukasz Magiera 2a787dd4a3 Merge pull request #6372 from filecoin-project/fix/nv11-tests
Fix nv13 1.11 tests
2021-06-02 00:17:05 +02:00
Aayush Rajasekaran cf18709100 Fix TestDeadlineToggling 2021-06-01 17:50:06 -04:00
Aayush Rajasekaran 964435a78c CLI docsgen 2021-06-01 17:39:45 -04:00
Łukasz Magiera aad13bae08 Merge pull request #6369 from filecoin-project/feat/markets-1.4.0
update to markets-v1.4.0
2021-06-01 23:35:58 +02:00
Aayush Rajasekaran f00cf70df0 Magik shouldn't write code at midnight 2021-06-01 17:31:44 -04:00
Dirk McCormick 06dbca24b4 feat: update to markets v1.4.0 2021-06-01 13:45:04 -06:00
Dirk McCormick 133459756b fix: update lotus-soup 2021-06-01 13:44:42 -06:00
Łukasz Magiera 2f0a9f6c40 Improve AddVerifiedClient test 2021-06-01 21:28:48 +02:00
Łukasz Magiera ee21351aa0 statetree: Add missing version defs 2021-06-01 21:16:01 +02:00
Łukasz Magiera a676da8a7e Merge remote-tracking branch 'origin/master' into feat/nv13-1.11 2021-06-01 21:07:04 +02:00
Łukasz Magiera dc642d0b7b Merge remote-tracking branch 'origin/feat/nv13' into feat/nv13-1.11 2021-06-01 21:06:58 +02:00
Łukasz Magiera fa8beeac2b Merge pull request #6371 from filecoin-project/fix/robustify-commit-batcher
Fix tests
2021-06-01 21:01:03 +02:00
Aayush Rajasekaran 39f2246ae6 Use build.UpgradeHyperDriveHeight directly when sourcing randomness in VM 2021-06-01 14:43:46 -04:00
Łukasz Magiera 8b84e499c5 storagefsm: Handle preCommitParams errors better 2021-06-01 20:36:20 +02:00
Łukasz Magiera b6b56320bf Fix StateComputeDataCommitment 2021-06-01 20:34:24 +02:00
Aayush Rajasekaran c8cef1cb7e Fix chain/gen randomness getting (test only) 2021-06-01 13:44:08 -04:00
Łukasz Magiera 66c1554670 vm syscalls: fix typo 2021-06-01 19:23:12 +02:00
Łukasz Magiera 5c5b8866c7 gofmt 2021-06-01 19:14:08 +02:00
Łukasz Magiera 8072573292 Fix TestWindowPostDispute 2021-06-01 19:11:32 +02:00
Aayush Rajasekaran 49fce48c3e Tweak CallVM to use current epoch, not future epoch 2021-06-01 12:43:16 -04:00
Dirk McCormick 6e92c43dd5 feat: add testground versions composition 2021-06-01 10:40:55 -06:00
Dirk McCormick 8997ed508b feat: update to markets-v1.4.0 2021-06-01 10:16:12 -06:00
Łukasz Magiera d69032b2f0 Merge pull request #6367 from filecoin-project/fix/robustify-commit-batcher
Robustify commit batcher
2021-06-01 17:49:46 +02:00
Łukasz Magiera 5a7f97210f Merge pull request #6317 from filecoin-project/jen/test-datacap-topup
Add test for AddVerifiedClient
2021-06-01 14:41:05 +02:00
Łukasz Magiera 5a9e6c8142 Merge pull request #6364 from filecoin-project/asr/resolve-messages
Improve address resolution for messages
2021-06-01 14:38:31 +02:00
Łukasz Magiera 482e1110c2 precommit batcher: Improve error propagation 2021-06-01 14:35:30 +02:00
Łukasz Magiera 5c3ebd424c miner: Improve batching CLI UX 2021-06-01 12:33:24 +02:00
Łukasz Magiera cb4eb487f4 commit batcher: Fix min aggregate size check 2021-06-01 12:27:22 +02:00
Łukasz Magiera cd0a1c97fa Improve cli for flushing commit batches 2021-06-01 12:25:19 +02:00
Łukasz Magiera 084b0e7f60 Handle collateral when submitting aggregated commits 2021-06-01 12:09:15 +02:00
Łukasz Magiera 9fcb564bef Make commit batcher more robust 2021-06-01 11:56:19 +02:00
Anton Evangelatov 0a79f49dc5 fix tests 2021-06-01 11:45:34 +02:00
Anton Evangelatov e4136b0d42 add modules.StorageAuthWithURL to set correct token 2021-06-01 11:42:28 +02:00
Łukasz Magiera 9cfc275b3d Merge pull request #6365 from XMPPwocky/patch-1
Typo fix in error message: "pubusb" -> "pubsub"
2021-06-01 10:27:43 +02:00
Łukasz Magiera b149eb8d02 Merge pull request #6366 from filecoin-project/asr/post-tests
Fix supported proof type manipulations for v5 actors
2021-06-01 10:25:26 +02:00
Jennifer Wang fcfc214ed1 Use MockSbBuilder 2021-05-31 20:14:11 -04:00
Aayush Rajasekaran 85873f6057 Wdpost run should respect AddressedPartitionsMax 2021-05-31 19:28:49 -04:00
Aayush Rajasekaran 2ab24b358d Fix supported proof type manipulations for v5 actors 2021-05-31 18:50:29 -04:00
Mimir ee508120d9 Typo fix in error message: "pubusb" -> "pubsub" 2021-05-31 15:30:10 -07:00
Aayush Rajasekaran 621e4eab0d Address review 2021-05-31 18:13:23 -04:00
Aayush Rajasekaran 9ceee6028b More tweaking of context handling in the messagepool 2021-05-31 18:13:23 -04:00
Aayush Rajasekaran 183c12db25 Make mempool reject ID addresses that are not reorg-stable 2021-05-31 18:13:23 -04:00
Aayush Rajasekaran ed93d0725f Protect mp.localAddrs and mp.pending behind helper functions 2021-05-31 18:13:23 -04:00
Aayush Rajasekaran 1f03a618f9 Plumb contexts through 2021-05-31 18:13:23 -04:00
Aayush Rajasekaran 8d991283f4 Resolve to ID addresses when handling message selection 2021-05-31 18:13:23 -04:00
JenniferandŁukasz Magiera ac2887c01b Update api/test/verifreg.go
Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
2021-05-31 16:03:52 -04:00
Łukasz Magiera 3671f2a6ff fix 2k build 2021-05-31 21:52:23 +02:00
Łukasz Magiera 4bf03b485f mod tidy 2021-05-31 21:40:21 +02:00
Łukasz Magiera ffa47659a1 Merge remote-tracking branch 'origin/feat/nv13' into feat/nv13-1.11 2021-05-31 21:38:34 +02:00
Łukasz Magiera c3e8eddb9b Merge remote-tracking branch 'origin/master' into feat/nv13-1.11 2021-05-31 21:24:56 +02:00
Łukasz Magiera 9fd3c8c9af Merge pull request #6226 from filecoin-project/feat/cli-state-call-improvements
Improve the cli state call command
2021-05-31 21:22:45 +02:00
Łukasz Magiera d9aa1fad75 regen cli docs 2021-05-31 21:13:25 +02:00
Alex Wade 2782ea31d3 Improve the cli state call command to accept base64/hex params, and decode result according to method return type 2021-05-31 21:08:45 +02:00
Łukasz Magiera e8825287d2 Merge pull request #6351 from filecoin-project/asr/verifreg-ux
Add verifreg utils to CLI
2021-05-31 21:06:27 +02:00
Aayush Rajasekaran 92f544d96c Add verifreg utils to CLI 2021-05-31 15:01:55 -04:00
Łukasz Magiera d86c8195dd Merge pull request #6358 from filecoin-project/chore/better_winning_log_harder
Upscale mineOne message to a WARN on unexpected ineligibility
2021-05-31 20:59:08 +02:00
Łukasz Magiera 2a1b35e694 Merge pull request #6361 from filecoin-project/asr/fip-0015
Implement FIP-0015
2021-05-31 20:58:21 +02:00
Łukasz Magiera 5349789a19 Merge pull request #6349 from filecoin-project/asr/runtime-basefee
Update to latest actors
2021-05-31 20:51:27 +02:00
Aayush Rajasekaran 61554cf3e0 Update to latest actors 2021-05-31 14:47:41 -04:00
Łukasz Magiera 2d6a159dcc Merge pull request #6041 from filecoin-project/fix/batch-deal-packing
storagefsm: Fix batch deal packing behavior
2021-05-31 20:45:12 +02:00
Aayush Rajasekaran 7fca1c1ee7 Implement FIP-0015 2021-05-31 14:40:54 -04:00
Łukasz Magiera 20d1523c81 Merge pull request #6359 from filecoin-project/chore/better_winning_log_harderer
Remove few useless variable assignments
2021-05-31 20:27:03 +02:00
Łukasz Magiera 0413022196 Merge pull request #6362 from filecoin-project/fix/evt-many-called-epoch-1.10
events: Fix handling of multiple matched events per epoch
2021-05-31 20:22:02 +02:00
Łukasz Magiera 8003a8a2d0 events: Fix handling of multiple matched events per epoch 2021-05-31 20:17:50 +02:00
Łukasz Magiera 53477c2eea Merge pull request #6360 from filecoin-project/feat/wallet-jwt
lotus-wallet: JWT Support
2021-05-31 20:10:27 +02:00
Peter Rabbitson b6d5b88e9f Pushed the wrong thing >:( 2021-05-31 15:31:40 +02:00
Peter Rabbitson c3a7b59bd1 Remove few useless variable assignments 2021-05-31 15:16:38 +02:00
Peter Rabbitson 039b88740d Upscale mineOne message to a WARN on unexpected ineligibility 2021-05-31 14:53:34 +02:00
Łukasz Magiera 937366f04a lotus-wallet: Describe setup with auth 2021-05-31 14:33:54 +02:00
Łukasz Magiera d7b2f8c0b7 Merge pull request #6357 from filecoin-project/chore/demote_different_genesis_log_message
Reduce noise from 'peer has different genesis' messages
2021-05-31 14:20:37 +02:00
Łukasz Magiera 7d1ae7daf5 lotus-wallet: Support permissioned api 2021-05-31 13:56:35 +02:00
Peter Rabbitson 1e72d8f14c Reduce noise from 'peer has different genesis' messages
After the unification of all networks behind a build-tag, the amount of these
warnings has risen sharply. Reduce it to a debug-level, since it isn't actionable
to an operator.
2021-05-31 13:43:24 +02:00
Łukasz Magiera 47608c1937 wallet: Handle jwt headers 2021-05-31 13:38:14 +02:00
Łukasz Magiera cc90b61dfc Merge pull request #6350 from filecoin-project/asr/deal-start
Extend the default deal start epoch delay
2021-05-31 12:51:31 +02:00
Anton Evangelatov d195a12565 Merge branch 'master' into nonsense/split-market-miner-processes 2021-05-31 11:26:11 +02:00
Łukasz Magiera be3a8bd320 Merge pull request #6355 from filecoin-project/fix/evt-many-called-epoch
events: Fix handling of multiple matched events per epoch
2021-05-31 11:11:15 +02:00
Łukasz Magiera 670913261c Self-review cleanup 2021-05-30 19:37:33 +02:00
Łukasz Magiera f3bf773152 storagefsm: Fix too-long log handling 2021-05-30 19:24:42 +02:00
Łukasz Magiera 6e1919c67f storagefsm: Fix race spawning more than one new sector at once 2021-05-30 18:30:38 +02:00
Łukasz Magiera 9475079b97 Make batch deal input test less flaky 2021-05-30 17:46:22 +02:00
Łukasz Magiera c8d603557b storagefsm: Fix batch deal packing behavior 2021-05-30 17:46:22 +02:00
Łukasz Magiera 3ea39f76e1 events: Fix handling of multiple matched events per epoch 2021-05-30 17:20:14 +02:00
Steve Loeppky 5445b05d0d Merge pull request #6236 from filecoin-project/BigLep-RELEASE_ISSUE_TEMPLATE-patch-1
Update RELEASE_ISSUE_TEMPLATE.md
2021-05-28 17:38:50 -07:00
Jennifer Wang 2b08e9f3a6 Add test AddVerifiedClient 2021-05-28 15:41:57 -04:00
Aayush Rajasekaran fba5c65ffd Extend the default deal start epoch delay 2021-05-28 12:35:48 -04:00
Łukasz Magiera dd79c2c41a Merge pull request #6347 from filecoin-project/feat/agg-gas-price
Introduce gas prices for aggregate verifications
2021-05-28 12:40:16 +02:00
Łukasz Magiera 54e4cf564c Merge pull request #6240 from filecoin-project/asr/not-hack-drand
Fix randomness fetching around null blocks
2021-05-28 12:36:25 +02:00
hannahhoward 3fbe2b320d feat(v0api): add list-retrievals to v0 2021-05-27 15:00:31 -07:00
hannahhoward 9e73e43272 fix(cli): add one more error state 2021-05-27 11:48:28 -07:00
hannahhoward 9c2467b17c fix(cli): patch for output given fil-markets IsTerminalError ahving a bug 2021-05-27 11:48:28 -07:00
hannahhoward 19b6dc8d1e feat(cli): add a list retrievals command
Currently, there is no way to inspect retrievals on a client. This adds said command, allow with
corresponding APIs
2021-05-27 11:48:25 -07:00
Aayush Rajasekaran 10b931312b Fix edgecase in tipset skipcache 2021-05-27 13:44:37 -04:00
Jakub Sztandera cb59daf3c1 Introduce gas prices for aggregate verifications
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-05-27 17:51:01 +02:00
Anton Evangelatov 46a368d2b9 bump api ver 2021-05-27 13:35:54 +02:00
Łukasz Magiera 1e4456138e Merge master into feat/nv13 2021-05-27 12:28:20 +02:00
Łukasz Magiera 6267832504 Merge pull request #6339 from yaohcn/get-sp
Get current seal proof when necessary
2021-05-27 11:14:13 +02:00
Łukasz Magiera 83976cfd2d Merge pull request #6333 from filecoin-project/asr/genesis-actor
Allow starting networks from arbitrary actor versions
2021-05-27 11:07:43 +02:00
Anton Evangelatov c311520968 add missing messagepool override 2021-05-27 10:28:41 +02:00
yaohcn d04e7d98ce Get current seal proof when necessary 2021-05-27 11:53:33 +08:00
Aayush Rajasekaran d9e86afa24 Tweak client calcDealExpiration to consider genesis miners 2021-05-26 21:46:37 -04:00
Aayush Rajasekaran 21b4741e30 Fix randomness fetching around null blocks 2021-05-26 21:06:06 -04:00
Łukasz Magiera 3cdd06b719 Merge pull request #6334 from filecoin-project/del-tracing-log-line
Remove log line when tracing is not configured
2021-05-27 00:03:50 +02:00
Cory Schwartz e24f24bc71 Remove log line when tracing is not configured 2021-05-26 10:45:04 -07:00
Aayush Rajasekaran 1ad2c4dab0 Make devnets work again 2021-05-26 12:48:19 -04:00
Aayush Rajasekaran 7714537239 Allow starting networks from arbitrary actor versions 2021-05-26 12:48:14 -04:00
Anton Evangelatov 9979de24db logs and defaults 2021-05-26 12:47:21 +02:00
Łukasz Magiera d7e36b9610 Merge pull request #6330 from filecoin-project/revert-6305-asr/genesis-actor
Revert "Allow starting networks from arbitrary actor versions"
2021-05-26 12:37:31 +02:00
Łukasz Magiera 43c62f4406 Revert "Allow starting networks from arbitrary actor versions" 2021-05-26 12:33:08 +02:00
Łukasz Magiera 409f96d716 Merge pull request #6323 from filecoin-project/feat/separate-tracing-env-vars
separate tracing environment variables
2021-05-26 12:07:17 +02:00
Łukasz Magiera 2b93bcde72 Merge pull request #6235 from filecoin-project/feat/fip-0013
WIP: Integrate FIP0013
2021-05-26 11:04:15 +02:00
Łukasz Magiera 930f2b4049 Merge pull request #6305 from filecoin-project/asr/genesis-actor
Allow starting networks from arbitrary actor versions
2021-05-26 10:19:23 +02:00
Łukasz Magiera fc76a09b19 mock: Use real aggregate lengths 2021-05-26 10:06:41 +02:00
Cory Schwartz d50b59b4c7 don't scare the gosec linter 2021-05-25 23:55:46 -07:00
Cory Schwartz e6b631078f update jaeger documentation 2021-05-25 23:53:08 -07:00
Aayush Rajasekaran cf574ca9a1 Allow starting networks from arbitrary actor versions 2021-05-25 19:30:20 -04:00
Raúl Kripalani 2bcedcf55f initial version of the new itest kit.
Still need to migrate all integration tests, add godocs,
and probably zap bugs.
2021-05-26 00:04:13 +01:00
Łukasz Magiera 4c6c9a0edb Fix windowpost/deadline tests 2021-05-25 21:27:32 +02:00
Aayush Rajasekaran 10927daa53 Merge pull request #6322 from filecoin-project/feat/dispute-log
feat: log dispute rate
2021-05-25 14:21:12 -04:00
Łukasz Magiera ef6db7de07 Merge pull request #6291 from filecoin-project/asr/min-power
Use new actor tags
2021-05-25 20:06:20 +02:00
Aayush Rajasekaran d42eda4336 Use new actor tags 2021-05-25 13:02:49 -04:00
Łukasz Magiera 7bd0fcbb24 sealing: Don't start batch timers with empty batches 2021-05-25 16:47:42 +02:00
Łukasz Magiera 04658e1cae fix lint 2021-05-25 16:26:59 +02:00
Łukasz Magiera d90ab2b81f config: Document batching fields 2021-05-25 16:20:49 +02:00
Łukasz Magiera f5409845b5 Some review addressing 2021-05-25 16:07:45 +02:00
Peter Rabbitson c2e5a837e6 Adjust various CLI display ratios to arbitrary precision
Originally the deviations from using float64 were insignificant, but at
exabyte scale they start to show up. Cleanup all displays, and clarify
the expectation text, adding an extra 99.9% probability calculator to
`lotus-miner info`
2021-05-25 14:09:01 +02:00
Cory Schwartz 273368ed6a separate tracing environment variables 2021-05-25 01:23:33 -07:00
Steven Allen 995efe4584 feat: log dispute rate
This way we can see if/when we need to optimize this code.
2021-05-24 16:31:50 -07:00
Łukasz Magiera 216fa5c965 Merge pull request #6310 from filecoin-project/chore/better_winning_log
Fix logging around mineOne
2021-05-24 19:38:06 +02:00
Jennifer Wang 391d6eca49 make lint happy 2021-05-24 10:04:37 -04:00
aarshkshah1992 1b5c1f0588 test unsealed ask 2021-05-24 18:25:12 +05:30
Łukasz Magiera 05082e262a Merge pull request #6316 from Aloxaf/fix_completion
Fix shell completions
2021-05-24 13:44:02 +02:00
aarshkshah1992 0f3ff9e06a fix typo 2021-05-24 15:22:11 +05:30
aarshkshah1992 ac443cd758 go mod tidy 2021-05-24 15:20:13 +05:30
aarshkshah1992 78255eac54 test unsealing prices for default pricing strategy 2021-05-24 15:11:50 +05:30
Aloxaf 559c76a214 Fix shell completions 2021-05-24 15:00:47 +08:00
Raúl Kripalani f6a7f21def Merge branch 'raulk/refactor-rpc' into raulk/itests 2021-05-23 22:00:49 +01:00
Raúl Kripalani 57dab5b71c remove previously redundant context. 2021-05-23 19:12:13 +01:00
Raúl Kripalani 75c88d0385 make gateway tests use gateway rpc setup methods. 2021-05-23 18:57:04 +01:00
Raúl Kripalani d8d48953d9 Merge branch 'raulk/refactor-rpc' into raulk/itests 2021-05-23 18:47:55 +01:00
Raúl Kripalani 188688c9ce refactor gateway rpc. 2021-05-23 18:37:53 +01:00
Raúl Kripalani c3f45cc836 Merge branch 'raulk/refactor-rpc' into raulk/itests 2021-05-23 14:56:54 +01:00
Raúl Kripalani 2337248aa5 rpc: separate handlers/server; refactor miner rpc. 2021-05-23 14:48:42 +01:00
Raúl Kripalani 627248d610 Merge branch 'raulk/refactor-rpc' into raulk/itests 2021-05-23 12:41:25 +01:00
Raúl Kripalani de454b8e26 add godocs to ServeRPC. 2021-05-23 12:40:33 +01:00
Peter Rabbitson 3a74ab8f82 Add a lateStart indicator, differentiate on Error/Warn/Info 2021-05-22 23:57:45 +02:00
aarshkshah1992 dc6dbc9a11 dpr changes and test based on new unsealing PR 2021-05-22 22:40:21 +05:30
Peter Rabbitson 888c63b79c Incorporate the 'Time delta between now...' log into the 'completed mineOne' 2021-05-22 17:39:56 +02:00
Raúl Kripalani 5b77dbd06f decouple rpc server and shutdown logic from cmd. 2021-05-21 21:34:17 +01:00
Raúl Kripalani f08c792686 minor renames. 2021-05-21 20:39:41 +01:00
Raúl Kripalani 416340d227 fix paych test; re-add pubsub bootstrapping. 2021-05-21 19:46:58 +01:00
Łukasz Magiera 0f83515a4a Merge pull request #6312 from filecoin-project/feat/8MB-devnet
Allow 8MB sectors in devnet
2021-05-21 19:54:31 +02:00
Dirk McCormick 714702f278 feat: allow 8MB sectors in devnet 2021-05-21 10:37:09 -06:00
Raúl Kripalani 63f929541f itests: fix gateway tests parameters. 2021-05-21 17:20:56 +01:00
Łukasz Magiera 58203559e7 Merge pull request #6304 from yaohcn/fix-ticket
fix ticket expired
2021-05-21 16:07:28 +02:00
Raúl Kripalani bf36891972 fix lint errors. 2021-05-21 15:02:03 +01:00
Raúl Kripalani 2e9b0f0895 adapt cmd/lotus-storage-miner tests. 2021-05-21 14:52:30 +01:00
aarshkshah1992 50e023edd3 changes as per review 2021-05-21 19:15:05 +05:30
aarshkshah1992 2c9f5922b5 logs to debug read & unseal 2021-05-21 19:02:37 +05:30
aarshkshah1992 8ff5bce7a3 logs to debug read and unseal 2021-05-21 19:01:17 +05:30
Peter Rabbitson aed7017ab2 Forgotten deadcode 2021-05-21 15:30:08 +02:00
Peter Rabbitson 308d1e9b7c Fix logging around mineOne
- A nil MiningBaseInfo is *NOT* unexpected: it happens when one is in penalty
  https://github.com/filecoin-project/lotus/blob/v1.9.0/chain/stmgr/utils.go#L500-L502

- Remove the log from IsRoundWinner(): all we care about is the randbase epoch
2021-05-21 15:00:21 +02:00
Raúl Kripalani b56568d720 fix client tests. 2021-05-21 13:56:04 +01:00
Raúl Kripalani 20dfe220f3 fix lifecycle of BlockMiner. 2021-05-21 13:39:09 +01:00
aarshkshah1992 fb29f782df integration test should remove unsealed files 2021-05-21 16:15:08 +05:30
aarshkshah1992 536d7c4275 clean up logging 2021-05-21 15:50:25 +05:30
aarshkshah1992 40642b2cad better logging 2021-05-21 15:16:20 +05:30
aarshkshah1992 85f2ac8789 more logging 2021-05-21 14:56:37 +05:30
Łukasz Magiera 2e279b2ba8 Merge pull request #6202 from filecoin-project/feat/snapcraft
oh, snap!
2021-05-21 11:26:16 +02:00
Łukasz Magiera 807c670184 Merge pull request #6135 from filecoin-project/asr/verifreg
Move verifreg shed utils to CLI
2021-05-21 11:21:38 +02:00
aarshkshah1992 78a0458ada finish integration tests 2021-05-21 11:00:17 +05:30
yaohcn 00a1e2c05b test ticket expired 2021-05-21 11:45:57 +08:00
aarshkshah1992 c17300dc1f remove read task type and run gen and docsgen 2021-05-20 15:25:46 -06:00
aarshkshah1992 50d7acfa0c fix go mod 2021-05-20 15:25:46 -06:00
aarshkshah1992 bd9959070e unit tests for the remote store Reader 2021-05-20 15:25:46 -06:00
aarshkshah1992 9b34494501 use mockgen 2021-05-20 15:25:46 -06:00
aarshkshah1992 31a5f68dfa use an actual worker in the integration tests 2021-05-20 15:25:46 -06:00
Dirk McCormick ec85a973b1 feat: TestPieceProviderReadPiece 2021-05-20 15:25:46 -06:00
aarshkshah1992 8c4c26ca4c fix linting problems 2021-05-20 15:25:46 -06:00
aarshkshah1992 dd9c9fd4fd test http handler 2021-05-20 15:25:46 -06:00
aarshkshah1992 c58048d16a address review comments 2021-05-20 15:25:46 -06:00
Aarsh Shahanddirkmc d33d426692 Apply suggestions from code review
Co-authored-by: dirkmc <dirkmdev@gmail.com>
2021-05-20 15:25:46 -06:00
aarshkshah1992 73613ee883 docs, logs and green ci 2021-05-20 15:25:46 -06:00
aarshkshah1992 2a40c802ea bypass task scheduler for reading unsealed pieces 2021-05-20 15:25:46 -06:00
Łukasz Magiera 2d4eaf08c4 Merge pull request #6233 from nonsense/fix-finalizesector-storage-req
consider storiface.PathStorage when calculating storage requirements
2021-05-20 21:43:55 +02:00
Łukasz Magiera 5f2e163bbb Merge pull request #6259 from filecoin-project/raulk/docs-storage
`storage` module: add go docs and minor code quality refactors
2021-05-20 21:42:30 +02:00
Łukasz Magiera 9ddeb5344f Merge pull request #6306 from filecoin-project/fix/revert-to-libp2p-v0.12.0
Revert "chore: update go-libp2p"
2021-05-20 21:25:47 +02:00
Dirk McCormick 885564fe24 Revert "chore: update go-libp2p"
This reverts commit f7fbaef361.
2021-05-20 11:22:19 -06:00
Łukasz Magiera e3255a06ea sealing: Add missing states to SubmitPreCommitBatch planner 2021-05-20 18:39:59 +02:00
Łukasz Magiera 13ff6ed462 Test pledging before nv13 upgrade 2021-05-20 18:38:33 +02:00
Łukasz Magiera f3fda4ae7f Better asserts in TestPledgeBatching 2021-05-20 18:25:47 +02:00
Łukasz Magiera d71334cc24 Address self-review 2021-05-20 18:04:07 +02:00
Raúl Kripalani 25daa0c8e4 itests: create deal harness. 2021-05-20 16:12:42 +01:00
yaohcn e21d4d7a7e fix ticket expired 2021-05-20 20:08:24 +08:00
Anton Evangelatov 8d3d3c88d4 introduce init service, refactor restore service 2021-05-20 13:25:54 +02:00
Anton Evangelatov 9a7b0b657e comment 2021-05-20 13:18:56 +02:00
Raúl Kripalani 1902c4c687 itests: rename Builder methods. 2021-05-20 12:17:41 +01:00
Anton Evangelatov 19bd5beb96 update remoteGetSector 2021-05-20 13:15:57 +02:00
Anton Evangelatov 1a9b5760a7 add remoteGetAllocated http handler 2021-05-20 13:14:25 +02:00
Anton Evangelatov 90928991b3 remove DealInfo and DealSchedule from storage-sealing gen/main.go 2021-05-20 13:11:10 +02:00
Anton Evangelatov 4693c61305 re-arrange NodeBuilder and add storageminer_svc 2021-05-20 13:10:14 +02:00
Anton Evangelatov 76bb424de0 update StorageMinerAPI 2021-05-20 13:01:14 +02:00
Raúl Kripalani 06b8ee5b95 Merge branch 'master' into raulk/itests 2021-05-20 11:56:43 +01:00
Anton Evangelatov cb603c62d9 update retrievaladapter ; add piece_provider 2021-05-20 12:49:53 +02:00
Anton Evangelatov c12d802811 update reader to use ReadAtLeast 2021-05-20 12:38:38 +02:00
Anton Evangelatov 2562f2e9a6 add ReaderParamDecoder to json rpc server to lotus-miner run 2021-05-20 12:36:24 +02:00
Anton Evangelatov 2aad7b6979 update sectorstorage.New (Manager) interface 2021-05-20 12:32:29 +02:00
Łukasz Magiera bb889a5976 sealing: Fix max commit batch size check 2021-05-20 12:11:11 +02:00
Łukasz Magiera 678812f35b gofmt, lint 2021-05-20 12:05:04 +02:00
Łukasz Magiera 7edffcd37b Update ffi 2021-05-20 11:06:40 +02:00
Łukasz Magiera 44bf9bf903 tests: Better state logging in pledgeSectors 2021-05-20 10:39:00 +02:00
Jennifer 6f55031faa Merge pull request #6300 from filecoin-project/feat/increase-data-transfer-timeouts
Increase data transfer timeouts
2021-05-20 01:03:00 -04:00
Łukasz Magiera e0a520cb65 Merge pull request #6294 from filecoin-project/raulk/refactor-gateway
gateway: spin off from cmd to package
2021-05-19 20:59:37 +02:00
Dirk McCormick 706fdcbb80 feat: increase data transfer timeouts 2021-05-19 12:56:07 -06:00
Łukasz Magiera 3a99f95f8e Merge pull request #6149 from filecoin-project/feat/markets-1.3
Update to markets 1.3
2021-05-19 20:51:33 +02:00
Łukasz Magiera 51139361c7 sealing: Handle full batches correctly 2021-05-19 20:34:50 +02:00
Łukasz Magiera e088c71b9a marketadapter: Handle batch sealing messages 2021-05-19 20:07:20 +02:00
Raúl Kripalani ac4f3ab684 remove duplicated vars. 2021-05-19 18:17:38 +01:00
Raúl Kripalani 2a70ff96bf move the gateway test to itests package. 2021-05-19 17:34:48 +01:00
Raúl Kripalani 6f4349064a fix bad rename. 2021-05-19 17:30:43 +01:00
Raúl Kripalani 5d34c8b7da wip move MineUntilBlock under BlockMiner; other simplifications. 2021-05-19 17:30:43 +01:00
Raúl Kripalani 2a71c47397 simplify BlockMiner. 2021-05-19 17:30:43 +01:00
Raúl Kripalani 0cfef0fdbb wip extract test kit. 2021-05-19 17:30:43 +01:00
Raúl Kripalani 41d0818347 wip pull all integration tests under itests/ 2021-05-19 17:30:43 +01:00
Raúl Kripalani c46d4ae529 wip 2021-05-19 17:30:43 +01:00
Raúl Kripalani 625b18771d remove duplicated vars. 2021-05-19 17:30:06 +01:00
Aayush Rajasekaran 20a0d32e50 Merge pull request #6290 from filecoin-project/asr/power-state
Add a shed util to count 64 GiB miner stats
2021-05-19 11:37:30 -04:00
raulkanddirkmc 996feda1f7 typo.
Co-authored-by: dirkmc <dirkmdev@gmail.com>
2021-05-19 15:08:14 +01:00
Łukasz Magiera 2a1b359ede config: fmt 2021-05-19 15:20:34 +02:00
Łukasz Magiera a5677d1b7a ffiwrapper: Separate Prover interface 2021-05-19 15:20:23 +02:00
Łukasz Magiera eafaf6d236 Don't block on batching in node tests 2021-05-19 14:33:15 +02:00
Łukasz Magiera 2a0c0e379b Working default batching config 2021-05-19 14:32:41 +02:00
Raúl Kripalani 88c6642330 restructure gateway.
Move the gateway implementation to the `gateway` top-level
package. cmd/lotus-gateway now contains only the entrypoint.

This separation is important for the testing refactors.
2021-05-19 12:45:55 +01:00
Anton Evangelatov 1295c924e1 confirm that Miner struct satisfies sectorblocks.SectorBuilder 2021-05-19 13:22:00 +02:00
Anton Evangelatov 83e55dc09e move handleProvingSector to correct file - states_proving.go 2021-05-19 13:17:59 +02:00
Anton Evangelatov 55401116bb add UnpaddedByteIndex.Valid() 2021-05-19 13:16:29 +02:00
Anton Evangelatov e275b54f55 export PartialFile and OpenPartialFile 2021-05-19 13:14:16 +02:00
Anton Evangelatov 87ed228fd3 extract pushUrl and fix return type for worker RPC v0 2021-05-19 13:10:56 +02:00
Anton Evangelatov a989f60e27 add SectorAddPieceToAny and SectorUnsealPiece to StorageMiner iface; model moved to api package - PieceDealInfo, DealSchedule 2021-05-19 13:05:07 +02:00
Łukasz Magiera 081a2ed89a Merge pull request #6289 from filecoin-project/asr/codeowners
Delete CODEOWNERS
2021-05-19 11:43:00 +02:00
Aayush Rajasekaran fc7ea8dfa3 Useful tool 2021-05-18 21:13:12 -04:00
Aayush Rajasekaran 9837fe27d7 Delete CODEOWNERS 2021-05-18 19:14:15 -04:00
Łukasz Magiera 5112b9fe2b Lower default batch slack 2021-05-18 21:04:47 +02:00
Łukasz Magiera dd393b470f Fix aggregation inputs 2021-05-18 20:36:47 +02:00
Łukasz Magiera 0419c64a06 CLI for precommit batching 2021-05-18 20:35:35 +02:00
Łukasz Magiera e400bdf87a Order proofs before aggregation 2021-05-18 18:58:41 +02:00
Łukasz Magiera 9690bc882c Test to trigger batching logic 2021-05-18 18:41:42 +02:00
Łukasz Magiera 1946d2ffd4 Wire up Precommit Batching 2021-05-18 17:37:52 +02:00
Łukasz Magiera f66b9c5663 Maybe working precommit batching 2021-05-18 17:21:16 +02:00
Łukasz Magiera d92c5e1001 Missing precommit batcher 2021-05-18 16:54:55 +02:00
Łukasz Magiera 81b5d8c671 Make things build with both batchers 2021-05-18 16:53:49 +02:00
Łukasz Magiera c7ba083fa4 Import precommit batcher 2021-05-18 16:51:06 +02:00
Łukasz Magiera 56145201db Merge pull request #6282 from filecoin-project/feat/fip-0013-addenda
FIP 13 addenda: correctly handle commit batch timer
2021-05-18 16:23:23 +02:00
vyzo c544f4ce44 avoid extraneous rpc call for storage start epoch 2021-05-18 16:59:11 +03:00
vyzo 7512748b56 wire in sealing config values 2021-05-18 15:31:52 +03:00
vyzo 6b3e04b9b1 cache sector deadlines. 2021-05-18 15:28:51 +03:00
vyzo 74bad49068 correctly handle commit batch timer 2021-05-18 14:30:47 +03:00
Łukasz Magiera fe9311e435 update ffi 2021-05-18 13:24:10 +02:00
Łukasz Magiera e56960f245 Merge pull request #6281 from filecoin-project/feat/fip-0013-addenda
FIP 0013 addenda
2021-05-18 12:45:40 +02:00
vyzo 357c0868b7 proper config for termination batching and commit wait 2021-05-18 12:20:19 +03:00
vyzo febf7cf28f sane config defaults 2021-05-18 12:02:53 +03:00
Jennifer d3ad897fe9 Merge pull request #6275 from filecoin-project/releases
Merge v1.9.0 to master
2021-05-17 20:01:01 -04:00
Jennifer Wang 6e57c819e0 bump the master version to v1.11.0-dev 2021-05-17 17:41:11 -04:00
Jennifer Wang 9954577389 Merge branch 'master' into releases 2021-05-17 17:24:29 -04:00
Jennifer Wang ada7f97ba8 docsgen 2021-05-17 16:51:55 -04:00
Łukasz Magiera ba2032c642 Fix some aggregation bugs 2021-05-17 22:51:29 +02:00
Jennifer Wang 5af3af5a22 Merge branch 'release/v1.9.0' into releases 2021-05-17 16:16:34 -04:00
Łukasz Magiera 2afe725933 Get PreCommitting to work 2021-05-17 22:02:23 +02:00
Jennifer 3ac3396125 Merge pull request #6271 from filecoin-project/feat/v1.9.0-final
v1.9.0 release
2021-05-17 15:48:02 -04:00
Jennifer 987b9888d5 Merge pull request #6272 from filecoin-project/feat/proof-v7.0.1
Backport 6200 to master
2021-05-17 15:45:58 -04:00
Łukasz Magiera 578bef4f83 Update gen 2021-05-17 20:56:28 +02:00
Łukasz Magiera 6278bdc69a Make things build 2021-05-17 20:47:41 +02:00
Jennifer Wang 1cade911f6 docsgen 2021-05-17 14:08:36 -04:00
Łukasz Magiera 8f42f375cf Update ffi 2021-05-17 19:55:44 +02:00
Jennifer Wang 96c3401231 bump the version to v1.9.0 2021-05-17 13:55:05 -04:00
Łukasz Magiera 71bd005594 wip 2021-05-17 13:31:43 -04:00
Aayush Rajasekaran 5f8c80533a Update to latest actors and FFI 2021-05-17 13:15:07 -04:00
Aayush Rajasekaran 9a6e601754 Merge pull request #5961 from filecoin-project/feat/stateless-offline-dealflow
Introduce stateless offline dealflow, bypassing the FSM/deallists
2021-05-17 12:35:39 -04:00
Łukasz Magiera 867c52b8ed Merge pull request #6231 from filecoin-project/chore/update-libp2p
chore: update go-libp2p
2021-05-17 18:20:22 +02:00
Łukasz Magiera 6db2faea2c Merge pull request #6246 from filecoin-project/fix/6244
fix: wait-api should use GetAPI to acquire binary specific API
2021-05-17 17:41:59 +02:00
Raúl Kripalani 50360e68ae rename {changeHandlerAPI=>wdPoStCommands} + add docs. 2021-05-15 15:07:02 +01:00
Raúl Kripalani c77f8fb382 adopt clearer method names; fix typo. 2021-05-15 15:07:02 +01:00
Jennifer 72fc16e8a7 Update RELEASE_ISSUE_TEMPLATE.md 2021-05-14 23:18:04 -04:00
Jennifer d434a62cd4 Merge pull request #6261 from filecoin-project/fix/ci-build
Bring 6256 to release branch and bump the version
2021-05-14 22:35:34 -04:00
Jennifer 5611770639 Merge pull request #6256 from filecoin-project/mg/fix/ci-publish
fix(ci): Updates to lotus CI build process
2021-05-14 22:29:19 -04:00
Jennifer Wang a4b1dd0f88 docsgen 2021-05-14 22:26:11 -04:00
Jennifer Wang 7b95649cab bump the version to v1.9.0-rc5 2021-05-14 22:22:30 -04:00
Mike Greenberg 6c8c732104 fix(ci): Use recent ubuntu LTS release; Update release params 2021-05-14 22:21:16 -04:00
Mike Greenberg eccdff459e fix(ci): Conditional announcement and prerelease on RC tag 2021-05-14 19:16:31 -04:00
Raúl Kripalani 9912212949 minor refactor to anonymize interface. 2021-05-14 20:08:22 +01:00
Raúl Kripalani 28efa9357c rename {setSender=>prepareMessage}. 2021-05-14 19:49:05 +01:00
Raúl Kripalani 0f4270126f rename {submitPost=>submitPoStMessage}. 2021-05-14 19:48:38 +01:00
Raúl Kripalani 89dfb0ba19 minor refactor, renames, docs in Miner#Run. 2021-05-14 19:47:50 +01:00
Raúl Kripalani 0187aa6d9c imports reorder. 2021-05-14 19:46:46 +01:00
Raúl Kripalani 2d7f4b1c61 docs: add godocs to storage module. 2021-05-14 19:45:47 +01:00
Mike Greenberg 314be51e1b fix(ci): Use recent ubuntu LTS release; Update release params 2021-05-14 14:15:08 -04:00
Aayush Rajasekaran 9ffd4ada29 Merge pull request #6247 from filecoin-project/feat/gateway-lookback-flags
add flags to control gateway lookback parameters
2021-05-14 11:18:01 -04:00
Jennifer 56c201348a Merge pull request #6249 from filecoin-project/jen/backport-to-rc
Upgrade nerpa to actor v4 and bump the version to rc4
2021-05-13 18:28:13 -04:00
Jennifer Wang 2191517786 update change log 2021-05-13 18:09:31 -04:00
Jennifer Wang 3535c2dba8 docsgen 2021-05-13 18:02:54 -04:00
Jennifer Wang 1c4ddcd409 Pull the nerpa upgrade pr and update the version to rc4 2021-05-13 17:48:55 -04:00
Jennifer Wang efb078947a Upgrade nerpa to actor v4 around May 27th 1600 ET 2021-05-13 17:48:03 -04:00
Jennifer b8eb2bec12 Merge pull request #6248 from filecoin-project/feat/nerpa-v4
Feat/nerpa v4
2021-05-13 17:47:51 -04:00
Jennifer 4c0ece20cc Merge pull request #6245 from filecoin-project/asr/cherry-pick-rcs
chore(ci): Enable build on RC tags
2021-05-13 16:09:44 -04:00
Jennifer Wang 3910d7cb4a Upgrade nerpa to actor v4 around May 27th 1600 ET 2021-05-13 16:04:38 -04:00
whyrusleeping b4b38788ef add flags to control gateway lookback parameters 2021-05-13 11:00:42 -07:00
Jakub Sztandera 624f5969b3 fix: wait-api should use GetAPI to acquire binary specific API
Fixes #6244

Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-05-13 19:58:15 +02:00
Mike Greenberg 1f651b84ce chore(ci): Enable build on RC tags 2021-05-13 12:36:54 -04:00
Aayush Rajasekaran 7ce1312fc2 Merge pull request #6238 from filecoin-project/mg/chore/enable-build-on-rc-tags
chore(ci): Enable build on RC tags
2021-05-13 12:00:11 -04:00
Raúl Kripalani c7d50fe195 rename {storageMinerApi=>fullNodeFilteredAPI}; add docs. 2021-05-13 14:36:16 +01:00
Raúl Kripalani 1d6941b0eb rename storage/{sealing=>miner_sealing}.go 2021-05-13 14:33:35 +01:00
Raúl Kripalani 5daacc0f07 docs: add docs to chain store methods. 2021-05-13 13:08:52 +01:00
Raúl Kripalani df7631df77 docs: rename some wdpost methods; add docs. 2021-05-13 13:07:42 +01:00
Mike Greenberg 9fb4bea9ab chore(ci): Enable build on RC tags 2021-05-12 14:31:34 -04:00
Steve Loeppky 60dca635f4 Update RELEASE_ISSUE_TEMPLATE.md
Update RELEASE_ISSUE_TEMPLATE.md to account for binaries and improving along the way.
2021-05-12 09:55:52 -07:00
Aayush Rajasekaran 8d86dec653 Merge pull request #5913 from chadwick2143/lotus-shed-actor
Transplant some useful commands to lotus-shed actor
2021-05-12 07:22:06 -04:00
chenliang 3b7a5c70c3 Merge branch 'master' into lotus-shed-actor 2021-05-12 11:03:49 +08:00
Łukasz Magiera 506f39b294 WIP: Integrate FIP0013 2021-05-11 22:10:29 -04:00
Anton Evangelatov eb13c74dce panic on unknown pathType 2021-05-11 18:14:01 +02:00
Anton Evangelatov e07438417c consider storiface.PathStorage when calculating storage requirements 2021-05-11 13:19:26 +02:00
Peter Rabbitson d54ed1b0c6 Merge remote-tracking branch 'origin/master' into feat/stateless-offline-dealflow 2021-05-11 04:54:22 +02:00
Peter Rabbitson 0019187a4f Forgotten pre-API zero-price check 2021-05-11 04:44:07 +02:00
Steven Allen f7fbaef361 chore: update go-libp2p
From 0.12.0 to 0.14.0.

Headline for lotus: faster yamux.
2021-05-10 19:41:57 -07:00
Peter Rabbitson 6f71eab8ce Adjust lp2p retry params 2021-05-11 04:26:04 +02:00
Aayush Rajasekaran b19d6cde11 Merge pull request #6195 from filecoin-project/asr/v5-skeleton
Introduce v5 actors
2021-05-10 20:15:00 -04:00
Aayush Rajasekaran bf10b051ff Merge pull request #6108 from filecoin-project/feat/actors-codegen
wip actor wrapper codegen
2021-05-10 20:12:57 -04:00
Aayush Rajasekaran 8465a97c4b Merge pull request #5822 from filecoin-project/epic/robust-message-management
Robust message management
2021-05-10 19:58:33 -04:00
Aayush Rajasekaran 5f821cc733 Generate builtin.go 2021-05-10 19:53:07 -04:00
Aayush Rajasekaran c95206cde1 Add reminder for NewestNetworkVersion to actors version checklist 2021-05-10 19:46:44 -04:00
Aayush Rajasekaran 60446b46c8 Generate policy.go 2021-05-10 19:46:44 -04:00
Łukasz Magiera cd2b959a88 wip partial codegen 2021-05-10 19:46:44 -04:00
Łukasz Magiera a80259d986 Actor upgrade checklist 2021-05-10 19:46:44 -04:00
Łukasz Magiera 94d3c8bed7 fix lint 2021-05-10 19:46:44 -04:00
Łukasz Magiera c6cebb448f Cleanup actor adapter templates 2021-05-10 19:46:44 -04:00
Łukasz Magiera 715b3dccec Fix error message 2021-05-10 19:46:44 -04:00
Łukasz Magiera 1a84bd5842 chain actors: codegen templates for all actors 2021-05-10 19:46:44 -04:00
Łukasz Magiera 0db070779f wip actor wrapper codegen 2021-05-10 19:46:44 -04:00
Aayush Rajasekaran 9977cb2604 Merge pull request #6169 from filecoin-project/asr/shed-minertypes
Add a shed util to count miners by post type
2021-05-10 19:45:52 -04:00
Aayush Rajasekaran b5da2655dc Introduce v5 actors 2021-05-10 19:44:28 -04:00
Łukasz Magiera 63189cd81d Generate wrappers for new actor versions 2021-05-09 21:04:50 -04:00
Aayush Rajasekaran e5587119fe Merge pull request #5826 from filecoin-project/asr/release-template
Introduce a release issue template
2021-05-07 13:09:35 -04:00
Jennifer 1e1e0cc93e Merge pull request #6210 from filecoin-project/fix/version
Bump the version to v1.9.0-rc3
2021-05-07 11:19:43 -04:00
Jakub Sztandera 18cbdcfc81 Disable checks API on Lotus Lite
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-05-07 17:19:17 +02:00
Jennifer Wang 0398e556d4 Bump the version 2021-05-07 11:09:06 -04:00
Jakub Sztandera d777680449 Fix mpool.GetActor for lite node
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-05-07 15:30:06 +02:00
Jakub Sztandera 61dbd443b8 Fix tests and verifreg
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-05-07 15:30:05 +02:00
Jakub Sztandera cbfb4770fd Add function to display nanoFIL
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-05-07 15:30:05 +02:00
Jakub Sztandera 5f638b4193 Print more details on test fail
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-05-07 15:30:05 +02:00
Jakub Sztandera 8d75da1629 Use MessagePrototype for check API
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-05-07 15:30:05 +02:00
Jakub Sztandera 3d8f641310 Plug in InteractiveSend to all adopted commands
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-05-07 15:30:05 +02:00
Jakub Sztandera 7535c5bb53 Add mpool manage command
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-05-07 15:30:05 +02:00
Jakub Sztandera 87df73a455 Fix get nonce check
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-05-07 15:30:05 +02:00
vyzo e2d0047a2a introduce message prototypes
This introduces message prototypes to applicable API endpoints, which
allows us to invert control of message sending and give the user a
chance to intervene with an interactive ui.

Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-05-07 15:30:05 +02:00
Jakub Sztandera 86e90dc6f1 Message sending UI
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-05-07 15:30:04 +02:00
vyzo d782250aba implement MessagePool.CheckReplaceMessages
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-05-07 15:30:04 +02:00
vyzo 91e774063e implement MessagePool.CheckMessages
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-05-07 15:30:04 +02:00
vyzo ed61642b3a implement NodeStatus API
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-05-07 15:30:04 +02:00
Jennifer e3948c851f Update documentation/misc/RELEASE_ISSUE_TEMPLATE.md 2021-05-07 00:09:11 -04:00
Jennifer fac9994c02 Update documentation/misc/RELEASE_ISSUE_TEMPLATE.md 2021-05-07 00:08:23 -04:00
Jennifer 25b4ffd09b Update documentation/misc/RELEASE_ISSUE_TEMPLATE.md 2021-05-07 00:06:46 -04:00
Jennifer 16a9baa3bb Merge pull request #6200 from filecoin-project/feat/proofv7.0.1
Update to proof v7.0.1
2021-05-06 21:46:06 -04:00
Cory Schwartz 838369229c downgrade to core18 2021-05-06 16:28:27 -07:00
Cory Schwartz 026cd103c2 add snapcraft 2021-05-06 15:36:11 -07:00
Jennifer Wang b1d046ce16 Update to proof v7.0.1 2021-05-06 17:31:15 -04:00
ZenGround0 d7cd8bae2c Merge pull request #6178 from filecoin-project/shed/count-crons-rebased
cron-wc
2021-05-06 11:08:57 -04:00
Aayush Rajasekaran 00ee0b1bbb Merge pull request #6196 from filecoin-project/feat/fwdport_more_logs_PR6183
This is a 1:1 forward-port of PR#6183 from 1.9.x to master
2021-05-06 10:55:57 -04:00
ZenGround0 5351db9da7 Lint 2021-05-06 10:17:25 -04:00
Peter Rabbitson e648b72d8d Merge remote-tracking branch 'origin/master' into feat/stateless-offline-dealflow 2021-05-06 15:57:10 +02:00
ZenGround0 e1185dd5b5 cron-wc 2021-05-06 09:53:29 -04:00
Dirk McCormick 312ad4abdc feat: update to markets v1.3.0 2021-05-06 10:58:23 +02:00
Peter Rabbitson de60229957 mining lookback is effectively a constant - make it so 2021-05-06 10:18:08 +02:00
Peter Rabbitson b1db3fee78 Log more ComputeVRF() inputs as per Why's request 2021-05-06 10:18:08 +02:00
Peter Rabbitson 72134ff458 Add a mining-heartbeat INFO line at every epoch 2021-05-06 10:18:08 +02:00
Dirk McCormick c17a340f2e feat: deals end to end test with restarts 2021-05-06 09:49:44 +02:00
Dirk McCormick 5b1fab8ffa feat: markets v1.3 2021-05-06 09:49:44 +02:00
Jennifer 19da73d56f Merge pull request #6183 from filecoin-project/feat/more_mining_log
Add a mining-heartbeat INFO line at every epoch
2021-05-05 19:59:20 -04:00
Peter Rabbitson 26841aa094 mining lookback is effectively a constant - make it so 2021-05-05 23:23:01 +02:00
Peter Rabbitson 3b0fc01e82 Log more ComputeVRF() inputs as per Why's request 2021-05-05 23:23:01 +02:00
Peter Rabbitson 14f6d170b2 Add a mining-heartbeat INFO line at every epoch 2021-05-05 23:23:01 +02:00
Jennifer b14c467fb4 Update documentation/misc/RELEASE_ISSUE_TEMPLATE.md 2021-05-05 14:28:48 -04:00
Jennifer d190b3a8a6 Merge pull request #6188 from filecoin-project/feat/gpu-enabled-proofs
Update to new proofs with gpu support enabled in release binaries
2021-05-05 13:55:56 -04:00
Travis Person 323bb02ca5 Update to new proofs with gpu support enabled in release binaries 2021-05-04 20:31:26 +00:00
Aayush Rajasekaran f6360c34dd Add verifreg utils to CLI 2021-05-03 22:16:12 -04:00
Aayush Rajasekaran c074031fa1 Merge pull request #6167 from filecoin-project/asr/state-tree-version
Allow creation of state tree v3s
2021-05-03 19:16:44 -04:00
Aayush Rajasekaran 2a90de30bd Merge pull request #6164 from filecoin-project/fix/drand-cache
drand: fix beacon cache
2021-05-01 12:21:38 -04:00
Aayush Rajasekaran edc6a63e93 Add a shed util to count miners by post type 2021-05-01 00:24:14 -04:00
Aayush Rajasekaran 4193235b59 Allow creation of state tree v3s 2021-04-30 22:41:02 -04:00
Aayush Rajasekaran ba63b93026 Fix 1.9.0-rc2 date 2021-04-30 14:34:03 -04:00
Aayush Rajasekaran 84251b668a Merge pull request #6160 from filecoin-project/asr/changelog
Lotus version 1.9.0-rc2
2021-04-30 14:32:01 -04:00
Aayush Rajasekaran 8227085c37 Lotus version 1.9.0-rc2 2021-04-30 14:06:10 -04:00
Łukasz Magiera 0d253c3e64 Merge pull request #6155 from filecoin-project/fix/cligen
Update cli gen
2021-04-30 18:04:10 +02:00
Łukasz Magiera 5cc94dcdf9 Merge pull request #6148 from filecoin-project/feat/mpool-nv12-clean
mpool: Cleanup pre-nv12 selection logic
2021-04-30 18:01:02 +02:00
Łukasz Magiera cad781c8ee Update cli gen 2021-04-30 17:59:01 +02:00
Łukasz Magiera dc475c2720 Merge pull request #6150 from filecoin-project/feat/proofs-v7
Update ffi to proofs v7
2021-04-30 17:57:55 +02:00
Łukasz Magiera 15b8978805 Merge pull request #6151 from filecoin-project/release/v1.9.0-proofs-v7
Update ffi to proofs v7 (release v1.9.0)
2021-04-30 17:57:49 +02:00
Łukasz Magiera 7c37618b50 Update ffi to proofs v7 2021-04-30 14:30:12 +02:00
Łukasz Magiera 19ced50d81 Update ffi to proofs v7 2021-04-30 14:28:36 +02:00
Łukasz Magiera e855b80b01 Merge pull request #6145 from filecoin-project/feat/cli-doc-gen
Generate CLI docs
2021-04-30 12:44:05 +02:00
Łukasz Magiera 3574ec3d9d cli docsgen: Ignore build type too 2021-04-30 11:18:15 +02:00
Łukasz Magiera 04c71b2c6b mpool: Cleanup pre-nv12 selection logic 2021-04-30 10:10:42 +02:00
Łukasz Magiera ab811e2e19 drand: fix beacon cache 2021-04-30 09:35:38 +02:00
Steven Allen eb10918470 Merge pull request #6107 from filecoin-project/feat/checkpoint-sync
feat: allow checkpointing to forks
2021-04-29 16:30:52 -07:00
Łukasz Magiera 4db800473f Merge pull request #5988 from filecoin-project/feat/proper-padding
attempt to do better padding on pieces being written into sectors
2021-04-29 21:14:32 +02:00
Łukasz Magiera 462a44902e Merge pull request #5968 from filcloud/ping-ask
remove duplicate ask and calculate ping before lock
2021-04-29 21:12:37 +02:00
Łukasz Magiera a55168aa86 Merge pull request #5307 from filecoin-project/asr/deal-dues
Add a command to get the fees of a deal
2021-04-29 20:43:47 +02:00
Łukasz Magiera ed08366cac Run cli docsgen in CI 2021-04-29 20:01:23 +02:00
whyrusleeping 7e4d906f06 update commp utils import 2021-04-29 10:59:28 -07:00
Łukasz Magiera 483478d511 Generate cli docs 2021-04-29 19:45:01 +02:00
Łukasz Magiera 51ca7aa79a scripts: Some improvements to cli gen script 2021-04-29 19:44:39 +02:00
Aayush Rajasekaran e6779b0b6f Add a command to get the fees of a deal 2021-04-29 13:29:17 -04:00
whyrusleeping a590fb6a12 mod tidy for the magik 2021-04-29 10:28:33 -07:00
whyrusleeping ac77c51d5e address nit 2021-04-29 10:24:16 -07:00
Łukasz Magiera 12867a567b Merge branch 'master' of github.com:MitchellSoo/lotus into feat/cli-doc-gen 2021-04-29 19:23:33 +02:00
Łukasz Magiera 9b87566dbf Merge pull request #6141 from filecoin-project/split-TestBatchDealInput-from-TestAPIDealFlow
flaky tests improvement: separate TestBatchDealInput from TestAPIDealFlow
2021-04-29 19:01:35 +02:00
Łukasz Magiera 84d7565cee Merge pull request #5887 from filecoin-project/feat/gh-action-testground-prs
Testground checks on push
2021-04-29 19:00:21 +02:00
Łukasz Magiera dd2b44351c Drop graphsync testplan from CI 2021-04-29 18:50:13 +02:00
Łukasz Magiera c548bb3c4c Merge pull request #6132 from filecoin-project/asr/state-miner-cli
Add a CLI tool for miner proving deadline
2021-04-29 18:37:16 +02:00
Steven Allen f983fa8cd5 Merge pull request #6134 from filecoin-project/asr/emptytsk
Use EmptyTSK where appropriate
2021-04-29 09:35:43 -07:00
Łukasz Magiera 002eb4e812 Merge pull request #6142 from filecoin-project/fix/tipset-cli
fix: use a consistent tipset in commands
2021-04-29 18:35:17 +02:00
Cory Schwartz 05dbe5cbbe checks on push 2021-04-29 18:32:21 +02:00
Łukasz Magiera 492b026031 Merge pull request #6124 from filecoin-project/testplans-go-mod
go mod tidy for lotus-soup testplans
2021-04-29 18:31:32 +02:00
Łukasz Magiera f036abdff7 Merge pull request #6126 from filecoin-project/reduce-miners-pay-channel-tests
fix testground payment channel tests: use 1 miner
2021-04-29 18:30:41 +02:00
Łukasz Magiera 8929f767ff Merge pull request #6143 from filecoin-project/fix/list-actors-parent-state
fix: use the parent state when listing actors
2021-04-29 18:18:18 +02:00
Steven Allen 2857f6c0ed fix: use a consistent tipset in commands
It's very easy to write an incorrect command that operates over
different heads by using the "empty" tipset. This change makes the
`LoadTipSet` command helper get the latest head from the lotus daemon if
its unset.

The cost is an extra call to get the head. That should be trivial in
most cases.
2021-04-29 08:50:08 -07:00
Anton Evangelatov c7d74ef16e separate TestBatchDealInput from TestAPIDealFlow 2021-04-29 17:39:00 +02:00
Steven Allen 4867425685 fix: use the parent state when listing actors
To be consistent with other commands.
2021-04-28 23:35:27 -07:00
Łukasz Magiera a456f394ac Merge pull request #6007 from filecoin-project/asr/state-list-messages
Speed up StateListMessages in some cases
2021-04-29 07:47:26 +02:00
Łukasz Magiera 4b04cac219 Merge pull request #4938 from filecoin-project/asr/total-power
Return total power when GetPowerRaw doesn't find miner claim
2021-04-29 07:45:43 +02:00
Steven Allen 83ec2b53ee Merge pull request #6133 from filecoin-project/fix/head-change-panic-splitstore
fix(splitstore): fix a panic on revert-only head changes
2021-04-28 22:25:28 -07:00
Steven AllenandAayush Rajasekaran f353a794cb fix: spelling
Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
2021-04-28 22:08:37 -07:00
Aayush Rajasekaran d794b49df3 Use EmptyTSK where appropriate 2021-04-29 01:00:03 -04:00
Steven Allen 63db9e1633 fix(splitstore): fix a panic on revert-only head changes
Calling, e.g., `lotus chain sethead` on an ancestor tipset won't apply
any new blocks, it'll just revert a bunch. This will lead to HeadChange
calls with no new blocks to apply.

fixes #6125
2021-04-28 20:35:30 -07:00
Steven Allen b23837a7d6 Merge pull request #5847 from filecoin-project/steb/audit-dups
shed: command to list duplicate messages in tipsets (steb)
2021-04-28 18:31:01 -07:00
Steven Allen bcfad6b2bb fix(lotus-shed): sanity check start height for dup check 2021-04-28 17:51:25 -07:00
Steven Allen 701682c98a feat(lotus-shed): make it possible to filter by to/from when checking dups 2021-04-28 17:43:07 -07:00
Aayush Rajasekaran 895e968ff9 Add a CLI tool for miner proving deadline 2021-04-28 20:27:16 -04:00
lotus 77eefcd6d8 feat(lotus-shed): improve duplicate-messages audit command
- Allow a start/end epoch.
- Print one line per duplicate set.
- Allow filtering duplicate messages by method number.
- Make the number of threads configurable.
2021-04-28 17:03:37 -07:00
Łukasz Magiera c8fcab5d22 shed: Command to list duplicate messages in tipsets 2021-04-28 16:23:35 -07:00
Steven Allen 8f309b214b chain: move checkpoint logic into chainstore
That way, checkpoints can be enforced by the chainstore, removing a
potential race where an in-progress sync of a fork could bypass a sync
checkpoint.
2021-04-28 15:06:29 -07:00
Steven Allen 0ad51f8a14 test(sync): fix tipset check and re-enable checkpoint tests
We need to wait until the node _has_ the tipset, not until it doesn't.

This probably only worked before due to race conditions.

fixes #4716 (probably)
2021-04-28 15:06:29 -07:00
Steven Allen 69da6a2a29 feat: allow checkpointing to forks
Previously, `lotus sync checkpoint` would only checkpoint on the current
chain. Now, it can switch to a new fork.
2021-04-28 13:54:26 -07:00
Anton Evangelatov 5769a45380 use 1 miner for payment channel tests 2021-04-28 16:58:03 +02:00
Anton Evangelatov bc8d6a1d87 go mod tidy for lotus-soup testplans 2021-04-28 14:36:20 +02:00
Łukasz Magiera 4688da5178 Merge pull request #6122 from filecoin-project/fix-lotus-soup-3-1-deals-end-to-end
upgrade `lotus-soup` testplans and reduce deals concurrency to a single miner
2021-04-28 14:24:47 +02:00
Anton Evangelatov 0304bebf20 remove deals concurrency 2021-04-28 13:38:18 +02:00
whyrusleeping 48feb52cbf add a test for adding padded pieces 2021-04-27 16:28:25 -07:00
whyrusleeping 6daaf6ac2e attempt to do better padding on pieces being written into sectors 2021-04-27 11:39:06 -07:00
Anton Evangelatov a9e4a0d22b upgrade docker images 2021-04-27 16:28:57 +02:00
Łukasz Magiera 95e0c3df1d 1.9.0-rc1 2021-04-27 10:30:51 +02:00
Łukasz Magiera a24a73bb52 Merge tag 'v1.8.0' into release/v1.9.0 2021-04-27 10:30:33 +02:00
Łukasz Magiera 7e25a811c3 Merge pull request #6118 from filecoin-project/releases
Merge releases (1.8.0) into master
2021-04-27 10:15:17 +02:00
Aayush Rajasekaran b79861c1ad Merge branch 'master' into releases 2021-04-27 04:14:36 -04:00
Łukasz Magiera dc75ad315f Merge pull request #6117 from filecoin-project/feat/nv12-1.11
Actors v4
2021-04-27 08:47:07 +02:00
Łukasz Magiera 1a980bf971 bump version 2021-04-27 08:39:05 +02:00
Łukasz Magiera c4137a438d Merge commit 'f1ded63d608e1b191d79c780b8065f8cff367c98' into feat/nv12-1.11 2021-04-27 08:22:55 +02:00
Łukasz Magiera 86d9372b30 Merge pull request #6114 from filecoin-project/docs/api-makegen
api: Document API change process
2021-04-26 21:05:35 +02:00
Łukasz Magiera bfa332ca7d api: Document API change process 2021-04-26 20:36:20 +02:00
Łukasz Magiera c88eeaaf02 Merge pull request #6112 from filecoin-project/ux/inspect-deal-estimates
add "expected duration" label to inspect-deals output
2021-04-26 20:08:33 +02:00
Yusef Napora 66e8517769 add "expected duration" label to inspect-deals output 2021-04-26 13:02:29 -04:00
Łukasz Magiera abc88828f6 Merge pull request #6110 from filecoin-project/misc/update-codeowners
Update CODEOWNERS
2021-04-26 18:58:21 +02:00
Łukasz Magiera 17e5d61b96 Update CODEOWNERS 2021-04-26 18:54:23 +02:00
Łukasz Magiera bd753938f5 Update CODEOWNERS 2021-04-26 18:45:55 +02:00
Łukasz Magiera 86d4f5f738 Merge pull request #6075 from filecoin-project/feat/gateway-walletbalance
implement WalletBalance on gateway
2021-04-23 16:00:54 +02:00
Łukasz Magiera 21de8b2bd3 Merge pull request #6092 from filecoin-project/asr/shed-util-sanity
Shed util to sanity-check total balance is FilBase
2021-04-23 16:00:13 +02:00
Łukasz Magiera ad3c588582 Merge pull request #6090 from filecoin-project/feat/rtvl-prov-unseal-logging
Add more debug logging for unsealing
2021-04-23 15:59:14 +02:00
Łukasz Magiera e5d8ae7a9a Merge pull request #6096 from Reskorey/master
fix full node painc
2021-04-23 12:08:30 +02:00
Reskorey 58bee65bcb go fmt 2021-04-23 16:10:51 +08:00
Reskorey 7738886936 fix full node painc
fix: full node painc  when calling  RPC  Filecoin.ClientRetrieve without the order.Tatol pecified.
2021-04-23 15:43:41 +08:00
Aayush Rajasekaran 448b5cb2a3 Shed util to sanity-check total balance is FilBase 2021-04-22 19:45:35 -04:00
Dirk McCormick 61344644a4 feat: add more debug logging for unsealing 2021-04-22 11:33:28 +02:00
Steven Allen 26d14a6262 fix: partially support v2+ go modules
This patch supports branch-based v2 modules, but not
directory-based (i.e., not vN modules with `vN/` directories).
2021-04-21 13:00:19 -07:00
Cory Schwartz fbd003a22b add walletbalance to v0api 2021-04-21 09:46:44 -07:00
Cory Schwartz 39e49f1700 implement WalletBalance on gateway 2021-04-20 21:55:47 -07:00
Łukasz Magiera ad0fdd5ec5 Merge pull request #6072 from filecoin-project/fix/gateway-api-getter
gateway: Fix api getter
2021-04-20 22:07:09 +02:00
Łukasz Magiera 508e2d5c49 gateway: Fix api getter 2021-04-20 18:42:12 +02:00
chadwick2143 2cb3c89570 Fix bugs in sectors extend --v1-sectors 2021-04-20 14:00:01 +08:00
Frank b9cd364535 update ping lock 2021-04-20 10:26:02 +08:00
Frank c915170b58 remove duplicate ask and calculate ping before lock 2021-04-20 10:20:30 +08:00
Łukasz Magiera 2e63690125 Merge pull request #6056 from filecoin-project/feat/vm-metrics
stmgr: Improve ApplyBlocks metrics
2021-04-18 17:07:16 +02:00
Łukasz Magiera c7a67cf0e1 Merge pull request #6059 from filecoin-project/frrist/expose-filReserveDisbursed
polish(api): expose filReserveDisbursed via CirculatingSupply API
2021-04-18 16:31:03 +02:00
Łukasz Magiera 03df99f2f5 make gen 2021-04-18 16:27:23 +02:00
Łukasz Magiera c72eb0ccaf Merge pull request #6048 from filecoin-project/fix/nonce-getting
Fix nonce getting on Lotus lite
2021-04-18 16:25:47 +02:00
Łukasz Magiera bb7801e6b7 fix lint 2021-04-18 16:17:31 +02:00
Łukasz Magiera bfecc35e65 Merge pull request #6051 from filecoin-project/test/bls-vectors
sigs: vector tests for bls
2021-04-18 16:14:44 +02:00
Łukasz Magiera 5e71bcedc2 Merge pull request #6052 from filecoin-project/fix/miner-v1api-check
Fix v0/v1 API versions
2021-04-17 21:58:38 +02:00
Łukasz Magiera 6762f562d6 Merge pull request #6060 from filecoin-project/chore/raise-default-client-maxfee
Raise client MaxFee default
2021-04-17 19:11:11 +02:00
Peter Rabbitson dab2a41792 Raise client MaxFee default
The original value is too conservative for the current state of mainnet
Resolves (temporarily) #5543
2021-04-17 00:35:40 +02:00
frrist c118415b12 polish(api): expose filReserveDisbursed via CirculatingSupply API
- motivated by: https://github.com/filecoin-project/sentinel-visor/issues/462
2021-04-16 15:15:38 -07:00
Jakub Sztandera 66c408938b Fix signature in messagepool, wire in context
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-04-16 18:43:28 +02:00
Łukasz Magiera f97784ad48 Merge pull request #6053 from kwuaint/patch-1
Remove the usless commented code
2021-04-16 17:09:21 +02:00
Łukasz Magiera 1b696aae5f stmgr: Fix VMApplyEarly metric 2021-04-16 14:57:59 +02:00
Kwuaint 0e6fe26975 Remove the usless commented code
Remove the usless commented code
2021-04-16 11:43:18 +08:00
Łukasz Magiera 4436c184ed Fix v0/v1 API versions 2021-04-16 00:20:13 +02:00
Łukasz Magiera 35cf83d519 Merge pull request #6047 from filecoin-project/feat/client-collat-bounds
Adjust client deal collateral overestimation to 1.2
2021-04-15 23:51:32 +02:00
Łukasz Magiera 6a775dfe6e Merge pull request #6050 from filecoin-project/flake/checkpoint
Disable flaky checkpoint tests
2021-04-15 23:26:59 +02:00
Łukasz Magiera e006310c6f sigs: vector tests for bls 2021-04-15 23:02:21 +02:00
Jakub Sztandera fd0eb2ec8f Disable flaky checkpoint tests
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-04-15 19:59:25 +02:00
Jakub Sztandera 77d004ec06 Fix nonce getting on Lotus lite
Resolves #5593 #5995

Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-04-15 19:57:09 +02:00
Łukasz Magiera 53537a0af2 stmgr: Improve ApplyBlocks metrics 2021-04-15 19:44:13 +02:00
Dirk McCormick 47145b6b82 fix: adjust client deal collateral overestimation to 1.2 2021-04-15 15:51:31 +02:00
chadwick2143 cba911ab5e Add actorControlList command 2021-04-14 16:37:59 +08:00
chadwick2143 8972152eb1 Set MaxFee for lotus-shed actor withdraw to 0.1FIL 2021-04-14 16:34:57 +08:00
Łukasz Magiera 50b4ea3083 Merge pull request #5685 from filecoin-project/feat/v1-api
V1 API staging branch
2021-04-13 15:44:01 +02:00
Łukasz Magiera cc55aba193 Docsgen 2021-04-13 14:25:03 +02:00
Łukasz Magiera e76935147f Merge remote-tracking branch 'origin/master' into feat/v1-api 2021-04-13 14:24:22 +02:00
Łukasz Magiera 9e600eac7e Merge pull request #6028 from filecoin-project/chore/bump-v1.8
Bump master version to 1.7.1-dev
2021-04-13 14:10:43 +02:00
Łukasz Magiera 578505427b Bump version to 1.7.1-dev 2021-04-13 13:32:26 +02:00
Łukasz Magiera 77f6d7c6b8 Merge pull request #6021 from jfcg/master
Create codeql-analysis.yml
2021-04-13 13:14:42 +02:00
Łukasz Magiera 7d8ee0d65a Lotus v1.7.0-rc1 2021-04-13 12:59:11 +02:00
Łukasz Magiera 34aa267100 Make mkreleaselog work a bit more 2021-04-13 12:20:30 +02:00
Łukasz Magiera 0bc94b554c Refer to scripts/mkreleaselog 2021-04-13 12:02:10 +02:00
Łukasz Magiera 8c27a6fdea Merge pull request #6024 from filecoin-project/asr/newest-network
Newest network version is now 11
2021-04-13 11:42:24 +02:00
Łukasz Magiera 335a2df062 Merge pull request #6006 from filecoin-project/asr/proofs-update
Update to latest proofs
2021-04-13 11:27:02 +02:00
Łukasz Magiera 8abd09e844 docsgen 2021-04-13 11:14:36 +02:00
Aayush Rajasekaran 732bccae59 Newest newtork version is now 11 2021-04-12 18:13:40 -04:00
Serhat Şevki Dinçer 8ce9412b2b rm schedule, python, js from codeql 2021-04-12 22:14:14 +03:00
Serhat Şevki Dinçer a9e8695e86 Create codeql-analysis.yml 2021-04-12 15:28:29 +03:00
Łukasz Magiera b54b1303f9 Merge pull request #5962 from filecoin-project/fix/storagefsm-allow-broken-global
storagefsm: Apply global events even in broken states
2021-04-11 22:30:56 +02:00
Łukasz Magiera 73bbd3d98a Merge pull request #6011 from yaohcn/fix-health-report
fix health report
2021-04-11 22:23:40 +02:00
Łukasz Magiera 3156bfd744 Merge pull request #5970 from filecoin-project/feat/v1api-msgwait-cleanup
V1 API: Support api changes, cleanup msg wait/search api
2021-04-11 12:12:21 +02:00
yaohcn 844d1d364d fix health report 2021-04-11 14:47:04 +08:00
Aayush Rajasekaran ff48a70ed9 Speed up StateListMessages in some cases 2021-04-10 02:33:34 -04:00
Aayush Rajasekaran c1e4eb3b20 Add a whitelisted block 2021-04-10 02:12:38 -04:00
Aayush Rajasekaran 470bd307c3 add a shed util to verify BLS signatures 2021-04-10 01:40:24 -04:00
Aayush Rajasekaran 738cc2555c Update FFI 2021-04-10 01:40:24 -04:00
Łukasz Magiera 1e6bba5388 Merge pull request #5943 from filcloud/4857-set-addrs
fix 4857: show help for set-addrs
2021-04-10 02:00:34 +02:00
Łukasz Magiera 88bdb591d5 Merge pull request #6003 from filecoin-project/fix/fbs-di
Fix fallback chainstore
2021-04-10 01:58:38 +02:00
Łukasz Magiera 8fc0aa0575 Merge pull request #5941 from filecoin-project/feat/markets-v1.2.5-rc1
Update to go-fil-markets-v1.2.5
2021-04-09 21:11:58 +02:00
Łukasz Magiera 9d4935a736 Merge pull request #5976 from filecoin-project/fix/storage-demote-stat-err
localstorage: Demote reservation stat error to debug
2021-04-09 21:08:08 +02:00
Łukasz Magiera 44fee61c62 Merge pull request #5999 from filecoin-project/asr/nits
Add description to the client deal CLI command
2021-04-09 19:03:34 +02:00
Łukasz Magiera 7e4cb9da84 Fix fallback chainstore 2021-04-09 16:11:02 +02:00
Aayush Rajasekaran 18d40e62f9 Add description to the client deal CLI command 2021-04-09 00:58:29 -04:00
Łukasz Magiera 8a19ddbb9f Merge pull request #5992 from FinnZhang/remove-CapGasFee-duplicate-code
remove messagepool CapGasFee duplicate code
2021-04-08 16:46:52 +02:00
Dirk McCormick 4a3261a986 feat: go-fil-markets-v1.2.5-rc1 2021-04-08 14:34:35 +02:00
FinnZhang 9805758e8a remove messagepool CapGasFee duplicate code 2021-04-08 17:50:19 +08:00
Aayush Rajasekaran b6949aa4ba Incorporate feedback into release issue template 2021-04-08 01:36:24 -04:00
Aayush RajasekaranandJennifer 536d267cbb Update documentation/misc/RELEASE_ISSUE_TEMPLATE.md
Co-authored-by: Jennifer <42981373+jennijuju@users.noreply.github.com>
2021-04-08 01:36:04 -04:00
Aayush RajasekaranandJennifer 55aebd199b Update documentation/misc/RELEASE_ISSUE_TEMPLATE.md
Co-authored-by: Jennifer <42981373+jennijuju@users.noreply.github.com>
2021-04-08 01:36:04 -04:00
Aayush Rajasekaran e6045bba85 Introduce a release issue template 2021-04-08 01:36:04 -04:00
FrankandŁukasz Magiera 2dbd597f82 Update cmd/lotus-storage-miner/actor.go
Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
2021-04-08 11:14:53 +08:00
Peter Rabbitson a40fb1e1dd Merge pull request #5974 from filecoin-project/chore/move_to_ipfs_log_v2
Centralize everything on ipfs/go-log/v2
2021-04-06 18:01:36 +02:00
zgfzgf 640d6fa474 optimize code 2021-04-06 22:40:05 +08:00
Łukasz Magiera bed5ec81bd localstorage: Demote reservation stat error to debug 2021-04-06 16:06:47 +02:00
Łukasz Magiera 9fb345af67 storagefsm: Test applying global events in broken state 2021-04-06 15:38:13 +02:00
Łukasz Magiera be85e561e1 Merge pull request #5972 from filecoin-project/chore/rm_cached_bs
CachedBlockstore is not referenced as of 3795cc2bd2
2021-04-06 15:31:54 +02:00
Łukasz Magiera 2eda5e8284 Merge pull request #5971 from filecoin-project/chore/switch_lock_to_rw
Convert the chainstore lock to RW
2021-04-06 15:27:20 +02:00
Peter Rabbitson 25a77d905d Centralize everything on ipfs/go-log/v2
I am not entirely sure this is right, but everything seems to build...
2021-04-06 15:04:32 +02:00
Łukasz Magiera cf96ad4fdb fix lint 2021-04-06 14:30:49 +02:00
Łukasz Magiera a5921a9bf9 fix lotus-soup build 2021-04-06 13:30:36 +02:00
Peter Rabbitson a5fd552a0c CachedBlockstore is not referenced as of 3795cc2bd2 2021-04-06 13:24:49 +02:00
Peter Rabbitson 7bced1532b Convert the chainstore lock to RW
High read-API concurrency facilitates multiple calls to GetHeaviestTipSet
which in turn could slow down chainsync.
2021-04-06 13:01:48 +02:00
Łukasz Magiera c3736f40fe gateway: use correct path in serveRpc 2021-04-06 12:29:11 +02:00
Łukasz Magiera e8f28d7b9f Fix tests 2021-04-06 12:24:58 +02:00
Łukasz Magiera 79194ccad1 Merge pull request #5967 from filecoin-project/asr/release-master
Merge releases into master
2021-04-06 12:21:42 +02:00
Frank 4403158680 add unset for set-addrs 2021-04-06 11:24:32 +08:00
Aayush Rajasekaran 37ca23d9e2 Merge branch 'releases' into asr/release-master 2021-04-05 17:29:19 -04:00
Łukasz Magiera eee50caaf1 Fix buildall 2021-04-05 20:12:47 +02:00
Łukasz Magiera 81bd27911f Propagate StateMsg api changes 2021-04-05 19:56:53 +02:00
Peter Rabbitson b8dff22a40 make gen 2021-04-05 19:15:32 +02:00
Łukasz Magiera 49f8b8df00 Merge pull request #5900 from filecoin-project/mg/chore/move-mpool-clear
chore: Move lotus mpool clear to lotus-shed
2021-04-05 18:43:57 +02:00
Łukasz Magiera f67bc0b0e7 Merge pull request #5930 from filecoin-project/feat/other-network-images
other network images
2021-04-05 18:28:57 +02:00
Łukasz Magiera 9a2ec07837 storagefsm: Apply global events even in broken states 2021-04-05 18:25:29 +02:00
Łukasz Magiera 0a8d20eb4e Merge pull request #5957 from filecoin-project/asr/nits
State CLI improvements
2021-04-05 18:09:01 +02:00
Peter Rabbitson b79be2a2c2 Merge remote-tracking branch 'origin/master' into feat/stateless-offline-dealflow 2021-04-05 16:06:44 +02:00
Łukasz Magiera d8bff4d19f Make gateway work with v1 api 2021-04-05 13:47:10 +02:00
Łukasz Magiera deb2b90b6a Fix lotus/miner build 2021-04-05 13:23:46 +02:00
Peter Rabbitson 7fddbb528d Introduce stateless offline dealflow, bypassing the FSM/deallists
This is aproposal for an additional flag --manual-stateless-deal and a
corresponding API endpoint ClientStatelessDeal. This allows firing off
an offline-style deal against a miner without keeping further track of
it locally.

Not keeping any local state introduces the limitation of requiring free
storage deals, as there is nothing to tie the payment channel setup to.

Rationale/need for this type of flow is the case of incredibly large
sets of data nd deals, where the client and providers have prearranged
payment ahead of time, and the client has a separate-from-lotus database
of deal inventory. This way the client can use their lotus node merely
as a network gateway, without running into any limitations currently
present in both lotus as a whole and go-fil-markets in particular.

Specific context for this work is filecoin-discover, where the requirement
is to onboard ~ 12,000,000 individual deals against a pool of miners
with whom the client has prearranged a relationship.
2021-04-05 13:11:10 +02:00
Aayush Rajasekaran ea46a67550 State CLI: Clarify sector helptext 2021-04-03 22:56:39 -04:00
Aayush Rajasekaran d9dcc7845f State CLI: fix printMsg to not panic when message isn't found 2021-04-03 22:55:02 -04:00
Łukasz Magiera f4e46c9003 implement v1 api with api modules 2021-04-03 13:20:50 +02:00
Łukasz Magiera 09c374cdde api stub codegen 2021-04-03 13:12:59 +02:00
Łukasz Magiera 1b32d7f52f cli: fix build with v1 api changes 2021-04-03 12:55:29 +02:00
zgfzgf ef08bd48b5 add election backtest 2021-04-03 11:52:30 +08:00
Łukasz Magiera 0103d2f621 v1 api: Cleanup message wait/search apis 2021-04-02 13:52:24 +02:00
Frank 0fe705605e fix 4857: show help for set-addrs 2021-04-02 19:25:36 +08:00
Łukasz Magiera 64bf5b382b cliutil: cast full api to the v0 interface 2021-04-02 13:20:31 +02:00
Łukasz Magiera c9866da688 Merge remote-tracking branch 'origin/master' into feat/v1-api 2021-04-02 13:15:33 +02:00
Łukasz Magiera 3cac23b4a7 cli: get raw full api correctly 2021-04-02 13:07:56 +02:00
Łukasz Magiera eede19fb0b Merge pull request #5917 from filecoin-project/feat/local-retrieval
Local retrieval support
2021-04-02 13:07:00 +02:00
Łukasz Magiera 0cfc76c078 Merge pull request #5891 from filecoin-project/feat/backupds-trunc-log-handling
backupds: Improve truncated log handling
2021-04-02 13:04:11 +02:00
Łukasz Magiera b68eed906a fix lint 2021-04-02 12:37:20 +02:00
Łukasz Magiera 4538550999 Merge remote-tracking branch 'origin/master' into feat/local-retrieval 2021-04-02 12:36:28 +02:00
Łukasz Magiera a26ac3b6dc Merge pull request #5937 from filecoin-project/fix/stg-fetch-close
fix: stores.FetchHandler: defer close file and increase buffer size
2021-04-02 12:35:11 +02:00
Cory Schwartz 3cab4856b1 Merge branch 'master' into feat/other-network-images 2021-04-01 11:22:59 -07:00
Cory Schwartz 38a3aaf936 answer yes to ufw 2021-04-01 11:20:11 -07:00
Łukasz Magiera cf4128fc78 Merge pull request #5092 from zgfzgf/feat-shed-election
add shed election estimate command
2021-04-01 17:05:09 +02:00
Łukasz Magiera f372964a60 fix lint 2021-04-01 16:40:11 +02:00
Łukasz Magiera c7de7882a1 Merge branch 'master' of github.com:ppiaas/lotus-ppiaas into fix/stg-fetch-close 2021-04-01 16:38:17 +02:00
Łukasz Magiera 49be1f3fb9 Merge pull request #5833 from filecoin-project/nonsense/cli-show-deals
add `inspect-deal` command to `lotus client`
2021-04-01 16:33:11 +02:00
Łukasz Magiera 28a8636f0b Merge pull request #5807 from filecoin-project/asr/remainder-acct-fix
Fix creation of remainder account when it's not a multisig
2021-04-01 16:31:19 +02:00
Anton Evangelatov df003d44d2 include Stages and DealStages only on ClientDealInfo, not on ClientListDeals 2021-04-01 17:08:01 +03:00
Łukasz Magiera 1a5c4d70f4 Merge remote-tracking branch 'origin/master' into feat/v1-api 2021-04-01 15:33:37 +02:00
Łukasz Magiera 02d1ad8bf3 Merge pull request #5934 from diwufeiwen/fix/ci_build_macos
fix ci build-macos
2021-04-01 14:58:37 +02:00
Łukasz Magiera ba49c6206e cli: Default to v0 api for now 2021-04-01 14:17:22 +02:00
Anton Evangelatov 686c719bb1 move inspectDeal to cli package 2021-04-01 15:07:25 +03:00
一页素书 d441c5c0a6 fix ci build-macos 2021-04-01 17:14:57 +08:00
Cory Schwartz b9ce5254a3 restore filters 2021-03-31 16:12:33 -07:00
Cory Schwartz 99d2b31551 separate different networks 2021-03-31 15:07:55 -07:00
Cory Schwartz 49ca9bef41 temporary: build-all without waiting 2021-03-31 14:56:12 -07:00
Cory Schwartz c17e8b1a03 network init scripts 2021-03-31 14:41:44 -07:00
Cory Schwartz de586237f4 add other networks to build list 2021-03-31 14:12:58 -07:00
Cory Schwartz ed47c3654b temporary: remove packer build filters 2021-03-31 14:10:55 -07:00
Cory Schwartz cbda4ff7bf other network images 2021-03-31 14:09:01 -07:00
Anton Evangelatov 1626dffd4c remove overwrite for go-data-transfer in testplans 2021-03-31 23:17:16 +03:00
Anton Evangelatov 03f4334d40 remove commented out code 2021-03-31 23:15:38 +03:00
Anton Evangelatov 967fbf52c6 resolve conflicts 2021-03-31 23:14:29 +03:00
Łukasz Magiera f10bb9e235 Merge pull request #5926 from yaohcn/fix-reserved
fix storage reservations
2021-03-31 20:40:36 +02:00
Łukasz Magiera 823c6600e3 docsgen 2021-03-31 19:38:34 +02:00
Łukasz Magiera dfe8a1c1e2 client: Set the client var in the correct scope 2021-03-31 19:38:02 +02:00
Łukasz Magiera 9adb30c560 Merge pull request #5871 from filecoin-project/nonsense/add-cancel-retrieval-deal-cmd
add `lotus client cancel-retrieval` cmd to lotus CLI
2021-03-31 19:20:03 +02:00
Łukasz Magiera ee04f9b71c Merge remote-tracking branch 'origin/master' into nonsense/add-cancel-retrieval-deal-cmd 2021-03-31 19:15:21 +02:00
Łukasz Magiera 10ac9039b4 Merge pull request #5853 from filecoin-project/feat/markets-v1.2.0
update to markets v1.2.x
2021-03-31 18:59:20 +02:00
yaohcn 3895b2ccca fix reservations 2021-03-31 14:30:24 +08:00
Łukasz Magiera f2ab316fb1 Local retrieval support 2021-03-30 21:32:06 +02:00
Anton Evangelatov adaf3a2753 remove found boolean and use a pointer 2021-03-30 17:12:49 +03:00
Anton Evangelatov b661f51976 better description for inspect-deal 2021-03-30 17:08:47 +03:00
Anton Evangelatov 5014b1712e rebuild docs with make docsgen 2021-03-30 16:16:17 +03:00
Anton Evangelatov 139ff4ae64 resolved conflicts 2021-03-30 16:15:42 +03:00
Anton Evangelatov e79927a77b use go-fil-markets v1.2.4 2021-03-30 15:32:44 +03:00
Łukasz Magiera f4a2c8fa49 Merge pull request #5908 from filecoin-project/asr/master-bump
Bump master to 1.7.0-dev
2021-03-30 11:05:41 +02:00
Aayush Rajasekaran ea2e668b57 Bump master to 1.7.0-dev 2021-03-29 19:45:14 -04:00
Łukasz Magiera a7122d424b Merge pull request #5527 from filcloud/handle-ticket-expire
fix precommit ticket expiration handling
2021-03-29 22:55:43 +02:00
Łukasz Magiera 7ed390311e Merge pull request #5884 from hunjixin/feat/remote_calc_winning_proof
remote calc winningpost proof
2021-03-29 22:49:04 +02:00
Łukasz Magiera bf6ee88539 Merge pull request #5270 from filcloud/deal-duration
use deal duration from actors
2021-03-29 20:17:34 +02:00
Mike Greenberg c800211fbb chore: Move lotus mpool clear to lotus-shed 2021-03-29 12:54:08 -04:00
Aayush Rajasekaran 823a75a669 Merge pull request #5892 from filecoin-project/feat/fast-deal-commp
Update go-commp-utils for >10x faster client commp calculation
2021-03-29 12:47:18 -04:00
Anton Evangelatov a43f4b33d9 upgrade go-data-transfer 2021-03-29 19:25:35 +03:00
Anton Evangelatov 82fb81a33d short circuit deals with no stages 2021-03-29 19:11:40 +03:00
Anton Evangelatov f7eff6c728 go mod tidy 2021-03-29 18:45:54 +03:00
Anton Evangelatov 77bc8d6ca3 remove storedCounters 2021-03-29 18:39:07 +03:00
Anton Evangelatov fd6d8b302a commit full.json.gz and miner.json.gz docs 2021-03-29 18:32:09 +03:00
Anton Evangelatov 14e6ce843e use latest go-fil-markets and go-data-transfer 2021-03-29 18:31:10 +03:00
Anton Evangelatov 8ba0bcb375 Merge branch 'master' into nonsense/cli-show-deals-backup 2021-03-29 18:19:28 +03:00
chadwick2143 4395f27143 Transplant some useful commands to lotus-shed actor
Transplant some useful commands from lotus-miner actor to lotus-shed actor,
so that you can excute them without miner api.
2021-03-29 12:27:08 +08:00
hunjixin 896303c6a2 fix lint 2021-03-29 10:31:31 +08:00
hunjixin 869e6a76c1 update make gen 2021-03-29 10:28:25 +08:00
Łukasz Magiera 2c18921bce update go-commp-utils for >10x faster client commp calculation 2021-03-27 10:12:45 +01:00
Łukasz Magiera 089ff08d81 Merge pull request #5881 from filecoin-project/fix/lint-skip
lint: don't skip builtin
2021-03-27 10:09:44 +01:00
Łukasz Magiera 411f561db6 backupds: Improve truncated log handling 2021-03-27 10:05:12 +01:00
Raúl Kripalani fd91c095c4 rename command to cancel-retrieval; rename args to follow Lotus style. 2021-03-26 16:37:46 +00:00
Dirk McCormick 47f7208f38 fix: rename command to retrieve-cancel 2021-03-26 10:19:19 +01:00
Dirk McCormick 85eab9e00e fix: make docsgen 2021-03-26 09:53:01 +01:00
Dirk McCormick b13f6a3209 fix: cancel retrieval deal - disallow negative deal ID 2021-03-26 09:51:07 +01:00
hunjixin 449b33abee remote calc winningpost proof 2021-03-26 13:32:03 +08:00
aarshkshah1992 36c3086376 changes as per review 2021-03-26 09:48:50 +05:30
Steven Allen f5029a0187 lint: don't skip builtin 2021-03-25 17:21:56 -07:00
Łukasz Magiera 885ecb97ad Merge pull request #5879 from filecoin-project/feat/paychtest-secp
Import secp sigs in paych tests
2021-03-25 19:10:22 +01:00
Łukasz Magiera 1e10429326 api: Add basic package readme 2021-03-25 18:00:29 +01:00
Łukasz Magiera e003977559 apiclient: Version client funcs 2021-03-25 15:39:48 +01:00
Łukasz Magiera 9223a8e5ff Fix lotus-soup build 2021-03-25 15:29:20 +01:00
Łukasz Magiera 736c69784a make: Fix parallel gen 2021-03-25 15:21:57 +01:00
Łukasz Magiera c25190bd8c api: struct.go -> proxy_gen.go 2021-03-25 15:11:37 +01:00
Łukasz Magiera 7a23b411ae Merge apistruct with the api package 2021-03-25 15:10:08 +01:00
Dirk McCormick 0134099315 feat: markets v1.2.3 2021-03-25 15:07:42 +01:00
Łukasz Magiera 759ea5b14f Merge remote-tracking branch 'origin/master' into feat/v1-api 2021-03-25 14:13:21 +01:00
Łukasz Magiera 6d9ae1e28e Merge pull request #5819 from chadwick2143/lotus-shed
Add --actor flag in lotus-shed sectors terminate
2021-03-25 14:02:37 +01:00
Łukasz Magiera 312c69f1da Merge pull request #5814 from vasco-santos/chore/add-available-options-for-perm-on-error
chore: add available options for perm on error
2021-03-25 13:56:17 +01:00
Łukasz Magiera 5f80869fe0 Merge pull request #5794 from filecoin-project/fix/atomic-first
fix: make sure atomic 64bit fields are 64bit aligned
2021-03-25 13:29:59 +01:00
Łukasz Magiera 53cba157e2 Merge pull request #5804 from zl03jsj/fix/StateManager.Replay
fix: StateManager.Replay
2021-03-25 13:27:45 +01:00
Łukasz Magiera fc4f60e528 Merge pull request #5850 from filecoin-project/feat/markets-dealid
expose NextID from nice market actor interface
2021-03-25 13:26:29 +01:00
Cory Schwartz 01202c5276 digitalocean pass test (#5721)
* force packer build

* disable ami temporarially

* apt and ufw

* initial lotus config

* rename correctly

* apt-get instead of apt

* undo temporary edits

* install before upgrade

* tmp - force digitalocean

* reenable filters

* uncomment ebs

* tmp, remove filter for digitalocean build

* doc

* install ufw (for iams where it isn't installed)

* more amazon regions

* missing comma

* missing comma

* remove unavailable regions

* switch to ubuntu, not minimal

* pro server

* change owner

* change image

* uncomment circleci filters

* remove api from firewall

* tmp: remove circleci filter

* dpkg options

* confold

* try export

* re-add filter
2021-03-25 13:25:11 +01:00
Łukasz Magiera 4d01f8f30b Merge pull request #2184 from filecoin-project/godocs/miner
add godocs to miner objects.
2021-03-25 13:16:38 +01:00
Raúl Kripalani 87efc9d536 add godocs to miner objects. 2021-03-25 13:02:19 +01:00
Łukasz Magiera 53f915d155 Import secp sigs in paych tests 2021-03-25 12:28:53 +01:00
Łukasz Magiera 8f78066d4f Merge pull request #5875 from filecoin-project/feat/log-compact-restart
backupds: Compact log on restart
2021-03-25 10:42:39 +01:00
Łukasz Magiera 5d44ed0b23 Merge pull request #5876 from filecoin-project/feat/interactive-deal-latency
Take latency into account when making interactive deals
2021-03-24 23:04:20 +01:00
Łukasz Magiera fc087f3ac0 Take latency into account when making interactive deals 2021-03-24 22:42:17 +01:00
Łukasz Magiera 924c419e61 backupds: handle log bool in shed 2021-03-24 21:26:24 +01:00
Łukasz Magiera bb79eba74c backupds: Compact log on restart 2021-03-24 21:16:42 +01:00
Łukasz Magiera 16965f1b9e Merge pull request #5867 from filecoin-project/asr/shed-poll
Add two utils to Lotus-shed
2021-03-24 18:07:05 +01:00
Anton Evangelatov a202f9d19e add cancel-retrieval-deal cmd 2021-03-24 18:18:49 +02:00
Łukasz Magiera a2e87310b5 Merge pull request #5864 from filecoin-project/frrist/export-cli-commands
Export developer and network commands for consumption by derivatives of Lotus
2021-03-24 16:52:28 +01:00
Dirk McCormick 1359fb6cc4 fix: disable pull channel monitoring for now 2021-03-24 13:56:59 +01:00
Łukasz Magiera a227039dc1 Merge pull request #5868 from filecoin-project/releases
Merge release branch into master
2021-03-24 11:19:15 +01:00
Aayush Rajasekaran 4d3d00ede9 Merge branch 'master' into releases 2021-03-24 00:16:39 -04:00
Aayush Rajasekaran dac171a99b Add a util to validate FILPoll votes 2021-03-24 00:00:11 -04:00
Aayush Rajasekaran fdb69fdd71 Add a util to decode base64 inputs 2021-03-23 23:32:56 -04:00
frrist bcf7aab55d chore: export mpool cli commands 2021-03-23 16:28:27 -07:00
frrist a74e02e362 chore: export fetch cli command 2021-03-23 16:27:34 -07:00
frrist b34db8e432 chore: export pprof cli commands 2021-03-23 16:26:59 -07:00
frrist 1d50cdd85a chore: export wait cli command 2021-03-23 16:26:12 -07:00
frrist 14a809d291 chore: export auth cli command 2021-03-23 16:25:49 -07:00
frrist 89c45fe7ef chore: export sync cli commands 2021-03-23 16:23:22 -07:00
frrist 22329b96b4 chore: export state cli commands 2021-03-23 16:21:04 -07:00
frrist 8f6ea05d48 chore: export chain commands 2021-03-23 16:19:33 -07:00
frrist 1062117562 chore: export log cli commands 2021-03-23 16:19:22 -07:00
frrist 6827f2dce3 chore: export Net commands 2021-03-23 16:15:02 -07:00
Łukasz Magiera eed5840de3 fix lotus-shed 2021-03-23 19:37:30 +01:00
Łukasz Magiera 65dcec0ebc api client: Use versioned api packages 2021-03-23 19:15:53 +01:00
Łukasz Magiera b3774f8b87 openrpc: Don't use os.Args in init 2021-03-23 18:49:50 +01:00
Łukasz Magiera 421338b9f4 ci: Fix cbor gen check 2021-03-23 17:33:20 +01:00
Łukasz Magiera efccf7d730 Generate v0 mocks 2021-03-23 17:23:01 +01:00
Łukasz Magiera d198cf456e make docsgen work with versioned api 2021-03-23 17:20:56 +01:00
Łukasz Magiera 3fe4b50a13 apigen: Work with versioned apis 2021-03-23 17:01:56 +01:00
Łukasz Magiera 571114bc44 Scaffolding for API versioning 2021-03-23 16:40:22 +01:00
Łukasz Magiera c41777dcd2 API proxy struct codegen (#5854)
* mostly working api proxy gen

* api: Consistent api names

* fix docsgen

* regenerate api struct

* api: expand external interfaces

* Add missing gen files

* apigen: fix perm detection

* api: Move perm tags to the interface

* gofmt

* worker perms

* docsgen

* docsgen: ignore tag comments

* apigen: add codegen warning

* gofmt

* missing actor type

* docsgen

* make linter happy

* fix lint

* apigen: use directives for tags

* docsgen

* regen openrpc docs
2021-03-23 13:42:56 +01:00
Anton Evangelatov b4d4766615 use go-data-transfer from personal fork 2021-03-23 14:30:26 +02:00
Dirk McCormick aee9890ee7 feat: update go-data-transfer and go-fil-markets 2021-03-23 13:28:30 +01:00
Anton Evangelatov bbd0cdd212 fix linter and merge master 2021-03-23 13:59:41 +02:00
Anton Evangelatov 22217b7cae Merge branch 'master' into nonsense/cli-show-deals 2021-03-23 13:58:26 +02:00
Łukasz Magiera f145d4f46b Merge pull request #5693 from filecoin-project/sentinel/binary
Implement Event observer and Settings for 3rd party dep injection
2021-03-23 11:15:11 +01:00
Łukasz Magiera 4cae530d4a Merge pull request #5860 from filecoin-project/fix/update-openrpc-doc
Update generated docs
2021-03-23 10:49:51 +01:00
Łukasz Magiera be704cf0f0 docsgen 2021-03-23 10:39:56 +01:00
Łukasz Magiera 2f37b622f7 circle: output generated openrpc diffs 2021-03-23 10:38:14 +01:00
frrist 6caafaeee3 polish(node): define settings opts for 3rd party dep injection
- motivating use case running a lotus-sentinel node
2021-03-22 15:37:44 -07:00
frrist 0b579c1e03 feat(events): define Observer intreface for events
- allows tipset apply and revert to be observed
2021-03-22 15:37:44 -07:00
Łukasz Magiera 4c7df0ac38 Merge pull request #5709 from filecoin-project/feat/optim-gas-premium
perf: add cache for gas permium estimation
2021-03-22 20:14:19 +01:00
Łukasz Magiera caa1d5bba4 Merge pull request #5840 from filecoin-project/docs/replay-replace-note
api: Document StateReplay replaced message behavior
2021-03-22 19:21:02 +01:00
Jakub Sztandera 5f672c2ed0 perf: add cache for gas permium estimation
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-03-22 18:06:14 +01:00
Łukasz Magiera 897c5c7d82 Merge pull request #5851 from filecoin-project/fix/rtrvl-log
better logging when unsealing fails
2021-03-22 17:58:48 +01:00
Dirk McCormick 9fb1dd43a9 feat: update to markets v1.2.0 2021-03-22 15:31:13 +01:00
dirkmc 14ede9b0e6 Fix unseal comment 2021-03-22 14:39:03 +01:00
Dirk McCormick 73d5225f3c fix: better logging when unsealing fails 2021-03-22 10:23:58 +01:00
whyrusleeping 6bcf92f71a expose NextID from nice market actor interface 2021-03-21 00:11:42 -07:00
Łukasz Magieraandmeows 43d9cc36a4 OpenRPC Support (#5843)
* main: init implement rpc.Discover RPC method

This implement the basic functionality for the method
over HTTP RPC.

Signed-off-by: meows <b5c6@protonmail.com>

* main,go.mod,go.sum: init example with go-openrpc-reflect lib

Signed-off-by: meows <b5c6@protonmail.com>

 Conflicts:
	go.mod
	go.sum

* main: make variable name human-friendly

Signed-off-by: meows <b5c6@protonmail.com>

* main,go.mod,go.sum: init impl of go-openrp-reflect printing document

Signed-off-by: meows <b5c6@protonmail.com>

 Conflicts:
	go.mod
	go.sum

* go.mod,go.sum: use go-openrpc-reflect and open-rpc/meta-schema hackforks

This is for development only.
Versions need to be bumped when they're ready for use
as canonical remotes.

Signed-off-by: meows <b5c6@protonmail.com>

* main,openrpc,main: refactor openrpc supporting code to own package

This eliminates code duplication.

Signed-off-by: meows <b5c6@protonmail.com>

* main: add rpc.Discover to openrpc document

Signed-off-by: meows <b5c6@protonmail.com>

* openrpc: fix rpc.discover method name casing

Also fixes casing stuff for the rest of Filecoin.
methods.

Signed-off-by: meows <b5c6@protonmail.com>

* Revert "main: add rpc.Discover to openrpc document"

This reverts commit 116898efb10f33e405ac74acb1aa6daefcd46a62.

* main: fix document creation method name

This fixes an issue caused with the latest reverting
commit.

Signed-off-by: meows <b5c6@protonmail.com>

* main,docgen,openrpc: refactor to share api parsing, etc as docgen exported stuff

Signed-off-by: meows <b5c6@protonmail.com>

Makefile: fix docgen refactoring for makefile use of command

Signed-off-by: meows <b5c6@protonmail.com>

* openrpc: add schema.examples to app reflector

There are quite of few of these already registered
for the docgen command, so it makes sense to use
those!

Signed-off-by: meows <b5c6@protonmail.com>

* openrpc: init method pairing examples

Signed-off-by: meows <b5c6@protonmail.com>

* go.mod,go.sum: bump go.mod to use latest meta-schema and openrpc-reflect versions

Signed-off-by: meows <b5c6@protonmail.com>

* openrpc: init SchemaType mapper function

This function will handle the manual configurations
for app-specific data types w/r/t their json schema
representation.

This is useful for cases where the reflect library
is unable to provide a sufficient representation
automatically.

Provided in this commit is an initial implementation
for the integerD type (assuming number are represented
in the API as hexs), and a commonly used cid.Cid type.

Signed-off-by: meows <b5c6@protonmail.com>

* go.mod,go.sum: tame dependencies by bumping etclabscore/go-openrpc-reflect

This removes a problematic dependency
on github.com/ethereum/go-ethereum, which was
imported as a dependency for a couple github.com/etclabscore/go-openrpc-reflect
tests.

etclabscore/go-openrpc-reflect v0.0.36 has removed this
dependency, so this commit is the result of bumping
that version and then running 'go mod tidy'

This is in response to a review at
https://github.com/filecoin-project/lotus/pull/4711#pullrequestreview-535686205

Date: 2020-11-21 06:52:48-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* main: add 'miner' arg to openrpc gen cmd

This allows the command to EITHER
generate the doc for Full or Miner APIs.

See comment for usage.

Date: 2020-11-21 07:48:05-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* docgen: add missing examples for Miner API

Generating the Miner API OpenRPC doc
(via 'go run ./api/openrpc/cmd miner') caused
the example logic to panic because some types
were missing.

This commit adds those missing types, although
I'm not an expert in the API so I can't
suggest that the example values provided are
ideal or well representative.

Date: 2020-11-21 07:50:21-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* build/openrpc/full.json,build/openrpc/miner.json: add build/openrpc/[full/miner].json docs

These will be used as static documents
provided by the rpc.discover method.

Date: 2020-11-21 07:51:39-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* build: init go-rice openrpc static assets

Date: 2020-11-21 08:23:06-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* main: remove rpc.discover implementation from runtime plugin

Instead of generating the doc on the fly,
we're going to serve a static asset.
Rel https://github.com/filecoin-project/lotus/pull/4711#pullrequestreview-535686205
This removes the runtime implementation from the
RPC server construction.

Date: 2020-11-21 08:41:20-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* api,apistruct,common: add Discover(ctx) method to CommonAPI interface and structs

Date: 2020-11-21 08:41:56-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* main: use rpc server method aliasing for rpc.discover

This depends on a currently-forked change at
filecoin-project/go-jsonrpc 8350f9463ee451b187d35c492e32f1b999e80210
which establishes this new method RPCServer.AliasMethod.

This solves the problem that the OpenRPC
spec says that the document should be served
at the system extension-prefixed endpoing
rpc.discover (not Filecoin.Discover).

In fact, the document will be available at BOTH
endpoints, but that duplicity is harmless.

Date: 2020-11-21 09:18:26-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* api,apistruct,build,common: rpc.discover: return json object instead of string

Instead of casting the JSON asset from bytes to string,
unmarshal it to a map[string]interface{} so the
server will provide it as a JSON object.

Date: 2020-11-21 09:27:11-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* Makefile: merge resolve: docsgen command path

Date: 2020-11-22 07:19:36-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* apistruct,main,docgen,openrpc: merge resolve: fix func exporteds, signatures

Date: 2020-11-22 07:31:03-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* go.mod,go.sum: 'get get' auto-bumps version

Date: 2020-11-22 07:31:44-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* Makefile,docgen,main,build/openrpc: refactor openrpc documentation generation

This creates Makefile command docsgen-openrpc-json,
and refactors the docsgen command to generate both
the markdown and openrpc json documents, redirecting
the output of the openrpc json documentation to
the build/openrpc/ directory, where those json
files will be compiled as static assets via go-rice
boxes.

The api/openrpc/cmd now uses usage argumentation
congruent to that of the docgen command (switching
on API context).

Date: 2020-11-22 08:01:18-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* main,docgen_openrpc: rename api/openrpc -> api/docgen-openrpc

Renames the package as well.

This is intended to parallel the
existing docgen package and command
namespacing.

Date: 2020-11-22 10:34:46-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* api,apistruct,docgen,build,build/openrpc: use typed Discover response

Instead of using a map[string]interface{}, use
a typed response for the Discover method implementation.

This avoids having to set a docgen Example for
the generic map[string]interface{} (as an openrpc document)
which both pollutes the generic type and lacks
useful information for the Discover method example.

Date: 2020-11-22 08:31:16-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* apistruct,build,main,impl: implement Discover method for Worker and StorageMiner APIs

Methods return static compiled assets respective
to the APIs.

Date: 2020-11-22 08:57:18-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* docgen_openrpc,build/openrpc: remove timestamping from openrpc doc info

This should allow openrpc docs generated at different
times to be equal. This is important because the CI
(Circle) runs the docgen command and tests that
the output and the source are unchanged (via git diff).

Date: 2020-11-22 10:47:07-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* main,docgen_openrpc,main,build: fix lint issues

Fixes goimports, staticcheck, golint issues.

Date: 2020-11-22 11:06:46-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* docgenopenrpc: fix: don't use an underscore in package name (golint)

Date: 2020-11-22 11:07:53-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* go.sum: fix: mod-tidy-check (run 'go mod tidy')

Date: 2020-11-22 11:09:48-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* go.mod,go.sum: bump filecoin-project/go-jsonrpc dep to latest

This version includes the necessary RPCServer.AliasMethod
method.

Date: 2020-11-23 12:16:15-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* Makefile,main,build,build/openrpc: init gzipped openrpc static docs

Date: 2020-11-24 06:15:06-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* build: refactor gzip reading

Date: 2020-11-24 06:18:34-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* build: add basic test for openrpc doc from static assets

Date: 2020-11-24 06:30:23-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* build: handle reader Close error

This keeps the errcheck linter happy.

Date: 2020-11-24 06:33:14-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* go.sum: run 'go mod tidy'

Date: 2020-11-24 06:36:07-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* go.mod,go.sum: go mod tidy

Tidying up after resolving the merge conflicts
with master at go.mod

Date: 2020-11-24 06:40:45-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* go.mod,go.sum: bump filecoin-project/go-jsonrpc to latest

This is a repeat of 76e6fd2, since the latest merge
to master seems to have reverted this.

Date: 2020-11-24 06:42:30-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* docgenopenrpc,build/openrpc: remove method example pairings, improve schema examples

Removing method example pairings since they were
redundant to schema examples and were not
implemented well.

Improved schema examples by using the ExampleValue
method instead of the map lookup.
Made a note in the comment here that this is
not ideal, since we have to make a shortcut assumption
/workaround by using 'unknown' as the method name
and the typea as its own parent.

Luckily these values aren't heavily used by the
method logic.

Date: 2020-11-27 12:57:36-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* docgenopenrpc: use generic number jsonschema for number types

Previously used an integer schema assuming
hex encoding. It appears, based on review some
of the examples, that this may not be the case.

Obvioussly this schema could be more descriptive,
but just shooting for mostly likely to be
not wrong at this point.

Date: 2020-12-15 14:44:37-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* cmd/lotus,go.mod,go.sum: maybe fix straggling merge resolution conflicts

Date: 2021-01-19 12:30:42-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* build/openrpc/full.json.gz,build/openrpc/miner.json.gz,build/openrpc/worker.json.gz: run 'make docsgen'

Date: 2021-01-19 12:33:55-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* api/apistruct,node/impl: (lint) gofmt

Date: 2021-01-19 12:39:48-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* api/docgen: maybe fix parse error:  open ./api: no such file or directory

Date: 2021-01-19 12:52:04-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* api/docgen,build/openrpc: maybe fix no such file error and run 'make docsgen'

Date: 2021-01-19 12:55:52-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* api/docgen: return if AST comment/groupdoc parsing encounters any error

This will returns empty comments/docs maps.
This should fix issues like:
https://app.circleci.com/pipelines/github/filecoin-project/lotus/12445/workflows/4ebadce9-a298-4ad1-939b-f19ef4c0a5bf/jobs/107218

where the environment makes file lookups hard or
impossible.

Date: 2021-01-19 13:04:58-06:00
Signed-off-by: meows <b5c6@protonmail.com>

* api: Don't depend on build/

* make: support parallel docsgen

* openrpc gen: Use simple build version

* methodgen

* goimports

Co-authored-by: meows <b5c6@protonmail.com>
2021-03-19 19:22:46 +01:00
Anton Evangelatov ac576c75d4 amend restart config 2021-03-19 14:08:50 +02:00
Łukasz Magiera da10ef2e36 api: Better StateCompute docs 2021-03-19 12:57:59 +01:00
Anton Evangelatov 86772a09c7 use new channelmonitor.Config 2021-03-19 13:53:03 +02:00
Łukasz Magiera d198bf9d6d Merge pull request #5828 from filecoin-project/asr/version
Bump master to 1.6.0-dev
2021-03-19 11:48:24 +01:00
Łukasz Magiera 82e019bd36 api: Note that ChainGetBlockMessages is not the method to use most of the time 2021-03-18 22:12:22 +01:00
Łukasz Magiera e74aa7ef09 api: Document StateReplay replaced message behavior 2021-03-18 21:54:35 +01:00
Łukasz Magiera 887249afee Merge pull request #5837 from filecoin-project/chore/build_more_binaries_on_devnets
Build more binaries by default when a devnet tag is active
2021-03-18 19:50:25 +01:00
Łukasz Magiera 32a0c881ac Merge pull request #5838 from filecoin-project/docs/searchmsg-replace-note
api: Document StateSearchMsg replaced message behavior
2021-03-18 19:48:27 +01:00
Łukasz Magiera c5ba875fe3 api: Add replaced msg note on StateSearchMsg 2021-03-18 19:46:26 +01:00
Łukasz Magiera 80ecec7532 Merge branch 'docs/searchmsg-replace-note' of github.com:filecoin-project/lotus into docs/searchmsg-replace-note 2021-03-18 19:43:24 +01:00
Aayush Rajasekaran a0a4d3c462 Add a note to ChainGetParentReceipts 2021-03-18 14:35:32 -04:00
Łukasz Magiera ce127ec541 api: Document StateSearchMsg replaced message behavior 2021-03-18 19:18:43 +01:00
Łukasz Magiera 4fb4313ee7 api: Document StateSearchMsg replaced message behavior 2021-03-18 19:17:37 +01:00
Peter Rabbitson bc5ed9656c Build more binaries by default when a devnet tag is active 2021-03-18 16:11:43 +01:00
Anton Evangelatov af8104830c fixup 2021-03-18 16:03:24 +02:00
Peter Rabbitson 73eabc310f Merge pull request #5834 from Digital-MOB-Filecoin/nerpa/202103181-707219b7a
Nerpa reset based on 1.5.2
2021-03-18 15:02:07 +01:00
Anton Evangelatov 9d6c77d93f remove interactive UX; add inspect-deal cmd 2021-03-18 14:53:03 +02:00
Liviu Damian ef5b079b8f Nerpa reset 707219b7a 2021-03-18 12:33:54 +02:00
Aayush Rajasekaran 707219b7a1 Disable the Calico migration on not-mainnet 2021-03-17 20:46:00 -04:00
Peter Rabbitson 8c726cc4f9 Rollback the nerpa proofs upgrade: has to be conditional on upgrades 2021-03-17 12:00:45 +01:00
Aayush Rajasekaran 797d2b1ae8 Bump master to 1.6.0-dev 2021-03-17 02:49:06 -04:00
Aayush Rajasekaran dc94d52084 Tweak upgrade heights 2021-03-17 00:24:17 -04:00
Aayush Rajasekaran 80ff0b0564 Improve setting of VRK multisigs 2021-03-17 00:18:50 -04:00
Peter Rabbitson 3c81576bfa Fix nerpa heights for a reset, swapout proof typs 2021-03-17 04:00:29 +01:00
chadwick2143 7417a13be3 Add --actor flag in lotus-shed sectors terminate
Can specify miner actor address when terminate sectors,
so that you can terminate sectors without miner api.
2021-03-16 14:09:46 +08:00
Vasco Santos 9120d6f82f chore: add available options for perm on error 2021-03-15 13:42:57 +01:00
Aayush Rajasekaran a54c6bfb05 Merge pull request #4653 from filecoin-project/4621-delete-wallet
Aftering importing a previously deleted key, be able to delete it again.
2021-03-14 20:36:56 -04:00
Aayush Rajasekaran c3d1534044 Merge pull request #5743 from filecoin-project/feat/keep-unsealed-by-default
Default the AlwaysKeepUnsealedCopy flag to true
2021-03-14 15:47:07 -04:00
Aayush Rajasekaran fe473e111c Fix creation of remainder account when it's not a multisig 2021-03-12 17:12:41 -05:00
Łukasz Magiera 09e78a0fe4 Merge pull request #5800 from filecoin-project/feat/allinfo-utils
shed command to unpack miner info dumps
2021-03-12 19:02:50 +01:00
Łukasz Magiera 1aea1ebb9d Merge pull request #5801 from filecoin-project/fix/fsm-input-stuck
storagefsm: Trigger input processing when below limits
2021-03-12 19:02:15 +01:00
Łukasz Magiera 0974e02089 storagefsm: common createSector method 2021-03-12 18:42:17 +01:00
Łukasz Magiera 5c1a01dc3c Merge pull request #5802 from filecoin-project/test/backupds-unit
backupds: Add unit tests
2021-03-12 18:28:15 +01:00
Łukasz Magiera 0c43b93d46 Merge pull request #5805 from filecoin-project/test/mack-rand-sideeffects
mock sealer: Simulate randomness sideeffects
2021-03-12 18:27:47 +01:00
Steven Allen 25725110e7 Merge pull request #5792 from filecoin-project/fix/timed-cache-locking
fix: avoid holding a lock while calling the View callback
2021-03-12 09:25:00 -08:00
Steven Allen b74b1658b2 test: mock proof side effects on verify as well 2021-03-12 09:06:41 -08:00
Łukasz Magiera d9923125ff mock sealer: Simulate randomness sideeffects 2021-03-12 17:33:43 +01:00
Łukasz Magiera e5b5bf1c1b storagefsm: Update sector stats atomically with sector creation 2021-03-12 17:25:24 +01:00
zl 6f64d5db6f bugfix: StateManager.Replay 2021-03-13 00:12:37 +08:00
Łukasz Magiera 679f5f7661 storagefsm: Helper stat functions in updateSector 2021-03-12 17:00:20 +01:00
Łukasz Magiera c69b26cfc6 Merge pull request #5778 from filecoin-project/feat/splitstore-compact-hotstore
splitstore: compact hotstore prior to garbage collection
2021-03-12 16:30:05 +01:00
Łukasz Magiera 067af44ed7 Merge pull request #5791 from filecoin-project/feat/paychmgr-imports
move DI stuff for paychmgr into modules
2021-03-12 16:29:23 +01:00
Łukasz Magiera a2ac26c4f6 backupds: Add unit tests 2021-03-12 16:20:27 +01:00
Łukasz Magiera 58213760b7 gofmt 2021-03-12 15:56:10 +01:00
Łukasz Magiera 08472f4fac batch deal input processing test 2021-03-12 15:41:46 +01:00
Łukasz Magiera 957d3f0636 storgefsm: Use locks correctly 2021-03-12 15:01:00 +01:00
Łukasz Magiera 5c605d99e2 storgefsm: Fix tests 2021-03-12 14:56:46 +01:00
Łukasz Magiera f5ed25371b storagefsm: Trigger input processing wheen below limits 2021-03-12 14:54:10 +01:00
Łukasz Magiera 88b0d551b9 shed command to unpack miner info dumps 2021-03-12 12:24:09 +01:00
Łukasz Magiera a373fc4c4c make lotus-miner info all more robust 2021-03-12 12:23:43 +01:00
Łukasz Magiera e5226412fb builder: set modules.PaychAPI correctly 2021-03-12 11:27:00 +01:00
Łukasz Magiera 06aaa668d6 Merge pull request #5796 from filecoin-project/fix/return-after-cancel
fix: return buffers after canceling badger operation
2021-03-12 11:13:50 +01:00
Łukasz Magiera ea11b827b8 Merge pull request #5799 from steven004/bootstrapper
ipfs-force bootstrapper update
2021-03-12 11:10:00 +01:00
whyrusleeping cbc7f1c244 fix paychmgr constructor to take an easier to implement interface 2021-03-12 00:39:20 -08:00
Steven Li a6e8c03f5c ipfs-force bootstrapper update 2021-03-12 15:05:00 +08:00
Steven Allen bba71da401 fix: return buffers after canceling badger operation
In theory, Delete/Put could fail. If it does, we'll return the buffers
to the pool before we're really done with them.

In practice, this is almost certainly not an issue as badger shouldn't
_use_ the buffer unless we flush. But I feel slightly safer this way.
2021-03-11 20:30:43 -08:00
Steven Allen 1c490f3fda fix: make sure atomic 64bit fields are 64bit aligned
Otherwise, this won't work on 32bit ARM.
2021-03-11 20:10:39 -08:00
Steven Allen a888ea0d1f fix: avoid holding a lock while calling the View callback
Interleaved puts/views could get really slow and there's no real reason
to use view under the covers here because the underlying blockstore is
always a "memstore".
2021-03-11 20:03:38 -08:00
whyrusleeping e0b650d4ec make rpcstatemanager its own package, for easy reuse 2021-03-11 18:21:18 -08:00
whyrusleeping bf42a3be5e move DI stuff for paychmgr into modules 2021-03-11 17:35:31 -08:00
vyzo 1b1d3606cd make linter happy 2021-03-11 13:10:44 +02:00
vyzo 353bb1881f compact hotstore if it provides the method 2021-03-11 11:45:19 +02:00
vyzo 01ce9b5c44 add Compact to badger blockstore 2021-03-11 11:45:05 +02:00
Łukasz Magiera 260ddacc47 Fix wallet import cycle, better trash key backup 2021-03-09 16:52:51 +01:00
jennijujuandAayush Rajasekaran 49c44b70c2 Aftering importing a previously deleted key, be able to delete it again.
Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
2021-03-09 16:43:01 +01:00
Dirk McCormick a6c8b56ab6 feat: Default the AlwaysKeepUnsealedCopy flag to true 2021-03-08 16:35:46 +01:00
Dirk McCormick 84803f82ab feat: show deals CLI command 2021-03-04 16:56:49 +01:00
He Weidong 0e2e1125d3 fix precommit ticket expiration handling 2021-02-05 10:45:15 +08:00
Frank 7e0a2ca46e use deal duration from actor 2020-12-30 16:02:53 +08:00
15ho 5b235db366 fix: stores.FetchHandler: defer close file and increase buffer size 2020-12-29 10:07:28 +08:00
Frank 3be84787d4 easy way to make install app 2020-12-11 20:10:40 +08:00
zgfzgf 7c8ab6977a add estimate command 2020-12-02 12:57:57 +08:00
zgfzgf 7d3e4c5d01 feat election error miner-power to network-power 2020-12-02 12:36:05 +08:00
Aayush Rajasekaran 526cd739f6 Return total power when GetPowerRaw doesn't find miner claim 2020-11-20 00:31:04 -05:00
Jakub Sztandera 87f2719195 Complete mask command
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-10-29 20:58:09 +01:00
whyrusleeping 77ec7caaad WIP: add a command for compacting sector numbers bitfield 2020-10-29 00:18:10 -07:00
mitchellsoo 74a9dfc99f Add script to generate lotus cli document.
Generate lotus command lines documents as text and markdown in folder "lotus/documentation/en".
2020-07-18 14:21:02 +08:00
1100 changed files with 146564 additions and 37841 deletions
+521 -151
View File
@@ -1,23 +1,32 @@
version: 2.1
orbs:
go: gotest/tools@0.0.13
aws-cli: circleci/aws-cli@1.3.2
packer: salaxander/packer@0.0.3
executors:
golang:
docker:
- image: circleci/golang:1.15.5
- image: cimg/go:1.17.9
resource_class: 2xlarge
ubuntu:
docker:
- image: ubuntu:19.10
- image: ubuntu:20.04
packer:
description: |
The HashiCorp provided Packer container
parameters:
packer-version:
type: string
default: "1.8"
docker:
- image: hashicorp/packer:<< parameters.packer-version >>
commands:
install-deps:
steps:
- go/install-ssh
- go/install: {package: git}
- run: |
sudo apt update
sudo apt install python-is-python3
prepare:
parameters:
linux:
@@ -44,13 +53,13 @@ commands:
- restore_cache:
name: Restore parameters cache
keys:
- 'v25-2k-lotus-params'
- 'v26-2k-lotus-params'
paths:
- /var/tmp/filecoin-proof-parameters/
- run: ./lotus fetch-params 2048
- save_cache:
name: Save parameters cache
key: 'v25-2k-lotus-params'
key: 'v26-2k-lotus-params'
paths:
- /var/tmp/filecoin-proof-parameters/
install_ipfs:
@@ -75,14 +84,38 @@ commands:
command: |
git fetch --all
packer_build:
description: "Run a packer build"
parameters:
template:
description: |
The name of the packer template file
type: string
default: packer.json
args:
description: |
Arguments to pass to the packer build command
type: string
default: ""
steps:
- run:
name: "Run a packer build"
command: packer build << parameters.args >> << parameters.template >>
no_output_timeout: 30m
jobs:
mod-tidy-check:
executor: golang
steps:
- install-deps
- prepare
- go/mod-tidy-check
- run: go mod tidy -v
- run:
name: Check git diff
command: |
git --no-pager diff go.mod go.sum
git --no-pager diff --quiet go.mod go.sum
build-all:
executor: golang
steps:
@@ -92,6 +125,9 @@ jobs:
- run: sudo apt-get install npm
- run:
command: make buildall
- run:
name: check tag and version output match
command: ./scripts/version-check.sh ./lotus
- store_artifacts:
path: lotus
- store_artifacts:
@@ -112,7 +148,7 @@ jobs:
- run:
command: make debug
test: &test
test:
description: |
Run tests with gotestsum.
parameters: &test-params
@@ -123,23 +159,20 @@ jobs:
type: string
default: "-timeout 30m"
description: Flags passed to go test.
packages:
target:
type: string
default: "./..."
description: Import paths of packages to be tested.
winpost-test:
proofs-log-test:
type: string
default: "0"
deadline-test:
type: string
default: "0"
test-suite-name:
suite:
type: string
default: unit
description: Test suite name to report to CircleCI.
gotestsum-format:
type: string
default: pkgname-and-test-fails
default: standard-verbose
description: gotestsum format. https://github.com/gotestyourself/gotestsum#format
coverage:
type: string
@@ -147,7 +180,7 @@ jobs:
description: Coverage flag. Set to the empty string to disable.
codecov-upload:
type: boolean
default: false
default: true
description: |
Upload coverage report to https://codecov.io/. Requires the codecov API token to be
set as an environment variable for private projects.
@@ -159,59 +192,35 @@ jobs:
command: make deps lotus
no_output_timeout: 30m
- download-params
- go/install-gotestsum:
gobin: $HOME/.local/bin
version: 0.5.2
- run:
name: go test
environment:
LOTUS_TEST_WINDOW_POST: << parameters.winpost-test >>
LOTUS_TEST_DEADLINE_TOGGLING: << parameters.deadline-test >>
TEST_RUSTPROOFS_LOGS: << parameters.proofs-log-test >>
SKIP_CONFORMANCE: "1"
command: |
mkdir -p /tmp/test-reports/<< parameters.test-suite-name >>
mkdir -p /tmp/test-reports/<< parameters.suite >>
mkdir -p /tmp/test-artifacts
gotestsum \
--format << parameters.gotestsum-format >> \
--junitfile /tmp/test-reports/<< parameters.test-suite-name >>/junit.xml \
--jsonfile /tmp/test-artifacts/<< parameters.test-suite-name >>.json \
--junitfile /tmp/test-reports/<< parameters.suite >>/junit.xml \
--jsonfile /tmp/test-artifacts/<< parameters.suite >>.json \
-- \
<< parameters.coverage >> \
<< parameters.go-test-flags >> \
<< parameters.packages >>
<< parameters.target >>
no_output_timeout: 30m
- store_test_results:
path: /tmp/test-reports
- store_artifacts:
path: /tmp/test-artifacts/<< parameters.test-suite-name >>.json
path: /tmp/test-artifacts/<< parameters.suite >>.json
- when:
condition: << parameters.codecov-upload >>
steps:
- go/install: {package: bash}
- go/install: {package: curl}
- run:
shell: /bin/bash -eo pipefail
command: |
bash <(curl -s https://codecov.io/bash)
test-chain:
<<: *test
test-node:
<<: *test
test-storage:
<<: *test
test-cli:
<<: *test
test-short:
<<: *test
test-window-post:
<<: *test
test-window-post-dispute:
<<: *test
test-deadline-toggling:
<<: *test
test-terminate:
<<: *test
test-conformance:
description: |
Run tests using a corpus of interoperable test vectors for Filecoin
@@ -245,9 +254,6 @@ jobs:
cd extern/test-vectors
git fetch
git checkout origin/<< parameters.vectors-branch >>
- go/install-gotestsum:
gobin: $HOME/.local/bin
version: 0.5.2
- run:
name: install statediff globally
command: |
@@ -284,11 +290,26 @@ jobs:
- install-deps
- prepare
- run: make calibnet
- run: mkdir linux-calibnet && mv lotus lotus-miner lotus-worker linux-calibnet
- run: mkdir linux-calibrationnet && mv lotus lotus-miner lotus-worker linux-calibrationnet
- persist_to_workspace:
root: "."
paths:
- linux-calibnet
- linux-calibrationnet
build-ntwk-butterfly:
description: |
Compile lotus binaries for the butterfly network
parameters:
<<: *test-params
executor: << parameters.executor >>
steps:
- install-deps
- prepare
- run: make butterflynet
- run: mkdir linux-butterflynet && mv lotus lotus-miner lotus-worker linux-butterflynet
- persist_to_workspace:
root: "."
paths:
- linux-butterflynet
build-lotus-soup:
description: |
Compile `lotus-soup` Testground test plan
@@ -301,7 +322,7 @@ jobs:
- run: cd extern/filecoin-ffi && make
- run:
name: "go get lotus@master"
command: cd testplans/lotus-soup && go mod edit -replace=github.com/filecoin-project/lotus=../..
command: cd testplans/lotus-soup && go mod edit -replace=github.com/filecoin-project/lotus=../.. && go mod tidy
- run:
name: "build lotus-soup testplan"
command: pushd testplans/lotus-soup && go build -tags=testground .
@@ -322,7 +343,7 @@ jobs:
command: pushd testplans/lotus-soup && mkdir -p $HOME/testground && cp env-ci.toml $HOME/testground/.env.toml && echo 'endpoint="https://ci.testground.ipfs.team"' >> $HOME/testground/.env.toml && echo 'user="circleci"' >> $HOME/testground/.env.toml
- run:
name: "prepare testground home dir and link test plans"
command: mkdir -p $HOME/testground/plans && ln -s $(pwd)/testplans/lotus-soup $HOME/testground/plans/lotus-soup && ln -s $(pwd)/testplans/graphsync $HOME/testground/plans/graphsync
command: mkdir -p $HOME/testground/plans && ln -s $(pwd)/testplans/lotus-soup $HOME/testground/plans/lotus-soup
- run:
name: "go get lotus@master"
command: cd testplans/lotus-soup && go get github.com/filecoin-project/lotus@master
@@ -332,15 +353,11 @@ jobs:
- run:
name: "trigger payment channel stress testplan on taas"
command: ~/testground-cli run composition -f $HOME/testground/plans/lotus-soup/_compositions/paych-stress-k8s.toml --metadata-commit=$CIRCLE_SHA1 --metadata-repo=filecoin-project/lotus --metadata-branch=$CIRCLE_BRANCH
- run:
name: "trigger graphsync testplan on taas"
command: ~/testground-cli run composition -f $HOME/testground/plans/graphsync/_compositions/stress-k8s.toml --metadata-commit=$CIRCLE_SHA1 --metadata-repo=filecoin-project/lotus --metadata-branch=$CIRCLE_BRANCH
build-macos:
description: build darwin lotus binary
macos:
xcode: "10.0.0"
xcode: "12.5.0"
working_directory: ~/go/src/github.com/filecoin-project/lotus
steps:
- prepare:
@@ -349,8 +366,8 @@ jobs:
- run:
name: Install go
command: |
curl -O https://dl.google.com/go/go1.15.5.darwin-amd64.pkg && \
sudo installer -pkg go1.15.5.darwin-amd64.pkg -target /
curl -O https://dl.google.com/go/go1.17.9.darwin-amd64.pkg && \
sudo installer -pkg go1.17.9.darwin-amd64.pkg -target /
- run:
name: Install pkg-config
command: HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config
@@ -360,10 +377,14 @@ jobs:
command: |
curl https://sh.rustup.rs -sSf | sh -s -- -y
- run:
name: Install jq
name: Install hwloc
command: |
curl --location https://github.com/stedolan/jq/releases/download/jq-1.6/jq-osx-amd64 --output /usr/local/bin/jq
chmod +x /usr/local/bin/jq
mkdir ~/hwloc
curl --location https://download.open-mpi.org/release/hwloc/v2.4/hwloc-2.4.1.tar.gz --output ~/hwloc/hwloc-2.4.1.tar.gz
cd ~/hwloc
tar -xvzpf hwloc-2.4.1.tar.gz
cd hwloc-2.4.1
./configure && make && sudo make install
- restore_cache:
name: restore cargo cache
key: v3-go-deps-{{ arch }}-{{ checksum "~/go/src/github.com/filecoin-project/lotus/go.sum" }}
@@ -371,6 +392,9 @@ jobs:
- run:
command: make build
no_output_timeout: 30m
- run:
name: check tag and version output match
command: ./scripts/version-check.sh ./lotus
- store_artifacts:
path: lotus
- store_artifacts:
@@ -389,6 +413,51 @@ jobs:
- "~/.rustup"
- "~/.cargo"
build-appimage:
machine:
image: ubuntu-2004:202111-02
steps:
- checkout
- attach_workspace:
at: "."
- run:
name: install appimage-builder
command: |
# appimage-builder requires /dev/snd to exist. It creates containers during the testing phase
# that pass sound devices from the host to the testing container. (hard coded!)
# https://github.com/AppImageCrafters/appimage-builder/blob/master/appimagebuilder/modules/test/execution_test.py#L54
# Circleci doesn't provide a working sound device; this is enough to fake it.
if [ ! -e /dev/snd ]
then
sudo mkdir /dev/snd
sudo mknod /dev/snd/ControlC0 c 1 2
fi
# docs: https://appimage-builder.readthedocs.io/en/latest/intro/install.html
sudo apt update
sudo apt install -y python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace
sudo curl -Lo /usr/local/bin/appimagetool https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
sudo chmod +x /usr/local/bin/appimagetool
sudo pip3 install appimage-builder
- run:
name: install lotus dependencies
command: sudo apt install ocl-icd-opencl-dev libhwloc-dev
- run:
name: build appimage
command: |
sed -i "s/version: latest/version: ${CIRCLE_TAG:-latest}/" AppImageBuilder.yml
make appimage
- run:
name: prepare workspace
command: |
mkdir appimage
mv Lotus-*.AppImage appimage
- persist_to_workspace:
root: "."
paths:
- appimage
gofmt:
executor: golang
steps:
@@ -397,7 +466,7 @@ jobs:
- run:
command: "! go fmt ./... 2>&1 | read"
cbor-gen-check:
gen-check:
executor: golang
steps:
- install-deps
@@ -405,7 +474,10 @@ jobs:
- run: make deps
- run: go install golang.org/x/tools/cmd/goimports
- run: go install github.com/hannahhoward/cbor-gen-for
- run: go generate ./...
- run: make gen
- run: git --no-pager diff
- run: git --no-pager diff --quiet
- run: make docsgen-cli
- run: git --no-pager diff
- run: git --no-pager diff --quiet
@@ -414,9 +486,19 @@ jobs:
steps:
- install-deps
- prepare
- run: go install golang.org/x/tools/cmd/goimports
- run: zcat build/openrpc/full.json.gz | jq > ../pre-openrpc-full
- run: zcat build/openrpc/miner.json.gz | jq > ../pre-openrpc-miner
- run: zcat build/openrpc/worker.json.gz | jq > ../pre-openrpc-worker
- run: make deps
- run: make docsgen
- run: zcat build/openrpc/full.json.gz | jq > ../post-openrpc-full
- run: zcat build/openrpc/miner.json.gz | jq > ../post-openrpc-miner
- run: zcat build/openrpc/worker.json.gz | jq > ../post-openrpc-worker
- run: git --no-pager diff
- run: diff ../pre-openrpc-full ../post-openrpc-full
- run: diff ../pre-openrpc-miner ../post-openrpc-miner
- run: diff ../pre-openrpc-worker ../post-openrpc-worker
- run: git --no-pager diff --quiet
lint: &lint
@@ -426,9 +508,6 @@ jobs:
executor:
type: executor
default: golang
golangci-lint-version:
type: string
default: 1.27.0
concurrency:
type: string
default: '2'
@@ -447,13 +526,10 @@ jobs:
- run:
command: make deps
no_output_timeout: 30m
- go/install-golangci-lint:
gobin: $HOME/.local/bin
version: << parameters.golangci-lint-version >>
- run:
name: Lint
command: |
$HOME/.local/bin/golangci-lint run -v --timeout 2m \
golangci-lint run -v --timeout 2m \
--concurrency << parameters.concurrency >> << parameters.args >>
lint-all:
<<: *lint
@@ -478,6 +554,33 @@ jobs:
name: Publish release
command: ./scripts/publish-release.sh
publish-snapcraft:
description: build and push snapcraft
machine:
image: ubuntu-2004:202104-01
resource_class: 2xlarge
parameters:
channel:
type: string
default: "edge"
description: snapcraft channel
steps:
- checkout
- run:
name: install snapcraft
command: sudo snap install snapcraft --classic
- run:
name: create snapcraft config file
command: |
mkdir -p ~/.config/snapcraft
echo "$SNAPCRAFT_LOGIN_FILE" | base64 -d > ~/.config/snapcraft/snapcraft.cfg
- run:
name: build snap
command: snapcraft --use-lxd
- run:
name: publish snap
command: snapcraft push *.snap --release << parameters.channel >>
build-and-push-image:
description: build and push docker images to public AWS ECR registry
executor: aws-cli/default
@@ -544,6 +647,11 @@ jobs:
default: "latest"
description: A comma-separated string containing docker image tags to build and push (default = latest)
target:
type: string
default: "lotus-all-in-one"
description: Docker target to build
steps:
- run:
name: Confirm that environment variables are set
@@ -583,6 +691,7 @@ jobs:
docker build \
<<#parameters.extra-build-args>><<parameters.extra-build-args>><</parameters.extra-build-args>> \
--target <<parameters.target>> \
-f <<parameters.path>>/<<parameters.dockerfile>> \
$docker_tag_args \
<<parameters.path>>
@@ -595,21 +704,55 @@ jobs:
docker push $<<parameters.account-url>>/<<parameters.repo>>:${tag}
done
publish-packer:
description: build and push AWS IAM and DigitalOcean droplet.
publish-packer-snap:
description: build packer image with snap. mainnet only.
executor:
name: packer/default
packer-version: 1.6.6
name: packer
steps:
- checkout
- attach_workspace:
at: "."
- packer/build:
template: tools/packer/lotus.pkr.hcl
args: "-var ci_workspace_bins=./linux -var lotus_network=mainnet -var git_tag=$CIRCLE_TAG"
- packer/build:
template: tools/packer/lotus.pkr.hcl
args: "-var ci_workspace_bins=./linux-calibnet -var lotus_network=calibrationnet -var git_tag=$CIRCLE_TAG"
- packer_build:
template: tools/packer/lotus-snap.pkr.hcl
publish-dockerhub:
description: publish to dockerhub
machine:
image: ubuntu-2004:202010-01
parameters:
tag:
type: string
default: latest
steps:
- checkout
- run:
name: dockerhub login
command: echo $DOCKERHUB_PASSWORD | docker login --username $DOCKERHUB_USERNAME --password-stdin
- run:
name: docker build
command: |
docker build --target lotus -t filecoin/lotus:<< parameters.tag >> -f Dockerfile.lotus .
docker build --target lotus-all-in-one -t filecoin/lotus-all-in-one:<< parameters.tag >> -f Dockerfile.lotus .
if [[ ! -z $CIRCLE_SHA1 ]]; then
docker build --target lotus -t filecoin/lotus:$CIRCLE_SHA1 -f Dockerfile.lotus .
docker build --target lotus-all-in-one -t filecoin/lotus-all-in-one:$CIRCLE_SHA1 -f Dockerfile.lotus .
fi
if [[ ! -z $CIRCLE_TAG ]]; then
docker build --target lotus -t filecoin/lotus:$CIRCLE_TAG -f Dockerfile.lotus .
docker build --target lotus-all-in-one -t filecoin/lotus-all-in-one:$CIRCLE_TAG -f Dockerfile.lotus .
fi
- run:
name: docker push
command: |
docker push filecoin/lotus:<< parameters.tag >>
docker push filecoin/lotus-all-in-one:<< parameters.tag >>
if [[ ! -z $CIRCLE_SHA1 ]]; then
docker push filecoin/lotus:$CIRCLE_SHA1
docker push filecoin/lotus-all-in-one:$CIRCLE_SHA1
fi
if [[ ! -z $CIRCLE_TAG ]]; then
docker push filecoin/lotus:$CIRCLE_TAG
docker push filecoin/lotus-all-in-one:$CIRCLE_TAG
fi
workflows:
version: 2.1
@@ -619,64 +762,234 @@ workflows:
concurrency: "16" # expend all docker 2xlarge CPUs.
- mod-tidy-check
- gofmt
- cbor-gen-check
- gen-check
- docs-check
- test:
codecov-upload: true
test-suite-name: full
- test-chain:
codecov-upload: true
test-suite-name: chain
packages: "./chain/..."
- test-node:
codecov-upload: true
test-suite-name: node
packages: "./node/..."
- test-storage:
codecov-upload: true
test-suite-name: storage
packages: "./storage/... ./extern/..."
- test-cli:
codecov-upload: true
test-suite-name: cli
packages: "./cli/... ./cmd/... ./api/..."
- test-window-post:
codecov-upload: true
go-test-flags: "-run=TestWindowedPost"
winpost-test: "1"
test-suite-name: window-post
- test-window-post-dispute:
codecov-upload: true
go-test-flags: "-run=TestWindowPostDispute"
winpost-test: "1"
test-suite-name: window-post-dispute
- test-terminate:
codecov-upload: true
go-test-flags: "-run=TestTerminate"
winpost-test: "1"
test-suite-name: terminate
- test-deadline-toggling:
codecov-upload: true
go-test-flags: "-run=TestDeadlineToggling"
deadline-test: "1"
test-suite-name: deadline-toggling
- test-short:
go-test-flags: "--timeout 10m --short"
test-suite-name: short
filters:
tags:
only:
- /^v\d+\.\d+\.\d+$/
name: test-itest-api
suite: itest-api
target: "./itests/api_test.go"
- test:
name: test-itest-batch_deal
suite: itest-batch_deal
target: "./itests/batch_deal_test.go"
- test:
name: test-itest-ccupgrade
suite: itest-ccupgrade
target: "./itests/ccupgrade_test.go"
- test:
name: test-itest-cli
suite: itest-cli
target: "./itests/cli_test.go"
- test:
name: test-itest-deadlines
suite: itest-deadlines
target: "./itests/deadlines_test.go"
- test:
name: test-itest-deals_512mb
suite: itest-deals_512mb
target: "./itests/deals_512mb_test.go"
- test:
name: test-itest-deals_anycid
suite: itest-deals_anycid
target: "./itests/deals_anycid_test.go"
- test:
name: test-itest-deals_concurrent
suite: itest-deals_concurrent
target: "./itests/deals_concurrent_test.go"
- test:
name: test-itest-deals_max_staging_deals
suite: itest-deals_max_staging_deals
target: "./itests/deals_max_staging_deals_test.go"
- test:
name: test-itest-deals_offline
suite: itest-deals_offline
target: "./itests/deals_offline_test.go"
- test:
name: test-itest-deals_padding
suite: itest-deals_padding
target: "./itests/deals_padding_test.go"
- test:
name: test-itest-deals_partial_retrieval_dm-level
suite: itest-deals_partial_retrieval_dm-level
target: "./itests/deals_partial_retrieval_dm-level_test.go"
- test:
name: test-itest-deals_partial_retrieval
suite: itest-deals_partial_retrieval
target: "./itests/deals_partial_retrieval_test.go"
- test:
name: test-itest-deals_power
suite: itest-deals_power
target: "./itests/deals_power_test.go"
- test:
name: test-itest-deals_pricing
suite: itest-deals_pricing
target: "./itests/deals_pricing_test.go"
- test:
name: test-itest-deals_publish
suite: itest-deals_publish
target: "./itests/deals_publish_test.go"
- test:
name: test-itest-deals_retry_deal_no_funds
suite: itest-deals_retry_deal_no_funds
target: "./itests/deals_retry_deal_no_funds_test.go"
- test:
name: test-itest-deals
suite: itest-deals
target: "./itests/deals_test.go"
- test:
name: test-itest-gateway
suite: itest-gateway
target: "./itests/gateway_test.go"
- test:
name: test-itest-get_messages_in_ts
suite: itest-get_messages_in_ts
target: "./itests/get_messages_in_ts_test.go"
- test:
name: test-itest-mempool
suite: itest-mempool
target: "./itests/mempool_test.go"
- test:
name: test-itest-multisig
suite: itest-multisig
target: "./itests/multisig_test.go"
- test:
name: test-itest-nonce
suite: itest-nonce
target: "./itests/nonce_test.go"
- test:
name: test-itest-paych_api
suite: itest-paych_api
target: "./itests/paych_api_test.go"
- test:
name: test-itest-paych_cli
suite: itest-paych_cli
target: "./itests/paych_cli_test.go"
- test:
name: test-itest-sdr_upgrade
suite: itest-sdr_upgrade
target: "./itests/sdr_upgrade_test.go"
- test:
name: test-itest-sector_finalize_early
suite: itest-sector_finalize_early
target: "./itests/sector_finalize_early_test.go"
- test:
name: test-itest-sector_make_cc_avail
suite: itest-sector_make_cc_avail
target: "./itests/sector_make_cc_avail_test.go"
- test:
name: test-itest-sector_miner_collateral
suite: itest-sector_miner_collateral
target: "./itests/sector_miner_collateral_test.go"
- test:
name: test-itest-sector_pledge
suite: itest-sector_pledge
target: "./itests/sector_pledge_test.go"
- test:
name: test-itest-sector_prefer_no_upgrade
suite: itest-sector_prefer_no_upgrade
target: "./itests/sector_prefer_no_upgrade_test.go"
- test:
name: test-itest-sector_revert_available
suite: itest-sector_revert_available
target: "./itests/sector_revert_available_test.go"
- test:
name: test-itest-sector_terminate
suite: itest-sector_terminate
target: "./itests/sector_terminate_test.go"
- test:
name: test-itest-self_sent_txn
suite: itest-self_sent_txn
target: "./itests/self_sent_txn_test.go"
- test:
name: test-itest-tape
suite: itest-tape
target: "./itests/tape_test.go"
- test:
name: test-itest-verifreg
suite: itest-verifreg
target: "./itests/verifreg_test.go"
- test:
name: test-itest-wdpost_dispute
suite: itest-wdpost_dispute
target: "./itests/wdpost_dispute_test.go"
- test:
name: test-itest-wdpost
suite: itest-wdpost
target: "./itests/wdpost_test.go"
- test:
name: test-itest-worker
suite: itest-worker
target: "./itests/worker_test.go"
- test:
name: test-unit-cli
suite: utest-unit-cli
target: "./cli/... ./cmd/... ./api/..."
- test:
name: test-unit-node
suite: utest-unit-node
target: "./node/..."
- test:
name: test-unit-rest
suite: utest-unit-rest
target: "./api/... ./blockstore/... ./build/... ./chain/... ./cli/... ./cmd/... ./conformance/... ./extern/... ./gateway/... ./journal/... ./lib/... ./markets/... ./node/... ./paychmgr/... ./storage/... ./tools/..."
- test:
name: test-unit-storage
suite: utest-unit-storage
target: "./storage/... ./extern/..."
- test:
go-test-flags: "-run=TestMulticoreSDR"
suite: multicore-sdr-check
target: "./extern/sector-storage/ffiwrapper"
proofs-log-test: "1"
- test-conformance:
test-suite-name: conformance
packages: "./conformance"
suite: conformance
codecov-upload: false
target: "./conformance"
- test-conformance:
name: test-conformance-bleeding-edge
test-suite-name: conformance-bleeding-edge
packages: "./conformance"
vectors-branch: master
- build-ntwk-calibration
- build-lotus-soup
codecov-upload: false
suite: conformance-bleeding-edge
target: "./conformance"
vectors-branch: specs-actors-v7
- trigger-testplans:
filters:
branches:
@@ -684,47 +997,104 @@ workflows:
- master
- build-debug
- build-all:
requires:
- test-short
filters:
tags:
only:
- /^v\d+\.\d+\.\d+$/
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- build-ntwk-calibration:
filters:
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- build-ntwk-butterfly:
filters:
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- build-lotus-soup
- build-macos:
requires:
- test-short
filters:
branches:
ignore:
- /.*/
tags:
only:
- /^v\d+\.\d+\.\d+$/
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- build-appimage:
filters:
branches:
ignore:
- /.*/
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- publish:
requires:
- build-all
- build-macos
- build-appimage
filters:
branches:
ignore:
- /.*/
tags:
only:
- /^v\d+\.\d+\.\d+$/
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- build-and-push-image:
dockerfile: Dockerfile.lotus
path: .
repo: lotus-dev
tag: '${CIRCLE_SHA1:0:8}'
- publish-packer:
requires:
- build-all
- build-ntwk-calibration
target: lotus-all-in-one
- build-and-push-image:
dockerfile: Dockerfile.lotus
path: .
repo: lotus-test
tag: '${CIRCLE_SHA1:0:8}'
target: lotus-test
- publish-snapcraft:
name: publish-snapcraft-stable
channel: stable
filters:
branches:
ignore:
- /.*/
tags:
only:
- /^v\d+\.\d+\.\d+$/
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- publish-dockerhub:
name: publish-dockerhub
tag: stable
filters:
branches:
ignore:
- /.*/
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
nightly:
triggers:
- schedule:
cron: "0 0 * * *"
filters:
branches:
only:
- master
jobs:
- publish-snapcraft:
name: publish-snapcraft-nightly
channel: edge
- publish-dockerhub:
name: publish-dockerhub-nightly
tag: nightly
monthly:
triggers:
- schedule:
cron: "0 0 1 * *"
filters:
branches:
only:
- master
jobs:
- publish-packer-snap
+136
View File
@@ -0,0 +1,136 @@
package main
import (
"embed"
"fmt"
"os"
"path/filepath"
"sort"
"strings"
"text/template"
)
//go:generate go run ./gen.go ..
//go:embed template.yml
var templateFile embed.FS
type (
dirs = []string
suite = string
)
// groupedUnitTests maps suite names to top-level directories that should be
// included in that suite. The program adds an implicit group "rest" that
// includes all other top-level directories.
var groupedUnitTests = map[suite]dirs{
"unit-node": {"node"},
"unit-storage": {"storage", "extern"},
"unit-cli": {"cli", "cmd", "api"},
}
func main() {
if len(os.Args) != 2 {
panic("expected path to repo as argument")
}
repo := os.Args[1]
tmpl := template.New("template.yml")
tmpl.Delims("[[", "]]")
tmpl.Funcs(template.FuncMap{
"stripSuffix": func(in string) string {
return strings.TrimSuffix(in, "_test.go")
},
})
tmpl = template.Must(tmpl.ParseFS(templateFile, "*"))
// list all itests.
itests, err := filepath.Glob(filepath.Join(repo, "./itests/*_test.go"))
if err != nil {
panic(err)
}
// strip the dir from all entries.
for i, f := range itests {
itests[i] = filepath.Base(f)
}
// calculate the exclusion set of unit test directories to exclude because
// they are already included in a grouped suite.
var excluded = map[string]struct{}{}
for _, ss := range groupedUnitTests {
for _, s := range ss {
e, err := filepath.Abs(filepath.Join(repo, s))
if err != nil {
panic(err)
}
excluded[e] = struct{}{}
}
}
// all unit tests top-level dirs that are not itests, nor included in other suites.
var rest = map[string]struct{}{}
err = filepath.Walk(repo, func(path string, f os.FileInfo, err error) error {
// include all tests that aren't in the itests directory.
if strings.Contains(path, "itests") {
return filepath.SkipDir
}
// exclude all tests included in other suites
if f.IsDir() {
if _, ok := excluded[path]; ok {
return filepath.SkipDir
}
}
if strings.HasSuffix(path, "_test.go") {
rel, err := filepath.Rel(repo, path)
if err != nil {
panic(err)
}
// take the first directory
rest[strings.Split(rel, string(os.PathSeparator))[0]] = struct{}{}
}
return err
})
if err != nil {
panic(err)
}
// add other directories to a 'rest' suite.
for k := range rest {
groupedUnitTests["unit-rest"] = append(groupedUnitTests["unit-rest"], k)
}
// map iteration guarantees no order, so sort the array in-place.
sort.Strings(groupedUnitTests["unit-rest"])
// form the input data.
type data struct {
ItestFiles []string
UnitSuites map[string]string
}
in := data{
ItestFiles: itests,
UnitSuites: func() map[string]string {
ret := make(map[string]string)
for name, dirs := range groupedUnitTests {
for i, d := range dirs {
dirs[i] = fmt.Sprintf("./%s/...", d) // turn into package
}
ret[name] = strings.Join(dirs, " ")
}
return ret
}(),
}
out, err := os.Create("./config.yml")
if err != nil {
panic(err)
}
defer out.Close()
// execute the template.
if err := tmpl.Execute(out, in); err != nil {
panic(err)
}
}
+905
View File
@@ -0,0 +1,905 @@
version: 2.1
orbs:
aws-cli: circleci/aws-cli@1.3.2
executors:
golang:
docker:
- image: cimg/go:1.17.9
resource_class: 2xlarge
ubuntu:
docker:
- image: ubuntu:20.04
packer:
description: |
The HashiCorp provided Packer container
parameters:
packer-version:
type: string
default: "1.8"
docker:
- image: hashicorp/packer:<< parameters.packer-version >>
commands:
install-deps:
steps:
- run: |
sudo apt update
sudo apt install python-is-python3
prepare:
parameters:
linux:
default: true
description: is a linux build environment?
type: boolean
darwin:
default: false
description: is a darwin build environment?
type: boolean
steps:
- checkout
- git_fetch_all_tags
- checkout
- when:
condition: << parameters.linux >>
steps:
- run: sudo apt-get update
- run: sudo apt-get install ocl-icd-opencl-dev libhwloc-dev
- run: git submodule sync
- run: git submodule update --init
download-params:
steps:
- restore_cache:
name: Restore parameters cache
keys:
- 'v26-2k-lotus-params'
paths:
- /var/tmp/filecoin-proof-parameters/
- run: ./lotus fetch-params 2048
- save_cache:
name: Save parameters cache
key: 'v26-2k-lotus-params'
paths:
- /var/tmp/filecoin-proof-parameters/
install_ipfs:
steps:
- run: |
apt update
apt install -y wget
wget https://github.com/ipfs/go-ipfs/releases/download/v0.4.22/go-ipfs_v0.4.22_linux-amd64.tar.gz
wget https://github.com/ipfs/go-ipfs/releases/download/v0.4.22/go-ipfs_v0.4.22_linux-amd64.tar.gz.sha512
if [ "$(sha512sum go-ipfs_v0.4.22_linux-amd64.tar.gz)" != "$(cat go-ipfs_v0.4.22_linux-amd64.tar.gz.sha512)" ]
then
echo "ipfs failed checksum check"
exit 1
fi
tar -xf go-ipfs_v0.4.22_linux-amd64.tar.gz
mv go-ipfs/ipfs /usr/local/bin/ipfs
chmod +x /usr/local/bin/ipfs
git_fetch_all_tags:
steps:
- run:
name: fetch all tags
command: |
git fetch --all
packer_build:
description: "Run a packer build"
parameters:
template:
description: |
The name of the packer template file
type: string
default: packer.json
args:
description: |
Arguments to pass to the packer build command
type: string
default: ""
steps:
- run:
name: "Run a packer build"
command: packer build << parameters.args >> << parameters.template >>
no_output_timeout: 30m
jobs:
mod-tidy-check:
executor: golang
steps:
- install-deps
- prepare
- run: go mod tidy -v
- run:
name: Check git diff
command: |
git --no-pager diff go.mod go.sum
git --no-pager diff --quiet go.mod go.sum
build-all:
executor: golang
steps:
- install-deps
- prepare
- run: sudo apt-get update
- run: sudo apt-get install npm
- run:
command: make buildall
- run:
name: check tag and version output match
command: ./scripts/version-check.sh ./lotus
- store_artifacts:
path: lotus
- store_artifacts:
path: lotus-miner
- store_artifacts:
path: lotus-worker
- run: mkdir linux && mv lotus lotus-miner lotus-worker linux/
- persist_to_workspace:
root: "."
paths:
- linux
build-debug:
executor: golang
steps:
- install-deps
- prepare
- run:
command: make debug
test:
description: |
Run tests with gotestsum.
parameters: &test-params
executor:
type: executor
default: golang
go-test-flags:
type: string
default: "-timeout 30m"
description: Flags passed to go test.
target:
type: string
default: "./..."
description: Import paths of packages to be tested.
proofs-log-test:
type: string
default: "0"
suite:
type: string
default: unit
description: Test suite name to report to CircleCI.
gotestsum-format:
type: string
default: standard-verbose
description: gotestsum format. https://github.com/gotestyourself/gotestsum#format
coverage:
type: string
default: -coverprofile=coverage.txt -coverpkg=github.com/filecoin-project/lotus/...
description: Coverage flag. Set to the empty string to disable.
codecov-upload:
type: boolean
default: true
description: |
Upload coverage report to https://codecov.io/. Requires the codecov API token to be
set as an environment variable for private projects.
executor: << parameters.executor >>
steps:
- install-deps
- prepare
- run:
command: make deps lotus
no_output_timeout: 30m
- download-params
- run:
name: go test
environment:
TEST_RUSTPROOFS_LOGS: << parameters.proofs-log-test >>
SKIP_CONFORMANCE: "1"
command: |
mkdir -p /tmp/test-reports/<< parameters.suite >>
mkdir -p /tmp/test-artifacts
gotestsum \
--format << parameters.gotestsum-format >> \
--junitfile /tmp/test-reports/<< parameters.suite >>/junit.xml \
--jsonfile /tmp/test-artifacts/<< parameters.suite >>.json \
-- \
<< parameters.coverage >> \
<< parameters.go-test-flags >> \
<< parameters.target >>
no_output_timeout: 30m
- store_test_results:
path: /tmp/test-reports
- store_artifacts:
path: /tmp/test-artifacts/<< parameters.suite >>.json
- when:
condition: << parameters.codecov-upload >>
steps:
- run:
shell: /bin/bash -eo pipefail
command: |
bash <(curl -s https://codecov.io/bash)
test-conformance:
description: |
Run tests using a corpus of interoperable test vectors for Filecoin
implementations to test their correctness and compliance with the Filecoin
specifications.
parameters:
<<: *test-params
vectors-branch:
type: string
default: ""
description: |
Branch on github.com/filecoin-project/test-vectors to checkout and
test with. If empty (the default) the commit defined by the git
submodule is used.
executor: << parameters.executor >>
steps:
- install-deps
- prepare
- run:
command: make deps lotus
no_output_timeout: 30m
- download-params
- when:
condition:
not:
equal: [ "", << parameters.vectors-branch >> ]
steps:
- run:
name: checkout vectors branch
command: |
cd extern/test-vectors
git fetch
git checkout origin/<< parameters.vectors-branch >>
- run:
name: install statediff globally
command: |
## statediff is optional; we succeed even if compilation fails.
mkdir -p /tmp/statediff
git clone https://github.com/filecoin-project/statediff.git /tmp/statediff
cd /tmp/statediff
go install ./cmd/statediff || exit 0
- run:
name: go test
environment:
SKIP_CONFORMANCE: "0"
command: |
mkdir -p /tmp/test-reports
mkdir -p /tmp/test-artifacts
gotestsum \
--format pkgname-and-test-fails \
--junitfile /tmp/test-reports/junit.xml \
-- \
-v -coverpkg ./chain/vm/,github.com/filecoin-project/specs-actors/... -coverprofile=/tmp/conformance.out ./conformance/
go tool cover -html=/tmp/conformance.out -o /tmp/test-artifacts/conformance-coverage.html
no_output_timeout: 30m
- store_test_results:
path: /tmp/test-reports
- store_artifacts:
path: /tmp/test-artifacts/conformance-coverage.html
build-ntwk-calibration:
description: |
Compile lotus binaries for the calibration network
parameters:
<<: *test-params
executor: << parameters.executor >>
steps:
- install-deps
- prepare
- run: make calibnet
- run: mkdir linux-calibrationnet && mv lotus lotus-miner lotus-worker linux-calibrationnet
- persist_to_workspace:
root: "."
paths:
- linux-calibrationnet
build-ntwk-butterfly:
description: |
Compile lotus binaries for the butterfly network
parameters:
<<: *test-params
executor: << parameters.executor >>
steps:
- install-deps
- prepare
- run: make butterflynet
- run: mkdir linux-butterflynet && mv lotus lotus-miner lotus-worker linux-butterflynet
- persist_to_workspace:
root: "."
paths:
- linux-butterflynet
build-lotus-soup:
description: |
Compile `lotus-soup` Testground test plan
parameters:
<<: *test-params
executor: << parameters.executor >>
steps:
- install-deps
- prepare
- run: cd extern/filecoin-ffi && make
- run:
name: "go get lotus@master"
command: cd testplans/lotus-soup && go mod edit -replace=github.com/filecoin-project/lotus=../.. && go mod tidy
- run:
name: "build lotus-soup testplan"
command: pushd testplans/lotus-soup && go build -tags=testground .
trigger-testplans:
description: |
Trigger `lotus-soup` test cases on TaaS
parameters:
<<: *test-params
executor: << parameters.executor >>
steps:
- install-deps
- prepare
- run:
name: "download testground"
command: wget https://gist.github.com/nonsense/5fbf3167cac79945f658771aed32fc44/raw/2e17eb0debf7ec6bdf027c1bdafc2c92dd97273b/testground-d3e9603 -O ~/testground-cli && chmod +x ~/testground-cli
- run:
name: "prepare .env.toml"
command: pushd testplans/lotus-soup && mkdir -p $HOME/testground && cp env-ci.toml $HOME/testground/.env.toml && echo 'endpoint="https://ci.testground.ipfs.team"' >> $HOME/testground/.env.toml && echo 'user="circleci"' >> $HOME/testground/.env.toml
- run:
name: "prepare testground home dir and link test plans"
command: mkdir -p $HOME/testground/plans && ln -s $(pwd)/testplans/lotus-soup $HOME/testground/plans/lotus-soup
- run:
name: "go get lotus@master"
command: cd testplans/lotus-soup && go get github.com/filecoin-project/lotus@master
- run:
name: "trigger deals baseline testplan on taas"
command: ~/testground-cli run composition -f $HOME/testground/plans/lotus-soup/_compositions/baseline-k8s-3-1.toml --metadata-commit=$CIRCLE_SHA1 --metadata-repo=filecoin-project/lotus --metadata-branch=$CIRCLE_BRANCH
- run:
name: "trigger payment channel stress testplan on taas"
command: ~/testground-cli run composition -f $HOME/testground/plans/lotus-soup/_compositions/paych-stress-k8s.toml --metadata-commit=$CIRCLE_SHA1 --metadata-repo=filecoin-project/lotus --metadata-branch=$CIRCLE_BRANCH
build-macos:
description: build darwin lotus binary
macos:
xcode: "12.5.0"
working_directory: ~/go/src/github.com/filecoin-project/lotus
steps:
- prepare:
linux: false
darwin: true
- run:
name: Install go
command: |
curl -O https://dl.google.com/go/go1.17.9.darwin-amd64.pkg && \
sudo installer -pkg go1.17.9.darwin-amd64.pkg -target /
- run:
name: Install pkg-config
command: HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config
- run: go version
- run:
name: Install Rust
command: |
curl https://sh.rustup.rs -sSf | sh -s -- -y
- run:
name: Install hwloc
command: |
mkdir ~/hwloc
curl --location https://download.open-mpi.org/release/hwloc/v2.4/hwloc-2.4.1.tar.gz --output ~/hwloc/hwloc-2.4.1.tar.gz
cd ~/hwloc
tar -xvzpf hwloc-2.4.1.tar.gz
cd hwloc-2.4.1
./configure && make && sudo make install
- restore_cache:
name: restore cargo cache
key: v3-go-deps-{{ arch }}-{{ checksum "~/go/src/github.com/filecoin-project/lotus/go.sum" }}
- install-deps
- run:
command: make build
no_output_timeout: 30m
- run:
name: check tag and version output match
command: ./scripts/version-check.sh ./lotus
- store_artifacts:
path: lotus
- store_artifacts:
path: lotus-miner
- store_artifacts:
path: lotus-worker
- run: mkdir darwin && mv lotus lotus-miner lotus-worker darwin/
- persist_to_workspace:
root: "."
paths:
- darwin
- save_cache:
name: save cargo cache
key: v3-go-deps-{{ arch }}-{{ checksum "~/go/src/github.com/filecoin-project/lotus/go.sum" }}
paths:
- "~/.rustup"
- "~/.cargo"
build-appimage:
machine:
image: ubuntu-2004:202111-02
steps:
- checkout
- attach_workspace:
at: "."
- run:
name: install appimage-builder
command: |
# appimage-builder requires /dev/snd to exist. It creates containers during the testing phase
# that pass sound devices from the host to the testing container. (hard coded!)
# https://github.com/AppImageCrafters/appimage-builder/blob/master/appimagebuilder/modules/test/execution_test.py#L54
# Circleci doesn't provide a working sound device; this is enough to fake it.
if [ ! -e /dev/snd ]
then
sudo mkdir /dev/snd
sudo mknod /dev/snd/ControlC0 c 1 2
fi
# docs: https://appimage-builder.readthedocs.io/en/latest/intro/install.html
sudo apt update
sudo apt install -y python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace
sudo curl -Lo /usr/local/bin/appimagetool https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
sudo chmod +x /usr/local/bin/appimagetool
sudo pip3 install appimage-builder
- run:
name: install lotus dependencies
command: sudo apt install ocl-icd-opencl-dev libhwloc-dev
- run:
name: build appimage
command: |
sed -i "s/version: latest/version: ${CIRCLE_TAG:-latest}/" AppImageBuilder.yml
make appimage
- run:
name: prepare workspace
command: |
mkdir appimage
mv Lotus-*.AppImage appimage
- persist_to_workspace:
root: "."
paths:
- appimage
gofmt:
executor: golang
steps:
- install-deps
- prepare
- run:
command: "! go fmt ./... 2>&1 | read"
gen-check:
executor: golang
steps:
- install-deps
- prepare
- run: make deps
- run: go install golang.org/x/tools/cmd/goimports
- run: go install github.com/hannahhoward/cbor-gen-for
- run: make gen
- run: git --no-pager diff
- run: git --no-pager diff --quiet
- run: make docsgen-cli
- run: git --no-pager diff
- run: git --no-pager diff --quiet
docs-check:
executor: golang
steps:
- install-deps
- prepare
- run: go install golang.org/x/tools/cmd/goimports
- run: zcat build/openrpc/full.json.gz | jq > ../pre-openrpc-full
- run: zcat build/openrpc/miner.json.gz | jq > ../pre-openrpc-miner
- run: zcat build/openrpc/worker.json.gz | jq > ../pre-openrpc-worker
- run: make deps
- run: make docsgen
- run: zcat build/openrpc/full.json.gz | jq > ../post-openrpc-full
- run: zcat build/openrpc/miner.json.gz | jq > ../post-openrpc-miner
- run: zcat build/openrpc/worker.json.gz | jq > ../post-openrpc-worker
- run: git --no-pager diff
- run: diff ../pre-openrpc-full ../post-openrpc-full
- run: diff ../pre-openrpc-miner ../post-openrpc-miner
- run: diff ../pre-openrpc-worker ../post-openrpc-worker
- run: git --no-pager diff --quiet
lint: &lint
description: |
Run golangci-lint.
parameters:
executor:
type: executor
default: golang
concurrency:
type: string
default: '2'
description: |
Concurrency used to run linters. Defaults to 2 because NumCPU is not
aware of container CPU limits.
args:
type: string
default: ''
description: |
Arguments to pass to golangci-lint
executor: << parameters.executor >>
steps:
- install-deps
- prepare
- run:
command: make deps
no_output_timeout: 30m
- run:
name: Lint
command: |
golangci-lint run -v --timeout 2m \
--concurrency << parameters.concurrency >> << parameters.args >>
lint-all:
<<: *lint
publish:
description: publish binary artifacts
executor: ubuntu
steps:
- run:
name: Install git jq curl
command: apt update && apt install -y git jq curl
- checkout
- git_fetch_all_tags
- checkout
- install_ipfs
- attach_workspace:
at: "."
- run:
name: Create bundles
command: ./scripts/build-bundle.sh
- run:
name: Publish release
command: ./scripts/publish-release.sh
publish-snapcraft:
description: build and push snapcraft
machine:
image: ubuntu-2004:202104-01
resource_class: 2xlarge
parameters:
channel:
type: string
default: "edge"
description: snapcraft channel
steps:
- checkout
- run:
name: install snapcraft
command: sudo snap install snapcraft --classic
- run:
name: create snapcraft config file
command: |
mkdir -p ~/.config/snapcraft
echo "$SNAPCRAFT_LOGIN_FILE" | base64 -d > ~/.config/snapcraft/snapcraft.cfg
- run:
name: build snap
command: snapcraft --use-lxd
- run:
name: publish snap
command: snapcraft push *.snap --release << parameters.channel >>
build-and-push-image:
description: build and push docker images to public AWS ECR registry
executor: aws-cli/default
parameters:
profile-name:
type: string
default: "default"
description: AWS profile name to be configured.
aws-access-key-id:
type: env_var_name
default: AWS_ACCESS_KEY_ID
description: >
AWS access key id for IAM role. Set this to the name of
the environment variable you will set to hold this
value, i.e. AWS_ACCESS_KEY.
aws-secret-access-key:
type: env_var_name
default: AWS_SECRET_ACCESS_KEY
description: >
AWS secret key for IAM role. Set this to the name of
the environment variable you will set to hold this
value, i.e. AWS_SECRET_ACCESS_KEY.
region:
type: env_var_name
default: AWS_REGION
description: >
Name of env var storing your AWS region information,
defaults to AWS_REGION
account-url:
type: env_var_name
default: AWS_ECR_ACCOUNT_URL
description: >
Env var storing Amazon ECR account URL that maps to an AWS account,
e.g. {awsAccountNum}.dkr.ecr.us-west-2.amazonaws.com
defaults to AWS_ECR_ACCOUNT_URL
dockerfile:
type: string
default: Dockerfile
description: Name of dockerfile to use. Defaults to Dockerfile.
path:
type: string
default: .
description: Path to the directory containing your Dockerfile and build context. Defaults to . (working directory).
extra-build-args:
type: string
default: ""
description: >
Extra flags to pass to docker build. For examples, see
https://docs.docker.com/engine/reference/commandline/build
repo:
type: string
description: Name of an Amazon ECR repository
tag:
type: string
default: "latest"
description: A comma-separated string containing docker image tags to build and push (default = latest)
target:
type: string
default: "lotus-all-in-one"
description: Docker target to build
steps:
- run:
name: Confirm that environment variables are set
command: |
if [ -z "$AWS_ACCESS_KEY_ID" ]; then
echo "No AWS_ACCESS_KEY_ID is set. Skipping build-and-push job ..."
circleci-agent step halt
fi
- aws-cli/setup:
profile-name: <<parameters.profile-name>>
aws-access-key-id: <<parameters.aws-access-key-id>>
aws-secret-access-key: <<parameters.aws-secret-access-key>>
aws-region: <<parameters.region>>
- run:
name: Log into Amazon ECR
command: |
aws ecr-public get-login-password --region $<<parameters.region>> --profile <<parameters.profile-name>> | docker login --username AWS --password-stdin $<<parameters.account-url>>
- checkout
- setup_remote_docker:
version: 19.03.13
docker_layer_caching: false
- run:
name: Build docker image
command: |
registry_id=$(echo $<<parameters.account-url>> | sed "s;\..*;;g")
docker_tag_args=""
IFS="," read -ra DOCKER_TAGS \<<< "<< parameters.tag >>"
for tag in "${DOCKER_TAGS[@]}"; do
docker_tag_args="$docker_tag_args -t $<<parameters.account-url>>/<<parameters.repo>>:$tag"
done
docker build \
<<#parameters.extra-build-args>><<parameters.extra-build-args>><</parameters.extra-build-args>> \
--target <<parameters.target>> \
-f <<parameters.path>>/<<parameters.dockerfile>> \
$docker_tag_args \
<<parameters.path>>
- run:
name: Push image to Amazon ECR
command: |
IFS="," read -ra DOCKER_TAGS \<<< "<< parameters.tag >>"
for tag in "${DOCKER_TAGS[@]}"; do
docker push $<<parameters.account-url>>/<<parameters.repo>>:${tag}
done
publish-packer-snap:
description: build packer image with snap. mainnet only.
executor:
name: packer
steps:
- checkout
- attach_workspace:
at: "."
- packer_build:
template: tools/packer/lotus-snap.pkr.hcl
publish-dockerhub:
description: publish to dockerhub
machine:
image: ubuntu-2004:202010-01
parameters:
tag:
type: string
default: latest
steps:
- checkout
- run:
name: dockerhub login
command: echo $DOCKERHUB_PASSWORD | docker login --username $DOCKERHUB_USERNAME --password-stdin
- run:
name: docker build
command: |
docker build --target lotus -t filecoin/lotus:<< parameters.tag >> -f Dockerfile.lotus .
docker build --target lotus-all-in-one -t filecoin/lotus-all-in-one:<< parameters.tag >> -f Dockerfile.lotus .
if [["[[ ! -z $CIRCLE_SHA1 ]]"]]; then
docker build --target lotus -t filecoin/lotus:$CIRCLE_SHA1 -f Dockerfile.lotus .
docker build --target lotus-all-in-one -t filecoin/lotus-all-in-one:$CIRCLE_SHA1 -f Dockerfile.lotus .
fi
if [["[[ ! -z $CIRCLE_TAG ]]"]]; then
docker build --target lotus -t filecoin/lotus:$CIRCLE_TAG -f Dockerfile.lotus .
docker build --target lotus-all-in-one -t filecoin/lotus-all-in-one:$CIRCLE_TAG -f Dockerfile.lotus .
fi
- run:
name: docker push
command: |
docker push filecoin/lotus:<< parameters.tag >>
docker push filecoin/lotus-all-in-one:<< parameters.tag >>
if [["[[ ! -z $CIRCLE_SHA1 ]]"]]; then
docker push filecoin/lotus:$CIRCLE_SHA1
docker push filecoin/lotus-all-in-one:$CIRCLE_SHA1
fi
if [["[[ ! -z $CIRCLE_TAG ]]"]]; then
docker push filecoin/lotus:$CIRCLE_TAG
docker push filecoin/lotus-all-in-one:$CIRCLE_TAG
fi
workflows:
version: 2.1
ci:
jobs:
- lint-all:
concurrency: "16" # expend all docker 2xlarge CPUs.
- mod-tidy-check
- gofmt
- gen-check
- docs-check
[[- range $file := .ItestFiles -]]
[[ with $name := $file | stripSuffix ]]
- test:
name: test-itest-[[ $name ]]
suite: itest-[[ $name ]]
target: "./itests/[[ $file ]]"
[[ end ]]
[[- end -]]
[[range $suite, $pkgs := .UnitSuites]]
- test:
name: test-[[ $suite ]]
suite: utest-[[ $suite ]]
target: "[[ $pkgs ]]"
[[- end]]
- test:
go-test-flags: "-run=TestMulticoreSDR"
suite: multicore-sdr-check
target: "./extern/sector-storage/ffiwrapper"
proofs-log-test: "1"
- test-conformance:
suite: conformance
codecov-upload: false
target: "./conformance"
- test-conformance:
name: test-conformance-bleeding-edge
codecov-upload: false
suite: conformance-bleeding-edge
target: "./conformance"
vectors-branch: specs-actors-v7
- trigger-testplans:
filters:
branches:
only:
- master
- build-debug
- build-all:
filters:
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- build-ntwk-calibration:
filters:
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- build-ntwk-butterfly:
filters:
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- build-lotus-soup
- build-macos:
filters:
branches:
ignore:
- /.*/
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- build-appimage:
filters:
branches:
ignore:
- /.*/
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- publish:
requires:
- build-all
- build-macos
- build-appimage
filters:
branches:
ignore:
- /.*/
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- build-and-push-image:
dockerfile: Dockerfile.lotus
path: .
repo: lotus-dev
tag: '${CIRCLE_SHA1:0:8}'
target: lotus-all-in-one
- build-and-push-image:
dockerfile: Dockerfile.lotus
path: .
repo: lotus-test
tag: '${CIRCLE_SHA1:0:8}'
target: lotus-test
- publish-snapcraft:
name: publish-snapcraft-stable
channel: stable
filters:
branches:
ignore:
- /.*/
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
- publish-dockerhub:
name: publish-dockerhub
tag: stable
filters:
branches:
ignore:
- /.*/
tags:
only:
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
nightly:
triggers:
- schedule:
cron: "0 0 * * *"
filters:
branches:
only:
- master
jobs:
- publish-snapcraft:
name: publish-snapcraft-nightly
channel: edge
- publish-dockerhub:
name: publish-dockerhub-nightly
tag: nightly
monthly:
triggers:
- schedule:
cron: "0 0 1 * *"
filters:
branches:
only:
- master
jobs:
- publish-packer-snap
+72 -18
View File
@@ -1,19 +1,73 @@
comment: off
ignore:
- "**/cbor_gen.go"
- "api/test/**/*"
- "api/test/*"
- "gen/**/*"
- "gen/*"
- "cmd/lotus-shed/*"
- "cmd/tvx/*"
- "cmd/lotus-pcr/*"
- "cmd/tvx/*"
- "cmd/lotus-chainwatch/*"
- "cmd/lotus-health/*"
- "cmd/lotus-fountain/*"
- "cmd/lotus-townhall/*"
- "cmd/lotus-stats/*"
- "cmd/lotus-pcr/*"
github_checks:
annotations: false
# Auto generated
- "^.*_gen.go$"
- "^.*/mock_full.go$"
# Old actors.
- "^chain/actors/builtin/[^/]*/(message|state|v)[0-4]\\.go$" # We test the latest version only.
# Tests
- "api/test/**"
- "conformance/**"
# Generators
- "gen/**"
- "chain/actors/agen/**"
# Non-critical utilities
- "api/docgen/**"
- "api/docgen-openrpc/**"
coverage:
status:
patch: off
project:
tools-and-tests:
target: auto
threshold: 1%
informational: true
paths:
- "testplans"
- "tools"
- "system"
- "snap"
- "lotuspond"
- "conformance"
- "scripts"
- "gen"
- "build"
markets:
target: auto
threshold: 1%
informational: false
paths:
- "markets"
- "paychmgr"
miner:
target: auto
threshold: 1.5%
informational: false
paths:
- "miner"
- "storage"
chain:
target: auto
threshold: 1%
informational: false
paths:
- "chain"
node:
target: auto
threshold: 1%
informational: false
paths:
- "node"
- "blockstore"
- "metrics"
- "lib"
- "genesis"
- "gateway"
- "api"
- "journal"
cli:
target: auto
threshold: 1%
informational: true
paths:
- "cli"
- "cmd"
+5 -15
View File
@@ -1,16 +1,6 @@
## filecoin-project/lotus CODEOWNERS
## Refer to https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners.
##
## These users or groups will be automatically assigned as reviewers every time
## a PR is submitted that modifies code in the specified locations.
##
## The Lotus repo configuration requires that at least ONE codeowner approves
## the PR before merging.
# Reference
# https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-code-owners
### Global owners.
* @magik6k @whyrusleeping @Kubuxu
### Conformance testing.
conformance/ @raulk
extern/test-vectors @raulk
cmd/tvx @raulk
# Global owners
# Ensure maintainers team is a requested reviewer for non-draft PRs
* @filecoin-project/lotus-maintainers
-33
View File
@@ -1,33 +0,0 @@
---
name: Bug Report
about: Create a report to help us improve
title: "[BUG] "
labels: hint/needs-triaging, kind/bug
assignees: ''
---
> Note: For security-related bugs/issues, please follow the [security policy](https://github.com/filecoin-project/lotus/security/policy).
**Describe the bug**
A clear and concise description of what the bug is.
(If you are not sure what the bug is, try to figure it out via a [discussion](https://github.com/filecoin-project/lotus/discussions/new) first!
**Version (run `lotus version`):**
**To Reproduce**
Steps to reproduce the behavior:
1. Run '...'
2. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Logs**
Provide daemon/miner/worker logs, and goroutines(if available) for troubleshooting.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Additional context**
Add any other context about the problem here.
+100
View File
@@ -0,0 +1,100 @@
name: "Bug Report"
description: "File a bug report to help us improve"
labels: [need/triage, kind/bug]
body:
- type: checkboxes
attributes:
label: Checklist
description: Please check off the following boxes before continuing to file a bug report!
options:
- label: This is **not** a security-related bug/issue. If it is, please follow please follow the [security policy](https://github.com/filecoin-project/lotus/security/policy).
required: true
- label: This is **not** a question or a support request. If you have any lotus related questions, please ask in the [lotus forum](https://github.com/filecoin-project/lotus/discussions).
required: true
- label: This is **not** a new feature request. If it is, please file a [feature request](https://github.com/filecoin-project/lotus/issues/new?assignees=&labels=need%2Ftriage%2Ckind%2Ffeature&template=feature_request.yml) instead.
required: true
- label: This is **not** an enhancement request. If it is, please file a [improvement suggestion](https://github.com/filecoin-project/lotus/issues/new?assignees=&labels=need%2Ftriage%2Ckind%2Fenhancement&template=enhancement.yml) instead.
required: true
- label: I **have** searched on the [issue tracker](https://github.com/filecoin-project/lotus/issues) and the [lotus forum](https://github.com/filecoin-project/lotus/discussions), and there is no existing related issue or discussion.
required: true
- label: I am running the [`Latest release`](https://github.com/filecoin-project/lotus/releases), or the most recent RC(release canadiate) for the upcoming release or the dev branch(master), or have an issue updating to any of these.
required: true
- label: I did not make any code changes to lotus.
required: false
- type: checkboxes
attributes:
label: Lotus component
description: Please select the lotus component you are filing a bug for
options:
- label: lotus daemon - chain sync
required: false
- label: lotus miner - mining and block production
required: false
- label: lotus miner/worker - sealing
required: false
- label: lotus miner - proving(WindowPoSt)
required: false
- label: lotus miner/market - storage deal
required: false
- label: lotus miner/market - retrieval deal
required: false
- label: lotus miner/market - data transfer
required: false
- label: lotus client
required: false
- label: lotus JSON-RPC API
required: false
- label: lotus message management (mpool)
required: false
- label: Other
required: false
- type: textarea
id: version
attributes:
label: Lotus Version
render: text
description: Enter the output of `lotus version` and `lotus-miner version` if applicable.
placeholder: |
e.g.
Daemon:1.11.0-rc2+debug+git.0519cd371.dirty+api1.3.0
Local: lotus version 1.11.0-rc2+debug+git.0519cd371.dirty
validations:
required: true
- type: textarea
id: Description
attributes:
label: Describe the Bug
description: |
This is where you get to tell us what went wrong, when doing so, please try to provide a clear and concise description of the bug with all related information:
* What you were doding when you experienced the bug?
* Any *error* messages you saw, *where* you saw them, and what you believe may have caused them (if you have any ideas).
* What is the expected behaviour?
* For sealing issues, include the output of `lotus-miner sectors status --log <sectorId>` for the failed sector(s).
* For proving issues, include the output of `lotus-miner proving` info.
* For deal making issues, include the output of `lotus client list-deals -v` and/or `lotus-miner storage-deals|retrieval-deals|data-transfers list [-v]` commands for the deal(s) in question.
validations:
required: true
- type: textarea
id: extraInfo
attributes:
label: Logging Information
render: text
description: |
Please provide debug logs of the problem, remember you can get set log level control for:
* lotus: use `lotus log list` to get all log systems available and set level by `lotus log set-level`. An example can be found [here](https://docs.filecoin.io/get-started/lotus/configuration-and-advanced-usage/#log-level-control).
* lotus-miner:`lotus-miner log list` to get all log systems available and set level by `lotus-miner log set-level
If you don't provide detailed logs when you raise the issue it will almost certainly be the first request I make before furthur diagnosing the problem.
validations:
required: true
- type: textarea
id: RepoSteps
attributes:
label: Repo Steps
description: "Steps to reproduce the behavior"
value: |
1. Run '...'
2. Do '...'
3. See error '...'
...
validations:
required: false
@@ -1,49 +0,0 @@
---
name: Deal Making Issues
about: Create a report for help with deal making failures.
title: "[Deal Making Issue]"
labels: hint/needs-triaging, area/markets
assignees: ''
---
> Note: For security-related bugs/issues, please follow the [security policy](https://github.com/filecoin-project/lotus/security/policy).
Please provide all the information requested here to help us troubleshoot "deal making failed" issues.
If the information requested is missing, we will probably have to just ask you to provide it anyway,
before we can help debug.
**Basic Information**
Including information like, Are you the client or the miner? Is this a storage deal or a retrieval deal? Is it an offline deal?
**Describe the problem**
A brief description of the problem you encountered while trying to make a deal.
**Version**
The output of `lotus --version`.
**Setup**
You miner(if applicable) and daemon setup, i.e: What hardware do you use, how much ram and etc.
**To Reproduce**
Steps to reproduce the behavior:
1. Run '...'
2. See error
**Deal status**
The output of `lotus client list-deals -v` and/or `lotus-miner storage-deals|retrieval-deals|data-transfers list [-v]` commands for the deal(s) in question.
**Lotus daemon and miner logs**
Please go through the logs of your daemon and miner(if applicable), and include screenshots of any error/warning-like messages you find.
Alternatively please upload full log files and share a link here
** Code modifications **
If you have modified parts of lotus, please describe which areas were modified,
and the scope of those modifications
+53
View File
@@ -0,0 +1,53 @@
name: Enhancement
description: Suggest an improvement to an existing lotus feature.
labels: [need/triage, kind/enhancement]
body:
- type: checkboxes
attributes:
label: Checklist
description: Please check off the following boxes before continuing to create an improvement suggestion!
options:
- label: This is **not** a new feature or an enhancement to the Filecoin protocol. If it is, please open an [FIP issue](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0001.md).
required: true
- label: This is **not** a new feature request. If it is, please file a [feature request](https://github.com/filecoin-project/lotus/issues/new?assignees=&labels=need%2Ftriage%2Ckind%2Ffeature&template=feature_request.yml) instead.
required: true
- label: This is **not** brainstorming ideas. If you have an idea you'd like to discuss, please open a new discussion on [the lotus forum](https://github.com/filecoin-project/lotus/discussions/categories/ideas) and select the category as `Ideas`.
required: true
- label: I **have** a specific, actionable, and well motivated improvement to propose.
required: true
- type: checkboxes
attributes:
label: Lotus component
description: Please select the lotus component you are filing an improvement request for
options:
- label: lotus daemon - chain sync
required: false
- label: lotus miner - mining and block production
required: false
- label: lotus miner/worker - sealing
required: false
- label: lotus miner - proving(WindowPoSt)
required: false
- label: lotus miner/market - storage deal
required: false
- label: lotus miner/market - retrieval deal
required: false
- label: lotus miner/market - data transfer
required: false
- label: lotus client
required: false
- label: lotus JSON-RPC API
required: false
- label: lotus message management (mpool)
required: false
- label: Other
required: false
- type: textarea
id: request
attributes:
label: Improvement Suggestion
description: A clear and concise description of what the motivation or the current problem is and what is the suggested improvement?
placeholder: Ex. Currently lotus... However, as a storage provider, I'd like...
validations:
required: true
-20
View File
@@ -1,20 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
title: "[Feature Request]"
labels: hint/needs-triaging
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
@@ -0,0 +1,72 @@
name: Feature request
description: Suggest an idea for lotus
labels: [need/triage, kind/feature]
body:
- type: checkboxes
attributes:
label: Checklist
description: Please check off the following boxes before continuing to create a new feature request!
options:
- label: This is **not** a new feature or an enhancement to the Filecoin protocol. If it is, please open an [FIP issue](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0001.md).
required: true
- label: This is **not** brainstorming ideas. If you have an idea you'd like to discuss, please open a new discussion on [the lotus forum](https://github.com/filecoin-project/lotus/discussions/categories/ideas) and select the category as `Ideas`.
required: true
- label: I **have** a specific, actionable, and well motivated feature request to propose.
required: true
- type: checkboxes
attributes:
label: Lotus component
description: Please select the lotus component you are filing a new feature request for
options:
- label: lotus daemon - chain sync
required: false
- label: lotus miner - mining and block production
required: false
- label: lotus miner/worker - sealing
required: false
- label: lotus miner - proving(WindowPoSt)
required: false
- label: lotus miner/market - storage deal
required: false
- label: lotus miner/market - retrieval deal
required: false
- label: lotus miner/market - data transfer
required: false
- label: lotus client
required: false
- label: lotus JSON-RPC API
required: false
- label: lotus message management (mpool)
required: false
- label: Other
required: false
- type: textarea
id: request
attributes:
label: What is the motivation behind this feature request? Is your feature request related to a problem? Please describe.
description: A clear and concise description of what the motivation or the problem is.
placeholder: Ex. I'm always frustrated when [...]
validations:
required: true
- type: textarea
id: solution
attributes:
label: Describe the solution you'd like
description: A clear and concise description of what you want to happen.
validations:
required: true
- type: textarea
id: alternates
attributes:
label: Describe alternatives you've considered
description: A clear and concise description of any alternative solutions or features you've considered.
validations:
required: false
- type: textarea
id: extra
attributes:
label: Additional context
description: Add any other context, design docs or screenshots about the feature request here.
validations:
required: false
-35
View File
@@ -1,35 +0,0 @@
---
name: Mining Issues
about: Create a report for help with mining failures.
title: "[Mining Issue]"
labels: hint/needs-triaging, area/mining
assignees: ''
---
> Note: For security-related bugs/issues, please follow the [security policy](https://github.com/filecoin-project/lotus/security/policy).
Please provide all the information requested here to help us troubleshoot "mining/WinningPoSt failed" issues.
If the information requested is missing, you may be asked you to provide it.
**Describe the problem**
A brief description of the problem you encountered while mining new blocks.
**Version**
The output of `lotus --version`.
**Setup**
You miner and daemon setup, including what hardware do you use, your environment variable settings, how do you run your miner and worker, do you use GPU and etc.
**Lotus daemon and miner logs**
Please go through the logs of your daemon and miner, and include screenshots of any error/warning-like messages you find, highlighting the one has "winning post" in it.
Alternatively please upload full log files and share a link here
** Code modifications **
If you have modified parts of lotus, please describe which areas were modified,
and the scope of those modifications
-46
View File
@@ -1,46 +0,0 @@
---
name: Proving Issues
about: Create a report for help with proving failures.
title: "[Proving Issue]"
labels: area/proving, hint/needs-triaging
assignees: ''
---
> Note: For security-related bugs/issues, please follow the [security policy](https://github.com/filecoin-project/lotus/security/policy).
Please provide all the information requested here to help us troubleshoot "proving/window PoSt failed" issues.
If the information requested is missing, we will probably have to just ask you to provide it anyway,
before we can help debug.
**Describe the problem**
A brief description of the problem you encountered while proving the storage.
**Version**
The output of `lotus --version`.
**Setup**
You miner and daemon setup, including what hardware do you use, your environment variable settings, how do you run your miner and worker, do you use GPU and etc.
**Proving status**
The output of `lotus-miner proving` info.
**Lotus miner logs**
Please go through the logs of your miner, and include screenshots of any error-like messages you find, highlighting the one has "window post" in it.
Alternatively please upload full log files and share a link here
**Lotus miner diagnostic info**
Please collect the following diagnostic information, and share a link here
* lotus-miner diagnostic info `lotus-miner info all > allinfo.txt`
** Code modifications **
If you have modified parts of lotus, please describe which areas were modified,
and the scope of those modifications
-50
View File
@@ -1,50 +0,0 @@
---
name: Sealing Issues
about: Create a report for help with sealing (commit) failures.
title: "[Sealing Issue]"
labels: hint/needs-triaging, area/sealing
assignees: ''
---
> Note: For security-related bugs/issues, please follow the [security policy](https://github.com/filecoin-project/lotus/security/policy).
Please provide all the information requested here to help us troubleshoot "commit failed" issues.
If the information requested is missing, we will probably have to just ask you to provide it anyway,
before we can help debug.
**Describe the problem**
A brief description of the problem you encountered while sealing a sector.
**Version**
The output of `lotus --version`.
**Setup**
You miner and daemon setup, including what hardware do you use, your environment variable settings, how do you run your miner and worker, do you use GPU and etc.
**Commands**
Commands you ran.
**Sectors status**
The output of `lotus-miner sectors status --log <sectorId>` for the failed sector(s).
**Lotus miner logs**
Please go through the logs of your miner, and include screenshots of any error-like messages you find.
Alternatively please upload full log files and share a link here
**Lotus miner diagnostic info**
Please collect the following diagnostic information, and share a link here
* lotus-miner diagnostic info `lotus-miner info all > allinfo`
** Code modifications **
If you have modified parts of lotus, please describe which areas were modified,
and the scope of those modifications
+21
View File
@@ -0,0 +1,21 @@
## Related Issues
<!-- link all issues that this PR might resolve/fix. If an issue doesn't exist, include a brief motivation for the change being made.-->
## Proposed Changes
<!-- provide a clear list of the changes being made-->
## Additional Info
<!-- callouts, links to documentation, and etc-->
## Checklist
Before you mark the PR ready for review, please make sure that:
- [ ] All commits have a clear commit message.
- [ ] The PR title is in the form of of `<PR type>: <area>: <change being made>`
- example: ` fix: mempool: Introduce a cache for valid signatures`
- `PR type`: _fix_, _feat_, _INTERFACE BREAKING CHANGE_, _CONSENSUS BREAKING_, _build_, _chore_, _ci_, _docs_,_perf_, _refactor_, _revert_, _style_, _test_
- `area`: _api_, _chain_, _state_, _vm_, _data transfer_, _market_, _mempool_, _message_, _block production_, _multisig_, _networking_, _paychan_, _proving_, _sealing_, _wallet_, _deps_
- [ ] This PR has tests for new functionality or change in behaviour
- [ ] If new user-facing features are introduced, clear usage guidelines and / or documentation updates should be included in https://lotus.filecoin.io or [Discussion Tutorials.](https://github.com/filecoin-project/lotus/discussions/categories/tutorials)
- [ ] CI is green
+69
View File
@@ -0,0 +1,69 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ master ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ master ]
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: [ 'go' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps:
- name: Checkout repository
uses: actions/checkout@v2
- uses: actions/setup-go@v1
with:
go-version: '1.17.9'
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
+33
View File
@@ -0,0 +1,33 @@
name: Close and mark stale issue
on:
schedule:
- cron: '0 12 * * *'
jobs:
stale:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: 'Oops, seems like we needed more information for this issue, please comment with more details or this issue will be closed in 24 hours.'
close-issue-message: 'This issue was closed because it is missing author input.'
stale-pr-message: 'Thank you for submitting the PR and contributing to lotus! Lotus maintainers need more of your input before merging it, please address the suggested changes or reply to the comments or this PR will be closed in 48 hours. You are always more than welcome to reopen the PR later as well!'
close-pr-message: 'This PR was closed because it is missing author input. Please feel free to reopen the PR when you get to it! Thank you for your interest in contributing to lotus!'
stale-issue-label: 'kind/stale'
stale-pr-label: 'kind/stale'
any-of-labels: 'need/author-input '
days-before-issue-stale: 3
days-before-issue-close: 1
days-before-pr-stale: 5
days-before-pr-close: 2
remove-stale-when-updated: true
enable-statistics: true
+14
View File
@@ -0,0 +1,14 @@
name: sync-master-main
on:
push:
branches:
- master
jobs:
sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: update remote branch main
run: |
# overrides the remote branch (origin:github) `main`
git push origin --force master:main
+29
View File
@@ -0,0 +1,29 @@
---
name: Testground PR Checker
on: [push]
jobs:
testground:
runs-on: ubuntu-latest
name: ${{ matrix.composition_file }}
strategy:
matrix:
include:
- backend_addr: ci.testground.ipfs.team
backend_proto: https
plan_directory: testplans/lotus-soup
composition_file: testplans/lotus-soup/_compositions/baseline-k8s-3-1.toml
- backend_addr: ci.testground.ipfs.team
backend_proto: https
plan_directory: testplans/lotus-soup
composition_file: testplans/lotus-soup/_compositions/paych-stress-k8s.toml
steps:
- uses: actions/checkout@v2
- name: testground run
uses: coryschwartz/testground-github-action@v1.1
with:
backend_addr: ${{ matrix.backend_addr }}
backend_proto: ${{ matrix.backend_proto }}
plan_directory: ${{ matrix.plan_directory }}
composition_file: ${{ matrix.composition_file }}
+7
View File
@@ -1,3 +1,6 @@
/AppDir
/appimage-builder-cache
*.AppImage
/lotus
/lotus-miner
/lotus-worker
@@ -5,6 +8,7 @@
/lotus-health
/lotus-chainwatch
/lotus-shed
/lotus-sim
/lotus-pond
/lotus-townhall
/lotus-fountain
@@ -14,6 +18,8 @@
/lotus-pcr
/lotus-wallet
/lotus-keygen
/docgen-md
/docgen-openrpc
/bench.json
/lotuspond/front/node_modules
/lotuspond/front/build
@@ -34,6 +40,7 @@ build/paramfetch.sh
/bundle
/darwin
/linux
*.snap
*-fuzz.zip
/chain/types/work_msg/
+11 -2
View File
@@ -16,10 +16,16 @@ linters:
- deadcode
- scopelint
# We don't want to skip builtin/
skip-dirs-use-default: false
skip-dirs:
- vendor$
- testdata$
- examples$
issues:
exclude:
- "func name will be used as test\\.Test.* by other packages, and that stutters; consider calling this"
- "by other packages, and that stutters; consider calling this"
- "Potential file inclusion via variable"
- "should have( a package)? comment"
- "Error return value of `logging.SetLogLevel` is not checked"
@@ -31,6 +37,9 @@ issues:
- "string .* has .* occurrences, make it a constant"
- "a blank import should be only in a main or test package, or have a comment justifying it"
- "package comment should be of the form"
- "Potential hardcoded credentials"
- "Use of weak random number generator"
- "xerrors.* is deprecated"
exclude-use-default: false
exclude-rules:
@@ -45,7 +54,7 @@ issues:
- path: build/params_.*\.go
linters:
- golint
- path: api/apistruct/struct.go
linters:
- golint
+1
View File
@@ -0,0 +1 @@
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" viewBox="0 0 127 127" xml:space="preserve" enable-background="new 0 0 127 127"><style type="text/css">.st0{fill:#00d2d6}.st1{fill:#fff}</style><g><path class="st0" d="M63.5,127C28.5,127.1-0.2,98.4,0,63.2C0.2,28.3,28.6-0.2,63.9,0c34.8,0.2,63.3,28.7,63.1,64 C126.7,98.7,98.5,127.1,63.5,127z M71.4,57.6c5.5,0.8,11,1.5,16.5,2.3c0.5-1.7,0.9-3.1,1.3-4.7c-5.7-0.8-11.2-1.7-17.1-2.5 c2-7,3.7-13.7,5.8-20.2c0.7-2.2,2.3-4.2,3.9-5.9c2.1-2.2,5-1.7,6.8,0.7c0.7,1,1.4,2.1,2.3,2.9c1.1,1.1,2.8,1.6,4,0.6 c0.8-0.7,0.7-2.4,0.8-3.6c0-0.5-0.6-1.1-1-1.6c-2-2.3-4.7-3.1-7.5-3.2c-6.3-0.3-10.9,3-14.5,7.8c-3.5,4.8-5.1,10.5-6.8,16.2 c-0.5,1.6-0.9,3.3-1.4,5.1c-6.2-0.9-12.1-1.7-18.2-2.6c-0.2,1.6-0.4,3.2-0.6,4.8c6,0.9,11.8,1.8,17.8,2.7c-0.8,3.4-1.5,6.5-2.3,9.7 c-5.8-0.8-11.4-1.6-17-2.4c-0.2,1.8-0.4,3.2-0.6,4.8c5.6,0.9,11,1.7,16.5,2.5c0,0.6,0.1,1,0,1.3c-1.7,7.4-3.4,14.8-5.3,22.2 c-0.9,3.5-2.4,6.9-5.3,9.3c-2.4,2-5,1.7-6.8-0.8c-0.8-1.1-1.5-2.5-2.6-3.3c-0.8-0.6-2.5-0.9-3.1-0.5c-0.9,0.7-1.5,2.2-1.4,3.3 c0.1,1,1,2.2,1.9,2.8c3,2.3,6.5,2.6,10,1.9c5.9-1.2,10.1-4.9,12.7-10.1c2-4.1,3.6-8.5,5-12.9c1.3-4,2.2-8,3.3-12.2 c5.8,0.8,11.5,1.7,17.3,2.5c0.5-1.7,0.9-3.2,1.4-4.8c-6.1-0.9-11.9-1.7-17.7-2.6C70.1,64,70.7,60.9,71.4,57.6z"/><path class="st1" d="M71.4,57.6c-0.7,3.3-1.3,6.4-2,9.8c5.9,0.9,11.7,1.7,17.7,2.6c-0.5,1.6-0.9,3.1-1.4,4.8 c-5.8-0.8-11.5-1.7-17.3-2.5c-1.1,4.2-2,8.3-3.3,12.2c-1.4,4.4-3,8.7-5,12.9c-2.6,5.2-6.8,8.9-12.7,10.1c-3.5,0.7-7,0.4-10-1.9 c-0.9-0.7-1.8-1.8-1.9-2.8c-0.1-1.1,0.5-2.7,1.4-3.3c0.6-0.5,2.3-0.1,3.1,0.5c1.1,0.8,1.8,2.1,2.6,3.3c1.8,2.5,4.4,2.9,6.8,0.8 c2.9-2.5,4.4-5.8,5.3-9.3c1.9-7.3,3.6-14.8,5.3-22.2c0.1-0.3,0-0.7,0-1.3c-5.4-0.8-10.8-1.7-16.5-2.5c0.2-1.6,0.4-3,0.6-4.8 c5.6,0.8,11.1,1.6,17,2.4c0.8-3.2,1.5-6.4,2.3-9.7c-6-0.9-11.7-1.8-17.8-2.7c0.2-1.6,0.4-3.2,0.6-4.8c6.1,0.9,12,1.7,18.2,2.6 c0.5-1.8,0.9-3.5,1.4-5.1c1.7-5.6,3.2-11.3,6.8-16.2c3.6-4.9,8.1-8.1,14.5-7.8c2.8,0.1,5.5,0.9,7.5,3.2c0.4,0.5,1,1.1,1,1.6 c-0.1,1.2,0,2.9-0.8,3.6c-1.1,1.1-2.8,0.5-4-0.6c-0.9-0.9-1.6-1.9-2.3-2.9c-1.8-2.4-4.7-2.9-6.8-0.7c-1.6,1.7-3.2,3.7-3.9,5.9 C75.7,39.4,74,46,72,53c5.9,0.9,11.4,1.7,17.1,2.5c-0.5,1.6-0.9,3.1-1.3,4.7C82.3,59.1,76.9,58.3,71.4,57.6z"/></g></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

+73
View File
@@ -0,0 +1,73 @@
version: 1
AppDir:
path: ./AppDir
app_info:
id: io.filecoin.lotus
name: Lotus
icon: icon
version: latest
exec: usr/bin/lotus
exec_args: $@
apt:
arch: amd64
allow_unauthenticated: true
sources:
- sourceline: deb http://archive.ubuntu.com/ubuntu/ focal main restricted
- sourceline: deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted
- sourceline: deb http://archive.ubuntu.com/ubuntu/ focal universe
- sourceline: deb http://archive.ubuntu.com/ubuntu/ focal-updates universe
- sourceline: deb http://archive.ubuntu.com/ubuntu/ focal multiverse
- sourceline: deb http://archive.ubuntu.com/ubuntu/ focal-updates multiverse
- sourceline: deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted
universe multiverse
- sourceline: deb http://security.ubuntu.com/ubuntu focal-security main restricted
- sourceline: deb http://security.ubuntu.com/ubuntu focal-security universe
- sourceline: deb http://security.ubuntu.com/ubuntu focal-security multiverse
- sourceline: deb https://cli-assets.heroku.com/apt ./
- sourceline: deb http://ppa.launchpad.net/openjdk-r/ppa/ubuntu focal main
- sourceline: deb http://ppa.launchpad.net/git-core/ppa/ubuntu focal main
- sourceline: deb http://archive.canonical.com/ubuntu focal partner
include:
- ocl-icd-libopencl1
- libhwloc15
exclude: []
files:
include:
- /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
- /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
- /usr/lib/x86_64-linux-gnu/libm-2.31.so
- /usr/lib/x86_64-linux-gnu/libdl-2.31.so
- /usr/lib/x86_64-linux-gnu/libc-2.31.so
- /usr/lib/x86_64-linux-gnu/libudev.so.1.6.17
exclude:
- usr/share/man
- usr/share/doc/*/README.*
- usr/share/doc/*/changelog.*
- usr/share/doc/*/NEWS.*
- usr/share/doc/*/TODO.*
test:
fedora:
image: appimagecrafters/tests-env:fedora-30
command: ./AppRun
use_host_x: false
debian:
image: appimagecrafters/tests-env:debian-stable
command: ./AppRun
use_host_x: false
arch:
image: appimagecrafters/tests-env:archlinux-latest
command: ./AppRun
use_host_x: false
centos:
image: appimagecrafters/tests-env:centos-7
command: ./AppRun
use_host_x: false
ubuntu:
image: appimagecrafters/tests-env:ubuntu-xenial
command: ./AppRun
use_host_x: false
AppImage:
arch: x86_64
update-information: guess
sign-key: None
+1821 -75
View File
File diff suppressed because it is too large Load Diff
+189 -7
View File
@@ -1,4 +1,4 @@
FROM golang:1.15.6 AS builder-deps
FROM golang:1.17.9-buster AS builder-deps
MAINTAINER Lotus Development Team
RUN apt-get update && apt-get install -y ca-certificates build-essential clang ocl-icd-opencl-dev ocl-icd-libopencl1 jq libhwloc-dev
@@ -28,6 +28,14 @@ WORKDIR /opt/filecoin
RUN make clean deps
FROM builder-local AS builder-test
MAINTAINER Lotus Development Team
WORKDIR /opt/filecoin
RUN make debug
FROM builder-local AS builder
MAINTAINER Lotus Development Team
@@ -36,7 +44,7 @@ WORKDIR /opt/filecoin
ARG RUSTFLAGS=""
ARG GOFLAGS=""
RUN make deps lotus lotus-miner lotus-worker lotus-shed lotus-chainwatch lotus-stats
RUN make lotus lotus-miner lotus-worker lotus-shed lotus-wallet lotus-gateway lotus-stats
FROM ubuntu:20.04 AS base
@@ -53,22 +61,196 @@ COPY --from=builder /usr/lib/x86_64-linux-gnu/libnuma.so.1 /lib/
COPY --from=builder /usr/lib/x86_64-linux-gnu/libhwloc.so.5 /lib/
COPY --from=builder /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /lib/
RUN useradd -r -u 532 -U fc
RUN useradd -r -u 532 -U fc \
&& mkdir -p /etc/OpenCL/vendors \
&& echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd
###
FROM base AS lotus
MAINTAINER Lotus Development Team
COPY --from=builder /opt/filecoin/lotus /usr/local/bin/
COPY --from=builder /opt/filecoin/lotus /usr/local/bin/
COPY --from=builder /opt/filecoin/lotus-shed /usr/local/bin/
COPY scripts/docker-lotus-entrypoint.sh /
ENV FILECOIN_PARAMETER_CACHE /var/tmp/filecoin-proof-parameters
ENV LOTUS_PATH /var/lib/lotus
ENV DOCKER_LOTUS_IMPORT_SNAPSHOT https://fil-chain-snapshots-fallback.s3.amazonaws.com/mainnet/minimal_finality_stateroots_latest.car
ENV DOCKER_LOTUS_IMPORT_WALLET ""
RUN mkdir /var/lib/lotus /var/tmp/filecoin-proof-parameters && chown fc /var/lib/lotus /var/tmp/filecoin-proof-parameters
RUN mkdir /var/lib/lotus /var/tmp/filecoin-proof-parameters
RUN chown fc: /var/lib/lotus /var/tmp/filecoin-proof-parameters
VOLUME /var/lib/lotus
VOLUME /var/tmp/filecoin-proof-parameters
USER fc
ENTRYPOINT ["/usr/local/bin/lotus"]
EXPOSE 1234
ENTRYPOINT ["/docker-lotus-entrypoint.sh"]
CMD ["-help"]
###
FROM base AS lotus-wallet
MAINTAINER Lotus Development Team
COPY --from=builder /opt/filecoin/lotus-wallet /usr/local/bin/
ENV WALLET_PATH /var/lib/lotus-wallet
RUN mkdir /var/lib/lotus-wallet
RUN chown fc: /var/lib/lotus-wallet
VOLUME /var/lib/lotus-wallet
USER fc
EXPOSE 1777
ENTRYPOINT ["/usr/local/bin/lotus-wallet"]
CMD ["-help"]
###
FROM base AS lotus-gateway
MAINTAINER Lotus Development Team
COPY --from=builder /opt/filecoin/lotus-gateway /usr/local/bin/
USER fc
EXPOSE 1234
ENTRYPOINT ["/usr/local/bin/lotus-gateway"]
CMD ["-help"]
###
FROM base AS lotus-miner
MAINTAINER Lotus Development Team
COPY --from=builder /opt/filecoin/lotus-miner /usr/local/bin/
COPY scripts/docker-lotus-miner-entrypoint.sh /
ENV FILECOIN_PARAMETER_CACHE /var/tmp/filecoin-proof-parameters
ENV LOTUS_MINER_PATH /var/lib/lotus-miner
RUN mkdir /var/lib/lotus-miner /var/tmp/filecoin-proof-parameters
RUN chown fc: /var/lib/lotus-miner /var/tmp/filecoin-proof-parameters
VOLUME /var/lib/lotus-miner
VOLUME /var/tmp/filecoin-proof-parameters
USER fc
EXPOSE 2345
ENTRYPOINT ["/docker-lotus-miner-entrypoint.sh"]
CMD ["-help"]
###
FROM base AS lotus-worker
MAINTAINER Lotus Development Team
COPY --from=builder /opt/filecoin/lotus-worker /usr/local/bin/
ENV FILECOIN_PARAMETER_CACHE /var/tmp/filecoin-proof-parameters
ENV LOTUS_WORKER_PATH /var/lib/lotus-worker
RUN mkdir /var/lib/lotus-worker
RUN chown fc: /var/lib/lotus-worker
VOLUME /var/lib/lotus-worker
USER fc
EXPOSE 3456
ENTRYPOINT ["/usr/local/bin/lotus-worker"]
CMD ["-help"]
###
from base as lotus-all-in-one
ENV FILECOIN_PARAMETER_CACHE /var/tmp/filecoin-proof-parameters
ENV LOTUS_MINER_PATH /var/lib/lotus-miner
ENV LOTUS_PATH /var/lib/lotus
ENV LOTUS_WORKER_PATH /var/lib/lotus-worker
ENV WALLET_PATH /var/lib/lotus-wallet
ENV DOCKER_LOTUS_IMPORT_SNAPSHOT https://fil-chain-snapshots-fallback.s3.amazonaws.com/mainnet/minimal_finality_stateroots_latest.car
COPY --from=builder /opt/filecoin/lotus /usr/local/bin/
COPY --from=builder /opt/filecoin/lotus-shed /usr/local/bin/
COPY --from=builder /opt/filecoin/lotus-wallet /usr/local/bin/
COPY --from=builder /opt/filecoin/lotus-gateway /usr/local/bin/
COPY --from=builder /opt/filecoin/lotus-miner /usr/local/bin/
COPY --from=builder /opt/filecoin/lotus-worker /usr/local/bin/
COPY --from=builder /opt/filecoin/lotus-stats /usr/local/bin/
RUN mkdir /var/tmp/filecoin-proof-parameters
RUN mkdir /var/lib/lotus
RUN mkdir /var/lib/lotus-miner
RUN mkdir /var/lib/lotus-worker
RUN mkdir /var/lib/lotus-wallet
RUN chown fc: /var/tmp/filecoin-proof-parameters
RUN chown fc: /var/lib/lotus
RUN chown fc: /var/lib/lotus-miner
RUN chown fc: /var/lib/lotus-worker
RUN chown fc: /var/lib/lotus-wallet
VOLUME /var/tmp/filecoin-proof-parameters
VOLUME /var/lib/lotus
VOLUME /var/lib/lotus-miner
VOLUME /var/lib/lotus-worker
VOLUME /var/lib/lotus-wallet
EXPOSE 1234
EXPOSE 2345
EXPOSE 3456
EXPOSE 1777
###
from base as lotus-test
ENV FILECOIN_PARAMETER_CACHE /var/tmp/filecoin-proof-parameters
ENV LOTUS_MINER_PATH /var/lib/lotus-miner
ENV LOTUS_PATH /var/lib/lotus
ENV LOTUS_WORKER_PATH /var/lib/lotus-worker
ENV WALLET_PATH /var/lib/lotus-wallet
COPY --from=builder-test /opt/filecoin/lotus /usr/local/bin/
COPY --from=builder-test /opt/filecoin/lotus-miner /usr/local/bin/
COPY --from=builder-test /opt/filecoin/lotus-worker /usr/local/bin/
COPY --from=builder-test /opt/filecoin/lotus-seed /usr/local/bin/
RUN mkdir /var/tmp/filecoin-proof-parameters
RUN mkdir /var/lib/lotus
RUN mkdir /var/lib/lotus-miner
RUN mkdir /var/lib/lotus-worker
RUN mkdir /var/lib/lotus-wallet
RUN chown fc: /var/tmp/filecoin-proof-parameters
RUN chown fc: /var/lib/lotus
RUN chown fc: /var/lib/lotus-miner
RUN chown fc: /var/lib/lotus-worker
RUN chown fc: /var/lib/lotus-wallet
VOLUME /var/tmp/filecoin-proof-parameters
VOLUME /var/lib/lotus
VOLUME /var/lib/lotus-miner
VOLUME /var/lib/lotus-worker
VOLUME /var/lib/lotus-wallet
EXPOSE 1234
EXPOSE 2345
EXPOSE 3456
EXPOSE 1777
+142
View File
@@ -0,0 +1,142 @@
<!-- TOC -->
- [`lotus` Release Flow](#lotus-release-flow)
- [Purpose](#purpose)
- [High-level Summary](#high-level-summary)
- [Motivation and Requirements](#motivation-and-requirements)
- [Adopted Conventions](#adopted-conventions)
- [Major Releases](#major-releases)
- [Mandatory Releases](#mandatory-releases)
- [Feature Releases](#feature-releases)
- [Examples Scenarios](#examples-scenarios)
- [Release Cycle](#release-cycle)
- [Patch Releases](#patch-releases)
- [Performing a Release](#performing-a-release)
- [Security Fix Policy](#security-fix-policy)
- [FAQ](#faq)
- [Why aren't Go major versions used more?](#why-arent-go-major-versions-used-more)
- [Related Items](#related-items)
<!-- /TOC -->
# `lotus` Release Flow
## Purpose
This document aims to describe how the Lotus team plans to ship releases of the Lotus implementation of Filecoin network. Interested parties can expect new releases to come out as described in this document.
## High-level Summary
- **Major releases** (1.0.0, 2.0.0, etc.) are reserved for significant changes to the Filecoin protocol that transform the network and its usecases. Such changes could include the addition of new Virtual Machines to the protocol, major upgrades to the Proofs of Replication used by Filecoin, etc.
- Even minor releases (1.2.0, 1.4.0, etc.) of the Lotus software correspond to **mandatory releases** as they ship Filecoin network upgrades. Users **must** upgrade to these releases before a certain time in order to keep in sync with the Filecoin network. We aim to ensure there is at least one week before the upgrade deadline.
- Patch versions of even minor releases (1.2.1, 1.4.2, etc.) correspond to **hotfix releases**. Such releases will only be shipped when a critical fix is needed to be applied on top of a mandatory release.
- Odd minor releases (1.3.0, 1.5.0, etc.), as well as patch releases in these series (1.3.1, 1.5.2, etc.) correspond to **feature releases** with new development and bugfixes. These releases are not mandatory, but still highly recommended, **as they may contain critical security fixes**.
- We aim to ship a new feature release of the Lotus software every 3 weeks, so users can expect a regular cadence of Lotus feature releases. Note that mandatory releases for network upgrades may disrupt this schedule.
## Motivation and Requirements
Our primary motivation is for users of the Lotus software (storage providers, storage clients, developers, etc.) to have a clear idea about when they can expect Lotus releases, and what they can expect in a release.
In order to achieve this, we need the following from our release process and conventions:
- Lotus version conventions make it immediately obvious whether a new Lotus release is mandatory or not. A release is mandatory if it ships a network upgrade to the Filecoin protocol.
- The ability to ship critical fixes on top of mandatory releases, so as to avoid forcing users to consume larger unrelated changes.
- A regular cadence of feature releases, so that users can know when a new Lotus release will be available for consumption.
- The ability to ship any number of feature releases between two mandatory releases.
- A clear description of the various stages of testing that a Lotus Release Candidate (RC) goes through.
- Lotus Release issues will present a single source of truth for what may be contained in Lotus releases, including security fixes, and how they will be disclosed.
## Adopted Conventions
This section describes the conventions we have adopted. Users of Lotus are encouraged to review this in detail so as to be informed when new Lotus releases are shipped.
### Major Releases
Bumps to the Lotus major version number (1.0.0, 2.0.0, etc.) are reserved for significant changes to the Filecoin protocol that dramatically transform the network itself. Such changes could include the addition of new Virtual Machines to the protocol, major upgrades to the Proofs of Replication used by Filecoin, etc. These releases are expected to take lots of time to develop and will be rare. See also "Why aren't Go major versions used more?" below.
### Mandatory Releases
Even bumps to the Lotus minor version number (1.2.0, 1.4.0, etc.) are reserved for **mandatory releases** that ship Filecoin network upgrades. Users **must** upgrade to these releases before a certain time in order to keep in sync with the Filecoin network.
Depending on the scope of the upgrade, these releases may take up to several weeks to fully develop and test. We aim to ensure there are at least 2 weeks between the publication of the final Lotus release and the Filecoin network upgrade deadline.
These releases do not follow a regular cadence, as they are developed in lockstep with the other implementations of the Filecoin protocol. As of August 2021, the developers aim to ship 3-4 Filecoin network upgrades a year, though smaller security-critical upgrades may occur unpredictably.
Mandatory releases are somewhat sensitive since all Lotus users are forced to upgrade to them at the same time. As a result, they will be shipped on top of the most recent stable release of Lotus, which will generally be the latest Lotus release that has been in production for more than 2 weeks. (Note: given this rule, the basis of a mandatory release could be a mandatory release or a feature release depending on timing). Mandatory releases will not include any new feature development or bugfixes that haven't already baked in production for 2+ weeks, except for the changes needed for the network upgrade itself. Further, any critical fixes that are needed after the network upgrade will be shipped as patch version bumps to the mandatory release (1.2.1, 1.2.2, etc.) This prevents users from being forced to quickly digest unnecessary changes.
Users should generally aim to always upgrade to a new even minor version release since they either introduce a mandatory network upgrade or a critical fix.
### Feature Releases
All releases under an odd minor version number indicate **feature releases**. These could include releases such as 1.3.0, 1.3.1, 1.5.2, etc.
Feature releases include new development and bug fixes. They are not mandatory, but still highly recommended, **as they may contain critical security fixes**. Note that some of these releases may be very small patch releases that include critical hotfixes. There is no way to distinguish between a bug fix release and a feature release on the "feature" version. Both cases will use the "patch" version number.
We aim to ship a new feature release of the Lotus software from our development (master) branch every 3 weeks, so users can expect a regular cadence of Lotus feature releases. Note that mandatory releases for network upgrades may disrupt this schedule. For more, see the Release Cycle section (TODO: Link).
### Examples Scenarios
- **Scenario 1**: **Lotus 1.12.0 shipped a network upgrade, and no network upgrades are needed for a long while.**
In this case, the next feature release will be Lotus 1.13.0. In three-week intervals, we will ship Lotus 1.13.1, 1.13.2, and 1.13.3, all containing new features and bug fixes.
Let us assume that after the release of 1.13.3, a critical issue is discovered and a hotfix quickly developed. This hotfix will then be shipped in **both** 1.12.1 and 1.13.4. Users who have already upgrade to the 1.13 series can simply upgrade to 1.13.4. Users who have chosen to still be on 1.12.0, however, can use 1.12.1 to patch the critical issue without being forced to consume all the changes in the 1.13 series.
- **Scenario 2**: **Lotus 1.12.0 shipped a network upgrade, but the need for an unexpected network upgrade soon arises**
In this case, the Lotus 1.13 series will be dropped entirely, including any RCs that may have been undergoing testing. Instead, the network upgrade will be shipped as Lotus 1.14.0, built on top of Lotus 1.12.0. It will thus include no unnecessary changes, only the work needed to support the new network upgrade.
Any changes that were being worked on in the 1.13.0 series will then get applied on top of Lotus 1.14.0 and get shipped as Lotus 1.15.0.
## Release Cycle
A mandatory release process should take about 3-6 weeks, depending on the amount and the overall complexity of new features being introduced to the network protocol. It may also be shorter if there is a network incident that requires an emergency upgrade. A feature release process should take about 2-3 weeks.
The start time of the mandatory release process is subject to the network upgrade timeline. We will start a new feature release process every 3 weeks on Tuesdays, regardless of when the previous release landed unless it's still ongoing.
### Patch Releases
**Mandatory Release**
If we encounter a serious bug in a mandatory release post a network upgrade, we will create a patch release based on this release. Strictly only the fix to the bug will be included in the patch, and the bug fix will be backported to the master (dev) branch, and any ongoing feature release branch if applicable.
Patch release process for the mandatory releases will follow a compressed release cycle from hours to days depending on the severity and the impact to the network of the bug. In a patch release:
1. Automated and internal testing (stage 0 and 1) will be compressed into a few hours.
2. Stage 2-3 will be skipped or shortened case by case.
Some patch releases, especially ones fixing one or more complex bugs that doesn't require a follow-up mandatory upgrade, may undergo the full release process.
**Feature Release**
Patch releases in odd minor releases (1.3.0, 1.5.0, etc.) like 1.3.1, 1.5.2 and etc are corresponding to another **feature releases** with new development and bugfixes. These releases are not mandatory, but still **highly** recommended, **as they may contain critical security fixes**.
---
### Performing a Release
At the beginning of each release cycle, we will generate our "Release tracking issue", which is populated with the content at [https://github.com/filecoin-project/lotus/blob/master/documentation/misc/RELEASE_ISSUE_TEMPLATE.md](https://github.com/filecoin-project/lotus/blob/master/documentation/misc/RELEASE_ISSUE_TEMPLATE.md)
This template will be used to track major goals we have, a planned shipping date, and a complete release checklist tied to a specific release.
### Security Fix Policy
Any release may contain security fixes. Unless the fix addresses a bug being exploited in the wild, the fix will *not* be called out in the release notes. Please make sure to update ASAP.
By policy, the team will usually wait until about 3 weeks after the final release to announce any fixed security issues. However, depending on the impact and ease of discovery of the issue, the team may wait more or less time.
It is important to always update to the latest version ASAP and file issues if you're unable to update for some reason.
Finally, unless a security issue is actively being exploited or a significant number of users are unable to update to the latest version (e.g., due to a difficult migration, breaking changes, etc.), security fixes will *not* be backported to previous releases.
## FAQ
### Why aren't Go major versions used more?
Golang tightly couples source code with versioning (major versions beyond v1 leak into import paths). This poses logistical difficulties to using major versions here. Concretely, if we were to pick a policy that bumped the major version on every network upgrade, we would disrupt every single downstream library/application that consumed the native Lotus API (e.g., libraries depending on the JSON-RPC client, testground tests). They would need to update their code every single time that we released a network breaking change, even if it brought on zero expectation of breakage for the Golang APIs that they depend on. In this scenario, we are signaling breakage on the wrong API surface! We're signaling breakage on the Go level, when what breaks is the network protocol.
## Related Items
1. [Release Issue template](https://github.com/filecoin-project/lotus/blob/master/documentation/misc/RELEASE_ISSUE_TEMPLATE.md)
2. [Lotus Release Flow Discussion](https://github.com/filecoin-project/lotus/discussions/7053): Leave a comment if you have any questions or feedbacks with regard to the lotus release flow.
+117 -88
View File
@@ -5,10 +5,12 @@ all: build
unexport GOFLAGS
GOVERSION:=$(shell go version | cut -d' ' -f 3 | sed 's/^go//' | awk -F. '{printf "%d%03d%03d", $$1, $$2, $$3}')
ifeq ($(shell expr $(GOVERSION) \< 1015005), 1)
GOCC?=go
GOVERSION:=$(shell $(GOCC) version | tr ' ' '\n' | grep go1 | sed 's/^go//' | awk -F. '{printf "%d%03d%03d", $$1, $$2, $$3}')
ifeq ($(shell expr $(GOVERSION) \< 1016000), 1)
$(warning Your Golang version is go$(shell expr $(GOVERSION) / 1000000).$(shell expr $(GOVERSION) % 1000000 / 1000).$(shell expr $(GOVERSION) % 1000))
$(error Update Golang to version to at least 1.15.5)
$(error Update Golang to version to at least 1.17.9)
endif
# git modules that need to be loaded
@@ -42,12 +44,11 @@ BUILD_DEPS+=build/.filecoin-install
CLEAN+=build/.filecoin-install
ffi-version-check:
@[[ "$$(awk '/const Version/{print $$5}' extern/filecoin-ffi/version.go)" -eq 2 ]] || (echo "FFI version mismatch, update submodules"; exit 1)
@[[ "$$(awk '/const Version/{print $$5}' extern/filecoin-ffi/version.go)" -eq 3 ]] || (echo "FFI version mismatch, update submodules"; exit 1)
BUILD_DEPS+=ffi-version-check
.PHONY: ffi-version-check
$(MODULES): build/.update-modules ;
# dummy file that marks the last time modules were updated
build/.update-modules:
@@ -75,44 +76,40 @@ debug: build-devnets
calibnet: GOFLAGS+=-tags=calibnet
calibnet: build-devnets
nerpanet: GOFLAGS+=-tags=nerpanet
nerpanet: build-devnets
butterflynet: GOFLAGS+=-tags=butterflynet
butterflynet: build-devnets
interopnet: GOFLAGS+=-tags=interopnet
interopnet: build-devnets
lotus: $(BUILD_DEPS)
rm -f lotus
go build $(GOFLAGS) -o lotus ./cmd/lotus
go run github.com/GeertJohan/go.rice/rice append --exec lotus -i ./build
$(GOCC) build $(GOFLAGS) -o lotus ./cmd/lotus
.PHONY: lotus
BINS+=lotus
lotus-miner: $(BUILD_DEPS)
rm -f lotus-miner
go build $(GOFLAGS) -o lotus-miner ./cmd/lotus-storage-miner
go run github.com/GeertJohan/go.rice/rice append --exec lotus-miner -i ./build
$(GOCC) build $(GOFLAGS) -o lotus-miner ./cmd/lotus-miner
.PHONY: lotus-miner
BINS+=lotus-miner
lotus-worker: $(BUILD_DEPS)
rm -f lotus-worker
go build $(GOFLAGS) -o lotus-worker ./cmd/lotus-seal-worker
go run github.com/GeertJohan/go.rice/rice append --exec lotus-worker -i ./build
$(GOCC) build $(GOFLAGS) -o lotus-worker ./cmd/lotus-worker
.PHONY: lotus-worker
BINS+=lotus-worker
lotus-shed: $(BUILD_DEPS)
rm -f lotus-shed
go build $(GOFLAGS) -o lotus-shed ./cmd/lotus-shed
go run github.com/GeertJohan/go.rice/rice append --exec lotus-shed -i ./build
$(GOCC) build $(GOFLAGS) -o lotus-shed ./cmd/lotus-shed
.PHONY: lotus-shed
BINS+=lotus-shed
lotus-gateway: $(BUILD_DEPS)
rm -f lotus-gateway
go build $(GOFLAGS) -o lotus-gateway ./cmd/lotus-gateway
$(GOCC) build $(GOFLAGS) -o lotus-gateway ./cmd/lotus-gateway
.PHONY: lotus-gateway
BINS+=lotus-gateway
@@ -133,24 +130,26 @@ install-miner:
install-worker:
install -C ./lotus-worker /usr/local/bin/lotus-worker
install-app:
install -C ./$(APP) /usr/local/bin/$(APP)
# TOOLS
lotus-seed: $(BUILD_DEPS)
rm -f lotus-seed
go build $(GOFLAGS) -o lotus-seed ./cmd/lotus-seed
go run github.com/GeertJohan/go.rice/rice append --exec lotus-seed -i ./build
$(GOCC) build $(GOFLAGS) -o lotus-seed ./cmd/lotus-seed
.PHONY: lotus-seed
BINS+=lotus-seed
benchmarks:
go run github.com/whyrusleeping/bencher ./... > bench.json
$(GOCC) run github.com/whyrusleeping/bencher ./... > bench.json
@echo Submitting results
@curl -X POST 'http://benchmark.kittyhawk.wtf/benchmark' -d '@bench.json' -u "${benchmark_http_cred}"
.PHONY: benchmarks
lotus-pond: 2k
go build -o lotus-pond ./lotuspond
$(GOCC) build -o lotus-pond ./lotuspond
.PHONY: lotus-pond
BINS+=lotus-pond
@@ -161,80 +160,66 @@ lotus-pond-front:
lotus-pond-app: lotus-pond-front lotus-pond
.PHONY: lotus-pond-app
lotus-townhall:
rm -f lotus-townhall
go build -o lotus-townhall ./cmd/lotus-townhall
.PHONY: lotus-townhall
BINS+=lotus-townhall
lotus-townhall-front:
(cd ./cmd/lotus-townhall/townhall && npm i && npm run build)
.PHONY: lotus-townhall-front
lotus-townhall-app: lotus-touch lotus-townhall-front
go run github.com/GeertJohan/go.rice/rice append --exec lotus-townhall -i ./cmd/lotus-townhall -i ./build
.PHONY: lotus-townhall-app
lotus-fountain:
rm -f lotus-fountain
go build -o lotus-fountain ./cmd/lotus-fountain
go build $(GOFLAGS) -o lotus-fountain ./cmd/lotus-fountain
go run github.com/GeertJohan/go.rice/rice append --exec lotus-fountain -i ./cmd/lotus-fountain -i ./build
.PHONY: lotus-fountain
BINS+=lotus-fountain
lotus-chainwatch:
rm -f lotus-chainwatch
go build $(GOFLAGS) -o lotus-chainwatch ./cmd/lotus-chainwatch
.PHONY: lotus-chainwatch
BINS+=lotus-chainwatch
lotus-bench:
rm -f lotus-bench
go build -o lotus-bench ./cmd/lotus-bench
go run github.com/GeertJohan/go.rice/rice append --exec lotus-bench -i ./build
$(GOCC) build -o lotus-bench ./cmd/lotus-bench
.PHONY: lotus-bench
BINS+=lotus-bench
lotus-stats:
rm -f lotus-stats
go build $(GOFLAGS) -o lotus-stats ./cmd/lotus-stats
go run github.com/GeertJohan/go.rice/rice append --exec lotus-stats -i ./build
$(GOCC) build $(GOFLAGS) -o lotus-stats ./cmd/lotus-stats
.PHONY: lotus-stats
BINS+=lotus-stats
lotus-pcr:
rm -f lotus-pcr
go build $(GOFLAGS) -o lotus-pcr ./cmd/lotus-pcr
go run github.com/GeertJohan/go.rice/rice append --exec lotus-pcr -i ./build
$(GOCC) build $(GOFLAGS) -o lotus-pcr ./cmd/lotus-pcr
.PHONY: lotus-pcr
BINS+=lotus-pcr
lotus-health:
rm -f lotus-health
go build -o lotus-health ./cmd/lotus-health
go run github.com/GeertJohan/go.rice/rice append --exec lotus-health -i ./build
$(GOCC) build -o lotus-health ./cmd/lotus-health
.PHONY: lotus-health
BINS+=lotus-health
lotus-wallet:
rm -f lotus-wallet
go build -o lotus-wallet ./cmd/lotus-wallet
$(GOCC) build -o lotus-wallet ./cmd/lotus-wallet
.PHONY: lotus-wallet
BINS+=lotus-wallet
lotus-keygen:
rm -f lotus-keygen
go build -o lotus-keygen ./cmd/lotus-keygen
$(GOCC) build -o lotus-keygen ./cmd/lotus-keygen
.PHONY: lotus-keygen
BINS+=lotus-keygen
testground:
go build -tags testground -o /dev/null ./cmd/lotus
$(GOCC) build -tags testground -o /dev/null ./cmd/lotus
.PHONY: testground
BINS+=testground
install-chainwatch: lotus-chainwatch
install -C ./lotus-chainwatch /usr/local/bin/lotus-chainwatch
tvx:
rm -f tvx
$(GOCC) build -o tvx ./cmd/tvx
.PHONY: tvx
BINS+=tvx
lotus-sim: $(BUILD_DEPS)
rm -f lotus-sim
$(GOCC) build $(GOFLAGS) -o lotus-sim ./cmd/lotus-sim
.PHONY: lotus-sim
BINS+=lotus-sim
# SYSTEMD
@@ -254,21 +239,13 @@ install-miner-service: install-miner install-daemon-service
@echo
@echo "lotus-miner service installed. Don't forget to run 'sudo systemctl start lotus-miner' to start it and 'sudo systemctl enable lotus-miner' for it to be enabled on startup."
install-chainwatch-service: install-chainwatch install-daemon-service
mkdir -p /etc/systemd/system
mkdir -p /var/log/lotus
install -C -m 0644 ./scripts/lotus-chainwatch.service /etc/systemd/system/lotus-chainwatch.service
systemctl daemon-reload
@echo
@echo "chainwatch service installed. Don't forget to run 'sudo systemctl start lotus-chainwatch' to start it and 'sudo systemctl enable lotus-chainwatch' for it to be enabled on startup."
install-main-services: install-miner-service
install-all-services: install-main-services install-chainwatch-service
install-all-services: install-main-services
install-services: install-main-services
clean-daemon-service: clean-miner-service clean-chainwatch-service
clean-daemon-service: clean-miner-service
-systemctl stop lotus-daemon
-systemctl disable lotus-daemon
rm -f /etc/systemd/system/lotus-daemon.service
@@ -280,12 +257,6 @@ clean-miner-service:
rm -f /etc/systemd/system/lotus-miner.service
systemctl daemon-reload
clean-chainwatch-service:
-systemctl stop lotus-chainwatch
-systemctl disable lotus-chainwatch
rm -f /etc/systemd/system/lotus-chainwatch.service
systemctl daemon-reload
clean-main-services: clean-daemon-service
clean-all-services: clean-main-services
@@ -296,17 +267,10 @@ clean-services: clean-all-services
buildall: $(BINS)
completions:
./scripts/make-completions.sh lotus
./scripts/make-completions.sh lotus-miner
.PHONY: completions
install-completions:
mkdir -p /usr/share/bash-completion/completions /usr/local/share/zsh/site-functions/
install -C ./scripts/bash-completion/lotus /usr/share/bash-completion/completions/lotus
install -C ./scripts/bash-completion/lotus-miner /usr/share/bash-completion/completions/lotus-miner
install -C ./scripts/zsh-completion/lotus /usr/local/share/zsh/site-functions/_lotus
install -C ./scripts/zsh-completion/lotus-miner /usr/local/share/zsh/site-functions/_lotus-miner
clean:
rm -rf $(CLEAN) $(BINS)
@@ -318,19 +282,84 @@ dist-clean:
git submodule deinit --all -f
.PHONY: dist-clean
type-gen:
go run ./gen/main.go
go generate ./...
type-gen: api-gen
$(GOCC) run ./gen/main.go
$(GOCC) generate -x ./...
goimports -w api/
method-gen:
(cd ./lotuspond/front/src/chain && go run ./methodgen.go)
method-gen: api-gen
(cd ./lotuspond/front/src/chain && $(GOCC) run ./methodgen.go)
gen: type-gen method-gen
actors-gen:
$(GOCC) run ./gen/inline-gen . gen/inlinegen-data.json
$(GOCC) run ./chain/actors/agen
$(GOCC) fmt ./...
docsgen:
go run ./api/docgen "api/api_full.go" "FullNode" > documentation/en/api-methods.md
go run ./api/docgen "api/api_storage.go" "StorageMiner" > documentation/en/api-methods-miner.md
go run ./api/docgen "api/api_worker.go" "WorkerAPI" > documentation/en/api-methods-worker.md
api-gen:
$(GOCC) run ./gen/api
goimports -w api
goimports -w api
.PHONY: api-gen
cfgdoc-gen:
$(GOCC) run ./node/config/cfgdocgen > ./node/config/doc_gen.go
appimage: lotus
rm -rf appimage-builder-cache || true
rm AppDir/io.filecoin.lotus.desktop || true
rm AppDir/icon.svg || true
rm Appdir/AppRun || true
mkdir -p AppDir/usr/bin
cp ./lotus AppDir/usr/bin/
appimage-builder
docsgen: docsgen-md docsgen-openrpc
docsgen-md-bin: api-gen actors-gen
$(GOCC) build $(GOFLAGS) -o docgen-md ./api/docgen/cmd
docsgen-openrpc-bin: api-gen actors-gen
$(GOCC) build $(GOFLAGS) -o docgen-openrpc ./api/docgen-openrpc/cmd
docsgen-md: docsgen-md-full docsgen-md-storage docsgen-md-worker
docsgen-md-full: docsgen-md-bin
./docgen-md "api/api_full.go" "FullNode" "api" "./api" > documentation/en/api-v1-unstable-methods.md
./docgen-md "api/v0api/full.go" "FullNode" "v0api" "./api/v0api" > documentation/en/api-v0-methods.md
docsgen-md-storage: docsgen-md-bin
./docgen-md "api/api_storage.go" "StorageMiner" "api" "./api" > documentation/en/api-v0-methods-miner.md
docsgen-md-worker: docsgen-md-bin
./docgen-md "api/api_worker.go" "Worker" "api" "./api" > documentation/en/api-v0-methods-worker.md
docsgen-openrpc: docsgen-openrpc-full docsgen-openrpc-storage docsgen-openrpc-worker
docsgen-openrpc-full: docsgen-openrpc-bin
./docgen-openrpc "api/api_full.go" "FullNode" "api" "./api" -gzip > build/openrpc/full.json.gz
docsgen-openrpc-storage: docsgen-openrpc-bin
./docgen-openrpc "api/api_storage.go" "StorageMiner" "api" "./api" -gzip > build/openrpc/miner.json.gz
docsgen-openrpc-worker: docsgen-openrpc-bin
./docgen-openrpc "api/api_worker.go" "Worker" "api" "./api" -gzip > build/openrpc/worker.json.gz
.PHONY: docsgen docsgen-md-bin docsgen-openrpc-bin
gen: actors-gen type-gen method-gen cfgdoc-gen docsgen api-gen circleci
@echo ">>> IF YOU'VE MODIFIED THE CLI OR CONFIG, REMEMBER TO ALSO MAKE docsgen-cli"
.PHONY: gen
jen: gen
snap: lotus lotus-miner lotus-worker
snapcraft
# snapcraft upload ./lotus_*.snap
# separate from gen because it needs binaries
docsgen-cli: lotus lotus-miner lotus-worker
python ./scripts/generate-lotus-cli.py
./lotus config default > documentation/en/default-lotus-config.toml
./lotus-miner config default > documentation/en/default-lotus-miner-config.toml
.PHONY: docsgen-cli
print-%:
@echo $*=$($*)
circleci:
go generate -x ./.circleci
+85 -2
View File
@@ -10,7 +10,7 @@
<a href="https://circleci.com/gh/filecoin-project/lotus"><img src="https://circleci.com/gh/filecoin-project/lotus.svg?style=svg"></a>
<a href="https://codecov.io/gh/filecoin-project/lotus"><img src="https://codecov.io/gh/filecoin-project/lotus/branch/master/graph/badge.svg"></a>
<a href="https://goreportcard.com/report/github.com/filecoin-project/lotus"><img src="https://goreportcard.com/badge/github.com/filecoin-project/lotus" /></a>
<a href=""><img src="https://img.shields.io/badge/golang-%3E%3D1.15.5-blue.svg" /></a>
<a href=""><img src="https://img.shields.io/badge/golang-%3E%3D1.16-blue.svg" /></a>
<br>
</p>
@@ -18,7 +18,9 @@ Lotus is an implementation of the Filecoin Distributed Storage Network. For more
## Building & Documentation
For instructions on how to build, install and setup lotus, please visit [https://docs.filecoin.io/get-started/lotus](https://docs.filecoin.io/get-started/lotus/).
> Note: The default `master` branch is the dev branch, please use with caution. For the latest stable version, checkout the most recent [`Latest release`](https://github.com/filecoin-project/lotus/releases).
For complete instructions on how to build, install and setup lotus, please visit [https://docs.filecoin.io/get-started/lotus](https://docs.filecoin.io/get-started/lotus/). Basic build instructions can be found further down in this readme.
## Reporting a Vulnerability
@@ -50,6 +52,87 @@ When implementing a change:
7. Title the PR in a meaningful way and describe the rationale and the thought process in the PR description.
8. Write clean, thoughtful, and detailed [commit messages](https://chris.beams.io/posts/git-commit/). This is even more important than the PR description, because commit messages are stored _inside_ the Git history. One good rule is: if you are happy posting the commit message as the PR description, then it's a good commit message.
## Basic Build Instructions
**System-specific Software Dependencies**:
Building Lotus requires some system dependencies, usually provided by your distribution.
Ubuntu/Debian:
```
sudo apt install mesa-opencl-icd ocl-icd-opencl-dev gcc git bzr jq pkg-config curl clang build-essential hwloc libhwloc-dev wget -y && sudo apt upgrade -y
```
Fedora:
```
sudo dnf -y install gcc make git bzr jq pkgconfig mesa-libOpenCL mesa-libOpenCL-devel opencl-headers ocl-icd ocl-icd-devel clang llvm wget hwloc libhwloc-dev
```
For other distributions you can find the required dependencies [here.](https://docs.filecoin.io/get-started/lotus/installation/#system-specific) For instructions specific to macOS, you can find them [here.](https://docs.filecoin.io/get-started/lotus/installation/#macos)
#### Go
To build Lotus, you need a working installation of [Go 1.17.9 or higher](https://golang.org/dl/):
```bash
wget -c https://golang.org/dl/go1.17.9.linux-amd64.tar.gz -O - | sudo tar -xz -C /usr/local
```
**TIP:**
You'll need to add `/usr/local/go/bin` to your path. For most Linux distributions you can run something like:
```shell
echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.bashrc && source ~/.bashrc
```
See the [official Golang installation instructions](https://golang.org/doc/install) if you get stuck.
### Build and install Lotus
Once all the dependencies are installed, you can build and install the Lotus suite (`lotus`, `lotus-miner`, and `lotus-worker`).
1. Clone the repository:
```sh
git clone https://github.com/filecoin-project/lotus.git
cd lotus/
```
Note: The default branch `master` is the dev branch where the latest new features, bug fixes and improvement are in. However, if you want to run lotus on Filecoin mainnet and want to run a production-ready lotus, get the latest release[ here](https://github.com/filecoin-project/lotus/releases).
2. To join mainnet, checkout the [latest release](https://github.com/filecoin-project/lotus/releases).
If you are changing networks from a previous Lotus installation or there has been a network reset, read the [Switch networks guide](https://docs.filecoin.io/get-started/lotus/switch-networks/) before proceeding.
For networks other than mainnet, look up the current branch or tag/commit for the network you want to join in the [Filecoin networks dashboard](https://network.filecoin.io), then build Lotus for your specific network below.
```sh
git checkout <tag_or_branch>
# For example:
git checkout <vX.X.X> # tag for a release
```
Currently, the latest code on the _master_ branch corresponds to mainnet.
3. If you are in China, see "[Lotus: tips when running in China](https://docs.filecoin.io/get-started/lotus/tips-running-in-china/)".
4. This build instruction uses the prebuilt proofs binaries. If you want to build the proof binaries from source check the [complete instructions](https://docs.filecoin.io/get-started/lotus/installation/#build-and-install-lotus). Note, if you are building the proof binaries from source, [installing rustup](https://docs.filecoin.io/get-started/lotus/installation/#rustup) is also needed.
5. Build and install Lotus:
```sh
make clean all #mainnet
# Or to join a testnet or devnet:
make clean calibnet # Calibration with min 32GiB sectors
sudo make install
```
This will put `lotus`, `lotus-miner` and `lotus-worker` in `/usr/local/bin`.
`lotus` will use the `$HOME/.lotus` folder by default for storage (configuration, chain data, wallets, etc). See [advanced options](https://docs.filecoin.io/get-started/lotus/configuration-and-advanced-usage/) for information on how to customize the Lotus folder.
6. You should now have Lotus installed. You can now [start the Lotus daemon and sync the chain](https://docs.filecoin.io/get-started/lotus/installation/#start-the-lotus-daemon-and-sync-the-chain).
## License
Dual-licensed under [MIT](https://github.com/filecoin-project/lotus/blob/master/LICENSE-MIT) + [Apache 2.0](https://github.com/filecoin-project/lotus/blob/master/LICENSE-APACHE)
+14
View File
@@ -0,0 +1,14 @@
## Lotus API
This package contains all lotus API definitions. Interfaces defined here are
exposed as JsonRPC 2.0 endpoints by lotus programs.
### Versions
| File | Alias File | Interface | Exposed by | Version | HTTP Endpoint | Status | Docs
|------------------|-------------------|----------------|--------------------|---------|---------------|------------------------------|------
| `api_common.go` | `v0api/latest.go` | `Common` | lotus; lotus-miner | v0 | `/rpc/v0` | Latest, Stable | [Methods](../documentation/en/api-v0-methods.md)
| `api_full.go` | `v1api/latest.go` | `FullNode` | lotus | v1 | `/rpc/v1` | Latest, **Work in progress** | [Methods](../documentation/en/api-v1-unstable-methods.md)
| `api_storage.go` | `v0api/latest.go` | `StorageMiner` | lotus-miner | v0 | `/rpc/v0` | Latest, Stable | [Methods](../documentation/en/api-v0-methods-miner.md)
| `api_worker.go` | `v0api/latest.go` | `Worker` | lotus-worker | v0 | `/rpc/v0` | Latest, Stable | [Methods](../documentation/en/api-v0-methods-worker.md)
| `v0api/full.go` | | `FullNode` | lotus | v0 | `/rpc/v0` | Stable | [Methods](../documentation/en/api-v0-methods.md)
+28 -48
View File
@@ -4,70 +4,55 @@ import (
"context"
"fmt"
apitypes "github.com/filecoin-project/lotus/api/types"
"github.com/filecoin-project/lotus/journal/alerting"
"github.com/google/uuid"
"github.com/filecoin-project/go-jsonrpc/auth"
metrics "github.com/libp2p/go-libp2p-core/metrics"
"github.com/libp2p/go-libp2p-core/network"
"github.com/libp2p/go-libp2p-core/peer"
protocol "github.com/libp2p/go-libp2p-core/protocol"
)
type Common interface {
// MODIFYING THE API INTERFACE
//
// When adding / changing methods in this file:
// * Do the change here
// * Adjust implementation in `node/impl/`
// * Run `make gen` - this will:
// * Generate proxy structs
// * Generate mocks
// * Generate markdown docs
// * Generate openrpc blobs
type Common interface {
// MethodGroup: Auth
AuthVerify(ctx context.Context, token string) ([]auth.Permission, error)
AuthNew(ctx context.Context, perms []auth.Permission) ([]byte, error)
AuthVerify(ctx context.Context, token string) ([]auth.Permission, error) //perm:read
AuthNew(ctx context.Context, perms []auth.Permission) ([]byte, error) //perm:admin
// MethodGroup: Net
// MethodGroup: Log
NetConnectedness(context.Context, peer.ID) (network.Connectedness, error)
NetPeers(context.Context) ([]peer.AddrInfo, error)
NetConnect(context.Context, peer.AddrInfo) error
NetAddrsListen(context.Context) (peer.AddrInfo, error)
NetDisconnect(context.Context, peer.ID) error
NetFindPeer(context.Context, peer.ID) (peer.AddrInfo, error)
NetPubsubScores(context.Context) ([]PubsubScore, error)
NetAutoNatStatus(context.Context) (NatInfo, error)
NetAgentVersion(ctx context.Context, p peer.ID) (string, error)
NetPeerInfo(context.Context, peer.ID) (*ExtendedPeerInfo, error)
LogList(context.Context) ([]string, error) //perm:write
LogSetLevel(context.Context, string, string) error //perm:write
// NetBandwidthStats returns statistics about the nodes total bandwidth
// usage and current rate across all peers and protocols.
NetBandwidthStats(ctx context.Context) (metrics.Stats, error)
// NetBandwidthStatsByPeer returns statistics about the nodes bandwidth
// usage and current rate per peer
NetBandwidthStatsByPeer(ctx context.Context) (map[string]metrics.Stats, error)
// NetBandwidthStatsByProtocol returns statistics about the nodes bandwidth
// usage and current rate per protocol
NetBandwidthStatsByProtocol(ctx context.Context) (map[protocol.ID]metrics.Stats, error)
// ConnectionGater API
NetBlockAdd(ctx context.Context, acl NetBlockList) error
NetBlockRemove(ctx context.Context, acl NetBlockList) error
NetBlockList(ctx context.Context) (NetBlockList, error)
// LogAlerts returns list of all, active and inactive alerts tracked by the
// node
LogAlerts(ctx context.Context) ([]alerting.Alert, error) //perm:admin
// MethodGroup: Common
// ID returns peerID of libp2p node backing this API
ID(context.Context) (peer.ID, error)
// Version provides information about API provider
Version(context.Context) (APIVersion, error)
Version(context.Context) (APIVersion, error) //perm:read
LogList(context.Context) ([]string, error)
LogSetLevel(context.Context, string, string) error
// Discover returns an OpenRPC document describing an RPC API.
Discover(ctx context.Context) (apitypes.OpenRPCDocument, error) //perm:read
// trigger graceful shutdown
Shutdown(context.Context) error
Shutdown(context.Context) error //perm:admin
// Session returns a random UUID of api provider session
Session(context.Context) (uuid.UUID, error)
Session(context.Context) (uuid.UUID, error) //perm:read
Closing(context.Context) (<-chan struct{}, error)
Closing(context.Context) (<-chan struct{}, error) //perm:read
}
// APIVersion provides various build-time information
@@ -89,8 +74,3 @@ type APIVersion struct {
func (v APIVersion) String() string {
return fmt.Sprintf("%s+api%s", v.Version, v.APIVersion.String())
}
type NatInfo struct {
Reachability network.Reachability
PublicAddr string
}
+404 -215
View File
File diff suppressed because it is too large Load Diff
+29 -7
View File
@@ -8,30 +8,50 @@ import (
"github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi"
"github.com/filecoin-project/go-state-types/dline"
"github.com/filecoin-project/go-state-types/network"
apitypes "github.com/filecoin-project/lotus/api/types"
"github.com/filecoin-project/lotus/chain/actors/builtin/miner"
"github.com/filecoin-project/lotus/chain/types"
)
type GatewayAPI interface {
// MODIFYING THE API INTERFACE
//
// NOTE: This is the V1 (Unstable) API - to add methods to the V0 (Stable) API
// you'll have to add those methods to interfaces in `api/v0api`
//
// When adding / changing methods in this file:
// * Do the change here
// * Adjust implementation in `node/impl/`
// * Run `make gen` - this will:
// * Generate proxy structs
// * Generate mocks
// * Generate markdown docs
// * Generate openrpc blobs
type Gateway interface {
ChainHasObj(context.Context, cid.Cid) (bool, error)
ChainHead(ctx context.Context) (*types.TipSet, error)
ChainGetParentMessages(context.Context, cid.Cid) ([]Message, error)
ChainGetParentReceipts(context.Context, cid.Cid) ([]*types.MessageReceipt, error)
ChainGetBlockMessages(context.Context, cid.Cid) (*BlockMessages, error)
ChainGetMessage(ctx context.Context, mc cid.Cid) (*types.Message, error)
ChainGetPath(ctx context.Context, from, to types.TipSetKey) ([]*HeadChange, error)
ChainGetTipSet(ctx context.Context, tsk types.TipSetKey) (*types.TipSet, error)
ChainGetTipSetByHeight(ctx context.Context, h abi.ChainEpoch, tsk types.TipSetKey) (*types.TipSet, error)
ChainGetTipSetAfterHeight(ctx context.Context, h abi.ChainEpoch, tsk types.TipSetKey) (*types.TipSet, error)
ChainNotify(context.Context) (<-chan []*HeadChange, error)
ChainReadObj(context.Context, cid.Cid) ([]byte, error)
ChainGetGenesis(context.Context) (*types.TipSet, error)
GasEstimateMessageGas(ctx context.Context, msg *types.Message, spec *MessageSendSpec, tsk types.TipSetKey) (*types.Message, error)
MpoolPush(ctx context.Context, sm *types.SignedMessage) (cid.Cid, error)
MsigGetAvailableBalance(ctx context.Context, addr address.Address, tsk types.TipSetKey) (types.BigInt, error)
MsigGetVested(ctx context.Context, addr address.Address, start types.TipSetKey, end types.TipSetKey) (types.BigInt, error)
MsigGetPending(context.Context, address.Address, types.TipSetKey) ([]*MsigTransaction, error)
MsigGetVested(ctx context.Context, addr address.Address, start types.TipSetKey, end types.TipSetKey) (types.BigInt, error)
MsigGetVestingSchedule(ctx context.Context, addr address.Address, tsk types.TipSetKey) (MsigVesting, error)
StateAccountKey(ctx context.Context, addr address.Address, tsk types.TipSetKey) (address.Address, error)
StateDealProviderCollateralBounds(ctx context.Context, size abi.PaddedPieceSize, verified bool, tsk types.TipSetKey) (DealCollateralBounds, error)
StateGetActor(ctx context.Context, actor address.Address, ts types.TipSetKey) (*types.Actor, error)
StateGetReceipt(context.Context, cid.Cid, types.TipSetKey) (*types.MessageReceipt, error)
StateReadState(ctx context.Context, actor address.Address, tsk types.TipSetKey) (*ActorState, error) //perm:read
StateListMiners(ctx context.Context, tsk types.TipSetKey) ([]address.Address, error)
StateLookupID(ctx context.Context, addr address.Address, tsk types.TipSetKey) (address.Address, error)
StateMarketBalance(ctx context.Context, addr address.Address, tsk types.TipSetKey) (MarketBalance, error)
@@ -39,9 +59,11 @@ type GatewayAPI interface {
StateMinerInfo(ctx context.Context, actor address.Address, tsk types.TipSetKey) (miner.MinerInfo, error)
StateMinerProvingDeadline(ctx context.Context, addr address.Address, tsk types.TipSetKey) (*dline.Info, error)
StateMinerPower(context.Context, address.Address, types.TipSetKey) (*MinerPower, error)
StateNetworkVersion(context.Context, types.TipSetKey) (network.Version, error)
StateSearchMsg(ctx context.Context, msg cid.Cid) (*MsgLookup, error)
StateNetworkVersion(context.Context, types.TipSetKey) (apitypes.NetworkVersion, error)
StateSectorGetInfo(ctx context.Context, maddr address.Address, n abi.SectorNumber, tsk types.TipSetKey) (*miner.SectorOnChainInfo, error)
StateVerifiedClientStatus(ctx context.Context, addr address.Address, tsk types.TipSetKey) (*abi.StoragePower, error)
StateWaitMsg(ctx context.Context, msg cid.Cid, confidence uint64) (*MsgLookup, error)
StateSearchMsg(ctx context.Context, from types.TipSetKey, msg cid.Cid, limit abi.ChainEpoch, allowReplaced bool) (*MsgLookup, error)
StateWaitMsg(ctx context.Context, cid cid.Cid, confidence uint64, limit abi.ChainEpoch, allowReplaced bool) (*MsgLookup, error)
WalletBalance(context.Context, address.Address) (types.BigInt, error)
Version(context.Context) (APIVersion, error)
}
+77
View File
@@ -0,0 +1,77 @@
package api
import (
"context"
"time"
metrics "github.com/libp2p/go-libp2p-core/metrics"
"github.com/libp2p/go-libp2p-core/network"
"github.com/libp2p/go-libp2p-core/peer"
"github.com/libp2p/go-libp2p-core/protocol"
)
// MODIFYING THE API INTERFACE
//
// When adding / changing methods in this file:
// * Do the change here
// * Adjust implementation in `node/impl/`
// * Run `make gen` - this will:
// * Generate proxy structs
// * Generate mocks
// * Generate markdown docs
// * Generate openrpc blobs
type Net interface {
// MethodGroup: Net
NetConnectedness(context.Context, peer.ID) (network.Connectedness, error) //perm:read
NetPeers(context.Context) ([]peer.AddrInfo, error) //perm:read
NetPing(context.Context, peer.ID) (time.Duration, error) //perm:read
NetConnect(context.Context, peer.AddrInfo) error //perm:write
NetAddrsListen(context.Context) (peer.AddrInfo, error) //perm:read
NetDisconnect(context.Context, peer.ID) error //perm:write
NetFindPeer(context.Context, peer.ID) (peer.AddrInfo, error) //perm:read
NetPubsubScores(context.Context) ([]PubsubScore, error) //perm:read
NetAutoNatStatus(context.Context) (NatInfo, error) //perm:read
NetAgentVersion(ctx context.Context, p peer.ID) (string, error) //perm:read
NetPeerInfo(context.Context, peer.ID) (*ExtendedPeerInfo, error) //perm:read
// NetBandwidthStats returns statistics about the nodes total bandwidth
// usage and current rate across all peers and protocols.
NetBandwidthStats(ctx context.Context) (metrics.Stats, error) //perm:read
// NetBandwidthStatsByPeer returns statistics about the nodes bandwidth
// usage and current rate per peer
NetBandwidthStatsByPeer(ctx context.Context) (map[string]metrics.Stats, error) //perm:read
// NetBandwidthStatsByProtocol returns statistics about the nodes bandwidth
// usage and current rate per protocol
NetBandwidthStatsByProtocol(ctx context.Context) (map[protocol.ID]metrics.Stats, error) //perm:read
// ConnectionGater API
NetBlockAdd(ctx context.Context, acl NetBlockList) error //perm:admin
NetBlockRemove(ctx context.Context, acl NetBlockList) error //perm:admin
NetBlockList(ctx context.Context) (NetBlockList, error) //perm:read
NetProtectAdd(ctx context.Context, acl []peer.ID) error //perm:admin
NetProtectRemove(ctx context.Context, acl []peer.ID) error //perm:admin
NetProtectList(ctx context.Context) ([]peer.ID, error) //perm:read
// ResourceManager API
NetStat(ctx context.Context, scope string) (NetStat, error) //perm:read
NetLimit(ctx context.Context, scope string) (NetLimit, error) //perm:read
NetSetLimit(ctx context.Context, scope string, limit NetLimit) error //perm:admin
// ID returns peerID of libp2p node backing this API
ID(context.Context) (peer.ID, error) //perm:read
}
type CommonNet interface {
Common
Net
}
type NatInfo struct {
Reachability network.Reachability
PublicAddr string
}
+280 -89
View File
@@ -5,147 +5,276 @@ import (
"context"
"time"
"github.com/filecoin-project/lotus/chain/actors/builtin"
"github.com/filecoin-project/lotus/chain/actors/builtin/miner"
"github.com/google/uuid"
"github.com/ipfs/go-cid"
"github.com/libp2p/go-libp2p-core/peer"
"github.com/filecoin-project/go-address"
datatransfer "github.com/filecoin-project/go-data-transfer"
"github.com/filecoin-project/go-fil-markets/piecestore"
"github.com/filecoin-project/go-fil-markets/retrievalmarket"
"github.com/filecoin-project/go-fil-markets/storagemarket"
"github.com/filecoin-project/go-state-types/abi"
abinetwork "github.com/filecoin-project/go-state-types/network"
"github.com/filecoin-project/specs-actors/v2/actors/builtin/market"
"github.com/filecoin-project/specs-storage/storage"
"github.com/filecoin-project/go-fil-markets/piecestore"
"github.com/filecoin-project/go-fil-markets/retrievalmarket"
"github.com/filecoin-project/go-fil-markets/storagemarket"
"github.com/filecoin-project/lotus/chain/types"
"github.com/filecoin-project/lotus/extern/sector-storage/fsutil"
"github.com/filecoin-project/lotus/extern/sector-storage/stores"
"github.com/filecoin-project/lotus/extern/sector-storage/storiface"
"github.com/filecoin-project/lotus/extern/storage-sealing/sealiface"
)
// MODIFYING THE API INTERFACE
//
// When adding / changing methods in this file:
// * Do the change here
// * Adjust implementation in `node/impl/`
// * Run `make gen` - this will:
// * Generate proxy structs
// * Generate mocks
// * Generate markdown docs
// * Generate openrpc blobs
// StorageMiner is a low-level interface to the Filecoin network storage miner node
type StorageMiner interface {
Common
Net
ActorAddress(context.Context) (address.Address, error)
ActorAddress(context.Context) (address.Address, error) //perm:read
ActorSectorSize(context.Context, address.Address) (abi.SectorSize, error)
ActorAddressConfig(ctx context.Context) (AddressConfig, error)
ActorSectorSize(context.Context, address.Address) (abi.SectorSize, error) //perm:read
ActorAddressConfig(ctx context.Context) (AddressConfig, error) //perm:read
MiningBase(context.Context) (*types.TipSet, error)
MiningBase(context.Context) (*types.TipSet, error) //perm:read
ComputeWindowPoSt(ctx context.Context, dlIdx uint64, tsk types.TipSetKey) ([]miner.SubmitWindowedPoStParams, error) //perm:admin
// Temp api for testing
PledgeSector(context.Context) (abi.SectorID, error)
PledgeSector(context.Context) (abi.SectorID, error) //perm:write
// Get the status of a given sector by ID
SectorsStatus(ctx context.Context, sid abi.SectorNumber, showOnChainInfo bool) (SectorInfo, error)
SectorsStatus(ctx context.Context, sid abi.SectorNumber, showOnChainInfo bool) (SectorInfo, error) //perm:read
// Add piece to an open sector. If no sectors with enough space are open,
// either a new sector will be created, or this call will block until more
// sectors can be created.
SectorAddPieceToAny(ctx context.Context, size abi.UnpaddedPieceSize, r storage.Data, d PieceDealInfo) (SectorOffset, error) //perm:admin
SectorsUnsealPiece(ctx context.Context, sector storage.SectorRef, offset storiface.UnpaddedByteIndex, size abi.UnpaddedPieceSize, randomness abi.SealRandomness, commd *cid.Cid) error //perm:admin
// List all staged sectors
SectorsList(context.Context) ([]abi.SectorNumber, error)
SectorsList(context.Context) ([]abi.SectorNumber, error) //perm:read
// Get summary info of sectors
SectorsSummary(ctx context.Context) (map[SectorState]int, error)
SectorsSummary(ctx context.Context) (map[SectorState]int, error) //perm:read
// List sectors in particular states
SectorsListInStates(context.Context, []SectorState) ([]abi.SectorNumber, error)
SectorsListInStates(context.Context, []SectorState) ([]abi.SectorNumber, error) //perm:read
SectorsRefs(context.Context) (map[string][]SealedRef, error)
SectorsRefs(context.Context) (map[string][]SealedRef, error) //perm:read
// SectorStartSealing can be called on sectors in Empty or WaitDeals states
// to trigger sealing early
SectorStartSealing(context.Context, abi.SectorNumber) error
SectorStartSealing(context.Context, abi.SectorNumber) error //perm:write
// SectorSetSealDelay sets the time that a newly-created sector
// waits for more deals before it starts sealing
SectorSetSealDelay(context.Context, time.Duration) error
SectorSetSealDelay(context.Context, time.Duration) error //perm:write
// SectorGetSealDelay gets the time that a newly-created sector
// waits for more deals before it starts sealing
SectorGetSealDelay(context.Context) (time.Duration, error)
SectorGetSealDelay(context.Context) (time.Duration, error) //perm:read
// SectorSetExpectedSealDuration sets the expected time for a sector to seal
SectorSetExpectedSealDuration(context.Context, time.Duration) error
SectorSetExpectedSealDuration(context.Context, time.Duration) error //perm:write
// SectorGetExpectedSealDuration gets the expected time for a sector to seal
SectorGetExpectedSealDuration(context.Context) (time.Duration, error)
SectorsUpdate(context.Context, abi.SectorNumber, SectorState) error
SectorGetExpectedSealDuration(context.Context) (time.Duration, error) //perm:read
SectorsUpdate(context.Context, abi.SectorNumber, SectorState) error //perm:admin
// SectorRemove removes the sector from storage. It doesn't terminate it on-chain, which can
// be done with SectorTerminate. Removing and not terminating live sectors will cause additional penalties.
SectorRemove(context.Context, abi.SectorNumber) error
SectorRemove(context.Context, abi.SectorNumber) error //perm:admin
SectorMarkForUpgrade(ctx context.Context, id abi.SectorNumber, snap bool) error //perm:admin
// SectorTerminate terminates the sector on-chain (adding it to a termination batch first), then
// automatically removes it from storage
SectorTerminate(context.Context, abi.SectorNumber) error
SectorTerminate(context.Context, abi.SectorNumber) error //perm:admin
// SectorTerminateFlush immediately sends a terminate message with sectors batched for termination.
// Returns null if message wasn't sent
SectorTerminateFlush(ctx context.Context) (*cid.Cid, error)
SectorTerminateFlush(ctx context.Context) (*cid.Cid, error) //perm:admin
// SectorTerminatePending returns a list of pending sector terminations to be sent in the next batch message
SectorTerminatePending(ctx context.Context) ([]abi.SectorID, error)
SectorMarkForUpgrade(ctx context.Context, id abi.SectorNumber) error
StorageList(ctx context.Context) (map[stores.ID][]stores.Decl, error)
StorageLocal(ctx context.Context) (map[stores.ID]string, error)
StorageStat(ctx context.Context, id stores.ID) (fsutil.FsStat, error)
SectorTerminatePending(ctx context.Context) ([]abi.SectorID, error) //perm:admin
// SectorPreCommitFlush immediately sends a PreCommit message with sectors batched for PreCommit.
// Returns null if message wasn't sent
SectorPreCommitFlush(ctx context.Context) ([]sealiface.PreCommitBatchRes, error) //perm:admin
// SectorPreCommitPending returns a list of pending PreCommit sectors to be sent in the next batch message
SectorPreCommitPending(ctx context.Context) ([]abi.SectorID, error) //perm:admin
// SectorCommitFlush immediately sends a Commit message with sectors aggregated for Commit.
// Returns null if message wasn't sent
SectorCommitFlush(ctx context.Context) ([]sealiface.CommitBatchRes, error) //perm:admin
// SectorCommitPending returns a list of pending Commit sectors to be sent in the next aggregate message
SectorCommitPending(ctx context.Context) ([]abi.SectorID, error) //perm:admin
SectorMatchPendingPiecesToOpenSectors(ctx context.Context) error //perm:admin
// SectorAbortUpgrade can be called on sectors that are in the process of being upgraded to abort it
SectorAbortUpgrade(context.Context, abi.SectorNumber) error //perm:admin
// WorkerConnect tells the node to connect to workers RPC
WorkerConnect(context.Context, string) error
WorkerStats(context.Context) (map[uuid.UUID]storiface.WorkerStats, error)
WorkerJobs(context.Context) (map[uuid.UUID][]storiface.WorkerJob, error)
storiface.WorkerReturn
WorkerConnect(context.Context, string) error //perm:admin retry:true
WorkerStats(context.Context) (map[uuid.UUID]storiface.WorkerStats, error) //perm:admin
WorkerJobs(context.Context) (map[uuid.UUID][]storiface.WorkerJob, error) //perm:admin
//storiface.WorkerReturn
ReturnAddPiece(ctx context.Context, callID storiface.CallID, pi abi.PieceInfo, err *storiface.CallError) error //perm:admin retry:true
ReturnSealPreCommit1(ctx context.Context, callID storiface.CallID, p1o storage.PreCommit1Out, err *storiface.CallError) error //perm:admin retry:true
ReturnSealPreCommit2(ctx context.Context, callID storiface.CallID, sealed storage.SectorCids, err *storiface.CallError) error //perm:admin retry:true
ReturnSealCommit1(ctx context.Context, callID storiface.CallID, out storage.Commit1Out, err *storiface.CallError) error //perm:admin retry:true
ReturnSealCommit2(ctx context.Context, callID storiface.CallID, proof storage.Proof, err *storiface.CallError) error //perm:admin retry:true
ReturnFinalizeSector(ctx context.Context, callID storiface.CallID, err *storiface.CallError) error //perm:admin retry:true
ReturnReplicaUpdate(ctx context.Context, callID storiface.CallID, out storage.ReplicaUpdateOut, err *storiface.CallError) error //perm:admin retry:true
ReturnProveReplicaUpdate1(ctx context.Context, callID storiface.CallID, vanillaProofs storage.ReplicaVanillaProofs, err *storiface.CallError) error //perm:admin retry:true
ReturnProveReplicaUpdate2(ctx context.Context, callID storiface.CallID, proof storage.ReplicaUpdateProof, err *storiface.CallError) error //perm:admin retry:true
ReturnGenerateSectorKeyFromData(ctx context.Context, callID storiface.CallID, err *storiface.CallError) error //perm:admin retry:true
ReturnFinalizeReplicaUpdate(ctx context.Context, callID storiface.CallID, err *storiface.CallError) error //perm:admin retry:true
ReturnReleaseUnsealed(ctx context.Context, callID storiface.CallID, err *storiface.CallError) error //perm:admin retry:true
ReturnMoveStorage(ctx context.Context, callID storiface.CallID, err *storiface.CallError) error //perm:admin retry:true
ReturnUnsealPiece(ctx context.Context, callID storiface.CallID, err *storiface.CallError) error //perm:admin retry:true
ReturnReadPiece(ctx context.Context, callID storiface.CallID, ok bool, err *storiface.CallError) error //perm:admin retry:true
ReturnFetch(ctx context.Context, callID storiface.CallID, err *storiface.CallError) error //perm:admin retry:true
// SealingSchedDiag dumps internal sealing scheduler state
SealingSchedDiag(ctx context.Context, doSched bool) (interface{}, error)
SealingAbort(ctx context.Context, call storiface.CallID) error
SealingSchedDiag(ctx context.Context, doSched bool) (interface{}, error) //perm:admin
SealingAbort(ctx context.Context, call storiface.CallID) error //perm:admin
stores.SectorIndex
// SectorIndex
StorageAttach(context.Context, storiface.StorageInfo, fsutil.FsStat) error //perm:admin
StorageInfo(context.Context, storiface.ID) (storiface.StorageInfo, error) //perm:admin
StorageReportHealth(context.Context, storiface.ID, storiface.HealthReport) error //perm:admin
StorageDeclareSector(ctx context.Context, storageID storiface.ID, s abi.SectorID, ft storiface.SectorFileType, primary bool) error //perm:admin
StorageDropSector(ctx context.Context, storageID storiface.ID, s abi.SectorID, ft storiface.SectorFileType) error //perm:admin
StorageFindSector(ctx context.Context, sector abi.SectorID, ft storiface.SectorFileType, ssize abi.SectorSize, allowFetch bool) ([]storiface.SectorStorageInfo, error) //perm:admin
StorageBestAlloc(ctx context.Context, allocate storiface.SectorFileType, ssize abi.SectorSize, pathType storiface.PathType) ([]storiface.StorageInfo, error) //perm:admin
StorageLock(ctx context.Context, sector abi.SectorID, read storiface.SectorFileType, write storiface.SectorFileType) error //perm:admin
StorageTryLock(ctx context.Context, sector abi.SectorID, read storiface.SectorFileType, write storiface.SectorFileType) (bool, error) //perm:admin
StorageList(ctx context.Context) (map[storiface.ID][]storiface.Decl, error) //perm:admin
StorageGetLocks(ctx context.Context) (storiface.SectorLocks, error) //perm:admin
MarketImportDealData(ctx context.Context, propcid cid.Cid, path string) error
MarketListDeals(ctx context.Context) ([]MarketDeal, error)
MarketListRetrievalDeals(ctx context.Context) ([]retrievalmarket.ProviderDealState, error)
MarketGetDealUpdates(ctx context.Context) (<-chan storagemarket.MinerDeal, error)
MarketListIncompleteDeals(ctx context.Context) ([]storagemarket.MinerDeal, error)
MarketSetAsk(ctx context.Context, price types.BigInt, verifiedPrice types.BigInt, duration abi.ChainEpoch, minPieceSize abi.PaddedPieceSize, maxPieceSize abi.PaddedPieceSize) error
MarketGetAsk(ctx context.Context) (*storagemarket.SignedStorageAsk, error)
MarketSetRetrievalAsk(ctx context.Context, rask *retrievalmarket.Ask) error
MarketGetRetrievalAsk(ctx context.Context) (*retrievalmarket.Ask, error)
MarketListDataTransfers(ctx context.Context) ([]DataTransferChannel, error)
MarketDataTransferUpdates(ctx context.Context) (<-chan DataTransferChannel, error)
StorageLocal(ctx context.Context) (map[storiface.ID]string, error) //perm:admin
StorageStat(ctx context.Context, id storiface.ID) (fsutil.FsStat, error) //perm:admin
MarketImportDealData(ctx context.Context, propcid cid.Cid, path string) error //perm:write
MarketListDeals(ctx context.Context) ([]MarketDeal, error) //perm:read
MarketListRetrievalDeals(ctx context.Context) ([]retrievalmarket.ProviderDealState, error) //perm:read
MarketGetDealUpdates(ctx context.Context) (<-chan storagemarket.MinerDeal, error) //perm:read
MarketListIncompleteDeals(ctx context.Context) ([]storagemarket.MinerDeal, error) //perm:read
MarketSetAsk(ctx context.Context, price types.BigInt, verifiedPrice types.BigInt, duration abi.ChainEpoch, minPieceSize abi.PaddedPieceSize, maxPieceSize abi.PaddedPieceSize) error //perm:admin
MarketGetAsk(ctx context.Context) (*storagemarket.SignedStorageAsk, error) //perm:read
MarketSetRetrievalAsk(ctx context.Context, rask *retrievalmarket.Ask) error //perm:admin
MarketGetRetrievalAsk(ctx context.Context) (*retrievalmarket.Ask, error) //perm:read
MarketListDataTransfers(ctx context.Context) ([]DataTransferChannel, error) //perm:write
MarketDataTransferUpdates(ctx context.Context) (<-chan DataTransferChannel, error) //perm:write
// MarketDataTransferDiagnostics generates debugging information about current data transfers over graphsync
MarketDataTransferDiagnostics(ctx context.Context, p peer.ID) (*TransferDiagnostics, error) //perm:write
// MarketRestartDataTransfer attempts to restart a data transfer with the given transfer ID and other peer
MarketRestartDataTransfer(ctx context.Context, transferID datatransfer.TransferID, otherPeer peer.ID, isInitiator bool) error
MarketRestartDataTransfer(ctx context.Context, transferID datatransfer.TransferID, otherPeer peer.ID, isInitiator bool) error //perm:write
// MarketCancelDataTransfer cancels a data transfer with the given transfer ID and other peer
MarketCancelDataTransfer(ctx context.Context, transferID datatransfer.TransferID, otherPeer peer.ID, isInitiator bool) error
MarketPendingDeals(ctx context.Context) (PendingDealInfo, error)
MarketPublishPendingDeals(ctx context.Context) error
MarketCancelDataTransfer(ctx context.Context, transferID datatransfer.TransferID, otherPeer peer.ID, isInitiator bool) error //perm:write
MarketPendingDeals(ctx context.Context) (PendingDealInfo, error) //perm:write
MarketPublishPendingDeals(ctx context.Context) error //perm:admin
MarketRetryPublishDeal(ctx context.Context, propcid cid.Cid) error //perm:admin
DealsImportData(ctx context.Context, dealPropCid cid.Cid, file string) error
DealsList(ctx context.Context) ([]MarketDeal, error)
DealsConsiderOnlineStorageDeals(context.Context) (bool, error)
DealsSetConsiderOnlineStorageDeals(context.Context, bool) error
DealsConsiderOnlineRetrievalDeals(context.Context) (bool, error)
DealsSetConsiderOnlineRetrievalDeals(context.Context, bool) error
DealsPieceCidBlocklist(context.Context) ([]cid.Cid, error)
DealsSetPieceCidBlocklist(context.Context, []cid.Cid) error
DealsConsiderOfflineStorageDeals(context.Context) (bool, error)
DealsSetConsiderOfflineStorageDeals(context.Context, bool) error
DealsConsiderOfflineRetrievalDeals(context.Context) (bool, error)
DealsSetConsiderOfflineRetrievalDeals(context.Context, bool) error
DealsConsiderVerifiedStorageDeals(context.Context) (bool, error)
DealsSetConsiderVerifiedStorageDeals(context.Context, bool) error
DealsConsiderUnverifiedStorageDeals(context.Context) (bool, error)
DealsSetConsiderUnverifiedStorageDeals(context.Context, bool) error
// DagstoreListShards returns information about all shards known to the
// DAG store. Only available on nodes running the markets subsystem.
DagstoreListShards(ctx context.Context) ([]DagstoreShardInfo, error) //perm:read
StorageAddLocal(ctx context.Context, path string) error
// DagstoreInitializeShard initializes an uninitialized shard.
//
// Initialization consists of fetching the shard's data (deal payload) from
// the storage subsystem, generating an index, and persisting the index
// to facilitate later retrievals, and/or to publish to external sources.
//
// This operation is intended to complement the initial migration. The
// migration registers a shard for every unique piece CID, with lazy
// initialization. Thus, shards are not initialized immediately to avoid
// IO activity competing with proving. Instead, shard are initialized
// when first accessed. This method forces the initialization of a shard by
// accessing it and immediately releasing it. This is useful to warm up the
// cache to facilitate subsequent retrievals, and to generate the indexes
// to publish them externally.
//
// This operation fails if the shard is not in ShardStateNew state.
// It blocks until initialization finishes.
DagstoreInitializeShard(ctx context.Context, key string) error //perm:write
PiecesListPieces(ctx context.Context) ([]cid.Cid, error)
PiecesListCidInfos(ctx context.Context) ([]cid.Cid, error)
PiecesGetPieceInfo(ctx context.Context, pieceCid cid.Cid) (*piecestore.PieceInfo, error)
PiecesGetCIDInfo(ctx context.Context, payloadCid cid.Cid) (*piecestore.CIDInfo, error)
// DagstoreRecoverShard attempts to recover a failed shard.
//
// This operation fails if the shard is not in ShardStateErrored state.
// It blocks until recovery finishes. If recovery failed, it returns the
// error.
DagstoreRecoverShard(ctx context.Context, key string) error //perm:write
// DagstoreInitializeAll initializes all uninitialized shards in bulk,
// according to the policy passed in the parameters.
//
// It is recommended to set a maximum concurrency to avoid extreme
// IO pressure if the storage subsystem has a large amount of deals.
//
// It returns a stream of events to report progress.
DagstoreInitializeAll(ctx context.Context, params DagstoreInitializeAllParams) (<-chan DagstoreInitializeAllEvent, error) //perm:write
// DagstoreGC runs garbage collection on the DAG store.
DagstoreGC(ctx context.Context) ([]DagstoreShardResult, error) //perm:admin
// IndexerAnnounceDeal informs indexer nodes that a new deal was received,
// so they can download its index
IndexerAnnounceDeal(ctx context.Context, proposalCid cid.Cid) error //perm:admin
// IndexerAnnounceAllDeals informs the indexer nodes aboutall active deals.
IndexerAnnounceAllDeals(ctx context.Context) error //perm:admin
// DagstoreLookupPieces returns information about shards that contain the given CID.
DagstoreLookupPieces(ctx context.Context, cid cid.Cid) ([]DagstoreShardInfo, error) //perm:admin
// RuntimeSubsystems returns the subsystems that are enabled
// in this instance.
RuntimeSubsystems(ctx context.Context) (MinerSubsystems, error) //perm:read
DealsImportData(ctx context.Context, dealPropCid cid.Cid, file string) error //perm:admin
DealsList(ctx context.Context) ([]MarketDeal, error) //perm:admin
DealsConsiderOnlineStorageDeals(context.Context) (bool, error) //perm:admin
DealsSetConsiderOnlineStorageDeals(context.Context, bool) error //perm:admin
DealsConsiderOnlineRetrievalDeals(context.Context) (bool, error) //perm:admin
DealsSetConsiderOnlineRetrievalDeals(context.Context, bool) error //perm:admin
DealsPieceCidBlocklist(context.Context) ([]cid.Cid, error) //perm:admin
DealsSetPieceCidBlocklist(context.Context, []cid.Cid) error //perm:admin
DealsConsiderOfflineStorageDeals(context.Context) (bool, error) //perm:admin
DealsSetConsiderOfflineStorageDeals(context.Context, bool) error //perm:admin
DealsConsiderOfflineRetrievalDeals(context.Context) (bool, error) //perm:admin
DealsSetConsiderOfflineRetrievalDeals(context.Context, bool) error //perm:admin
DealsConsiderVerifiedStorageDeals(context.Context) (bool, error) //perm:admin
DealsSetConsiderVerifiedStorageDeals(context.Context, bool) error //perm:admin
DealsConsiderUnverifiedStorageDeals(context.Context) (bool, error) //perm:admin
DealsSetConsiderUnverifiedStorageDeals(context.Context, bool) error //perm:admin
StorageAddLocal(ctx context.Context, path string) error //perm:admin
PiecesListPieces(ctx context.Context) ([]cid.Cid, error) //perm:read
PiecesListCidInfos(ctx context.Context) ([]cid.Cid, error) //perm:read
PiecesGetPieceInfo(ctx context.Context, pieceCid cid.Cid) (*piecestore.PieceInfo, error) //perm:read
PiecesGetCIDInfo(ctx context.Context, payloadCid cid.Cid) (*piecestore.CIDInfo, error) //perm:read
// CreateBackup creates node backup onder the specified file name. The
// method requires that the lotus-miner is running with the
// LOTUS_BACKUP_BASE_PATH environment variable set to some path, and that
// the path specified when calling CreateBackup is within the base path
CreateBackup(ctx context.Context, fpath string) error
CreateBackup(ctx context.Context, fpath string) error //perm:admin
CheckProvable(ctx context.Context, pp abi.RegisteredPoStProof, sectors []storage.SectorRef, expensive bool) (map[abi.SectorNumber]string, error)
CheckProvable(ctx context.Context, pp abi.RegisteredPoStProof, sectors []storage.SectorRef, expensive bool) (map[abi.SectorNumber]string, error) //perm:admin
ComputeProof(ctx context.Context, ssi []builtin.ExtendedSectorInfo, rand abi.PoStRandomness, poStEpoch abi.ChainEpoch, nv abinetwork.Version) ([]builtin.PoStProof, error) //perm:read
}
var _ storiface.WorkerReturn = *new(StorageMiner)
type SealRes struct {
Err string
GoErr error `json:"-"`
@@ -162,19 +291,26 @@ type SectorLog struct {
Message string
}
type SectorPiece struct {
Piece abi.PieceInfo
DealInfo *PieceDealInfo // nil for pieces which do not appear in deals (e.g. filler pieces)
}
type SectorInfo struct {
SectorID abi.SectorNumber
State SectorState
CommD *cid.Cid
CommR *cid.Cid
Proof []byte
Deals []abi.DealID
Ticket SealTicket
Seed SealSeed
PreCommitMsg *cid.Cid
CommitMsg *cid.Cid
Retries uint64
ToUpgrade bool
SectorID abi.SectorNumber
State SectorState
CommD *cid.Cid
CommR *cid.Cid
Proof []byte
Deals []abi.DealID
Pieces []SectorPiece
Ticket SealTicket
Seed SealSeed
PreCommitMsg *cid.Cid
CommitMsg *cid.Cid
Retries uint64
ToUpgrade bool
ReplicaUpdateMessage *cid.Cid
LastErr string
@@ -229,15 +365,17 @@ type AddrUse int
const (
PreCommitAddr AddrUse = iota
CommitAddr
DealPublishAddr
PoStAddr
TerminateSectorsAddr
)
type AddressConfig struct {
PreCommitControl []address.Address
CommitControl []address.Address
TerminateControl []address.Address
PreCommitControl []address.Address
CommitControl []address.Address
TerminateControl []address.Address
DealPublishControl []address.Address
DisableOwnerFallback bool
DisableWorkerFallback bool
@@ -250,3 +388,56 @@ type PendingDealInfo struct {
PublishPeriodStart time.Time
PublishPeriod time.Duration
}
type SectorOffset struct {
Sector abi.SectorNumber
Offset abi.PaddedPieceSize
}
// DealInfo is a tuple of deal identity and its schedule
type PieceDealInfo struct {
PublishCid *cid.Cid
DealID abi.DealID
DealProposal *market.DealProposal
DealSchedule DealSchedule
KeepUnsealed bool
}
// DealSchedule communicates the time interval of a storage deal. The deal must
// appear in a sealed (proven) sector no later than StartEpoch, otherwise it
// is invalid.
type DealSchedule struct {
StartEpoch abi.ChainEpoch
EndEpoch abi.ChainEpoch
}
// DagstoreShardInfo is the serialized form of dagstore.DagstoreShardInfo that
// we expose through JSON-RPC to avoid clients having to depend on the
// dagstore lib.
type DagstoreShardInfo struct {
Key string
State string
Error string
}
// DagstoreShardResult enumerates results per shard.
type DagstoreShardResult struct {
Key string
Success bool
Error string
}
type DagstoreInitializeAllParams struct {
MaxConcurrency int
IncludeSealed bool
}
// DagstoreInitializeAllEvent represents an initialization event.
type DagstoreInitializeAllEvent struct {
Key string
Event string // "start", "end"
Success bool
Error string
Total int
Current int
}
+25 -2
View File
@@ -1,3 +1,4 @@
//stm: #unit
package api
import (
@@ -26,6 +27,7 @@ func goCmd() string {
}
func TestDoesntDependOnFFI(t *testing.T) {
//stm: @OTHER_IMPLEMENTATION_FFI_DEPENDENCE_001
deps, err := exec.Command(goCmd(), "list", "-deps", "github.com/filecoin-project/lotus/api").Output()
if err != nil {
t.Fatal(err)
@@ -37,7 +39,21 @@ func TestDoesntDependOnFFI(t *testing.T) {
}
}
func TestDoesntDependOnBuild(t *testing.T) {
//stm: @OTHER_IMPLEMENTATION_FFI_DEPENDENCE_002
deps, err := exec.Command(goCmd(), "list", "-deps", "github.com/filecoin-project/lotus/api").Output()
if err != nil {
t.Fatal(err)
}
for _, pkg := range strings.Fields(string(deps)) {
if pkg == "github.com/filecoin-project/build" {
t.Fatal("api depends on filecoin-ffi")
}
}
}
func TestReturnTypes(t *testing.T) {
//stm: @OTHER_IMPLEMENTATION_001
errType := reflect.TypeOf(new(error)).Elem()
bareIface := reflect.TypeOf(new(interface{})).Elem()
jmarsh := reflect.TypeOf(new(json.Marshaler)).Elem()
@@ -64,7 +80,7 @@ func TestReturnTypes(t *testing.T) {
seen[typ] = struct{}{}
if typ.Kind() == reflect.Interface && typ != bareIface && !typ.Implements(jmarsh) {
t.Error("methods can't return interfaces", m.Name)
t.Error("methods can't return interfaces or struct types not implementing json.Marshaller", m.Name)
}
switch typ.Kind() {
@@ -99,5 +115,12 @@ func TestReturnTypes(t *testing.T) {
t.Run("common", tst(new(Common)))
t.Run("full", tst(new(FullNode)))
t.Run("miner", tst(new(StorageMiner)))
t.Run("worker", tst(new(WorkerAPI)))
t.Run("worker", tst(new(Worker)))
}
func TestPermTags(t *testing.T) {
//stm: @OTHER_IMPLEMENTATION_PERM_TAGS_001
_ = PermissionedFullAPI(&FullNodeStruct{})
_ = PermissionedStorMinerAPI(&StorageMinerStruct{})
_ = PermissionedWorkerAPI(&WorkerStruct{})
}
+8 -8
View File
@@ -34,14 +34,14 @@ type MsgMeta struct {
Extra []byte
}
type WalletAPI interface {
WalletNew(context.Context, types.KeyType) (address.Address, error)
WalletHas(context.Context, address.Address) (bool, error)
WalletList(context.Context) ([]address.Address, error)
type Wallet interface {
WalletNew(context.Context, types.KeyType) (address.Address, error) //perm:admin
WalletHas(context.Context, address.Address) (bool, error) //perm:admin
WalletList(context.Context) ([]address.Address, error) //perm:admin
WalletSign(ctx context.Context, signer address.Address, toSign []byte, meta MsgMeta) (*crypto.Signature, error)
WalletSign(ctx context.Context, signer address.Address, toSign []byte, meta MsgMeta) (*crypto.Signature, error) //perm:admin
WalletExport(context.Context, address.Address) (*types.KeyInfo, error)
WalletImport(context.Context, *types.KeyInfo) (address.Address, error)
WalletDelete(context.Context, address.Address) error
WalletExport(context.Context, address.Address) (*types.KeyInfo, error) //perm:admin
WalletImport(context.Context, *types.KeyInfo) (address.Address, error) //perm:admin
WalletDelete(context.Context, address.Address) error //perm:admin
}
+51 -17
View File
@@ -4,44 +4,78 @@ import (
"context"
"github.com/google/uuid"
"github.com/ipfs/go-cid"
"github.com/filecoin-project/go-state-types/abi"
"github.com/filecoin-project/specs-actors/v5/actors/runtime/proof"
"github.com/filecoin-project/lotus/extern/sector-storage/sealtasks"
"github.com/filecoin-project/lotus/extern/sector-storage/stores"
"github.com/filecoin-project/lotus/extern/sector-storage/storiface"
"github.com/filecoin-project/specs-storage/storage"
)
type WorkerAPI interface {
Version(context.Context) (Version, error)
// TODO: Info() (name, ...) ?
// MODIFYING THE API INTERFACE
//
// When adding / changing methods in this file:
// * Do the change here
// * Adjust implementation in `node/impl/`
// * Run `make gen` - this will:
// * Generate proxy structs
// * Generate mocks
// * Generate markdown docs
// * Generate openrpc blobs
TaskTypes(context.Context) (map[sealtasks.TaskType]struct{}, error) // TaskType -> Weight
Paths(context.Context) ([]stores.StoragePath, error)
Info(context.Context) (storiface.WorkerInfo, error)
type Worker interface {
Version(context.Context) (Version, error) //perm:admin
storiface.WorkerCalls
// TaskType -> Weight
TaskTypes(context.Context) (map[sealtasks.TaskType]struct{}, error) //perm:admin
Paths(context.Context) ([]storiface.StoragePath, error) //perm:admin
Info(context.Context) (storiface.WorkerInfo, error) //perm:admin
TaskDisable(ctx context.Context, tt sealtasks.TaskType) error
TaskEnable(ctx context.Context, tt sealtasks.TaskType) error
// storiface.WorkerCalls
AddPiece(ctx context.Context, sector storage.SectorRef, pieceSizes []abi.UnpaddedPieceSize, newPieceSize abi.UnpaddedPieceSize, pieceData storage.Data) (storiface.CallID, error) //perm:admin
SealPreCommit1(ctx context.Context, sector storage.SectorRef, ticket abi.SealRandomness, pieces []abi.PieceInfo) (storiface.CallID, error) //perm:admin
SealPreCommit2(ctx context.Context, sector storage.SectorRef, pc1o storage.PreCommit1Out) (storiface.CallID, error) //perm:admin
SealCommit1(ctx context.Context, sector storage.SectorRef, ticket abi.SealRandomness, seed abi.InteractiveSealRandomness, pieces []abi.PieceInfo, cids storage.SectorCids) (storiface.CallID, error) //perm:admin
SealCommit2(ctx context.Context, sector storage.SectorRef, c1o storage.Commit1Out) (storiface.CallID, error) //perm:admin
FinalizeSector(ctx context.Context, sector storage.SectorRef, keepUnsealed []storage.Range) (storiface.CallID, error) //perm:admin
FinalizeReplicaUpdate(ctx context.Context, sector storage.SectorRef, keepUnsealed []storage.Range) (storiface.CallID, error) //perm:admin
ReplicaUpdate(ctx context.Context, sector storage.SectorRef, pieces []abi.PieceInfo) (storiface.CallID, error) //perm:admin
ProveReplicaUpdate1(ctx context.Context, sector storage.SectorRef, sectorKey, newSealed, newUnsealed cid.Cid) (storiface.CallID, error) //perm:admin
ProveReplicaUpdate2(ctx context.Context, sector storage.SectorRef, sectorKey, newSealed, newUnsealed cid.Cid, vanillaProofs storage.ReplicaVanillaProofs) (storiface.CallID, error) //perm:admin
GenerateSectorKeyFromData(ctx context.Context, sector storage.SectorRef, commD cid.Cid) (storiface.CallID, error) //perm:admin
ReleaseUnsealed(ctx context.Context, sector storage.SectorRef, safeToFree []storage.Range) (storiface.CallID, error) //perm:admin
MoveStorage(ctx context.Context, sector storage.SectorRef, types storiface.SectorFileType) (storiface.CallID, error) //perm:admin
UnsealPiece(context.Context, storage.SectorRef, storiface.UnpaddedByteIndex, abi.UnpaddedPieceSize, abi.SealRandomness, cid.Cid) (storiface.CallID, error) //perm:admin
Fetch(context.Context, storage.SectorRef, storiface.SectorFileType, storiface.PathType, storiface.AcquireMode) (storiface.CallID, error) //perm:admin
GenerateWinningPoSt(ctx context.Context, ppt abi.RegisteredPoStProof, mid abi.ActorID, sectors []storiface.PostSectorChallenge, randomness abi.PoStRandomness) ([]proof.PoStProof, error) //perm:admin
GenerateWindowPoSt(ctx context.Context, ppt abi.RegisteredPoStProof, mid abi.ActorID, sectors []storiface.PostSectorChallenge, partitionIdx int, randomness abi.PoStRandomness) (storiface.WindowPoStResult, error) //perm:admin
TaskDisable(ctx context.Context, tt sealtasks.TaskType) error //perm:admin
TaskEnable(ctx context.Context, tt sealtasks.TaskType) error //perm:admin
// Storage / Other
Remove(ctx context.Context, sector abi.SectorID) error
Remove(ctx context.Context, sector abi.SectorID) error //perm:admin
StorageAddLocal(ctx context.Context, path string) error
StorageAddLocal(ctx context.Context, path string) error //perm:admin
// SetEnabled marks the worker as enabled/disabled. Not that this setting
// may take a few seconds to propagate to task scheduler
SetEnabled(ctx context.Context, enabled bool) error
SetEnabled(ctx context.Context, enabled bool) error //perm:admin
Enabled(ctx context.Context) (bool, error)
Enabled(ctx context.Context) (bool, error) //perm:admin
// WaitQuiet blocks until there are no tasks running
WaitQuiet(ctx context.Context) error
WaitQuiet(ctx context.Context) error //perm:admin
// returns a random UUID of worker session, generated randomly when worker
// process starts
ProcessSession(context.Context) (uuid.UUID, error)
ProcessSession(context.Context) (uuid.UUID, error) //perm:admin
// Like ProcessSession, but returns an error when worker is disabled
Session(context.Context) (uuid.UUID, error)
Session(context.Context) (uuid.UUID, error) //perm:admin
}
var _ storiface.WorkerCalls = *new(Worker)
-44
View File
@@ -1,44 +0,0 @@
package apistruct
import (
"github.com/filecoin-project/go-jsonrpc/auth"
"github.com/filecoin-project/lotus/api"
)
const (
// When changing these, update docs/API.md too
PermRead auth.Permission = "read" // default
PermWrite auth.Permission = "write"
PermSign auth.Permission = "sign" // Use wallet keys for signing
PermAdmin auth.Permission = "admin" // Manage permissions
)
var AllPermissions = []auth.Permission{PermRead, PermWrite, PermSign, PermAdmin}
var DefaultPerms = []auth.Permission{PermRead}
func PermissionedStorMinerAPI(a api.StorageMiner) api.StorageMiner {
var out StorageMinerStruct
auth.PermissionedProxy(AllPermissions, DefaultPerms, a, &out.Internal)
auth.PermissionedProxy(AllPermissions, DefaultPerms, a, &out.CommonStruct.Internal)
return &out
}
func PermissionedFullAPI(a api.FullNode) api.FullNode {
var out FullNodeStruct
auth.PermissionedProxy(AllPermissions, DefaultPerms, a, &out.Internal)
auth.PermissionedProxy(AllPermissions, DefaultPerms, a, &out.CommonStruct.Internal)
return &out
}
func PermissionedWorkerAPI(a api.WorkerAPI) api.WorkerAPI {
var out WorkerStruct
auth.PermissionedProxy(AllPermissions, DefaultPerms, a, &out.Internal)
return &out
}
func PermissionedWalletAPI(a api.WalletAPI) api.WalletAPI {
var out WalletStruct
auth.PermissionedProxy(AllPermissions, DefaultPerms, a, &out.Internal)
return &out
}
File diff suppressed because it is too large Load Diff
-9
View File
@@ -1,9 +0,0 @@
package apistruct
import "testing"
func TestPermTags(t *testing.T) {
_ = PermissionedFullAPI(&FullNodeStruct{})
_ = PermissionedStorMinerAPI(&StorageMinerStruct{})
_ = PermissionedWorkerAPI(&WorkerStruct{})
}
+381
View File
@@ -5,9 +5,11 @@ package api
import (
"fmt"
"io"
"math"
"sort"
abi "github.com/filecoin-project/go-state-types/abi"
market "github.com/filecoin-project/specs-actors/actors/builtin/market"
paych "github.com/filecoin-project/specs-actors/actors/builtin/paych"
cid "github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen"
@@ -16,6 +18,7 @@ import (
var _ = xerrors.Errorf
var _ = cid.Undef
var _ = math.E
var _ = sort.Sort
func (t *PaymentInfo) MarshalCBOR(w io.Writer) error {
@@ -738,3 +741,381 @@ func (t *SealSeed) UnmarshalCBOR(r io.Reader) error {
return nil
}
func (t *PieceDealInfo) MarshalCBOR(w io.Writer) error {
if t == nil {
_, err := w.Write(cbg.CborNull)
return err
}
if _, err := w.Write([]byte{165}); err != nil {
return err
}
scratch := make([]byte, 9)
// t.PublishCid (cid.Cid) (struct)
if len("PublishCid") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"PublishCid\" was too long")
}
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("PublishCid"))); err != nil {
return err
}
if _, err := io.WriteString(w, string("PublishCid")); err != nil {
return err
}
if t.PublishCid == nil {
if _, err := w.Write(cbg.CborNull); err != nil {
return err
}
} else {
if err := cbg.WriteCidBuf(scratch, w, *t.PublishCid); err != nil {
return xerrors.Errorf("failed to write cid field t.PublishCid: %w", err)
}
}
// t.DealID (abi.DealID) (uint64)
if len("DealID") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"DealID\" was too long")
}
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("DealID"))); err != nil {
return err
}
if _, err := io.WriteString(w, string("DealID")); err != nil {
return err
}
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.DealID)); err != nil {
return err
}
// t.DealProposal (market.DealProposal) (struct)
if len("DealProposal") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"DealProposal\" was too long")
}
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("DealProposal"))); err != nil {
return err
}
if _, err := io.WriteString(w, string("DealProposal")); err != nil {
return err
}
if err := t.DealProposal.MarshalCBOR(w); err != nil {
return err
}
// t.DealSchedule (api.DealSchedule) (struct)
if len("DealSchedule") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"DealSchedule\" was too long")
}
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("DealSchedule"))); err != nil {
return err
}
if _, err := io.WriteString(w, string("DealSchedule")); err != nil {
return err
}
if err := t.DealSchedule.MarshalCBOR(w); err != nil {
return err
}
// t.KeepUnsealed (bool) (bool)
if len("KeepUnsealed") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"KeepUnsealed\" was too long")
}
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("KeepUnsealed"))); err != nil {
return err
}
if _, err := io.WriteString(w, string("KeepUnsealed")); err != nil {
return err
}
if err := cbg.WriteBool(w, t.KeepUnsealed); err != nil {
return err
}
return nil
}
func (t *PieceDealInfo) UnmarshalCBOR(r io.Reader) error {
*t = PieceDealInfo{}
br := cbg.GetPeeker(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch)
if err != nil {
return err
}
if maj != cbg.MajMap {
return fmt.Errorf("cbor input should be of type map")
}
if extra > cbg.MaxLength {
return fmt.Errorf("PieceDealInfo: map struct too large (%d)", extra)
}
var name string
n := extra
for i := uint64(0); i < n; i++ {
{
sval, err := cbg.ReadStringBuf(br, scratch)
if err != nil {
return err
}
name = string(sval)
}
switch name {
// t.PublishCid (cid.Cid) (struct)
case "PublishCid":
{
b, err := br.ReadByte()
if err != nil {
return err
}
if b != cbg.CborNull[0] {
if err := br.UnreadByte(); err != nil {
return err
}
c, err := cbg.ReadCid(br)
if err != nil {
return xerrors.Errorf("failed to read cid field t.PublishCid: %w", err)
}
t.PublishCid = &c
}
}
// t.DealID (abi.DealID) (uint64)
case "DealID":
{
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch)
if err != nil {
return err
}
if maj != cbg.MajUnsignedInt {
return fmt.Errorf("wrong type for uint64 field")
}
t.DealID = abi.DealID(extra)
}
// t.DealProposal (market.DealProposal) (struct)
case "DealProposal":
{
b, err := br.ReadByte()
if err != nil {
return err
}
if b != cbg.CborNull[0] {
if err := br.UnreadByte(); err != nil {
return err
}
t.DealProposal = new(market.DealProposal)
if err := t.DealProposal.UnmarshalCBOR(br); err != nil {
return xerrors.Errorf("unmarshaling t.DealProposal pointer: %w", err)
}
}
}
// t.DealSchedule (api.DealSchedule) (struct)
case "DealSchedule":
{
if err := t.DealSchedule.UnmarshalCBOR(br); err != nil {
return xerrors.Errorf("unmarshaling t.DealSchedule: %w", err)
}
}
// t.KeepUnsealed (bool) (bool)
case "KeepUnsealed":
maj, extra, err = cbg.CborReadHeaderBuf(br, scratch)
if err != nil {
return err
}
if maj != cbg.MajOther {
return fmt.Errorf("booleans must be major type 7")
}
switch extra {
case 20:
t.KeepUnsealed = false
case 21:
t.KeepUnsealed = true
default:
return fmt.Errorf("booleans are either major type 7, value 20 or 21 (got %d)", extra)
}
default:
// Field doesn't exist on this type, so ignore it
cbg.ScanForLinks(r, func(cid.Cid) {})
}
}
return nil
}
func (t *DealSchedule) MarshalCBOR(w io.Writer) error {
if t == nil {
_, err := w.Write(cbg.CborNull)
return err
}
if _, err := w.Write([]byte{162}); err != nil {
return err
}
scratch := make([]byte, 9)
// t.StartEpoch (abi.ChainEpoch) (int64)
if len("StartEpoch") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"StartEpoch\" was too long")
}
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("StartEpoch"))); err != nil {
return err
}
if _, err := io.WriteString(w, string("StartEpoch")); err != nil {
return err
}
if t.StartEpoch >= 0 {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.StartEpoch)); err != nil {
return err
}
} else {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajNegativeInt, uint64(-t.StartEpoch-1)); err != nil {
return err
}
}
// t.EndEpoch (abi.ChainEpoch) (int64)
if len("EndEpoch") > cbg.MaxLength {
return xerrors.Errorf("Value in field \"EndEpoch\" was too long")
}
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajTextString, uint64(len("EndEpoch"))); err != nil {
return err
}
if _, err := io.WriteString(w, string("EndEpoch")); err != nil {
return err
}
if t.EndEpoch >= 0 {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajUnsignedInt, uint64(t.EndEpoch)); err != nil {
return err
}
} else {
if err := cbg.WriteMajorTypeHeaderBuf(scratch, w, cbg.MajNegativeInt, uint64(-t.EndEpoch-1)); err != nil {
return err
}
}
return nil
}
func (t *DealSchedule) UnmarshalCBOR(r io.Reader) error {
*t = DealSchedule{}
br := cbg.GetPeeker(r)
scratch := make([]byte, 8)
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch)
if err != nil {
return err
}
if maj != cbg.MajMap {
return fmt.Errorf("cbor input should be of type map")
}
if extra > cbg.MaxLength {
return fmt.Errorf("DealSchedule: map struct too large (%d)", extra)
}
var name string
n := extra
for i := uint64(0); i < n; i++ {
{
sval, err := cbg.ReadStringBuf(br, scratch)
if err != nil {
return err
}
name = string(sval)
}
switch name {
// t.StartEpoch (abi.ChainEpoch) (int64)
case "StartEpoch":
{
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch)
var extraI int64
if err != nil {
return err
}
switch maj {
case cbg.MajUnsignedInt:
extraI = int64(extra)
if extraI < 0 {
return fmt.Errorf("int64 positive overflow")
}
case cbg.MajNegativeInt:
extraI = int64(extra)
if extraI < 0 {
return fmt.Errorf("int64 negative oveflow")
}
extraI = -1 - extraI
default:
return fmt.Errorf("wrong type for int64 field: %d", maj)
}
t.StartEpoch = abi.ChainEpoch(extraI)
}
// t.EndEpoch (abi.ChainEpoch) (int64)
case "EndEpoch":
{
maj, extra, err := cbg.CborReadHeaderBuf(br, scratch)
var extraI int64
if err != nil {
return err
}
switch maj {
case cbg.MajUnsignedInt:
extraI = int64(extra)
if extraI < 0 {
return fmt.Errorf("int64 positive overflow")
}
case cbg.MajNegativeInt:
extraI = int64(extra)
if extraI < 0 {
return fmt.Errorf("int64 negative oveflow")
}
extraI = -1 - extraI
default:
return fmt.Errorf("wrong type for int64 field: %d", maj)
}
t.EndEpoch = abi.ChainEpoch(extraI)
}
default:
// Field doesn't exist on this type, so ignore it
cbg.ScanForLinks(r, func(cid.Cid) {})
}
}
return nil
}
+35
View File
@@ -0,0 +1,35 @@
// Code generated by "stringer -type=CheckStatusCode -trimprefix=CheckStatus"; DO NOT EDIT.
package api
import "strconv"
func _() {
// An "invalid array index" compiler error signifies that the constant values have changed.
// Re-run the stringer command to generate them again.
var x [1]struct{}
_ = x[CheckStatusMessageSerialize-1]
_ = x[CheckStatusMessageSize-2]
_ = x[CheckStatusMessageValidity-3]
_ = x[CheckStatusMessageMinGas-4]
_ = x[CheckStatusMessageMinBaseFee-5]
_ = x[CheckStatusMessageBaseFee-6]
_ = x[CheckStatusMessageBaseFeeLowerBound-7]
_ = x[CheckStatusMessageBaseFeeUpperBound-8]
_ = x[CheckStatusMessageGetStateNonce-9]
_ = x[CheckStatusMessageNonce-10]
_ = x[CheckStatusMessageGetStateBalance-11]
_ = x[CheckStatusMessageBalance-12]
}
const _CheckStatusCode_name = "MessageSerializeMessageSizeMessageValidityMessageMinGasMessageMinBaseFeeMessageBaseFeeMessageBaseFeeLowerBoundMessageBaseFeeUpperBoundMessageGetStateNonceMessageNonceMessageGetStateBalanceMessageBalance"
var _CheckStatusCode_index = [...]uint8{0, 16, 27, 42, 55, 72, 86, 110, 134, 154, 166, 188, 202}
func (i CheckStatusCode) String() string {
i -= 1
if i < 0 || i >= CheckStatusCode(len(_CheckStatusCode_index)-1) {
return "CheckStatusCode(" + strconv.FormatInt(int64(i+1), 10) + ")"
}
return _CheckStatusCode_name[_CheckStatusCode_index[i]:_CheckStatusCode_index[i+1]]
}
+69 -49
View File
@@ -10,72 +10,84 @@ import (
"github.com/filecoin-project/go-jsonrpc"
"github.com/filecoin-project/lotus/api"
"github.com/filecoin-project/lotus/api/apistruct"
"github.com/filecoin-project/lotus/api/v0api"
"github.com/filecoin-project/lotus/api/v1api"
"github.com/filecoin-project/lotus/lib/rpcenc"
)
// NewCommonRPC creates a new http jsonrpc client.
func NewCommonRPC(ctx context.Context, addr string, requestHeader http.Header) (api.Common, jsonrpc.ClientCloser, error) {
var res apistruct.CommonStruct
// NewCommonRPCV0 creates a new http jsonrpc client.
func NewCommonRPCV0(ctx context.Context, addr string, requestHeader http.Header) (api.CommonNet, jsonrpc.ClientCloser, error) {
var res v0api.CommonNetStruct
closer, err := jsonrpc.NewMergeClient(ctx, addr, "Filecoin",
[]interface{}{
&res.Internal,
},
requestHeader,
)
api.GetInternalStructs(&res), requestHeader)
return &res, closer, err
}
// NewFullNodeRPC creates a new http jsonrpc client.
func NewFullNodeRPC(ctx context.Context, addr string, requestHeader http.Header) (api.FullNode, jsonrpc.ClientCloser, error) {
var res apistruct.FullNodeStruct
// NewFullNodeRPCV0 creates a new http jsonrpc client.
func NewFullNodeRPCV0(ctx context.Context, addr string, requestHeader http.Header) (v0api.FullNode, jsonrpc.ClientCloser, error) {
var res v0api.FullNodeStruct
closer, err := jsonrpc.NewMergeClient(ctx, addr, "Filecoin",
[]interface{}{
&res.CommonStruct.Internal,
&res.Internal,
}, requestHeader)
api.GetInternalStructs(&res), requestHeader)
return &res, closer, err
}
// NewStorageMinerRPC creates a new http jsonrpc client for miner
func NewStorageMinerRPC(ctx context.Context, addr string, requestHeader http.Header, opts ...jsonrpc.Option) (api.StorageMiner, jsonrpc.ClientCloser, error) {
var res apistruct.StorageMinerStruct
// NewFullNodeRPCV1 creates a new http jsonrpc client.
func NewFullNodeRPCV1(ctx context.Context, addr string, requestHeader http.Header) (api.FullNode, jsonrpc.ClientCloser, error) {
var res v1api.FullNodeStruct
closer, err := jsonrpc.NewMergeClient(ctx, addr, "Filecoin",
[]interface{}{
&res.CommonStruct.Internal,
&res.Internal,
},
requestHeader,
opts...,
)
api.GetInternalStructs(&res), requestHeader)
return &res, closer, err
}
func NewWorkerRPC(ctx context.Context, addr string, requestHeader http.Header) (api.WorkerAPI, jsonrpc.ClientCloser, error) {
u, err := url.Parse(addr)
func getPushUrl(addr string) (string, error) {
pushUrl, err := url.Parse(addr)
if err != nil {
return nil, nil, err
return "", err
}
switch u.Scheme {
switch pushUrl.Scheme {
case "ws":
u.Scheme = "http"
pushUrl.Scheme = "http"
case "wss":
u.Scheme = "https"
pushUrl.Scheme = "https"
}
///rpc/v0 -> /rpc/streams/v0/push
u.Path = path.Join(u.Path, "../streams/v0/push")
pushUrl.Path = path.Join(pushUrl.Path, "../streams/v0/push")
return pushUrl.String(), nil
}
var res apistruct.WorkerStruct
// NewStorageMinerRPCV0 creates a new http jsonrpc client for miner
func NewStorageMinerRPCV0(ctx context.Context, addr string, requestHeader http.Header, opts ...jsonrpc.Option) (v0api.StorageMiner, jsonrpc.ClientCloser, error) {
pushUrl, err := getPushUrl(addr)
if err != nil {
return nil, nil, err
}
var res v0api.StorageMinerStruct
closer, err := jsonrpc.NewMergeClient(ctx, addr, "Filecoin",
[]interface{}{
&res.Internal,
},
api.GetInternalStructs(&res), requestHeader,
append([]jsonrpc.Option{
rpcenc.ReaderParamEncoder(pushUrl),
}, opts...)...)
return &res, closer, err
}
func NewWorkerRPCV0(ctx context.Context, addr string, requestHeader http.Header) (v0api.Worker, jsonrpc.ClientCloser, error) {
pushUrl, err := getPushUrl(addr)
if err != nil {
return nil, nil, err
}
var res api.WorkerStruct
closer, err := jsonrpc.NewMergeClient(ctx, addr, "Filecoin",
api.GetInternalStructs(&res),
requestHeader,
rpcenc.ReaderParamEncoder(u.String()),
rpcenc.ReaderParamEncoder(pushUrl),
jsonrpc.WithNoReconnect(),
jsonrpc.WithTimeout(30*time.Second),
)
@@ -83,13 +95,11 @@ func NewWorkerRPC(ctx context.Context, addr string, requestHeader http.Header) (
return &res, closer, err
}
// NewGatewayRPC creates a new http jsonrpc client for a gateway node.
func NewGatewayRPC(ctx context.Context, addr string, requestHeader http.Header, opts ...jsonrpc.Option) (api.GatewayAPI, jsonrpc.ClientCloser, error) {
var res apistruct.GatewayStruct
// NewGatewayRPCV1 creates a new http jsonrpc client for a gateway node.
func NewGatewayRPCV1(ctx context.Context, addr string, requestHeader http.Header, opts ...jsonrpc.Option) (api.Gateway, jsonrpc.ClientCloser, error) {
var res api.GatewayStruct
closer, err := jsonrpc.NewMergeClient(ctx, addr, "Filecoin",
[]interface{}{
&res.Internal,
},
api.GetInternalStructs(&res),
requestHeader,
opts...,
)
@@ -97,12 +107,22 @@ func NewGatewayRPC(ctx context.Context, addr string, requestHeader http.Header,
return &res, closer, err
}
func NewWalletRPC(ctx context.Context, addr string, requestHeader http.Header) (api.WalletAPI, jsonrpc.ClientCloser, error) {
var res apistruct.WalletStruct
// NewGatewayRPCV0 creates a new http jsonrpc client for a gateway node.
func NewGatewayRPCV0(ctx context.Context, addr string, requestHeader http.Header, opts ...jsonrpc.Option) (v0api.Gateway, jsonrpc.ClientCloser, error) {
var res v0api.GatewayStruct
closer, err := jsonrpc.NewMergeClient(ctx, addr, "Filecoin",
[]interface{}{
&res.Internal,
},
api.GetInternalStructs(&res),
requestHeader,
opts...,
)
return &res, closer, err
}
func NewWalletRPCV0(ctx context.Context, addr string, requestHeader http.Header) (api.Wallet, jsonrpc.ClientCloser, error) {
var res api.WalletStruct
closer, err := jsonrpc.NewMergeClient(ctx, addr, "Filecoin",
api.GetInternalStructs(&res),
requestHeader,
)
+74
View File
@@ -0,0 +1,74 @@
package main
import (
"compress/gzip"
"encoding/json"
"io"
"log"
"os"
"github.com/filecoin-project/lotus/api/docgen"
docgen_openrpc "github.com/filecoin-project/lotus/api/docgen-openrpc"
)
/*
main defines a small program that writes an OpenRPC document describing
a Lotus API to stdout.
If the first argument is "miner", the document will describe the StorageMiner API.
If not (no, or any other args), the document will describe the Full API.
Use:
go run ./api/openrpc/cmd ["api/api_full.go"|"api/api_storage.go"|"api/api_worker.go"] ["FullNode"|"StorageMiner"|"Worker"]
With gzip compression: a '-gzip' flag is made available as an optional third argument. Note that position matters.
go run ./api/openrpc/cmd ["api/api_full.go"|"api/api_storage.go"|"api/api_worker.go"] ["FullNode"|"StorageMiner"|"Worker"] -gzip
*/
func main() {
Comments, GroupDocs := docgen.ParseApiASTInfo(os.Args[1], os.Args[2], os.Args[3], os.Args[4])
doc := docgen_openrpc.NewLotusOpenRPCDocument(Comments, GroupDocs)
i, _, _ := docgen.GetAPIType(os.Args[2], os.Args[3])
doc.RegisterReceiverName("Filecoin", i)
out, err := doc.Discover()
if err != nil {
log.Fatalln(err)
}
var jsonOut []byte
var writer io.WriteCloser
// Use os.Args to handle a somewhat hacky flag for the gzip option.
// Could use flags package to handle this more cleanly, but that requires changes elsewhere
// the scope of which just isn't warranted by this one use case which will usually be run
// programmatically anyways.
if len(os.Args) > 5 && os.Args[5] == "-gzip" {
jsonOut, err = json.Marshal(out)
if err != nil {
log.Fatalln(err)
}
writer = gzip.NewWriter(os.Stdout)
} else {
jsonOut, err = json.MarshalIndent(out, "", " ")
if err != nil {
log.Fatalln(err)
}
writer = os.Stdout
}
_, err = writer.Write(jsonOut)
if err != nil {
log.Fatalln(err)
}
err = writer.Close()
if err != nil {
log.Fatalln(err)
}
}
+161
View File
@@ -0,0 +1,161 @@
package docgenopenrpc
import (
"encoding/json"
"go/ast"
"net"
"reflect"
"github.com/alecthomas/jsonschema"
go_openrpc_reflect "github.com/etclabscore/go-openrpc-reflect"
"github.com/filecoin-project/lotus/api/docgen"
"github.com/filecoin-project/lotus/build"
"github.com/ipfs/go-cid"
meta_schema "github.com/open-rpc/meta-schema"
)
// schemaDictEntry represents a type association passed to the jsonschema reflector.
type schemaDictEntry struct {
example interface{}
rawJson string
}
const integerD = `{
"title": "number",
"type": "number",
"description": "Number is a number"
}`
const cidCidD = `{"title": "Content Identifier", "type": "string", "description": "Cid represents a self-describing content addressed identifier. It is formed by a Version, a Codec (which indicates a multicodec-packed content type) and a Multihash."}`
func OpenRPCSchemaTypeMapper(ty reflect.Type) *jsonschema.Type {
unmarshalJSONToJSONSchemaType := func(input string) *jsonschema.Type {
var js jsonschema.Type
err := json.Unmarshal([]byte(input), &js)
if err != nil {
panic(err)
}
return &js
}
if ty.Kind() == reflect.Ptr {
ty = ty.Elem()
}
if ty == reflect.TypeOf((*interface{})(nil)).Elem() {
return &jsonschema.Type{Type: "object", AdditionalProperties: []byte("true")}
}
// Second, handle other types.
// Use a slice instead of a map because it preserves order, as a logic safeguard/fallback.
dict := []schemaDictEntry{
{cid.Cid{}, cidCidD},
}
for _, d := range dict {
if reflect.TypeOf(d.example) == ty {
tt := unmarshalJSONToJSONSchemaType(d.rawJson)
return tt
}
}
// Handle primitive types in case there are generic cases
// specific to our services.
switch ty.Kind() {
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
// Return all integer types as the hex representation integer schemea.
ret := unmarshalJSONToJSONSchemaType(integerD)
return ret
case reflect.Uintptr:
return &jsonschema.Type{Type: "number", Title: "uintptr-title"}
case reflect.Struct:
case reflect.Map:
case reflect.Slice, reflect.Array:
case reflect.Float32, reflect.Float64:
case reflect.Bool:
case reflect.String:
case reflect.Ptr, reflect.Interface:
default:
}
return nil
}
// NewLotusOpenRPCDocument defines application-specific documentation and configuration for its OpenRPC document.
func NewLotusOpenRPCDocument(Comments, GroupDocs map[string]string) *go_openrpc_reflect.Document {
d := &go_openrpc_reflect.Document{}
// Register "Meta" document fields.
// These include getters for
// - Servers object
// - Info object
// - ExternalDocs object
//
// These objects represent server-specific data that cannot be
// reflected.
d.WithMeta(&go_openrpc_reflect.MetaT{
GetServersFn: func() func(listeners []net.Listener) (*meta_schema.Servers, error) {
return func(listeners []net.Listener) (*meta_schema.Servers, error) {
return nil, nil
}
},
GetInfoFn: func() (info *meta_schema.InfoObject) {
info = &meta_schema.InfoObject{}
title := "Lotus RPC API"
info.Title = (*meta_schema.InfoObjectProperties)(&title)
version := build.BuildVersion
info.Version = (*meta_schema.InfoObjectVersion)(&version)
return info
},
GetExternalDocsFn: func() (exdocs *meta_schema.ExternalDocumentationObject) {
return nil // FIXME
},
})
// Use a provided Ethereum default configuration as a base.
appReflector := &go_openrpc_reflect.EthereumReflectorT{}
// Install overrides for the json schema->type map fn used by the jsonschema reflect package.
appReflector.FnSchemaTypeMap = func() func(ty reflect.Type) *jsonschema.Type {
return OpenRPCSchemaTypeMapper
}
appReflector.FnIsMethodEligible = func(m reflect.Method) bool {
for i := 0; i < m.Func.Type().NumOut(); i++ {
if m.Func.Type().Out(i).Kind() == reflect.Chan {
return false
}
}
return go_openrpc_reflect.EthereumReflector.IsMethodEligible(m)
}
appReflector.FnGetMethodName = func(moduleName string, r reflect.Value, m reflect.Method, funcDecl *ast.FuncDecl) (string, error) {
if m.Name == "ID" {
return moduleName + "_ID", nil
}
if moduleName == "rpc" && m.Name == "Discover" {
return "rpc.discover", nil
}
return moduleName + "." + m.Name, nil
}
appReflector.FnGetMethodSummary = func(r reflect.Value, m reflect.Method, funcDecl *ast.FuncDecl) (string, error) {
if v, ok := Comments[m.Name]; ok {
return v, nil
}
return "", nil // noComment
}
appReflector.FnSchemaExamples = func(ty reflect.Type) (examples *meta_schema.Examples, err error) {
v := docgen.ExampleValue("unknown", ty, ty) // This isn't ideal, but seems to work well enough.
return &meta_schema.Examples{
meta_schema.AlwaysTrue(v),
}, nil
}
// Finally, register the configured reflector to the document.
d.WithReflector(appReflector)
return d
}
+121
View File
@@ -0,0 +1,121 @@
package main
import (
"encoding/json"
"fmt"
"os"
"reflect"
"sort"
"strings"
"github.com/filecoin-project/lotus/api/docgen"
)
func main() {
comments, groupComments := docgen.ParseApiASTInfo(os.Args[1], os.Args[2], os.Args[3], os.Args[4])
groups := make(map[string]*docgen.MethodGroup)
_, t, permStruct := docgen.GetAPIType(os.Args[2], os.Args[3])
for i := 0; i < t.NumMethod(); i++ {
m := t.Method(i)
groupName := docgen.MethodGroupFromName(m.Name)
g, ok := groups[groupName]
if !ok {
g = new(docgen.MethodGroup)
g.Header = groupComments[groupName]
g.GroupName = groupName
groups[groupName] = g
}
var args []interface{}
ft := m.Func.Type()
for j := 2; j < ft.NumIn(); j++ {
inp := ft.In(j)
args = append(args, docgen.ExampleValue(m.Name, inp, nil))
}
v, err := json.MarshalIndent(args, "", " ")
if err != nil {
panic(err)
}
outv := docgen.ExampleValue(m.Name, ft.Out(0), nil)
ov, err := json.MarshalIndent(outv, "", " ")
if err != nil {
panic(err)
}
g.Methods = append(g.Methods, &docgen.Method{
Name: m.Name,
Comment: comments[m.Name],
InputExample: string(v),
ResponseExample: string(ov),
})
}
var groupslice []*docgen.MethodGroup
for _, g := range groups {
groupslice = append(groupslice, g)
}
sort.Slice(groupslice, func(i, j int) bool {
return groupslice[i].GroupName < groupslice[j].GroupName
})
fmt.Printf("# Groups\n")
for _, g := range groupslice {
fmt.Printf("* [%s](#%s)\n", g.GroupName, g.GroupName)
for _, method := range g.Methods {
fmt.Printf(" * [%s](#%s)\n", method.Name, method.Name)
}
}
for _, g := range groupslice {
g := g
fmt.Printf("## %s\n", g.GroupName)
fmt.Printf("%s\n\n", g.Header)
sort.Slice(g.Methods, func(i, j int) bool {
return g.Methods[i].Name < g.Methods[j].Name
})
for _, m := range g.Methods {
fmt.Printf("### %s\n", m.Name)
fmt.Printf("%s\n\n", m.Comment)
var meth reflect.StructField
var ok bool
for _, ps := range permStruct {
meth, ok = ps.FieldByName(m.Name)
if ok {
break
}
}
if !ok {
panic("no perms for method: " + m.Name)
}
perms := meth.Tag.Get("perm")
fmt.Printf("Perms: %s\n\n", perms)
if strings.Count(m.InputExample, "\n") > 0 {
fmt.Printf("Inputs:\n```json\n%s\n```\n\n", m.InputExample)
} else {
fmt.Printf("Inputs: `%s`\n\n", m.InputExample)
}
if strings.Count(m.ResponseExample, "\n") > 0 {
fmt.Printf("Response:\n```json\n%s\n```\n\n", m.ResponseExample)
} else {
fmt.Printf("Response: `%s`\n\n", m.ResponseExample)
}
}
}
}
+183 -176
View File
@@ -1,4 +1,4 @@
package main
package docgen
import (
"encoding/json"
@@ -6,52 +6,53 @@ import (
"go/ast"
"go/parser"
"go/token"
"os"
"path/filepath"
"reflect"
"sort"
"strings"
"time"
"unicode"
"github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-bitfield"
"github.com/google/uuid"
"github.com/ipfs/go-cid"
"github.com/ipfs/go-filestore"
metrics "github.com/libp2p/go-libp2p-core/metrics"
"github.com/ipfs/go-graphsync"
"github.com/libp2p/go-libp2p-core/metrics"
"github.com/libp2p/go-libp2p-core/network"
"github.com/libp2p/go-libp2p-core/peer"
protocol "github.com/libp2p/go-libp2p-core/protocol"
"github.com/libp2p/go-libp2p-core/protocol"
pubsub "github.com/libp2p/go-libp2p-pubsub"
"github.com/multiformats/go-multiaddr"
"github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-bitfield"
datatransfer "github.com/filecoin-project/go-data-transfer"
filestore2 "github.com/filecoin-project/go-fil-markets/filestore"
filestore "github.com/filecoin-project/go-fil-markets/filestore"
"github.com/filecoin-project/go-fil-markets/retrievalmarket"
"github.com/filecoin-project/go-jsonrpc/auth"
"github.com/filecoin-project/go-multistore"
textselector "github.com/ipld/go-ipld-selector-text-lite"
"github.com/filecoin-project/go-state-types/abi"
"github.com/filecoin-project/go-state-types/crypto"
"github.com/filecoin-project/go-state-types/exitcode"
"github.com/filecoin-project/lotus/api"
"github.com/filecoin-project/lotus/api/apistruct"
apitypes "github.com/filecoin-project/lotus/api/types"
"github.com/filecoin-project/lotus/api/v0api"
"github.com/filecoin-project/lotus/build"
"github.com/filecoin-project/lotus/chain/types"
"github.com/filecoin-project/lotus/extern/sector-storage/sealtasks"
"github.com/filecoin-project/lotus/extern/sector-storage/stores"
"github.com/filecoin-project/lotus/extern/sector-storage/storiface"
sealing "github.com/filecoin-project/lotus/extern/storage-sealing"
"github.com/filecoin-project/lotus/node/modules/dtypes"
"github.com/filecoin-project/lotus/node/repo/imports"
)
var ExampleValues = map[reflect.Type]interface{}{
reflect.TypeOf(auth.Permission("")): auth.Permission("write"),
reflect.TypeOf(""): "string value",
reflect.TypeOf(uint64(42)): uint64(42),
reflect.TypeOf(byte(7)): byte(7),
reflect.TypeOf([]byte{}): []byte("byte array"),
reflect.TypeOf(api.MinerSubsystem(0)): api.MinerSubsystem(1),
reflect.TypeOf(auth.Permission("")): auth.Permission("write"),
reflect.TypeOf(""): "string value",
reflect.TypeOf(uint64(42)): uint64(42),
reflect.TypeOf(byte(7)): byte(7),
reflect.TypeOf([]byte{}): []byte("byte array"),
}
func addExample(v interface{}) {
@@ -89,6 +90,11 @@ func init() {
addExample(pid)
addExample(&pid)
storeIDExample := imports.ID(50)
textSelExample := textselector.Expression("Links/21/Hash/Links/42/Hash")
apiSelExample := api.Selector("Links/21/Hash/Links/42/Hash")
clientEvent := retrievalmarket.ClientEventDealAccepted
addExample(bitfield.NewFromSet([]uint64{5}))
addExample(abi.RegisteredSealProof_StackedDrg32GiBV1_1)
addExample(abi.RegisteredPoStProof_StackedDrgWindow32GiBV1)
@@ -106,37 +112,42 @@ func init() {
addExample(abi.UnpaddedPieceSize(1024))
addExample(abi.UnpaddedPieceSize(1024).Padded())
addExample(abi.DealID(5432))
addExample(filestore.StatusFileChanged)
addExample(abi.SectorNumber(9))
addExample(abi.SectorSize(32 * 1024 * 1024 * 1024))
addExample(api.MpoolChange(0))
addExample(network.Connected)
addExample(dtypes.NetworkName("lotus"))
addExample(api.SyncStateStage(1))
addExample(api.FullAPIVersion)
addExample(api.FullAPIVersion1)
addExample(api.PCHInbound)
addExample(time.Minute)
addExample(graphsync.NewRequestID())
addExample(datatransfer.TransferID(3))
addExample(datatransfer.Ongoing)
addExample(multistore.StoreID(50))
addExample(storeIDExample)
addExample(&storeIDExample)
addExample(clientEvent)
addExample(&clientEvent)
addExample(retrievalmarket.ClientEventDealAccepted)
addExample(retrievalmarket.DealStatusNew)
addExample(&textSelExample)
addExample(&apiSelExample)
addExample(network.ReachabilityPublic)
addExample(build.NewestNetworkVersion)
addExample(map[string]int{"name": 42})
addExample(map[string]time.Time{"name": time.Unix(1615243938, 0).UTC()})
addExample(&types.ExecutionTrace{
Msg: exampleValue("init", reflect.TypeOf(&types.Message{}), nil).(*types.Message),
MsgRct: exampleValue("init", reflect.TypeOf(&types.MessageReceipt{}), nil).(*types.MessageReceipt),
Msg: ExampleValue("init", reflect.TypeOf(&types.Message{}), nil).(*types.Message),
MsgRct: ExampleValue("init", reflect.TypeOf(&types.MessageReceipt{}), nil).(*types.MessageReceipt),
})
addExample(map[string]types.Actor{
"t01236": exampleValue("init", reflect.TypeOf(types.Actor{}), nil).(types.Actor),
"t01236": ExampleValue("init", reflect.TypeOf(types.Actor{}), nil).(types.Actor),
})
addExample(map[string]api.MarketDeal{
"t026363": exampleValue("init", reflect.TypeOf(api.MarketDeal{}), nil).(api.MarketDeal),
"t026363": ExampleValue("init", reflect.TypeOf(api.MarketDeal{}), nil).(api.MarketDeal),
})
addExample(map[string]api.MarketBalance{
"t026363": exampleValue("init", reflect.TypeOf(api.MarketBalance{}), nil).(api.MarketBalance),
"t026363": ExampleValue("init", reflect.TypeOf(api.MarketBalance{}), nil).(api.MarketBalance),
})
addExample(map[string]*pubsub.TopicScoreSnapshot{
"/blocks": {
@@ -172,8 +183,8 @@ func init() {
ExampleValues[reflect.TypeOf(struct{ A multiaddr.Multiaddr }{}).Field(0).Type] = maddr
// miner specific
addExample(filestore2.Path(".lotusminer/fstmp123"))
si := multistore.StoreID(12)
addExample(filestore.Path(".lotusminer/fstmp123"))
si := uint64(12)
addExample(&si)
addExample(retrievalmarket.DealID(5))
addExample(abi.ActorID(1000))
@@ -187,10 +198,10 @@ func init() {
},
})
addExample(api.SectorState(sealing.Proving))
addExample(stores.ID("76f1988b-ef30-4d7e-b3ec-9a627f4ba5a8"))
addExample(storiface.ID("76f1988b-ef30-4d7e-b3ec-9a627f4ba5a8"))
addExample(storiface.FTUnsealed)
addExample(storiface.PathSealing)
addExample(map[stores.ID][]stores.Decl{
addExample(map[storiface.ID][]storiface.Decl{
"76f1988b-ef30-4d7e-b3ec-9a627f4ba5a8": {
{
SectorID: abi.SectorID{Miner: 1000, Number: 100},
@@ -198,7 +209,7 @@ func init() {
},
},
})
addExample(map[stores.ID]string{
addExample(map[storiface.ID]string{
"76f1988b-ef30-4d7e-b3ec-9a627f4ba5a8": "/data/path",
})
addExample(map[uuid.UUID][]storiface.WorkerJob{
@@ -222,16 +233,18 @@ func init() {
Hostname: "host",
Resources: storiface.WorkerResources{
MemPhysical: 256 << 30,
MemUsed: 2 << 30,
MemSwap: 120 << 30,
MemReserved: 2 << 30,
MemSwapUsed: 2 << 30,
CPUs: 64,
GPUs: []string{"aGPU 1337"},
Resources: storiface.ResourceTable,
},
},
Enabled: true,
MemUsedMin: 0,
MemUsedMax: 0,
GpuUsed: false,
GpuUsed: 0,
CpuUse: 0,
},
})
@@ -239,10 +252,18 @@ func init() {
addExample(map[abi.SectorNumber]string{
123: "can't acquire read lock",
})
addExample(json.RawMessage(`"json raw message"`))
addExample(map[api.SectorState]int{
api.SectorState(sealing.Proving): 120,
})
addExample([]abi.SectorNumber{123, 124})
addExample([]storiface.SectorLock{
{
Sector: abi.SectorID{Number: 123, Miner: 1000},
Write: [storiface.FileTypes]uint{0, 0, 1},
Read: [storiface.FileTypes]uint{2, 3, 0},
},
})
// worker specific
addExample(storiface.AcquireMove)
@@ -251,9 +272,103 @@ func init() {
sealtasks.TTPreCommit2: {},
})
addExample(sealtasks.TTCommit2)
addExample(apitypes.OpenRPCDocument{
"openrpc": "1.2.6",
"info": map[string]interface{}{
"title": "Lotus RPC API",
"version": "1.2.1/generated=2020-11-22T08:22:42-06:00",
},
"methods": []interface{}{}},
)
addExample(api.CheckStatusCode(0))
addExample(map[string]interface{}{"abc": 123})
addExample(api.MinerSubsystems{
api.SubsystemMining,
api.SubsystemSealing,
api.SubsystemSectorStorage,
api.SubsystemMarkets,
})
addExample(api.DagstoreShardResult{
Key: "baga6ea4seaqecmtz7iak33dsfshi627abz4i4665dfuzr3qfs4bmad6dx3iigdq",
Error: "<error>",
})
addExample(api.DagstoreShardInfo{
Key: "baga6ea4seaqecmtz7iak33dsfshi627abz4i4665dfuzr3qfs4bmad6dx3iigdq",
State: "ShardStateAvailable",
Error: "<error>",
})
addExample(storiface.ResourceTable)
addExample(network.ScopeStat{
Memory: 123,
NumStreamsInbound: 1,
NumStreamsOutbound: 2,
NumConnsInbound: 3,
NumConnsOutbound: 4,
NumFD: 5,
})
addExample(map[string]network.ScopeStat{
"abc": {
Memory: 123,
NumStreamsInbound: 1,
NumStreamsOutbound: 2,
NumConnsInbound: 3,
NumConnsOutbound: 4,
NumFD: 5,
}})
addExample(api.NetLimit{
Memory: 123,
StreamsInbound: 1,
StreamsOutbound: 2,
Streams: 3,
ConnsInbound: 3,
ConnsOutbound: 4,
Conns: 4,
FD: 5,
})
}
func exampleValue(method string, t, parent reflect.Type) interface{} {
func GetAPIType(name, pkg string) (i interface{}, t reflect.Type, permStruct []reflect.Type) {
switch pkg {
case "api": // latest
switch name {
case "FullNode":
i = &api.FullNodeStruct{}
t = reflect.TypeOf(new(struct{ api.FullNode })).Elem()
permStruct = append(permStruct, reflect.TypeOf(api.FullNodeStruct{}.Internal))
permStruct = append(permStruct, reflect.TypeOf(api.CommonStruct{}.Internal))
permStruct = append(permStruct, reflect.TypeOf(api.NetStruct{}.Internal))
case "StorageMiner":
i = &api.StorageMinerStruct{}
t = reflect.TypeOf(new(struct{ api.StorageMiner })).Elem()
permStruct = append(permStruct, reflect.TypeOf(api.StorageMinerStruct{}.Internal))
permStruct = append(permStruct, reflect.TypeOf(api.CommonStruct{}.Internal))
permStruct = append(permStruct, reflect.TypeOf(api.NetStruct{}.Internal))
case "Worker":
i = &api.WorkerStruct{}
t = reflect.TypeOf(new(struct{ api.Worker })).Elem()
permStruct = append(permStruct, reflect.TypeOf(api.WorkerStruct{}.Internal))
default:
panic("unknown type")
}
case "v0api":
switch name {
case "FullNode":
i = v0api.FullNodeStruct{}
t = reflect.TypeOf(new(struct{ v0api.FullNode })).Elem()
permStruct = append(permStruct, reflect.TypeOf(v0api.FullNodeStruct{}.Internal))
permStruct = append(permStruct, reflect.TypeOf(v0api.CommonStruct{}.Internal))
permStruct = append(permStruct, reflect.TypeOf(v0api.NetStruct{}.Internal))
default:
panic("unknown type")
}
}
return
}
func ExampleValue(method string, t, parent reflect.Type) interface{} {
v, ok := ExampleValues[t]
if ok {
return v
@@ -262,10 +377,10 @@ func exampleValue(method string, t, parent reflect.Type) interface{} {
switch t.Kind() {
case reflect.Slice:
out := reflect.New(t).Elem()
reflect.Append(out, reflect.ValueOf(exampleValue(method, t.Elem(), t)))
out = reflect.Append(out, reflect.ValueOf(ExampleValue(method, t.Elem(), t)))
return out.Interface()
case reflect.Chan:
return exampleValue(method, t.Elem(), nil)
return ExampleValue(method, t.Elem(), nil)
case reflect.Struct:
es := exampleStruct(method, t, parent)
v := reflect.ValueOf(es).Elem().Interface()
@@ -274,7 +389,7 @@ func exampleValue(method string, t, parent reflect.Type) interface{} {
case reflect.Array:
out := reflect.New(t).Elem()
for i := 0; i < t.Len(); i++ {
out.Index(i).Set(reflect.ValueOf(exampleValue(method, t.Elem(), t)))
out.Index(i).Set(reflect.ValueOf(ExampleValue(method, t.Elem(), t)))
}
return out.Interface()
@@ -299,7 +414,7 @@ func exampleStruct(method string, t, parent reflect.Type) interface{} {
continue
}
if strings.Title(f.Name) == f.Name {
ns.Elem().Field(i).Set(reflect.ValueOf(exampleValue(method, f.Type, t)))
ns.Elem().Field(i).Set(reflect.ValueOf(ExampleValue(method, f.Type, t)))
}
}
@@ -331,32 +446,43 @@ func (v *Visitor) Visit(node ast.Node) ast.Visitor {
return v
}
const noComment = "There are not yet any comments for this method."
const NoComment = "There are not yet any comments for this method."
func parseApiASTInfo(apiFile, iface string) (map[string]string, map[string]string) { //nolint:golint
func ParseApiASTInfo(apiFile, iface, pkg, dir string) (comments map[string]string, groupDocs map[string]string) { //nolint:golint
fset := token.NewFileSet()
pkgs, err := parser.ParseDir(fset, "./api", nil, parser.AllErrors|parser.ParseComments)
apiDir, err := filepath.Abs(dir)
if err != nil {
fmt.Println("./api filepath absolute error: ", err)
return
}
apiFile, err = filepath.Abs(apiFile)
if err != nil {
fmt.Println("filepath absolute error: ", err, "file:", apiFile)
return
}
pkgs, err := parser.ParseDir(fset, apiDir, nil, parser.AllErrors|parser.ParseComments)
if err != nil {
fmt.Println("parse error: ", err)
return
}
ap := pkgs["api"]
ap := pkgs[pkg]
f := ap.Files[apiFile]
cmap := ast.NewCommentMap(fset, f, f.Comments)
v := &Visitor{iface, make(map[string]ast.Node)}
ast.Walk(v, pkgs["api"])
ast.Walk(v, ap)
groupDocs := make(map[string]string)
out := make(map[string]string)
comments = make(map[string]string)
groupDocs = make(map[string]string)
for mn, node := range v.Methods {
cs := cmap.Filter(node).Comments()
if len(cs) == 0 {
out[mn] = noComment
filteredComments := cmap.Filter(node).Comments()
if len(filteredComments) == 0 {
comments[mn] = NoComment
} else {
for _, c := range cs {
for _, c := range filteredComments {
if strings.HasPrefix(c.Text(), "MethodGroup:") {
parts := strings.Split(c.Text(), "\n")
groupName := strings.TrimSpace(parts[0][12:])
@@ -367,15 +493,19 @@ func parseApiASTInfo(apiFile, iface string) (map[string]string, map[string]strin
}
}
last := cs[len(cs)-1].Text()
l := len(filteredComments) - 1
if len(filteredComments) > 1 {
l = len(filteredComments) - 2
}
last := filteredComments[l].Text()
if !strings.HasPrefix(last, "MethodGroup:") {
out[mn] = last
comments[mn] = last
} else {
out[mn] = noComment
comments[mn] = NoComment
}
}
}
return out, groupDocs
return comments, groupDocs
}
type MethodGroup struct {
@@ -391,7 +521,7 @@ type Method struct {
ResponseExample string
}
func methodGroupFromName(mn string) string {
func MethodGroupFromName(mn string) string {
i := strings.IndexFunc(mn[1:], func(r rune) bool {
return unicode.IsUpper(r)
})
@@ -400,126 +530,3 @@ func methodGroupFromName(mn string) string {
}
return mn[:i+1]
}
func main() {
comments, groupComments := parseApiASTInfo(os.Args[1], os.Args[2])
groups := make(map[string]*MethodGroup)
var t reflect.Type
var permStruct, commonPermStruct reflect.Type
switch os.Args[2] {
case "FullNode":
t = reflect.TypeOf(new(struct{ api.FullNode })).Elem()
permStruct = reflect.TypeOf(apistruct.FullNodeStruct{}.Internal)
commonPermStruct = reflect.TypeOf(apistruct.CommonStruct{}.Internal)
case "StorageMiner":
t = reflect.TypeOf(new(struct{ api.StorageMiner })).Elem()
permStruct = reflect.TypeOf(apistruct.StorageMinerStruct{}.Internal)
commonPermStruct = reflect.TypeOf(apistruct.CommonStruct{}.Internal)
case "WorkerAPI":
t = reflect.TypeOf(new(struct{ api.WorkerAPI })).Elem()
permStruct = reflect.TypeOf(apistruct.WorkerStruct{}.Internal)
commonPermStruct = reflect.TypeOf(apistruct.WorkerStruct{}.Internal)
default:
panic("unknown type")
}
for i := 0; i < t.NumMethod(); i++ {
m := t.Method(i)
groupName := methodGroupFromName(m.Name)
g, ok := groups[groupName]
if !ok {
g = new(MethodGroup)
g.Header = groupComments[groupName]
g.GroupName = groupName
groups[groupName] = g
}
var args []interface{}
ft := m.Func.Type()
for j := 2; j < ft.NumIn(); j++ {
inp := ft.In(j)
args = append(args, exampleValue(m.Name, inp, nil))
}
v, err := json.MarshalIndent(args, "", " ")
if err != nil {
panic(err)
}
outv := exampleValue(m.Name, ft.Out(0), nil)
ov, err := json.MarshalIndent(outv, "", " ")
if err != nil {
panic(err)
}
g.Methods = append(g.Methods, &Method{
Name: m.Name,
Comment: comments[m.Name],
InputExample: string(v),
ResponseExample: string(ov),
})
}
var groupslice []*MethodGroup
for _, g := range groups {
groupslice = append(groupslice, g)
}
sort.Slice(groupslice, func(i, j int) bool {
return groupslice[i].GroupName < groupslice[j].GroupName
})
fmt.Printf("# Groups\n")
for _, g := range groupslice {
fmt.Printf("* [%s](#%s)\n", g.GroupName, g.GroupName)
for _, method := range g.Methods {
fmt.Printf(" * [%s](#%s)\n", method.Name, method.Name)
}
}
for _, g := range groupslice {
g := g
fmt.Printf("## %s\n", g.GroupName)
fmt.Printf("%s\n\n", g.Header)
sort.Slice(g.Methods, func(i, j int) bool {
return g.Methods[i].Name < g.Methods[j].Name
})
for _, m := range g.Methods {
fmt.Printf("### %s\n", m.Name)
fmt.Printf("%s\n\n", m.Comment)
meth, ok := permStruct.FieldByName(m.Name)
if !ok {
meth, ok = commonPermStruct.FieldByName(m.Name)
if !ok {
panic("no perms for method: " + m.Name)
}
}
perms := meth.Tag.Get("perm")
fmt.Printf("Perms: %s\n\n", perms)
if strings.Count(m.InputExample, "\n") > 0 {
fmt.Printf("Inputs:\n```json\n%s\n```\n\n", m.InputExample)
} else {
fmt.Printf("Inputs: `%s`\n\n", m.InputExample)
}
if strings.Count(m.ResponseExample, "\n") > 0 {
fmt.Printf("Response:\n```json\n%s\n```\n\n", m.ResponseExample)
} else {
fmt.Printf("Response: `%s`\n\n", m.ResponseExample)
}
}
}
}
+79
View File
@@ -0,0 +1,79 @@
package api
import (
"encoding/json"
)
// MinerSubsystem represents a miner subsystem. Int and string values are not
// guaranteed to be stable over time is not
// guaranteed to be stable over time.
type MinerSubsystem int
const (
// SubsystemUnknown is a placeholder for the zero value. It should never
// be used.
SubsystemUnknown MinerSubsystem = iota
// SubsystemMarkets signifies the storage and retrieval
// deal-making subsystem.
SubsystemMarkets
// SubsystemMining signifies the mining subsystem.
SubsystemMining
// SubsystemSealing signifies the sealing subsystem.
SubsystemSealing
// SubsystemSectorStorage signifies the sector storage subsystem.
SubsystemSectorStorage
)
var MinerSubsystemToString = map[MinerSubsystem]string{
SubsystemUnknown: "Unknown",
SubsystemMarkets: "Markets",
SubsystemMining: "Mining",
SubsystemSealing: "Sealing",
SubsystemSectorStorage: "SectorStorage",
}
var MinerSubsystemToID = map[string]MinerSubsystem{
"Unknown": SubsystemUnknown,
"Markets": SubsystemMarkets,
"Mining": SubsystemMining,
"Sealing": SubsystemSealing,
"SectorStorage": SubsystemSectorStorage,
}
func (ms MinerSubsystem) MarshalJSON() ([]byte, error) {
return json.Marshal(MinerSubsystemToString[ms])
}
func (ms *MinerSubsystem) UnmarshalJSON(b []byte) error {
var j string
err := json.Unmarshal(b, &j)
if err != nil {
return err
}
s, ok := MinerSubsystemToID[j]
if !ok {
*ms = SubsystemUnknown
} else {
*ms = s
}
return nil
}
type MinerSubsystems []MinerSubsystem
func (ms MinerSubsystems) Has(entry MinerSubsystem) bool {
for _, v := range ms {
if v == entry {
return true
}
}
return false
}
func (ms MinerSubsystem) String() string {
s, ok := MinerSubsystemToString[ms]
if !ok {
return MinerSubsystemToString[SubsystemUnknown]
}
return s
}
+842 -514
View File
File diff suppressed because it is too large Load Diff
+48
View File
@@ -0,0 +1,48 @@
package api
import (
"github.com/filecoin-project/go-jsonrpc/auth"
)
const (
// When changing these, update docs/API.md too
PermRead auth.Permission = "read" // default
PermWrite auth.Permission = "write"
PermSign auth.Permission = "sign" // Use wallet keys for signing
PermAdmin auth.Permission = "admin" // Manage permissions
)
var AllPermissions = []auth.Permission{PermRead, PermWrite, PermSign, PermAdmin}
var DefaultPerms = []auth.Permission{PermRead}
func permissionedProxies(in, out interface{}) {
outs := GetInternalStructs(out)
for _, o := range outs {
auth.PermissionedProxy(AllPermissions, DefaultPerms, in, o)
}
}
func PermissionedStorMinerAPI(a StorageMiner) StorageMiner {
var out StorageMinerStruct
permissionedProxies(a, &out)
return &out
}
func PermissionedFullAPI(a FullNode) FullNode {
var out FullNodeStruct
permissionedProxies(a, &out)
return &out
}
func PermissionedWorkerAPI(a Worker) Worker {
var out WorkerStruct
permissionedProxies(a, &out)
return &out
}
func PermissionedWalletAPI(a Wallet) Wallet {
var out WalletStruct
permissionedProxies(a, &out)
return &out
}
+5477
View File
File diff suppressed because it is too large Load Diff
+30
View File
@@ -0,0 +1,30 @@
package api
import "reflect"
var _internalField = "Internal"
// GetInternalStructs extracts all pointers to 'Internal' sub-structs from the provided pointer to a proxy struct
func GetInternalStructs(in interface{}) []interface{} {
return getInternalStructs(reflect.ValueOf(in).Elem())
}
func getInternalStructs(rv reflect.Value) []interface{} {
var out []interface{}
internal := rv.FieldByName(_internalField)
ii := internal.Addr().Interface()
out = append(out, ii)
for i := 0; i < rv.NumField(); i++ {
if rv.Type().Field(i).Name == _internalField {
continue
}
sub := getInternalStructs(rv.Field(i))
out = append(out, sub...)
}
return out
}
+65
View File
@@ -0,0 +1,65 @@
//stm: #unit
package api
import (
"testing"
"github.com/stretchr/testify/require"
)
type StrA struct {
StrB
Internal struct {
A int
}
}
type StrB struct {
Internal struct {
B int
}
}
type StrC struct {
Internal struct {
Internal struct {
C int
}
}
}
func TestGetInternalStructs(t *testing.T) {
//stm: @OTHER_IMPLEMENTATION_API_STRUCTS_001
var proxy StrA
sts := GetInternalStructs(&proxy)
require.Len(t, sts, 2)
sa := sts[0].(*struct{ A int })
sa.A = 3
sb := sts[1].(*struct{ B int })
sb.B = 4
require.Equal(t, 3, proxy.Internal.A)
require.Equal(t, 4, proxy.StrB.Internal.B)
}
func TestNestedInternalStructs(t *testing.T) {
//stm: @OTHER_IMPLEMENTATION_API_STRUCTS_001
var proxy StrC
// check that only the top-level internal struct gets picked up
sts := GetInternalStructs(&proxy)
require.Len(t, sts, 1)
sa := sts[0].(*struct {
Internal struct {
C int
}
})
sa.Internal.C = 5
require.Equal(t, 5, proxy.Internal.Internal.C)
}
-61
View File
@@ -1,61 +0,0 @@
package test
import (
"context"
"fmt"
"sync/atomic"
"testing"
"time"
"github.com/filecoin-project/go-state-types/abi"
"github.com/filecoin-project/lotus/miner"
)
type BlockMiner struct {
ctx context.Context
t *testing.T
miner TestStorageNode
blocktime time.Duration
mine int64
nulls int64
done chan struct{}
}
func NewBlockMiner(ctx context.Context, t *testing.T, miner TestStorageNode, blocktime time.Duration) *BlockMiner {
return &BlockMiner{
ctx: ctx,
t: t,
miner: miner,
blocktime: blocktime,
mine: int64(1),
done: make(chan struct{}),
}
}
func (bm *BlockMiner) MineBlocks() {
time.Sleep(time.Second)
go func() {
defer close(bm.done)
for atomic.LoadInt64(&bm.mine) == 1 {
select {
case <-bm.ctx.Done():
return
case <-time.After(bm.blocktime):
}
nulls := atomic.SwapInt64(&bm.nulls, 0)
if err := bm.miner.MineOne(bm.ctx, miner.MineReq{
InjectNulls: abi.ChainEpoch(nulls),
Done: func(bool, abi.ChainEpoch, error) {},
}); err != nil {
bm.t.Error(err)
}
}
}()
}
func (bm *BlockMiner) Stop() {
atomic.AddInt64(&bm.mine, -1)
fmt.Println("shutting down mining")
<-bm.done
}
-127
View File
@@ -1,127 +0,0 @@
package test
import (
"context"
"fmt"
"sync/atomic"
"testing"
"time"
"github.com/stretchr/testify/require"
"github.com/filecoin-project/go-state-types/abi"
"github.com/filecoin-project/lotus/chain/types"
"github.com/filecoin-project/lotus/node/impl"
)
func TestCCUpgrade(t *testing.T, b APIBuilder, blocktime time.Duration) {
for _, height := range []abi.ChainEpoch{
-1, // before
162, // while sealing
530, // after upgrade deal
5000, // after
} {
height := height // make linters happy by copying
t.Run(fmt.Sprintf("upgrade-%d", height), func(t *testing.T) {
testCCUpgrade(t, b, blocktime, height)
})
}
}
func testCCUpgrade(t *testing.T, b APIBuilder, blocktime time.Duration, upgradeHeight abi.ChainEpoch) {
ctx := context.Background()
n, sn := b(t, []FullNodeOpts{FullNodeWithActorsV4At(upgradeHeight)}, OneMiner)
client := n[0].FullNode.(*impl.FullNodeAPI)
miner := sn[0]
addrinfo, err := client.NetAddrsListen(ctx)
if err != nil {
t.Fatal(err)
}
if err := miner.NetConnect(ctx, addrinfo); err != nil {
t.Fatal(err)
}
time.Sleep(time.Second)
mine := int64(1)
done := make(chan struct{})
go func() {
defer close(done)
for atomic.LoadInt64(&mine) == 1 {
time.Sleep(blocktime)
if err := sn[0].MineOne(ctx, MineNext); err != nil {
t.Error(err)
}
}
}()
maddr, err := miner.ActorAddress(ctx)
if err != nil {
t.Fatal(err)
}
CC := abi.SectorNumber(GenesisPreseals + 1)
Upgraded := CC + 1
pledgeSectors(t, ctx, miner, 1, 0, nil)
sl, err := miner.SectorsList(ctx)
if err != nil {
t.Fatal(err)
}
if len(sl) != 1 {
t.Fatal("expected 1 sector")
}
if sl[0] != CC {
t.Fatal("bad")
}
{
si, err := client.StateSectorGetInfo(ctx, maddr, CC, types.EmptyTSK)
require.NoError(t, err)
require.Less(t, 50000, int(si.Expiration))
}
if err := miner.SectorMarkForUpgrade(ctx, sl[0]); err != nil {
t.Fatal(err)
}
MakeDeal(t, ctx, 6, client, miner, false, false, 0)
// Validate upgrade
{
exp, err := client.StateSectorExpiration(ctx, maddr, CC, types.EmptyTSK)
require.NoError(t, err)
require.NotNil(t, exp)
require.Greater(t, 50000, int(exp.OnTime))
}
{
exp, err := client.StateSectorExpiration(ctx, maddr, Upgraded, types.EmptyTSK)
require.NoError(t, err)
require.Less(t, 50000, int(exp.OnTime))
}
dlInfo, err := client.StateMinerProvingDeadline(ctx, maddr, types.EmptyTSK)
require.NoError(t, err)
// Sector should expire.
for {
// Wait for the sector to expire.
status, err := miner.SectorsStatus(ctx, CC, true)
require.NoError(t, err)
if status.OnTime == 0 && status.Early == 0 {
break
}
t.Log("waiting for sector to expire")
// wait one deadline per loop.
time.Sleep(time.Duration(dlInfo.WPoStChallengeWindow) * blocktime)
}
fmt.Println("shutting down mining")
atomic.AddInt64(&mine, -1)
<-done
}
-487
View File
@@ -1,487 +0,0 @@
package test
import (
"bytes"
"context"
"fmt"
"io/ioutil"
"math/rand"
"os"
"path/filepath"
"testing"
"time"
"github.com/ipfs/go-cid"
files "github.com/ipfs/go-ipfs-files"
"github.com/ipld/go-car"
"github.com/stretchr/testify/require"
"github.com/filecoin-project/go-fil-markets/storagemarket"
"github.com/filecoin-project/go-state-types/abi"
"github.com/filecoin-project/lotus/api"
"github.com/filecoin-project/lotus/build"
"github.com/filecoin-project/lotus/chain/actors/builtin/market"
"github.com/filecoin-project/lotus/chain/types"
sealing "github.com/filecoin-project/lotus/extern/storage-sealing"
"github.com/filecoin-project/lotus/markets/storageadapter"
"github.com/filecoin-project/lotus/node"
"github.com/filecoin-project/lotus/node/impl"
market2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/market"
ipld "github.com/ipfs/go-ipld-format"
dag "github.com/ipfs/go-merkledag"
dstest "github.com/ipfs/go-merkledag/test"
unixfile "github.com/ipfs/go-unixfs/file"
)
func TestDealFlow(t *testing.T, b APIBuilder, blocktime time.Duration, carExport, fastRet bool, startEpoch abi.ChainEpoch) {
s := setupOneClientOneMiner(t, b, blocktime)
defer s.blockMiner.Stop()
MakeDeal(t, s.ctx, 6, s.client, s.miner, carExport, fastRet, startEpoch)
}
func TestDoubleDealFlow(t *testing.T, b APIBuilder, blocktime time.Duration, startEpoch abi.ChainEpoch) {
s := setupOneClientOneMiner(t, b, blocktime)
defer s.blockMiner.Stop()
MakeDeal(t, s.ctx, 6, s.client, s.miner, false, false, startEpoch)
MakeDeal(t, s.ctx, 7, s.client, s.miner, false, false, startEpoch)
}
func MakeDeal(t *testing.T, ctx context.Context, rseed int, client api.FullNode, miner TestStorageNode, carExport, fastRet bool, startEpoch abi.ChainEpoch) {
res, data, err := CreateClientFile(ctx, client, rseed)
if err != nil {
t.Fatal(err)
}
fcid := res.Root
fmt.Println("FILE CID: ", fcid)
deal := startDeal(t, ctx, miner, client, fcid, fastRet, startEpoch)
// TODO: this sleep is only necessary because deals don't immediately get logged in the dealstore, we should fix this
time.Sleep(time.Second)
waitDealSealed(t, ctx, miner, client, deal, false)
// Retrieval
info, err := client.ClientGetDealInfo(ctx, *deal)
require.NoError(t, err)
testRetrieval(t, ctx, client, fcid, &info.PieceCID, carExport, data)
}
func CreateClientFile(ctx context.Context, client api.FullNode, rseed int) (*api.ImportRes, []byte, error) {
data := make([]byte, 1600)
rand.New(rand.NewSource(int64(rseed))).Read(data)
dir, err := ioutil.TempDir(os.TempDir(), "test-make-deal-")
if err != nil {
return nil, nil, err
}
path := filepath.Join(dir, "sourcefile.dat")
err = ioutil.WriteFile(path, data, 0644)
if err != nil {
return nil, nil, err
}
res, err := client.ClientImport(ctx, api.FileRef{Path: path})
if err != nil {
return nil, nil, err
}
return res, data, nil
}
func TestPublishDealsBatching(t *testing.T, b APIBuilder, blocktime time.Duration, startEpoch abi.ChainEpoch) {
publishPeriod := 10 * time.Second
maxDealsPerMsg := uint64(2)
// Set max deals per publish deals message to 2
minerDef := []StorageMiner{{
Full: 0,
Opts: node.Override(
new(*storageadapter.DealPublisher),
storageadapter.NewDealPublisher(nil, storageadapter.PublishMsgConfig{
Period: publishPeriod,
MaxDealsPerMsg: maxDealsPerMsg,
})),
Preseal: PresealGenesis,
}}
// Create a connect client and miner node
n, sn := b(t, OneFull, minerDef)
client := n[0].FullNode.(*impl.FullNodeAPI)
miner := sn[0]
s := connectAndStartMining(t, b, blocktime, client, miner)
defer s.blockMiner.Stop()
// Starts a deal and waits until it's published
runDealTillPublish := func(rseed int) {
res, _, err := CreateClientFile(s.ctx, s.client, rseed)
require.NoError(t, err)
upds, err := client.ClientGetDealUpdates(s.ctx)
require.NoError(t, err)
startDeal(t, s.ctx, s.miner, s.client, res.Root, false, startEpoch)
// TODO: this sleep is only necessary because deals don't immediately get logged in the dealstore, we should fix this
time.Sleep(time.Second)
done := make(chan struct{})
go func() {
for upd := range upds {
if upd.DataRef.Root == res.Root && upd.State == storagemarket.StorageDealAwaitingPreCommit {
done <- struct{}{}
}
}
}()
<-done
}
// Run three deals in parallel
done := make(chan struct{}, maxDealsPerMsg+1)
for rseed := 1; rseed <= 3; rseed++ {
rseed := rseed
go func() {
runDealTillPublish(rseed)
done <- struct{}{}
}()
}
// Wait for two of the deals to be published
for i := 0; i < int(maxDealsPerMsg); i++ {
<-done
}
// Expect a single PublishStorageDeals message that includes the first two deals
msgCids, err := s.client.StateListMessages(s.ctx, &api.MessageMatch{To: market.Address}, types.EmptyTSK, 1)
require.NoError(t, err)
count := 0
for _, msgCid := range msgCids {
msg, err := s.client.ChainGetMessage(s.ctx, msgCid)
require.NoError(t, err)
if msg.Method == market.Methods.PublishStorageDeals {
count++
var pubDealsParams market2.PublishStorageDealsParams
err = pubDealsParams.UnmarshalCBOR(bytes.NewReader(msg.Params))
require.NoError(t, err)
require.Len(t, pubDealsParams.Deals, int(maxDealsPerMsg))
}
}
require.Equal(t, 1, count)
// The third deal should be published once the publish period expires.
// Allow a little padding as it takes a moment for the state change to
// be noticed by the client.
padding := 10 * time.Second
select {
case <-time.After(publishPeriod + padding):
require.Fail(t, "Expected 3rd deal to be published once publish period elapsed")
case <-done: // Success
}
}
func TestFastRetrievalDealFlow(t *testing.T, b APIBuilder, blocktime time.Duration, startEpoch abi.ChainEpoch) {
s := setupOneClientOneMiner(t, b, blocktime)
defer s.blockMiner.Stop()
data := make([]byte, 1600)
rand.New(rand.NewSource(int64(8))).Read(data)
r := bytes.NewReader(data)
fcid, err := s.client.ClientImportLocal(s.ctx, r)
if err != nil {
t.Fatal(err)
}
fmt.Println("FILE CID: ", fcid)
deal := startDeal(t, s.ctx, s.miner, s.client, fcid, true, startEpoch)
waitDealPublished(t, s.ctx, s.miner, deal)
fmt.Println("deal published, retrieving")
// Retrieval
info, err := s.client.ClientGetDealInfo(s.ctx, *deal)
require.NoError(t, err)
testRetrieval(t, s.ctx, s.client, fcid, &info.PieceCID, false, data)
}
func TestSecondDealRetrieval(t *testing.T, b APIBuilder, blocktime time.Duration) {
s := setupOneClientOneMiner(t, b, blocktime)
defer s.blockMiner.Stop()
{
data1 := make([]byte, 800)
rand.New(rand.NewSource(int64(3))).Read(data1)
r := bytes.NewReader(data1)
fcid1, err := s.client.ClientImportLocal(s.ctx, r)
if err != nil {
t.Fatal(err)
}
data2 := make([]byte, 800)
rand.New(rand.NewSource(int64(9))).Read(data2)
r2 := bytes.NewReader(data2)
fcid2, err := s.client.ClientImportLocal(s.ctx, r2)
if err != nil {
t.Fatal(err)
}
deal1 := startDeal(t, s.ctx, s.miner, s.client, fcid1, true, 0)
// TODO: this sleep is only necessary because deals don't immediately get logged in the dealstore, we should fix this
time.Sleep(time.Second)
waitDealSealed(t, s.ctx, s.miner, s.client, deal1, true)
deal2 := startDeal(t, s.ctx, s.miner, s.client, fcid2, true, 0)
time.Sleep(time.Second)
waitDealSealed(t, s.ctx, s.miner, s.client, deal2, false)
// Retrieval
info, err := s.client.ClientGetDealInfo(s.ctx, *deal2)
require.NoError(t, err)
rf, _ := s.miner.SectorsRefs(s.ctx)
fmt.Printf("refs: %+v\n", rf)
testRetrieval(t, s.ctx, s.client, fcid2, &info.PieceCID, false, data2)
}
}
func TestZeroPricePerByteRetrievalDealFlow(t *testing.T, b APIBuilder, blocktime time.Duration, startEpoch abi.ChainEpoch) {
s := setupOneClientOneMiner(t, b, blocktime)
defer s.blockMiner.Stop()
// Set price-per-byte to zero
ask, err := s.miner.MarketGetRetrievalAsk(s.ctx)
require.NoError(t, err)
ask.PricePerByte = abi.NewTokenAmount(0)
err = s.miner.MarketSetRetrievalAsk(s.ctx, ask)
require.NoError(t, err)
MakeDeal(t, s.ctx, 6, s.client, s.miner, false, false, startEpoch)
}
func startDeal(t *testing.T, ctx context.Context, miner TestStorageNode, client api.FullNode, fcid cid.Cid, fastRet bool, startEpoch abi.ChainEpoch) *cid.Cid {
maddr, err := miner.ActorAddress(ctx)
if err != nil {
t.Fatal(err)
}
addr, err := client.WalletDefaultAddress(ctx)
if err != nil {
t.Fatal(err)
}
deal, err := client.ClientStartDeal(ctx, &api.StartDealParams{
Data: &storagemarket.DataRef{
TransferType: storagemarket.TTGraphsync,
Root: fcid,
},
Wallet: addr,
Miner: maddr,
EpochPrice: types.NewInt(1000000),
DealStartEpoch: startEpoch,
MinBlocksDuration: uint64(build.MinDealDuration),
FastRetrieval: fastRet,
})
if err != nil {
t.Fatalf("%+v", err)
}
return deal
}
func waitDealSealed(t *testing.T, ctx context.Context, miner TestStorageNode, client api.FullNode, deal *cid.Cid, noseal bool) {
loop:
for {
di, err := client.ClientGetDealInfo(ctx, *deal)
if err != nil {
t.Fatal(err)
}
switch di.State {
case storagemarket.StorageDealAwaitingPreCommit, storagemarket.StorageDealSealing:
if noseal {
return
}
startSealingWaiting(t, ctx, miner)
case storagemarket.StorageDealProposalRejected:
t.Fatal("deal rejected")
case storagemarket.StorageDealFailing:
t.Fatal("deal failed")
case storagemarket.StorageDealError:
t.Fatal("deal errored", di.Message)
case storagemarket.StorageDealActive:
fmt.Println("COMPLETE", di)
break loop
}
fmt.Println("Deal state: ", storagemarket.DealStates[di.State])
time.Sleep(time.Second / 2)
}
}
func waitDealPublished(t *testing.T, ctx context.Context, miner TestStorageNode, deal *cid.Cid) {
subCtx, cancel := context.WithCancel(ctx)
defer cancel()
updates, err := miner.MarketGetDealUpdates(subCtx)
if err != nil {
t.Fatal(err)
}
for {
select {
case <-ctx.Done():
t.Fatal("context timeout")
case di := <-updates:
if deal.Equals(di.ProposalCid) {
switch di.State {
case storagemarket.StorageDealProposalRejected:
t.Fatal("deal rejected")
case storagemarket.StorageDealFailing:
t.Fatal("deal failed")
case storagemarket.StorageDealError:
t.Fatal("deal errored", di.Message)
case storagemarket.StorageDealFinalizing, storagemarket.StorageDealAwaitingPreCommit, storagemarket.StorageDealSealing, storagemarket.StorageDealActive:
fmt.Println("COMPLETE", di)
return
}
fmt.Println("Deal state: ", storagemarket.DealStates[di.State])
}
}
}
}
func startSealingWaiting(t *testing.T, ctx context.Context, miner TestStorageNode) {
snums, err := miner.SectorsList(ctx)
require.NoError(t, err)
for _, snum := range snums {
si, err := miner.SectorsStatus(ctx, snum, false)
require.NoError(t, err)
t.Logf("Sector state: %s", si.State)
if si.State == api.SectorState(sealing.WaitDeals) {
require.NoError(t, miner.SectorStartSealing(ctx, snum))
}
}
}
func testRetrieval(t *testing.T, ctx context.Context, client api.FullNode, fcid cid.Cid, piece *cid.Cid, carExport bool, data []byte) {
offers, err := client.ClientFindData(ctx, fcid, piece)
if err != nil {
t.Fatal(err)
}
if len(offers) < 1 {
t.Fatal("no offers")
}
rpath, err := ioutil.TempDir("", "lotus-retrieve-test-")
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(rpath) //nolint:errcheck
caddr, err := client.WalletDefaultAddress(ctx)
if err != nil {
t.Fatal(err)
}
ref := &api.FileRef{
Path: filepath.Join(rpath, "ret"),
IsCAR: carExport,
}
updates, err := client.ClientRetrieveWithEvents(ctx, offers[0].Order(caddr), ref)
if err != nil {
t.Fatal(err)
}
for update := range updates {
if update.Err != "" {
t.Fatalf("retrieval failed: %s", update.Err)
}
}
rdata, err := ioutil.ReadFile(filepath.Join(rpath, "ret"))
if err != nil {
t.Fatal(err)
}
if carExport {
rdata = extractCarData(t, ctx, rdata, rpath)
}
if !bytes.Equal(rdata, data) {
t.Fatal("wrong data retrieved")
}
}
func extractCarData(t *testing.T, ctx context.Context, rdata []byte, rpath string) []byte {
bserv := dstest.Bserv()
ch, err := car.LoadCar(bserv.Blockstore(), bytes.NewReader(rdata))
if err != nil {
t.Fatal(err)
}
b, err := bserv.GetBlock(ctx, ch.Roots[0])
if err != nil {
t.Fatal(err)
}
nd, err := ipld.Decode(b)
if err != nil {
t.Fatal(err)
}
dserv := dag.NewDAGService(bserv)
fil, err := unixfile.NewUnixfsFile(ctx, dserv, nd)
if err != nil {
t.Fatal(err)
}
outPath := filepath.Join(rpath, "retLoadedCAR")
if err := files.WriteTo(fil, outPath); err != nil {
t.Fatal(err)
}
rdata, err = ioutil.ReadFile(outPath)
if err != nil {
t.Fatal(err)
}
return rdata
}
type dealsScaffold struct {
ctx context.Context
client *impl.FullNodeAPI
miner TestStorageNode
blockMiner *BlockMiner
}
func setupOneClientOneMiner(t *testing.T, b APIBuilder, blocktime time.Duration) *dealsScaffold {
n, sn := b(t, OneFull, OneMiner)
client := n[0].FullNode.(*impl.FullNodeAPI)
miner := sn[0]
return connectAndStartMining(t, b, blocktime, client, miner)
}
func connectAndStartMining(t *testing.T, b APIBuilder, blocktime time.Duration, client *impl.FullNodeAPI, miner TestStorageNode) *dealsScaffold {
ctx := context.Background()
addrinfo, err := client.NetAddrsListen(ctx)
if err != nil {
t.Fatal(err)
}
if err := miner.NetConnect(ctx, addrinfo); err != nil {
t.Fatal(err)
}
time.Sleep(time.Second)
blockMiner := NewBlockMiner(ctx, t, miner, blocktime)
blockMiner.MineBlocks()
return &dealsScaffold{
ctx: ctx,
client: client,
miner: miner,
blockMiner: blockMiner,
}
}
-240
View File
@@ -1,240 +0,0 @@
package test
import (
"bytes"
"context"
"fmt"
"math/rand"
"sync/atomic"
"testing"
"time"
logging "github.com/ipfs/go-log/v2"
"github.com/stretchr/testify/require"
"github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi"
"github.com/filecoin-project/lotus/build"
"github.com/filecoin-project/lotus/chain/types"
"github.com/filecoin-project/lotus/miner"
"github.com/filecoin-project/lotus/node/impl"
)
//nolint:deadcode,varcheck
var log = logging.Logger("apitest")
func (ts *testSuite) testMining(t *testing.T) {
ctx := context.Background()
apis, sn := ts.makeNodes(t, OneFull, OneMiner)
api := apis[0]
newHeads, err := api.ChainNotify(ctx)
require.NoError(t, err)
initHead := (<-newHeads)[0]
baseHeight := initHead.Val.Height()
h1, err := api.ChainHead(ctx)
require.NoError(t, err)
require.Equal(t, int64(h1.Height()), int64(baseHeight))
MineUntilBlock(ctx, t, apis[0], sn[0], nil)
require.NoError(t, err)
<-newHeads
h2, err := api.ChainHead(ctx)
require.NoError(t, err)
require.Greater(t, int64(h2.Height()), int64(h1.Height()))
}
func (ts *testSuite) testMiningReal(t *testing.T) {
build.InsecurePoStValidation = false
defer func() {
build.InsecurePoStValidation = true
}()
ctx := context.Background()
apis, sn := ts.makeNodes(t, OneFull, OneMiner)
api := apis[0]
newHeads, err := api.ChainNotify(ctx)
require.NoError(t, err)
at := (<-newHeads)[0].Val.Height()
h1, err := api.ChainHead(ctx)
require.NoError(t, err)
require.Equal(t, int64(at), int64(h1.Height()))
MineUntilBlock(ctx, t, apis[0], sn[0], nil)
require.NoError(t, err)
<-newHeads
h2, err := api.ChainHead(ctx)
require.NoError(t, err)
require.Greater(t, int64(h2.Height()), int64(h1.Height()))
MineUntilBlock(ctx, t, apis[0], sn[0], nil)
require.NoError(t, err)
<-newHeads
h3, err := api.ChainHead(ctx)
require.NoError(t, err)
require.Greater(t, int64(h3.Height()), int64(h2.Height()))
}
func TestDealMining(t *testing.T, b APIBuilder, blocktime time.Duration, carExport bool) {
// test making a deal with a fresh miner, and see if it starts to mine
ctx := context.Background()
n, sn := b(t, OneFull, []StorageMiner{
{Full: 0, Preseal: PresealGenesis},
{Full: 0, Preseal: 0}, // TODO: Add support for miners on non-first full node
})
client := n[0].FullNode.(*impl.FullNodeAPI)
provider := sn[1]
genesisMiner := sn[0]
addrinfo, err := client.NetAddrsListen(ctx)
if err != nil {
t.Fatal(err)
}
if err := provider.NetConnect(ctx, addrinfo); err != nil {
t.Fatal(err)
}
if err := genesisMiner.NetConnect(ctx, addrinfo); err != nil {
t.Fatal(err)
}
time.Sleep(time.Second)
data := make([]byte, 600)
rand.New(rand.NewSource(5)).Read(data)
r := bytes.NewReader(data)
fcid, err := client.ClientImportLocal(ctx, r)
if err != nil {
t.Fatal(err)
}
fmt.Println("FILE CID: ", fcid)
var mine int32 = 1
done := make(chan struct{})
minedTwo := make(chan struct{})
m2addr, err := sn[1].ActorAddress(context.TODO())
if err != nil {
t.Fatal(err)
}
go func() {
defer close(done)
complChan := minedTwo
for atomic.LoadInt32(&mine) != 0 {
wait := make(chan int)
mdone := func(mined bool, _ abi.ChainEpoch, err error) {
n := 0
if mined {
n = 1
}
wait <- n
}
if err := sn[0].MineOne(ctx, miner.MineReq{Done: mdone}); err != nil {
t.Error(err)
}
if err := sn[1].MineOne(ctx, miner.MineReq{Done: mdone}); err != nil {
t.Error(err)
}
expect := <-wait
expect += <-wait
time.Sleep(blocktime)
if expect == 0 {
// null block
continue
}
var nodeOneMined bool
for _, node := range sn {
mb, err := node.MiningBase(ctx)
if err != nil {
t.Error(err)
return
}
for _, b := range mb.Blocks() {
if b.Miner == m2addr {
nodeOneMined = true
break
}
}
}
if nodeOneMined && complChan != nil {
close(complChan)
complChan = nil
}
}
}()
deal := startDeal(t, ctx, provider, client, fcid, false, 0)
// TODO: this sleep is only necessary because deals don't immediately get logged in the dealstore, we should fix this
time.Sleep(time.Second)
waitDealSealed(t, ctx, provider, client, deal, false)
<-minedTwo
atomic.StoreInt32(&mine, 0)
fmt.Println("shutting down mining")
<-done
}
func (ts *testSuite) testNonGenesisMiner(t *testing.T) {
ctx := context.Background()
n, sn := ts.makeNodes(t, []FullNodeOpts{
FullNodeWithActorsV4At(-1),
}, []StorageMiner{
{Full: 0, Preseal: PresealGenesis},
})
full, ok := n[0].FullNode.(*impl.FullNodeAPI)
if !ok {
t.Skip("not testing with a full node")
return
}
genesisMiner := sn[0]
bm := NewBlockMiner(ctx, t, genesisMiner, 4*time.Millisecond)
bm.MineBlocks()
t.Cleanup(bm.Stop)
gaa, err := genesisMiner.ActorAddress(ctx)
require.NoError(t, err)
gmi, err := full.StateMinerInfo(ctx, gaa, types.EmptyTSK)
require.NoError(t, err)
testm := n[0].Stb(ctx, t, TestSpt, gmi.Owner)
ta, err := testm.ActorAddress(ctx)
require.NoError(t, err)
tid, err := address.IDFromAddress(ta)
require.NoError(t, err)
require.Equal(t, uint64(1001), tid)
}
-101
View File
@@ -1,101 +0,0 @@
package test
import (
"context"
"fmt"
"testing"
"time"
"github.com/filecoin-project/go-state-types/network"
"github.com/filecoin-project/lotus/api"
"github.com/filecoin-project/lotus/build"
"github.com/filecoin-project/lotus/chain/stmgr"
sealing "github.com/filecoin-project/lotus/extern/storage-sealing"
"github.com/filecoin-project/lotus/node"
"github.com/filecoin-project/lotus/node/impl"
"github.com/stretchr/testify/require"
)
func TestTapeFix(t *testing.T, b APIBuilder, blocktime time.Duration) {
// The "before" case is disabled, because we need the builder to mock 32 GiB sectors to accurately repro this case
// TODO: Make the mock sector size configurable and reenable this
//t.Run("before", func(t *testing.T) { testTapeFix(t, b, blocktime, false) })
t.Run("after", func(t *testing.T) { testTapeFix(t, b, blocktime, true) })
}
func testTapeFix(t *testing.T, b APIBuilder, blocktime time.Duration, after bool) {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
upgradeSchedule := stmgr.UpgradeSchedule{{
Network: build.ActorUpgradeNetworkVersion,
Height: 1,
Migration: stmgr.UpgradeActorsV2,
}}
if after {
upgradeSchedule = append(upgradeSchedule, stmgr.Upgrade{
Network: network.Version5,
Height: 2,
})
}
n, sn := b(t, []FullNodeOpts{{Opts: func(_ []TestNode) node.Option {
return node.Override(new(stmgr.UpgradeSchedule), upgradeSchedule)
}}}, OneMiner)
client := n[0].FullNode.(*impl.FullNodeAPI)
miner := sn[0]
addrinfo, err := client.NetAddrsListen(ctx)
if err != nil {
t.Fatal(err)
}
if err := miner.NetConnect(ctx, addrinfo); err != nil {
t.Fatal(err)
}
build.Clock.Sleep(time.Second)
done := make(chan struct{})
go func() {
defer close(done)
for ctx.Err() == nil {
build.Clock.Sleep(blocktime)
if err := sn[0].MineOne(ctx, MineNext); err != nil {
if ctx.Err() != nil {
// context was canceled, ignore the error.
return
}
t.Error(err)
}
}
}()
defer func() {
cancel()
<-done
}()
sid, err := miner.PledgeSector(ctx)
require.NoError(t, err)
fmt.Printf("All sectors is fsm\n")
// If before, we expect the precommit to fail
successState := api.SectorState(sealing.CommitFailed)
failureState := api.SectorState(sealing.Proving)
if after {
// otherwise, it should succeed.
successState, failureState = failureState, successState
}
for {
st, err := miner.SectorsStatus(ctx, sid.Number, false)
require.NoError(t, err)
if st.State == successState {
break
}
require.NotEqual(t, failureState, st.State)
build.Clock.Sleep(100 * time.Millisecond)
fmt.Println("WaitSeal")
}
}
-292
View File
@@ -1,292 +0,0 @@
package test
import (
"context"
"fmt"
"os"
"strings"
"testing"
"time"
logging "github.com/ipfs/go-log/v2"
"github.com/multiformats/go-multiaddr"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi"
"github.com/filecoin-project/go-state-types/big"
"github.com/filecoin-project/go-state-types/network"
"github.com/filecoin-project/lotus/api"
"github.com/filecoin-project/lotus/build"
"github.com/filecoin-project/lotus/chain/stmgr"
"github.com/filecoin-project/lotus/chain/types"
"github.com/filecoin-project/lotus/miner"
"github.com/filecoin-project/lotus/node"
)
func init() {
logging.SetAllLoggers(logging.LevelInfo)
err := os.Setenv("BELLMAN_NO_GPU", "1")
if err != nil {
panic(fmt.Sprintf("failed to set BELLMAN_NO_GPU env variable: %s", err))
}
build.InsecurePoStValidation = true
}
type StorageBuilder func(context.Context, *testing.T, abi.RegisteredSealProof, address.Address) TestStorageNode
type TestNode struct {
api.FullNode
// ListenAddr is the address on which an API server is listening, if an
// API server is created for this Node
ListenAddr multiaddr.Multiaddr
Stb StorageBuilder
}
type TestStorageNode struct {
api.StorageMiner
// ListenAddr is the address on which an API server is listening, if an
// API server is created for this Node
ListenAddr multiaddr.Multiaddr
MineOne func(context.Context, miner.MineReq) error
Stop func(context.Context) error
}
var PresealGenesis = -1
const GenesisPreseals = 2
const TestSpt = abi.RegisteredSealProof_StackedDrg2KiBV1_1
// Options for setting up a mock storage miner
type StorageMiner struct {
Full int
Opts node.Option
Preseal int
}
type OptionGenerator func([]TestNode) node.Option
// Options for setting up a mock full node
type FullNodeOpts struct {
Lite bool // run node in "lite" mode
Opts OptionGenerator // generate dependency injection options
}
// APIBuilder is a function which is invoked in test suite to provide
// test nodes and networks
//
// fullOpts array defines options for each full node
// storage array defines storage nodes, numbers in the array specify full node
// index the storage node 'belongs' to
type APIBuilder func(t *testing.T, full []FullNodeOpts, storage []StorageMiner) ([]TestNode, []TestStorageNode)
type testSuite struct {
makeNodes APIBuilder
}
// TestApis is the entry point to API test suite
func TestApis(t *testing.T, b APIBuilder) {
ts := testSuite{
makeNodes: b,
}
t.Run("version", ts.testVersion)
t.Run("id", ts.testID)
t.Run("testConnectTwo", ts.testConnectTwo)
t.Run("testMining", ts.testMining)
t.Run("testMiningReal", ts.testMiningReal)
t.Run("testSearchMsg", ts.testSearchMsg)
t.Run("testNonGenesisMiner", ts.testNonGenesisMiner)
}
func DefaultFullOpts(nFull int) []FullNodeOpts {
full := make([]FullNodeOpts, nFull)
for i := range full {
full[i] = FullNodeOpts{
Opts: func(nodes []TestNode) node.Option {
return node.Options()
},
}
}
return full
}
var OneMiner = []StorageMiner{{Full: 0, Preseal: PresealGenesis}}
var OneFull = DefaultFullOpts(1)
var TwoFull = DefaultFullOpts(2)
var FullNodeWithActorsV4At = func(upgradeHeight abi.ChainEpoch) FullNodeOpts {
if upgradeHeight == -1 {
upgradeHeight = 3
}
return FullNodeOpts{
Opts: func(nodes []TestNode) node.Option {
return node.Override(new(stmgr.UpgradeSchedule), stmgr.UpgradeSchedule{{
// prepare for upgrade.
Network: network.Version9,
Height: 1,
Migration: stmgr.UpgradeActorsV2,
}, {
Network: network.Version10,
Height: 2,
Migration: stmgr.UpgradeActorsV3,
}, {
Network: network.Version12,
Height: upgradeHeight,
Migration: stmgr.UpgradeActorsV4,
}})
},
}
}
var FullNodeWithSDRAt = func(calico, persian abi.ChainEpoch) FullNodeOpts {
return FullNodeOpts{
Opts: func(nodes []TestNode) node.Option {
return node.Override(new(stmgr.UpgradeSchedule), stmgr.UpgradeSchedule{{
Network: network.Version6,
Height: 1,
Migration: stmgr.UpgradeActorsV2,
}, {
Network: network.Version7,
Height: calico,
Migration: stmgr.UpgradeCalico,
}, {
Network: network.Version8,
Height: persian,
}})
},
}
}
var MineNext = miner.MineReq{
InjectNulls: 0,
Done: func(bool, abi.ChainEpoch, error) {},
}
func (ts *testSuite) testVersion(t *testing.T) {
api.RunningNodeType = api.NodeFull
t.Cleanup(func() {
api.RunningNodeType = api.NodeUnknown
})
ctx := context.Background()
apis, _ := ts.makeNodes(t, OneFull, OneMiner)
napi := apis[0]
v, err := napi.Version(ctx)
if err != nil {
t.Fatal(err)
}
versions := strings.Split(v.Version, "+")
if len(versions) <= 0 {
t.Fatal("empty version")
}
require.Equal(t, versions[0], build.BuildVersion)
}
func (ts *testSuite) testSearchMsg(t *testing.T) {
apis, miners := ts.makeNodes(t, OneFull, OneMiner)
api := apis[0]
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
senderAddr, err := api.WalletDefaultAddress(ctx)
if err != nil {
t.Fatal(err)
}
msg := &types.Message{
From: senderAddr,
To: senderAddr,
Value: big.Zero(),
}
bm := NewBlockMiner(ctx, t, miners[0], 100*time.Millisecond)
bm.MineBlocks()
defer bm.Stop()
sm, err := api.MpoolPushMessage(ctx, msg, nil)
if err != nil {
t.Fatal(err)
}
res, err := api.StateWaitMsg(ctx, sm.Cid(), 1)
if err != nil {
t.Fatal(err)
}
if res.Receipt.ExitCode != 0 {
t.Fatal("did not successfully send message")
}
searchRes, err := api.StateSearchMsg(ctx, sm.Cid())
if err != nil {
t.Fatal(err)
}
if searchRes.TipSet != res.TipSet {
t.Fatalf("search ts: %s, different from wait ts: %s", searchRes.TipSet, res.TipSet)
}
}
func (ts *testSuite) testID(t *testing.T) {
ctx := context.Background()
apis, _ := ts.makeNodes(t, OneFull, OneMiner)
api := apis[0]
id, err := api.ID(ctx)
if err != nil {
t.Fatal(err)
}
assert.Regexp(t, "^12", id.Pretty())
}
func (ts *testSuite) testConnectTwo(t *testing.T) {
ctx := context.Background()
apis, _ := ts.makeNodes(t, TwoFull, OneMiner)
p, err := apis[0].NetPeers(ctx)
if err != nil {
t.Fatal(err)
}
if len(p) != 0 {
t.Error("Node 0 has a peer")
}
p, err = apis[1].NetPeers(ctx)
if err != nil {
t.Fatal(err)
}
if len(p) != 0 {
t.Error("Node 1 has a peer")
}
addrs, err := apis[1].NetAddrsListen(ctx)
if err != nil {
t.Fatal(err)
}
if err := apis[0].NetConnect(ctx, addrs); err != nil {
t.Fatal(err)
}
p, err = apis[0].NetPeers(ctx)
if err != nil {
t.Fatal(err)
}
if len(p) != 1 {
t.Error("Node 0 doesn't have 1 peer")
}
p, err = apis[1].NetPeers(ctx)
if err != nil {
t.Fatal(err)
}
if len(p) != 1 {
t.Error("Node 0 doesn't have 1 peer")
}
}
-86
View File
@@ -1,86 +0,0 @@
package test
import (
"context"
"testing"
"time"
"github.com/filecoin-project/go-state-types/abi"
"github.com/filecoin-project/go-address"
"github.com/filecoin-project/lotus/chain/types"
"github.com/filecoin-project/lotus/miner"
)
func SendFunds(ctx context.Context, t *testing.T, sender TestNode, addr address.Address, amount abi.TokenAmount) {
senderAddr, err := sender.WalletDefaultAddress(ctx)
if err != nil {
t.Fatal(err)
}
msg := &types.Message{
From: senderAddr,
To: addr,
Value: amount,
}
sm, err := sender.MpoolPushMessage(ctx, msg, nil)
if err != nil {
t.Fatal(err)
}
res, err := sender.StateWaitMsg(ctx, sm.Cid(), 1)
if err != nil {
t.Fatal(err)
}
if res.Receipt.ExitCode != 0 {
t.Fatal("did not successfully send money")
}
}
func MineUntilBlock(ctx context.Context, t *testing.T, fn TestNode, sn TestStorageNode, cb func(abi.ChainEpoch)) {
for i := 0; i < 1000; i++ {
var success bool
var err error
var epoch abi.ChainEpoch
wait := make(chan struct{})
mineErr := sn.MineOne(ctx, miner.MineReq{
Done: func(win bool, ep abi.ChainEpoch, e error) {
success = win
err = e
epoch = ep
wait <- struct{}{}
},
})
if mineErr != nil {
t.Fatal(mineErr)
}
<-wait
if err != nil {
t.Fatal(err)
}
if success {
// Wait until it shows up on the given full nodes ChainHead
nloops := 50
for i := 0; i < nloops; i++ {
ts, err := fn.ChainHead(ctx)
if err != nil {
t.Fatal(err)
}
if ts.Height() == epoch {
break
}
if i == nloops-1 {
t.Fatal("block never managed to sync to node")
}
time.Sleep(time.Millisecond * 10)
}
if cb != nil {
cb(epoch)
}
return
}
t.Log("did not mine block, trying again", i)
}
t.Fatal("failed to mine 1000 times in a row...")
}
File diff suppressed because it is too large Load Diff
+171
View File
@@ -5,9 +5,14 @@ import (
"fmt"
"time"
"github.com/libp2p/go-libp2p-core/network"
datatransfer "github.com/filecoin-project/go-data-transfer"
"github.com/filecoin-project/go-fil-markets/retrievalmarket"
"github.com/filecoin-project/go-state-types/abi"
"github.com/filecoin-project/lotus/chain/types"
"github.com/ipfs/go-cid"
"github.com/ipfs/go-graphsync"
"github.com/libp2p/go-libp2p-core/peer"
pubsub "github.com/libp2p/go-libp2p-pubsub"
@@ -51,6 +56,30 @@ type MessageSendSpec struct {
MaxFee abi.TokenAmount
}
// GraphSyncDataTransfer provides diagnostics on a data transfer happening over graphsync
type GraphSyncDataTransfer struct {
// GraphSync request id for this transfer
RequestID *graphsync.RequestID
// Graphsync state for this transfer
RequestState string
// If a channel ID is present, indicates whether this is the current graphsync request for this channel
// (could have changed in a restart)
IsCurrentChannelRequest bool
// Data transfer channel ID for this transfer
ChannelID *datatransfer.ChannelID
// Data transfer state for this transfer
ChannelState *DataTransferChannel
// Diagnostic information about this request -- and unexpected inconsistencies in
// request state
Diagnostics []string
}
// TransferDiagnostics give current information about transfers going over graphsync that may be helpful for debugging
type TransferDiagnostics struct {
ReceivingTransfers []*GraphSyncDataTransfer
SendingTransfers []*GraphSyncDataTransfer
}
type DataTransferChannel struct {
TransferID datatransfer.TransferID
Status datatransfer.Status
@@ -61,6 +90,7 @@ type DataTransferChannel struct {
Message string
OtherPeer peer.ID
Transferred uint64
Stages *datatransfer.ChannelStages
}
// NewDataTransferChannel constructs an API DataTransferChannel type from full channel state snapshot and a host id
@@ -95,6 +125,28 @@ func NewDataTransferChannel(hostID peer.ID, channelState datatransfer.ChannelSta
return channel
}
type NetStat struct {
System *network.ScopeStat `json:",omitempty"`
Transient *network.ScopeStat `json:",omitempty"`
Services map[string]network.ScopeStat `json:",omitempty"`
Protocols map[string]network.ScopeStat `json:",omitempty"`
Peers map[string]network.ScopeStat `json:",omitempty"`
}
type NetLimit struct {
Dynamic bool `json:",omitempty"`
// set if Dynamic is false
Memory int64 `json:",omitempty"`
// set if Dynamic is true
MemoryFraction float64 `json:",omitempty"`
MinMemory int64 `json:",omitempty"`
MaxMemory int64 `json:",omitempty"`
Streams, StreamsInbound, StreamsOutbound int
Conns, ConnsInbound, ConnsOutbound int
FD int
}
type NetBlockList struct {
Peers []peer.ID
IPAddrs []string
@@ -115,3 +167,122 @@ type ConnMgrInfo struct {
Tags map[string]int
Conns map[string]time.Time
}
type NodeStatus struct {
SyncStatus NodeSyncStatus
PeerStatus NodePeerStatus
ChainStatus NodeChainStatus
}
type NodeSyncStatus struct {
Epoch uint64
Behind uint64
}
type NodePeerStatus struct {
PeersToPublishMsgs int
PeersToPublishBlocks int
}
type NodeChainStatus struct {
BlocksPerTipsetLast100 float64
BlocksPerTipsetLastFinality float64
}
type CheckStatusCode int
//go:generate go run golang.org/x/tools/cmd/stringer -type=CheckStatusCode -trimprefix=CheckStatus
const (
_ CheckStatusCode = iota
// Message Checks
CheckStatusMessageSerialize
CheckStatusMessageSize
CheckStatusMessageValidity
CheckStatusMessageMinGas
CheckStatusMessageMinBaseFee
CheckStatusMessageBaseFee
CheckStatusMessageBaseFeeLowerBound
CheckStatusMessageBaseFeeUpperBound
CheckStatusMessageGetStateNonce
CheckStatusMessageNonce
CheckStatusMessageGetStateBalance
CheckStatusMessageBalance
)
type CheckStatus struct {
Code CheckStatusCode
OK bool
Err string
Hint map[string]interface{}
}
type MessageCheckStatus struct {
Cid cid.Cid
CheckStatus
}
type MessagePrototype struct {
Message types.Message
ValidNonce bool
}
type RetrievalInfo struct {
PayloadCID cid.Cid
ID retrievalmarket.DealID
PieceCID *cid.Cid
PricePerByte abi.TokenAmount
UnsealPrice abi.TokenAmount
Status retrievalmarket.DealStatus
Message string // more information about deal state, particularly errors
Provider peer.ID
BytesReceived uint64
BytesPaidFor uint64
TotalPaid abi.TokenAmount
TransferChannelID *datatransfer.ChannelID
DataTransfer *DataTransferChannel
// optional event if part of ClientGetRetrievalUpdates
Event *retrievalmarket.ClientEvent
}
type RestrievalRes struct {
DealID retrievalmarket.DealID
}
// Selector specifies ipld selector string
// - if the string starts with '{', it's interpreted as json selector string
// see https://ipld.io/specs/selectors/ and https://ipld.io/specs/selectors/fixtures/selector-fixtures-1/
// - otherwise the string is interpreted as ipld-selector-text-lite (simple ipld path)
// see https://github.com/ipld/go-ipld-selector-text-lite
type Selector string
type DagSpec struct {
// DataSelector matches data to be retrieved
// - when using textselector, the path specifies subtree
// - the matched graph must have a single root
DataSelector *Selector
// ExportMerkleProof is applicable only when exporting to a CAR file via a path textselector
// When true, in addition to the selection target, the resulting CAR will contain every block along the
// path back to, and including the original root
// When false the resulting CAR contains only the blocks of the target subdag
ExportMerkleProof bool
}
type ExportRef struct {
Root cid.Cid
// DAGs array specifies a list of DAGs to export
// - If exporting into unixfs files, only one DAG is supported, DataSelector is only used to find the targeted root node
// - If exporting into a car file
// - When exactly one text-path DataSelector is specified exports the subgraph and its full merkle-path from the original root
// - Otherwise ( multiple paths and/or JSON selector specs) determines each individual subroot and exports the subtrees as a multi-root car
// - When not specified defaults to a single DAG:
// - Data - the entire DAG: `{"R":{"l":{"none":{}},":>":{"a":{">":{"@":{}}}}}}`
DAGs []DagSpec
FromLocalCAR string // if specified, get data from a local CARv2 file.
DealID retrievalmarket.DealID
}
+5
View File
@@ -0,0 +1,5 @@
package apitypes
import "github.com/filecoin-project/go-state-types/network"
type NetworkVersion = network.Version
+3
View File
@@ -0,0 +1,3 @@
package apitypes
type OpenRPCDocument map[string]interface{}
+751
View File
@@ -0,0 +1,751 @@
package v0api
import (
"context"
"github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-bitfield"
datatransfer "github.com/filecoin-project/go-data-transfer"
"github.com/filecoin-project/go-fil-markets/retrievalmarket"
"github.com/filecoin-project/go-fil-markets/storagemarket"
"github.com/filecoin-project/go-state-types/abi"
"github.com/filecoin-project/go-state-types/crypto"
"github.com/filecoin-project/go-state-types/dline"
"github.com/ipfs/go-cid"
textselector "github.com/ipld/go-ipld-selector-text-lite"
"github.com/libp2p/go-libp2p-core/peer"
"github.com/filecoin-project/lotus/api"
apitypes "github.com/filecoin-project/lotus/api/types"
"github.com/filecoin-project/lotus/chain/actors/builtin/miner"
"github.com/filecoin-project/lotus/chain/actors/builtin/paych"
"github.com/filecoin-project/lotus/chain/types"
marketevents "github.com/filecoin-project/lotus/markets/loggers"
"github.com/filecoin-project/lotus/node/modules/dtypes"
"github.com/filecoin-project/lotus/node/repo/imports"
)
//go:generate go run github.com/golang/mock/mockgen -destination=v0mocks/mock_full.go -package=v0mocks . FullNode
// MODIFYING THE API INTERFACE
//
// NOTE: This is the V0 (Stable) API - when adding methods to this interface,
// you'll need to make sure they are also present on the V1 (Unstable) API
//
// This API is implemented in `v1_wrapper.go` as a compatibility layer backed
// by the V1 api
//
// When adding / changing methods in this file:
// * Do the change here
// * Adjust implementation in `node/impl/`
// * Run `make gen` - this will:
// * Generate proxy structs
// * Generate mocks
// * Generate markdown docs
// * Generate openrpc blobs
// FullNode API is a low-level interface to the Filecoin network full node
type FullNode interface {
Common
Net
// MethodGroup: Chain
// The Chain method group contains methods for interacting with the
// blockchain, but that do not require any form of state computation.
// ChainNotify returns channel with chain head updates.
// First message is guaranteed to be of len == 1, and type == 'current'.
ChainNotify(context.Context) (<-chan []*api.HeadChange, error) //perm:read
// ChainHead returns the current head of the chain.
ChainHead(context.Context) (*types.TipSet, error) //perm:read
// ChainGetRandomnessFromTickets is used to sample the chain for randomness.
ChainGetRandomnessFromTickets(ctx context.Context, tsk types.TipSetKey, personalization crypto.DomainSeparationTag, randEpoch abi.ChainEpoch, entropy []byte) (abi.Randomness, error) //perm:read
// ChainGetRandomnessFromBeacon is used to sample the beacon for randomness.
ChainGetRandomnessFromBeacon(ctx context.Context, tsk types.TipSetKey, personalization crypto.DomainSeparationTag, randEpoch abi.ChainEpoch, entropy []byte) (abi.Randomness, error) //perm:read
// ChainGetBlock returns the block specified by the given CID.
ChainGetBlock(context.Context, cid.Cid) (*types.BlockHeader, error) //perm:read
// ChainGetTipSet returns the tipset specified by the given TipSetKey.
ChainGetTipSet(context.Context, types.TipSetKey) (*types.TipSet, error) //perm:read
// ChainGetBlockMessages returns messages stored in the specified block.
//
// Note: If there are multiple blocks in a tipset, it's likely that some
// messages will be duplicated. It's also possible for blocks in a tipset to have
// different messages from the same sender at the same nonce. When that happens,
// only the first message (in a block with lowest ticket) will be considered
// for execution
//
// NOTE: THIS METHOD SHOULD ONLY BE USED FOR GETTING MESSAGES IN A SPECIFIC BLOCK
//
// DO NOT USE THIS METHOD TO GET MESSAGES INCLUDED IN A TIPSET
// Use ChainGetParentMessages, which will perform correct message deduplication
ChainGetBlockMessages(ctx context.Context, blockCid cid.Cid) (*api.BlockMessages, error) //perm:read
// ChainGetParentReceipts returns receipts for messages in parent tipset of
// the specified block. The receipts in the list returned is one-to-one with the
// messages returned by a call to ChainGetParentMessages with the same blockCid.
ChainGetParentReceipts(ctx context.Context, blockCid cid.Cid) ([]*types.MessageReceipt, error) //perm:read
// ChainGetParentMessages returns messages stored in parent tipset of the
// specified block.
ChainGetParentMessages(ctx context.Context, blockCid cid.Cid) ([]api.Message, error) //perm:read
// ChainGetMessagesInTipset returns message stores in current tipset
ChainGetMessagesInTipset(ctx context.Context, tsk types.TipSetKey) ([]api.Message, error) //perm:read
// ChainGetTipSetByHeight looks back for a tipset at the specified epoch.
// If there are no blocks at the specified epoch, a tipset at an earlier epoch
// will be returned.
ChainGetTipSetByHeight(context.Context, abi.ChainEpoch, types.TipSetKey) (*types.TipSet, error) //perm:read
// ChainReadObj reads ipld nodes referenced by the specified CID from chain
// blockstore and returns raw bytes.
ChainReadObj(context.Context, cid.Cid) ([]byte, error) //perm:read
// ChainDeleteObj deletes node referenced by the given CID
ChainDeleteObj(context.Context, cid.Cid) error //perm:admin
// ChainHasObj checks if a given CID exists in the chain blockstore.
ChainHasObj(context.Context, cid.Cid) (bool, error) //perm:read
// ChainStatObj returns statistics about the graph referenced by 'obj'.
// If 'base' is also specified, then the returned stat will be a diff
// between the two objects.
ChainStatObj(ctx context.Context, obj cid.Cid, base cid.Cid) (api.ObjStat, error) //perm:read
// ChainSetHead forcefully sets current chain head. Use with caution.
ChainSetHead(context.Context, types.TipSetKey) error //perm:admin
// ChainGetGenesis returns the genesis tipset.
ChainGetGenesis(context.Context) (*types.TipSet, error) //perm:read
// ChainTipSetWeight computes weight for the specified tipset.
ChainTipSetWeight(context.Context, types.TipSetKey) (types.BigInt, error) //perm:read
ChainGetNode(ctx context.Context, p string) (*api.IpldObject, error) //perm:read
// ChainGetMessage reads a message referenced by the specified CID from the
// chain blockstore.
ChainGetMessage(context.Context, cid.Cid) (*types.Message, error) //perm:read
// ChainGetPath returns a set of revert/apply operations needed to get from
// one tipset to another, for example:
//```
// to
// ^
// from tAA
// ^ ^
// tBA tAB
// ^---*--^
// ^
// tRR
//```
// Would return `[revert(tBA), apply(tAB), apply(tAA)]`
ChainGetPath(ctx context.Context, from types.TipSetKey, to types.TipSetKey) ([]*api.HeadChange, error) //perm:read
// ChainExport returns a stream of bytes with CAR dump of chain data.
// The exported chain data includes the header chain from the given tipset
// back to genesis, the entire genesis state, and the most recent 'nroots'
// state trees.
// If oldmsgskip is set, messages from before the requested roots are also not included.
ChainExport(ctx context.Context, nroots abi.ChainEpoch, oldmsgskip bool, tsk types.TipSetKey) (<-chan []byte, error) //perm:read
// MethodGroup: Beacon
// The Beacon method group contains methods for interacting with the random beacon (DRAND)
// BeaconGetEntry returns the beacon entry for the given filecoin epoch. If
// the entry has not yet been produced, the call will block until the entry
// becomes available
BeaconGetEntry(ctx context.Context, epoch abi.ChainEpoch) (*types.BeaconEntry, error) //perm:read
// GasEstimateFeeCap estimates gas fee cap
GasEstimateFeeCap(context.Context, *types.Message, int64, types.TipSetKey) (types.BigInt, error) //perm:read
// GasEstimateGasLimit estimates gas used by the message and returns it.
// It fails if message fails to execute.
GasEstimateGasLimit(context.Context, *types.Message, types.TipSetKey) (int64, error) //perm:read
// GasEstimateGasPremium estimates what gas price should be used for a
// message to have high likelihood of inclusion in `nblocksincl` epochs.
GasEstimateGasPremium(_ context.Context, nblocksincl uint64,
sender address.Address, gaslimit int64, tsk types.TipSetKey) (types.BigInt, error) //perm:read
// GasEstimateMessageGas estimates gas values for unset message gas fields
GasEstimateMessageGas(context.Context, *types.Message, *api.MessageSendSpec, types.TipSetKey) (*types.Message, error) //perm:read
// MethodGroup: Sync
// The Sync method group contains methods for interacting with and
// observing the lotus sync service.
// SyncState returns the current status of the lotus sync system.
SyncState(context.Context) (*api.SyncState, error) //perm:read
// SyncSubmitBlock can be used to submit a newly created block to the.
// network through this node
SyncSubmitBlock(ctx context.Context, blk *types.BlockMsg) error //perm:write
// SyncIncomingBlocks returns a channel streaming incoming, potentially not
// yet synced block headers.
SyncIncomingBlocks(ctx context.Context) (<-chan *types.BlockHeader, error) //perm:read
// SyncCheckpoint marks a blocks as checkpointed, meaning that it won't ever fork away from it.
SyncCheckpoint(ctx context.Context, tsk types.TipSetKey) error //perm:admin
// SyncMarkBad marks a blocks as bad, meaning that it won't ever by synced.
// Use with extreme caution.
SyncMarkBad(ctx context.Context, bcid cid.Cid) error //perm:admin
// SyncUnmarkBad unmarks a blocks as bad, making it possible to be validated and synced again.
SyncUnmarkBad(ctx context.Context, bcid cid.Cid) error //perm:admin
// SyncUnmarkAllBad purges bad block cache, making it possible to sync to chains previously marked as bad
SyncUnmarkAllBad(ctx context.Context) error //perm:admin
// SyncCheckBad checks if a block was marked as bad, and if it was, returns
// the reason.
SyncCheckBad(ctx context.Context, bcid cid.Cid) (string, error) //perm:read
// SyncValidateTipset indicates whether the provided tipset is valid or not
SyncValidateTipset(ctx context.Context, tsk types.TipSetKey) (bool, error) //perm:read
// MethodGroup: Mpool
// The Mpool methods are for interacting with the message pool. The message pool
// manages all incoming and outgoing 'messages' going over the network.
// MpoolPending returns pending mempool messages.
MpoolPending(context.Context, types.TipSetKey) ([]*types.SignedMessage, error) //perm:read
// MpoolSelect returns a list of pending messages for inclusion in the next block
MpoolSelect(context.Context, types.TipSetKey, float64) ([]*types.SignedMessage, error) //perm:read
// MpoolPush pushes a signed message to mempool.
MpoolPush(context.Context, *types.SignedMessage) (cid.Cid, error) //perm:write
// MpoolPushUntrusted pushes a signed message to mempool from untrusted sources.
MpoolPushUntrusted(context.Context, *types.SignedMessage) (cid.Cid, error) //perm:write
// MpoolPushMessage atomically assigns a nonce, signs, and pushes a message
// to mempool.
// maxFee is only used when GasFeeCap/GasPremium fields aren't specified
//
// When maxFee is set to 0, MpoolPushMessage will guess appropriate fee
// based on current chain conditions
MpoolPushMessage(ctx context.Context, msg *types.Message, spec *api.MessageSendSpec) (*types.SignedMessage, error) //perm:sign
// MpoolBatchPush batch pushes a signed message to mempool.
MpoolBatchPush(context.Context, []*types.SignedMessage) ([]cid.Cid, error) //perm:write
// MpoolBatchPushUntrusted batch pushes a signed message to mempool from untrusted sources.
MpoolBatchPushUntrusted(context.Context, []*types.SignedMessage) ([]cid.Cid, error) //perm:write
// MpoolBatchPushMessage batch pushes a unsigned message to mempool.
MpoolBatchPushMessage(context.Context, []*types.Message, *api.MessageSendSpec) ([]*types.SignedMessage, error) //perm:sign
// MpoolGetNonce gets next nonce for the specified sender.
// Note that this method may not be atomic. Use MpoolPushMessage instead.
MpoolGetNonce(context.Context, address.Address) (uint64, error) //perm:read
MpoolSub(context.Context) (<-chan api.MpoolUpdate, error) //perm:read
// MpoolClear clears pending messages from the mpool
MpoolClear(context.Context, bool) error //perm:write
// MpoolGetConfig returns (a copy of) the current mpool config
MpoolGetConfig(context.Context) (*types.MpoolConfig, error) //perm:read
// MpoolSetConfig sets the mpool config to (a copy of) the supplied config
MpoolSetConfig(context.Context, *types.MpoolConfig) error //perm:admin
// MethodGroup: Miner
MinerGetBaseInfo(context.Context, address.Address, abi.ChainEpoch, types.TipSetKey) (*api.MiningBaseInfo, error) //perm:read
MinerCreateBlock(context.Context, *api.BlockTemplate) (*types.BlockMsg, error) //perm:write
// // UX ?
// MethodGroup: Wallet
// WalletNew creates a new address in the wallet with the given sigType.
// Available key types: bls, secp256k1, secp256k1-ledger
// Support for numerical types: 1 - secp256k1, 2 - BLS is deprecated
WalletNew(context.Context, types.KeyType) (address.Address, error) //perm:write
// WalletHas indicates whether the given address is in the wallet.
WalletHas(context.Context, address.Address) (bool, error) //perm:write
// WalletList lists all the addresses in the wallet.
WalletList(context.Context) ([]address.Address, error) //perm:write
// WalletBalance returns the balance of the given address at the current head of the chain.
WalletBalance(context.Context, address.Address) (types.BigInt, error) //perm:read
// WalletSign signs the given bytes using the given address.
WalletSign(context.Context, address.Address, []byte) (*crypto.Signature, error) //perm:sign
// WalletSignMessage signs the given message using the given address.
WalletSignMessage(context.Context, address.Address, *types.Message) (*types.SignedMessage, error) //perm:sign
// WalletVerify takes an address, a signature, and some bytes, and indicates whether the signature is valid.
// The address does not have to be in the wallet.
WalletVerify(context.Context, address.Address, []byte, *crypto.Signature) (bool, error) //perm:read
// WalletDefaultAddress returns the address marked as default in the wallet.
WalletDefaultAddress(context.Context) (address.Address, error) //perm:write
// WalletSetDefault marks the given address as as the default one.
WalletSetDefault(context.Context, address.Address) error //perm:write
// WalletExport returns the private key of an address in the wallet.
WalletExport(context.Context, address.Address) (*types.KeyInfo, error) //perm:admin
// WalletImport receives a KeyInfo, which includes a private key, and imports it into the wallet.
WalletImport(context.Context, *types.KeyInfo) (address.Address, error) //perm:admin
// WalletDelete deletes an address from the wallet.
WalletDelete(context.Context, address.Address) error //perm:admin
// WalletValidateAddress validates whether a given string can be decoded as a well-formed address
WalletValidateAddress(context.Context, string) (address.Address, error) //perm:read
// Other
// MethodGroup: Client
// The Client methods all have to do with interacting with the storage and
// retrieval markets as a client
// ClientImport imports file under the specified path into filestore.
ClientImport(ctx context.Context, ref api.FileRef) (*api.ImportRes, error) //perm:admin
// ClientRemoveImport removes file import
ClientRemoveImport(ctx context.Context, importID imports.ID) error //perm:admin
// ClientStartDeal proposes a deal with a miner.
ClientStartDeal(ctx context.Context, params *api.StartDealParams) (*cid.Cid, error) //perm:admin
// ClientStatelessDeal fire-and-forget-proposes an offline deal to a miner without subsequent tracking.
ClientStatelessDeal(ctx context.Context, params *api.StartDealParams) (*cid.Cid, error) //perm:write
// ClientGetDealInfo returns the latest information about a given deal.
ClientGetDealInfo(context.Context, cid.Cid) (*api.DealInfo, error) //perm:read
// ClientListDeals returns information about the deals made by the local client.
ClientListDeals(ctx context.Context) ([]api.DealInfo, error) //perm:write
// ClientGetDealUpdates returns the status of updated deals
ClientGetDealUpdates(ctx context.Context) (<-chan api.DealInfo, error) //perm:write
// ClientGetDealStatus returns status given a code
ClientGetDealStatus(ctx context.Context, statusCode uint64) (string, error) //perm:read
// ClientHasLocal indicates whether a certain CID is locally stored.
ClientHasLocal(ctx context.Context, root cid.Cid) (bool, error) //perm:write
// ClientFindData identifies peers that have a certain file, and returns QueryOffers (one per peer).
ClientFindData(ctx context.Context, root cid.Cid, piece *cid.Cid) ([]api.QueryOffer, error) //perm:read
// ClientMinerQueryOffer returns a QueryOffer for the specific miner and file.
ClientMinerQueryOffer(ctx context.Context, miner address.Address, root cid.Cid, piece *cid.Cid) (api.QueryOffer, error) //perm:read
// ClientRetrieve initiates the retrieval of a file, as specified in the order.
ClientRetrieve(ctx context.Context, order RetrievalOrder, ref *api.FileRef) error //perm:admin
// ClientRetrieveWithEvents initiates the retrieval of a file, as specified in the order, and provides a channel
// of status updates.
ClientRetrieveWithEvents(ctx context.Context, order RetrievalOrder, ref *api.FileRef) (<-chan marketevents.RetrievalEvent, error) //perm:admin
// ClientQueryAsk returns a signed StorageAsk from the specified miner.
// ClientListRetrievals returns information about retrievals made by the local client
ClientListRetrievals(ctx context.Context) ([]api.RetrievalInfo, error) //perm:write
// ClientGetRetrievalUpdates returns status of updated retrieval deals
ClientGetRetrievalUpdates(ctx context.Context) (<-chan api.RetrievalInfo, error) //perm:write
ClientQueryAsk(ctx context.Context, p peer.ID, miner address.Address) (*storagemarket.StorageAsk, error) //perm:read
// ClientCalcCommP calculates the CommP and data size of the specified CID
ClientDealPieceCID(ctx context.Context, root cid.Cid) (api.DataCIDSize, error) //perm:read
// ClientCalcCommP calculates the CommP for a specified file
ClientCalcCommP(ctx context.Context, inpath string) (*api.CommPRet, error) //perm:write
// ClientGenCar generates a CAR file for the specified file.
ClientGenCar(ctx context.Context, ref api.FileRef, outpath string) error //perm:write
// ClientDealSize calculates real deal data size
ClientDealSize(ctx context.Context, root cid.Cid) (api.DataSize, error) //perm:read
// ClientListTransfers returns the status of all ongoing transfers of data
ClientListDataTransfers(ctx context.Context) ([]api.DataTransferChannel, error) //perm:write
ClientDataTransferUpdates(ctx context.Context) (<-chan api.DataTransferChannel, error) //perm:write
// ClientRestartDataTransfer attempts to restart a data transfer with the given transfer ID and other peer
ClientRestartDataTransfer(ctx context.Context, transferID datatransfer.TransferID, otherPeer peer.ID, isInitiator bool) error //perm:write
// ClientCancelDataTransfer cancels a data transfer with the given transfer ID and other peer
ClientCancelDataTransfer(ctx context.Context, transferID datatransfer.TransferID, otherPeer peer.ID, isInitiator bool) error //perm:write
// ClientRetrieveTryRestartInsufficientFunds attempts to restart stalled retrievals on a given payment channel
// which are stuck due to insufficient funds
ClientRetrieveTryRestartInsufficientFunds(ctx context.Context, paymentChannel address.Address) error //perm:write
// ClientCancelRetrievalDeal cancels an ongoing retrieval deal based on DealID
ClientCancelRetrievalDeal(ctx context.Context, dealid retrievalmarket.DealID) error //perm:write
// ClientUnimport removes references to the specified file from filestore
//ClientUnimport(path string)
// ClientListImports lists imported files and their root CIDs
ClientListImports(ctx context.Context) ([]api.Import, error) //perm:write
//ClientListAsks() []Ask
// MethodGroup: State
// The State methods are used to query, inspect, and interact with chain state.
// Most methods take a TipSetKey as a parameter. The state looked up is the parent state of the tipset.
// A nil TipSetKey can be provided as a param, this will cause the heaviest tipset in the chain to be used.
// StateCall runs the given message and returns its result without any persisted changes.
//
// StateCall applies the message to the tipset's parent state. The
// message is not applied on-top-of the messages in the passed-in
// tipset.
StateCall(context.Context, *types.Message, types.TipSetKey) (*api.InvocResult, error) //perm:read
// StateReplay replays a given message, assuming it was included in a block in the specified tipset.
//
// If a tipset key is provided, and a replacing message is found on chain,
// the method will return an error saying that the message wasn't found
//
// If no tipset key is provided, the appropriate tipset is looked up, and if
// the message was gas-repriced, the on-chain message will be replayed - in
// that case the returned InvocResult.MsgCid will not match the Cid param
//
// If the caller wants to ensure that exactly the requested message was executed,
// they MUST check that InvocResult.MsgCid is equal to the provided Cid.
// Without this check both the requested and original message may appear as
// successfully executed on-chain, which may look like a double-spend.
//
// A replacing message is a message with a different CID, any of Gas values, and
// different signature, but with all other parameters matching (source/destination,
// nonce, params, etc.)
StateReplay(context.Context, types.TipSetKey, cid.Cid) (*api.InvocResult, error) //perm:read
// StateGetActor returns the indicated actor's nonce and balance.
StateGetActor(ctx context.Context, actor address.Address, tsk types.TipSetKey) (*types.Actor, error) //perm:read
// StateReadState returns the indicated actor's state.
StateReadState(ctx context.Context, actor address.Address, tsk types.TipSetKey) (*api.ActorState, error) //perm:read
// StateListMessages looks back and returns all messages with a matching to or from address, stopping at the given height.
StateListMessages(ctx context.Context, match *api.MessageMatch, tsk types.TipSetKey, toht abi.ChainEpoch) ([]cid.Cid, error) //perm:read
// StateDecodeParams attempts to decode the provided params, based on the recipient actor address and method number.
StateDecodeParams(ctx context.Context, toAddr address.Address, method abi.MethodNum, params []byte, tsk types.TipSetKey) (interface{}, error) //perm:read
// StateNetworkName returns the name of the network the node is synced to
StateNetworkName(context.Context) (dtypes.NetworkName, error) //perm:read
// StateMinerSectors returns info about the given miner's sectors. If the filter bitfield is nil, all sectors are included.
StateMinerSectors(context.Context, address.Address, *bitfield.BitField, types.TipSetKey) ([]*miner.SectorOnChainInfo, error) //perm:read
// StateMinerActiveSectors returns info about sectors that a given miner is actively proving.
StateMinerActiveSectors(context.Context, address.Address, types.TipSetKey) ([]*miner.SectorOnChainInfo, error) //perm:read
// StateMinerProvingDeadline calculates the deadline at some epoch for a proving period
// and returns the deadline-related calculations.
StateMinerProvingDeadline(context.Context, address.Address, types.TipSetKey) (*dline.Info, error) //perm:read
// StateMinerPower returns the power of the indicated miner
StateMinerPower(context.Context, address.Address, types.TipSetKey) (*api.MinerPower, error) //perm:read
// StateMinerInfo returns info about the indicated miner
StateMinerInfo(context.Context, address.Address, types.TipSetKey) (miner.MinerInfo, error) //perm:read
// StateMinerDeadlines returns all the proving deadlines for the given miner
StateMinerDeadlines(context.Context, address.Address, types.TipSetKey) ([]api.Deadline, error) //perm:read
// StateMinerPartitions returns all partitions in the specified deadline
StateMinerPartitions(ctx context.Context, m address.Address, dlIdx uint64, tsk types.TipSetKey) ([]api.Partition, error) //perm:read
// StateMinerFaults returns a bitfield indicating the faulty sectors of the given miner
StateMinerFaults(context.Context, address.Address, types.TipSetKey) (bitfield.BitField, error) //perm:read
// StateAllMinerFaults returns all non-expired Faults that occur within lookback epochs of the given tipset
StateAllMinerFaults(ctx context.Context, lookback abi.ChainEpoch, ts types.TipSetKey) ([]*api.Fault, error) //perm:read
// StateMinerRecoveries returns a bitfield indicating the recovering sectors of the given miner
StateMinerRecoveries(context.Context, address.Address, types.TipSetKey) (bitfield.BitField, error) //perm:read
// StateMinerInitialPledgeCollateral returns the precommit deposit for the specified miner's sector
StateMinerPreCommitDepositForPower(context.Context, address.Address, miner.SectorPreCommitInfo, types.TipSetKey) (types.BigInt, error) //perm:read
// StateMinerInitialPledgeCollateral returns the initial pledge collateral for the specified miner's sector
StateMinerInitialPledgeCollateral(context.Context, address.Address, miner.SectorPreCommitInfo, types.TipSetKey) (types.BigInt, error) //perm:read
// StateMinerAvailableBalance returns the portion of a miner's balance that can be withdrawn or spent
StateMinerAvailableBalance(context.Context, address.Address, types.TipSetKey) (types.BigInt, error) //perm:read
// StateMinerSectorAllocated checks if a sector is allocated
StateMinerSectorAllocated(context.Context, address.Address, abi.SectorNumber, types.TipSetKey) (bool, error) //perm:read
// StateSectorPreCommitInfo returns the PreCommit info for the specified miner's sector
StateSectorPreCommitInfo(context.Context, address.Address, abi.SectorNumber, types.TipSetKey) (miner.SectorPreCommitOnChainInfo, error) //perm:read
// StateSectorGetInfo returns the on-chain info for the specified miner's sector. Returns null in case the sector info isn't found
// NOTE: returned info.Expiration may not be accurate in some cases, use StateSectorExpiration to get accurate
// expiration epoch
StateSectorGetInfo(context.Context, address.Address, abi.SectorNumber, types.TipSetKey) (*miner.SectorOnChainInfo, error) //perm:read
// StateSectorExpiration returns epoch at which given sector will expire
StateSectorExpiration(context.Context, address.Address, abi.SectorNumber, types.TipSetKey) (*miner.SectorExpiration, error) //perm:read
// StateSectorPartition finds deadline/partition with the specified sector
StateSectorPartition(ctx context.Context, maddr address.Address, sectorNumber abi.SectorNumber, tok types.TipSetKey) (*miner.SectorLocation, error) //perm:read
// StateSearchMsg searches for a message in the chain, and returns its receipt and the tipset where it was executed
//
// NOTE: If a replacing message is found on chain, this method will return
// a MsgLookup for the replacing message - the MsgLookup.Message will be a different
// CID than the one provided in the 'cid' param, MsgLookup.Receipt will contain the
// result of the execution of the replacing message.
//
// If the caller wants to ensure that exactly the requested message was executed,
// they MUST check that MsgLookup.Message is equal to the provided 'cid'.
// Without this check both the requested and original message may appear as
// successfully executed on-chain, which may look like a double-spend.
//
// A replacing message is a message with a different CID, any of Gas values, and
// different signature, but with all other parameters matching (source/destination,
// nonce, params, etc.)
StateSearchMsg(context.Context, cid.Cid) (*api.MsgLookup, error) //perm:read
// StateSearchMsgLimited looks back up to limit epochs in the chain for a message, and returns its receipt and the tipset where it was executed
//
// NOTE: If a replacing message is found on chain, this method will return
// a MsgLookup for the replacing message - the MsgLookup.Message will be a different
// CID than the one provided in the 'cid' param, MsgLookup.Receipt will contain the
// result of the execution of the replacing message.
//
// If the caller wants to ensure that exactly the requested message was executed,
// they MUST check that MsgLookup.Message is equal to the provided 'cid'.
// Without this check both the requested and original message may appear as
// successfully executed on-chain, which may look like a double-spend.
//
// A replacing message is a message with a different CID, any of Gas values, and
// different signature, but with all other parameters matching (source/destination,
// nonce, params, etc.)
StateSearchMsgLimited(ctx context.Context, msg cid.Cid, limit abi.ChainEpoch) (*api.MsgLookup, error) //perm:read
// StateWaitMsg looks back in the chain for a message. If not found, it blocks until the
// message arrives on chain, and gets to the indicated confidence depth.
//
// NOTE: If a replacing message is found on chain, this method will return
// a MsgLookup for the replacing message - the MsgLookup.Message will be a different
// CID than the one provided in the 'cid' param, MsgLookup.Receipt will contain the
// result of the execution of the replacing message.
//
// If the caller wants to ensure that exactly the requested message was executed,
// they MUST check that MsgLookup.Message is equal to the provided 'cid'.
// Without this check both the requested and original message may appear as
// successfully executed on-chain, which may look like a double-spend.
//
// A replacing message is a message with a different CID, any of Gas values, and
// different signature, but with all other parameters matching (source/destination,
// nonce, params, etc.)
StateWaitMsg(ctx context.Context, cid cid.Cid, confidence uint64) (*api.MsgLookup, error) //perm:read
// StateWaitMsgLimited looks back up to limit epochs in the chain for a message.
// If not found, it blocks until the message arrives on chain, and gets to the
// indicated confidence depth.
//
// NOTE: If a replacing message is found on chain, this method will return
// a MsgLookup for the replacing message - the MsgLookup.Message will be a different
// CID than the one provided in the 'cid' param, MsgLookup.Receipt will contain the
// result of the execution of the replacing message.
//
// If the caller wants to ensure that exactly the requested message was executed,
// they MUST check that MsgLookup.Message is equal to the provided 'cid'.
// Without this check both the requested and original message may appear as
// successfully executed on-chain, which may look like a double-spend.
//
// A replacing message is a message with a different CID, any of Gas values, and
// different signature, but with all other parameters matching (source/destination,
// nonce, params, etc.)
StateWaitMsgLimited(ctx context.Context, cid cid.Cid, confidence uint64, limit abi.ChainEpoch) (*api.MsgLookup, error) //perm:read
// StateListMiners returns the addresses of every miner that has claimed power in the Power Actor
StateListMiners(context.Context, types.TipSetKey) ([]address.Address, error) //perm:read
// StateListActors returns the addresses of every actor in the state
StateListActors(context.Context, types.TipSetKey) ([]address.Address, error) //perm:read
// StateMarketBalance looks up the Escrow and Locked balances of the given address in the Storage Market
StateMarketBalance(context.Context, address.Address, types.TipSetKey) (api.MarketBalance, error) //perm:read
// StateMarketParticipants returns the Escrow and Locked balances of every participant in the Storage Market
StateMarketParticipants(context.Context, types.TipSetKey) (map[string]api.MarketBalance, error) //perm:read
// StateMarketDeals returns information about every deal in the Storage Market
StateMarketDeals(context.Context, types.TipSetKey) (map[string]api.MarketDeal, error) //perm:read
// StateMarketStorageDeal returns information about the indicated deal
StateMarketStorageDeal(context.Context, abi.DealID, types.TipSetKey) (*api.MarketDeal, error) //perm:read
// StateLookupID retrieves the ID address of the given address
StateLookupID(context.Context, address.Address, types.TipSetKey) (address.Address, error) //perm:read
// StateAccountKey returns the public key address of the given ID address
StateAccountKey(context.Context, address.Address, types.TipSetKey) (address.Address, error) //perm:read
// StateChangedActors returns all the actors whose states change between the two given state CIDs
// TODO: Should this take tipset keys instead?
StateChangedActors(context.Context, cid.Cid, cid.Cid) (map[string]types.Actor, error) //perm:read
// StateGetReceipt returns the message receipt for the given message or for a
// matching gas-repriced replacing message
//
// NOTE: If the requested message was replaced, this method will return the receipt
// for the replacing message - if the caller needs the receipt for exactly the
// requested message, use StateSearchMsg().Receipt, and check that MsgLookup.Message
// is matching the requested CID
//
// DEPRECATED: Use StateSearchMsg, this method won't be supported in v1 API
StateGetReceipt(context.Context, cid.Cid, types.TipSetKey) (*types.MessageReceipt, error) //perm:read
// StateMinerSectorCount returns the number of sectors in a miner's sector set and proving set
StateMinerSectorCount(context.Context, address.Address, types.TipSetKey) (api.MinerSectors, error) //perm:read
// StateCompute is a flexible command that applies the given messages on the given tipset.
// The messages are run as though the VM were at the provided height.
//
// When called, StateCompute will:
// - Load the provided tipset, or use the current chain head if not provided
// - Compute the tipset state of the provided tipset on top of the parent state
// - (note that this step runs before vmheight is applied to the execution)
// - Execute state upgrade if any were scheduled at the epoch, or in null
// blocks preceding the tipset
// - Call the cron actor on null blocks preceding the tipset
// - For each block in the tipset
// - Apply messages in blocks in the specified
// - Award block reward by calling the reward actor
// - Call the cron actor for the current epoch
// - If the specified vmheight is higher than the current epoch, apply any
// needed state upgrades to the state
// - Apply the specified messages to the state
//
// The vmheight parameter sets VM execution epoch, and can be used to simulate
// message execution in different network versions. If the specified vmheight
// epoch is higher than the epoch of the specified tipset, any state upgrades
// until the vmheight will be executed on the state before applying messages
// specified by the user.
//
// Note that the initial tipset state computation is not affected by the
// vmheight parameter - only the messages in the `apply` set are
//
// If the caller wants to simply compute the state, vmheight should be set to
// the epoch of the specified tipset.
//
// Messages in the `apply` parameter must have the correct nonces, and gas
// values set.
StateCompute(context.Context, abi.ChainEpoch, []*types.Message, types.TipSetKey) (*api.ComputeStateOutput, error) //perm:read
// StateVerifierStatus returns the data cap for the given address.
// Returns nil if there is no entry in the data cap table for the
// address.
StateVerifierStatus(ctx context.Context, addr address.Address, tsk types.TipSetKey) (*abi.StoragePower, error) //perm:read
// StateVerifiedClientStatus returns the data cap for the given address.
// Returns nil if there is no entry in the data cap table for the
// address.
StateVerifiedClientStatus(ctx context.Context, addr address.Address, tsk types.TipSetKey) (*abi.StoragePower, error) //perm:read
// StateVerifiedClientStatus returns the address of the Verified Registry's root key
StateVerifiedRegistryRootKey(ctx context.Context, tsk types.TipSetKey) (address.Address, error) //perm:read
// StateDealProviderCollateralBounds returns the min and max collateral a storage provider
// can issue. It takes the deal size and verified status as parameters.
StateDealProviderCollateralBounds(context.Context, abi.PaddedPieceSize, bool, types.TipSetKey) (api.DealCollateralBounds, error) //perm:read
// StateCirculatingSupply returns the exact circulating supply of Filecoin at the given tipset.
// This is not used anywhere in the protocol itself, and is only for external consumption.
StateCirculatingSupply(context.Context, types.TipSetKey) (abi.TokenAmount, error) //perm:read
// StateVMCirculatingSupplyInternal returns an approximation of the circulating supply of Filecoin at the given tipset.
// This is the value reported by the runtime interface to actors code.
StateVMCirculatingSupplyInternal(context.Context, types.TipSetKey) (api.CirculatingSupply, error) //perm:read
// StateNetworkVersion returns the network version at the given tipset
StateNetworkVersion(context.Context, types.TipSetKey) (apitypes.NetworkVersion, error) //perm:read
// StateGetRandomnessFromTickets is used to sample the chain for randomness.
StateGetRandomnessFromTickets(ctx context.Context, personalization crypto.DomainSeparationTag, randEpoch abi.ChainEpoch, entropy []byte, tsk types.TipSetKey) (abi.Randomness, error) //perm:read
// StateGetRandomnessFromBeacon is used to sample the beacon for randomness.
StateGetRandomnessFromBeacon(ctx context.Context, personalization crypto.DomainSeparationTag, randEpoch abi.ChainEpoch, entropy []byte, tsk types.TipSetKey) (abi.Randomness, error) //perm:read
// MethodGroup: Msig
// The Msig methods are used to interact with multisig wallets on the
// filecoin network
// MsigGetAvailableBalance returns the portion of a multisig's balance that can be withdrawn or spent
MsigGetAvailableBalance(context.Context, address.Address, types.TipSetKey) (types.BigInt, error) //perm:read
// MsigGetVestingSchedule returns the vesting details of a given multisig.
MsigGetVestingSchedule(context.Context, address.Address, types.TipSetKey) (api.MsigVesting, error) //perm:read
// MsigGetVested returns the amount of FIL that vested in a multisig in a certain period.
// It takes the following params: <multisig address>, <start epoch>, <end epoch>
MsigGetVested(context.Context, address.Address, types.TipSetKey, types.TipSetKey) (types.BigInt, error) //perm:read
//MsigGetPending returns pending transactions for the given multisig
//wallet. Once pending transactions are fully approved, they will no longer
//appear here.
MsigGetPending(context.Context, address.Address, types.TipSetKey) ([]*api.MsigTransaction, error) //perm:read
// MsigCreate creates a multisig wallet
// It takes the following params: <required number of senders>, <approving addresses>, <unlock duration>
//<initial balance>, <sender address of the create msg>, <gas price>
MsigCreate(context.Context, uint64, []address.Address, abi.ChainEpoch, types.BigInt, address.Address, types.BigInt) (cid.Cid, error) //perm:sign
// MsigPropose proposes a multisig message
// It takes the following params: <multisig address>, <recipient address>, <value to transfer>,
// <sender address of the propose msg>, <method to call in the proposed message>, <params to include in the proposed message>
MsigPropose(context.Context, address.Address, address.Address, types.BigInt, address.Address, uint64, []byte) (cid.Cid, error) //perm:sign
// MsigApprove approves a previously-proposed multisig message by transaction ID
// It takes the following params: <multisig address>, <proposed transaction ID> <signer address>
MsigApprove(context.Context, address.Address, uint64, address.Address) (cid.Cid, error) //perm:sign
// MsigApproveTxnHash approves a previously-proposed multisig message, specified
// using both transaction ID and a hash of the parameters used in the
// proposal. This method of approval can be used to ensure you only approve
// exactly the transaction you think you are.
// It takes the following params: <multisig address>, <proposed message ID>, <proposer address>, <recipient address>, <value to transfer>,
// <sender address of the approve msg>, <method to call in the approved message>, <params to include in the proposed message>
MsigApproveTxnHash(context.Context, address.Address, uint64, address.Address, address.Address, types.BigInt, address.Address, uint64, []byte) (cid.Cid, error) //perm:sign
// MsigCancel cancels a previously-proposed multisig message
// It takes the following params: <multisig address>, <proposed transaction ID>, <recipient address>, <value to transfer>,
// <sender address of the cancel msg>, <method to call in the proposed message>, <params to include in the proposed message>
MsigCancel(context.Context, address.Address, uint64, address.Address, types.BigInt, address.Address, uint64, []byte) (cid.Cid, error) //perm:sign
// MsigAddPropose proposes adding a signer in the multisig
// It takes the following params: <multisig address>, <sender address of the propose msg>,
// <new signer>, <whether the number of required signers should be increased>
MsigAddPropose(context.Context, address.Address, address.Address, address.Address, bool) (cid.Cid, error) //perm:sign
// MsigAddApprove approves a previously proposed AddSigner message
// It takes the following params: <multisig address>, <sender address of the approve msg>, <proposed message ID>,
// <proposer address>, <new signer>, <whether the number of required signers should be increased>
MsigAddApprove(context.Context, address.Address, address.Address, uint64, address.Address, address.Address, bool) (cid.Cid, error) //perm:sign
// MsigAddCancel cancels a previously proposed AddSigner message
// It takes the following params: <multisig address>, <sender address of the cancel msg>, <proposed message ID>,
// <new signer>, <whether the number of required signers should be increased>
MsigAddCancel(context.Context, address.Address, address.Address, uint64, address.Address, bool) (cid.Cid, error) //perm:sign
// MsigSwapPropose proposes swapping 2 signers in the multisig
// It takes the following params: <multisig address>, <sender address of the propose msg>,
// <old signer>, <new signer>
MsigSwapPropose(context.Context, address.Address, address.Address, address.Address, address.Address) (cid.Cid, error) //perm:sign
// MsigSwapApprove approves a previously proposed SwapSigner
// It takes the following params: <multisig address>, <sender address of the approve msg>, <proposed message ID>,
// <proposer address>, <old signer>, <new signer>
MsigSwapApprove(context.Context, address.Address, address.Address, uint64, address.Address, address.Address, address.Address) (cid.Cid, error) //perm:sign
// MsigSwapCancel cancels a previously proposed SwapSigner message
// It takes the following params: <multisig address>, <sender address of the cancel msg>, <proposed message ID>,
// <old signer>, <new signer>
MsigSwapCancel(context.Context, address.Address, address.Address, uint64, address.Address, address.Address) (cid.Cid, error) //perm:sign
// MsigRemoveSigner proposes the removal of a signer from the multisig.
// It accepts the multisig to make the change on, the proposer address to
// send the message from, the address to be removed, and a boolean
// indicating whether or not the signing threshold should be lowered by one
// along with the address removal.
MsigRemoveSigner(ctx context.Context, msig address.Address, proposer address.Address, toRemove address.Address, decrease bool) (cid.Cid, error) //perm:sign
// MarketAddBalance adds funds to the market actor
MarketAddBalance(ctx context.Context, wallet, addr address.Address, amt types.BigInt) (cid.Cid, error) //perm:sign
// MarketGetReserved gets the amount of funds that are currently reserved for the address
MarketGetReserved(ctx context.Context, addr address.Address) (types.BigInt, error) //perm:sign
// MarketReserveFunds reserves funds for a deal
MarketReserveFunds(ctx context.Context, wallet address.Address, addr address.Address, amt types.BigInt) (cid.Cid, error) //perm:sign
// MarketReleaseFunds releases funds reserved by MarketReserveFunds
MarketReleaseFunds(ctx context.Context, addr address.Address, amt types.BigInt) error //perm:sign
// MarketWithdraw withdraws unlocked funds from the market actor
MarketWithdraw(ctx context.Context, wallet, addr address.Address, amt types.BigInt) (cid.Cid, error) //perm:sign
// MethodGroup: Paych
// The Paych methods are for interacting with and managing payment channels
PaychGet(ctx context.Context, from, to address.Address, amt types.BigInt) (*api.ChannelInfo, error) //perm:sign
PaychGetWaitReady(context.Context, cid.Cid) (address.Address, error) //perm:sign
PaychAvailableFunds(ctx context.Context, ch address.Address) (*api.ChannelAvailableFunds, error) //perm:sign
PaychAvailableFundsByFromTo(ctx context.Context, from, to address.Address) (*api.ChannelAvailableFunds, error) //perm:sign
PaychList(context.Context) ([]address.Address, error) //perm:read
PaychStatus(context.Context, address.Address) (*api.PaychStatus, error) //perm:read
PaychSettle(context.Context, address.Address) (cid.Cid, error) //perm:sign
PaychCollect(context.Context, address.Address) (cid.Cid, error) //perm:sign
PaychAllocateLane(ctx context.Context, ch address.Address) (uint64, error) //perm:sign
PaychNewPayment(ctx context.Context, from, to address.Address, vouchers []api.VoucherSpec) (*api.PaymentInfo, error) //perm:sign
PaychVoucherCheckValid(context.Context, address.Address, *paych.SignedVoucher) error //perm:read
PaychVoucherCheckSpendable(context.Context, address.Address, *paych.SignedVoucher, []byte, []byte) (bool, error) //perm:read
PaychVoucherCreate(context.Context, address.Address, types.BigInt, uint64) (*api.VoucherCreateResult, error) //perm:sign
PaychVoucherAdd(context.Context, address.Address, *paych.SignedVoucher, []byte, types.BigInt) (types.BigInt, error) //perm:write
PaychVoucherList(context.Context, address.Address) ([]*paych.SignedVoucher, error) //perm:write
PaychVoucherSubmit(context.Context, address.Address, *paych.SignedVoucher, []byte, []byte) (cid.Cid, error) //perm:sign
// CreateBackup creates node backup onder the specified file name. The
// method requires that the lotus daemon is running with the
// LOTUS_BACKUP_BASE_PATH environment variable set to some path, and that
// the path specified when calling CreateBackup is within the base path
CreateBackup(ctx context.Context, fpath string) error //perm:admin
}
func OfferOrder(o api.QueryOffer, client address.Address) RetrievalOrder {
return RetrievalOrder{
Root: o.Root,
Piece: o.Piece,
Size: o.Size,
Total: o.MinPrice,
UnsealPrice: o.UnsealPrice,
PaymentInterval: o.PaymentInterval,
PaymentIntervalIncrease: o.PaymentIntervalIncrease,
Client: client,
Miner: o.Miner,
MinerPeer: &o.MinerPeer,
}
}
type RetrievalOrder struct {
// TODO: make this less unixfs specific
Root cid.Cid
Piece *cid.Cid
DatamodelPathSelector *textselector.Expression
Size uint64
FromLocalCAR string // if specified, get data from a local CARv2 file.
// TODO: support offset
Total types.BigInt
UnsealPrice types.BigInt
PaymentInterval uint64
PaymentIntervalIncrease uint64
Client address.Address
Miner address.Address
MinerPeer *retrievalmarket.RetrievalPeer
}
+69
View File
@@ -0,0 +1,69 @@
package v0api
import (
"context"
"github.com/ipfs/go-cid"
"github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi"
"github.com/filecoin-project/go-state-types/dline"
abinetwork "github.com/filecoin-project/go-state-types/network"
"github.com/filecoin-project/lotus/api"
"github.com/filecoin-project/lotus/chain/actors/builtin/miner"
"github.com/filecoin-project/lotus/chain/types"
)
// MODIFYING THE API INTERFACE
//
// NOTE: This is the V0 (Stable) API - when adding methods to this interface,
// you'll need to make sure they are also present on the V1 (Unstable) API
//
// This API is implemented in `v1_wrapper.go` as a compatibility layer backed
// by the V1 api
//
// When adding / changing methods in this file:
// * Do the change here
// * Adjust implementation in `node/impl/`
// * Run `make gen` - this will:
// * Generate proxy structs
// * Generate mocks
// * Generate markdown docs
// * Generate openrpc blobs
type Gateway interface {
ChainHasObj(context.Context, cid.Cid) (bool, error)
ChainHead(ctx context.Context) (*types.TipSet, error)
ChainGetBlockMessages(context.Context, cid.Cid) (*api.BlockMessages, error)
ChainGetMessage(ctx context.Context, mc cid.Cid) (*types.Message, error)
ChainGetTipSet(ctx context.Context, tsk types.TipSetKey) (*types.TipSet, error)
ChainGetTipSetByHeight(ctx context.Context, h abi.ChainEpoch, tsk types.TipSetKey) (*types.TipSet, error)
ChainNotify(context.Context) (<-chan []*api.HeadChange, error)
ChainReadObj(context.Context, cid.Cid) ([]byte, error)
GasEstimateMessageGas(ctx context.Context, msg *types.Message, spec *api.MessageSendSpec, tsk types.TipSetKey) (*types.Message, error)
MpoolPush(ctx context.Context, sm *types.SignedMessage) (cid.Cid, error)
MsigGetAvailableBalance(ctx context.Context, addr address.Address, tsk types.TipSetKey) (types.BigInt, error)
MsigGetVested(ctx context.Context, addr address.Address, start types.TipSetKey, end types.TipSetKey) (types.BigInt, error)
MsigGetPending(context.Context, address.Address, types.TipSetKey) ([]*api.MsigTransaction, error)
StateAccountKey(ctx context.Context, addr address.Address, tsk types.TipSetKey) (address.Address, error)
StateDealProviderCollateralBounds(ctx context.Context, size abi.PaddedPieceSize, verified bool, tsk types.TipSetKey) (api.DealCollateralBounds, error)
StateGetActor(ctx context.Context, actor address.Address, ts types.TipSetKey) (*types.Actor, error)
StateGetReceipt(context.Context, cid.Cid, types.TipSetKey) (*types.MessageReceipt, error)
StateListMiners(ctx context.Context, tsk types.TipSetKey) ([]address.Address, error)
StateLookupID(ctx context.Context, addr address.Address, tsk types.TipSetKey) (address.Address, error)
StateMarketBalance(ctx context.Context, addr address.Address, tsk types.TipSetKey) (api.MarketBalance, error)
StateMarketStorageDeal(ctx context.Context, dealId abi.DealID, tsk types.TipSetKey) (*api.MarketDeal, error)
StateMinerInfo(ctx context.Context, actor address.Address, tsk types.TipSetKey) (miner.MinerInfo, error)
StateMinerProvingDeadline(ctx context.Context, addr address.Address, tsk types.TipSetKey) (*dline.Info, error)
StateMinerPower(context.Context, address.Address, types.TipSetKey) (*api.MinerPower, error)
StateNetworkVersion(context.Context, types.TipSetKey) (abinetwork.Version, error)
StateSearchMsg(ctx context.Context, msg cid.Cid) (*api.MsgLookup, error)
StateSectorGetInfo(ctx context.Context, maddr address.Address, n abi.SectorNumber, tsk types.TipSetKey) (*miner.SectorOnChainInfo, error)
StateVerifiedClientStatus(ctx context.Context, addr address.Address, tsk types.TipSetKey) (*abi.StoragePower, error)
StateWaitMsg(ctx context.Context, msg cid.Cid, confidence uint64) (*api.MsgLookup, error)
WalletBalance(context.Context, address.Address) (types.BigInt, error)
Version(context.Context) (api.APIVersion, error)
}
var _ Gateway = *new(FullNode)
+32
View File
@@ -0,0 +1,32 @@
package v0api
import (
"github.com/filecoin-project/lotus/api"
)
type Common = api.Common
type Net = api.Net
type CommonNet = api.CommonNet
type CommonStruct = api.CommonStruct
type CommonStub = api.CommonStub
type NetStruct = api.NetStruct
type NetStub = api.NetStub
type CommonNetStruct = api.CommonNetStruct
type CommonNetStub = api.CommonNetStub
type StorageMiner = api.StorageMiner
type StorageMinerStruct = api.StorageMinerStruct
type Worker = api.Worker
type WorkerStruct = api.WorkerStruct
type Wallet = api.Wallet
func PermissionedStorMinerAPI(a StorageMiner) StorageMiner {
return api.PermissionedStorMinerAPI(a)
}
func PermissionedWorkerAPI(a Worker) Worker {
return api.PermissionedWorkerAPI(a)
}
+13
View File
@@ -0,0 +1,13 @@
package v0api
import (
"github.com/filecoin-project/go-jsonrpc/auth"
"github.com/filecoin-project/lotus/api"
)
func PermissionedFullAPI(a FullNode) FullNode {
var out FullNodeStruct
auth.PermissionedProxy(api.AllPermissions, api.DefaultPerms, a, &out.Internal)
auth.PermissionedProxy(api.AllPermissions, api.DefaultPerms, a, &out.CommonStruct.Internal)
return &out
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+355
View File
@@ -0,0 +1,355 @@
package v0api
import (
"context"
"github.com/filecoin-project/go-fil-markets/storagemarket"
"github.com/libp2p/go-libp2p-core/peer"
"github.com/filecoin-project/go-fil-markets/retrievalmarket"
"github.com/filecoin-project/go-state-types/big"
"github.com/filecoin-project/go-state-types/crypto"
marketevents "github.com/filecoin-project/lotus/markets/loggers"
"github.com/filecoin-project/go-address"
"github.com/filecoin-project/lotus/chain/types"
"golang.org/x/xerrors"
"github.com/ipfs/go-cid"
"github.com/filecoin-project/go-state-types/abi"
"github.com/filecoin-project/lotus/api"
"github.com/filecoin-project/lotus/api/v1api"
)
type WrapperV1Full struct {
v1api.FullNode
}
func (w *WrapperV1Full) StateSearchMsg(ctx context.Context, msg cid.Cid) (*api.MsgLookup, error) {
return w.FullNode.StateSearchMsg(ctx, types.EmptyTSK, msg, api.LookbackNoLimit, true)
}
func (w *WrapperV1Full) StateSearchMsgLimited(ctx context.Context, msg cid.Cid, limit abi.ChainEpoch) (*api.MsgLookup, error) {
return w.FullNode.StateSearchMsg(ctx, types.EmptyTSK, msg, limit, true)
}
func (w *WrapperV1Full) StateWaitMsg(ctx context.Context, msg cid.Cid, confidence uint64) (*api.MsgLookup, error) {
return w.FullNode.StateWaitMsg(ctx, msg, confidence, api.LookbackNoLimit, true)
}
func (w *WrapperV1Full) StateWaitMsgLimited(ctx context.Context, msg cid.Cid, confidence uint64, limit abi.ChainEpoch) (*api.MsgLookup, error) {
return w.FullNode.StateWaitMsg(ctx, msg, confidence, limit, true)
}
func (w *WrapperV1Full) StateGetReceipt(ctx context.Context, msg cid.Cid, from types.TipSetKey) (*types.MessageReceipt, error) {
ml, err := w.FullNode.StateSearchMsg(ctx, from, msg, api.LookbackNoLimit, true)
if err != nil {
return nil, err
}
if ml == nil {
return nil, nil
}
return &ml.Receipt, nil
}
func (w *WrapperV1Full) Version(ctx context.Context) (api.APIVersion, error) {
ver, err := w.FullNode.Version(ctx)
if err != nil {
return api.APIVersion{}, err
}
ver.APIVersion = api.FullAPIVersion0
return ver, nil
}
func (w *WrapperV1Full) executePrototype(ctx context.Context, p *api.MessagePrototype) (cid.Cid, error) {
sm, err := w.FullNode.MpoolPushMessage(ctx, &p.Message, nil)
if err != nil {
return cid.Undef, xerrors.Errorf("pushing message: %w", err)
}
return sm.Cid(), nil
}
func (w *WrapperV1Full) MsigCreate(ctx context.Context, req uint64, addrs []address.Address, duration abi.ChainEpoch, val types.BigInt, src address.Address, gp types.BigInt) (cid.Cid, error) {
p, err := w.FullNode.MsigCreate(ctx, req, addrs, duration, val, src, gp)
if err != nil {
return cid.Undef, xerrors.Errorf("creating prototype: %w", err)
}
return w.executePrototype(ctx, p)
}
func (w *WrapperV1Full) MsigPropose(ctx context.Context, msig address.Address, to address.Address, amt types.BigInt, src address.Address, method uint64, params []byte) (cid.Cid, error) {
p, err := w.FullNode.MsigPropose(ctx, msig, to, amt, src, method, params)
if err != nil {
return cid.Undef, xerrors.Errorf("creating prototype: %w", err)
}
return w.executePrototype(ctx, p)
}
func (w *WrapperV1Full) MsigApprove(ctx context.Context, msig address.Address, txID uint64, src address.Address) (cid.Cid, error) {
p, err := w.FullNode.MsigApprove(ctx, msig, txID, src)
if err != nil {
return cid.Undef, xerrors.Errorf("creating prototype: %w", err)
}
return w.executePrototype(ctx, p)
}
func (w *WrapperV1Full) MsigApproveTxnHash(ctx context.Context, msig address.Address, txID uint64, proposer address.Address, to address.Address, amt types.BigInt, src address.Address, method uint64, params []byte) (cid.Cid, error) {
p, err := w.FullNode.MsigApproveTxnHash(ctx, msig, txID, proposer, to, amt, src, method, params)
if err != nil {
return cid.Undef, xerrors.Errorf("creating prototype: %w", err)
}
return w.executePrototype(ctx, p)
}
func (w *WrapperV1Full) MsigCancel(ctx context.Context, msig address.Address, txID uint64, to address.Address, amt types.BigInt, src address.Address, method uint64, params []byte) (cid.Cid, error) {
p, err := w.FullNode.MsigCancelTxnHash(ctx, msig, txID, to, amt, src, method, params)
if err != nil {
return cid.Undef, xerrors.Errorf("creating prototype: %w", err)
}
return w.executePrototype(ctx, p)
}
func (w *WrapperV1Full) MsigAddPropose(ctx context.Context, msig address.Address, src address.Address, newAdd address.Address, inc bool) (cid.Cid, error) {
p, err := w.FullNode.MsigAddPropose(ctx, msig, src, newAdd, inc)
if err != nil {
return cid.Undef, xerrors.Errorf("creating prototype: %w", err)
}
return w.executePrototype(ctx, p)
}
func (w *WrapperV1Full) MsigAddApprove(ctx context.Context, msig address.Address, src address.Address, txID uint64, proposer address.Address, newAdd address.Address, inc bool) (cid.Cid, error) {
p, err := w.FullNode.MsigAddApprove(ctx, msig, src, txID, proposer, newAdd, inc)
if err != nil {
return cid.Undef, xerrors.Errorf("creating prototype: %w", err)
}
return w.executePrototype(ctx, p)
}
func (w *WrapperV1Full) MsigAddCancel(ctx context.Context, msig address.Address, src address.Address, txID uint64, newAdd address.Address, inc bool) (cid.Cid, error) {
p, err := w.FullNode.MsigAddCancel(ctx, msig, src, txID, newAdd, inc)
if err != nil {
return cid.Undef, xerrors.Errorf("creating prototype: %w", err)
}
return w.executePrototype(ctx, p)
}
func (w *WrapperV1Full) MsigSwapPropose(ctx context.Context, msig address.Address, src address.Address, oldAdd address.Address, newAdd address.Address) (cid.Cid, error) {
p, err := w.FullNode.MsigSwapPropose(ctx, msig, src, oldAdd, newAdd)
if err != nil {
return cid.Undef, xerrors.Errorf("creating prototype: %w", err)
}
return w.executePrototype(ctx, p)
}
func (w *WrapperV1Full) MsigSwapApprove(ctx context.Context, msig address.Address, src address.Address, txID uint64, proposer address.Address, oldAdd address.Address, newAdd address.Address) (cid.Cid, error) {
p, err := w.FullNode.MsigSwapApprove(ctx, msig, src, txID, proposer, oldAdd, newAdd)
if err != nil {
return cid.Undef, xerrors.Errorf("creating prototype: %w", err)
}
return w.executePrototype(ctx, p)
}
func (w *WrapperV1Full) MsigSwapCancel(ctx context.Context, msig address.Address, src address.Address, txID uint64, oldAdd address.Address, newAdd address.Address) (cid.Cid, error) {
p, err := w.FullNode.MsigSwapCancel(ctx, msig, src, txID, oldAdd, newAdd)
if err != nil {
return cid.Undef, xerrors.Errorf("creating prototype: %w", err)
}
return w.executePrototype(ctx, p)
}
func (w *WrapperV1Full) MsigRemoveSigner(ctx context.Context, msig address.Address, proposer address.Address, toRemove address.Address, decrease bool) (cid.Cid, error) {
p, err := w.FullNode.MsigRemoveSigner(ctx, msig, proposer, toRemove, decrease)
if err != nil {
return cid.Undef, xerrors.Errorf("creating prototype: %w", err)
}
return w.executePrototype(ctx, p)
}
func (w *WrapperV1Full) ChainGetRandomnessFromTickets(ctx context.Context, tsk types.TipSetKey, personalization crypto.DomainSeparationTag, randEpoch abi.ChainEpoch, entropy []byte) (abi.Randomness, error) {
return w.StateGetRandomnessFromTickets(ctx, personalization, randEpoch, entropy, tsk)
}
func (w *WrapperV1Full) ChainGetRandomnessFromBeacon(ctx context.Context, tsk types.TipSetKey, personalization crypto.DomainSeparationTag, randEpoch abi.ChainEpoch, entropy []byte) (abi.Randomness, error) {
return w.StateGetRandomnessFromBeacon(ctx, personalization, randEpoch, entropy, tsk)
}
func (w *WrapperV1Full) ClientRetrieve(ctx context.Context, order RetrievalOrder, ref *api.FileRef) error {
events := make(chan marketevents.RetrievalEvent)
go w.clientRetrieve(ctx, order, ref, events)
for {
select {
case evt, ok := <-events:
if !ok { // done successfully
return nil
}
if evt.Err != "" {
return xerrors.Errorf("retrieval failed: %s", evt.Err)
}
case <-ctx.Done():
return xerrors.Errorf("retrieval timed out")
}
}
}
func (w *WrapperV1Full) ClientRetrieveWithEvents(ctx context.Context, order RetrievalOrder, ref *api.FileRef) (<-chan marketevents.RetrievalEvent, error) {
events := make(chan marketevents.RetrievalEvent)
go w.clientRetrieve(ctx, order, ref, events)
return events, nil
}
func readSubscribeEvents(ctx context.Context, dealID retrievalmarket.DealID, subscribeEvents <-chan api.RetrievalInfo, events chan marketevents.RetrievalEvent) error {
for {
var subscribeEvent api.RetrievalInfo
var evt retrievalmarket.ClientEvent
select {
case <-ctx.Done():
return xerrors.New("Retrieval Timed Out")
case subscribeEvent = <-subscribeEvents:
if subscribeEvent.ID != dealID {
// we can't check the deal ID ahead of time because:
// 1. We need to subscribe before retrieving.
// 2. We won't know the deal ID until after retrieving.
continue
}
if subscribeEvent.Event != nil {
evt = *subscribeEvent.Event
}
}
select {
case <-ctx.Done():
return xerrors.New("Retrieval Timed Out")
case events <- marketevents.RetrievalEvent{
Event: evt,
Status: subscribeEvent.Status,
BytesReceived: subscribeEvent.BytesReceived,
FundsSpent: subscribeEvent.TotalPaid,
}:
}
switch subscribeEvent.Status {
case retrievalmarket.DealStatusCompleted:
return nil
case retrievalmarket.DealStatusRejected:
return xerrors.Errorf("Retrieval Proposal Rejected: %s", subscribeEvent.Message)
case
retrievalmarket.DealStatusDealNotFound,
retrievalmarket.DealStatusErrored:
return xerrors.Errorf("Retrieval Error: %s", subscribeEvent.Message)
}
}
}
func (w *WrapperV1Full) clientRetrieve(ctx context.Context, order RetrievalOrder, ref *api.FileRef, events chan marketevents.RetrievalEvent) {
defer close(events)
finish := func(e error) {
if e != nil {
events <- marketevents.RetrievalEvent{Err: e.Error(), FundsSpent: big.Zero()}
}
}
var dealID retrievalmarket.DealID
if order.FromLocalCAR == "" {
// Subscribe to events before retrieving to avoid losing events.
subscribeCtx, cancel := context.WithCancel(ctx)
defer cancel()
retrievalEvents, err := w.ClientGetRetrievalUpdates(subscribeCtx)
if err != nil {
finish(xerrors.Errorf("GetRetrievalUpdates failed: %w", err))
return
}
retrievalRes, err := w.FullNode.ClientRetrieve(ctx, api.RetrievalOrder{
Root: order.Root,
Piece: order.Piece,
Size: order.Size,
Total: order.Total,
UnsealPrice: order.UnsealPrice,
PaymentInterval: order.PaymentInterval,
PaymentIntervalIncrease: order.PaymentIntervalIncrease,
Client: order.Client,
Miner: order.Miner,
MinerPeer: order.MinerPeer,
})
if err != nil {
finish(xerrors.Errorf("Retrieve failed: %w", err))
return
}
dealID = retrievalRes.DealID
err = readSubscribeEvents(ctx, retrievalRes.DealID, retrievalEvents, events)
if err != nil {
finish(xerrors.Errorf("Retrieve: %w", err))
return
}
}
// If ref is nil, it only fetches the data into the configured blockstore.
if ref == nil {
finish(nil)
return
}
eref := api.ExportRef{
Root: order.Root,
FromLocalCAR: order.FromLocalCAR,
DealID: dealID,
}
if order.DatamodelPathSelector != nil {
s := api.Selector(*order.DatamodelPathSelector)
eref.DAGs = append(eref.DAGs, api.DagSpec{
DataSelector: &s,
ExportMerkleProof: true,
})
}
finish(w.ClientExport(ctx, eref, *ref))
}
func (w *WrapperV1Full) PaychGet(ctx context.Context, from, to address.Address, amt types.BigInt) (*api.ChannelInfo, error) {
return w.FullNode.PaychFund(ctx, from, to, amt)
}
func (w *WrapperV1Full) ClientQueryAsk(ctx context.Context, p peer.ID, miner address.Address) (*storagemarket.StorageAsk, error) {
a, err := w.FullNode.ClientQueryAsk(ctx, p, miner)
if err != nil {
return nil, err
}
return a.Response, nil
}
var _ FullNode = &WrapperV1Full{}
+12
View File
@@ -0,0 +1,12 @@
package v1api
import (
"github.com/filecoin-project/lotus/api"
)
type FullNode = api.FullNode
type FullNodeStruct = api.FullNodeStruct
func PermissionedFullAPI(a FullNode) FullNode {
return api.PermissionedFullAPI(a)
}
+8 -6
View File
@@ -42,11 +42,11 @@ var RunningNodeType NodeType
func VersionForType(nodeType NodeType) (Version, error) {
switch nodeType {
case NodeFull:
return FullAPIVersion, nil
return FullAPIVersion1, nil
case NodeMiner:
return MinerAPIVersion, nil
return MinerAPIVersion0, nil
case NodeWorker:
return WorkerAPIVersion, nil
return WorkerAPIVersion0, nil
default:
return Version(0), xerrors.Errorf("unknown node type %d", nodeType)
}
@@ -54,9 +54,11 @@ func VersionForType(nodeType NodeType) (Version, error) {
// semver versions of the rpc api exposed
var (
FullAPIVersion = newVer(1, 2, 0)
MinerAPIVersion = newVer(1, 0, 1)
WorkerAPIVersion = newVer(1, 0, 0)
FullAPIVersion0 = newVer(1, 5, 0)
FullAPIVersion1 = newVer(2, 2, 0)
MinerAPIVersion0 = newVer(1, 5, 0)
WorkerAPIVersion0 = newVer(1, 6, 0)
)
//nolint:varcheck,deadcode
+53
View File
@@ -0,0 +1,53 @@
package api
import (
"reflect"
)
// Wrap adapts partial api impl to another version
// proxyT is the proxy type used as input in wrapperT
// Usage: Wrap(new(v1api.FullNodeStruct), new(v0api.WrapperV1Full), eventsApi).(EventAPI)
func Wrap(proxyT, wrapperT, impl interface{}) interface{} {
proxy := reflect.New(reflect.TypeOf(proxyT).Elem())
proxyMethods := proxy.Elem().FieldByName("Internal")
ri := reflect.ValueOf(impl)
for i := 0; i < ri.NumMethod(); i++ {
mt := ri.Type().Method(i)
if proxyMethods.FieldByName(mt.Name).Kind() == reflect.Invalid {
continue
}
fn := ri.Method(i)
of := proxyMethods.FieldByName(mt.Name)
proxyMethods.FieldByName(mt.Name).Set(reflect.MakeFunc(of.Type(), func(args []reflect.Value) (results []reflect.Value) {
return fn.Call(args)
}))
}
for i := 0; i < proxy.Elem().NumField(); i++ {
if proxy.Elem().Type().Field(i).Name == "Internal" {
continue
}
subProxy := proxy.Elem().Field(i).FieldByName("Internal")
for i := 0; i < ri.NumMethod(); i++ {
mt := ri.Type().Method(i)
if subProxy.FieldByName(mt.Name).Kind() == reflect.Invalid {
continue
}
fn := ri.Method(i)
of := subProxy.FieldByName(mt.Name)
subProxy.FieldByName(mt.Name).Set(reflect.MakeFunc(of.Type(), func(args []reflect.Value) (results []reflect.Value) {
return fn.Call(args)
}))
}
}
wp := reflect.New(reflect.TypeOf(wrapperT).Elem())
wp.Elem().Field(0).Set(proxy)
return wp.Interface()
}
+9 -9
View File
@@ -25,35 +25,35 @@ func NewAPIBlockstore(cio ChainIO) Blockstore {
return Adapt(bs) // return an adapted blockstore.
}
func (a *apiBlockstore) DeleteBlock(cid.Cid) error {
func (a *apiBlockstore) DeleteBlock(context.Context, cid.Cid) error {
return xerrors.New("not supported")
}
func (a *apiBlockstore) Has(c cid.Cid) (bool, error) {
return a.api.ChainHasObj(context.TODO(), c)
func (a *apiBlockstore) Has(ctx context.Context, c cid.Cid) (bool, error) {
return a.api.ChainHasObj(ctx, c)
}
func (a *apiBlockstore) Get(c cid.Cid) (blocks.Block, error) {
bb, err := a.api.ChainReadObj(context.TODO(), c)
func (a *apiBlockstore) Get(ctx context.Context, c cid.Cid) (blocks.Block, error) {
bb, err := a.api.ChainReadObj(ctx, c)
if err != nil {
return nil, err
}
return blocks.NewBlockWithCid(bb, c)
}
func (a *apiBlockstore) GetSize(c cid.Cid) (int, error) {
bb, err := a.api.ChainReadObj(context.TODO(), c)
func (a *apiBlockstore) GetSize(ctx context.Context, c cid.Cid) (int, error) {
bb, err := a.api.ChainReadObj(ctx, c)
if err != nil {
return 0, err
}
return len(bb), nil
}
func (a *apiBlockstore) Put(blocks.Block) error {
func (a *apiBlockstore) Put(context.Context, blocks.Block) error {
return xerrors.New("not supported")
}
func (a *apiBlockstore) PutMany([]blocks.Block) error {
func (a *apiBlockstore) PutMany(context.Context, []blocks.Block) error {
return xerrors.New("not supported")
}
+262
View File
@@ -0,0 +1,262 @@
package blockstore
import (
"context"
"sync"
"time"
"golang.org/x/xerrors"
block "github.com/ipfs/go-block-format"
"github.com/ipfs/go-cid"
)
// autolog is a logger for the autobatching blockstore. It is subscoped from the
// blockstore logger.
var autolog = log.Named("auto")
// contains the same set of blocks twice, once as an ordered list for flushing, and as a map for fast access
type blockBatch struct {
blockList []block.Block
blockMap map[cid.Cid]block.Block
}
type AutobatchBlockstore struct {
// TODO: drop if memory consumption is too high
addedCids map[cid.Cid]struct{}
stateLock sync.Mutex
bufferedBatch blockBatch
flushingBatch blockBatch
flushErr error
flushCh chan struct{}
doFlushLock sync.Mutex
flushRetryDelay time.Duration
doneCh chan struct{}
shutdown context.CancelFunc
backingBs Blockstore
bufferCapacity int
bufferSize int
}
func NewAutobatch(ctx context.Context, backingBs Blockstore, bufferCapacity int) *AutobatchBlockstore {
ctx, cancel := context.WithCancel(ctx)
bs := &AutobatchBlockstore{
addedCids: make(map[cid.Cid]struct{}),
backingBs: backingBs,
bufferCapacity: bufferCapacity,
flushCh: make(chan struct{}, 1),
doneCh: make(chan struct{}),
// could be made configable
flushRetryDelay: time.Millisecond * 100,
shutdown: cancel,
}
bs.bufferedBatch.blockMap = make(map[cid.Cid]block.Block)
go bs.flushWorker(ctx)
return bs
}
func (bs *AutobatchBlockstore) Put(ctx context.Context, blk block.Block) error {
bs.stateLock.Lock()
defer bs.stateLock.Unlock()
_, ok := bs.addedCids[blk.Cid()]
if !ok {
bs.addedCids[blk.Cid()] = struct{}{}
bs.bufferedBatch.blockList = append(bs.bufferedBatch.blockList, blk)
bs.bufferedBatch.blockMap[blk.Cid()] = blk
bs.bufferSize += len(blk.RawData())
if bs.bufferSize >= bs.bufferCapacity {
// signal that a flush is appropriate, may be ignored
select {
case bs.flushCh <- struct{}{}:
default:
// do nothing
}
}
}
return nil
}
func (bs *AutobatchBlockstore) flushWorker(ctx context.Context) {
defer close(bs.doneCh)
for {
select {
case <-bs.flushCh:
// TODO: check if we _should_ actually flush. We could get a spurious wakeup
// here.
putErr := bs.doFlush(ctx, false)
for putErr != nil {
select {
case <-ctx.Done():
return
case <-time.After(bs.flushRetryDelay):
autolog.Errorf("FLUSH ERRORED: %w, retrying after %v", putErr, bs.flushRetryDelay)
putErr = bs.doFlush(ctx, true)
}
}
case <-ctx.Done():
// Do one last flush.
_ = bs.doFlush(ctx, false)
return
}
}
}
// caller must NOT hold stateLock
// set retryOnly to true to only retry a failed flush and not flush anything new.
func (bs *AutobatchBlockstore) doFlush(ctx context.Context, retryOnly bool) error {
bs.doFlushLock.Lock()
defer bs.doFlushLock.Unlock()
// If we failed to flush last time, try flushing again.
if bs.flushErr != nil {
bs.flushErr = bs.backingBs.PutMany(ctx, bs.flushingBatch.blockList)
}
// If we failed, or we're _only_ retrying, bail.
if retryOnly || bs.flushErr != nil {
return bs.flushErr
}
// Then take the current batch...
bs.stateLock.Lock()
// We do NOT clear addedCids here, because its purpose is to expedite Puts
bs.flushingBatch = bs.bufferedBatch
bs.bufferedBatch.blockList = make([]block.Block, 0, len(bs.flushingBatch.blockList))
bs.bufferedBatch.blockMap = make(map[cid.Cid]block.Block, len(bs.flushingBatch.blockMap))
bs.stateLock.Unlock()
// And try to flush it.
bs.flushErr = bs.backingBs.PutMany(ctx, bs.flushingBatch.blockList)
// If we succeeded, reset the batch. Otherwise, we'll try again next time.
if bs.flushErr == nil {
bs.stateLock.Lock()
bs.flushingBatch = blockBatch{}
bs.stateLock.Unlock()
}
return bs.flushErr
}
// caller must NOT hold stateLock
func (bs *AutobatchBlockstore) Flush(ctx context.Context) error {
return bs.doFlush(ctx, false)
}
func (bs *AutobatchBlockstore) Shutdown(ctx context.Context) error {
// TODO: Prevent puts after we call this to avoid losing data.
bs.shutdown()
select {
case <-bs.doneCh:
case <-ctx.Done():
return ctx.Err()
}
bs.doFlushLock.Lock()
defer bs.doFlushLock.Unlock()
return bs.flushErr
}
func (bs *AutobatchBlockstore) Get(ctx context.Context, c cid.Cid) (block.Block, error) {
// may seem backward to check the backingBs first, but that is the likeliest case
blk, err := bs.backingBs.Get(ctx, c)
if err == nil {
return blk, nil
}
if err != ErrNotFound {
return blk, err
}
bs.stateLock.Lock()
defer bs.stateLock.Unlock()
v, ok := bs.flushingBatch.blockMap[c]
if ok {
return v, nil
}
v, ok = bs.bufferedBatch.blockMap[c]
if ok {
return v, nil
}
return bs.Get(ctx, c)
}
func (bs *AutobatchBlockstore) DeleteBlock(context.Context, cid.Cid) error {
// if we wanted to support this, we would have to:
// - flush
// - delete from the backingBs (if present)
// - remove from addedCids (if present)
// - if present in addedCids, also walk the ordered lists and remove if present
return xerrors.New("deletion is unsupported")
}
func (bs *AutobatchBlockstore) DeleteMany(ctx context.Context, cids []cid.Cid) error {
// see note in DeleteBlock()
return xerrors.New("deletion is unsupported")
}
func (bs *AutobatchBlockstore) Has(ctx context.Context, c cid.Cid) (bool, error) {
_, err := bs.Get(ctx, c)
if err == nil {
return true, nil
}
if err == ErrNotFound {
return false, nil
}
return false, err
}
func (bs *AutobatchBlockstore) GetSize(ctx context.Context, c cid.Cid) (int, error) {
blk, err := bs.Get(ctx, c)
if err != nil {
return 0, err
}
return len(blk.RawData()), nil
}
func (bs *AutobatchBlockstore) PutMany(ctx context.Context, blks []block.Block) error {
for _, blk := range blks {
if err := bs.Put(ctx, blk); err != nil {
return err
}
}
return nil
}
func (bs *AutobatchBlockstore) AllKeysChan(ctx context.Context) (<-chan cid.Cid, error) {
if err := bs.Flush(ctx); err != nil {
return nil, err
}
return bs.backingBs.AllKeysChan(ctx)
}
func (bs *AutobatchBlockstore) HashOnRead(enabled bool) {
bs.backingBs.HashOnRead(enabled)
}
func (bs *AutobatchBlockstore) View(ctx context.Context, cid cid.Cid, callback func([]byte) error) error {
blk, err := bs.Get(ctx, cid)
if err != nil {
return err
}
return callback(blk.RawData())
}
+34
View File
@@ -0,0 +1,34 @@
package blockstore
import (
"context"
"testing"
"github.com/stretchr/testify/require"
)
func TestAutobatchBlockstore(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
ab := NewAutobatch(ctx, NewMemory(), len(b0.RawData())+len(b1.RawData())-1)
require.NoError(t, ab.Put(ctx, b0))
require.NoError(t, ab.Put(ctx, b1))
require.NoError(t, ab.Put(ctx, b2))
v0, err := ab.Get(ctx, b0.Cid())
require.NoError(t, err)
require.Equal(t, b0.RawData(), v0.RawData())
v1, err := ab.Get(ctx, b1.Cid())
require.NoError(t, err)
require.Equal(t, b1.RawData(), v1.RawData())
v2, err := ab.Get(ctx, b2.Cid())
require.NoError(t, err)
require.Equal(t, b2.RawData(), v2.RawData())
require.NoError(t, ab.Flush(ctx))
require.NoError(t, ab.Shutdown(ctx))
}
+575 -71
View File
@@ -4,10 +4,15 @@ import (
"context"
"fmt"
"io"
"sync/atomic"
"os"
"path/filepath"
"runtime"
"sync"
"time"
"github.com/dgraph-io/badger/v2"
"github.com/dgraph-io/badger/v2/options"
"github.com/dgraph-io/badger/v2/pb"
"github.com/multiformats/go-base32"
"go.uber.org/zap"
@@ -71,23 +76,45 @@ func (b *badgerLogger) Warningf(format string, args ...interface{}) {
b.skip2.Warnf(format, args...)
}
// bsState is the current blockstore state
type bsState int
const (
stateOpen int64 = iota
// stateOpen signifies an open blockstore
stateOpen bsState = iota
// stateClosing signifies a blockstore that is currently closing
stateClosing
// stateClosed signifies a blockstore that has been colosed
stateClosed
)
// Blockstore is a badger-backed IPLD blockstore.
//
// NOTE: once Close() is called, methods will try their best to return
// ErrBlockstoreClosed. This will guaranteed to happen for all subsequent
// operation calls after Close() has returned, but it may not happen for
// operations in progress. Those are likely to fail with a different error.
type Blockstore struct {
DB *badger.DB
type bsMoveState int
// state is guarded by atomic.
state int64
const (
// moveStateNone signifies that there is no move in progress
moveStateNone bsMoveState = iota
// moveStateMoving signifies that there is a move in a progress
moveStateMoving
// moveStateCleanup signifies that a move has completed or aborted and we are cleaning up
moveStateCleanup
// moveStateLock signifies that an exclusive lock has been acquired
moveStateLock
)
// Blockstore is a badger-backed IPLD blockstore.
type Blockstore struct {
stateLk sync.RWMutex
state bsState
viewers sync.WaitGroup
moveMx sync.Mutex
moveCond sync.Cond
moveState bsMoveState
rlock int
db *badger.DB
dbNext *badger.DB // when moving
opts Options
prefixing bool
prefix []byte
@@ -96,6 +123,9 @@ type Blockstore struct {
var _ blockstore.Blockstore = (*Blockstore)(nil)
var _ blockstore.Viewer = (*Blockstore)(nil)
var _ blockstore.BlockstoreIterator = (*Blockstore)(nil)
var _ blockstore.BlockstoreGC = (*Blockstore)(nil)
var _ blockstore.BlockstoreSize = (*Blockstore)(nil)
var _ io.Closer = (*Blockstore)(nil)
// Open creates a new badger-backed blockstore, with the supplied options.
@@ -110,59 +140,406 @@ func Open(opts Options) (*Blockstore, error) {
return nil, fmt.Errorf("failed to open badger blockstore: %w", err)
}
bs := &Blockstore{DB: db}
bs := &Blockstore{db: db, opts: opts}
if p := opts.Prefix; p != "" {
bs.prefixing = true
bs.prefix = []byte(p)
bs.prefixLen = len(bs.prefix)
}
bs.moveCond.L = &bs.moveMx
return bs, nil
}
// Close closes the store. If the store has already been closed, this noops and
// returns an error, even if the first closure resulted in error.
func (b *Blockstore) Close() error {
if !atomic.CompareAndSwapInt64(&b.state, stateOpen, stateClosing) {
b.stateLk.Lock()
if b.state != stateOpen {
b.stateLk.Unlock()
return nil
}
b.state = stateClosing
b.stateLk.Unlock()
defer atomic.StoreInt64(&b.state, stateClosed)
return b.DB.Close()
defer func() {
b.stateLk.Lock()
b.state = stateClosed
b.stateLk.Unlock()
}()
// wait for all accesses to complete
b.viewers.Wait()
return b.db.Close()
}
// CollectGarbage runs garbage collection on the value log
func (b *Blockstore) CollectGarbage() error {
if atomic.LoadInt64(&b.state) != stateOpen {
func (b *Blockstore) access() error {
b.stateLk.RLock()
defer b.stateLk.RUnlock()
if b.state != stateOpen {
return ErrBlockstoreClosed
}
var err error
b.viewers.Add(1)
return nil
}
func (b *Blockstore) isOpen() bool {
b.stateLk.RLock()
defer b.stateLk.RUnlock()
return b.state == stateOpen
}
// lockDB/unlockDB implement a recursive lock contingent on move state
func (b *Blockstore) lockDB() {
b.moveMx.Lock()
defer b.moveMx.Unlock()
if b.rlock == 0 {
for b.moveState == moveStateLock {
b.moveCond.Wait()
}
}
b.rlock++
}
func (b *Blockstore) unlockDB() {
b.moveMx.Lock()
defer b.moveMx.Unlock()
b.rlock--
if b.rlock == 0 && b.moveState == moveStateLock {
b.moveCond.Broadcast()
}
}
// lockMove/unlockMove implement an exclusive lock of move state
func (b *Blockstore) lockMove() {
b.moveMx.Lock()
b.moveState = moveStateLock
for b.rlock > 0 {
b.moveCond.Wait()
}
}
func (b *Blockstore) unlockMove(state bsMoveState) {
b.moveState = state
b.moveCond.Broadcast()
b.moveMx.Unlock()
}
// movingGC moves the blockstore to a new path, adjacent to the current path, and creates
// a symlink from the current path to the new path; the old blockstore is deleted.
//
// The blockstore MUST accept new writes during the move and ensure that these
// are persisted to the new blockstore; if a failure occurs aboring the move,
// then they must be peristed to the old blockstore.
// In short, the blockstore must not lose data from new writes during the move.
func (b *Blockstore) movingGC() error {
// this inlines moveLock/moveUnlock for the initial state check to prevent a second move
// while one is in progress without clobbering state
b.moveMx.Lock()
if b.moveState != moveStateNone {
b.moveMx.Unlock()
return fmt.Errorf("move in progress")
}
b.moveState = moveStateLock
for b.rlock > 0 {
b.moveCond.Wait()
}
b.moveState = moveStateMoving
b.moveCond.Broadcast()
b.moveMx.Unlock()
var newPath string
defer func() {
b.lockMove()
dbNext := b.dbNext
b.dbNext = nil
var state bsMoveState
if dbNext != nil {
state = moveStateCleanup
} else {
state = moveStateNone
}
b.unlockMove(state)
if dbNext != nil {
// the move failed and we have a left-over db; delete it.
err := dbNext.Close()
if err != nil {
log.Warnf("error closing badger db: %s", err)
}
b.deleteDB(newPath)
b.lockMove()
b.unlockMove(moveStateNone)
}
}()
// we resolve symlinks to create the new path in the adjacent to the old path.
// this allows the user to symlink the db directory into a separate filesystem.
basePath := b.opts.Dir
linkPath, err := filepath.EvalSymlinks(basePath)
if err != nil {
return fmt.Errorf("error resolving symlink %s: %w", basePath, err)
}
if basePath == linkPath {
newPath = basePath
} else {
// we do this dance to create a name adjacent to the current one, while avoiding clown
// shoes with multiple moves (i.e. we can't just take the basename of the linkPath, as it
// could have been created in a previous move and have the timestamp suffix, which would then
// perpetuate itself.
name := filepath.Base(basePath)
dir := filepath.Dir(linkPath)
newPath = filepath.Join(dir, name)
}
newPath = fmt.Sprintf("%s.%d", newPath, time.Now().UnixNano())
log.Infof("moving blockstore from %s to %s", b.opts.Dir, newPath)
opts := b.opts
opts.Dir = newPath
opts.ValueDir = newPath
dbNew, err := badger.Open(opts.Options)
if err != nil {
return fmt.Errorf("failed to open badger blockstore in %s: %w", newPath, err)
}
b.lockMove()
b.dbNext = dbNew
b.unlockMove(moveStateMoving)
log.Info("copying blockstore")
err = b.doCopy(b.db, b.dbNext)
if err != nil {
return fmt.Errorf("error moving badger blockstore to %s: %w", newPath, err)
}
b.lockMove()
dbOld := b.db
b.db = b.dbNext
b.dbNext = nil
b.unlockMove(moveStateCleanup)
err = dbOld.Close()
if err != nil {
log.Warnf("error closing old badger db: %s", err)
}
// this is the canonical db path; this is where our db lives.
dbPath := b.opts.Dir
// we first move the existing db out of the way, and only delete it after we have symlinked the
// new db to the canonical path
backupPath := fmt.Sprintf("%s.old.%d", dbPath, time.Now().Unix())
if err = os.Rename(dbPath, backupPath); err != nil {
// this is not catastrophic in the sense that we have not lost any data.
// but it is pretty bad, as the db path points to the old db, while we are now using to the new
// db; we can't continue and leave a ticking bomb for the next restart.
// so a panic is appropriate and user can fix.
panic(fmt.Errorf("error renaming old badger db dir from %s to %s: %w; USER ACTION REQUIRED", dbPath, backupPath, err)) //nolint
}
if err = symlink(newPath, dbPath); err != nil {
// same here; the db path is pointing to the void. panic and let the user fix.
panic(fmt.Errorf("error symlinking new badger db dir from %s to %s: %w; USER ACTION REQUIRED", newPath, dbPath, err)) //nolint
}
// the delete follows symlinks
b.deleteDB(backupPath)
log.Info("moving blockstore done")
return nil
}
// symlink creates a symlink from path to linkTo; the link is relative if the two are
// in the same directory
func symlink(path, linkTo string) error {
resolvedPathDir, err := filepath.EvalSymlinks(filepath.Dir(path))
if err != nil {
return fmt.Errorf("error resolving links in %s: %w", path, err)
}
resolvedLinkDir, err := filepath.EvalSymlinks(filepath.Dir(linkTo))
if err != nil {
return fmt.Errorf("error resolving links in %s: %w", linkTo, err)
}
if resolvedPathDir == resolvedLinkDir {
path = filepath.Base(path)
}
return os.Symlink(path, linkTo)
}
// doCopy copies a badger blockstore to another, with an optional filter; if the filter
// is not nil, then only cids that satisfy the filter will be copied.
func (b *Blockstore) doCopy(from, to *badger.DB) error {
workers := runtime.NumCPU() / 2
if workers < 2 {
workers = 2
}
stream := from.NewStream()
stream.NumGo = workers
stream.LogPrefix = "doCopy"
stream.Send = func(list *pb.KVList) error {
batch := to.NewWriteBatch()
defer batch.Cancel()
for _, kv := range list.Kv {
if kv.Key == nil || kv.Value == nil {
continue
}
if err := batch.Set(kv.Key, kv.Value); err != nil {
return err
}
}
return batch.Flush()
}
return stream.Orchestrate(context.Background())
}
func (b *Blockstore) deleteDB(path string) {
// follow symbolic links, otherwise the data wil be left behind
linkPath, err := filepath.EvalSymlinks(path)
if err != nil {
log.Warnf("error resolving symlinks in %s", path)
return
}
log.Infof("removing data directory %s", linkPath)
if err := os.RemoveAll(linkPath); err != nil {
log.Warnf("error deleting db at %s: %s", linkPath, err)
return
}
if path != linkPath {
log.Infof("removing link %s", path)
if err := os.Remove(path); err != nil {
log.Warnf("error removing symbolic link %s", err)
}
}
}
func (b *Blockstore) onlineGC() error {
b.lockDB()
defer b.unlockDB()
// compact first to gather the necessary statistics for GC
nworkers := runtime.NumCPU() / 2
if nworkers < 2 {
nworkers = 2
}
err := b.db.Flatten(nworkers)
if err != nil {
return err
}
for err == nil {
err = b.DB.RunValueLogGC(0.125)
err = b.db.RunValueLogGC(0.125)
}
if err == badger.ErrNoRewrite {
// not really an error in this case
// not really an error in this case, it signals the end of GC
return nil
}
return err
}
// CollectGarbage compacts and runs garbage collection on the value log;
// implements the BlockstoreGC trait
func (b *Blockstore) CollectGarbage(opts ...blockstore.BlockstoreGCOption) error {
if err := b.access(); err != nil {
return err
}
defer b.viewers.Done()
var options blockstore.BlockstoreGCOptions
for _, opt := range opts {
err := opt(&options)
if err != nil {
return err
}
}
if options.FullGC {
return b.movingGC()
}
return b.onlineGC()
}
// Size returns the aggregate size of the blockstore
func (b *Blockstore) Size() (int64, error) {
if err := b.access(); err != nil {
return 0, err
}
defer b.viewers.Done()
b.lockDB()
defer b.unlockDB()
lsm, vlog := b.db.Size()
size := lsm + vlog
if size == 0 {
// badger reports a 0 size on symlinked directories... sigh
dir := b.opts.Dir
entries, err := os.ReadDir(dir)
if err != nil {
return 0, err
}
for _, e := range entries {
path := filepath.Join(dir, e.Name())
finfo, err := os.Stat(path)
if err != nil {
return 0, err
}
size += finfo.Size()
}
}
return size, nil
}
// View implements blockstore.Viewer, which leverages zero-copy read-only
// access to values.
func (b *Blockstore) View(cid cid.Cid, fn func([]byte) error) error {
if atomic.LoadInt64(&b.state) != stateOpen {
return ErrBlockstoreClosed
func (b *Blockstore) View(ctx context.Context, cid cid.Cid, fn func([]byte) error) error {
if err := b.access(); err != nil {
return err
}
defer b.viewers.Done()
b.lockDB()
defer b.unlockDB()
k, pooled := b.PooledStorageKey(cid)
if pooled {
defer KeyPool.Put(k)
}
return b.DB.View(func(txn *badger.Txn) error {
return b.db.View(func(txn *badger.Txn) error {
switch item, err := txn.Get(k); err {
case nil:
return item.Value(fn)
@@ -175,17 +552,21 @@ func (b *Blockstore) View(cid cid.Cid, fn func([]byte) error) error {
}
// Has implements Blockstore.Has.
func (b *Blockstore) Has(cid cid.Cid) (bool, error) {
if atomic.LoadInt64(&b.state) != stateOpen {
return false, ErrBlockstoreClosed
func (b *Blockstore) Has(ctx context.Context, cid cid.Cid) (bool, error) {
if err := b.access(); err != nil {
return false, err
}
defer b.viewers.Done()
b.lockDB()
defer b.unlockDB()
k, pooled := b.PooledStorageKey(cid)
if pooled {
defer KeyPool.Put(k)
}
err := b.DB.View(func(txn *badger.Txn) error {
err := b.db.View(func(txn *badger.Txn) error {
_, err := txn.Get(k)
return err
})
@@ -201,14 +582,18 @@ func (b *Blockstore) Has(cid cid.Cid) (bool, error) {
}
// Get implements Blockstore.Get.
func (b *Blockstore) Get(cid cid.Cid) (blocks.Block, error) {
func (b *Blockstore) Get(ctx context.Context, cid cid.Cid) (blocks.Block, error) {
if !cid.Defined() {
return nil, blockstore.ErrNotFound
}
if atomic.LoadInt64(&b.state) != stateOpen {
return nil, ErrBlockstoreClosed
if err := b.access(); err != nil {
return nil, err
}
defer b.viewers.Done()
b.lockDB()
defer b.unlockDB()
k, pooled := b.PooledStorageKey(cid)
if pooled {
@@ -216,7 +601,7 @@ func (b *Blockstore) Get(cid cid.Cid) (blocks.Block, error) {
}
var val []byte
err := b.DB.View(func(txn *badger.Txn) error {
err := b.db.View(func(txn *badger.Txn) error {
switch item, err := txn.Get(k); err {
case nil:
val, err = item.ValueCopy(nil)
@@ -234,10 +619,14 @@ func (b *Blockstore) Get(cid cid.Cid) (blocks.Block, error) {
}
// GetSize implements Blockstore.GetSize.
func (b *Blockstore) GetSize(cid cid.Cid) (int, error) {
if atomic.LoadInt64(&b.state) != stateOpen {
return -1, ErrBlockstoreClosed
func (b *Blockstore) GetSize(ctx context.Context, cid cid.Cid) (int, error) {
if err := b.access(); err != nil {
return 0, err
}
defer b.viewers.Done()
b.lockDB()
defer b.unlockDB()
k, pooled := b.PooledStorageKey(cid)
if pooled {
@@ -245,7 +634,7 @@ func (b *Blockstore) GetSize(cid cid.Cid) (int, error) {
}
var size int
err := b.DB.View(func(txn *badger.Txn) error {
err := b.db.View(func(txn *badger.Txn) error {
switch item, err := txn.Get(k); err {
case nil:
size = int(item.ValueSize())
@@ -263,33 +652,53 @@ func (b *Blockstore) GetSize(cid cid.Cid) (int, error) {
}
// Put implements Blockstore.Put.
func (b *Blockstore) Put(block blocks.Block) error {
if atomic.LoadInt64(&b.state) != stateOpen {
return ErrBlockstoreClosed
func (b *Blockstore) Put(ctx context.Context, block blocks.Block) error {
if err := b.access(); err != nil {
return err
}
defer b.viewers.Done()
b.lockDB()
defer b.unlockDB()
k, pooled := b.PooledStorageKey(block.Cid())
if pooled {
defer KeyPool.Put(k)
}
err := b.DB.Update(func(txn *badger.Txn) error {
return txn.Set(k, block.RawData())
})
if err != nil {
err = fmt.Errorf("failed to put block in badger blockstore: %w", err)
put := func(db *badger.DB) error {
err := db.Update(func(txn *badger.Txn) error {
return txn.Set(k, block.RawData())
})
if err != nil {
return fmt.Errorf("failed to put block in badger blockstore: %w", err)
}
return nil
}
return err
if err := put(b.db); err != nil {
return err
}
if b.dbNext != nil {
if err := put(b.dbNext); err != nil {
return err
}
}
return nil
}
// PutMany implements Blockstore.PutMany.
func (b *Blockstore) PutMany(blocks []blocks.Block) error {
if atomic.LoadInt64(&b.state) != stateOpen {
return ErrBlockstoreClosed
func (b *Blockstore) PutMany(ctx context.Context, blocks []blocks.Block) error {
if err := b.access(); err != nil {
return err
}
defer b.viewers.Done()
batch := b.DB.NewWriteBatch()
defer batch.Cancel()
b.lockDB()
defer b.unlockDB()
// toReturn tracks the byte slices to return to the pool, if we're using key
// prefixing. we can't return each slice to the pool after each Set, because
@@ -304,46 +713,75 @@ func (b *Blockstore) PutMany(blocks []blocks.Block) error {
}()
}
keys := make([][]byte, 0, len(blocks))
for _, block := range blocks {
k, pooled := b.PooledStorageKey(block.Cid())
if pooled {
toReturn = append(toReturn, k)
}
if err := batch.Set(k, block.RawData()); err != nil {
keys = append(keys, k)
}
put := func(db *badger.DB) error {
batch := db.NewWriteBatch()
defer batch.Cancel()
for i, block := range blocks {
k := keys[i]
if err := batch.Set(k, block.RawData()); err != nil {
return err
}
}
err := batch.Flush()
if err != nil {
return fmt.Errorf("failed to put blocks in badger blockstore: %w", err)
}
return nil
}
if err := put(b.db); err != nil {
return err
}
if b.dbNext != nil {
if err := put(b.dbNext); err != nil {
return err
}
}
err := batch.Flush()
if err != nil {
err = fmt.Errorf("failed to put blocks in badger blockstore: %w", err)
}
return err
return nil
}
// DeleteBlock implements Blockstore.DeleteBlock.
func (b *Blockstore) DeleteBlock(cid cid.Cid) error {
if atomic.LoadInt64(&b.state) != stateOpen {
return ErrBlockstoreClosed
func (b *Blockstore) DeleteBlock(ctx context.Context, cid cid.Cid) error {
if err := b.access(); err != nil {
return err
}
defer b.viewers.Done()
b.lockDB()
defer b.unlockDB()
k, pooled := b.PooledStorageKey(cid)
if pooled {
defer KeyPool.Put(k)
}
return b.DB.Update(func(txn *badger.Txn) error {
return b.db.Update(func(txn *badger.Txn) error {
return txn.Delete(k)
})
}
func (b *Blockstore) DeleteMany(cids []cid.Cid) error {
if atomic.LoadInt64(&b.state) != stateOpen {
return ErrBlockstoreClosed
func (b *Blockstore) DeleteMany(ctx context.Context, cids []cid.Cid) error {
if err := b.access(); err != nil {
return err
}
defer b.viewers.Done()
batch := b.DB.NewWriteBatch()
defer batch.Cancel()
b.lockDB()
defer b.unlockDB()
// toReturn tracks the byte slices to return to the pool, if we're using key
// prefixing. we can't return each slice to the pool after each Set, because
@@ -358,6 +796,9 @@ func (b *Blockstore) DeleteMany(cids []cid.Cid) error {
}()
}
batch := b.db.NewWriteBatch()
defer batch.Cancel()
for _, cid := range cids {
k, pooled := b.PooledStorageKey(cid)
if pooled {
@@ -377,11 +818,14 @@ func (b *Blockstore) DeleteMany(cids []cid.Cid) error {
// AllKeysChan implements Blockstore.AllKeysChan.
func (b *Blockstore) AllKeysChan(ctx context.Context) (<-chan cid.Cid, error) {
if atomic.LoadInt64(&b.state) != stateOpen {
return nil, ErrBlockstoreClosed
if err := b.access(); err != nil {
return nil, err
}
txn := b.DB.NewTransaction(false)
b.lockDB()
defer b.unlockDB()
txn := b.db.NewTransaction(false)
opts := badger.IteratorOptions{PrefetchSize: 100}
if b.prefixing {
opts.Prefix = b.prefix
@@ -390,6 +834,7 @@ func (b *Blockstore) AllKeysChan(ctx context.Context) (<-chan cid.Cid, error) {
ch := make(chan cid.Cid)
go func() {
defer b.viewers.Done()
defer close(ch)
defer iter.Close()
@@ -400,7 +845,7 @@ func (b *Blockstore) AllKeysChan(ctx context.Context) (<-chan cid.Cid, error) {
if ctx.Err() != nil {
return // context has fired.
}
if atomic.LoadInt64(&b.state) != stateOpen {
if !b.isOpen() {
// open iterators will run even after the database is closed...
return // closing, yield.
}
@@ -427,6 +872,59 @@ func (b *Blockstore) AllKeysChan(ctx context.Context) (<-chan cid.Cid, error) {
return ch, nil
}
// Implementation of BlockstoreIterator interface
func (b *Blockstore) ForEachKey(f func(cid.Cid) error) error {
if err := b.access(); err != nil {
return err
}
defer b.viewers.Done()
b.lockDB()
defer b.unlockDB()
txn := b.db.NewTransaction(false)
defer txn.Discard()
opts := badger.IteratorOptions{PrefetchSize: 100}
if b.prefixing {
opts.Prefix = b.prefix
}
iter := txn.NewIterator(opts)
defer iter.Close()
var buf []byte
for iter.Rewind(); iter.Valid(); iter.Next() {
if !b.isOpen() {
return ErrBlockstoreClosed
}
k := iter.Item().Key()
if b.prefixing {
k = k[b.prefixLen:]
}
klen := base32.RawStdEncoding.DecodedLen(len(k))
if klen > len(buf) {
buf = make([]byte, klen)
}
n, err := base32.RawStdEncoding.Decode(buf, k)
if err != nil {
return err
}
c := cid.NewCidV1(cid.Raw, buf[:n])
err = f(c)
if err != nil {
return err
}
}
return nil
}
// HashOnRead implements Blockstore.HashOnRead. It is not supported by this
// blockstore.
func (b *Blockstore) HashOnRead(_ bool) {
@@ -479,3 +977,9 @@ func (b *Blockstore) StorageKey(dst []byte, cid cid.Cid) []byte {
}
return dst[:reqsize]
}
// this method is added for lotus-shed needs
// WARNING: THIS IS COMPLETELY UNSAFE; DONT USE THIS IN PRODUCTION CODE
func (b *Blockstore) DB() *badger.DB {
return b.db
}
+192 -10
View File
@@ -1,17 +1,27 @@
//stm: #unit
package badgerbs
import (
"io/ioutil"
"bytes"
"context"
"fmt"
"os"
"path/filepath"
"strings"
"testing"
blocks "github.com/ipfs/go-block-format"
"github.com/stretchr/testify/require"
"golang.org/x/sync/errgroup"
blocks "github.com/ipfs/go-block-format"
cid "github.com/ipfs/go-cid"
"github.com/filecoin-project/lotus/blockstore"
)
func TestBadgerBlockstore(t *testing.T) {
//stm: @SPLITSTORE_BADGER_PUT_001, @SPLITSTORE_BADGER_POOLED_STORAGE_KEY_001
//stm: @SPLITSTORE_BADGER_OPEN_001, @SPLITSTORE_BADGER_CLOSE_001
(&Suite{
NewBlockstore: newBlockstore(DefaultOptions),
OpenBlockstore: openBlockstore(DefaultOptions),
@@ -30,6 +40,8 @@ func TestBadgerBlockstore(t *testing.T) {
}
func TestStorageKey(t *testing.T) {
//stm: @SPLITSTORE_BADGER_OPEN_001, @SPLITSTORE_BADGER_CLOSE_001
//stm: @SPLITSTORE_BADGER_STORAGE_KEY_001
bs, _ := newBlockstore(DefaultOptions)(t)
bbs := bs.(*Blockstore)
defer bbs.Close() //nolint:errcheck
@@ -65,20 +77,13 @@ func newBlockstore(optsSupplier func(path string) Options) func(tb testing.TB) (
return func(tb testing.TB) (bs blockstore.BasicBlockstore, path string) {
tb.Helper()
path, err := ioutil.TempDir("", "")
if err != nil {
tb.Fatal(err)
}
path = tb.TempDir()
db, err := Open(optsSupplier(path))
if err != nil {
tb.Fatal(err)
}
tb.Cleanup(func() {
_ = os.RemoveAll(path)
})
return db, path
}
}
@@ -89,3 +94,180 @@ func openBlockstore(optsSupplier func(path string) Options) func(tb testing.TB,
return Open(optsSupplier(path))
}
}
func testMove(t *testing.T, optsF func(string) Options) {
ctx := context.Background()
basePath := t.TempDir()
dbPath := filepath.Join(basePath, "db")
db, err := Open(optsF(dbPath))
if err != nil {
t.Fatal(err)
}
defer db.Close() //nolint
var have []blocks.Block
var deleted []cid.Cid
// add some blocks
for i := 0; i < 10; i++ {
blk := blocks.NewBlock([]byte(fmt.Sprintf("some data %d", i)))
err := db.Put(ctx, blk)
if err != nil {
t.Fatal(err)
}
have = append(have, blk)
}
// delete some of them
for i := 5; i < 10; i++ {
c := have[i].Cid()
err := db.DeleteBlock(ctx, c)
if err != nil {
t.Fatal(err)
}
deleted = append(deleted, c)
}
have = have[:5]
// start a move concurrent with some more puts
g := new(errgroup.Group)
g.Go(func() error {
for i := 10; i < 1000; i++ {
blk := blocks.NewBlock([]byte(fmt.Sprintf("some data %d", i)))
err := db.Put(ctx, blk)
if err != nil {
return err
}
have = append(have, blk)
}
return nil
})
g.Go(func() error {
return db.CollectGarbage(blockstore.WithFullGC(true))
})
err = g.Wait()
if err != nil {
t.Fatal(err)
}
// now check that we have all the blocks in have and none in the deleted lists
checkBlocks := func() {
for _, blk := range have {
has, err := db.Has(ctx, blk.Cid())
if err != nil {
t.Fatal(err)
}
if !has {
t.Fatal("missing block")
}
blk2, err := db.Get(ctx, blk.Cid())
if err != nil {
t.Fatal(err)
}
if !bytes.Equal(blk.RawData(), blk2.RawData()) {
t.Fatal("data mismatch")
}
}
for _, c := range deleted {
has, err := db.Has(ctx, c)
if err != nil {
t.Fatal(err)
}
if has {
t.Fatal("resurrected block")
}
}
}
checkBlocks()
// check the basePath -- it should contain a directory with name db.{timestamp}, soft-linked
// to db and nothing else
checkPath := func() {
entries, err := os.ReadDir(basePath)
if err != nil {
t.Fatal(err)
}
if len(entries) != 2 {
t.Fatalf("too many entries; expected %d but got %d", 2, len(entries))
}
var haveDB, haveDBLink bool
for _, e := range entries {
if e.Name() == "db" {
if (e.Type() & os.ModeSymlink) == 0 {
t.Fatal("found db, but it's not a symlink")
}
haveDBLink = true
continue
}
if strings.HasPrefix(e.Name(), "db.") {
if !e.Type().IsDir() {
t.Fatal("found db prefix, but it's not a directory")
}
haveDB = true
continue
}
}
if !haveDB {
t.Fatal("db directory is missing")
}
if !haveDBLink {
t.Fatal("db link is missing")
}
}
checkPath()
// now do another FullGC to test the double move and following of symlinks
if err := db.CollectGarbage(blockstore.WithFullGC(true)); err != nil {
t.Fatal(err)
}
checkBlocks()
checkPath()
// reopen the db to make sure our relative link works:
err = db.Close()
if err != nil {
t.Fatal(err)
}
db, err = Open(optsF(dbPath))
if err != nil {
t.Fatal(err)
}
// db.Close() is already deferred
checkBlocks()
}
func TestMoveNoPrefix(t *testing.T) {
//stm: @SPLITSTORE_BADGER_OPEN_001, @SPLITSTORE_BADGER_CLOSE_001
//stm: @SPLITSTORE_BADGER_PUT_001, @SPLITSTORE_BADGER_POOLED_STORAGE_KEY_001
//stm: @SPLITSTORE_BADGER_DELETE_001, @SPLITSTORE_BADGER_COLLECT_GARBAGE_001
testMove(t, DefaultOptions)
}
func TestMoveWithPrefix(t *testing.T) {
//stm: @SPLITSTORE_BADGER_OPEN_001, @SPLITSTORE_BADGER_CLOSE_001
//stm: @SPLITSTORE_BADGER_PUT_001, @SPLITSTORE_BADGER_POOLED_STORAGE_KEY_001
//stm: @SPLITSTORE_BADGER_DELETE_001, @SPLITSTORE_BADGER_COLLECT_GARBAGE_001
testMove(t, func(path string) Options {
opts := DefaultOptions(path)
opts.Prefix = "/prefixed/"
return opts
})
}
+68 -24
View File
@@ -1,3 +1,4 @@
//stm: #unit
package badgerbs
import (
@@ -44,28 +45,38 @@ func (s *Suite) RunTests(t *testing.T, prefix string) {
}
func (s *Suite) TestGetWhenKeyNotPresent(t *testing.T) {
//stm: @SPLITSTORE_BADGER_OPEN_001, @SPLITSTORE_BADGER_CLOSE_001
//stm: @SPLITSTORE_BADGER_GET_001, @SPLITSTORE_BADGER_POOLED_STORAGE_KEY_001
ctx := context.Background()
bs, _ := s.NewBlockstore(t)
if c, ok := bs.(io.Closer); ok {
defer func() { require.NoError(t, c.Close()) }()
}
c := cid.NewCidV0(u.Hash([]byte("stuff")))
bl, err := bs.Get(c)
bl, err := bs.Get(ctx, c)
require.Nil(t, bl)
require.Equal(t, blockstore.ErrNotFound, err)
}
func (s *Suite) TestGetWhenKeyIsNil(t *testing.T) {
//stm: @SPLITSTORE_BADGER_OPEN_001, @SPLITSTORE_BADGER_CLOSE_001
//stm: @SPLITSTORE_BADGER_GET_001
ctx := context.Background()
bs, _ := s.NewBlockstore(t)
if c, ok := bs.(io.Closer); ok {
defer func() { require.NoError(t, c.Close()) }()
}
_, err := bs.Get(cid.Undef)
_, err := bs.Get(ctx, cid.Undef)
require.Equal(t, blockstore.ErrNotFound, err)
}
func (s *Suite) TestPutThenGetBlock(t *testing.T) {
//stm: @SPLITSTORE_BADGER_OPEN_001, @SPLITSTORE_BADGER_CLOSE_001
//stm: @SPLITSTORE_BADGER_PUT_001, @SPLITSTORE_BADGER_POOLED_STORAGE_KEY_001
//stm: @SPLITSTORE_BADGER_GET_001
ctx := context.Background()
bs, _ := s.NewBlockstore(t)
if c, ok := bs.(io.Closer); ok {
defer func() { require.NoError(t, c.Close()) }()
@@ -73,15 +84,18 @@ func (s *Suite) TestPutThenGetBlock(t *testing.T) {
orig := blocks.NewBlock([]byte("some data"))
err := bs.Put(orig)
err := bs.Put(ctx, orig)
require.NoError(t, err)
fetched, err := bs.Get(orig.Cid())
fetched, err := bs.Get(ctx, orig.Cid())
require.NoError(t, err)
require.Equal(t, orig.RawData(), fetched.RawData())
}
func (s *Suite) TestHas(t *testing.T) {
//stm: @SPLITSTORE_BADGER_OPEN_001, @SPLITSTORE_BADGER_CLOSE_001
//stm: @SPLITSTORE_BADGER_HAS_001, @SPLITSTORE_BADGER_POOLED_STORAGE_KEY_001
ctx := context.Background()
bs, _ := s.NewBlockstore(t)
if c, ok := bs.(io.Closer); ok {
defer func() { require.NoError(t, c.Close()) }()
@@ -89,19 +103,23 @@ func (s *Suite) TestHas(t *testing.T) {
orig := blocks.NewBlock([]byte("some data"))
err := bs.Put(orig)
err := bs.Put(ctx, orig)
require.NoError(t, err)
ok, err := bs.Has(orig.Cid())
ok, err := bs.Has(ctx, orig.Cid())
require.NoError(t, err)
require.True(t, ok)
ok, err = bs.Has(blocks.NewBlock([]byte("another thing")).Cid())
ok, err = bs.Has(ctx, blocks.NewBlock([]byte("another thing")).Cid())
require.NoError(t, err)
require.False(t, ok)
}
func (s *Suite) TestCidv0v1(t *testing.T) {
//stm: @SPLITSTORE_BADGER_OPEN_001, @SPLITSTORE_BADGER_CLOSE_001
//stm: @SPLITSTORE_BADGER_PUT_001, @SPLITSTORE_BADGER_POOLED_STORAGE_KEY_001
//stm: @SPLITSTORE_BADGER_GET_001
ctx := context.Background()
bs, _ := s.NewBlockstore(t)
if c, ok := bs.(io.Closer); ok {
defer func() { require.NoError(t, c.Close()) }()
@@ -109,15 +127,20 @@ func (s *Suite) TestCidv0v1(t *testing.T) {
orig := blocks.NewBlock([]byte("some data"))
err := bs.Put(orig)
err := bs.Put(ctx, orig)
require.NoError(t, err)
fetched, err := bs.Get(cid.NewCidV1(cid.DagProtobuf, orig.Cid().Hash()))
fetched, err := bs.Get(ctx, cid.NewCidV1(cid.DagProtobuf, orig.Cid().Hash()))
require.NoError(t, err)
require.Equal(t, orig.RawData(), fetched.RawData())
}
func (s *Suite) TestPutThenGetSizeBlock(t *testing.T) {
//stm: @SPLITSTORE_BADGER_OPEN_001, @SPLITSTORE_BADGER_CLOSE_001
//stm: @SPLITSTORE_BADGER_PUT_001, @SPLITSTORE_BADGER_POOLED_STORAGE_KEY_001
//stm: @SPLITSTORE_BADGER_GET_SIZE_001
ctx := context.Background()
bs, _ := s.NewBlockstore(t)
if c, ok := bs.(io.Closer); ok {
defer func() { require.NoError(t, c.Close()) }()
@@ -127,26 +150,28 @@ func (s *Suite) TestPutThenGetSizeBlock(t *testing.T) {
missingBlock := blocks.NewBlock([]byte("missingBlock"))
emptyBlock := blocks.NewBlock([]byte{})
err := bs.Put(block)
err := bs.Put(ctx, block)
require.NoError(t, err)
blockSize, err := bs.GetSize(block.Cid())
blockSize, err := bs.GetSize(ctx, block.Cid())
require.NoError(t, err)
require.Len(t, block.RawData(), blockSize)
err = bs.Put(emptyBlock)
err = bs.Put(ctx, emptyBlock)
require.NoError(t, err)
emptySize, err := bs.GetSize(emptyBlock.Cid())
emptySize, err := bs.GetSize(ctx, emptyBlock.Cid())
require.NoError(t, err)
require.Zero(t, emptySize)
missingSize, err := bs.GetSize(missingBlock.Cid())
missingSize, err := bs.GetSize(ctx, missingBlock.Cid())
require.Equal(t, blockstore.ErrNotFound, err)
require.Equal(t, -1, missingSize)
}
func (s *Suite) TestAllKeysSimple(t *testing.T) {
//stm: @SPLITSTORE_BADGER_OPEN_001, @SPLITSTORE_BADGER_CLOSE_001
//stm: @SPLITSTORE_BADGER_PUT_001, @SPLITSTORE_BADGER_POOLED_STORAGE_KEY_001
bs, _ := s.NewBlockstore(t)
if c, ok := bs.(io.Closer); ok {
defer func() { require.NoError(t, c.Close()) }()
@@ -163,6 +188,9 @@ func (s *Suite) TestAllKeysSimple(t *testing.T) {
}
func (s *Suite) TestAllKeysRespectsContext(t *testing.T) {
//stm: @SPLITSTORE_BADGER_OPEN_001, @SPLITSTORE_BADGER_CLOSE_001
//stm: @SPLITSTORE_BADGER_PUT_001, @SPLITSTORE_BADGER_POOLED_STORAGE_KEY_001
//stm: @SPLITSTORE_BADGER_ALL_KEYS_CHAN_001
bs, _ := s.NewBlockstore(t)
if c, ok := bs.(io.Closer); ok {
defer func() { require.NoError(t, c.Close()) }()
@@ -193,6 +221,7 @@ func (s *Suite) TestAllKeysRespectsContext(t *testing.T) {
}
func (s *Suite) TestDoubleClose(t *testing.T) {
//stm: @SPLITSTORE_BADGER_OPEN_001, @SPLITSTORE_BADGER_CLOSE_001
bs, _ := s.NewBlockstore(t)
c, ok := bs.(io.Closer)
if !ok {
@@ -203,6 +232,10 @@ func (s *Suite) TestDoubleClose(t *testing.T) {
}
func (s *Suite) TestReopenPutGet(t *testing.T) {
//stm: @SPLITSTORE_BADGER_OPEN_001, @SPLITSTORE_BADGER_CLOSE_001
//stm: @SPLITSTORE_BADGER_PUT_001, @SPLITSTORE_BADGER_POOLED_STORAGE_KEY_001
//stm: @SPLITSTORE_BADGER_GET_001
ctx := context.Background()
bs, path := s.NewBlockstore(t)
c, ok := bs.(io.Closer)
if !ok {
@@ -210,7 +243,7 @@ func (s *Suite) TestReopenPutGet(t *testing.T) {
}
orig := blocks.NewBlock([]byte("some data"))
err := bs.Put(orig)
err := bs.Put(ctx, orig)
require.NoError(t, err)
err = c.Close()
@@ -219,7 +252,7 @@ func (s *Suite) TestReopenPutGet(t *testing.T) {
bs, err = s.OpenBlockstore(t, path)
require.NoError(t, err)
fetched, err := bs.Get(orig.Cid())
fetched, err := bs.Get(ctx, orig.Cid())
require.NoError(t, err)
require.Equal(t, orig.RawData(), fetched.RawData())
@@ -228,6 +261,11 @@ func (s *Suite) TestReopenPutGet(t *testing.T) {
}
func (s *Suite) TestPutMany(t *testing.T) {
//stm: @SPLITSTORE_BADGER_OPEN_001, @SPLITSTORE_BADGER_CLOSE_001
//stm: @SPLITSTORE_BADGER_HAS_001, @SPLITSTORE_BADGER_POOLED_STORAGE_KEY_001
//stm: @SPLITSTORE_BADGER_GET_001, @SPLITSTORE_BADGER_PUT_MANY_001
//stm: @SPLITSTORE_BADGER_ALL_KEYS_CHAN_001
ctx := context.Background()
bs, _ := s.NewBlockstore(t)
if c, ok := bs.(io.Closer); ok {
defer func() { require.NoError(t, c.Close()) }()
@@ -238,15 +276,15 @@ func (s *Suite) TestPutMany(t *testing.T) {
blocks.NewBlock([]byte("foo2")),
blocks.NewBlock([]byte("foo3")),
}
err := bs.PutMany(blks)
err := bs.PutMany(ctx, blks)
require.NoError(t, err)
for _, blk := range blks {
fetched, err := bs.Get(blk.Cid())
fetched, err := bs.Get(ctx, blk.Cid())
require.NoError(t, err)
require.Equal(t, blk.RawData(), fetched.RawData())
ok, err := bs.Has(blk.Cid())
ok, err := bs.Has(ctx, blk.Cid())
require.NoError(t, err)
require.True(t, ok)
}
@@ -259,6 +297,12 @@ func (s *Suite) TestPutMany(t *testing.T) {
}
func (s *Suite) TestDelete(t *testing.T) {
//stm: @SPLITSTORE_BADGER_PUT_001, @SPLITSTORE_BADGER_POOLED_STORAGE_KEY_001
//stm: @SPLITSTORE_BADGER_DELETE_001, @SPLITSTORE_BADGER_POOLED_STORAGE_HAS_001
//stm: @SPLITSTORE_BADGER_ALL_KEYS_CHAN_001, @SPLITSTORE_BADGER_HAS_001
//stm: @SPLITSTORE_BADGER_PUT_MANY_001
ctx := context.Background()
bs, _ := s.NewBlockstore(t)
if c, ok := bs.(io.Closer); ok {
defer func() { require.NoError(t, c.Close()) }()
@@ -269,10 +313,10 @@ func (s *Suite) TestDelete(t *testing.T) {
blocks.NewBlock([]byte("foo2")),
blocks.NewBlock([]byte("foo3")),
}
err := bs.PutMany(blks)
err := bs.PutMany(ctx, blks)
require.NoError(t, err)
err = bs.DeleteBlock(blks[1].Cid())
err = bs.DeleteBlock(ctx, blks[1].Cid())
require.NoError(t, err)
ch, err := bs.AllKeysChan(context.Background())
@@ -285,17 +329,17 @@ func (s *Suite) TestDelete(t *testing.T) {
cid.NewCidV1(cid.Raw, blks[2].Cid().Hash()),
})
has, err := bs.Has(blks[1].Cid())
has, err := bs.Has(ctx, blks[1].Cid())
require.NoError(t, err)
require.False(t, has)
}
func insertBlocks(t *testing.T, bs blockstore.BasicBlockstore, count int) []cid.Cid {
ctx := context.Background()
keys := make([]cid.Cid, count)
for i := 0; i < count; i++ {
block := blocks.NewBlock([]byte(fmt.Sprintf("some data %d", i)))
err := bs.Put(block)
err := bs.Put(ctx, block)
require.NoError(t, err)
// NewBlock assigns a CIDv0; we convert it to CIDv1 because that's what
// the store returns.
+37 -5
View File
@@ -1,6 +1,8 @@
package blockstore
import (
"context"
cid "github.com/ipfs/go-cid"
ds "github.com/ipfs/go-datastore"
logging "github.com/ipfs/go-log/v2"
@@ -27,7 +29,37 @@ type BasicBlockstore = blockstore.Blockstore
type Viewer = blockstore.Viewer
type BatchDeleter interface {
DeleteMany(cids []cid.Cid) error
DeleteMany(ctx context.Context, cids []cid.Cid) error
}
// BlockstoreIterator is a trait for efficient iteration
type BlockstoreIterator interface {
ForEachKey(func(cid.Cid) error) error
}
// BlockstoreGC is a trait for blockstores that support online garbage collection
type BlockstoreGC interface {
CollectGarbage(options ...BlockstoreGCOption) error
}
// BlockstoreGCOption is a functional interface for controlling blockstore GC options
type BlockstoreGCOption = func(*BlockstoreGCOptions) error
// BlockstoreGCOptions is a struct with GC options
type BlockstoreGCOptions struct {
FullGC bool
}
func WithFullGC(fullgc bool) BlockstoreGCOption {
return func(opts *BlockstoreGCOptions) error {
opts.FullGC = fullgc
return nil
}
}
// BlockstoreSize is a trait for on-disk blockstores that can report their size
type BlockstoreSize interface {
Size() (int64, error)
}
// WrapIDStore wraps the underlying blockstore in an "identity" blockstore.
@@ -63,17 +95,17 @@ type adaptedBlockstore struct {
var _ Blockstore = (*adaptedBlockstore)(nil)
func (a *adaptedBlockstore) View(cid cid.Cid, callback func([]byte) error) error {
blk, err := a.Get(cid)
func (a *adaptedBlockstore) View(ctx context.Context, cid cid.Cid, callback func([]byte) error) error {
blk, err := a.Get(ctx, cid)
if err != nil {
return err
}
return callback(blk.RawData())
}
func (a *adaptedBlockstore) DeleteMany(cids []cid.Cid) error {
func (a *adaptedBlockstore) DeleteMany(ctx context.Context, cids []cid.Cid) error {
for _, cid := range cids {
err := a.DeleteBlock(cid)
err := a.DeleteBlock(ctx, cid)
if err != nil {
return err
}
+23 -23
View File
@@ -88,34 +88,34 @@ func (bs *BufferedBlockstore) AllKeysChan(ctx context.Context) (<-chan cid.Cid,
return out, nil
}
func (bs *BufferedBlockstore) DeleteBlock(c cid.Cid) error {
if err := bs.read.DeleteBlock(c); err != nil {
func (bs *BufferedBlockstore) DeleteBlock(ctx context.Context, c cid.Cid) error {
if err := bs.read.DeleteBlock(ctx, c); err != nil {
return err
}
return bs.write.DeleteBlock(c)
return bs.write.DeleteBlock(ctx, c)
}
func (bs *BufferedBlockstore) DeleteMany(cids []cid.Cid) error {
if err := bs.read.DeleteMany(cids); err != nil {
func (bs *BufferedBlockstore) DeleteMany(ctx context.Context, cids []cid.Cid) error {
if err := bs.read.DeleteMany(ctx, cids); err != nil {
return err
}
return bs.write.DeleteMany(cids)
return bs.write.DeleteMany(ctx, cids)
}
func (bs *BufferedBlockstore) View(c cid.Cid, callback func([]byte) error) error {
func (bs *BufferedBlockstore) View(ctx context.Context, c cid.Cid, callback func([]byte) error) error {
// both stores are viewable.
if err := bs.write.View(c, callback); err == ErrNotFound {
if err := bs.write.View(ctx, c, callback); err == ErrNotFound {
// not found in write blockstore; fall through.
} else {
return err // propagate errors, or nil, i.e. found.
}
return bs.read.View(c, callback)
return bs.read.View(ctx, c, callback)
}
func (bs *BufferedBlockstore) Get(c cid.Cid) (block.Block, error) {
if out, err := bs.write.Get(c); err != nil {
func (bs *BufferedBlockstore) Get(ctx context.Context, c cid.Cid) (block.Block, error) {
if out, err := bs.write.Get(ctx, c); err != nil {
if err != ErrNotFound {
return nil, err
}
@@ -123,20 +123,20 @@ func (bs *BufferedBlockstore) Get(c cid.Cid) (block.Block, error) {
return out, nil
}
return bs.read.Get(c)
return bs.read.Get(ctx, c)
}
func (bs *BufferedBlockstore) GetSize(c cid.Cid) (int, error) {
s, err := bs.read.GetSize(c)
func (bs *BufferedBlockstore) GetSize(ctx context.Context, c cid.Cid) (int, error) {
s, err := bs.read.GetSize(ctx, c)
if err == ErrNotFound || s == 0 {
return bs.write.GetSize(c)
return bs.write.GetSize(ctx, c)
}
return s, err
}
func (bs *BufferedBlockstore) Put(blk block.Block) error {
has, err := bs.read.Has(blk.Cid()) // TODO: consider dropping this check
func (bs *BufferedBlockstore) Put(ctx context.Context, blk block.Block) error {
has, err := bs.read.Has(ctx, blk.Cid()) // TODO: consider dropping this check
if err != nil {
return err
}
@@ -145,11 +145,11 @@ func (bs *BufferedBlockstore) Put(blk block.Block) error {
return nil
}
return bs.write.Put(blk)
return bs.write.Put(ctx, blk)
}
func (bs *BufferedBlockstore) Has(c cid.Cid) (bool, error) {
has, err := bs.write.Has(c)
func (bs *BufferedBlockstore) Has(ctx context.Context, c cid.Cid) (bool, error) {
has, err := bs.write.Has(ctx, c)
if err != nil {
return false, err
}
@@ -157,7 +157,7 @@ func (bs *BufferedBlockstore) Has(c cid.Cid) (bool, error) {
return true, nil
}
return bs.read.Has(c)
return bs.read.Has(ctx, c)
}
func (bs *BufferedBlockstore) HashOnRead(hor bool) {
@@ -165,8 +165,8 @@ func (bs *BufferedBlockstore) HashOnRead(hor bool) {
bs.write.HashOnRead(hor)
}
func (bs *BufferedBlockstore) PutMany(blks []block.Block) error {
return bs.write.PutMany(blks)
func (bs *BufferedBlockstore) PutMany(ctx context.Context, blks []block.Block) error {
return bs.write.PutMany(ctx, blks)
}
func (bs *BufferedBlockstore) Read() Blockstore {
-25
View File
@@ -1,25 +0,0 @@
package blockstore
import (
"context"
blockstore "github.com/ipfs/go-ipfs-blockstore"
)
type CacheOpts = blockstore.CacheOpts
func DefaultCacheOpts() CacheOpts {
return CacheOpts{
HasBloomFilterSize: 0,
HasBloomFilterHashes: 0,
HasARCCacheSize: 512 << 10,
}
}
func CachedBlockstore(ctx context.Context, bs Blockstore, opts CacheOpts) (Blockstore, error) {
cached, err := blockstore.CachedBlockstore(ctx, bs, opts)
if err != nil {
return nil, err
}
return WrapIDStore(cached), nil
}
+21
View File
@@ -0,0 +1,21 @@
package blockstore
import (
"context"
)
type hotViewKey struct{}
var hotView = hotViewKey{}
// WithHotView constructs a new context with an option that provides a hint to the blockstore
// (e.g. the splitstore) that the object (and its ipld references) should be kept hot.
func WithHotView(ctx context.Context) context.Context {
return context.WithValue(ctx, hotView, struct{}{})
}
// IsHotView returns true if the hot view option is set in the context
func IsHotView(ctx context.Context) bool {
v := ctx.Value(hotView)
return v != nil
}
+66
View File
@@ -0,0 +1,66 @@
package blockstore
import (
"context"
"io"
blocks "github.com/ipfs/go-block-format"
cid "github.com/ipfs/go-cid"
)
var _ Blockstore = (*discardstore)(nil)
type discardstore struct {
bs Blockstore
}
func NewDiscardStore(bs Blockstore) Blockstore {
return &discardstore{bs: bs}
}
func (b *discardstore) Has(ctx context.Context, cid cid.Cid) (bool, error) {
return b.bs.Has(ctx, cid)
}
func (b *discardstore) HashOnRead(hor bool) {
b.bs.HashOnRead(hor)
}
func (b *discardstore) Get(ctx context.Context, cid cid.Cid) (blocks.Block, error) {
return b.bs.Get(ctx, cid)
}
func (b *discardstore) GetSize(ctx context.Context, cid cid.Cid) (int, error) {
return b.bs.GetSize(ctx, cid)
}
func (b *discardstore) View(ctx context.Context, cid cid.Cid, f func([]byte) error) error {
return b.bs.View(ctx, cid, f)
}
func (b *discardstore) Put(ctx context.Context, blk blocks.Block) error {
return nil
}
func (b *discardstore) PutMany(ctx context.Context, blks []blocks.Block) error {
return nil
}
func (b *discardstore) DeleteBlock(ctx context.Context, cid cid.Cid) error {
return nil
}
func (b *discardstore) DeleteMany(ctx context.Context, cids []cid.Cid) error {
return nil
}
func (b *discardstore) AllKeysChan(ctx context.Context) (<-chan cid.Cid, error) {
return b.bs.AllKeysChan(ctx)
}
func (b *discardstore) Close() error {
if c, ok := b.bs.(io.Closer); ok {
return c.Close()
}
return nil
}
+5 -5
View File
@@ -71,14 +71,14 @@ func (fbs *FallbackStore) getFallback(c cid.Cid) (blocks.Block, error) {
// chain bitswap puts blocks in temp blockstore which is cleaned up
// every few min (to drop any messages we fetched but don't want)
// in this case we want to keep this block around
if err := fbs.Put(b); err != nil {
if err := fbs.Put(ctx, b); err != nil {
return nil, xerrors.Errorf("persisting fallback-fetched block: %w", err)
}
return b, nil
}
func (fbs *FallbackStore) Get(c cid.Cid) (blocks.Block, error) {
b, err := fbs.Blockstore.Get(c)
func (fbs *FallbackStore) Get(ctx context.Context, c cid.Cid) (blocks.Block, error) {
b, err := fbs.Blockstore.Get(ctx, c)
switch err {
case nil:
return b, nil
@@ -89,8 +89,8 @@ func (fbs *FallbackStore) Get(c cid.Cid) (blocks.Block, error) {
}
}
func (fbs *FallbackStore) GetSize(c cid.Cid) (int, error) {
sz, err := fbs.Blockstore.GetSize(c)
func (fbs *FallbackStore) GetSize(ctx context.Context, c cid.Cid) (int, error) {
sz, err := fbs.Blockstore.GetSize(ctx, c)
switch err {
case nil:
return sz, nil
+16 -16
View File
@@ -38,7 +38,7 @@ func decodeCid(cid cid.Cid) (inline bool, data []byte, err error) {
return false, nil, err
}
func (b *idstore) Has(cid cid.Cid) (bool, error) {
func (b *idstore) Has(ctx context.Context, cid cid.Cid) (bool, error) {
inline, _, err := decodeCid(cid)
if err != nil {
return false, xerrors.Errorf("error decoding Cid: %w", err)
@@ -48,10 +48,10 @@ func (b *idstore) Has(cid cid.Cid) (bool, error) {
return true, nil
}
return b.bs.Has(cid)
return b.bs.Has(ctx, cid)
}
func (b *idstore) Get(cid cid.Cid) (blocks.Block, error) {
func (b *idstore) Get(ctx context.Context, cid cid.Cid) (blocks.Block, error) {
inline, data, err := decodeCid(cid)
if err != nil {
return nil, xerrors.Errorf("error decoding Cid: %w", err)
@@ -61,10 +61,10 @@ func (b *idstore) Get(cid cid.Cid) (blocks.Block, error) {
return blocks.NewBlockWithCid(data, cid)
}
return b.bs.Get(cid)
return b.bs.Get(ctx, cid)
}
func (b *idstore) GetSize(cid cid.Cid) (int, error) {
func (b *idstore) GetSize(ctx context.Context, cid cid.Cid) (int, error) {
inline, data, err := decodeCid(cid)
if err != nil {
return 0, xerrors.Errorf("error decoding Cid: %w", err)
@@ -74,10 +74,10 @@ func (b *idstore) GetSize(cid cid.Cid) (int, error) {
return len(data), err
}
return b.bs.GetSize(cid)
return b.bs.GetSize(ctx, cid)
}
func (b *idstore) View(cid cid.Cid, cb func([]byte) error) error {
func (b *idstore) View(ctx context.Context, cid cid.Cid, cb func([]byte) error) error {
inline, data, err := decodeCid(cid)
if err != nil {
return xerrors.Errorf("error decoding Cid: %w", err)
@@ -87,10 +87,10 @@ func (b *idstore) View(cid cid.Cid, cb func([]byte) error) error {
return cb(data)
}
return b.bs.View(cid, cb)
return b.bs.View(ctx, cid, cb)
}
func (b *idstore) Put(blk blocks.Block) error {
func (b *idstore) Put(ctx context.Context, blk blocks.Block) error {
inline, _, err := decodeCid(blk.Cid())
if err != nil {
return xerrors.Errorf("error decoding Cid: %w", err)
@@ -100,10 +100,10 @@ func (b *idstore) Put(blk blocks.Block) error {
return nil
}
return b.bs.Put(blk)
return b.bs.Put(ctx, blk)
}
func (b *idstore) PutMany(blks []blocks.Block) error {
func (b *idstore) PutMany(ctx context.Context, blks []blocks.Block) error {
toPut := make([]blocks.Block, 0, len(blks))
for _, blk := range blks {
inline, _, err := decodeCid(blk.Cid())
@@ -118,13 +118,13 @@ func (b *idstore) PutMany(blks []blocks.Block) error {
}
if len(toPut) > 0 {
return b.bs.PutMany(toPut)
return b.bs.PutMany(ctx, toPut)
}
return nil
}
func (b *idstore) DeleteBlock(cid cid.Cid) error {
func (b *idstore) DeleteBlock(ctx context.Context, cid cid.Cid) error {
inline, _, err := decodeCid(cid)
if err != nil {
return xerrors.Errorf("error decoding Cid: %w", err)
@@ -134,10 +134,10 @@ func (b *idstore) DeleteBlock(cid cid.Cid) error {
return nil
}
return b.bs.DeleteBlock(cid)
return b.bs.DeleteBlock(ctx, cid)
}
func (b *idstore) DeleteMany(cids []cid.Cid) error {
func (b *idstore) DeleteMany(ctx context.Context, cids []cid.Cid) error {
toDelete := make([]cid.Cid, 0, len(cids))
for _, cid := range cids {
inline, _, err := decodeCid(cid)
@@ -152,7 +152,7 @@ func (b *idstore) DeleteMany(cids []cid.Cid) error {
}
if len(toDelete) > 0 {
return b.bs.DeleteMany(toDelete)
return b.bs.DeleteMany(ctx, toDelete)
}
return nil
+11 -11
View File
@@ -79,12 +79,12 @@ func NewRemoteIPFSBlockstore(ctx context.Context, maddr multiaddr.Multiaddr, onl
return Adapt(bs), nil
}
func (i *IPFSBlockstore) DeleteBlock(cid cid.Cid) error {
func (i *IPFSBlockstore) DeleteBlock(ctx context.Context, cid cid.Cid) error {
return xerrors.Errorf("not supported")
}
func (i *IPFSBlockstore) Has(cid cid.Cid) (bool, error) {
_, err := i.offlineAPI.Block().Stat(i.ctx, path.IpldPath(cid))
func (i *IPFSBlockstore) Has(ctx context.Context, cid cid.Cid) (bool, error) {
_, err := i.offlineAPI.Block().Stat(ctx, path.IpldPath(cid))
if err != nil {
// The underlying client is running in Offline mode.
// Stat() will fail with an err if the block isn't in the
@@ -99,8 +99,8 @@ func (i *IPFSBlockstore) Has(cid cid.Cid) (bool, error) {
return true, nil
}
func (i *IPFSBlockstore) Get(cid cid.Cid) (blocks.Block, error) {
rd, err := i.api.Block().Get(i.ctx, path.IpldPath(cid))
func (i *IPFSBlockstore) Get(ctx context.Context, cid cid.Cid) (blocks.Block, error) {
rd, err := i.api.Block().Get(ctx, path.IpldPath(cid))
if err != nil {
return nil, xerrors.Errorf("getting ipfs block: %w", err)
}
@@ -113,8 +113,8 @@ func (i *IPFSBlockstore) Get(cid cid.Cid) (blocks.Block, error) {
return blocks.NewBlockWithCid(data, cid)
}
func (i *IPFSBlockstore) GetSize(cid cid.Cid) (int, error) {
st, err := i.api.Block().Stat(i.ctx, path.IpldPath(cid))
func (i *IPFSBlockstore) GetSize(ctx context.Context, cid cid.Cid) (int, error) {
st, err := i.api.Block().Stat(ctx, path.IpldPath(cid))
if err != nil {
return 0, xerrors.Errorf("getting ipfs block: %w", err)
}
@@ -122,23 +122,23 @@ func (i *IPFSBlockstore) GetSize(cid cid.Cid) (int, error) {
return st.Size(), nil
}
func (i *IPFSBlockstore) Put(block blocks.Block) error {
func (i *IPFSBlockstore) Put(ctx context.Context, block blocks.Block) error {
mhd, err := multihash.Decode(block.Cid().Hash())
if err != nil {
return err
}
_, err = i.api.Block().Put(i.ctx, bytes.NewReader(block.RawData()),
_, err = i.api.Block().Put(ctx, bytes.NewReader(block.RawData()),
options.Block.Hash(mhd.Code, mhd.Length),
options.Block.Format(cid.CodecToStr[block.Cid().Type()]))
return err
}
func (i *IPFSBlockstore) PutMany(blocks []blocks.Block) error {
func (i *IPFSBlockstore) PutMany(ctx context.Context, blocks []blocks.Block) error {
// TODO: could be done in parallel
for _, block := range blocks {
if err := i.Put(block); err != nil {
if err := i.Put(ctx, block); err != nil {
return err
}
}
+9 -9
View File
@@ -15,24 +15,24 @@ func NewMemory() MemBlockstore {
// MemBlockstore is a terminal blockstore that keeps blocks in memory.
type MemBlockstore map[cid.Cid]blocks.Block
func (m MemBlockstore) DeleteBlock(k cid.Cid) error {
func (m MemBlockstore) DeleteBlock(ctx context.Context, k cid.Cid) error {
delete(m, k)
return nil
}
func (m MemBlockstore) DeleteMany(ks []cid.Cid) error {
func (m MemBlockstore) DeleteMany(ctx context.Context, ks []cid.Cid) error {
for _, k := range ks {
delete(m, k)
}
return nil
}
func (m MemBlockstore) Has(k cid.Cid) (bool, error) {
func (m MemBlockstore) Has(ctx context.Context, k cid.Cid) (bool, error) {
_, ok := m[k]
return ok, nil
}
func (m MemBlockstore) View(k cid.Cid, callback func([]byte) error) error {
func (m MemBlockstore) View(ctx context.Context, k cid.Cid, callback func([]byte) error) error {
b, ok := m[k]
if !ok {
return ErrNotFound
@@ -40,7 +40,7 @@ func (m MemBlockstore) View(k cid.Cid, callback func([]byte) error) error {
return callback(b.RawData())
}
func (m MemBlockstore) Get(k cid.Cid) (blocks.Block, error) {
func (m MemBlockstore) Get(ctx context.Context, k cid.Cid) (blocks.Block, error) {
b, ok := m[k]
if !ok {
return nil, ErrNotFound
@@ -49,7 +49,7 @@ func (m MemBlockstore) Get(k cid.Cid) (blocks.Block, error) {
}
// GetSize returns the CIDs mapped BlockSize
func (m MemBlockstore) GetSize(k cid.Cid) (int, error) {
func (m MemBlockstore) GetSize(ctx context.Context, k cid.Cid) (int, error) {
b, ok := m[k]
if !ok {
return 0, ErrNotFound
@@ -58,7 +58,7 @@ func (m MemBlockstore) GetSize(k cid.Cid) (int, error) {
}
// Put puts a given block to the underlying datastore
func (m MemBlockstore) Put(b blocks.Block) error {
func (m MemBlockstore) Put(ctx context.Context, b blocks.Block) error {
// Convert to a basic block for safety, but try to reuse the existing
// block if it's already a basic block.
k := b.Cid()
@@ -76,9 +76,9 @@ func (m MemBlockstore) Put(b blocks.Block) error {
// PutMany puts a slice of blocks at the same time using batching
// capabilities of the underlying datastore whenever possible.
func (m MemBlockstore) PutMany(bs []blocks.Block) error {
func (m MemBlockstore) PutMany(ctx context.Context, bs []blocks.Block) error {
for _, b := range bs {
_ = m.Put(b) // can't fail
_ = m.Put(ctx, b) // can't fail
}
return nil
}
+132
View File
@@ -0,0 +1,132 @@
# SplitStore: An actively scalable blockstore for the Filecoin chain
The SplitStore was first introduced in lotus v1.5.1, as an experiment
in reducing the performance impact of large blockstores.
With lotus v1.11.1, we introduce the next iteration in design and
implementation, which we call SplitStore v1.
The new design (see [#6474](https://github.com/filecoin-project/lotus/pull/6474)
evolves the splitstore to be a freestanding compacting blockstore that
allows us to keep a small (60-100GB) working set in a hot blockstore
and reliably archive out of scope objects in a coldstore. The
coldstore can also be a discard store, whereby out of scope objects
are discarded or a regular badger blockstore (the default), which can
be periodically garbage collected according to configurable user
retention policies.
To enable the splitstore, edit `.lotus/config.toml` and add the following:
```
[Chainstore]
EnableSplitstore = true
```
If you intend to use the discard coldstore, your also need to add the following:
```
[Chainstore.Splitstore]
ColdStoreType = "discard"
```
In general you _should not_ have to use the discard store, unless you
are running a network assistive node (like a bootstrapper or booster)
or have very constrained hardware with not enough disk space to
maintain a coldstore, even with garbage collection. It is also appropriate
for small nodes that are simply watching the chain.
*Warning:* Using the discard store for a general purpose node is discouraged, unless
you really know what you are doing. Use it at your own risk.
## Configuration Options
These are options in the `[Chainstore.Splitstore]` section of the configuration:
- `HotStoreType` -- specifies the type of hotstore to use.
The only currently supported option is `"badger"`.
- `ColdStoreType` -- specifies the type of coldstore to use.
The default value is `"universal"`, which will use the initial monolith blockstore
as the coldstore.
The other possible value is `"discard"`, as outlined above, which is specialized for
running without a coldstore. Note that the discard store wraps the initial monolith
blockstore and discards writes; this is necessary to support syncing from a snapshot.
- `MarkSetType` -- specifies the type of markset to use during compaction.
The markset is the data structure used by compaction/gc to track live objects.
The default value is "badger", which will use a disk backed markset using badger.
If you have a lot of memory (48G or more) you can also use "map", which will use
an in memory markset, speeding up compaction at the cost of higher memory usage.
Note: If you are using a VPS with a network volume, you need to provision at least
3000 IOPs with the badger markset.
- `HotStoreMessageRetention` -- specifies how many finalities, beyond the 4
finalities maintained by default, to maintain messages and message receipts in the
hotstore. This is useful for assistive nodes that want to support syncing for other
nodes beyond 4 finalities, while running with the discard coldstore option.
It is also useful for miners who accept deals and need to lookback messages beyond
the 4 finalities, which would otherwise hit the coldstore.
- `HotStoreFullGCFrequency` -- specifies how frequenty to garbage collect the hotstore
using full (moving) GC.
The default value is 20, which uses full GC every 20 compactions (about once a week);
set to 0 to disable full GC altogether.
Rationale: badger supports online GC, and this is used by default. However it has proven to
be ineffective in practice with the hotstore size slowly creeping up. In order to address this,
we have added moving GC support in our badger wrapper, which can effectively reclaim all space.
The downside is that it takes a bit longer to perform a moving GC and you also need enough
space to house the new hotstore while the old one is still live.
## Operation
When the splitstore is first enabled, the existing blockstore becomes
the coldstore and a fresh hotstore is initialized.
The hotstore is warmed up on first startup so as to load all chain
headers and state roots in the current head. This allows us to
immediately gain the performance benefits of a smallerblockstore which
can be substantial for full archival nodes.
All new writes are directed to the hotstore, while reads first hit the
hotstore, with fallback to the coldstore.
Once 5 finalities have ellapsed, and every finality henceforth, the
blockstore _compacts_. Compaction is the process of moving all
unreachable objects within the last 4 finalities from the hotstore to
the coldstore. If the system is configured with a discard coldstore,
these objects are discarded. Note that chain headers, all the way to
genesis, are considered reachable. Stateroots and messages are
considered reachable only within the last 4 finalities, unless there
is a live reference to them.
## Compaction
Compaction works transactionally with the following algorithm:
- We prepare a transaction, whereby all i/o referenced objects through the API are tracked.
- We walk the chain and mark reachable objects, keeping 4 finalities of state roots and messages and all headers all the way to genesis.
- Once the chain walk is complete, we begin full transaction protection with concurrent marking; we walk and mark all references created during the chain walk. On the same time, all I/O through the API concurrently marks objects as live references.
- We collect cold objects by iterating through the hotstore and checking the mark set; if an object is not marked, then it is candidate for purge.
- When running with a coldstore, we next copy all cold objects to the coldstore.
- At this point we are ready to begin purging:
- We sort cold objects heaviest first, so as to never delete the consituents of a DAG before the DAG itself (which would leave dangling references)
- We delete in small batches taking a lock; each batch is checked again for marks, from the concurrent transactional mark, so as to never delete anything live
- We then end the transaction and compact/gc the hotstore.
As of [#8008](https://github.com/filecoin-project/lotus/pull/8008) the compaction algorithm has been
modified to eliminate sorting and maintain the cold object set on disk. This drastically reduces
memory usage; in fact, when using badger as the markset compaction uses very little memory, and
it should be now possible to run splitstore with 32GB of RAM or less without danger of running out of
memory during compaction.
## Garbage Collection
TBD -- see [#6577](https://github.com/filecoin-project/lotus/issues/6577)
## Utilities
`lotus-shed` has a `splitstore` command which provides some utilities:
- `rollback` -- rolls back a splitstore installation.
This command copies the hotstore on top of the coldstore, and then deletes the splitstore
directory and associated metadata keys.
It can also optionally compact/gc the coldstore after the copy (with the `--gc-coldstore` flag)
and automatically rewrite the lotus config to disable splitstore (with the `--rewrite-config` flag).
Note: the node *must be stopped* before running this command.
- `clear` -- clears a splitstore installation for restart from snapshot.
- `check` -- asynchronously runs a basic healthcheck on the splitstore.
The results are appended to `<lotus-repo>/datastore/splitstore/check.txt`.
- `info` -- prints some basic information about the splitstore.
+118
View File
@@ -0,0 +1,118 @@
package splitstore
import (
"bufio"
"io"
"os"
"golang.org/x/xerrors"
cid "github.com/ipfs/go-cid"
mh "github.com/multiformats/go-multihash"
)
type Checkpoint struct {
file *os.File
buf *bufio.Writer
}
func NewCheckpoint(path string) (*Checkpoint, error) {
file, err := os.OpenFile(path, os.O_CREATE|os.O_TRUNC|os.O_WRONLY|os.O_SYNC, 0644)
if err != nil {
return nil, xerrors.Errorf("error creating checkpoint: %w", err)
}
buf := bufio.NewWriter(file)
return &Checkpoint{
file: file,
buf: buf,
}, nil
}
func OpenCheckpoint(path string) (*Checkpoint, cid.Cid, error) {
filein, err := os.Open(path)
if err != nil {
return nil, cid.Undef, xerrors.Errorf("error opening checkpoint for reading: %w", err)
}
defer filein.Close() //nolint:errcheck
bufin := bufio.NewReader(filein)
start, err := readRawCid(bufin, nil)
if err != nil && err != io.EOF {
return nil, cid.Undef, xerrors.Errorf("error reading cid from checkpoint: %w", err)
}
fileout, err := os.OpenFile(path, os.O_WRONLY|os.O_SYNC, 0644)
if err != nil {
return nil, cid.Undef, xerrors.Errorf("error opening checkpoint for writing: %w", err)
}
bufout := bufio.NewWriter(fileout)
return &Checkpoint{
file: fileout,
buf: bufout,
}, start, nil
}
func (cp *Checkpoint) Set(c cid.Cid) error {
if _, err := cp.file.Seek(0, io.SeekStart); err != nil {
return xerrors.Errorf("error seeking beginning of checkpoint: %w", err)
}
if err := writeRawCid(cp.buf, c, true); err != nil {
return xerrors.Errorf("error writing cid to checkpoint: %w", err)
}
return nil
}
func (cp *Checkpoint) Close() error {
if cp.file == nil {
return nil
}
err := cp.file.Close()
cp.file = nil
cp.buf = nil
return err
}
func readRawCid(buf *bufio.Reader, hbuf []byte) (cid.Cid, error) {
sz, err := buf.ReadByte()
if err != nil {
return cid.Undef, err // don't wrap EOF as it is not an error here
}
if hbuf == nil {
hbuf = make([]byte, int(sz))
} else {
hbuf = hbuf[:int(sz)]
}
if _, err := io.ReadFull(buf, hbuf); err != nil {
return cid.Undef, xerrors.Errorf("error reading hash: %w", err) // wrap EOF, it's corrupt
}
hash, err := mh.Cast(hbuf)
if err != nil {
return cid.Undef, xerrors.Errorf("error casting multihash: %w", err)
}
return cid.NewCidV1(cid.Raw, hash), nil
}
func writeRawCid(buf *bufio.Writer, c cid.Cid, flush bool) error {
hash := c.Hash()
if err := buf.WriteByte(byte(len(hash))); err != nil {
return err
}
if _, err := buf.Write(hash); err != nil {
return err
}
if flush {
return buf.Flush()
}
return nil
}
+138
View File
@@ -0,0 +1,138 @@
package splitstore
import (
"path/filepath"
"testing"
"github.com/ipfs/go-cid"
"github.com/multiformats/go-multihash"
)
func TestCheckpoint(t *testing.T) {
dir := t.TempDir()
path := filepath.Join(dir, "checkpoint")
makeCid := func(key string) cid.Cid {
h, err := multihash.Sum([]byte(key), multihash.SHA2_256, -1)
if err != nil {
t.Fatal(err)
}
return cid.NewCidV1(cid.Raw, h)
}
k1 := makeCid("a")
k2 := makeCid("b")
k3 := makeCid("c")
k4 := makeCid("d")
cp, err := NewCheckpoint(path)
if err != nil {
t.Fatal(err)
}
if err := cp.Set(k1); err != nil {
t.Fatal(err)
}
if err := cp.Set(k2); err != nil {
t.Fatal(err)
}
if err := cp.Close(); err != nil {
t.Fatal(err)
}
cp, start, err := OpenCheckpoint(path)
if err != nil {
t.Fatal(err)
}
if !start.Equals(k2) {
t.Fatalf("expected start to be %s; got %s", k2, start)
}
if err := cp.Set(k3); err != nil {
t.Fatal(err)
}
if err := cp.Set(k4); err != nil {
t.Fatal(err)
}
if err := cp.Close(); err != nil {
t.Fatal(err)
}
cp, start, err = OpenCheckpoint(path)
if err != nil {
t.Fatal(err)
}
if !start.Equals(k4) {
t.Fatalf("expected start to be %s; got %s", k4, start)
}
if err := cp.Close(); err != nil {
t.Fatal(err)
}
// also test correct operation with an empty checkpoint
cp, err = NewCheckpoint(path)
if err != nil {
t.Fatal(err)
}
if err := cp.Close(); err != nil {
t.Fatal(err)
}
cp, start, err = OpenCheckpoint(path)
if err != nil {
t.Fatal(err)
}
if start.Defined() {
t.Fatal("expected start to be undefined")
}
if err := cp.Set(k1); err != nil {
t.Fatal(err)
}
if err := cp.Set(k2); err != nil {
t.Fatal(err)
}
if err := cp.Close(); err != nil {
t.Fatal(err)
}
cp, start, err = OpenCheckpoint(path)
if err != nil {
t.Fatal(err)
}
if !start.Equals(k2) {
t.Fatalf("expected start to be %s; got %s", k2, start)
}
if err := cp.Set(k3); err != nil {
t.Fatal(err)
}
if err := cp.Set(k4); err != nil {
t.Fatal(err)
}
if err := cp.Close(); err != nil {
t.Fatal(err)
}
cp, start, err = OpenCheckpoint(path)
if err != nil {
t.Fatal(err)
}
if !start.Equals(k4) {
t.Fatalf("expected start to be %s; got %s", k4, start)
}
if err := cp.Close(); err != nil {
t.Fatal(err)
}
}
+102
View File
@@ -0,0 +1,102 @@
package splitstore
import (
"bufio"
"io"
"os"
"golang.org/x/xerrors"
cid "github.com/ipfs/go-cid"
)
type ColdSetWriter struct {
file *os.File
buf *bufio.Writer
}
type ColdSetReader struct {
file *os.File
buf *bufio.Reader
}
func NewColdSetWriter(path string) (*ColdSetWriter, error) {
file, err := os.OpenFile(path, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0644)
if err != nil {
return nil, xerrors.Errorf("error creating coldset: %w", err)
}
buf := bufio.NewWriter(file)
return &ColdSetWriter{
file: file,
buf: buf,
}, nil
}
func NewColdSetReader(path string) (*ColdSetReader, error) {
file, err := os.Open(path)
if err != nil {
return nil, xerrors.Errorf("error opening coldset: %w", err)
}
buf := bufio.NewReader(file)
return &ColdSetReader{
file: file,
buf: buf,
}, nil
}
func (s *ColdSetWriter) Write(c cid.Cid) error {
return writeRawCid(s.buf, c, false)
}
func (s *ColdSetWriter) Close() error {
if s.file == nil {
return nil
}
err1 := s.buf.Flush()
err2 := s.file.Close()
s.buf = nil
s.file = nil
if err1 != nil {
return err1
}
return err2
}
func (s *ColdSetReader) ForEach(f func(cid.Cid) error) error {
hbuf := make([]byte, 256)
for {
next, err := readRawCid(s.buf, hbuf)
if err != nil {
if err == io.EOF {
return nil
}
return xerrors.Errorf("error reading coldset: %w", err)
}
if err := f(next); err != nil {
return err
}
}
}
func (s *ColdSetReader) Reset() error {
_, err := s.file.Seek(0, io.SeekStart)
return err
}
func (s *ColdSetReader) Close() error {
if s.file == nil {
return nil
}
err := s.file.Close()
s.file = nil
s.buf = nil
return err
}
+90
View File
@@ -0,0 +1,90 @@
package splitstore
import (
"fmt"
"path/filepath"
"testing"
"github.com/ipfs/go-cid"
"github.com/multiformats/go-multihash"
)
func TestColdSet(t *testing.T) {
dir := t.TempDir()
path := filepath.Join(dir, "coldset")
makeCid := func(i int) cid.Cid {
h, err := multihash.Sum([]byte(fmt.Sprintf("cid.%d", i)), multihash.SHA2_256, -1)
if err != nil {
t.Fatal(err)
}
return cid.NewCidV1(cid.Raw, h)
}
const count = 1000
cids := make([]cid.Cid, 0, count)
for i := 0; i < count; i++ {
cids = append(cids, makeCid(i))
}
cw, err := NewColdSetWriter(path)
if err != nil {
t.Fatal(err)
}
for _, c := range cids {
if err := cw.Write(c); err != nil {
t.Fatal(err)
}
}
if err := cw.Close(); err != nil {
t.Fatal(err)
}
cr, err := NewColdSetReader(path)
if err != nil {
t.Fatal(err)
}
index := 0
err = cr.ForEach(func(c cid.Cid) error {
if index >= count {
t.Fatal("too many cids")
}
if !c.Equals(cids[index]) {
t.Fatalf("wrong cid %d; expected %s but got %s", index, cids[index], c)
}
index++
return nil
})
if err != nil {
t.Fatal(err)
}
if err := cr.Reset(); err != nil {
t.Fatal(err)
}
index = 0
err = cr.ForEach(func(c cid.Cid) error {
if index >= count {
t.Fatal("too many cids")
}
if !c.Equals(cids[index]) {
t.Fatalf("wrong cid; expected %s but got %s", cids[index], c)
}
index++
return nil
})
if err != nil {
t.Fatal(err)
}
}
+273
View File
@@ -0,0 +1,273 @@
package splitstore
import (
"crypto/sha256"
"encoding/hex"
"fmt"
"os"
"os/exec"
"path/filepath"
"runtime/debug"
"strings"
"sync"
"time"
"go.uber.org/multierr"
"golang.org/x/xerrors"
blocks "github.com/ipfs/go-block-format"
cid "github.com/ipfs/go-cid"
)
type debugLog struct {
readLog, writeLog, deleteLog, stackLog *debugLogOp
stackMx sync.Mutex
stackMap map[string]string
}
type debugLogOp struct {
path string
mx sync.Mutex
log *os.File
count int
}
func openDebugLog(path string) (*debugLog, error) {
basePath := filepath.Join(path, "debug")
err := os.MkdirAll(basePath, 0755)
if err != nil {
return nil, err
}
readLog, err := openDebugLogOp(basePath, "read.log")
if err != nil {
return nil, err
}
writeLog, err := openDebugLogOp(basePath, "write.log")
if err != nil {
_ = readLog.Close()
return nil, err
}
deleteLog, err := openDebugLogOp(basePath, "delete.log")
if err != nil {
_ = readLog.Close()
_ = writeLog.Close()
return nil, err
}
stackLog, err := openDebugLogOp(basePath, "stack.log")
if err != nil {
_ = readLog.Close()
_ = writeLog.Close()
_ = deleteLog.Close()
return nil, xerrors.Errorf("error opening stack log: %w", err)
}
return &debugLog{
readLog: readLog,
writeLog: writeLog,
deleteLog: deleteLog,
stackLog: stackLog,
stackMap: make(map[string]string),
}, nil
}
func (d *debugLog) LogReadMiss(cid cid.Cid) {
if d == nil {
return
}
stack := d.getStack()
err := d.readLog.Log("%s %s %s\n", d.timestamp(), cid, stack)
if err != nil {
log.Warnf("error writing read log: %s", err)
}
}
func (d *debugLog) LogWrite(blk blocks.Block) {
if d == nil {
return
}
var stack string
if enableDebugLogWriteTraces {
stack = " " + d.getStack()
}
err := d.writeLog.Log("%s %s%s\n", d.timestamp(), blk.Cid(), stack)
if err != nil {
log.Warnf("error writing write log: %s", err)
}
}
func (d *debugLog) LogWriteMany(blks []blocks.Block) {
if d == nil {
return
}
var stack string
if enableDebugLogWriteTraces {
stack = " " + d.getStack()
}
now := d.timestamp()
for _, blk := range blks {
err := d.writeLog.Log("%s %s%s\n", now, blk.Cid(), stack)
if err != nil {
log.Warnf("error writing write log: %s", err)
break
}
}
}
func (d *debugLog) LogDelete(cids []cid.Cid) {
if d == nil {
return
}
now := d.timestamp()
for _, c := range cids {
err := d.deleteLog.Log("%s %s\n", now, c)
if err != nil {
log.Warnf("error writing delete log: %s", err)
break
}
}
}
func (d *debugLog) Flush() {
if d == nil {
return
}
// rotate non-empty logs
d.readLog.Rotate()
d.writeLog.Rotate()
d.deleteLog.Rotate()
d.stackLog.Rotate()
}
func (d *debugLog) Close() error {
if d == nil {
return nil
}
err1 := d.readLog.Close()
err2 := d.writeLog.Close()
err3 := d.deleteLog.Close()
err4 := d.stackLog.Close()
return multierr.Combine(err1, err2, err3, err4)
}
func (d *debugLog) getStack() string {
sk := d.getNormalizedStackTrace()
hash := sha256.Sum256([]byte(sk))
key := string(hash[:])
d.stackMx.Lock()
repr, ok := d.stackMap[key]
if !ok {
repr = hex.EncodeToString(hash[:])
d.stackMap[key] = repr
err := d.stackLog.Log("%s\n%s\n", repr, sk)
if err != nil {
log.Warnf("error writing stack trace for %s: %s", repr, err)
}
}
d.stackMx.Unlock()
return repr
}
func (d *debugLog) getNormalizedStackTrace() string {
sk := string(debug.Stack())
// Normalization for deduplication
// skip first line -- it's the goroutine
// for each line that ends in a ), remove the call args -- these are the registers
lines := strings.Split(sk, "\n")[1:]
for i, line := range lines {
if len(line) > 0 && line[len(line)-1] == ')' {
idx := strings.LastIndex(line, "(")
if idx < 0 {
continue
}
lines[i] = line[:idx]
}
}
return strings.Join(lines, "\n")
}
func (d *debugLog) timestamp() string {
ts, _ := time.Now().MarshalText()
return string(ts)
}
func openDebugLogOp(basePath, name string) (*debugLogOp, error) {
path := filepath.Join(basePath, name)
file, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
if err != nil {
return nil, xerrors.Errorf("error opening %s: %w", name, err)
}
return &debugLogOp{path: path, log: file}, nil
}
func (d *debugLogOp) Close() error {
d.mx.Lock()
defer d.mx.Unlock()
return d.log.Close()
}
func (d *debugLogOp) Log(template string, arg ...interface{}) error {
d.mx.Lock()
defer d.mx.Unlock()
d.count++
_, err := fmt.Fprintf(d.log, template, arg...)
return err
}
func (d *debugLogOp) Rotate() {
d.mx.Lock()
defer d.mx.Unlock()
if d.count == 0 {
return
}
err := d.log.Close()
if err != nil {
log.Warnf("error closing log (file: %s): %s", d.path, err)
return
}
arxivPath := fmt.Sprintf("%s-%d", d.path, time.Now().Unix())
err = os.Rename(d.path, arxivPath)
if err != nil {
log.Warnf("error moving log (file: %s): %s", d.path, err)
return
}
go func() {
cmd := exec.Command("gzip", arxivPath)
err := cmd.Run()
if err != nil {
log.Warnf("error compressing log (file: %s): %s", arxivPath, err)
}
}()
d.count = 0
d.log, err = os.OpenFile(d.path, os.O_WRONLY|os.O_CREATE, 0644)
if err != nil {
log.Warnf("error opening log (file: %s): %s", d.path, err)
return
}
}
+23 -13
View File
@@ -1,37 +1,47 @@
package splitstore
import (
"path/filepath"
"errors"
"golang.org/x/xerrors"
cid "github.com/ipfs/go-cid"
)
// MarkSet is a utility to keep track of seen CID, and later query for them.
//
// * If the expected dataset is large, it can be backed by a datastore (e.g. bbolt).
// * If a probabilistic result is acceptable, it can be backed by a bloom filter (default).
var errMarkSetClosed = errors.New("markset closed")
// MarkSet is an interface for tracking CIDs during chain and object walks
type MarkSet interface {
ObjectVisitor
Mark(cid.Cid) error
MarkMany([]cid.Cid) error
Has(cid.Cid) (bool, error)
Close() error
// BeginCriticalSection ensures that the markset is persisted to disk for recovery in case
// of abnormal termination during the critical section span.
BeginCriticalSection() error
// EndCriticalSection ends the critical section span.
EndCriticalSection()
}
// markBytes is deliberately a non-nil empty byte slice for serialization.
var markBytes = []byte{}
type MarkSetEnv interface {
Create(name string, sizeHint int64) (MarkSet, error)
// New creates a new markset within the environment.
// name is a unique name for this markset, mapped to the filesystem for on-disk persistence.
// sizeHint is a hint about the expected size of the markset
New(name string, sizeHint int64) (MarkSet, error)
// Recover recovers an existing markset persisted on-disk.
Recover(name string) (MarkSet, error)
// Close closes the markset
Close() error
}
func OpenMarkSetEnv(path string, mtype string) (MarkSetEnv, error) {
switch mtype {
case "", "bloom":
return NewBloomMarkSetEnv()
case "bolt":
return NewBoltMarkSetEnv(filepath.Join(path, "markset.bolt"))
case "map":
return NewMapMarkSetEnv(path)
case "badger":
return NewBadgerMarkSetEnv(path)
default:
return nil, xerrors.Errorf("unknown mark set type %s", mtype)
}
+451
View File
@@ -0,0 +1,451 @@
package splitstore
import (
"os"
"path/filepath"
"runtime"
"sync"
"golang.org/x/xerrors"
"github.com/dgraph-io/badger/v2"
"github.com/dgraph-io/badger/v2/options"
"go.uber.org/zap"
cid "github.com/ipfs/go-cid"
)
type BadgerMarkSetEnv struct {
path string
}
var _ MarkSetEnv = (*BadgerMarkSetEnv)(nil)
type BadgerMarkSet struct {
mx sync.RWMutex
cond sync.Cond
pend map[string]struct{}
writing map[int]map[string]struct{}
writers int
seqno int
version int
persist bool
db *badger.DB
path string
}
var _ MarkSet = (*BadgerMarkSet)(nil)
var badgerMarkSetBatchSize = 16384
func NewBadgerMarkSetEnv(path string) (MarkSetEnv, error) {
msPath := filepath.Join(path, "markset.badger")
err := os.MkdirAll(msPath, 0755) //nolint:gosec
if err != nil {
return nil, xerrors.Errorf("error creating markset directory: %w", err)
}
return &BadgerMarkSetEnv{path: msPath}, nil
}
func (e *BadgerMarkSetEnv) New(name string, sizeHint int64) (MarkSet, error) {
path := filepath.Join(e.path, name)
db, err := openBadgerDB(path, false)
if err != nil {
return nil, xerrors.Errorf("error creating badger db: %w", err)
}
ms := &BadgerMarkSet{
pend: make(map[string]struct{}),
writing: make(map[int]map[string]struct{}),
db: db,
path: path,
}
ms.cond.L = &ms.mx
return ms, nil
}
func (e *BadgerMarkSetEnv) Recover(name string) (MarkSet, error) {
path := filepath.Join(e.path, name)
if _, err := os.Stat(path); err != nil {
return nil, xerrors.Errorf("error stating badger db path: %w", err)
}
db, err := openBadgerDB(path, true)
if err != nil {
return nil, xerrors.Errorf("error creating badger db: %w", err)
}
ms := &BadgerMarkSet{
pend: make(map[string]struct{}),
writing: make(map[int]map[string]struct{}),
db: db,
path: path,
persist: true,
}
ms.cond.L = &ms.mx
return ms, nil
}
func (e *BadgerMarkSetEnv) Close() error {
return nil
}
func (s *BadgerMarkSet) BeginCriticalSection() error {
s.mx.Lock()
if s.persist {
s.mx.Unlock()
return nil
}
var write bool
var seqno int
if len(s.pend) > 0 {
write = true
seqno = s.nextBatch()
}
s.persist = true
s.mx.Unlock()
if write {
// all writes sync once perist is true
return s.write(seqno)
}
// wait for any pending writes and sync
s.mx.Lock()
for s.writers > 0 {
s.cond.Wait()
}
s.mx.Unlock()
return s.db.Sync()
}
func (s *BadgerMarkSet) EndCriticalSection() {
s.mx.Lock()
defer s.mx.Unlock()
s.persist = false
}
func (s *BadgerMarkSet) Mark(c cid.Cid) error {
s.mx.Lock()
if s.pend == nil {
s.mx.Unlock()
return errMarkSetClosed
}
write, seqno := s.put(string(c.Hash()))
s.mx.Unlock()
if write {
return s.write(seqno)
}
return nil
}
func (s *BadgerMarkSet) MarkMany(batch []cid.Cid) error {
s.mx.Lock()
if s.pend == nil {
s.mx.Unlock()
return errMarkSetClosed
}
write, seqno := s.putMany(batch)
s.mx.Unlock()
if write {
return s.write(seqno)
}
return nil
}
func (s *BadgerMarkSet) Has(c cid.Cid) (bool, error) {
s.mx.RLock()
defer s.mx.RUnlock()
key := c.Hash()
pendKey := string(key)
has, err := s.tryPending(pendKey)
if has || err != nil {
return has, err
}
return s.tryDB(key)
}
func (s *BadgerMarkSet) Visit(c cid.Cid) (bool, error) {
key := c.Hash()
pendKey := string(key)
s.mx.RLock()
has, err := s.tryPending(pendKey)
if has || err != nil {
s.mx.RUnlock()
return false, err
}
has, err = s.tryDB(key)
if has || err != nil {
s.mx.RUnlock()
return false, err
}
// we need to upgrade the lock to exclusive in order to write; take the version count to see
// if there was another write while we were upgrading
version := s.version
s.mx.RUnlock()
s.mx.Lock()
// we have to do the check dance again
has, err = s.tryPending(pendKey)
if has || err != nil {
s.mx.Unlock()
return false, err
}
if version != s.version {
// something was written to the db, we need to check it
has, err = s.tryDB(key)
if has || err != nil {
s.mx.Unlock()
return false, err
}
}
write, seqno := s.put(pendKey)
s.mx.Unlock()
if write {
err = s.write(seqno)
}
return true, err
}
// reader holds the (r)lock
func (s *BadgerMarkSet) tryPending(key string) (has bool, err error) {
if s.pend == nil {
return false, errMarkSetClosed
}
if _, ok := s.pend[key]; ok {
return true, nil
}
for _, wr := range s.writing {
if _, ok := wr[key]; ok {
return true, nil
}
}
return false, nil
}
func (s *BadgerMarkSet) tryDB(key []byte) (has bool, err error) {
err = s.db.View(func(txn *badger.Txn) error {
_, err := txn.Get(key)
return err
})
switch err {
case nil:
return true, nil
case badger.ErrKeyNotFound:
return false, nil
default:
return false, err
}
}
// writer holds the exclusive lock
func (s *BadgerMarkSet) put(key string) (write bool, seqno int) {
s.pend[key] = struct{}{}
if !s.persist && len(s.pend) < badgerMarkSetBatchSize {
return false, 0
}
seqno = s.nextBatch()
return true, seqno
}
func (s *BadgerMarkSet) putMany(batch []cid.Cid) (write bool, seqno int) {
for _, c := range batch {
key := string(c.Hash())
s.pend[key] = struct{}{}
}
if !s.persist && len(s.pend) < badgerMarkSetBatchSize {
return false, 0
}
seqno = s.nextBatch()
return true, seqno
}
func (s *BadgerMarkSet) nextBatch() int {
seqno := s.seqno
s.seqno++
s.writing[seqno] = s.pend
s.pend = make(map[string]struct{})
return seqno
}
func (s *BadgerMarkSet) write(seqno int) (err error) {
s.mx.Lock()
if s.pend == nil {
s.mx.Unlock()
return errMarkSetClosed
}
pend := s.writing[seqno]
s.writers++
s.mx.Unlock()
defer func() {
s.mx.Lock()
defer s.mx.Unlock()
if err == nil {
delete(s.writing, seqno)
s.version++
}
s.writers--
if s.writers == 0 {
s.cond.Broadcast()
}
}()
empty := []byte{} // not nil
batch := s.db.NewWriteBatch()
defer batch.Cancel()
for k := range pend {
if err = batch.Set([]byte(k), empty); err != nil {
return xerrors.Errorf("error setting batch: %w", err)
}
}
err = batch.Flush()
if err != nil {
return xerrors.Errorf("error flushing batch to badger markset: %w", err)
}
s.mx.RLock()
persist := s.persist
s.mx.RUnlock()
if persist {
return s.db.Sync()
}
return nil
}
func (s *BadgerMarkSet) Close() error {
s.mx.Lock()
defer s.mx.Unlock()
if s.pend == nil {
return nil
}
for s.writers > 0 {
s.cond.Wait()
}
s.pend = nil
db := s.db
s.db = nil
return closeBadgerDB(db, s.path, s.persist)
}
func openBadgerDB(path string, recover bool) (*badger.DB, error) {
// if it is not a recovery, clean up first
if !recover {
err := os.RemoveAll(path)
if err != nil {
return nil, xerrors.Errorf("error clearing markset directory: %w", err)
}
err = os.MkdirAll(path, 0755) //nolint:gosec
if err != nil {
return nil, xerrors.Errorf("error creating markset directory: %w", err)
}
}
opts := badger.DefaultOptions(path)
// we manually sync when we are in critical section
opts.SyncWrites = false
// no need to do that
opts.CompactL0OnClose = false
// we store hashes, not much to gain by compression
opts.Compression = options.None
// Note: We use FileIO for loading modes to avoid memory thrashing and interference
// between the system blockstore and the markset.
// It was observed that using the default memory mapped option resulted in
// significant interference and unacceptably high block validation times once the markset
// exceeded 1GB in size.
opts.TableLoadingMode = options.FileIO
opts.ValueLogLoadingMode = options.FileIO
// We increase the number of L0 tables before compaction to make it unlikely to
// be necessary.
opts.NumLevelZeroTables = 20 // default is 5
opts.NumLevelZeroTablesStall = 30 // default is 10
// increase the number of compactors from default 2 so that if we ever have to
// compact, it is fast
if runtime.NumCPU()/2 > opts.NumCompactors {
opts.NumCompactors = runtime.NumCPU() / 2
}
opts.Logger = &badgerLogger{
SugaredLogger: log.Desugar().WithOptions(zap.AddCallerSkip(1)).Sugar(),
skip2: log.Desugar().WithOptions(zap.AddCallerSkip(2)).Sugar(),
}
return badger.Open(opts)
}
func closeBadgerDB(db *badger.DB, path string, persist bool) error {
err := db.Close()
if err != nil {
return xerrors.Errorf("error closing badger markset: %w", err)
}
if persist {
return nil
}
err = os.RemoveAll(path)
if err != nil {
return xerrors.Errorf("error deleting badger markset: %w", err)
}
return nil
}
// badger logging through go-log
type badgerLogger struct {
*zap.SugaredLogger
skip2 *zap.SugaredLogger
}
func (b *badgerLogger) Warningf(format string, args ...interface{}) {}
func (b *badgerLogger) Infof(format string, args ...interface{}) {}
func (b *badgerLogger) Debugf(format string, args ...interface{}) {}
-77
View File
@@ -1,77 +0,0 @@
package splitstore
import (
"crypto/rand"
"crypto/sha256"
"golang.org/x/xerrors"
bbloom "github.com/ipfs/bbloom"
cid "github.com/ipfs/go-cid"
)
const (
BloomFilterMinSize = 10_000_000
BloomFilterProbability = 0.01
)
type BloomMarkSetEnv struct{}
var _ MarkSetEnv = (*BloomMarkSetEnv)(nil)
type BloomMarkSet struct {
salt []byte
bf *bbloom.Bloom
}
var _ MarkSet = (*BloomMarkSet)(nil)
func NewBloomMarkSetEnv() (*BloomMarkSetEnv, error) {
return &BloomMarkSetEnv{}, nil
}
func (e *BloomMarkSetEnv) Create(name string, sizeHint int64) (MarkSet, error) {
size := int64(BloomFilterMinSize)
for size < sizeHint {
size += BloomFilterMinSize
}
salt := make([]byte, 4)
_, err := rand.Read(salt)
if err != nil {
return nil, xerrors.Errorf("error reading salt: %w", err)
}
bf, err := bbloom.New(float64(size), BloomFilterProbability)
if err != nil {
return nil, xerrors.Errorf("error creating bloom filter: %w", err)
}
return &BloomMarkSet{salt: salt, bf: bf}, nil
}
func (e *BloomMarkSetEnv) Close() error {
return nil
}
func (s *BloomMarkSet) saltedKey(cid cid.Cid) []byte {
hash := cid.Hash()
key := make([]byte, len(s.salt)+len(hash))
n := copy(key, s.salt)
copy(key[n:], hash)
rehash := sha256.Sum256(key)
return rehash[:]
}
func (s *BloomMarkSet) Mark(cid cid.Cid) error {
s.bf.Add(s.saltedKey(cid))
return nil
}
func (s *BloomMarkSet) Has(cid cid.Cid) (bool, error) {
return s.bf.Has(s.saltedKey(cid)), nil
}
func (s *BloomMarkSet) Close() error {
return nil
}
-81
View File
@@ -1,81 +0,0 @@
package splitstore
import (
"time"
"golang.org/x/xerrors"
cid "github.com/ipfs/go-cid"
bolt "go.etcd.io/bbolt"
)
type BoltMarkSetEnv struct {
db *bolt.DB
}
var _ MarkSetEnv = (*BoltMarkSetEnv)(nil)
type BoltMarkSet struct {
db *bolt.DB
bucketId []byte
}
var _ MarkSet = (*BoltMarkSet)(nil)
func NewBoltMarkSetEnv(path string) (*BoltMarkSetEnv, error) {
db, err := bolt.Open(path, 0644,
&bolt.Options{
Timeout: 1 * time.Second,
NoSync: true,
})
if err != nil {
return nil, err
}
return &BoltMarkSetEnv{db: db}, nil
}
func (e *BoltMarkSetEnv) Create(name string, hint int64) (MarkSet, error) {
bucketId := []byte(name)
err := e.db.Update(func(tx *bolt.Tx) error {
_, err := tx.CreateBucketIfNotExists(bucketId)
if err != nil {
return xerrors.Errorf("error creating bolt db bucket %s: %w", name, err)
}
return nil
})
if err != nil {
return nil, err
}
return &BoltMarkSet{db: e.db, bucketId: bucketId}, nil
}
func (e *BoltMarkSetEnv) Close() error {
return e.db.Close()
}
func (s *BoltMarkSet) Mark(cid cid.Cid) error {
return s.db.Update(func(tx *bolt.Tx) error {
b := tx.Bucket(s.bucketId)
return b.Put(cid.Hash(), markBytes)
})
}
func (s *BoltMarkSet) Has(cid cid.Cid) (result bool, err error) {
err = s.db.View(func(tx *bolt.Tx) error {
b := tx.Bucket(s.bucketId)
v := b.Get(cid.Hash())
result = v != nil
return nil
})
return result, err
}
func (s *BoltMarkSet) Close() error {
return s.db.Update(func(tx *bolt.Tx) error {
return tx.DeleteBucket(s.bucketId)
})
}
+289
View File
@@ -0,0 +1,289 @@
package splitstore
import (
"bufio"
"io"
"os"
"path/filepath"
"sync"
"golang.org/x/xerrors"
cid "github.com/ipfs/go-cid"
)
type MapMarkSetEnv struct {
path string
}
var _ MarkSetEnv = (*MapMarkSetEnv)(nil)
type MapMarkSet struct {
mx sync.RWMutex
set map[string]struct{}
persist bool
file *os.File
buf *bufio.Writer
path string
}
var _ MarkSet = (*MapMarkSet)(nil)
func NewMapMarkSetEnv(path string) (*MapMarkSetEnv, error) {
msPath := filepath.Join(path, "markset.map")
err := os.MkdirAll(msPath, 0755) //nolint:gosec
if err != nil {
return nil, xerrors.Errorf("error creating markset directory: %w", err)
}
return &MapMarkSetEnv{path: msPath}, nil
}
func (e *MapMarkSetEnv) New(name string, sizeHint int64) (MarkSet, error) {
path := filepath.Join(e.path, name)
return &MapMarkSet{
set: make(map[string]struct{}, sizeHint),
path: path,
}, nil
}
func (e *MapMarkSetEnv) Recover(name string) (MarkSet, error) {
path := filepath.Join(e.path, name)
s := &MapMarkSet{
set: make(map[string]struct{}),
path: path,
}
in, err := os.Open(path)
if err != nil {
return nil, xerrors.Errorf("error opening markset file for read: %w", err)
}
defer in.Close() //nolint:errcheck
// wrap a buffered reader to make this faster
buf := bufio.NewReader(in)
for {
var sz byte
if sz, err = buf.ReadByte(); err != nil {
break
}
key := make([]byte, int(sz))
if _, err = io.ReadFull(buf, key); err != nil {
break
}
s.set[string(key)] = struct{}{}
}
if err != io.EOF {
return nil, xerrors.Errorf("error reading markset file: %w", err)
}
file, err := os.OpenFile(s.path, os.O_WRONLY|os.O_APPEND, 0)
if err != nil {
return nil, xerrors.Errorf("error opening markset file for write: %w", err)
}
s.persist = true
s.file = file
s.buf = bufio.NewWriter(file)
return s, nil
}
func (e *MapMarkSetEnv) Close() error {
return nil
}
func (s *MapMarkSet) BeginCriticalSection() error {
s.mx.Lock()
defer s.mx.Unlock()
if s.set == nil {
return errMarkSetClosed
}
if s.persist {
return nil
}
file, err := os.OpenFile(s.path, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0644)
if err != nil {
return xerrors.Errorf("error opening markset file: %w", err)
}
// wrap a buffered writer to make this faster
s.buf = bufio.NewWriter(file)
for key := range s.set {
if err := s.writeKey([]byte(key), false); err != nil {
_ = file.Close()
s.buf = nil
return err
}
}
if err := s.buf.Flush(); err != nil {
_ = file.Close()
s.buf = nil
return xerrors.Errorf("error flushing markset file buffer: %w", err)
}
s.file = file
s.persist = true
return nil
}
func (s *MapMarkSet) EndCriticalSection() {
s.mx.Lock()
defer s.mx.Unlock()
if !s.persist {
return
}
_ = s.file.Close()
_ = os.Remove(s.path)
s.file = nil
s.buf = nil
s.persist = false
}
func (s *MapMarkSet) Mark(c cid.Cid) error {
s.mx.Lock()
defer s.mx.Unlock()
if s.set == nil {
return errMarkSetClosed
}
hash := c.Hash()
s.set[string(hash)] = struct{}{}
if s.persist {
if err := s.writeKey(hash, true); err != nil {
return err
}
if err := s.file.Sync(); err != nil {
return xerrors.Errorf("error syncing markset: %w", err)
}
}
return nil
}
func (s *MapMarkSet) MarkMany(batch []cid.Cid) error {
s.mx.Lock()
defer s.mx.Unlock()
if s.set == nil {
return errMarkSetClosed
}
for _, c := range batch {
hash := c.Hash()
s.set[string(hash)] = struct{}{}
if s.persist {
if err := s.writeKey(hash, false); err != nil {
return err
}
}
}
if s.persist {
if err := s.buf.Flush(); err != nil {
return xerrors.Errorf("error flushing markset buffer to disk: %w", err)
}
if err := s.file.Sync(); err != nil {
return xerrors.Errorf("error syncing markset: %w", err)
}
}
return nil
}
func (s *MapMarkSet) Has(cid cid.Cid) (bool, error) {
s.mx.RLock()
defer s.mx.RUnlock()
if s.set == nil {
return false, errMarkSetClosed
}
_, ok := s.set[string(cid.Hash())]
return ok, nil
}
func (s *MapMarkSet) Visit(c cid.Cid) (bool, error) {
s.mx.Lock()
defer s.mx.Unlock()
if s.set == nil {
return false, errMarkSetClosed
}
hash := c.Hash()
key := string(hash)
if _, ok := s.set[key]; ok {
return false, nil
}
s.set[key] = struct{}{}
if s.persist {
if err := s.writeKey(hash, true); err != nil {
return false, err
}
if err := s.file.Sync(); err != nil {
return false, xerrors.Errorf("error syncing markset: %w", err)
}
}
return true, nil
}
func (s *MapMarkSet) Close() error {
s.mx.Lock()
defer s.mx.Unlock()
if s.set == nil {
return nil
}
s.set = nil
if s.file != nil {
if err := s.file.Close(); err != nil {
log.Warnf("error closing markset file: %s", err)
}
if !s.persist {
if err := os.Remove(s.path); err != nil {
log.Warnf("error removing markset file: %s", err)
}
}
}
return nil
}
func (s *MapMarkSet) writeKey(k []byte, flush bool) error {
if err := s.buf.WriteByte(byte(len(k))); err != nil {
return xerrors.Errorf("error writing markset key length to disk: %w", err)
}
if _, err := s.buf.Write(k); err != nil {
return xerrors.Errorf("error writing markset key to disk: %w", err)
}
if flush {
if err := s.buf.Flush(); err != nil {
return xerrors.Errorf("error flushing markset buffer to disk: %w", err)
}
}
return nil
}

Some files were not shown because too many files have changed in this diff Show More