This allows specifying the port only for the listening address, the address that is announced on the DHT for peer connections. It makes the developer experience less confusing, and easier to change for things like port forwarding.
# Conflicts:
# storage/storage.nim
# tests/integration/multinodes.nim
* Use totalRemainingCollateral instead of totalCollateral to compare the availability changes
* Update test to use totalRemainingCollateral instead of totalCollateral when testing OnAvailabilitySaved
* Reduce poll interval
* Fix flaky test
* Fix format
* chore: bump Nim to 2.2.4
* fix: resolve symbol ambiguity and drop auto type
* fix: use reference to task instead of pointer or the compiler will deallocate `task` before the encoding/decoding is done
* fix: convention that maxCollateralPerByte equals totalRemainingCollateral when freeSize is 0 to avoid DivByZeroDefect
* fix: bump compiler version in CI pipeline as well
* Change token allowance method because increaseAllowance does not exist anymore
* Returns collateral when a reservation is deleted and not only a slot is filled
* Remove the returnedCollateral when the slot is not filled by the host
* Add returnedCollateral when the sale is ignored
* Add returnsCollateral variable for ignored state
* Rebase the contracts submodule on the master
* Add integration test
* Fix duration
* Remove unnecessary teardown function
* Remove misleading comment
* Get returned collateral from the request
* Enable logs to debug on CI
* Fix test
* Increase test timeout
* Fix typo
* Fix rebase
* fix(sales): handle cancellation of slot cleanup
Ensures that processing slots from the slot queue
continues even when cleanup of a slot is cancelled.
Co-Authored-By: Eric <5089238+emizzle@users.noreply.github.com>
* chore(reservations): add more `raises` annotations
* Fix cleanup cancellation
* Add remove-agent to trackedfutures instead of the cleanup function
* Increase the timeout to match the request expiry
* Enable logs to debug on CI
* Remove useless except and do not return when add item back to slot queue fails
* Reduce poll interval to detect sale cancelled state
* Avoid cancelling cleanup routine
* Do not cancel creating reservation in order to avoid inconsistent state
* Remove useless try except
---------
Co-authored-by: Mark Spanbroek <mark@spanbroek.net>
Co-authored-by: Eric <5089238+emizzle@users.noreply.github.com>
* integration: shutdown codex node at end of test
On Windows the codex node did not shut down properly after this test
finished.
* contracts: fix flaky test
* Switch to websocket
* Create resubscribe future
* Resubscribe websocket events after 5 minutes
* Remove the subscribe workaround and use define the resubscribe symbol
* Use localhost for ws url
* Define 240 seconds for resubscription interval
* Ensute that updates are sync when using ws
* checked exceptions in stores
* makes asynciter as much exception safe as it gets
* introduce "SafeAsyncIter" that uses Results and limits exceptions to cancellations
* adds {.push raises: [].} to errors
* uses SafeAsyncIter in "listBlocks" and in "getBlockExpirations"
* simplifies safeasynciter (magic of auto)
* gets rid of ugly casts
* tiny fix in hte way we create raising futures in tests of safeasynciter
* Removes two more casts caused by using checked exceptions
* adds an extended explanation of one more complex SafeAsyncIter test
* adds missing "finishOnErr" param in slice constructor of SafeAsyncIter
* better fix for "Error: Exception can raise an unlisted exception: Exception" error.
---------
Co-authored-by: Dmitriy Ryajov <dryajov@gmail.com>
* fix(slotqueue): simplify slot queue workers
- worker is now just an async running loop
- instead of passing a "done" Future, use an
AsyncEvent to signal completion
* chore(slotqueue): address review comments
Co-Authored-By: Eric <5089238+emizzle@users.noreply.github.com>
Co-Authored-By: Dmitriy Ryajov <dryajov@gmail.com>
---------
Co-authored-by: Eric <5089238+emizzle@users.noreply.github.com>
Co-authored-by: Dmitriy Ryajov <dryajov@gmail.com>
Bump contracts to master branch.
There was a change that allowed hardhat to have multiple blocks with the same timestamp, so this needed to be reflected in two tests.
* makes sure we do not call "get" on unverified result
* make handling of failed blocks in fetchBatched even more explicit
* simplifies allFinishedValues and makes it independent from allFinishedFailed
* only sleep if not iter.finished in fetchBatched
* Catch Marketplace_SlotIsFree and continue the cancelled process
* Add log message when the slot if free during failed state
* Reduce log level to debug for slot free error
* Separate slot mock errors
* Initialize variable in setyp
* Improve tests
* Remove non-meaningful checks and rename test
* Remove the Option in the error setters
* Return collateral when the state is cancelled only if the slot is filled by the host
* Do not propagate AsyncLockError
* Wrap contract error into specific error type
* Remove debug message
* Catch only SlotStateMismatchError in cancelled
* Fix error
* Remove returnBytesWas
* Use MarketError after raises pragma were defined
* Fix typo
* Fix lint
* Add availability enabled parameter
* Return bytes to availability when finished
* Add until parameter
* Remove debug message
* Clean up and fix tests
* Update documentations and cleanup
* Avoid swallowing CancelledError
* Move until validation to reservations module
* Call onAvailabilityAdded callabck when the availability is enabled in sales
* Remove until validation in restapi when creating an availability
* Add openapi documentation
* Use results instead of stew/results (#1112)
* feat: request duration limit (#1057)
* feat: request duration limit
* Fix tests and duration type
* Add custom error
* Remove merge issue
* Update codex contracts eth
* Update market config and fix test
* Fix SlotReservationsConfig syntax
* Update dependencies
* test: remove doubled test
* chore: update contracts repo
---------
Co-authored-by: Arnaud <arnaud@status.im>
* fix(statemachine): do not raise from state.run (#1115)
* fix(statemachine): do not raise from state.run
* fix rebase
* fix exception handling in SaleProvingSimulated.prove
- re-raise CancelledError
- don't return State on CatchableError
- expect the Proofs_InvalidProof custom error instead of checking a string
* asyncSpawn salesagent.onCancelled
This was swallowing a KeyError in one of the tests (fixed in the previous commit)
* remove error handling states in asyncstatemachine
* revert unneeded changes
* formatting
* PR feedback, logging updates
* chore(integration): simplify block expiration integration test (#1100)
* chore(integration): simplify block expiration integration test
* clean up
* fix after rebase
* perf: contract storage optimizations (#1094)
* perf: contract storage optimizations
* Apply optimization changes
* Apply optimizing parameters sizing
* Update codex-contracts-eth
* bump latest changes in contracts branch
* Change requestDurationLimit to uint64
* fix tests
* fix tests
---------
Co-authored-by: Arnaud <arnaud@status.im>
Co-authored-by: Eric <5089238+emizzle@users.noreply.github.com>
* bump contracts to master (#1122)
* Add availability enabled parameter
* Return bytes to availability when finished
* Add until parameter
* Clean up and fix tests
* Move until validation to reservations module
* Apply suggestion changes: return the reservation module error
* Apply suggestion changes for until dates
* Apply suggestion changes: reorganize tests
* Fix indent
* Remove test related to timing issue
* Add raises errors to async pragram and remove useless try except
* Update open api documentation
* Fix wording
* Remove the httpClient restart statements
* Use market.getRequestEnd to set validUntil
* Remove returnBytes
* Use clock.now in testing
* Move the api validation file to the right file
---------
Co-authored-by: Adam Uhlíř <adam@uhlir.dev>
Co-authored-by: Eric <5089238+emizzle@users.noreply.github.com>
* Use 422 http code when there is a validation error
* Update the open api description
* Fix typo
* Add more tests for total size
* Catch CancelledError because TrackedFuture raise no error
* Split rest api validation test to a new file
* Change the way of testing negative numbers
* Rename client variable and fix test status code
* Try to reduce the number of requests in CI when asserting in tests
* Fix rebase and remove safeEventually
* Add request validations
* Define expiry as required field in storage request params and fix tests
* Fix error messages
* Enable logs to figure out the issue with recurring failing test on macos
* Add custom errors raised by contract
* Remove custom error non existing anymore
* Update asynctest module
* Update timer tests after updating asynctest
* Add missing custom errors
* Separate mock state errors
* Remove the Option in the error setters
* Wrap the contract errors in MarketError
* Remove async raises (needs to address it in another PR)
* Wrap contract errors into specific error types
* Rename SlotNotFreeError to SlotStateMismatchError
* WiP: migrating CodexClient to chronos http client
* fix(api): fixes#1163
* feat: fully working API integration tests
* convert most of the tests in testupdownload
* feat: working updownload tests on async client
* feat: make testsales work with async codexclient
* feat: make testpurchasing work with async codexclient
* feat: make testblockexpiration work with async codexclient
* feat: make marketplacesuite work with async codexclient
* make testproofs work with async codexclient
* chore: refactor client to express higher level in terms of lower level operations
* fix: set correct content-length for erasure-coded datasets
* feat: make testecbug work with async client
* feat: make testvalidator work with async client
* refactor: simplify request aliases, add close operation
* wire back client.close at node shutdown
* refactor: remove unused exception
* fix: use await instead of waitFor on async call sites