Fixes#26505 where the console crashed when a property getter
raised an exception during autocompletion. I also noticed while fixing this
issue that autocomplete wasn't working for objects/fields with numbers in
them (most importantly web3.<tab><tab>) which is also now fixed.
This PR does a few things.
It fixes a shutdown-order flaw in the chainfreezer. Previously, the chain-freezer would shutdown the freezer backend first, and then signal for the loop to exit. This can lead to a scenario where the freezer tries to fsync closed files, which is an error-conditon that could lead to exit via log.Crit.
It also makes the printout more detailed when truncating 'dangling' items, by showing the exact number instead of approximate MB.
This PR also adds calls to fsync files before closing them, and also makes the `db inspect` command slightly more robust.
* internal/flags: use filepath.Clean instead of path.Clean
* internal/flags: fix windows pipe issue
* internal/flags: modify test for windows
* internal/flags: use backticks, fix test
This PR fixes an issue which might result in data lost in freezer.
Whenever mutation happens in freezer, all data will be written into head data file
and it will be rotated with a new one in case the size of file reaches the threshold.
Theoretically, the rotated old data file should be fsync'd to prevent data loss.
In freezer.Sync function, we only fsync: (1) index file (2) meta file and (3) head
data file. So this PR forcibly fsync the head data file if mutation happens in the
boundary of data file.
* Adding in Mumbai/Mainnet precursor deb packaging for tests to use during upgrade(iterations to come)
* Added changes per discussion in PR, more changes may be necessary
* Adding prerelease true
* Disabling goreleaser
* Removing README swap file
* change bor_dir and add bor user for v0.3.0 release
* rollback bor user and use root
* metrics: handle equal to separated config flag (#596)
* metrics: handle based config path
* internal/cli/server: add more context to logs
* use space separated flag and value in bor.service
* fixed static-nodes related buf (os independent) (#598)
* fixed static-nodes related buf (os independent)
* taking static-nodes as input if default not present
* Update default flags (#600)
* internal/cli/server: use geth's default for txpool.pricelimit and add comments
* builder/files: update config.toml for mainnet
* packaging/templates: update defaults for mainnet and mumbai
* internal/cli/server: skip overriding cache
* packaging/templates: update cache value for mainnet
* packaging/templates: update gcmode for archive mumbai node
* metrics: handle nil telemetry config (#601)
* resolve merge conflicts
* update go version in release.yml
* update goversion in makefile
* update Docker login for goreleaser-cross v1.19
* Cleanup for the packager to use git tag in the package profile naming. Added conditional check for directory structure, this is in prep for v0.3.1, as this will create a failure on upgrade path in package due to file exist
* added a toml configuration file with comments describing each flag (#607)
* added a toml configuration file with comments describing each flag
* internal/cli/server: update flag description
* docs/cli: update example config and description of flags
* docs: update new-cli docs
Co-authored-by: Manav Darji <manavdarji.india@gmail.com>
* Adding of 0.3.0 package changes, control file updates, postinst changes, and packager update
* added ancient datadir flag and toml field, need to decide on default value and update the conversion script
* updated toml files with ancient field
* Add support for new flags in new config.toml, which were present in old config.toml (#612)
* added HTTPTimeouts, and TrieTimeout flag in new tol, from old toml
* added RAW fields for these time.Duration flags
* updated the conversion script to support these extra 4 flags
* removed hcl and json config tests as we are only supporting toml config files
* updated toml files with cache.timeout field
* updated toml files with jsonrpc.timeouts field
* tests/bor: expect a call for latest checkpoint
* tests/bor: expect a call for latest checkpoint
* packaging/templates: update cache values for archive nodes
Co-authored-by: Manav Darji <manavdarji.india@gmail.com>
* remove unwanted code
* Fix docker publish authentication issue
In gorelease-cross 1.19+, dockerhub authentication will require docker
logion action followed by mounting docker config file. See
https://github.com/goreleaser/goreleaser-cross#github-actions.
* Revert "update Docker login for goreleaser-cross v1.19"
This reverts commit 4d19cf5342.
* Bump version to stable
* Revert "Merge pull request #435 from maticnetwork/POS-553"
This reverts commit 657d262def, reversing
changes made to 88dbfa1c13.
* revert change for release for go1.19
* Add default values to CLI helper and docs
This commit adds default values to CLI helper and docs. When the default value of a string flag, slice string flag, or map string flag is empty, its helper message won't show any default value.
* Add a summary of new CLI in docs
* Updating packager as binutils changed version so that apt-get installs current versions
* Add state pruning to new CLI
* Minor wording fix in prune state description
* Bumping control file versions
* Mainnet Delhi fork
* Set version to stable
* change delhi hardfork block number
* handle future chain import and skip peer drop (#650)
* handle future chain import and skip peer drop
* add block import metric
* params: bump version to v0.3.3-stable
* Bump bor version in control files for v0.3.3 mainnet release
Co-authored-by: Daniel Jones <djones@polygon.technology>
Co-authored-by: Will Button <wbutton@polygon.technology>
Co-authored-by: Will Button <will@willbutton.com>
Co-authored-by: Manav Darji <manavdarji.india@gmail.com>
Co-authored-by: Daniel Jones <105369507+djpolygon@users.noreply.github.com>
Co-authored-by: Pratik Patil <pratikspatil024@gmail.com>
Co-authored-by: Arpit Temani <temaniarpit27@gmail.com>
Co-authored-by: Jerry <jerrycgh@gmail.com>
Implementation of https://eips.ethereum.org/EIPS/eip-3860, limit and meter initcode. This PR enables EIP-3860 as part of the Shanghai fork.
Co-authored-by: lightclient@protonmail.com <lightclient@protonmail.com>
Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
In legacy (pre-merge) sync mode, headers were contiguously downloaded from the network and when no more headers were available, we checked every few seconds whether there are 64 new blocks to move the pivot.
In beacon (post-merge) sync mode, we don't need to check for new skeleton headers non stop, since those re delivered one by one by the engine API. The missing code snippet from the header fetcher was to actually look at the latest head and move the pivot if it was more than 2*64-8 away. This PR adds the missing movement logic.
This makes non-JS tracers execute all block txs on a single goroutine.
In the previous implementation, we used to prepare every tx pre-state
on one goroutine, and then run the transactions again with tracing enabled.
Native tracers are usually faster, so it is faster overall to use their output as
the pre-state for tracing the next transaction.
Co-authored-by: Sina Mahmoodi <itz.s1na@gmail.com>
This PR removes the notion of fakeStorage from the state objects, and instead, for any state modifications that are needed, it simply makes the changes.
* p2p/discover: add more packet information in logs
This adds more fields to discv5 packet logs. These can be useful when
debugging multi-packet interactions.
The FINDNODE message also gets an additional field, OpID for debugging
purposes. This field is not encoded onto the wire.
I'm also removing topic system related message types in this change.
These will come back in the future, where support for them will be
guarded by a config flag.
* p2p/discover/v5wire: rename 'Total' to 'RespCount'
The new name captures the meaning of this field better.
Alarm is a timer utility that simplifies code where a timer needs to be rescheduled over
and over. Doing this can be tricky with time.Timer or time.AfterFunc because the channel
requires draining in some cases.
Alarm is optimized for use cases where items are tracked in a heap according to their expiry
time, and a goroutine with a for/select loop wants to be woken up whenever the next item expires.
In this application, the timer needs to be rescheduled when an item is added or removed
from the heap. Using a timer naively, these updates will always require synchronization
with the global runtime timer datastructure to update the timer using Reset. Alarm avoids
this by tracking the next expiry time and only modifies the timer if it would need to fire earlier
than already scheduled.
As an example use, I have converted p2p.dialScheduler to use Alarm instead of AfterFunc.