Commit 9efbd476 authored by Dan Gershony's avatar Dan Gershony Committed by GitHub

Merge pull request #114 from bokobza/master

Chain + loglevel
parents 43dbc772 e7b987a5
......@@ -35,11 +35,7 @@ namespace Breeze.Daemon
Logs.Configure(Logs.GetLoggerFactory(args));
// get the api uri
var apiUri = args.SingleOrDefault(arg => arg.StartsWith("apiuri"));
if (!string.IsNullOrEmpty(apiUri))
{
apiUri = apiUri.Replace("apiuri=", string.Empty);
}
var apiUri = args.GetValueOf("apiuri");
if (args.Contains("stratis"))
{
......
......@@ -6,7 +6,7 @@
},
"Breeze.Daemon TestNet": {
"commandName": "Project",
"commandLineArgs": "-testnet -tumbler-uri=http://localhost:5050 light -debug"
"commandLineArgs": "-testnet -tumbler-uri=http://localhost:5050 light -debug=all -loglevel=debug"
},
"StratisTest": {
"commandName": "Project",
......
......@@ -36,16 +36,33 @@ namespace Breeze.Wallet
/// <inheritdoc />
public Task Initialize()
{
this.walletTip = this.chain.GetBlock(this.walletManager.WalletTipHash);
if (this.walletTip == null)
throw new WalletException("the wallet tip was not found in the main chain");
{
// if there is no wallet created yet, the wallet tip is the chain tip.
if (!this.walletManager.Wallets.Any())
{
this.walletTip = this.chain.Tip;
}
}
else
{
this.walletTip = this.chain.GetBlock(this.walletManager.WalletTipHash);
if (this.walletTip == null)
{
// the wallet tip was not found in the main chain.
// this can happen if the node crashes unexpectedly.
// to recover we need to find the first common fork
// with the best chain, as the wallet does not have a
// list of chain headers we use a BlockLocator and persist
// that in the wallet. the block locator will help finding
// a common fork and bringing the wallet back to a good
// state (behind the best chain)
var locators = this.walletManager.Wallets.First().BlockLocator;
BlockLocator blockLocator = new BlockLocator { Blocks = locators.ToList() };
var fork = this.chain.FindFork(blockLocator);
this.walletManager.RemoveBlocks(fork);
this.walletManager.WalletTipHash = fork.HashBlock;
this.walletTip = fork;
}
}
// subscribe to receiving blocks and transactions
BlockSubscriber sub = new BlockSubscriber(this.signals.Blocks, new BlockObserver(this));
......@@ -129,7 +146,7 @@ namespace Breeze.Wallet
if (incomingBlock.Height > this.walletTip.Height)
{
// the wallet is falling behind we need to catch up
this.logger.LogDebug($"block received with height: {inBestChain.Height} and hash: {block.Header.GetHash()} is too far in advance. put the pull back.");
this.logger.LogWarning($"block received with height: {inBestChain.Height} and hash: {block.Header.GetHash()} is too far in advance. put the puller back.");
this.blockNotification.SyncFrom(this.walletTip.HashBlock);
return;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment