aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2017-10-20 19:31:29 +0800
committerPéter Szilágyi <peterke@gmail.com>2017-10-20 19:42:20 +0800
commit0af1ab0c86975201349d92e0943485c3534d8c8c (patch)
treef21465975f55507e85f8a3cebc7440371b266c30
parent65738c1eb37c789294124cc9b4bbe6d55d50a77f (diff)
downloaddexon-0af1ab0c86975201349d92e0943485c3534d8c8c.tar.gz
dexon-0af1ab0c86975201349d92e0943485c3534d8c8c.tar.zst
dexon-0af1ab0c86975201349d92e0943485c3534d8c8c.zip
core: avoid warning when loading the transaction journal
-rw-r--r--core/tx_journal.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/core/tx_journal.go b/core/tx_journal.go
index 94a9ff9b8..3fd8ece49 100644
--- a/core/tx_journal.go
+++ b/core/tx_journal.go
@@ -31,6 +31,15 @@ import (
// into the journal, but no such file is currently open.
var errNoActiveJournal = errors.New("no active journal")
+// devNull is a WriteCloser that just discards anything written into it. Its
+// goal is to allow the transaction journal to write into a fake journal when
+// loading transactions on startup without printing warnings due to no file
+// being readt for write.
+type devNull struct{}
+
+func (*devNull) Write(p []byte) (n int, err error) { return len(p), nil }
+func (*devNull) Close() error { return nil }
+
// txJournal is a rotating log of transactions with the aim of storing locally
// created transactions to allow non-executed ones to survive node restarts.
type txJournal struct {
@@ -59,6 +68,10 @@ func (journal *txJournal) load(add func(*types.Transaction) error) error {
}
defer input.Close()
+ // Temporarilly discard any journal additions (don't double add on load)
+ journal.writer = new(devNull)
+ defer func() { journal.writer = nil }()
+
// Inject all transactions from the journal into the pool
stream := rlp.NewStream(input, 0)
total, dropped := 0, 0