mirror of
https://github.com/status-im/nimbus-eth1.git
synced 2025-01-30 14:05:23 +00:00
f20f20f962
* Enable `snap/1` accounts range service * Allow to change the garbage collector to `boehm` as a Makefile option. why: There is still an unsolved memory corruption problem that might be related to the standard `gc`. It seemingly goes away if the `gc` is changed to `boehm`. Specifying another `gc` on the make level simplifies debugging and development. * Code cosmetics details: * updated exception annotations * extracted `worker_desc.nim` from `full/worker.nim` * etc. * Implement option to state a sync modifier file why: This allows to specify extra sync type specific options which might change over time. This file is regularly checked for updates. * Implement a threshold when to suspend full syncing why: For a test scenario, a full sync beep may work as a local snap server. There is no need to download the full block chain. details: The file containing the pivot specs is specified by the `--sync-ctrl-file` option. It is regularly parsed for updates.
57 lines
1.8 KiB
Nim
57 lines
1.8 KiB
Nim
# Nimbus
|
|
# Copyright (c) 2021 Status Research & Development GmbH
|
|
# Licensed under either of
|
|
# * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
|
|
# http://www.apache.org/licenses/LICENSE-2.0)
|
|
# * MIT license ([LICENSE-MIT](LICENSE-MIT) or
|
|
# http://opensource.org/licenses/MIT)
|
|
# at your option. This file may not be copied, modified, or distributed
|
|
# except according to those terms.
|
|
|
|
{.push raises: [].}
|
|
|
|
import
|
|
std/[os, strutils],
|
|
chronicles,
|
|
eth/[common, p2p]
|
|
|
|
logScope:
|
|
topics = "sync-ctrl"
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# Private functions
|
|
# ------------------------------------------------------------------------------
|
|
|
|
proc getDataLine(name: string): string {.gcsafe, raises: [IOError].} =
|
|
if name.fileExists:
|
|
let file = name.open
|
|
defer: file.close
|
|
return (file.readAll.splitLines)[0].strip
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# Public functions
|
|
# ------------------------------------------------------------------------------
|
|
|
|
proc syncCtrlBlockNumberFromFile*(
|
|
fileName: Option[string];
|
|
): Result[BlockNumber,void] =
|
|
## Returns a block number from the file name argument `fileName`. The first
|
|
## line of the file is parsed as a decimal encoded block number.
|
|
if fileName.isSome:
|
|
let file = fileName.get
|
|
try:
|
|
let data = file.getDataLine
|
|
if 0 < data.len:
|
|
let num = parse(data,UInt256)
|
|
return ok(num.toBlockNumber)
|
|
except CatchableError as e:
|
|
let
|
|
name {.used.} = $e.name
|
|
msg {.used.} = e.msg
|
|
debug "Exception while parsing block number", file, name, msg
|
|
err()
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# End
|
|
# ------------------------------------------------------------------------------
|