Skip to content

Commit

Permalink
Merge pull request #114 from koinos/bump-mq
Browse files Browse the repository at this point in the history
Bump mq
  • Loading branch information
youkaicountry committed Sep 6, 2022
2 parents b6b1d4a + 8c9fdd1 commit 71d6837
Show file tree
Hide file tree
Showing 6 changed files with 92 additions and 19 deletions.
6 changes: 6 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,12 @@ FROM golang:1.18-alpine as builder
ADD . /koinos-block-store
WORKDIR /koinos-block-store

RUN apk update && \
apk add \
gcc \
musl-dev \
linux-headers

RUN go get ./... && \
go build -o koinos_block_store cmd/koinos-block-store/main.go

Expand Down
48 changes: 35 additions & 13 deletions cmd/koinos-block-store/main.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package main

import (
"context"
"encoding/hex"
"fmt"
"os"
"os/signal"
"path"
"runtime"
"syscall"

"github.com/dgraph-io/badger/v3"
Expand All @@ -28,6 +30,7 @@ const (
instanceIDOption = "instance-id"
logLevelOption = "log-level"
resetOption = "reset"
jobsOption = "jobs"
)

const (
Expand All @@ -46,36 +49,54 @@ const (
)

func main() {
var baseDir = flag.StringP(basedirOption, "d", basedirDefault, "the base directory")
var amqp = flag.StringP(amqpOption, "a", "", "AMQP server URL")
var reset = flag.BoolP(resetOption, "r", resetDefault, "reset the database")
jobsDefault := runtime.NumCPU()

baseDirPtr := flag.StringP(basedirOption, "d", basedirDefault, "Koinos base directory")
amqp := flag.StringP(amqpOption, "a", "", "AMQP server URL")
reset := flag.BoolP(resetOption, "r", resetDefault, "Reset the database")
instanceID := flag.StringP(instanceIDOption, "i", instanceIDDefault, "The instance ID to identify this service")
logLevel := flag.StringP(logLevelOption, "v", logLevelDefault, "The log filtering level (debug, info, warn, error)")
jobs := flag.IntP(jobsOption, "j", jobsDefault, "Number of RPC jobs to run")

flag.Parse()

*baseDir = util.InitBaseDir(*baseDir)
baseDir, err := util.InitBaseDir(*baseDirPtr)
if err != nil {
fmt.Printf("Could not initialize base directory '%v'\n", baseDir)
os.Exit(1)
}

yamlConfig := util.InitYamlConfig(*baseDir)
yamlConfig := util.InitYamlConfig(baseDir)

*amqp = util.GetStringOption(amqpOption, amqpDefault, *amqp, yamlConfig.BlockStore, yamlConfig.Global)
*logLevel = util.GetStringOption(logLevelOption, logLevelDefault, *logLevel, yamlConfig.BlockStore, yamlConfig.Global)
*instanceID = util.GetStringOption(instanceIDOption, util.GenerateBase58ID(5), *instanceID, yamlConfig.BlockStore, yamlConfig.Global)
*reset = util.GetBoolOption(resetOption, resetDefault, *reset, yamlConfig.BlockStore, yamlConfig.Global)
*jobs = util.GetIntOption(jobsOption, jobsDefault, *jobs, yamlConfig.BlockStore, yamlConfig.Global)

appID := fmt.Sprintf("%s.%s", appName, *instanceID)

// Initialize logger
logFilename := path.Join(util.GetAppDir(*baseDir, appName), logDir, "block_store.log")
err := log.InitLogger(*logLevel, false, logFilename, appID)
logFilename := path.Join(util.GetAppDir(baseDir, appName), logDir, "block_store.log")
err = log.InitLogger(*logLevel, false, logFilename, appID)
if err != nil {
fmt.Printf("Invalid log-level: %s. Please choose one of: debug, info, warn, error", *logLevel)
os.Exit(1)
}

if *jobs < 1 {
log.Errorf("Option '%v' must be greater than 0 (was %v)", jobsOption, *jobs)
os.Exit(1)
}

// Costruct the db directory and ensure it exists
dbDir := path.Join(util.GetAppDir((*baseDir), appName), "db")
util.EnsureDir(dbDir)
dbDir := path.Join(util.GetAppDir((baseDir), appName), "db")
err = util.EnsureDir(dbDir)
if err != nil {
log.Errorf("Could not create database folder %v", dbDir)
os.Exit(1)
}

log.Infof("Opening database at %s", dbDir)

var opts = badger.DefaultOptions(dbDir)
Expand All @@ -97,9 +118,7 @@ func main() {
}
}

defer backend.Close()

requestHandler := koinosmq.NewRequestHandler(*amqp)
requestHandler := koinosmq.NewRequestHandler(*amqp, uint(*jobs))

handler := bstore.RequestHandler{Backend: backend}

Expand Down Expand Up @@ -167,11 +186,14 @@ func main() {
}
})

requestHandler.Start()
ctx, ctxCancel := context.WithCancel(context.Background())
requestHandler.Start(ctx)

// Wait for a SIGINT or SIGTERM signal
ch := make(chan os.Signal, 1)
signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
<-ch
log.Info("Shutting down node...")
ctxCancel()
backend.Close()
}
6 changes: 3 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ require (
github.com/dgraph-io/badger v1.6.2
github.com/dgraph-io/badger/v3 v3.2103.2
github.com/koinos/koinos-log-golang v0.0.0-20210621202301-3310a8e5866b
github.com/koinos/koinos-mq-golang v0.0.0-20220824200525-0230763309f3
github.com/koinos/koinos-mq-golang v0.0.0-20220906183403-59a5f98d6aab
github.com/koinos/koinos-proto-golang v0.3.1-0.20220802205931-319ee3a6b490
github.com/koinos/koinos-util-golang v0.0.0-20211019222021-3b7f67a3119d
github.com/multiformats/go-multihash v0.0.16
github.com/koinos/koinos-util-golang v0.0.0-20220831225923-5ba6e0d4e7b9
github.com/multiformats/go-multihash v0.1.0
github.com/spf13/pflag v1.0.3
go.uber.org/zap v1.17.0
google.golang.org/protobuf v1.27.1
Expand Down
30 changes: 30 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c=
github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
github.com/btcsuite/btcd v0.20.1-beta h1:Ik4hyJqN8Jfyv3S4AGBOmyouMsYE3EdYODkMbQjwPGw=
github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ=
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA=
github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
Expand Down Expand Up @@ -122,6 +123,7 @@ github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7j
github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/ethereum/go-ethereum v1.10.8 h1:0UP5WUR8hh46ffbjJV7PK499+uGEyasRIfffS0vy06o=
github.com/ethereum/go-ethereum v1.10.8/go.mod h1:pJNuIUYfX5+JKzSD/BTdNsvJSZ1TJqmz0dVyXMAbf6M=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0=
Expand Down Expand Up @@ -253,6 +255,8 @@ github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5 h1:2U0HzY8BJ8hVwDK
github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/klauspost/cpuid/v2 v2.0.4 h1:g0I61F2K2DjRHz1cnxlkNSBIaePVoJIjjnHui8QHbiw=
github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4=
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg=
github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
github.com/koinos/koinos-log-golang v0.0.0-20210413225320-69e5d4a4c6c2/go.mod h1:q2b3FfAP6tWYt5Kl13hM6Du3kxGXAr0HnC4gJja4G6U=
Expand All @@ -262,17 +266,34 @@ github.com/koinos/koinos-mq-golang v0.0.0-20211026183607-441fb7106dd3 h1:vr3BM+X
github.com/koinos/koinos-mq-golang v0.0.0-20211026183607-441fb7106dd3/go.mod h1:EFk+fuUL5ezbaWsGJ2U0KlzbgkflwRv96az8dEVe16I=
github.com/koinos/koinos-mq-golang v0.0.0-20220824200525-0230763309f3 h1:Ii0VZ29D7IL6DRuw/ySvj4KwLLD/pzRmgUUa9XpKJy0=
github.com/koinos/koinos-mq-golang v0.0.0-20220824200525-0230763309f3/go.mod h1:EFk+fuUL5ezbaWsGJ2U0KlzbgkflwRv96az8dEVe16I=
github.com/koinos/koinos-mq-golang v0.0.0-20220830164448-bba18599c018 h1:NmPS7s+jFw5bGZrMcH4Hc2k9GoaqTFmKI6JH+YRltsk=
github.com/koinos/koinos-mq-golang v0.0.0-20220830164448-bba18599c018/go.mod h1:EFk+fuUL5ezbaWsGJ2U0KlzbgkflwRv96az8dEVe16I=
github.com/koinos/koinos-mq-golang v0.0.0-20220830221500-c6890e12f9f0 h1:S1yPEj4Zv/uNPLRDPQJN0AAOqMaT9LljP1wqTa2EfsI=
github.com/koinos/koinos-mq-golang v0.0.0-20220830221500-c6890e12f9f0/go.mod h1:EFk+fuUL5ezbaWsGJ2U0KlzbgkflwRv96az8dEVe16I=
github.com/koinos/koinos-mq-golang v0.0.0-20220830223502-a7e8feb2955b h1:vsyukRmMPU879krPQteh1xBQc7rOkw7ZFLSsOSHCoqU=
github.com/koinos/koinos-mq-golang v0.0.0-20220830223502-a7e8feb2955b/go.mod h1:EFk+fuUL5ezbaWsGJ2U0KlzbgkflwRv96az8dEVe16I=
github.com/koinos/koinos-mq-golang v0.0.0-20220830225000-227631db90f5 h1:OiaIKsRPSGj7cY9MhDhDMwnf5tNbSmbYD03kxXV2j/M=
github.com/koinos/koinos-mq-golang v0.0.0-20220830225000-227631db90f5/go.mod h1:EFk+fuUL5ezbaWsGJ2U0KlzbgkflwRv96az8dEVe16I=
github.com/koinos/koinos-mq-golang v0.0.0-20220902182300-4b1c1c31e493 h1:nN/5VWvN8rccbG6uJzasiD1FQ0bkPN6LT0FR++PwcwM=
github.com/koinos/koinos-mq-golang v0.0.0-20220902182300-4b1c1c31e493/go.mod h1:EFk+fuUL5ezbaWsGJ2U0KlzbgkflwRv96az8dEVe16I=
github.com/koinos/koinos-mq-golang v0.0.0-20220906183403-59a5f98d6aab h1:CAmBc4qpeIB+GoRURF/WBUYLstUmvg+MVVMvxRill4U=
github.com/koinos/koinos-mq-golang v0.0.0-20220906183403-59a5f98d6aab/go.mod h1:EFk+fuUL5ezbaWsGJ2U0KlzbgkflwRv96az8dEVe16I=
github.com/koinos/koinos-proto-golang v0.0.0-20210817202730-232f9d89dd0b/go.mod h1:X0JDk9LJhh3zXCTtKc0OLL9zUGbVk1HIGPKi/WLpFuE=
github.com/koinos/koinos-proto-golang v0.2.1-0.20220203004644-1d7ca7362b45 h1:9zEZq0YOBR9UuHRLOBiOHGojTsLr/ZLjZq39BJUzqzw=
github.com/koinos/koinos-proto-golang v0.2.1-0.20220203004644-1d7ca7362b45/go.mod h1:ZonOOdmZcuEbRdOqqdfYRA2I4szYHy5aKzUveMWXBog=
github.com/koinos/koinos-proto-golang v0.2.1-0.20220224180227-6fbc5fe4a89a h1:3Htl8NnPsoSaHhzJhROeQiAyFIcGwsobypAkvysKGvg=
github.com/koinos/koinos-proto-golang v0.2.1-0.20220224180227-6fbc5fe4a89a/go.mod h1:ZonOOdmZcuEbRdOqqdfYRA2I4szYHy5aKzUveMWXBog=
github.com/koinos/koinos-proto-golang v0.2.1-0.20220301021801-03b3d905260d h1:ATQlbm+WXmeju484GXYEgjJOcfPz8c6YErpW8LwgS+U=
github.com/koinos/koinos-proto-golang v0.2.1-0.20220301021801-03b3d905260d/go.mod h1:ZonOOdmZcuEbRdOqqdfYRA2I4szYHy5aKzUveMWXBog=
github.com/koinos/koinos-proto-golang v0.3.1-0.20220708180354-16481ac5469c/go.mod h1:ZonOOdmZcuEbRdOqqdfYRA2I4szYHy5aKzUveMWXBog=
github.com/koinos/koinos-proto-golang v0.3.1-0.20220802205931-319ee3a6b490 h1:rs9mgcd3pvVviWDUey8kcpHPcUaWzbZfn/rK8TN3VZc=
github.com/koinos/koinos-proto-golang v0.3.1-0.20220802205931-319ee3a6b490/go.mod h1:ZonOOdmZcuEbRdOqqdfYRA2I4szYHy5aKzUveMWXBog=
github.com/koinos/koinos-util-golang v0.0.0-20211019222021-3b7f67a3119d h1:fyqSn5gSG74YtQwOX0rB71dagpmDZX4bFeBBmYmkJHg=
github.com/koinos/koinos-util-golang v0.0.0-20211019222021-3b7f67a3119d/go.mod h1:3NWXUf07ZUBOBYzU7r+aG34kA2bI0Y/kLXaZyF1Y7q4=
github.com/koinos/koinos-util-golang v0.0.0-20220830161833-76700a84be69 h1:ub2YMFWL1JZr4iXvIbC/grIqRHRqNoMEa1zQHThNwRE=
github.com/koinos/koinos-util-golang v0.0.0-20220830161833-76700a84be69/go.mod h1:5Va8lbIAGD886tlNL1AT5LB3ND7uvmivKODQ2p90fqI=
github.com/koinos/koinos-util-golang v0.0.0-20220831225923-5ba6e0d4e7b9 h1:z53D8ApsfM85lpC7HBoQudL++KVRse2FP6RrE6A1ExA=
github.com/koinos/koinos-util-golang v0.0.0-20220831225923-5ba6e0d4e7b9/go.mod h1:5Va8lbIAGD886tlNL1AT5LB3ND7uvmivKODQ2p90fqI=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
Expand Down Expand Up @@ -318,6 +339,8 @@ github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjW
github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg=
github.com/multiformats/go-multihash v0.0.16 h1:D2qsyy1WVculJbGv69pWmQ36ehxFoA5NiIUr1OEs6qI=
github.com/multiformats/go-multihash v0.0.16/go.mod h1:zhfEIgVnB/rPMfxgFw15ZmGoNaKyNUIE4IWHG/kC+Ag=
github.com/multiformats/go-multihash v0.1.0 h1:CgAgwqk3//SVEw3T+6DqI4mWMyRuDwZtOWcJT0q9+EA=
github.com/multiformats/go-multihash v0.1.0/go.mod h1:RJlXsxt6vHGaia+S8We0ErjhojtKzPP2AH4+kYM7k84=
github.com/multiformats/go-varint v0.0.6 h1:gk85QWKxh3TazbLxED/NlDVv8+q+ReFJk7Y2W/KhfNY=
github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
Expand All @@ -331,6 +354,7 @@ github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
Expand Down Expand Up @@ -370,6 +394,8 @@ github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfP
github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo=
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8=
github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
Expand Down Expand Up @@ -410,6 +436,8 @@ github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+
github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4=
github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
github.com/ybbus/jsonrpc/v2 v2.1.6/go.mod h1:rIuG1+ORoiqocf9xs/v+ecaAVeo3zcZHQgInyKFMeg0=
github.com/ybbus/jsonrpc/v3 v3.1.1/go.mod h1:NJ8vURh8jndl+F1dVplHr538HNnwnV89sEhcDsZL/bw=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
Expand Down Expand Up @@ -680,5 +708,7 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las=
lukechampine.com/blake3 v1.1.6 h1:H3cROdztr7RCfoaTpGZFQsrqvweFLrqS73j7L7cmR5c=
lukechampine.com/blake3 v1.1.6/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
15 changes: 15 additions & 0 deletions internal/bstore/reqhandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"errors"
"fmt"
"math/bits"
"sync"

log "github.com/koinos/koinos-log-golang"
"github.com/koinos/koinos-proto-golang/koinos"
Expand All @@ -20,6 +21,8 @@ const (
// RequestHandler contains a backend object and handles requests
type RequestHandler struct {
Backend BlockStoreBackend

lock sync.RWMutex
}

// ReservedReqError is an error type that is thrown when a reserved request is passed to the request handler
Expand Down Expand Up @@ -510,27 +513,39 @@ func (handler *RequestHandler) HandleRequest(req *block_store.BlockStoreRequest)
switch v := req.Request.(type) {
case *block_store.BlockStoreRequest_GetBlocksById:
var result *block_store.GetBlocksByIdResponse
handler.lock.RLock()
defer handler.lock.RUnlock()

result, err = handler.GetBlocksByID(v.GetBlocksById)
if err == nil {
respVal := block_store.BlockStoreResponse_GetBlocksById{GetBlocksById: result}
response.Response = &respVal
}
case *block_store.BlockStoreRequest_GetBlocksByHeight:
var result *block_store.GetBlocksByHeightResponse
handler.lock.RLock()
defer handler.lock.RUnlock()

result, err = handler.GetBlocksByHeight(v.GetBlocksByHeight)
if err == nil {
respVal := block_store.BlockStoreResponse_GetBlocksByHeight{GetBlocksByHeight: result}
response.Response = &respVal
}
case *block_store.BlockStoreRequest_AddBlock:
var result *block_store.AddBlockResponse
handler.lock.Lock()
defer handler.lock.Unlock()

result, err = handler.AddBlock(v.AddBlock)
if err == nil {
respVal := block_store.BlockStoreResponse_AddBlock{AddBlock: result}
response.Response = &respVal
}
case *block_store.BlockStoreRequest_GetHighestBlock:
var result *block_store.GetHighestBlockResponse
handler.lock.RLock()
defer handler.lock.RUnlock()

result, err = handler.GetHighestBlock(v.GetHighestBlock)
if err == nil {
respVal := block_store.BlockStoreResponse_GetHighestBlock{GetHighestBlock: result}
Expand Down
6 changes: 3 additions & 3 deletions internal/bstore/reqhandler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ func BuildTestTree(t *testing.T, handler *RequestHandler, bt *BlockTree) {

func addBlocksTestImpl(t *testing.T, backendType int, addZeroBlock bool) {
b := NewBackend(backendType)
handler := RequestHandler{b}
handler := RequestHandler{Backend: b}

// A compact notation of the tree of forks we want to create for the test
//
Expand Down Expand Up @@ -431,7 +431,7 @@ func testGetBlocksByIDImpl(t *testing.T, returnBlock bool, returnReceipt bool) {
}

b := NewMapBackend()
handler := RequestHandler{b}
handler := RequestHandler{Backend: b}
mbt := NewMockBlockTree(tree)
for _, mb := range mbt.ByNum {
mb.Receipt = []byte(fmt.Sprintf("Receipt for block %d", mb.Num))
Expand Down Expand Up @@ -622,7 +622,7 @@ func TestGetHighestBlock(t *testing.T) {
topology := koinos.BlockTopology{Id: blockID, Previous: previousID, Height: height}

b := NewBackend(bType)
handler := RequestHandler{b}
handler := RequestHandler{Backend: b}

iReq := block_store.GetHighestBlockRequest{}
ghbReq := block_store.BlockStoreRequest_GetHighestBlock{GetHighestBlock: &iReq}
Expand Down

0 comments on commit 71d6837

Please sign in to comment.