Skip to content

Commit

Permalink
Merge pull request #53 from JackalLabs/marston/error-check
Browse files Browse the repository at this point in the history
restart attempts
  • Loading branch information
dahn510 authored Jul 9, 2024
2 parents e4b286d + 3aeca00 commit 12d2ff2
Show file tree
Hide file tree
Showing 7 changed files with 69 additions and 45 deletions.
6 changes: 4 additions & 2 deletions api/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func (a *API) Close() error {
return a.srv.Close()
}

func (a *API) Serve(f *file_system.FileSystem, p *proofs.Prover, wallet *wallet.Wallet, chunkSize int64) {
func (a *API) Serve(f *file_system.FileSystem, p *proofs.Prover, wallet *wallet.Wallet, chunkSize int64) error {
r := mux.NewRouter()
r.HandleFunc("/", IndexHandler(wallet.AccAddress()))
r.HandleFunc("/upload", PostFileHandler(f, p, wallet, chunkSize))
Expand All @@ -62,7 +62,9 @@ func (a *API) Serve(f *file_system.FileSystem, p *proofs.Prover, wallet *wallet.
err := a.srv.ListenAndServe()
if err != nil {
if !errors.Is(err, http.ErrServerClosed) {
panic(err)
return err
}
}

return nil
}
23 changes: 18 additions & 5 deletions cmd/start.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package cmd

import (
"fmt"
"time"

"github.com/JackalLabs/sequoia/cmd/types"
"github.com/JackalLabs/sequoia/core"
"github.com/rs/zerolog"
Expand All @@ -12,15 +15,15 @@ func StartCmd() *cobra.Command {
return &cobra.Command{
Use: "start",
Short: "Starts the provider",
Run: func(cmd *cobra.Command, args []string) {
RunE: func(cmd *cobra.Command, args []string) error {
home, err := cmd.Flags().GetString(types.FlagHome)
if err != nil {
panic(err)
return err
}

logLevel, err := cmd.Flags().GetString(types.FlagLogLevel)
if err != nil {
panic(err)
return err
}

if logLevel == "info" {
Expand All @@ -31,9 +34,19 @@ func StartCmd() *cobra.Command {
log.Logger = log.Level(zerolog.ErrorLevel)
}

app := core.NewApp(home)
app, err := core.NewApp(home)
if err != nil {
return err
}

app.Start()
for {
err := app.Start()
if err != nil {
fmt.Println(err)
time.Sleep(time.Minute)
fmt.Println("Attempting restart again...")
}
}
},
}
}
22 changes: 12 additions & 10 deletions cmd/wallet/wallet.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,23 +27,24 @@ func addressCmd() *cobra.Command {
return &cobra.Command{
Use: "address",
Short: "Check this providers address",
Run: func(cmd *cobra.Command, args []string) {
RunE: func(cmd *cobra.Command, args []string) error {
home, err := cmd.Flags().GetString(types.FlagHome)
if err != nil {
panic(err)
return err
}

_, err = config.Init(home)
if err != nil {
panic(err)
return err
}

wallet, err := config.InitWallet(home)
if err != nil {
panic(err)
return err
}

fmt.Printf("Provider Address: %s\n", wallet.AccAddress())
return nil
},
}
}
Expand All @@ -53,25 +54,25 @@ func withdrawCMD() *cobra.Command {
Use: "withdraw [to-address] [amount]",
Short: "withdraw tokens from account",
Args: cobra.ExactArgs(2),
Run: func(cmd *cobra.Command, args []string) {
RunE: func(cmd *cobra.Command, args []string) error {
home, err := cmd.Flags().GetString(types.FlagHome)
if err != nil {
panic(err)
return err
}

_, err = config.Init(home)
if err != nil {
panic(err)
return err
}

wallet, err := config.InitWallet(home)
if err != nil {
panic(err)
return err
}

c, err := sdk.ParseCoinNormalized(args[1])
if err != nil {
panic(err)
return err
}

m := bankTypes.MsgSend{
Expand All @@ -86,14 +87,15 @@ func withdrawCMD() *cobra.Command {

res, err := wallet.BroadcastTxCommit(data)
if err != nil {
panic(err)
return err
}

if res.Code == 0 {
fmt.Println("Withdraw successful!")
} else {
fmt.Println("Something went wrong, please try again.")
}
return nil
},
}
}
35 changes: 20 additions & 15 deletions core/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,10 @@ type App struct {
fileSystem *file_system.FileSystem
}

func NewApp(home string) *App {
func NewApp(home string) (*App, error) {
cfg, err := config.Init(home)
if err != nil {
panic(err)
return nil, err
}

ctx := context.Background()
Expand All @@ -50,7 +50,7 @@ func NewApp(home string) *App {

err = os.MkdirAll(dataDir, os.ModePerm)
if err != nil {
panic(err)
return nil, err
}

options := badger.DefaultOptions(dataDir)
Expand All @@ -60,18 +60,20 @@ func NewApp(home string) *App {

db, err := badger.Open(options)
if err != nil {
panic(err)
return nil, err
}

apiServer := api.NewAPI(cfg.APICfg.Port)

f := file_system.NewFileSystem(ctx, db, cfg.APICfg.IPFSPort, cfg.APICfg.IPFSDomain)

f, err := file_system.NewFileSystem(ctx, db, cfg.APICfg.IPFSPort, cfg.APICfg.IPFSDomain)
if err != nil {
return nil, err
}
return &App{
fileSystem: f,
api: apiServer,
home: home,
}
}, nil
}

func initProviderOnChain(wallet *wallet.Wallet, ip string, totalSpace int64) error {
Expand Down Expand Up @@ -153,15 +155,15 @@ func (a *App) GetStorageParams(client grpc.ClientConn) (storageTypes.Params, err
return res.Params, nil
}

func (a *App) Start() {
func (a *App) Start() error {
cfg, err := config.Init(a.home)
if err != nil {
panic(err)
return err
}

w, err := config.InitWallet(a.home)
if err != nil {
panic(err)
return err
}

myAddress := w.AccAddress()
Expand All @@ -179,34 +181,34 @@ func (a *App) Start() {
log.Info().Msg("Provider does not exist on network or is not connected...")
err := initProviderOnChain(w, cfg.Ip, cfg.TotalSpace)
if err != nil {
panic(err)
return err
}
} else {
claimers = res.Provider.AuthClaimers

totalSpace, err := strconv.ParseInt(res.Provider.Totalspace, 10, 64)
if err != nil {
if err != nil {
panic(err)
return err
}
}
if totalSpace != cfg.TotalSpace {
err := updateSpace(w, cfg.TotalSpace)
if err != nil {
panic(err)
return err
}
}
if res.Provider.Ip != cfg.Ip {
err := updateIp(w, cfg.Ip)
if err != nil {
panic(err)
return err
}
}
}

params, err := a.GetStorageParams(w.Client.GRPCConn)
if err != nil {
panic(err)
return err
}

myUrl := cfg.Ip
Expand All @@ -221,6 +223,7 @@ func (a *App) Start() {
a.monitor = monitoring.NewMonitor(w)

// Starting the 4 concurrent services
// nolint:all
go a.api.Serve(a.fileSystem, a.prover, w, params.ChunkSize)
go a.prover.Start()
go a.strayManager.Start(a.fileSystem, myUrl, params.ChunkSize)
Expand All @@ -240,4 +243,6 @@ func (a *App) Start() {

time.Sleep(time.Second * 30) // give the program some time to shut down
a.fileSystem.Close()

return nil
}
14 changes: 8 additions & 6 deletions file_system/file_system_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ func BenchmarkFileWrites(b *testing.B) {
err = db.DropAll()
require.NoError(b, err)

f := NewFileSystem(context.Background(), db, 4005, "/dns4/ipfs.example.com/tcp/4001")

f, err := NewFileSystem(context.Background(), db, 4005, "/dns4/ipfs.example.com/tcp/4001")
require.NoError(b, err)
defer db.Close()
server := &http.Server{
Addr: "localhost:6060",
Expand Down Expand Up @@ -91,7 +91,8 @@ func TestWriteFile(t *testing.T) {

err = db.DropAll()
require.NoError(t, err)
f := NewFileSystem(context.Background(), db, 4005, "/dns4/ipfs.example.com/tcp/4001")
f, err := NewFileSystem(context.Background(), db, 4005, "/dns4/ipfs.example.com/tcp/4001")
require.NoError(t, err)
defer db.Close()

data, err := hex.DecodeString("303030303030383597631df147918b77139b132d44798cef96879280a4b1e1309f699875c6bf57798d17bbbbe75273ba4343da20d25bbca6729ccf9b1456d0b25a08f9616a7bf414de0e15ed29f0a74378789bc7510a7d1f76348aadd93030303030383032976304f845b5c40413ec580e446491ee9bd7c780e4f2e52cb774995dcd9f10278d5ea5c5b00c2eac37039b7a844fa4a82780d9a4061a99dd1d06e130696afd07dd0e59ec275af66319a71dd53dd89f3bd6381aef3262b1bab5f8115522dbbe67411c87e827fd93d220c9d5bc60f0d55ba12df0ee3ff46ee63ecb1edf540c2aedf9c3fcf42c0310e5f7a5e69df89a0e7961e371c9f1499ccc520e283513b1e5eace184dde615078996ea67d0566b102b6f72baa9c9c76a4cc920d667f82cb55aab33c593538d636a8f1c59aa609f50eb6c20bb52c5885a7cb15cb8a3ada30a53f45ba2a3ad5c321114ffdcb8974eca8f56af3d70956af556165659b9427e078015a4fc55d6ed50a00b3aba89cd00dfdd360b5a82f631eab1be3b7c1d7eceb312733c4b21baa6640e8e5ef683a569625d8f6815858bd24a5e39f2c716862ad3cb77503e131d015f5cb615deb1974b787f85f78e85e14c92b7c8ee217a1cc997ebbb0ed3690d57a01a796692d32bb2c3c6f80af3fb104b1b506e52f94826ed6faed82df260710bb9971d1368724a7fa48c394be60d7435080dc76981c789e458a42dce0f6fe29f4e956768e0eddfff6f512a1a2e64689f82132094249df464c5286014b1835ace7b83dddea38e65e55f818ebc53d929ed38fc0997afb145c036bb1fdc7f1a2813840c69ddc1dc284d18e25b3c9b22619f0a97bcf1f36864ff0ed551e7a7249001b1f909a45b132e6de3585537240dd25941de1e4b66065626f0a2297b5c4328e6b672004e4f16aa4d742bb5b7548c4cc6756d7f2bc0de8df4fe1a21921233dd76785eb319db7bc567f2dbce5be42fdbe853edbdcf36dfbc0996874e096ea4954e4b5afb9751b0bf055778863231b4eb7a0f0839190e26db5cdd2c10f5841edc4cc85b6edf328909886d18b75e4e06210e1020fbb73b51bafdef5cd9a1bd70f52388b00a2bb555bc5e6a06bc88eeb35094a2851f3460305a83b893be857a5452b0728dae28dcd09e8e25a714cf014b557107e911fa16fa1dc6c36e4b1399cd96eca0685dc3746fa19ede15f9c0a14c5b00500b95fba05b8cb29d9c5ee6d2e164ac430e9fe56e59e10681a6f2a647c7ddf0f30ae1308035282c615c8368e")
Expand Down Expand Up @@ -136,7 +137,8 @@ func TestWriteFileWithDomain(t *testing.T) {

err = db.DropAll()
require.NoError(t, err)
f := NewFileSystem(context.Background(), db, 4005, "dns4/jackal-testnet-v4-storage.p2p.brocha.in/tcp/30506")
f, err := NewFileSystem(context.Background(), db, 4005, "dns4/jackal-testnet-v4-storage.p2p.brocha.in/tcp/30506")
require.NoError(t, err)
defer db.Close()

data, err := hex.DecodeString("303030303030383597631df147918b77139b132d44798cef96879280a4b1e1309f699875c6bf57798d17bbbbe75273ba4343da20d25bbca6729ccf9b1456d0b25a08f9616a7bf414de0e15ed29f0a74378789bc7510a7d1f76348aadd93030303030383032976304f845b5c40413ec580e446491ee9bd7c780e4f2e52cb774995dcd9f10278d5ea5c5b00c2eac37039b7a844fa4a82780d9a4061a99dd1d06e130696afd07dd0e59ec275af66319a71dd53dd89f3bd6381aef3262b1bab5f8115522dbbe67411c87e827fd93d220c9d5bc60f0d55ba12df0ee3ff46ee63ecb1edf540c2aedf9c3fcf42c0310e5f7a5e69df89a0e7961e371c9f1499ccc520e283513b1e5eace184dde615078996ea67d0566b102b6f72baa9c9c76a4cc920d667f82cb55aab33c593538d636a8f1c59aa609f50eb6c20bb52c5885a7cb15cb8a3ada30a53f45ba2a3ad5c321114ffdcb8974eca8f56af3d70956af556165659b9427e078015a4fc55d6ed50a00b3aba89cd00dfdd360b5a82f631eab1be3b7c1d7eceb312733c4b21baa6640e8e5ef683a569625d8f6815858bd24a5e39f2c716862ad3cb77503e131d015f5cb615deb1974b787f85f78e85e14c92b7c8ee217a1cc997ebbb0ed3690d57a01a796692d32bb2c3c6f80af3fb104b1b506e52f94826ed6faed82df260710bb9971d1368724a7fa48c394be60d7435080dc76981c789e458a42dce0f6fe29f4e956768e0eddfff6f512a1a2e64689f82132094249df464c5286014b1835ace7b83dddea38e65e55f818ebc53d929ed38fc0997afb145c036bb1fdc7f1a2813840c69ddc1dc284d18e25b3c9b22619f0a97bcf1f36864ff0ed551e7a7249001b1f909a45b132e6de3585537240dd25941de1e4b66065626f0a2297b5c4328e6b672004e4f16aa4d742bb5b7548c4cc6756d7f2bc0de8df4fe1a21921233dd76785eb319db7bc567f2dbce5be42fdbe853edbdcf36dfbc0996874e096ea4954e4b5afb9751b0bf055778863231b4eb7a0f0839190e26db5cdd2c10f5841edc4cc85b6edf328909886d18b75e4e06210e1020fbb73b51bafdef5cd9a1bd70f52388b00a2bb555bc5e6a06bc88eeb35094a2851f3460305a83b893be857a5452b0728dae28dcd09e8e25a714cf014b557107e911fa16fa1dc6c36e4b1399cd96eca0685dc3746fa19ede15f9c0a14c5b00500b95fba05b8cb29d9c5ee6d2e164ac430e9fe56e59e10681a6f2a647c7ddf0f30ae1308035282c615c8368e")
Expand Down Expand Up @@ -184,8 +186,8 @@ func TestWriteAndProveFiles(t *testing.T) {

err = db.DropAll()
require.NoError(t, err)
f := NewFileSystem(context.Background(), db, 4005, "/dns4/ipfs.example.com/tcp/4001")

f, err := NewFileSystem(context.Background(), db, 4005, "/dns4/ipfs.example.com/tcp/4001")
require.NoError(t, err)
size := 1024 * 255 // 255 kbs
var chunkSize int64 = 1024

Expand Down
6 changes: 3 additions & 3 deletions file_system/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ type FileSystem struct {
ipfs *ipfslite.Peer
}

func NewFileSystem(ctx context.Context, db *badger.DB, ipfsPort int, ipfsDomain string) *FileSystem {
func NewFileSystem(ctx context.Context, db *badger.DB, ipfsPort int, ipfsDomain string) (*FileSystem, error) {
ipfs, err := ipfs2.MakeIPFS(ctx, db, ipfsPort, ipfsDomain)
if err != nil {
panic(err)
return nil, err
}
return &FileSystem{db: db, ipfs: ipfs}
return &FileSystem{db: db, ipfs: ipfs}, nil
}

func (f *FileSystem) Close() {
Expand Down
8 changes: 4 additions & 4 deletions wallet/wallet.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ func CreateWallet(seed string, derivation string, chainCfg types.ChainConfig) (*

c, err := client.NewClient(&chainCfg, encodingCfg.Marshaler)
if err != nil {
panic(err)
return nil, err
}

w, err := wallet.NewWallet(&accountCfg, c, encodingCfg.TxConfig)
if err != nil {
panic(err)
return nil, err
}

return w, err
Expand All @@ -49,12 +49,12 @@ func CreateWalletPrivKey(privKey string, chainCfg types.ChainConfig) (*wallet.Wa

c, err := client.NewClient(&chainCfg, encodingCfg.Marshaler)
if err != nil {
panic(err)
return nil, err
}

w, err := wallet.NewWalletFromKey(key, c, encodingCfg.TxConfig)
if err != nil {
panic(err)
return nil, err
}

return w, err
Expand Down

0 comments on commit 12d2ff2

Please sign in to comment.