Skip to content
Snippets Groups Projects
Unverified Commit aed32723 authored by Hans Moog's avatar Hans Moog Committed by GitHub
Browse files

Merge pull request #29 from iotaledger/fix/peerstorage

 Do not reuse the value buffer when iterating through the database
parents 276ed127 5f0bbc63
No related branches found
No related tags found
No related merge requests found
......@@ -129,15 +129,11 @@ func (this *databaseImpl) ForEach(consumer func([]byte, []byte)) error {
it := txn.NewIterator(badger.DefaultIteratorOptions)
defer it.Close()
// avoid allocations by reusing the value buffer
var value []byte
// loop through every key-value-pair and call the function
for it.Rewind(); it.Valid(); it.Next() {
item := it.Item()
var err error
value, err = item.ValueCopy(value)
value, err := item.ValueCopy(nil)
if err != nil {
return err
}
......
......@@ -3,6 +3,7 @@ package peerstorage
import (
"bytes"
"strconv"
"sync"
"github.com/iotaledger/goshimmer/packages/database"
"github.com/iotaledger/goshimmer/packages/events"
......@@ -14,6 +15,7 @@ import (
const peerDbName string = "peers"
var peerDb database.Database
var once sync.Once
func initDb() {
db, err := database.Get(peerDbName)
......@@ -24,15 +26,21 @@ func initDb() {
peerDb = db
}
func getDb() database.Database {
once.Do(initDb)
return peerDb
}
func storePeer(p *peer.Peer) {
err := peerDb.Set(p.Identity.Identifier, p.Marshal())
err := getDb().Set(p.Identity.Identifier, p.Marshal())
if err != nil {
panic(err)
}
}
func removePeer(p *peer.Peer) {
err := peerDb.Delete(p.Identity.Identifier)
err := getDb().Delete(p.Identity.Identifier)
if err != nil {
panic(err)
}
......@@ -41,7 +49,7 @@ func removePeer(p *peer.Peer) {
func loadPeers(plugin *node.Plugin) {
var count int
err := peerDb.ForEach(func(key []byte, value []byte) {
err := getDb().ForEach(func(key []byte, value []byte) {
peer, err := peer.Unmarshal(value)
if err != nil {
panic(err)
......@@ -63,8 +71,6 @@ func loadPeers(plugin *node.Plugin) {
}
func Configure(plugin *node.Plugin) {
initDb()
// do not store the entry nodes by ignoring all peers currently contained in konwnpeers
// add peers from db
loadPeers(plugin)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment