Skip to content

Commit 12d2ff2

Browse files
authored
Merge pull request #53 from JackalLabs/marston/error-check
restart attempts
2 parents e4b286d + 3aeca00 commit 12d2ff2

File tree

7 files changed

+69
-45
lines changed

7 files changed

+69
-45
lines changed

api/server.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func (a *API) Close() error {
3535
return a.srv.Close()
3636
}
3737

38-
func (a *API) Serve(f *file_system.FileSystem, p *proofs.Prover, wallet *wallet.Wallet, chunkSize int64) {
38+
func (a *API) Serve(f *file_system.FileSystem, p *proofs.Prover, wallet *wallet.Wallet, chunkSize int64) error {
3939
r := mux.NewRouter()
4040
r.HandleFunc("/", IndexHandler(wallet.AccAddress()))
4141
r.HandleFunc("/upload", PostFileHandler(f, p, wallet, chunkSize))
@@ -62,7 +62,9 @@ func (a *API) Serve(f *file_system.FileSystem, p *proofs.Prover, wallet *wallet.
6262
err := a.srv.ListenAndServe()
6363
if err != nil {
6464
if !errors.Is(err, http.ErrServerClosed) {
65-
panic(err)
65+
return err
6666
}
6767
}
68+
69+
return nil
6870
}

cmd/start.go

+18-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package cmd
22

33
import (
4+
"fmt"
5+
"time"
6+
47
"github.com/JackalLabs/sequoia/cmd/types"
58
"github.com/JackalLabs/sequoia/core"
69
"github.com/rs/zerolog"
@@ -12,15 +15,15 @@ func StartCmd() *cobra.Command {
1215
return &cobra.Command{
1316
Use: "start",
1417
Short: "Starts the provider",
15-
Run: func(cmd *cobra.Command, args []string) {
18+
RunE: func(cmd *cobra.Command, args []string) error {
1619
home, err := cmd.Flags().GetString(types.FlagHome)
1720
if err != nil {
18-
panic(err)
21+
return err
1922
}
2023

2124
logLevel, err := cmd.Flags().GetString(types.FlagLogLevel)
2225
if err != nil {
23-
panic(err)
26+
return err
2427
}
2528

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

34-
app := core.NewApp(home)
37+
app, err := core.NewApp(home)
38+
if err != nil {
39+
return err
40+
}
3541

36-
app.Start()
42+
for {
43+
err := app.Start()
44+
if err != nil {
45+
fmt.Println(err)
46+
time.Sleep(time.Minute)
47+
fmt.Println("Attempting restart again...")
48+
}
49+
}
3750
},
3851
}
3952
}

cmd/wallet/wallet.go

+12-10
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,24 @@ func addressCmd() *cobra.Command {
2727
return &cobra.Command{
2828
Use: "address",
2929
Short: "Check this providers address",
30-
Run: func(cmd *cobra.Command, args []string) {
30+
RunE: func(cmd *cobra.Command, args []string) error {
3131
home, err := cmd.Flags().GetString(types.FlagHome)
3232
if err != nil {
33-
panic(err)
33+
return err
3434
}
3535

3636
_, err = config.Init(home)
3737
if err != nil {
38-
panic(err)
38+
return err
3939
}
4040

4141
wallet, err := config.InitWallet(home)
4242
if err != nil {
43-
panic(err)
43+
return err
4444
}
4545

4646
fmt.Printf("Provider Address: %s\n", wallet.AccAddress())
47+
return nil
4748
},
4849
}
4950
}
@@ -53,25 +54,25 @@ func withdrawCMD() *cobra.Command {
5354
Use: "withdraw [to-address] [amount]",
5455
Short: "withdraw tokens from account",
5556
Args: cobra.ExactArgs(2),
56-
Run: func(cmd *cobra.Command, args []string) {
57+
RunE: func(cmd *cobra.Command, args []string) error {
5758
home, err := cmd.Flags().GetString(types.FlagHome)
5859
if err != nil {
59-
panic(err)
60+
return err
6061
}
6162

6263
_, err = config.Init(home)
6364
if err != nil {
64-
panic(err)
65+
return err
6566
}
6667

6768
wallet, err := config.InitWallet(home)
6869
if err != nil {
69-
panic(err)
70+
return err
7071
}
7172

7273
c, err := sdk.ParseCoinNormalized(args[1])
7374
if err != nil {
74-
panic(err)
75+
return err
7576
}
7677

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

8788
res, err := wallet.BroadcastTxCommit(data)
8889
if err != nil {
89-
panic(err)
90+
return err
9091
}
9192

9293
if res.Code == 0 {
9394
fmt.Println("Withdraw successful!")
9495
} else {
9596
fmt.Println("Something went wrong, please try again.")
9697
}
98+
return nil
9799
},
98100
}
99101
}

core/app.go

+20-15
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ type App struct {
3838
fileSystem *file_system.FileSystem
3939
}
4040

41-
func NewApp(home string) *App {
41+
func NewApp(home string) (*App, error) {
4242
cfg, err := config.Init(home)
4343
if err != nil {
44-
panic(err)
44+
return nil, err
4545
}
4646

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

5151
err = os.MkdirAll(dataDir, os.ModePerm)
5252
if err != nil {
53-
panic(err)
53+
return nil, err
5454
}
5555

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

6161
db, err := badger.Open(options)
6262
if err != nil {
63-
panic(err)
63+
return nil, err
6464
}
6565

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

68-
f := file_system.NewFileSystem(ctx, db, cfg.APICfg.IPFSPort, cfg.APICfg.IPFSDomain)
69-
68+
f, err := file_system.NewFileSystem(ctx, db, cfg.APICfg.IPFSPort, cfg.APICfg.IPFSDomain)
69+
if err != nil {
70+
return nil, err
71+
}
7072
return &App{
7173
fileSystem: f,
7274
api: apiServer,
7375
home: home,
74-
}
76+
}, nil
7577
}
7678

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

156-
func (a *App) Start() {
158+
func (a *App) Start() error {
157159
cfg, err := config.Init(a.home)
158160
if err != nil {
159-
panic(err)
161+
return err
160162
}
161163

162164
w, err := config.InitWallet(a.home)
163165
if err != nil {
164-
panic(err)
166+
return err
165167
}
166168

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

187189
totalSpace, err := strconv.ParseInt(res.Provider.Totalspace, 10, 64)
188190
if err != nil {
189191
if err != nil {
190-
panic(err)
192+
return err
191193
}
192194
}
193195
if totalSpace != cfg.TotalSpace {
194196
err := updateSpace(w, cfg.TotalSpace)
195197
if err != nil {
196-
panic(err)
198+
return err
197199
}
198200
}
199201
if res.Provider.Ip != cfg.Ip {
200202
err := updateIp(w, cfg.Ip)
201203
if err != nil {
202-
panic(err)
204+
return err
203205
}
204206
}
205207
}
206208

207209
params, err := a.GetStorageParams(w.Client.GRPCConn)
208210
if err != nil {
209-
panic(err)
211+
return err
210212
}
211213

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

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

241244
time.Sleep(time.Second * 30) // give the program some time to shut down
242245
a.fileSystem.Close()
246+
247+
return nil
243248
}

file_system/file_system_test.go

+8-6
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ func BenchmarkFileWrites(b *testing.B) {
5151
err = db.DropAll()
5252
require.NoError(b, err)
5353

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

9292
err = db.DropAll()
9393
require.NoError(t, err)
94-
f := NewFileSystem(context.Background(), db, 4005, "/dns4/ipfs.example.com/tcp/4001")
94+
f, err := NewFileSystem(context.Background(), db, 4005, "/dns4/ipfs.example.com/tcp/4001")
95+
require.NoError(t, err)
9596
defer db.Close()
9697

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

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

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

185187
err = db.DropAll()
186188
require.NoError(t, err)
187-
f := NewFileSystem(context.Background(), db, 4005, "/dns4/ipfs.example.com/tcp/4001")
188-
189+
f, err := NewFileSystem(context.Background(), db, 4005, "/dns4/ipfs.example.com/tcp/4001")
190+
require.NoError(t, err)
189191
size := 1024 * 255 // 255 kbs
190192
var chunkSize int64 = 1024
191193

file_system/types.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ type FileSystem struct {
1313
ipfs *ipfslite.Peer
1414
}
1515

16-
func NewFileSystem(ctx context.Context, db *badger.DB, ipfsPort int, ipfsDomain string) *FileSystem {
16+
func NewFileSystem(ctx context.Context, db *badger.DB, ipfsPort int, ipfsDomain string) (*FileSystem, error) {
1717
ipfs, err := ipfs2.MakeIPFS(ctx, db, ipfsPort, ipfsDomain)
1818
if err != nil {
19-
panic(err)
19+
return nil, err
2020
}
21-
return &FileSystem{db: db, ipfs: ipfs}
21+
return &FileSystem{db: db, ipfs: ipfs}, nil
2222
}
2323

2424
func (f *FileSystem) Close() {

wallet/wallet.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ func CreateWallet(seed string, derivation string, chainCfg types.ChainConfig) (*
2525

2626
c, err := client.NewClient(&chainCfg, encodingCfg.Marshaler)
2727
if err != nil {
28-
panic(err)
28+
return nil, err
2929
}
3030

3131
w, err := wallet.NewWallet(&accountCfg, c, encodingCfg.TxConfig)
3232
if err != nil {
33-
panic(err)
33+
return nil, err
3434
}
3535

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

5050
c, err := client.NewClient(&chainCfg, encodingCfg.Marshaler)
5151
if err != nil {
52-
panic(err)
52+
return nil, err
5353
}
5454

5555
w, err := wallet.NewWalletFromKey(key, c, encodingCfg.TxConfig)
5656
if err != nil {
57-
panic(err)
57+
return nil, err
5858
}
5959

6060
return w, err

0 commit comments

Comments
 (0)