aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/utils
diff options
context:
space:
mode:
authorJeffrey Wilcke <jeffrey@ethereum.org>2016-03-24 20:06:10 +0800
committerJeffrey Wilcke <geffobscura@gmail.com>2016-04-01 19:44:58 +0800
commitbbeaab7e64f50fb303008b065894f58d7563c7ad (patch)
treee10e1c48f411fa2b63313e4e27a4d3311ab04797 /cmd/utils
parentc58079461bafe508bea9233e2b81852df5188f57 (diff)
downloadgo-tangerine-bbeaab7e64f50fb303008b065894f58d7563c7ad.tar.gz
go-tangerine-bbeaab7e64f50fb303008b065894f58d7563c7ad.tar.zst
go-tangerine-bbeaab7e64f50fb303008b065894f58d7563c7ad.zip
cmd/utils, miner: A/B testing JIT VM. Disabled for miners
This PR introduces a 10% probability that you'll run the client with the JIT enabled testing the new client and helps us potentially catch errors when reported. This feature is **disabled** for miners (disabling the JIT completely). The JIT can however be force for miners if they enable both --jitvm and --forcejit.
Diffstat (limited to 'cmd/utils')
-rw-r--r--cmd/utils/flags.go14
1 files changed, 13 insertions, 1 deletions
diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go
index 3f54b40ca..faba32ce0 100644
--- a/cmd/utils/flags.go
+++ b/cmd/utils/flags.go
@@ -22,11 +22,13 @@ import (
"io/ioutil"
"math"
"math/big"
+ "math/rand"
"os"
"path/filepath"
"runtime"
"strconv"
"strings"
+ "time"
"github.com/codegangsta/cli"
"github.com/ethereum/ethash"
@@ -659,6 +661,16 @@ func MakeSystemNode(name, version string, extra []byte, ctx *cli.Context) *node.
// Configure the Ethereum service
accman := MakeAccountManager(ctx)
+ // initialise new random number generator
+ rand := rand.New(rand.NewSource(time.Now().UnixNano()))
+ // get enabled jit flag
+ jitEnabled := ctx.GlobalBool(VMEnableJitFlag.Name)
+ // if the jit is not enabled enable it for 10 pct of the people
+ if !jitEnabled && rand.Float64() < 0.1 {
+ jitEnabled = true
+ glog.V(logger.Info).Infoln("You're one of the lucky few that will try out the JIT VM (random). If you get a consensus failure please be so kind to report this incident with the block hash that failed. You can switch to the regular VM by setting --jitvm=false")
+ }
+
ethConf := &eth.Config{
ChainConfig: MustMakeChainConfig(ctx),
Genesis: MakeGenesisBlock(ctx),
@@ -673,7 +685,7 @@ func MakeSystemNode(name, version string, extra []byte, ctx *cli.Context) *node.
ExtraData: MakeMinerExtra(extra, ctx),
NatSpec: ctx.GlobalBool(NatspecEnabledFlag.Name),
DocRoot: ctx.GlobalString(DocRootFlag.Name),
- EnableJit: ctx.GlobalBool(VMEnableJitFlag.Name),
+ EnableJit: jitEnabled,
ForceJit: ctx.GlobalBool(VMForceJitFlag.Name),
GasPrice: common.String2Big(ctx.GlobalString(GasPriceFlag.Name)),
GpoMinGasPrice: common.String2Big(ctx.GlobalString(GpoMinGasPriceFlag.Name)),