From faca1493fc6fc27c25e3cd0973f0feb4f6198ee1 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Mon, 26 Aug 2024 13:41:26 +0200 Subject: [PATCH 001/708] bus/worker/main: update/remove deprecated code --- api/wallet.go | 22 +-- bus/bus.go | 15 +- bus/client/wallet.go | 65 +------- bus/routes.go | 236 ++---------------------------- cmd/renterd/config.go | 55 ------- cmd/renterd/logger.go | 4 - config/config.go | 14 +- internal/test/e2e/cluster_test.go | 3 - worker/worker.go | 8 - 9 files changed, 27 insertions(+), 395 deletions(-) diff --git a/api/wallet.go b/api/wallet.go index d2ddbc857..83ee5e0e1 100644 --- a/api/wallet.go +++ b/api/wallet.go @@ -7,6 +7,7 @@ import ( rhpv3 "go.sia.tech/core/rhp/v3" "go.sia.tech/core/types" + "go.sia.tech/coreutils/wallet" ) type ( @@ -77,12 +78,9 @@ type ( // WalletResponse is the response type for the /wallet endpoint. WalletResponse struct { - ScanHeight uint64 `json:"scanHeight"` - Address types.Address `json:"address"` - Spendable types.Currency `json:"spendable"` - Confirmed types.Currency `json:"confirmed"` - Unconfirmed types.Currency `json:"unconfirmed"` - Immature types.Currency `json:"immature"` + wallet.Balance + + Address types.Address `json:"address"` } WalletSendRequest struct { @@ -103,18 +101,6 @@ type ( // WalletTransactionsOption is an option for the WalletTransactions method. type WalletTransactionsOption func(url.Values) -func WalletTransactionsWithBefore(before time.Time) WalletTransactionsOption { - return func(q url.Values) { - q.Set("before", before.Format(time.RFC3339)) - } -} - -func WalletTransactionsWithSince(since time.Time) WalletTransactionsOption { - return func(q url.Values) { - q.Set("since", since.Format(time.RFC3339)) - } -} - func WalletTransactionsWithLimit(limit int) WalletTransactionsOption { return func(q url.Values) { q.Set("limit", fmt.Sprint(limit)) diff --git a/bus/bus.go b/bus/bus.go index c5ae1113e..1e6197fa0 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -513,16 +513,11 @@ func (b *Bus) Handler() http.Handler { "DELETE /upload/:id": b.uploadFinishedHandlerDELETE, "POST /upload/:id/sector": b.uploadAddSectorHandlerPOST, - "GET /wallet": b.walletHandler, - "POST /wallet/discard": b.walletDiscardHandler, - "POST /wallet/fund": b.walletFundHandler, - "GET /wallet/outputs": b.walletOutputsHandler, - "GET /wallet/pending": b.walletPendingHandler, - "POST /wallet/prepare/renew": b.walletPrepareRenewHandler, - "POST /wallet/redistribute": b.walletRedistributeHandler, - "POST /wallet/send": b.walletSendSiacoinsHandler, - "POST /wallet/sign": b.walletSignHandler, - "GET /wallet/transactions": b.walletTransactionsHandler, + "GET /wallet": b.walletHandler, + "GET /wallet/events": b.walletEventsHandler, + "GET /wallet/pending": b.walletPendingHandler, + "POST /wallet/redistribute": b.walletRedistributeHandler, + "POST /wallet/send": b.walletSendSiacoinsHandler, "GET /webhooks": b.webhookHandlerGet, "POST /webhooks": b.webhookHandlerPost, diff --git a/bus/client/wallet.go b/bus/client/wallet.go index 0fcc8d0b5..f6d958dce 100644 --- a/bus/client/wallet.go +++ b/bus/client/wallet.go @@ -6,7 +6,6 @@ import ( "net/http" "net/url" - rhpv3 "go.sia.tech/core/rhp/v3" "go.sia.tech/core/types" "go.sia.tech/renterd/api" ) @@ -28,34 +27,6 @@ func (c *Client) Wallet(ctx context.Context) (resp api.WalletResponse, err error return } -// WalletDiscard discards the provided txn, make its inputs usable again. This -// should only be called on transactions that will never be broadcast. -func (c *Client) WalletDiscard(ctx context.Context, txn types.Transaction) error { - return c.c.WithContext(ctx).POST("/wallet/discard", txn, nil) -} - -// WalletFund funds txn using inputs controlled by the wallet. -func (c *Client) WalletFund(ctx context.Context, txn *types.Transaction, amount types.Currency, useUnconfirmedTransactions bool) ([]types.Hash256, []types.Transaction, error) { - req := api.WalletFundRequest{ - Transaction: *txn, - Amount: amount, - UseUnconfirmedTxns: useUnconfirmedTransactions, - } - var resp api.WalletFundResponse - err := c.c.WithContext(ctx).POST("/wallet/fund", req, &resp) - if err != nil { - return nil, nil, err - } - *txn = resp.Transaction - return resp.ToSign, resp.DependsOn, nil -} - -// WalletOutputs returns the set of unspent outputs controlled by the wallet. -func (c *Client) WalletOutputs(ctx context.Context) (resp []api.SiacoinElement, err error) { - err = c.c.WithContext(ctx).GET("/wallet/outputs", &resp) - return -} - // WalletPending returns the txpool transactions that are relevant to the // wallet. func (c *Client) WalletPending(ctx context.Context) (resp []types.Transaction, err error) { @@ -63,26 +34,6 @@ func (c *Client) WalletPending(ctx context.Context) (resp []types.Transaction, e return } -// WalletPrepareRenew funds and signs a contract renewal transaction. -func (c *Client) WalletPrepareRenew(ctx context.Context, revision types.FileContractRevision, hostAddress, renterAddress types.Address, renterKey types.PrivateKey, renterFunds, minNewCollateral, maxFundAmount types.Currency, pt rhpv3.HostPriceTable, endHeight, windowSize, expectedStorage uint64) (api.WalletPrepareRenewResponse, error) { - req := api.WalletPrepareRenewRequest{ - Revision: revision, - EndHeight: endHeight, - ExpectedNewStorage: expectedStorage, - HostAddress: hostAddress, - PriceTable: pt, - MaxFundAmount: maxFundAmount, - MinNewCollateral: minNewCollateral, - RenterAddress: renterAddress, - RenterFunds: renterFunds, - RenterKey: renterKey, - WindowSize: windowSize, - } - var resp api.WalletPrepareRenewResponse - err := c.c.WithContext(ctx).POST("/wallet/prepare/renew", req, &resp) - return resp, err -} - // WalletRedistribute broadcasts a transaction that redistributes the money in // the wallet in the desired number of outputs of given amount. If the // transaction was successfully broadcasted it will return the transaction ID. @@ -96,19 +47,9 @@ func (c *Client) WalletRedistribute(ctx context.Context, outputs int, amount typ return } -// WalletSign signs txn using the wallet's private key. -func (c *Client) WalletSign(ctx context.Context, txn *types.Transaction, toSign []types.Hash256, cf types.CoveredFields) error { - req := api.WalletSignRequest{ - Transaction: *txn, - ToSign: toSign, - CoveredFields: cf, - } - return c.c.WithContext(ctx).POST("/wallet/sign", req, txn) -} - -// WalletTransactions returns all transactions relevant to the wallet. -func (c *Client) WalletTransactions(ctx context.Context, opts ...api.WalletTransactionsOption) (resp []api.Transaction, err error) { - c.c.Custom("GET", "/wallet/transactions", nil, &resp) +// WalletEvents returns all events relevant to the wallet. +func (c *Client) WalletEvents(ctx context.Context, opts ...api.WalletTransactionsOption) (resp []api.Transaction, err error) { + c.c.Custom("GET", "/wallet/events", nil, &resp) values := url.Values{} for _, opt := range opts { diff --git a/bus/routes.go b/bus/routes.go index f020c5944..a0df4cfad 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -21,7 +21,6 @@ import ( "go.sia.tech/core/gateway" "go.sia.tech/core/types" - "go.sia.tech/coreutils/wallet" "go.sia.tech/gofakes3" "go.sia.tech/jape" "go.sia.tech/renterd/alerts" @@ -189,22 +188,13 @@ func (b *Bus) walletHandler(jc jape.Context) { return } - tip, err := b.w.Tip() - if jc.Check("couldn't fetch wallet scan height", err) != nil { - return - } - jc.Encode(api.WalletResponse{ - ScanHeight: tip.Height, - Address: address, - Confirmed: balance.Confirmed, - Spendable: balance.Spendable, - Unconfirmed: balance.Unconfirmed, - Immature: balance.Immature, + Balance: balance, + Address: address, }) } -func (b *Bus) walletTransactionsHandler(jc jape.Context) { +func (b *Bus) walletEventsHandler(jc jape.Context) { offset := 0 limit := -1 if jc.DecodeForm("offset", &offset) != nil || @@ -212,126 +202,11 @@ func (b *Bus) walletTransactionsHandler(jc jape.Context) { return } - // TODO: deprecate these parameters when moving to v2.0.0 - var before, since time.Time - if jc.DecodeForm("before", (*api.TimeRFC3339)(&before)) != nil || - jc.DecodeForm("since", (*api.TimeRFC3339)(&since)) != nil { - return - } - - // convertToTransaction converts wallet event data to a Transaction. - convertToTransaction := func(kind string, data wallet.EventData) (txn types.Transaction, ok bool) { - ok = true - switch kind { - case wallet.EventTypeMinerPayout, - wallet.EventTypeFoundationSubsidy, - wallet.EventTypeSiafundClaim: - payout, _ := data.(wallet.EventPayout) - txn = types.Transaction{SiacoinOutputs: []types.SiacoinOutput{payout.SiacoinElement.SiacoinOutput}} - case wallet.EventTypeV1Transaction: - v1Txn, _ := data.(wallet.EventV1Transaction) - txn = types.Transaction(v1Txn.Transaction) - case wallet.EventTypeV1ContractResolution: - fce, _ := data.(wallet.EventV1ContractResolution) - txn = types.Transaction{ - FileContracts: []types.FileContract{fce.Parent.FileContract}, - SiacoinOutputs: []types.SiacoinOutput{fce.SiacoinElement.SiacoinOutput}, - } - default: - ok = false - } - return - } - - // convertToTransactions converts wallet events to API transactions. - convertToTransactions := func(events []wallet.Event) []api.Transaction { - var transactions []api.Transaction - for _, e := range events { - if txn, ok := convertToTransaction(e.Type, e.Data); ok { - transactions = append(transactions, api.Transaction{ - Raw: txn, - Index: e.Index, - ID: types.TransactionID(e.ID), - Inflow: e.SiacoinInflow(), - Outflow: e.SiacoinOutflow(), - Timestamp: e.Timestamp, - }) - } - } - return transactions - } - - if before.IsZero() && since.IsZero() { - events, err := b.w.Events(offset, limit) - if jc.Check("couldn't load transactions", err) == nil { - jc.Encode(convertToTransactions(events)) - } - return - } - - // TODO: remove this when 'before' and 'since' are deprecated, until then we - // fetch all transactions and paginate manually if either is specified - events, err := b.w.Events(0, -1) - if jc.Check("couldn't load transactions", err) != nil { - return - } - filtered := events[:0] - for _, txn := range events { - if (before.IsZero() || txn.Timestamp.Before(before)) && - (since.IsZero() || txn.Timestamp.After(since)) { - filtered = append(filtered, txn) - } - } - events = filtered - if limit == 0 || limit == -1 { - jc.Encode(convertToTransactions(events[offset:])) - } else { - jc.Encode(convertToTransactions(events[offset : offset+limit])) - } -} - -func (b *Bus) walletOutputsHandler(jc jape.Context) { - utxos, err := b.w.SpendableOutputs() - if jc.Check("couldn't load outputs", err) == nil { - // convert to siacoin elements - elements := make([]api.SiacoinElement, len(utxos)) - for i, sce := range utxos { - elements[i] = api.SiacoinElement{ - ID: sce.StateElement.ID, - SiacoinOutput: types.SiacoinOutput{ - Value: sce.SiacoinOutput.Value, - Address: sce.SiacoinOutput.Address, - }, - MaturityHeight: sce.MaturityHeight, - } - } - jc.Encode(elements) - } -} - -func (b *Bus) walletFundHandler(jc jape.Context) { - var wfr api.WalletFundRequest - if jc.Decode(&wfr) != nil { - return - } - txn := wfr.Transaction - - if len(txn.MinerFees) == 0 { - // if no fees are specified, we add some - fee := b.cm.RecommendedFee().Mul64(b.cm.TipState().TransactionWeight(txn)) - txn.MinerFees = []types.Currency{fee} - } - - toSign, err := b.w.FundTransaction(&txn, wfr.Amount.Add(txn.MinerFees[0]), wfr.UseUnconfirmedTxns) - if jc.Check("couldn't fund transaction", err) != nil { + events, err := b.w.Events(offset, limit) + if jc.Check("couldn't load events", err) != nil { return } - - jc.Encode(api.WalletFundResponse{ - Transaction: txn, - ToSign: toSign, - DependsOn: b.cm.UnconfirmedParents(txn), - }) + jc.Encode(events) } func (b *Bus) walletSendSiacoinsHandler(jc jape.Context) { @@ -405,15 +280,6 @@ func (b *Bus) walletSendSiacoinsHandler(jc jape.Context) { } } -func (b *Bus) walletSignHandler(jc jape.Context) { - var wsr api.WalletSignRequest - if jc.Decode(&wsr) != nil { - return - } - b.w.SignTransaction(&wsr.Transaction, wsr.ToSign, wsr.CoveredFields) - jc.Encode(wsr.Transaction) -} - func (b *Bus) walletRedistributeHandler(jc jape.Context) { var wfr api.WalletRedistributeRequest if jc.Decode(&wfr) != nil { @@ -474,94 +340,12 @@ func (b *Bus) walletRedistributeHandler(jc jape.Context) { jc.Encode(ids) } -func (b *Bus) walletDiscardHandler(jc jape.Context) { - var txn types.Transaction - if jc.Decode(&txn) == nil { - b.w.ReleaseInputs([]types.Transaction{txn}, nil) - } -} - -func (b *Bus) walletPrepareRenewHandler(jc jape.Context) { - var wprr api.WalletPrepareRenewRequest - if jc.Decode(&wprr) != nil { - return - } - if wprr.RenterKey == nil { - jc.Error(errors.New("no renter key provided"), http.StatusBadRequest) - return - } - cs := b.cm.TipState() - - // Create the final revision from the provided revision. - finalRevision := wprr.Revision - finalRevision.MissedProofOutputs = finalRevision.ValidProofOutputs - finalRevision.Filesize = 0 - finalRevision.FileMerkleRoot = types.Hash256{} - finalRevision.RevisionNumber = math.MaxUint64 - - // Prepare the new contract. - fc, basePrice, err := rhpv3.PrepareContractRenewal(wprr.Revision, wprr.HostAddress, wprr.RenterAddress, wprr.RenterFunds, wprr.MinNewCollateral, wprr.PriceTable, wprr.ExpectedNewStorage, wprr.EndHeight) - if jc.Check("couldn't prepare contract renewal", err) != nil { - return - } - - // Create the transaction containing both the final revision and new - // contract. - txn := types.Transaction{ - FileContracts: []types.FileContract{fc}, - FileContractRevisions: []types.FileContractRevision{finalRevision}, - MinerFees: []types.Currency{wprr.PriceTable.TxnFeeMaxRecommended.Mul64(4096)}, - } - - // Compute how much renter funds to put into the new contract. - cost := rhpv3.ContractRenewalCost(cs, wprr.PriceTable, fc, txn.MinerFees[0], basePrice) - - // Make sure we don't exceed the max fund amount. - // TODO: remove the IsZero check for the v2 change - if /*!wprr.MaxFundAmount.IsZero() &&*/ wprr.MaxFundAmount.Cmp(cost) < 0 { - jc.Error(fmt.Errorf("%w: %v > %v", api.ErrMaxFundAmountExceeded, cost, wprr.MaxFundAmount), http.StatusBadRequest) - return - } - - // Fund the txn. We are not signing it yet since it's not complete. The host - // still needs to complete it and the revision + contract are signed with - // the renter key by the worker. - toSign, err := b.w.FundTransaction(&txn, cost, true) - if jc.Check("couldn't fund transaction", err) != nil { - return - } - - jc.Encode(api.WalletPrepareRenewResponse{ - FundAmount: cost, - ToSign: toSign, - TransactionSet: append(b.cm.UnconfirmedParents(txn), txn), - }) -} - func (b *Bus) walletPendingHandler(jc jape.Context) { - isRelevant := func(txn types.Transaction) bool { - addr := b.w.Address() - for _, sci := range txn.SiacoinInputs { - if sci.UnlockConditions.UnlockHash() == addr { - return true - } - } - for _, sco := range txn.SiacoinOutputs { - if sco.Address == addr { - return true - } - } - return false - } - - txns := b.cm.PoolTransactions() - relevant := txns[:0] - for _, txn := range txns { - if isRelevant(txn) { - relevant = append(relevant, txn) - } + events, err := b.w.UnconfirmedEvents() + if jc.Check("couldn't fetch unconfirmed events", err) != nil { + return } - jc.Encode(relevant) + jc.Encode(events) } func (b *Bus) hostsHandlerGETDeprecated(jc jape.Context) { diff --git a/cmd/renterd/config.go b/cmd/renterd/config.go index 38231458d..ca9b80ea2 100644 --- a/cmd/renterd/config.go +++ b/cmd/renterd/config.go @@ -2,7 +2,6 @@ package main import ( "bufio" - "encoding/hex" "errors" "flag" "fmt" @@ -20,10 +19,8 @@ import ( "go.sia.tech/coreutils/wallet" "go.sia.tech/renterd/api" "go.sia.tech/renterd/config" - "go.sia.tech/renterd/worker/s3" "golang.org/x/term" "gopkg.in/yaml.v3" - "lukechampine.com/frand" ) // TODO: handle RENTERD_S3_HOST_BUCKET_BASES correctly @@ -69,7 +66,6 @@ func defaultConfig() config.Config { }, }, Log: config.Log{ - Path: "", // deprecated. included for compatibility. Level: "", File: config.LogFile{ Enabled: true, @@ -127,7 +123,6 @@ func defaultConfig() config.Config { Address: "localhost:8080", Enabled: true, DisableAuth: false, - KeypairsV4: nil, }, } } @@ -205,17 +200,6 @@ func sanitizeConfig(cfg *config.Config) error { } } - // parse S3 auth keys - if cfg.S3.Enabled { - if !cfg.S3.DisableAuth && keyPairsV4 != "" { - var err error - cfg.S3.KeypairsV4, err = s3.Parsev4AuthKeys(strings.Split(keyPairsV4, ";")) - if err != nil { - return fmt.Errorf("failed to parse keypairs: %v", err) - } - } - } - // default log levels if cfg.Log.Level == "" { cfg.Log.Level = "info" @@ -253,12 +237,6 @@ func parseYamlConfig(cfg *config.Config) { } func parseCLIFlags(cfg *config.Config) { - // deprecated - these go first so that they can be overwritten by the non-deprecated flags - flag.StringVar(&cfg.Log.Database.Level, "db.logger.logLevel", cfg.Log.Database.Level, "(deprecated) Logger level (overrides with RENTERD_DB_LOGGER_LOG_LEVEL)") - flag.BoolVar(&cfg.Database.Log.IgnoreRecordNotFoundError, "db.logger.ignoreNotFoundError", cfg.Database.Log.IgnoreRecordNotFoundError, "(deprecated) Ignores 'not found' errors in logger (overrides with RENTERD_DB_LOGGER_IGNORE_NOT_FOUND_ERROR)") - flag.DurationVar(&cfg.Database.Log.SlowThreshold, "db.logger.slowThreshold", cfg.Database.Log.SlowThreshold, "(deprecated) Threshold for slow queries in logger (overrides with RENTERD_DB_LOGGER_SLOW_THRESHOLD)") - flag.StringVar(&cfg.Log.Path, "log-path", cfg.Log.Path, "(deprecated) Path to directory for logs (overrides with RENTERD_LOG_PATH)") - // node flag.StringVar(&cfg.HTTP.Address, "http", cfg.HTTP.Address, "Address for serving the API") flag.StringVar(&cfg.Directory, "dir", cfg.Directory, "Directory for storing node state") @@ -289,7 +267,6 @@ func parseCLIFlags(cfg *config.Config) { flag.Uint64Var(&cfg.Bus.AnnouncementMaxAgeHours, "bus.announcementMaxAgeHours", cfg.Bus.AnnouncementMaxAgeHours, "Max age for announcements") flag.BoolVar(&cfg.Bus.Bootstrap, "bus.bootstrap", cfg.Bus.Bootstrap, "Bootstraps gateway and consensus modules") flag.StringVar(&cfg.Bus.GatewayAddr, "bus.gatewayAddr", cfg.Bus.GatewayAddr, "Address for Sia peer connections (overrides with RENTERD_BUS_GATEWAY_ADDR)") - flag.DurationVar(&cfg.Bus.PersistInterval, "bus.persistInterval", cfg.Bus.PersistInterval, "(deprecated) Interval for persisting consensus updates") flag.DurationVar(&cfg.Bus.UsedUTXOExpiry, "bus.usedUTXOExpiry", cfg.Bus.UsedUTXOExpiry, "Expiry for used UTXOs in transactions") flag.Int64Var(&cfg.Bus.SlabBufferCompletionThreshold, "bus.slabBufferCompletionThreshold", cfg.Bus.SlabBufferCompletionThreshold, "Threshold for slab buffer upload (overrides with RENTERD_BUS_SLAB_BUFFER_COMPLETION_THRESHOLD)") @@ -360,9 +337,7 @@ func parseEnvironmentVariables(cfg *config.Config) { parseEnvVar("RENTERD_DB_NAME", &cfg.Database.MySQL.Database) parseEnvVar("RENTERD_DB_METRICS_NAME", &cfg.Database.MySQL.MetricsDatabase) - parseEnvVar("RENTERD_DB_LOGGER_IGNORE_NOT_FOUND_ERROR", &cfg.Database.Log.IgnoreRecordNotFoundError) parseEnvVar("RENTERD_DB_LOGGER_LOG_LEVEL", &cfg.Log.Level) - parseEnvVar("RENTERD_DB_LOGGER_SLOW_THRESHOLD", &cfg.Database.Log.SlowThreshold) parseEnvVar("RENTERD_WORKER_ENABLED", &cfg.Worker.Enabled) parseEnvVar("RENTERD_WORKER_ID", &cfg.Worker.ID) @@ -381,7 +356,6 @@ func parseEnvironmentVariables(cfg *config.Config) { parseEnvVar("RENTERD_S3_HOST_BUCKET_ENABLED", &cfg.S3.HostBucketEnabled) parseEnvVar("RENTERD_S3_HOST_BUCKET_BASES", &cfg.S3.HostBucketBases) - parseEnvVar("RENTERD_LOG_PATH", &cfg.Log.Path) parseEnvVar("RENTERD_LOG_LEVEL", &cfg.Log.Level) parseEnvVar("RENTERD_LOG_FILE_ENABLED", &cfg.Log.File.Enabled) parseEnvVar("RENTERD_LOG_FILE_FORMAT", &cfg.Log.File.Format) @@ -675,33 +649,6 @@ func setS3Config(cfg *config.Config) { fmt.Println("It should not be exposed to the public internet without setting up a reverse proxy.") setListenAddress("S3 Address", &cfg.S3.Address, true) - // s3 access key - if len(cfg.S3.KeypairsV4) != 0 { - fmt.Println("") - fmt.Println("A S3 keypair has already been created.") - fmt.Println("If you change your S3 key pair, you will need to update any scripts or applications that use the S3 API.") - if !promptYesNo("Would you like to change your S3 key pair?") { - return - } - } - - cfg.S3.KeypairsV4 = make(map[string]string) - - fmt.Println("") - answer := promptQuestion("Would you like to automatically generate a new S3 key pair or set your own?", []string{"auto", "manual"}) - if strings.EqualFold(answer, "auto") { - // generate a new key pair - accessKey := hex.EncodeToString(frand.Bytes(20)) - secretKey := hex.EncodeToString(frand.Bytes(20)) - cfg.S3.KeypairsV4[accessKey] = secretKey - fmt.Println("") - fmt.Println("A new S3 key pair has been generated below.") - fmt.Println(wrapANSI("\033[34;1m", "Access Key:", "\033[0m"), accessKey) - fmt.Println(wrapANSI("\033[34;1m", "Secret Key:", "\033[0m"), secretKey) - fmt.Println("") - return - } - var accessKey, secretKey string for { fmt.Println("") @@ -722,6 +669,4 @@ func setS3Config(cfg *config.Config) { } fmt.Println(wrapANSI("\033[31m", "Secret key must be be 40 characters!", "\033[0m")) } - - cfg.S3.KeypairsV4[accessKey] = secretKey } diff --git a/cmd/renterd/logger.go b/cmd/renterd/logger.go index d107cc4a0..d53bdd709 100644 --- a/cmd/renterd/logger.go +++ b/cmd/renterd/logger.go @@ -14,10 +14,6 @@ import ( func NewLogger(dir, filename string, cfg config.Log) (*zap.Logger, func(context.Context) error, error) { // path path := filepath.Join(dir, filename) - if cfg.Path != "" { - path = filepath.Join(cfg.Path, filename) - } - if cfg.File.Path != "" { path = cfg.File.Path } diff --git a/config/config.go b/config/config.go index 99382240b..8aaf48e7e 100644 --- a/config/config.go +++ b/config/config.go @@ -41,7 +41,6 @@ type ( } Database struct { - Log DatabaseLog `yaml:"log,omitempty"` // deprecated. included for compatibility. // optional fields depending on backend MySQL MySQL `yaml:"mysql,omitempty"` } @@ -55,7 +54,6 @@ type ( RemotePassword string `yaml:"remotePassword,omitempty"` UsedUTXOExpiry time.Duration `yaml:"usedUtxoExpiry,omitempty"` SlabBufferCompletionThreshold int64 `yaml:"slabBufferCompleionThreshold,omitempty"` - PersistInterval time.Duration `yaml:"persistInterval,omitempty"` // deprecated } // LogFile configures the file output of the logger. @@ -76,7 +74,6 @@ type ( } Log struct { - Path string `yaml:"path,omitempty"` // deprecated. included for compatibility. Level string `yaml:"level,omitempty"` // global log level StdOut StdOut `yaml:"stdout,omitempty"` File LogFile `yaml:"file,omitempty"` @@ -104,12 +101,11 @@ type ( } S3 struct { - Address string `yaml:"address,omitempty"` - DisableAuth bool `yaml:"disableAuth,omitempty"` - Enabled bool `yaml:"enabled,omitempty"` - KeypairsV4 map[string]string `yaml:"keypairsV4,omitempty"` // deprecated. included for compatibility. - HostBucketEnabled bool `yaml:"hostBucketEnabled,omitempty"` - HostBucketBases []string `yaml:"hostBucketBases,omitempty"` + Address string `yaml:"address,omitempty"` + DisableAuth bool `yaml:"disableAuth,omitempty"` + Enabled bool `yaml:"enabled,omitempty"` + HostBucketEnabled bool `yaml:"hostBucketEnabled,omitempty"` + HostBucketBases []string `yaml:"hostBucketBases,omitempty"` } // Worker contains the configuration for a worker. diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 255999911..977a6f3e1 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -1897,9 +1897,6 @@ func TestWallet(t *testing.T) { // Check wallet info is sane after startup. wallet, err := b.Wallet(context.Background()) tt.OK(err) - if wallet.ScanHeight == 0 { - t.Fatal("wallet scan height should not be 0") - } if wallet.Confirmed.IsZero() { t.Fatal("wallet confirmed balance should not be zero") } diff --git a/worker/worker.go b/worker/worker.go index 111300ff2..4ea269d94 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -86,7 +86,6 @@ type ( WebhookStore Syncer - Wallet } // An AccountStore manages ephemaral accounts state. @@ -151,13 +150,6 @@ type ( SyncerPeers(ctx context.Context) (resp []string, err error) } - Wallet interface { - WalletDiscard(ctx context.Context, txn types.Transaction) error - WalletFund(ctx context.Context, txn *types.Transaction, amount types.Currency, useUnconfirmedTxns bool) ([]types.Hash256, []types.Transaction, error) - WalletPrepareRenew(ctx context.Context, revision types.FileContractRevision, hostAddress, renterAddress types.Address, renterKey types.PrivateKey, renterFunds, minNewCollateral, maxFundAmount types.Currency, pt rhpv3.HostPriceTable, endHeight, windowSize, expectedStorage uint64) (api.WalletPrepareRenewResponse, error) - WalletSign(ctx context.Context, txn *types.Transaction, toSign []types.Hash256, cf types.CoveredFields) error - } - WebhookStore interface { RegisterWebhook(ctx context.Context, webhook webhooks.Webhook) error UnregisterWebhook(ctx context.Context, webhook webhooks.Webhook) error From f1542e1b560274543a29a94f1865a138c9cc2339 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Mon, 26 Aug 2024 13:54:10 +0200 Subject: [PATCH 002/708] bus: update CreateMultipartUploadRequest --- api/multipart.go | 21 ++++++++------------- bus/client/multipart-upload.go | 11 +++++------ bus/routes.go | 6 ++---- worker/s3/backend.go | 7 +++---- 4 files changed, 18 insertions(+), 27 deletions(-) diff --git a/api/multipart.go b/api/multipart.go index ecd19789f..04417963f 100644 --- a/api/multipart.go +++ b/api/multipart.go @@ -51,10 +51,9 @@ type ( } CreateMultipartOptions struct { - GenerateKey bool - Key *object.EncryptionKey - MimeType string - Metadata ObjectUserMetadata + DisableClientSideEncryption bool + MimeType string + Metadata ObjectUserMetadata } CompleteMultipartOptions struct { @@ -92,15 +91,11 @@ type ( } MultipartCreateRequest struct { - Bucket string `json:"bucket"` - Path string `json:"path"` - Key *object.EncryptionKey `json:"key"` - MimeType string `json:"mimeType"` - Metadata ObjectUserMetadata `json:"metadata"` - - // TODO: The next major version change should invert this to create a - // key by default - GenerateKey bool `json:"generateKey"` + Bucket string `json:"bucket"` + Path string `json:"path"` + MimeType string `json:"mimeType"` + Metadata ObjectUserMetadata `json:"metadata"` + DisableClientSideEncryption bool `json:"disableClientSideEncryption"` } MultipartCreateResponse struct { diff --git a/bus/client/multipart-upload.go b/bus/client/multipart-upload.go index 6fd06204c..4358d4693 100644 --- a/bus/client/multipart-upload.go +++ b/bus/client/multipart-upload.go @@ -47,12 +47,11 @@ func (c *Client) CompleteMultipartUpload(ctx context.Context, bucket, path, uplo // CreateMultipartUpload creates a new multipart upload. func (c *Client) CreateMultipartUpload(ctx context.Context, bucket, path string, opts api.CreateMultipartOptions) (resp api.MultipartCreateResponse, err error) { err = c.c.WithContext(ctx).POST("/multipart/create", api.MultipartCreateRequest{ - Bucket: bucket, - GenerateKey: opts.GenerateKey, - Path: path, - Key: opts.Key, - MimeType: opts.MimeType, - Metadata: opts.Metadata, + Bucket: bucket, + DisableClientSideEncryption: opts.DisableClientSideEncryption, + Path: path, + MimeType: opts.MimeType, + Metadata: opts.Metadata, }, &resp) return } diff --git a/bus/routes.go b/bus/routes.go index a0df4cfad..08ee15494 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1960,12 +1960,10 @@ func (b *Bus) multipartHandlerCreatePOST(jc jape.Context) { } var key object.EncryptionKey - if req.GenerateKey { - key = object.GenerateEncryptionKey() - } else if req.Key == nil { + if req.DisableClientSideEncryption { key = object.NoOpKey } else { - key = *req.Key + key = object.GenerateEncryptionKey() } resp, err := b.ms.CreateMultipartUpload(jc.Request.Context(), req.Bucket, req.Path, key, req.MimeType, req.Metadata) diff --git a/worker/s3/backend.go b/worker/s3/backend.go index a8dd1cb22..528f9e7ca 100644 --- a/worker/s3/backend.go +++ b/worker/s3/backend.go @@ -12,7 +12,6 @@ import ( "go.sia.tech/gofakes3" "go.sia.tech/renterd/api" "go.sia.tech/renterd/internal/utils" - "go.sia.tech/renterd/object" "go.uber.org/zap" ) @@ -433,9 +432,9 @@ func (s *s3) CopyObject(ctx context.Context, srcBucket, srcKey, dstBucket, dstKe func (s *s3) CreateMultipartUpload(ctx context.Context, bucket, key string, meta map[string]string) (gofakes3.UploadID, error) { convertToSiaMetadataHeaders(meta) resp, err := s.b.CreateMultipartUpload(ctx, bucket, "/"+key, api.CreateMultipartOptions{ - Key: &object.NoOpKey, - MimeType: meta["Content-Type"], - Metadata: api.ExtractObjectUserMetadataFrom(meta), + DisableClientSideEncryption: true, + MimeType: meta["Content-Type"], + Metadata: api.ExtractObjectUserMetadataFrom(meta), }) if err != nil { return "", gofakes3.ErrorMessage(gofakes3.ErrInternal, err.Error()) From ae09b5e696df2f38f86432b823a047674f6331d3 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 27 Aug 2024 11:27:34 +0200 Subject: [PATCH 003/708] autopilot: remove compatV105Host check --- autopilot/autopilot.go | 51 ------------------------------------------ 1 file changed, 51 deletions(-) diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 9ea235a11..149ac710f 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -722,16 +722,6 @@ func (ap *Autopilot) hostHandlerGET(jc jape.Context) { return } - state, err := ap.buildState(jc.Request.Context()) - if jc.Check("failed to build state", err) != nil { - return - } - - // TODO: remove on next major release - if jc.Check("failed to get host", compatV105Host(jc.Request.Context(), state.ContractsConfig(), ap.bus, hk)) != nil { - return - } - hi, err := ap.bus.Host(jc.Request.Context(), hk) if jc.Check("failed to get host info", err) != nil { return @@ -910,47 +900,6 @@ func (ap *Autopilot) buildState(ctx context.Context) (*contractor.MaintenanceSta }, nil } -// compatV105Host performs some state checks and bus calls we no longer need but -// are necessary checks to make sure our API is consistent. This should be -// removed in the next major release. -func compatV105Host(ctx context.Context, cfg api.ContractsConfig, b Bus, hk types.PublicKey) error { - // state checks - if cfg.Allowance.IsZero() { - return fmt.Errorf("can not score hosts because contracts allowance is zero") - } - if cfg.Amount == 0 { - return fmt.Errorf("can not score hosts because contracts amount is zero") - } - if cfg.Period == 0 { - return fmt.Errorf("can not score hosts because contract period is zero") - } - - // fetch host - _, err := b.Host(ctx, hk) - if err != nil { - return fmt.Errorf("failed to fetch requested host from bus: %w", err) - } - - // other checks - _, err = b.GougingSettings(ctx) - if err != nil { - return fmt.Errorf("failed to fetch gouging settings from bus: %w", err) - } - _, err = b.RedundancySettings(ctx) - if err != nil { - return fmt.Errorf("failed to fetch redundancy settings from bus: %w", err) - } - _, err = b.ConsensusState(ctx) - if err != nil { - return fmt.Errorf("failed to fetch consensus state from bus: %w", err) - } - _, err = b.RecommendedFee(ctx) - if err != nil { - return fmt.Errorf("failed to fetch recommended fee from bus: %w", err) - } - return nil -} - func compatV105UsabilityFilterModeCheck(usabilityMode string) error { switch usabilityMode { case api.UsabilityFilterModeUsable: From c9fccdf35948c68a2a3dce8d47b47dd9c5655b3f Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 27 Aug 2024 11:30:16 +0200 Subject: [PATCH 004/708] autopilot: remove usability filter mode check --- autopilot/autopilot.go | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 149ac710f..3661308f4 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -755,11 +755,6 @@ func (ap *Autopilot) hostsHandlerPOST(jc jape.Context) { return } - // TODO: remove on next major release - if jc.Check("failed to get host info", compatV105UsabilityFilterModeCheck(req.UsabilityMode)) != nil { - return - } - hosts, err := ap.bus.SearchHosts(jc.Request.Context(), api.SearchHostOptions{ AutopilotID: ap.id, Offset: req.Offset, @@ -900,18 +895,6 @@ func (ap *Autopilot) buildState(ctx context.Context) (*contractor.MaintenanceSta }, nil } -func compatV105UsabilityFilterModeCheck(usabilityMode string) error { - switch usabilityMode { - case api.UsabilityFilterModeUsable: - case api.UsabilityFilterModeUnusable: - case api.UsabilityFilterModeAll: - case "": - default: - return fmt.Errorf("invalid usability mode: '%v', options are 'usable', 'unusable' or an empty string for no filter", usabilityMode) - } - return nil -} - func computeNextPeriod(bh, currentPeriod, period uint64) uint64 { prevPeriod := currentPeriod nextPeriod := prevPeriod From 5966dc3aecc9ab6f4d41694ae7508fc3abc030cb Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 27 Aug 2024 11:36:06 +0200 Subject: [PATCH 005/708] bus: validate SearchHostsRequest --- bus/routes.go | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/bus/routes.go b/bus/routes.go index f020c5944..14bae2cd6 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -585,9 +585,41 @@ func (b *Bus) searchHostsHandlerPOST(jc jape.Context) { return } - // TODO: on the next major release: - // - properly default search params (currently no defaults are set) - // - properly validate and return 400 (currently validation is done in autopilot and the store) + // validate the usability mode + switch req.UsabilityMode { + case api.UsabilityFilterModeUsable: + case api.UsabilityFilterModeUnusable: + case api.UsabilityFilterModeAll: + case "": + req.UsabilityMode = api.UsabilityFilterModeAll + default: + jc.Error(fmt.Errorf("invalid usability mode: '%v', options are 'usable', 'unusable' or an empty string for no filter", req.UsabilityMode), http.StatusBadRequest) + return + } + + // validate the filter mode + switch req.FilterMode { + case api.HostFilterModeAllowed: + case api.HostFilterModeBlocked: + case api.HostFilterModeAll: + req.FilterMode = api.HostFilterModeAll + case "": + default: + jc.Error(fmt.Errorf("invalid filter mode: '%v', options are 'allowed', 'blocked' or an empty string for no filter", req.FilterMode), http.StatusBadRequest) + return + } + + // validate the offset and limit + if req.Offset < 0 { + jc.Error(errors.New("offset must be non-negative"), http.StatusBadRequest) + return + } + if req.Limit < 0 { + jc.Error(errors.New("limit must be non-negative"), http.StatusBadRequest) + return + } else if req.Limit == 0 { + req.Limit = -1 + } hosts, err := b.hs.SearchHosts(jc.Request.Context(), req.AutopilotID, req.FilterMode, req.UsabilityMode, req.AddressContains, req.KeyIn, req.Offset, req.Limit) if jc.Check(fmt.Sprintf("couldn't fetch hosts %d-%d", req.Offset, req.Offset+req.Limit), err) != nil { From 75dad20e458ba02bc38613b5d1d088a8c3fadefc Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 27 Aug 2024 11:39:22 +0200 Subject: [PATCH 006/708] all: use SearchHosts defaults --- autopilot/autopilot.go | 2 +- autopilot/contractor/contractor.go | 14 +++----------- bus/bus.go | 1 - bus/routes.go | 17 +---------------- 4 files changed, 5 insertions(+), 29 deletions(-) diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 3661308f4..58bf76bb1 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -194,7 +194,7 @@ func (ap *Autopilot) configHandlerPOST(jc jape.Context) { } // fetch hosts - hosts, err := ap.bus.SearchHosts(ctx, api.SearchHostOptions{Limit: -1, FilterMode: api.HostFilterModeAllowed}) + hosts, err := ap.bus.SearchHosts(ctx, api.SearchHostOptions{}) if jc.Check("failed to get hosts", err) != nil { return } diff --git a/autopilot/contractor/contractor.go b/autopilot/contractor/contractor.go index 4e1b87d3b..37223864b 100644 --- a/autopilot/contractor/contractor.go +++ b/autopilot/contractor/contractor.go @@ -1129,11 +1129,7 @@ func performContractFormations(ctx *mCtx, bus Bus, w Worker, cr contractReviser, for _, c := range contracts { usedHosts[c.HostKey] = struct{}{} } - allHosts, err := bus.SearchHosts(ctx, api.SearchHostOptions{ - Limit: -1, - FilterMode: api.HostFilterModeAllowed, - UsabilityMode: api.UsabilityFilterModeAll, - }) + allHosts, err := bus.SearchHosts(ctx, api.SearchHostOptions{}) if err != nil { return nil, fmt.Errorf("failed to fetch usable hosts: %w", err) } @@ -1232,7 +1228,7 @@ func performContractFormations(ctx *mCtx, bus Bus, w Worker, cr contractReviser, func performHostChecks(ctx *mCtx, bus Bus, logger *zap.SugaredLogger) error { var usabilityBreakdown unusableHostsBreakdown // fetch all hosts that are not blocked - hosts, err := bus.SearchHosts(ctx, api.SearchHostOptions{Limit: -1, FilterMode: api.HostFilterModeAllowed}) + hosts, err := bus.SearchHosts(ctx, api.SearchHostOptions{}) if err != nil { return fmt.Errorf("failed to fetch all hosts: %w", err) } @@ -1285,11 +1281,7 @@ func performPostMaintenanceTasks(ctx *mCtx, bus Bus, w Worker, alerter alerts.Al if err != nil { return fmt.Errorf("failed to fetch contracts: %w", err) } - allHosts, err := bus.SearchHosts(ctx, api.SearchHostOptions{ - Limit: -1, - FilterMode: api.HostFilterModeAllowed, - UsabilityMode: api.UsabilityFilterModeAll, - }) + allHosts, err := bus.SearchHosts(ctx, api.SearchHostOptions{}) if err != nil { return fmt.Errorf("failed to fetch all hosts: %w", err) } diff --git a/bus/bus.go b/bus/bus.go index c5ae1113e..423329e94 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -442,7 +442,6 @@ func (b *Bus) Handler() http.Handler { "GET /contract/:id/roots": b.contractIDRootsHandlerGET, "GET /contract/:id/size": b.contractSizeHandlerGET, - "GET /hosts": b.hostsHandlerGETDeprecated, "GET /hosts/allowlist": b.hostsAllowlistHandlerGET, "PUT /hosts/allowlist": b.hostsAllowlistHandlerPUT, "GET /hosts/blocklist": b.hostsBlocklistHandlerGET, diff --git a/bus/routes.go b/bus/routes.go index 14bae2cd6..5df645a44 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -564,21 +564,6 @@ func (b *Bus) walletPendingHandler(jc jape.Context) { jc.Encode(relevant) } -func (b *Bus) hostsHandlerGETDeprecated(jc jape.Context) { - offset := 0 - limit := -1 - if jc.DecodeForm("offset", &offset) != nil || jc.DecodeForm("limit", &limit) != nil { - return - } - - // fetch hosts - hosts, err := b.hs.SearchHosts(jc.Request.Context(), "", api.HostFilterModeAllowed, api.UsabilityFilterModeAll, "", nil, offset, limit) - if jc.Check(fmt.Sprintf("couldn't fetch hosts %d-%d", offset, offset+limit), err) != nil { - return - } - jc.Encode(hosts) -} - func (b *Bus) searchHostsHandlerPOST(jc jape.Context) { var req api.SearchHostsRequest if jc.Decode(&req) != nil { @@ -602,7 +587,7 @@ func (b *Bus) searchHostsHandlerPOST(jc jape.Context) { case api.HostFilterModeAllowed: case api.HostFilterModeBlocked: case api.HostFilterModeAll: - req.FilterMode = api.HostFilterModeAll + req.FilterMode = api.HostFilterModeAllowed case "": default: jc.Error(fmt.Errorf("invalid filter mode: '%v', options are 'allowed', 'blocked' or an empty string for no filter", req.FilterMode), http.StatusBadRequest) From 24470d5d32c1889b7ba7fccda24d574b31537a3c Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 27 Aug 2024 11:41:28 +0200 Subject: [PATCH 007/708] bus: deprecate /hosts --- api/host.go | 13 ------------- bus/client/hosts.go | 8 -------- bus/routes.go | 6 +++--- internal/test/e2e/blocklist_test.go | 6 +++--- internal/test/e2e/cluster_test.go | 4 ++-- internal/test/e2e/pruning_test.go | 4 ++-- 6 files changed, 10 insertions(+), 31 deletions(-) diff --git a/api/host.go b/api/host.go index d932229d6..36dd0862a 100644 --- a/api/host.go +++ b/api/host.go @@ -104,10 +104,6 @@ type ( // Option types. type ( - GetHostsOptions struct { - Offset int - Limit int - } HostsForScanningOptions struct { MaxLastScan TimeRFC3339 Limit int @@ -125,15 +121,6 @@ type ( } ) -func (opts GetHostsOptions) Apply(values url.Values) { - if opts.Offset != 0 { - values.Set("offset", fmt.Sprint(opts.Offset)) - } - if opts.Limit != 0 { - values.Set("limit", fmt.Sprint(opts.Limit)) - } -} - func (opts HostsForScanningOptions) Apply(values url.Values) { if opts.Offset != 0 { values.Set("offset", fmt.Sprint(opts.Offset)) diff --git a/bus/client/hosts.go b/bus/client/hosts.go index 709cb899c..391a9977e 100644 --- a/bus/client/hosts.go +++ b/bus/client/hosts.go @@ -28,14 +28,6 @@ func (c *Client) HostBlocklist(ctx context.Context) (blocklist []string, err err return } -// Hosts returns 'limit' hosts at given 'offset'. -func (c *Client) Hosts(ctx context.Context, opts api.GetHostsOptions) (hosts []api.Host, err error) { - values := url.Values{} - opts.Apply(values) - err = c.c.WithContext(ctx).GET("/hosts?"+values.Encode(), &hosts) - return -} - // HostsForScanning returns 'limit' host addresses at given 'offset' which // haven't been scanned after lastScan. func (c *Client) HostsForScanning(ctx context.Context, opts api.HostsForScanningOptions) (hosts []api.HostAddress, err error) { diff --git a/bus/routes.go b/bus/routes.go index 5df645a44..f1424d15f 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -587,8 +587,8 @@ func (b *Bus) searchHostsHandlerPOST(jc jape.Context) { case api.HostFilterModeAllowed: case api.HostFilterModeBlocked: case api.HostFilterModeAll: - req.FilterMode = api.HostFilterModeAllowed case "": + req.FilterMode = api.HostFilterModeAllowed default: jc.Error(fmt.Errorf("invalid filter mode: '%v', options are 'allowed', 'blocked' or an empty string for no filter", req.FilterMode), http.StatusBadRequest) return @@ -599,8 +599,8 @@ func (b *Bus) searchHostsHandlerPOST(jc jape.Context) { jc.Error(errors.New("offset must be non-negative"), http.StatusBadRequest) return } - if req.Limit < 0 { - jc.Error(errors.New("limit must be non-negative"), http.StatusBadRequest) + if req.Limit < 0 && req.Limit != -1 { + jc.Error(errors.New("limit must be non-negative or equal to -1 to indicate no limit"), http.StatusBadRequest) return } else if req.Limit == 0 { req.Limit = -1 diff --git a/internal/test/e2e/blocklist_test.go b/internal/test/e2e/blocklist_test.go index 94659b277..39d2540a3 100644 --- a/internal/test/e2e/blocklist_test.go +++ b/internal/test/e2e/blocklist_test.go @@ -121,7 +121,7 @@ func TestBlocklist(t *testing.T) { } // assert we have 4 hosts - hosts, err := b.Hosts(context.Background(), api.GetHostsOptions{}) + hosts, err := b.SearchHosts(context.Background(), api.SearchHostOptions{}) tt.OK(err) if len(hosts) != 4 { t.Fatal("unexpected number of hosts", len(hosts)) @@ -146,7 +146,7 @@ func TestBlocklist(t *testing.T) { } // assert all others are blocked - hosts, err = b.Hosts(context.Background(), api.GetHostsOptions{}) + hosts, err = b.SearchHosts(context.Background(), api.SearchHostOptions{}) tt.OK(err) if len(hosts) != 1 { t.Fatal("unexpected number of hosts", len(hosts)) @@ -156,7 +156,7 @@ func TestBlocklist(t *testing.T) { tt.OK(b.UpdateHostAllowlist(context.Background(), nil, nil, true)) // assert no hosts are blocked - hosts, err = b.Hosts(context.Background(), api.GetHostsOptions{}) + hosts, err = b.SearchHosts(context.Background(), api.SearchHostOptions{}) tt.OK(err) if len(hosts) != 5 { t.Fatal("unexpected number of hosts", len(hosts)) diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 255999911..f048666fb 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -290,7 +290,7 @@ func TestNewTestCluster(t *testing.T) { }) // Get host info for every host. - hosts, err := cluster.Bus.Hosts(context.Background(), api.GetHostsOptions{}) + hosts, err := cluster.Bus.SearchHosts(context.Background(), api.SearchHostOptions{}) tt.OK(err) for _, host := range hosts { hi, err := cluster.Autopilot.HostInfo(host.PublicKey) @@ -744,7 +744,7 @@ func TestUploadDownloadBasic(t *testing.T) { // check that stored data on hosts was updated tt.Retry(100, 100*time.Millisecond, func() error { - hosts, err := cluster.Bus.Hosts(context.Background(), api.GetHostsOptions{}) + hosts, err := cluster.Bus.SearchHosts(context.Background(), api.SearchHostOptions{}) tt.OK(err) for _, host := range hosts { if host.StoredData != rhpv2.SectorSize { diff --git a/internal/test/e2e/pruning_test.go b/internal/test/e2e/pruning_test.go index 8492bf9f1..81db425a4 100644 --- a/internal/test/e2e/pruning_test.go +++ b/internal/test/e2e/pruning_test.go @@ -59,7 +59,7 @@ func TestHostPruning(t *testing.T) { tt.OKAll(a.Trigger(true)) // assert the host was not pruned - hostss, err := b.Hosts(context.Background(), api.GetHostsOptions{}) + hostss, err := b.SearchHosts(context.Background(), api.SearchHostOptions{}) tt.OK(err) if len(hostss) != 1 { t.Fatal("host was pruned") @@ -71,7 +71,7 @@ func TestHostPruning(t *testing.T) { // assert the host was pruned tt.Retry(10, time.Second, func() error { - hostss, err = b.Hosts(context.Background(), api.GetHostsOptions{}) + hostss, err = b.SearchHosts(context.Background(), api.SearchHostOptions{}) tt.OK(err) if len(hostss) != 0 { a.Trigger(true) // trigger autopilot From e2fec6b0f2a5ea372a1a7f8bf25dc292e15f3ca5 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 27 Aug 2024 13:43:04 +0200 Subject: [PATCH 008/708] bus: update error msg --- bus/routes.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bus/routes.go b/bus/routes.go index f1424d15f..9733a0eb5 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -590,7 +590,7 @@ func (b *Bus) searchHostsHandlerPOST(jc jape.Context) { case "": req.FilterMode = api.HostFilterModeAllowed default: - jc.Error(fmt.Errorf("invalid filter mode: '%v', options are 'allowed', 'blocked' or an empty string for no filter", req.FilterMode), http.StatusBadRequest) + jc.Error(fmt.Errorf("invalid filter mode: '%v', options are 'allowed', 'blocked' or an empty string for 'allowed' filter", req.FilterMode), http.StatusBadRequest) return } From d20ea8cecc9932a9c1ea0772dfeb921b74002501 Mon Sep 17 00:00:00 2001 From: PJ Date: Wed, 28 Aug 2024 11:51:36 +0200 Subject: [PATCH 009/708] bus: update settings --- api/events.go | 24 +-- api/setting.go | 9 + autopilot/autopilot.go | 1 - bus/bus.go | 72 ++++++- bus/client/settings.go | 59 +++--- bus/routes.go | 329 +++++++++++++++--------------- cmd/renterd/node.go | 2 +- internal/test/e2e/cluster.go | 12 +- internal/test/e2e/cluster_test.go | 2 +- internal/test/e2e/events_test.go | 10 +- internal/test/e2e/gouging_test.go | 4 +- internal/test/e2e/s3_test.go | 2 +- internal/worker/cache.go | 9 - internal/worker/cache_test.go | 1 - stores/settingsdb.go | 26 --- stores/settingsdb_test.go | 39 +--- stores/sql/database.go | 6 - stores/sql/main.go | 24 --- stores/sql/mysql/main.go | 8 - stores/sql/sqlite/main.go | 8 - worker/s3/s3.go | 1 - 21 files changed, 295 insertions(+), 353 deletions(-) diff --git a/api/events.go b/api/events.go index e9600e53b..38d490506 100644 --- a/api/events.go +++ b/api/events.go @@ -19,7 +19,6 @@ const ( EventAdd = "add" EventUpdate = "update" - EventDelete = "delete" EventArchive = "archive" EventRenew = "renew" ) @@ -68,11 +67,6 @@ type ( Update interface{} `json:"update"` Timestamp time.Time `json:"timestamp"` } - - EventSettingDelete struct { - Key string `json:"key"` - Timestamp time.Time `json:"timestamp"` - } ) var ( @@ -138,15 +132,6 @@ var ( URL: url, } } - - WebhookSettingDelete = func(url string, headers map[string]string) webhooks.Webhook { - return webhooks.Webhook{ - Event: EventDelete, - Headers: headers, - Module: ModuleSetting, - URL: url, - } - } ) func ParseEventWebhook(event webhooks.Event) (interface{}, error) { @@ -201,19 +186,12 @@ func ParseEventWebhook(event webhooks.Event) (interface{}, error) { return e, nil } case ModuleSetting: - switch event.Event { - case EventUpdate: + if event.Event == EventUpdate { var e EventSettingUpdate if err := json.Unmarshal(bytes, &e); err != nil { return nil, err } return e, nil - case EventDelete: - var e EventSettingDelete - if err := json.Unmarshal(bytes, &e); err != nil { - return nil, err - } - return e, nil } } return nil, fmt.Errorf("%w: module %s event %s", ErrUnknownEvent, event.Module, event.Event) diff --git a/api/setting.go b/api/setting.go index 5976b00b2..34f5dfd31 100644 --- a/api/setting.go +++ b/api/setting.go @@ -239,6 +239,15 @@ func (gs GougingSettings) Validate() error { return nil } +// Validate returns an error if the upload packing settings are not considered +// valid. +func (up UploadPackingSettings) Validate() error { + if up.Enabled && up.SlabBufferMaxSizeSoft <= 0 { + return errors.New("SlabBufferMaxSizeSoft must be greater than zero when upload packing is enabled") + } + return nil +} + // Redundancy returns the effective storage redundancy of the // RedundancySettings. func (rs RedundancySettings) Redundancy() float64 { diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 9ea235a11..fb554fb2c 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -73,7 +73,6 @@ type Bus interface { SlabsForMigration(ctx context.Context, healthCutoff float64, set string, limit int) ([]api.UnhealthySlab, error) // settings - UpdateSetting(ctx context.Context, key string, value interface{}) error GougingSettings(ctx context.Context) (gs api.GougingSettings, err error) RedundancySettings(ctx context.Context) (rs api.RedundancySettings, err error) diff --git a/bus/bus.go b/bus/bus.go index c5ae1113e..f5117825d 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -294,9 +294,7 @@ type ( // A SettingStore stores settings. SettingStore interface { - DeleteSetting(ctx context.Context, key string) error Setting(ctx context.Context, key string) (string, error) - Settings(ctx context.Context) ([]string, error) UpdateSetting(ctx context.Context, key, value string) error } @@ -485,10 +483,16 @@ func (b *Bus) Handler() http.Handler { "DELETE /sectors/:hk/:root": b.sectorsHostRootHandlerDELETE, - "GET /settings": b.settingsHandlerGET, - "GET /setting/:key": b.settingKeyHandlerGET, - "PUT /setting/:key": b.settingKeyHandlerPUT, - "DELETE /setting/:key": b.settingKeyHandlerDELETE, + "GET /settings/gouging": b.settingsGougingHandlerGET, + "PUT /settings/gouging": b.settingsGougingHandlerPUT, + "GET /settings/pinned": b.settingsPinnedHandlerGET, + "PUT /settings/pinned": b.settingsPinnedHandlerPUT, + "GET /settings/redundancy": b.settingsRedundancyHandlerGET, + "PUT /settings/redundancy": b.settingsRedundancyHandlerPUT, + "GET /settings/s3authentication": b.settingsS3AuthenticationHandlerGET, + "PUT /settings/s3authentication": b.settingsS3AuthenticationHandlerPUT, + "GET /settings/uploadpacking": b.settingsUploadPackingHandlerGET, + "PUT /settings/uploadpacking": b.settingsUploadPackingHandlerPUT, "POST /slabs/migration": b.slabsMigrationHandlerPOST, "GET /slabs/partial/:key": b.slabsPartialHandlerGET, @@ -738,3 +742,59 @@ func (b *Bus) deriveSubKey(purpose string) types.PrivateKey { } return pk } + +func (b *Bus) fetchSetting(ctx context.Context, key string, value interface{}) error { + // testnets have different redundancy settings + defaultRedundancySettings := api.DefaultRedundancySettings + if mn, _ := chain.Mainnet(); mn.Name != b.cm.TipState().Network.Name { + defaultRedundancySettings = api.DefaultRedundancySettingsTestnet + } + + defaults := map[string]interface{}{ + api.SettingGouging: api.DefaultGougingSettings, + api.SettingPricePinning: api.DefaultPricePinSettings, + api.SettingRedundancy: defaultRedundancySettings, + api.SettingUploadPacking: api.DefaultUploadPackingSettings, + } + + setting, err := b.ss.Setting(ctx, key) + if errors.Is(err, api.ErrSettingNotFound) { + val, ok := defaults[key] + if !ok { + return fmt.Errorf("%w: unknown setting '%s'", api.ErrSettingNotFound, key) + } + + bytes, _ := json.Marshal(val) + if err := b.ss.UpdateSetting(ctx, key, string(bytes)); err != nil { + b.logger.Warn(fmt.Sprintf("failed to update default setting '%s': %v", key, err)) + } + return json.Unmarshal(bytes, &val) + } else if err != nil { + return err + } + + return json.Unmarshal([]byte(setting), &value) +} + +func (b *Bus) updateSetting(ctx context.Context, key string, value string, updatePinMgr bool) error { + err := b.ss.UpdateSetting(ctx, key, value) + if err != nil { + return err + } + + b.broadcastAction(webhooks.Event{ + Module: api.ModuleSetting, + Event: api.EventUpdate, + Payload: api.EventSettingUpdate{ + Key: key, + Update: value, + Timestamp: time.Now().UTC(), + }, + }) + + if updatePinMgr { + b.pinMgr.TriggerUpdate() + } + + return nil +} diff --git a/bus/client/settings.go b/bus/client/settings.go index 22714cf8b..e813a7417 100644 --- a/bus/client/settings.go +++ b/bus/client/settings.go @@ -2,65 +2,72 @@ package client import ( "context" - "fmt" "go.sia.tech/renterd/api" ) // ContractSetSettings returns the contract set settings. -func (c *Client) ContractSetSettings(ctx context.Context) (gs api.ContractSetSetting, err error) { - err = c.Setting(ctx, api.SettingContractSet, &gs) +func (c *Client) ContractSetSettings(ctx context.Context) (css api.ContractSetSetting, err error) { + err = c.c.WithContext(ctx).GET("/setting/contractset", &css) return } -// DeleteSetting will delete the setting with given key. -func (c *Client) DeleteSetting(ctx context.Context, key string) error { - return c.c.WithContext(ctx).DELETE(fmt.Sprintf("/setting/%s", key)) +// UpdateContractSetSetting updates the given setting. +func (c *Client) UpdateContractSetSetting(ctx context.Context, css api.ContractSetSetting) error { + return c.c.WithContext(ctx).PUT("/setting/contractset", css) } // GougingSettings returns the gouging settings. func (c *Client) GougingSettings(ctx context.Context) (gs api.GougingSettings, err error) { - err = c.Setting(ctx, api.SettingGouging, &gs) + err = c.c.WithContext(ctx).GET("/setting/gouging", &gs) return } +// UpdateGougingSettings updates the given setting. +func (c *Client) UpdateGougingSettings(ctx context.Context, gs api.GougingSettings) error { + return c.c.WithContext(ctx).PUT("/setting/gouging", gs) +} + // PricePinningSettings returns the contract set settings. func (c *Client) PricePinningSettings(ctx context.Context) (pps api.PricePinSettings, err error) { - err = c.Setting(ctx, api.SettingPricePinning, &pps) + err = c.c.WithContext(ctx).GET("/setting/pinned", &pps) return } -// RedundancySettings returns the redundancy settings. -func (c *Client) RedundancySettings(ctx context.Context) (rs api.RedundancySettings, err error) { - err = c.Setting(ctx, api.SettingRedundancy, &rs) - return +// UpdatePinnedSettings updates the given setting. +func (c *Client) UpdatePinnedSettings(ctx context.Context, pps api.PricePinSettings) error { + return c.c.WithContext(ctx).PUT("/setting/pinned", pps) } -// S3AuthenticationSettings returns the S3 authentication settings. -func (c *Client) S3AuthenticationSettings(ctx context.Context) (as api.S3AuthenticationSettings, err error) { - err = c.Setting(ctx, api.SettingS3Authentication, &as) +// RedundancySettings returns the redundancy settings. +func (c *Client) RedundancySettings(ctx context.Context) (rs api.RedundancySettings, err error) { + err = c.c.WithContext(ctx).GET("/setting/redundancy", &rs) return } -// Setting returns the value for the setting with given key. -func (c *Client) Setting(ctx context.Context, key string, value interface{}) (err error) { - err = c.c.WithContext(ctx).GET(fmt.Sprintf("/setting/%s", key), &value) - return +// UpdateRedundancySettings updates the given setting. +func (c *Client) UpdateRedundancySettings(ctx context.Context, rs api.RedundancySettings) error { + return c.c.WithContext(ctx).PUT("/setting/redundancy", rs) } -// Settings returns the keys of all settings. -func (c *Client) Settings(ctx context.Context) (settings []string, err error) { - err = c.c.WithContext(ctx).GET("/settings", &settings) +// S3AuthenticationSettings returns the S3 authentication settings. +func (c *Client) S3AuthenticationSettings(ctx context.Context) (as api.S3AuthenticationSettings, err error) { + err = c.c.WithContext(ctx).GET("/setting/s3authentication", &as) return } -// UpdateSetting will update the given setting under the given key. -func (c *Client) UpdateSetting(ctx context.Context, key string, value interface{}) error { - return c.c.WithContext(ctx).PUT(fmt.Sprintf("/setting/%s", key), value) +// UpdateS3AuthenticationSettings updates the given setting. +func (c *Client) UpdateS3AuthenticationSettings(ctx context.Context, as api.S3AuthenticationSettings) error { + return c.c.WithContext(ctx).PUT("/setting/s3authentication", as) } // UploadPackingSettings returns the upload packing settings. func (c *Client) UploadPackingSettings(ctx context.Context) (ups api.UploadPackingSettings, err error) { - err = c.Setting(ctx, api.SettingUploadPacking, &ups) + err = c.c.WithContext(ctx).GET("/setting/uploadpacking", &ups) return } + +// UpdateUploadPackingSettings updates the given setting. +func (c *Client) UpdateUploadPackingSettings(ctx context.Context, ups api.UploadPackingSettings) error { + return c.c.WithContext(ctx).PUT("/setting/uploadpacking", ups) +} diff --git a/bus/routes.go b/bus/routes.go index f020c5944..76c7df4ec 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -33,15 +33,6 @@ import ( "go.uber.org/zap" ) -func (b *Bus) fetchSetting(ctx context.Context, key string, value interface{}) error { - if val, err := b.ss.Setting(ctx, key); err != nil { - return fmt.Errorf("could not get contract set settings: %w", err) - } else if err := json.Unmarshal([]byte(val), &value); err != nil { - b.logger.Panicf("failed to unmarshal %v settings '%s': %v", key, val, err) - } - return nil -} - func (b *Bus) consensusAcceptBlock(jc jape.Context) { var block types.Block if jc.Decode(&block) != nil { @@ -1261,6 +1252,176 @@ func (b *Bus) packedSlabsHandlerDonePOST(jc jape.Context) { jc.Check("failed to mark packed slab(s) as uploaded", b.ms.MarkPackedSlabsUploaded(jc.Request.Context(), psrp.Slabs)) } +func (b *Bus) settingsGougingHandlerGET(jc jape.Context) { + var gs api.GougingSettings + if err := b.fetchSetting(jc.Request.Context(), api.SettingGouging, &gs); errors.Is(err, api.ErrSettingNotFound) { + jc.Error(err, http.StatusNotFound) + } else if jc.Check("failed to get gouging settings", err) == nil { + jc.Encode(gs) + } +} + +func (b *Bus) settingsGougingHandlerPUT(jc jape.Context) { + var gs api.GougingSettings + if jc.Decode(&gs) != nil { + return + } else if err := gs.Validate(); err != nil { + jc.Error(fmt.Errorf("couldn't update gouging settings, error: %v", err), http.StatusBadRequest) + return + } + + // marshal the setting + data, err := json.Marshal(gs) + if err != nil { + jc.Error(fmt.Errorf("couldn't marshal the given value, error: %v", err), http.StatusBadRequest) + return + } + + // update the setting + if jc.Check("could not update gouging settings", b.updateSetting(jc.Request.Context(), api.SettingGouging, string(data), true)) != nil { + return + } +} + +func (b *Bus) settingsPinnedHandlerGET(jc jape.Context) { + var pps api.PricePinSettings + if err := b.fetchSetting(jc.Request.Context(), api.SettingPricePinning, &pps); errors.Is(err, api.ErrSettingNotFound) { + jc.Error(err, http.StatusNotFound) + } else if jc.Check("failed to get price pinning settings", err) == nil { + // populate the Autopilots map with the current autopilots + aps, err := b.as.Autopilots(jc.Request.Context()) + if jc.Check("failed to fetch autopilots", err) != nil { + return + } + for _, ap := range aps { + if _, exists := pps.Autopilots[ap.ID]; !exists { + pps.Autopilots[ap.ID] = api.AutopilotPins{} + } + } + jc.Encode(pps) + } +} + +func (b *Bus) settingsPinnedHandlerPUT(jc jape.Context) { + var pps api.PricePinSettings + if jc.Decode(&pps) != nil { + return + } else if err := pps.Validate(); err != nil { + jc.Error(fmt.Errorf("couldn't update price pinning settings, error: %v", err), http.StatusBadRequest) + return + } else if pps.Enabled { + if _, err := ibus.NewForexClient(pps.ForexEndpointURL).SiacoinExchangeRate(jc.Request.Context(), pps.Currency); err != nil { + jc.Error(fmt.Errorf("couldn't update price pinning settings, forex API unreachable,error: %v", err), http.StatusBadRequest) + return + } + } + + // marshal the setting + data, err := json.Marshal(pps) + if err != nil { + jc.Error(fmt.Errorf("couldn't marshal the given value, error: %v", err), http.StatusBadRequest) + return + } + + // update the setting + if jc.Check("could not update price pinning settings", b.updateSetting(jc.Request.Context(), api.SettingPricePinning, string(data), true)) != nil { + return + } +} + +func (b *Bus) settingsRedundancyHandlerGET(jc jape.Context) { + var rs api.RedundancySettings + if err := b.fetchSetting(jc.Request.Context(), api.SettingRedundancy, &rs); errors.Is(err, api.ErrSettingNotFound) { + jc.Error(err, http.StatusNotFound) + } else if jc.Check("failed to get redundancy settings", err) == nil { + jc.Encode(rs) + } +} + +func (b *Bus) settingsRedundancyHandlerPUT(jc jape.Context) { + var rs api.RedundancySettings + if jc.Decode(&rs) != nil { + return + } else if err := rs.Validate(); err != nil { + jc.Error(fmt.Errorf("couldn't update redundancy settings, error: %v", err), http.StatusBadRequest) + return + } + + // marshal the setting + data, err := json.Marshal(rs) + if err != nil { + jc.Error(fmt.Errorf("couldn't marshal the given value, error: %v", err), http.StatusBadRequest) + return + } + + // update the setting + if jc.Check("could not update redundancy settings", b.updateSetting(jc.Request.Context(), api.SettingRedundancy, string(data), false)) != nil { + return + } +} + +func (b *Bus) settingsS3AuthenticationHandlerGET(jc jape.Context) { + var s3as api.S3AuthenticationSettings + if err := b.fetchSetting(jc.Request.Context(), api.SettingS3Authentication, &s3as); errors.Is(err, api.ErrSettingNotFound) { + jc.Error(err, http.StatusNotFound) + } else if jc.Check("failed to get s3 authentication settings", err) == nil { + jc.Encode(s3as) + } +} + +func (b *Bus) settingsS3AuthenticationHandlerPUT(jc jape.Context) { + var s3as api.S3AuthenticationSettings + if jc.Decode(&s3as) != nil { + return + } else if err := s3as.Validate(); err != nil { + jc.Error(fmt.Errorf("couldn't update s3 authentication settings, error: %v", err), http.StatusBadRequest) + return + } + + // marshal the setting + data, err := json.Marshal(s3as) + if err != nil { + jc.Error(fmt.Errorf("couldn't marshal the given value, error: %v", err), http.StatusBadRequest) + return + } + + // update the setting + if jc.Check("could not update s3 authentication settings", b.updateSetting(jc.Request.Context(), api.SettingS3Authentication, string(data), false)) != nil { + return + } +} + +func (b *Bus) settingsUploadPackingHandlerGET(jc jape.Context) { + var ups api.UploadPackingSettings + if err := b.fetchSetting(jc.Request.Context(), api.SettingUploadPacking, &ups); errors.Is(err, api.ErrSettingNotFound) { + jc.Error(err, http.StatusNotFound) + } else if jc.Check("failed to get upload packing settings", err) == nil { + jc.Encode(ups) + } +} + +func (b *Bus) settingsUploadPackingHandlerPUT(jc jape.Context) { + var ups api.UploadPackingSettings + if jc.Decode(&ups) != nil { + return + } else if err := ups.Validate(); err != nil { + jc.Error(fmt.Errorf("couldn't update upload packing settings, error: %v", err), http.StatusBadRequest) + return + } + + // marshal the setting + data, err := json.Marshal(ups) + if err != nil { + jc.Error(fmt.Errorf("couldn't marshal the given value, error: %v", err), http.StatusBadRequest) + return + } + + // update the setting + if jc.Check("could not update upload packing settings", b.updateSetting(jc.Request.Context(), api.SettingUploadPacking, string(data), false)) != nil { + return + } +} + func (b *Bus) sectorsHostRootHandlerDELETE(jc jape.Context) { var hk types.PublicKey var root types.Hash256 @@ -1405,156 +1566,6 @@ func (b *Bus) slabsPartialHandlerPOST(jc jape.Context) { }) } -func (b *Bus) settingsHandlerGET(jc jape.Context) { - if settings, err := b.ss.Settings(jc.Request.Context()); jc.Check("couldn't load settings", err) == nil { - jc.Encode(settings) - } -} - -func (b *Bus) settingKeyHandlerGET(jc jape.Context) { - jc.Custom(nil, (any)(nil)) - - key := jc.PathParam("key") - if key == "" { - jc.Error(errors.New("path parameter 'key' can not be empty"), http.StatusBadRequest) - return - } - - setting, err := b.ss.Setting(jc.Request.Context(), jc.PathParam("key")) - if errors.Is(err, api.ErrSettingNotFound) { - jc.Error(err, http.StatusNotFound) - return - } else if err != nil { - jc.Error(err, http.StatusInternalServerError) - return - } - resp := []byte(setting) - - // populate autopilots of price pinning settings with defaults for better DX - if key == api.SettingPricePinning { - var pps api.PricePinSettings - err = json.Unmarshal([]byte(setting), &pps) - if jc.Check("failed to unmarshal price pinning settings", err) != nil { - return - } else if pps.Autopilots == nil { - pps.Autopilots = make(map[string]api.AutopilotPins) - } - // populate the Autopilots map with the current autopilots - aps, err := b.as.Autopilots(jc.Request.Context()) - if jc.Check("failed to fetch autopilots", err) != nil { - return - } - for _, ap := range aps { - if _, exists := pps.Autopilots[ap.ID]; !exists { - pps.Autopilots[ap.ID] = api.AutopilotPins{} - } - } - // encode the settings back - resp, err = json.Marshal(pps) - if jc.Check("failed to marshal price pinning settings", err) != nil { - return - } - } - jc.ResponseWriter.Header().Set("Content-Type", "application/json") - jc.ResponseWriter.Write(resp) -} - -func (b *Bus) settingKeyHandlerPUT(jc jape.Context) { - key := jc.PathParam("key") - if key == "" { - jc.Error(errors.New("path parameter 'key' can not be empty"), http.StatusBadRequest) - return - } - - var value interface{} - if jc.Decode(&value) != nil { - return - } - - data, err := json.Marshal(value) - if err != nil { - jc.Error(fmt.Errorf("couldn't marshal the given value, error: %v", err), http.StatusBadRequest) - return - } - - switch key { - case api.SettingGouging: - var gs api.GougingSettings - if err := json.Unmarshal(data, &gs); err != nil { - jc.Error(fmt.Errorf("couldn't update gouging settings, invalid request body, %t", value), http.StatusBadRequest) - return - } else if err := gs.Validate(); err != nil { - jc.Error(fmt.Errorf("couldn't update gouging settings, error: %v", err), http.StatusBadRequest) - return - } - b.pinMgr.TriggerUpdate() - case api.SettingRedundancy: - var rs api.RedundancySettings - if err := json.Unmarshal(data, &rs); err != nil { - jc.Error(fmt.Errorf("couldn't update redundancy settings, invalid request body"), http.StatusBadRequest) - return - } else if err := rs.Validate(); err != nil { - jc.Error(fmt.Errorf("couldn't update redundancy settings, error: %v", err), http.StatusBadRequest) - return - } - case api.SettingS3Authentication: - var s3as api.S3AuthenticationSettings - if err := json.Unmarshal(data, &s3as); err != nil { - jc.Error(fmt.Errorf("couldn't update s3 authentication settings, invalid request body"), http.StatusBadRequest) - return - } else if err := s3as.Validate(); err != nil { - jc.Error(fmt.Errorf("couldn't update s3 authentication settings, error: %v", err), http.StatusBadRequest) - return - } - case api.SettingPricePinning: - var pps api.PricePinSettings - if err := json.Unmarshal(data, &pps); err != nil { - jc.Error(fmt.Errorf("couldn't update price pinning settings, invalid request body"), http.StatusBadRequest) - return - } else if err := pps.Validate(); err != nil { - jc.Error(fmt.Errorf("couldn't update price pinning settings, invalid settings, error: %v", err), http.StatusBadRequest) - return - } else if pps.Enabled { - if _, err := ibus.NewForexClient(pps.ForexEndpointURL).SiacoinExchangeRate(jc.Request.Context(), pps.Currency); err != nil { - jc.Error(fmt.Errorf("couldn't update price pinning settings, forex API unreachable,error: %v", err), http.StatusBadRequest) - return - } - } - b.pinMgr.TriggerUpdate() - } - - if jc.Check("could not update setting", b.ss.UpdateSetting(jc.Request.Context(), key, string(data))) == nil { - b.broadcastAction(webhooks.Event{ - Module: api.ModuleSetting, - Event: api.EventUpdate, - Payload: api.EventSettingUpdate{ - Key: key, - Update: value, - Timestamp: time.Now().UTC(), - }, - }) - } -} - -func (b *Bus) settingKeyHandlerDELETE(jc jape.Context) { - key := jc.PathParam("key") - if key == "" { - jc.Error(errors.New("path parameter 'key' can not be empty"), http.StatusBadRequest) - return - } - - if jc.Check("could not delete setting", b.ss.DeleteSetting(jc.Request.Context(), key)) == nil { - b.broadcastAction(webhooks.Event{ - Module: api.ModuleSetting, - Event: api.EventDelete, - Payload: api.EventSettingDelete{ - Key: key, - Timestamp: time.Now().UTC(), - }, - }) - } -} - func (b *Bus) contractIDAncestorsHandler(jc jape.Context) { var fcid types.FileContractID if jc.DecodeParam("id", &fcid) != nil { diff --git a/cmd/renterd/node.go b/cmd/renterd/node.go index 9defbc127..5ab3bf13d 100644 --- a/cmd/renterd/node.go +++ b/cmd/renterd/node.go @@ -435,7 +435,7 @@ func (n *node) Run() error { as.V4Keypairs[k] = v } // update settings - if err := n.bus.UpdateSetting(context.Background(), api.SettingS3Authentication, as); err != nil { + if err := n.bus.UpdateS3AuthenticationSettings(context.Background(), as); err != nil { return fmt.Errorf("failed to update S3 authentication settings: %w", err) } } diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index b500643d3..189a92e43 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -436,14 +436,14 @@ func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { } // Update the bus settings. - tt.OK(busClient.UpdateSetting(ctx, api.SettingGouging, test.GougingSettings)) - tt.OK(busClient.UpdateSetting(ctx, api.SettingContractSet, test.ContractSetSettings)) - tt.OK(busClient.UpdateSetting(ctx, api.SettingPricePinning, test.PricePinSettings)) - tt.OK(busClient.UpdateSetting(ctx, api.SettingRedundancy, test.RedundancySettings)) - tt.OK(busClient.UpdateSetting(ctx, api.SettingS3Authentication, api.S3AuthenticationSettings{ + tt.OK(busClient.UpdateGougingSettings(ctx, test.GougingSettings)) + tt.OK(busClient.UpdateContractSetSetting(ctx, test.ContractSetSettings)) + tt.OK(busClient.UpdatePinnedSettings(ctx, test.PricePinSettings)) + tt.OK(busClient.UpdateRedundancySettings(ctx, test.RedundancySettings)) + tt.OK(busClient.UpdateS3AuthenticationSettings(ctx, api.S3AuthenticationSettings{ V4Keypairs: map[string]string{test.S3AccessKeyID: test.S3SecretAccessKey}, })) - tt.OK(busClient.UpdateSetting(ctx, api.SettingUploadPacking, api.UploadPackingSettings{ + tt.OK(busClient.UpdateUploadPackingSettings(ctx, api.UploadPackingSettings{ Enabled: enableUploadPacking, SlabBufferMaxSizeSoft: api.DefaultUploadPackingSettings.SlabBufferMaxSizeSoft, })) diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 255999911..2c1c1e16e 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -1142,7 +1142,7 @@ func TestEphemeralAccounts(t *testing.T) { w := cluster.Worker tt := cluster.tt - tt.OK(b.UpdateSetting(context.Background(), api.SettingRedundancy, api.RedundancySettings{ + tt.OK(b.UpdateRedundancySettings(context.Background(), api.RedundancySettings{ MinShards: 1, TotalShards: 1, })) diff --git a/internal/test/e2e/events_test.go b/internal/test/e2e/events_test.go index 4972adf1b..e1bc29df7 100644 --- a/internal/test/e2e/events_test.go +++ b/internal/test/e2e/events_test.go @@ -26,7 +26,6 @@ func TestEvents(t *testing.T) { api.WebhookContractRenew, api.WebhookContractSetUpdate, api.WebhookHostUpdate, - api.WebhookSettingDelete, api.WebhookSettingUpdate, } @@ -125,10 +124,7 @@ func TestEvents(t *testing.T) { // update settings gs := gp.GougingSettings gs.HostBlockHeightLeeway = 100 - tt.OK(b.UpdateSetting(context.Background(), api.SettingGouging, gs)) - - // delete setting - tt.OK(b.DeleteSetting(context.Background(), api.SettingRedundancy)) + tt.OK(b.UpdateGougingSettings(context.Background(), gs)) // update host setting h := cluster.hosts[0] @@ -182,10 +178,6 @@ func TestEvents(t *testing.T) { if update.HostBlockHeightLeeway != 100 { t.Fatalf("unexpected update %+v", update) } - case api.EventSettingDelete: - if e.Key != api.SettingRedundancy || e.Timestamp.IsZero() { - t.Fatalf("unexpected event %+v", e) - } } } } diff --git a/internal/test/e2e/gouging_test.go b/internal/test/e2e/gouging_test.go index 5be1784cb..6126cd36e 100644 --- a/internal/test/e2e/gouging_test.go +++ b/internal/test/e2e/gouging_test.go @@ -70,7 +70,7 @@ func TestGouging(t *testing.T) { // update the gouging settings to limit the max storage price to 100H gs := test.GougingSettings gs.MaxStoragePrice = types.NewCurrency64(100) - if err := b.UpdateSetting(context.Background(), api.SettingGouging, gs); err != nil { + if err := b.UpdateGougingSettings(context.Background(), gs); err != nil { t.Fatal(err) } @@ -118,7 +118,7 @@ func TestGouging(t *testing.T) { } // set optimised settings - tt.OK(b.UpdateSetting(context.Background(), api.SettingGouging, resp.Recommendation.GougingSettings)) + tt.OK(b.UpdateGougingSettings(context.Background(), resp.Recommendation.GougingSettings)) // evaluate optimised settings resp, err = cluster.Autopilot.EvaluateConfig(context.Background(), test.AutopilotConfig, resp.Recommendation.GougingSettings, test.RedundancySettings) diff --git a/internal/test/e2e/s3_test.go b/internal/test/e2e/s3_test.go index 3f20e22ad..5775d2292 100644 --- a/internal/test/e2e/s3_test.go +++ b/internal/test/e2e/s3_test.go @@ -825,7 +825,7 @@ func TestS3SettingsValidate(t *testing.T) { }, } for i, test := range tests { - err := cluster.Bus.UpdateSetting(context.Background(), api.SettingS3Authentication, api.S3AuthenticationSettings{ + err := cluster.Bus.UpdateS3AuthenticationSettings(context.Background(), api.S3AuthenticationSettings{ V4Keypairs: map[string]string{ test.id: test.key, }, diff --git a/internal/worker/cache.go b/internal/worker/cache.go index dfc749d2a..2ec207dc9 100644 --- a/internal/worker/cache.go +++ b/internal/worker/cache.go @@ -183,9 +183,6 @@ func (c *cache) HandleEvent(event webhooks.Event) (err error) { case api.EventSettingUpdate: log = log.With("key", e.Key, "ts", e.Timestamp) err = c.handleSettingUpdate(e) - case api.EventSettingDelete: - log = log.With("key", e.Key, "ts", e.Timestamp) - c.handleSettingDelete(e) default: log.Info("unhandled event", e) return @@ -310,12 +307,6 @@ func (c *cache) handleHostUpdate(e api.EventHostUpdate) { c.cache.Set(cacheKeyDownloadContracts, contracts) } -func (c *cache) handleSettingDelete(e api.EventSettingDelete) { - if e.Key == api.SettingGouging || e.Key == api.SettingRedundancy { - c.cache.Invalidate(cacheKeyGougingParams) - } -} - func (c *cache) handleSettingUpdate(e api.EventSettingUpdate) (err error) { // return early if the cache doesn't have gouging params to update value, found, _ := c.cache.Get(cacheKeyGougingParams) diff --git a/internal/worker/cache_test.go b/internal/worker/cache_test.go index 9bc8d682d..0fa3c10d8 100644 --- a/internal/worker/cache_test.go +++ b/internal/worker/cache_test.go @@ -170,7 +170,6 @@ func TestWorkerCache(t *testing.T) { {Module: api.ModuleContract, Event: api.EventRenew, Payload: nil}, {Module: api.ModuleHost, Event: api.EventUpdate, Payload: nil}, {Module: api.ModuleSetting, Event: api.EventUpdate, Payload: nil}, - {Module: api.ModuleSetting, Event: api.EventDelete, Payload: nil}, } { if err := c.HandleEvent(event); err != nil { t.Fatal(err) diff --git a/stores/settingsdb.go b/stores/settingsdb.go index 7a895108c..ea31b25bd 100644 --- a/stores/settingsdb.go +++ b/stores/settingsdb.go @@ -7,23 +7,6 @@ import ( sql "go.sia.tech/renterd/stores/sql" ) -// DeleteSetting implements the bus.SettingStore interface. -func (s *SQLStore) DeleteSetting(ctx context.Context, key string) error { - s.settingsMu.Lock() - defer s.settingsMu.Unlock() - - // delete from database first - if err := s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - return tx.DeleteSettings(ctx, key) - }); err != nil { - return err - } - - // delete from cache - delete(s.settings, key) - return nil -} - // Setting implements the bus.SettingStore interface. func (s *SQLStore) Setting(ctx context.Context, key string) (string, error) { // Check cache first. @@ -47,15 +30,6 @@ func (s *SQLStore) Setting(ctx context.Context, key string) (string, error) { return value, nil } -// Settings implements the bus.SettingStore interface. -func (s *SQLStore) Settings(ctx context.Context) (settings []string, err error) { - err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - settings, err = tx.Settings(ctx) - return err - }) - return -} - // UpdateSetting implements the bus.SettingStore interface. func (s *SQLStore) UpdateSetting(ctx context.Context, key, value string) error { // update db first diff --git a/stores/settingsdb_test.go b/stores/settingsdb_test.go index cf2582579..9eda8f546 100644 --- a/stores/settingsdb_test.go +++ b/stores/settingsdb_test.go @@ -2,10 +2,7 @@ package stores import ( "context" - "errors" "testing" - - "go.sia.tech/renterd/api" ) // TestSQLSettingStore tests the bus.SettingStore methods on the SQLSettingStore. @@ -13,52 +10,24 @@ func TestSQLSettingStore(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() - // assert there are no settings - ctx := context.Background() - if keys, err := ss.Settings(ctx); err != nil { - t.Fatal(err) - } else if len(keys) != 0 { - t.Fatalf("unexpected number of settings, %v != 0", len(keys)) - } - // add a setting - if err := ss.UpdateSetting(ctx, "foo", "bar"); err != nil { + if err := ss.UpdateSetting(context.Background(), "foo", "bar"); err != nil { t.Fatal(err) } - // assert it's returned - if keys, err := ss.Settings(ctx); err != nil { - t.Fatal(err) - } else if len(keys) != 1 { - t.Fatalf("unexpected number of settings, %v != 1", len(keys)) - } else if keys[0] != "foo" { - t.Fatalf("unexpected key, %s != 'foo'", keys[0]) - } - // assert we can query the setting by key - if value, err := ss.Setting(ctx, "foo"); err != nil { + if value, err := ss.Setting(context.Background(), "foo"); err != nil { t.Fatal(err) } else if value != "bar" { t.Fatalf("unexpected value, %s != 'bar'", value) } // assert we can update the setting - if err := ss.UpdateSetting(ctx, "foo", "barbaz"); err != nil { + if err := ss.UpdateSetting(context.Background(), "foo", "barbaz"); err != nil { t.Fatal(err) - } else if value, err := ss.Setting(ctx, "foo"); err != nil { + } else if value, err := ss.Setting(context.Background(), "foo"); err != nil { t.Fatal(err) } else if value != "barbaz" { t.Fatalf("unexpected value, %s != 'barbaz'", value) } - - // delete the setting - if err := ss.DeleteSetting(ctx, "foo"); err != nil { - t.Fatal(err) - } else if _, err := ss.Setting(ctx, "foo"); !errors.Is(err, api.ErrSettingNotFound) { - t.Fatal("should fail with api.ErrSettingNotFound", err) - } else if keys, err := ss.Settings(ctx); err != nil { - t.Fatal(err) - } else if len(keys) != 0 { - t.Fatalf("unexpected number of settings, %v != 0", len(keys)) - } } diff --git a/stores/sql/database.go b/stores/sql/database.go index cc2aab0df..de0a45987 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -150,9 +150,6 @@ type ( // prefix and returns 'true' if any object was deleted. DeleteObjects(ctx context.Context, bucket, prefix string, limit int64) (bool, error) - // DeleteSettings deletes the settings with the given key. - DeleteSettings(ctx context.Context, key string) error - // DeleteWebhook deletes the webhook with the matching module, event and // URL of the provided webhook. If the webhook doesn't exist, // webhooks.ErrWebhookNotFound is returned. @@ -328,9 +325,6 @@ type ( // Setting returns the setting with the given key from the database. Setting(ctx context.Context, key string) (string, error) - // Settings returns all available settings from the database. - Settings(ctx context.Context) ([]string, error) - // Slab returns the slab with the given ID or api.ErrSlabNotFound. Slab(ctx context.Context, key object.EncryptionKey) (object.Slab, error) diff --git a/stores/sql/main.go b/stores/sql/main.go index bb03bd86d..4dd8ee95c 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -541,13 +541,6 @@ func DeleteMetadata(ctx context.Context, tx sql.Tx, objID int64) error { return err } -func DeleteSettings(ctx context.Context, tx sql.Tx, key string) error { - if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", key); err != nil { - return fmt.Errorf("failed to delete setting '%s': %w", key, err) - } - return nil -} - func DeleteWebhook(ctx context.Context, tx sql.Tx, wh webhooks.Webhook) error { res, err := tx.Exec(ctx, "DELETE FROM webhooks WHERE module = ? AND event = ? AND url = ?", wh.Module, wh.Event, wh.URL) if err != nil { @@ -2212,23 +2205,6 @@ func Setting(ctx context.Context, tx sql.Tx, key string) (string, error) { return value, nil } -func Settings(ctx context.Context, tx sql.Tx) ([]string, error) { - rows, err := tx.Query(ctx, "SELECT `key` FROM settings") - if err != nil { - return nil, fmt.Errorf("failed to query settings: %w", err) - } - defer rows.Close() - var settings []string - for rows.Next() { - var setting string - if err := rows.Scan(&setting); err != nil { - return nil, fmt.Errorf("failed to scan setting key") - } - settings = append(settings, setting) - } - return settings, nil -} - func SetUncleanShutdown(ctx context.Context, tx sql.Tx) error { _, err := tx.Exec(ctx, "UPDATE ephemeral_accounts SET clean_shutdown = 0, requires_sync = 1") if err != nil { diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index 08ff0010e..b45a24a0f 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -340,10 +340,6 @@ func (tx *MainDatabaseTx) InsertMultipartUpload(ctx context.Context, bucket, key return ssql.InsertMultipartUpload(ctx, tx, bucket, key, ec, mimeType, metadata) } -func (tx *MainDatabaseTx) DeleteSettings(ctx context.Context, key string) error { - return ssql.DeleteSettings(ctx, tx, key) -} - func (tx *MainDatabaseTx) DeleteWebhook(ctx context.Context, wh webhooks.Webhook) error { return ssql.DeleteWebhook(ctx, tx, wh) } @@ -823,10 +819,6 @@ func (tx *MainDatabaseTx) Setting(ctx context.Context, key string) (string, erro return ssql.Setting(ctx, tx, key) } -func (tx *MainDatabaseTx) Settings(ctx context.Context) ([]string, error) { - return ssql.Settings(ctx, tx) -} - func (tx *MainDatabaseTx) SetUncleanShutdown(ctx context.Context) error { return ssql.SetUncleanShutdown(ctx, tx) } diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index b72ec5e8c..4a5e9481a 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -332,10 +332,6 @@ func (tx *MainDatabaseTx) DeleteHostSector(ctx context.Context, hk types.PublicK return ssql.DeleteHostSector(ctx, tx, hk, root) } -func (tx *MainDatabaseTx) DeleteSettings(ctx context.Context, key string) error { - return ssql.DeleteSettings(ctx, tx, key) -} - func (tx *MainDatabaseTx) DeleteWebhook(ctx context.Context, wh webhooks.Webhook) error { return ssql.DeleteWebhook(ctx, tx, wh) } @@ -822,10 +818,6 @@ func (tx *MainDatabaseTx) Setting(ctx context.Context, key string) (string, erro return ssql.Setting(ctx, tx, key) } -func (tx *MainDatabaseTx) Settings(ctx context.Context) ([]string, error) { - return ssql.Settings(ctx, tx) -} - func (tx *MainDatabaseTx) SetUncleanShutdown(ctx context.Context) error { return ssql.SetUncleanShutdown(ctx, tx) } diff --git a/worker/s3/s3.go b/worker/s3/s3.go index d5cbb71a3..efa921030 100644 --- a/worker/s3/s3.go +++ b/worker/s3/s3.go @@ -43,7 +43,6 @@ type Bus interface { MultipartUploadParts(ctx context.Context, bucket, object string, uploadID string, marker int, limit int64) (resp api.MultipartListPartsResponse, _ error) S3AuthenticationSettings(ctx context.Context) (as api.S3AuthenticationSettings, err error) - UpdateSetting(ctx context.Context, key string, value interface{}) error UploadParams(ctx context.Context) (api.UploadParams, error) } From 7542b550a17607d657a0518cd2ec50dd941c4928 Mon Sep 17 00:00:00 2001 From: PJ Date: Wed, 28 Aug 2024 13:49:51 +0200 Subject: [PATCH 010/708] bus: combine settings --- api/setting.go | 69 +++++++------ autopilot/autopilot.go | 14 +-- bus/bus.go | 154 +++--------------------------- bus/client/settings.go | 50 +++------- bus/routes.go | 82 +++++----------- cmd/renterd/node.go | 19 ++-- internal/bus/pinmanager.go | 8 +- internal/bus/pinmanager_test.go | 6 +- internal/test/config.go | 10 +- internal/test/e2e/cluster.go | 25 +++-- internal/test/e2e/cluster_test.go | 13 ++- internal/test/e2e/s3_test.go | 8 +- internal/worker/cache.go | 2 +- worker/mocks_test.go | 4 +- worker/s3/authentication.go | 4 +- worker/s3/s3.go | 2 +- 16 files changed, 156 insertions(+), 314 deletions(-) diff --git a/api/setting.go b/api/setting.go index 34f5dfd31..3b81eb87e 100644 --- a/api/setting.go +++ b/api/setting.go @@ -10,12 +10,10 @@ import ( ) const ( - SettingContractSet = "contractset" - SettingGouging = "gouging" - SettingPricePinning = "pricepinning" - SettingRedundancy = "redundancy" - SettingS3Authentication = "s3authentication" - SettingUploadPacking = "uploadpacking" + SettingGouging = "gouging" + SettingPinned = "pinned" + SettingS3 = "s3" + SettingUploads = "uploads" ) const ( @@ -53,13 +51,18 @@ var ( // DefaultPricePinSettings define the default price pin settings the bus is // configured with on startup. These values can be adjusted using the // settings API. - DefaultPricePinSettings = PricePinSettings{ + DefaultPricePinSettings = PinnedSettings{ Enabled: false, Currency: "usd", ForexEndpointURL: "https://api.siascan.com/exchange-rate/siacoin", Threshold: 0.05, } + DefaultUploadSettings = UploadSettings{ + Packing: DefaultUploadPackingSettings, + Redundancy: DefaultRedundancySettings, + } + // DefaultUploadPackingSettings define the default upload packing settings // the bus is configured with on startup. DefaultUploadPackingSettings = UploadPackingSettings{ @@ -86,12 +89,6 @@ var ( ) type ( - // ContractSetSetting contains the default contract set used by the worker for - // uploads and migrations. - ContractSetSetting struct { - Default string `json:"default"` - } - // GougingSettings contain some price settings used in price gouging. GougingSettings struct { // MaxRPCPrice is the maximum allowed base price for RPCs @@ -132,10 +129,10 @@ type ( MigrationSurchargeMultiplier uint64 `json:"migrationSurchargeMultiplier"` } - // PricePinSettings holds the configuration for pinning certain settings to - // a specific currency (e.g., USD). It uses a Forex API to fetch the current + // PinnedSettings holds the configuration for pinning certain settings to a + // specific currency (e.g., USD). It uses a Forex API to fetch the current // exchange rate, allowing users to set prices in USD instead of SC. - PricePinSettings struct { + PinnedSettings struct { // Enabled can be used to either enable or temporarily disable price // pinning. If enabled, both the currency and the Forex endpoint URL // must be valid. @@ -160,6 +157,23 @@ type ( GougingSettingsPins GougingSettingsPins `json:"gougingSettingsPins"` } + // UploadSettings contains various settings related to uploads. + UploadSettings struct { + DefaultContractSet string `json:"defaultContractSet"` + Packing UploadPackingSettings `json:"packing"` + Redundancy RedundancySettings `json:"redundancy"` + } + + UploadPackingSettings struct { + Enabled bool `json:"enabled"` + SlabBufferMaxSizeSoft int64 `json:"slabBufferMaxSizeSoft"` + } + + RedundancySettings struct { + MinShards int `json:"minShards"` + TotalShards int `json:"totalShards"` + } + // AutopilotPins contains the available autopilot settings that can be // pinned. AutopilotPins struct { @@ -180,22 +194,15 @@ type ( Value float64 `json:"value"` } - // RedundancySettings contain settings that dictate an object's redundancy. - RedundancySettings struct { - MinShards int `json:"minShards"` - TotalShards int `json:"totalShards"` + // S3Settings contains various settings related to the S3 API. + S3Settings struct { + Authentication S3AuthenticationSettings `json:"authentication"` } // S3AuthenticationSettings contains S3 auth settings. S3AuthenticationSettings struct { V4Keypairs map[string]string `json:"v4Keypairs"` } - - // UploadPackingSettings contains upload packing settings. - UploadPackingSettings struct { - Enabled bool `json:"enabled"` - SlabBufferMaxSizeSoft int64 `json:"slabBufferMaxSizeSoft"` - } ) // IsPinned returns true if the pin is enabled and the value is greater than 0. @@ -204,7 +211,7 @@ func (p Pin) IsPinned() bool { } // Validate returns an error if the price pin settings are not considered valid. -func (pps PricePinSettings) Validate() error { +func (pps PinnedSettings) Validate() error { if pps.ForexEndpointURL == "" { return fmt.Errorf("price pin settings must have a forex endpoint URL") } @@ -281,8 +288,12 @@ func (rs RedundancySettings) Validate() error { // Validate returns an error if the authentication settings are not considered // valid. -func (s3as S3AuthenticationSettings) Validate() error { - for accessKeyID, secretAccessKey := range s3as.V4Keypairs { +func (s3s S3Settings) Validate() error { + return s3s.Authentication.Validate() +} + +func (s3a S3AuthenticationSettings) Validate() error { + for accessKeyID, secretAccessKey := range s3a.V4Keypairs { if accessKeyID == "" { return fmt.Errorf("AccessKeyID cannot be empty") } else if len(accessKeyID) < S3MinAccessKeyLen || len(accessKeyID) > S3MaxAccessKeyLen { diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index fb554fb2c..00728d6ba 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -74,7 +74,7 @@ type Bus interface { // settings GougingSettings(ctx context.Context) (gs api.GougingSettings, err error) - RedundancySettings(ctx context.Context) (rs api.RedundancySettings, err error) + UploadSettings(ctx context.Context) (us api.UploadSettings, err error) // syncer SyncerPeers(ctx context.Context) (resp []string, err error) @@ -847,10 +847,10 @@ func (ap *Autopilot) buildState(ctx context.Context) (*contractor.MaintenanceSta return nil, fmt.Errorf("could not fetch consensus state, err: %v", err) } - // fetch redundancy settings - rs, err := ap.bus.RedundancySettings(ctx) + // fetch upload settings + us, err := ap.bus.UploadSettings(ctx) if err != nil { - return nil, fmt.Errorf("could not fetch redundancy settings, err: %v", err) + return nil, fmt.Errorf("could not fetch upload settings, err: %v", err) } // fetch gouging settings @@ -900,7 +900,7 @@ func (ap *Autopilot) buildState(ctx context.Context) (*contractor.MaintenanceSta return &contractor.MaintenanceState{ GS: gs, - RS: rs, + RS: us.Redundancy, AP: autopilot, Address: address, @@ -935,9 +935,9 @@ func compatV105Host(ctx context.Context, cfg api.ContractsConfig, b Bus, hk type if err != nil { return fmt.Errorf("failed to fetch gouging settings from bus: %w", err) } - _, err = b.RedundancySettings(ctx) + _, err = b.UploadSettings(ctx) if err != nil { - return fmt.Errorf("failed to fetch redundancy settings from bus: %w", err) + return fmt.Errorf("failed to fetch upload settings from bus: %w", err) } _, err = b.ConsensusState(ctx) if err != nil { diff --git a/bus/bus.go b/bus/bus.go index f5117825d..af64411fb 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -11,7 +11,6 @@ import ( "math/big" "net" "net/http" - "strings" "time" "go.sia.tech/core/consensus" @@ -357,11 +356,6 @@ func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksMa rhp2: rhp2.New(rhp.NewFallbackDialer(store, net.Dialer{}, l), l), } - // init settings - if err := b.initSettings(ctx); err != nil { - return nil, err - } - // create account manager b.accountsMgr, err = ibus.NewAccountManager(ctx, store, l) if err != nil { @@ -483,16 +477,14 @@ func (b *Bus) Handler() http.Handler { "DELETE /sectors/:hk/:root": b.sectorsHostRootHandlerDELETE, - "GET /settings/gouging": b.settingsGougingHandlerGET, - "PUT /settings/gouging": b.settingsGougingHandlerPUT, - "GET /settings/pinned": b.settingsPinnedHandlerGET, - "PUT /settings/pinned": b.settingsPinnedHandlerPUT, - "GET /settings/redundancy": b.settingsRedundancyHandlerGET, - "PUT /settings/redundancy": b.settingsRedundancyHandlerPUT, - "GET /settings/s3authentication": b.settingsS3AuthenticationHandlerGET, - "PUT /settings/s3authentication": b.settingsS3AuthenticationHandlerPUT, - "GET /settings/uploadpacking": b.settingsUploadPackingHandlerGET, - "PUT /settings/uploadpacking": b.settingsUploadPackingHandlerPUT, + "GET /settings/gouging": b.settingsGougingHandlerGET, + "PUT /settings/gouging": b.settingsGougingHandlerPUT, + "GET /settings/pinned": b.settingsPinnedHandlerGET, + "PUT /settings/pinned": b.settingsPinnedHandlerPUT, + "GET /settings/s3": b.settingsS3HandlerGET, + "PUT /settings/s3": b.settingsS3HandlerPUT, + "GET /settings/uploads": b.settingsRedundancyHandlerGET, + "PUT /settings/uploads": b.settingsRedundancyHandlerPUT, "POST /slabs/migration": b.slabsMigrationHandlerPOST, "GET /slabs/partial/:key": b.slabsPartialHandlerGET, @@ -611,120 +603,6 @@ func (b *Bus) formContract(ctx context.Context, hostSettings rhpv2.HostSettings, return contract, nil } -// initSettings loads the default settings if the setting is not already set and -// ensures the settings are valid -func (b *Bus) initSettings(ctx context.Context) error { - // testnets have different redundancy settings - defaultRedundancySettings := api.DefaultRedundancySettings - if mn, _ := chain.Mainnet(); mn.Name != b.cm.TipState().Network.Name { - defaultRedundancySettings = api.DefaultRedundancySettingsTestnet - } - - // load default settings if the setting is not already set - for key, value := range map[string]interface{}{ - api.SettingGouging: api.DefaultGougingSettings, - api.SettingPricePinning: api.DefaultPricePinSettings, - api.SettingRedundancy: defaultRedundancySettings, - api.SettingUploadPacking: api.DefaultUploadPackingSettings, - } { - if _, err := b.ss.Setting(ctx, key); errors.Is(err, api.ErrSettingNotFound) { - if bytes, err := json.Marshal(value); err != nil { - panic("failed to marshal default settings") // should never happen - } else if err := b.ss.UpdateSetting(ctx, key, string(bytes)); err != nil { - return err - } - } - } - - // check redundancy settings for validity - var rs api.RedundancySettings - if rss, err := b.ss.Setting(ctx, api.SettingRedundancy); err != nil { - return err - } else if err := json.Unmarshal([]byte(rss), &rs); err != nil { - return err - } else if err := rs.Validate(); err != nil { - b.logger.Warn(fmt.Sprintf("invalid redundancy setting found '%v', overwriting the redundancy settings with the default settings", rss)) - bytes, _ := json.Marshal(defaultRedundancySettings) - if err := b.ss.UpdateSetting(ctx, api.SettingRedundancy, string(bytes)); err != nil { - return err - } - } - - // check gouging settings for validity - var gs api.GougingSettings - if gss, err := b.ss.Setting(ctx, api.SettingGouging); err != nil { - return err - } else if err := json.Unmarshal([]byte(gss), &gs); err != nil { - return err - } else if err := gs.Validate(); err != nil { - // compat: apply default EA gouging settings - gs.MinMaxEphemeralAccountBalance = api.DefaultGougingSettings.MinMaxEphemeralAccountBalance - gs.MinPriceTableValidity = api.DefaultGougingSettings.MinPriceTableValidity - gs.MinAccountExpiry = api.DefaultGougingSettings.MinAccountExpiry - if err := gs.Validate(); err == nil { - b.logger.Info(fmt.Sprintf("updating gouging settings with default EA settings: %+v", gs)) - bytes, _ := json.Marshal(gs) - if err := b.ss.UpdateSetting(ctx, api.SettingGouging, string(bytes)); err != nil { - return err - } - } else { - // compat: apply default host block leeway settings - gs.HostBlockHeightLeeway = api.DefaultGougingSettings.HostBlockHeightLeeway - if err := gs.Validate(); err == nil { - b.logger.Info(fmt.Sprintf("updating gouging settings with default HostBlockHeightLeeway settings: %v", gs)) - bytes, _ := json.Marshal(gs) - if err := b.ss.UpdateSetting(ctx, api.SettingGouging, string(bytes)); err != nil { - return err - } - } else { - b.logger.Warn(fmt.Sprintf("invalid gouging setting found '%v', overwriting the gouging settings with the default settings", gss)) - bytes, _ := json.Marshal(api.DefaultGougingSettings) - if err := b.ss.UpdateSetting(ctx, api.SettingGouging, string(bytes)); err != nil { - return err - } - } - } - } - - // compat: default price pin settings - var pps api.PricePinSettings - if pss, err := b.ss.Setting(ctx, api.SettingPricePinning); err != nil { - return err - } else if err := json.Unmarshal([]byte(pss), &pps); err != nil { - return err - } else if err := pps.Validate(); err != nil { - // overwrite values with defaults - var updates []string - if pps.ForexEndpointURL == "" { - pps.ForexEndpointURL = api.DefaultPricePinSettings.ForexEndpointURL - updates = append(updates, fmt.Sprintf("set PricePinSettings.ForexEndpointURL to %v", pps.ForexEndpointURL)) - } - if pps.Currency == "" { - pps.Currency = api.DefaultPricePinSettings.Currency - updates = append(updates, fmt.Sprintf("set PricePinSettings.Currency to %v", pps.Currency)) - } - if pps.Threshold == 0 { - pps.Threshold = api.DefaultPricePinSettings.Threshold - updates = append(updates, fmt.Sprintf("set PricePinSettings.Threshold to %v", pps.Threshold)) - } - - var updated []byte - if err := pps.Validate(); err == nil { - b.logger.Info(fmt.Sprintf("updating price pinning settings with default values: %v", strings.Join(updates, ", "))) - updated, _ = json.Marshal(pps) - } else { - b.logger.Warn(fmt.Sprintf("updated price pinning settings are invalid (%v), they have been overwritten with the default settings", err)) - updated, _ = json.Marshal(api.DefaultPricePinSettings) - } - - if err := b.ss.UpdateSetting(ctx, api.SettingPricePinning, string(updated)); err != nil { - return err - } - } - - return nil -} - func (b *Bus) deriveRenterKey(hostKey types.PublicKey) types.PrivateKey { seed := blake2b.Sum256(append(b.deriveSubKey("renterkey"), hostKey[:]...)) pk := types.NewPrivateKeyFromSeed(seed[:]) @@ -744,17 +622,15 @@ func (b *Bus) deriveSubKey(purpose string) types.PrivateKey { } func (b *Bus) fetchSetting(ctx context.Context, key string, value interface{}) error { - // testnets have different redundancy settings - defaultRedundancySettings := api.DefaultRedundancySettings - if mn, _ := chain.Mainnet(); mn.Name != b.cm.TipState().Network.Name { - defaultRedundancySettings = api.DefaultRedundancySettingsTestnet + defaults := map[string]interface{}{ + api.SettingGouging: api.DefaultGougingSettings, + api.SettingPinned: api.DefaultPricePinSettings, + api.SettingUploads: api.DefaultUploadSettings, } - defaults := map[string]interface{}{ - api.SettingGouging: api.DefaultGougingSettings, - api.SettingPricePinning: api.DefaultPricePinSettings, - api.SettingRedundancy: defaultRedundancySettings, - api.SettingUploadPacking: api.DefaultUploadPackingSettings, + // testnets have different redundancy settings + if mn, _ := chain.Mainnet(); mn.Name != b.cm.TipState().Network.Name { + defaults[api.SettingUploads] = api.DefaultRedundancySettingsTestnet } setting, err := b.ss.Setting(ctx, key) diff --git a/bus/client/settings.go b/bus/client/settings.go index e813a7417..35c48eac2 100644 --- a/bus/client/settings.go +++ b/bus/client/settings.go @@ -6,17 +6,6 @@ import ( "go.sia.tech/renterd/api" ) -// ContractSetSettings returns the contract set settings. -func (c *Client) ContractSetSettings(ctx context.Context) (css api.ContractSetSetting, err error) { - err = c.c.WithContext(ctx).GET("/setting/contractset", &css) - return -} - -// UpdateContractSetSetting updates the given setting. -func (c *Client) UpdateContractSetSetting(ctx context.Context, css api.ContractSetSetting) error { - return c.c.WithContext(ctx).PUT("/setting/contractset", css) -} - // GougingSettings returns the gouging settings. func (c *Client) GougingSettings(ctx context.Context) (gs api.GougingSettings, err error) { err = c.c.WithContext(ctx).GET("/setting/gouging", &gs) @@ -29,45 +18,34 @@ func (c *Client) UpdateGougingSettings(ctx context.Context, gs api.GougingSettin } // PricePinningSettings returns the contract set settings. -func (c *Client) PricePinningSettings(ctx context.Context) (pps api.PricePinSettings, err error) { +func (c *Client) PricePinningSettings(ctx context.Context) (pps api.PinnedSettings, err error) { err = c.c.WithContext(ctx).GET("/setting/pinned", &pps) return } // UpdatePinnedSettings updates the given setting. -func (c *Client) UpdatePinnedSettings(ctx context.Context, pps api.PricePinSettings) error { +func (c *Client) UpdatePinnedSettings(ctx context.Context, pps api.PinnedSettings) error { return c.c.WithContext(ctx).PUT("/setting/pinned", pps) } -// RedundancySettings returns the redundancy settings. -func (c *Client) RedundancySettings(ctx context.Context) (rs api.RedundancySettings, err error) { - err = c.c.WithContext(ctx).GET("/setting/redundancy", &rs) - return -} - -// UpdateRedundancySettings updates the given setting. -func (c *Client) UpdateRedundancySettings(ctx context.Context, rs api.RedundancySettings) error { - return c.c.WithContext(ctx).PUT("/setting/redundancy", rs) -} - -// S3AuthenticationSettings returns the S3 authentication settings. -func (c *Client) S3AuthenticationSettings(ctx context.Context) (as api.S3AuthenticationSettings, err error) { - err = c.c.WithContext(ctx).GET("/setting/s3authentication", &as) +// S3Settings returns the S3 settings. +func (c *Client) S3Settings(ctx context.Context) (as api.S3Settings, err error) { + err = c.c.WithContext(ctx).GET("/setting/s3", &as) return } -// UpdateS3AuthenticationSettings updates the given setting. -func (c *Client) UpdateS3AuthenticationSettings(ctx context.Context, as api.S3AuthenticationSettings) error { - return c.c.WithContext(ctx).PUT("/setting/s3authentication", as) +// UpdateS3Settings updates the given setting. +func (c *Client) UpdateS3Settings(ctx context.Context, as api.S3Settings) error { + return c.c.WithContext(ctx).PUT("/setting/s3", as) } -// UploadPackingSettings returns the upload packing settings. -func (c *Client) UploadPackingSettings(ctx context.Context) (ups api.UploadPackingSettings, err error) { - err = c.c.WithContext(ctx).GET("/setting/uploadpacking", &ups) +// UploadSettings returns the upload settings. +func (c *Client) UploadSettings(ctx context.Context) (css api.UploadSettings, err error) { + err = c.c.WithContext(ctx).GET("/setting/upload", &css) return } -// UpdateUploadPackingSettings updates the given setting. -func (c *Client) UpdateUploadPackingSettings(ctx context.Context, ups api.UploadPackingSettings) error { - return c.c.WithContext(ctx).PUT("/setting/uploadpacking", ups) +// UpdateUploadSettings update the given setting. +func (c *Client) UpdateUploadSettings(ctx context.Context, us api.UploadSettings) error { + return c.c.WithContext(ctx).PUT("/setting/upload", us) } diff --git a/bus/routes.go b/bus/routes.go index 76c7df4ec..a95d62ac3 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1284,8 +1284,8 @@ func (b *Bus) settingsGougingHandlerPUT(jc jape.Context) { } func (b *Bus) settingsPinnedHandlerGET(jc jape.Context) { - var pps api.PricePinSettings - if err := b.fetchSetting(jc.Request.Context(), api.SettingPricePinning, &pps); errors.Is(err, api.ErrSettingNotFound) { + var pps api.PinnedSettings + if err := b.fetchSetting(jc.Request.Context(), api.SettingPinned, &pps); errors.Is(err, api.ErrSettingNotFound) { jc.Error(err, http.StatusNotFound) } else if jc.Check("failed to get price pinning settings", err) == nil { // populate the Autopilots map with the current autopilots @@ -1303,7 +1303,7 @@ func (b *Bus) settingsPinnedHandlerGET(jc jape.Context) { } func (b *Bus) settingsPinnedHandlerPUT(jc jape.Context) { - var pps api.PricePinSettings + var pps api.PinnedSettings if jc.Decode(&pps) != nil { return } else if err := pps.Validate(); err != nil { @@ -1324,14 +1324,14 @@ func (b *Bus) settingsPinnedHandlerPUT(jc jape.Context) { } // update the setting - if jc.Check("could not update price pinning settings", b.updateSetting(jc.Request.Context(), api.SettingPricePinning, string(data), true)) != nil { + if jc.Check("could not update price pinning settings", b.updateSetting(jc.Request.Context(), api.SettingPinned, string(data), true)) != nil { return } } func (b *Bus) settingsRedundancyHandlerGET(jc jape.Context) { var rs api.RedundancySettings - if err := b.fetchSetting(jc.Request.Context(), api.SettingRedundancy, &rs); errors.Is(err, api.ErrSettingNotFound) { + if err := b.fetchSetting(jc.Request.Context(), api.SettingUploads, &rs); errors.Is(err, api.ErrSettingNotFound) { jc.Error(err, http.StatusNotFound) } else if jc.Check("failed to get redundancy settings", err) == nil { jc.Encode(rs) @@ -1355,22 +1355,22 @@ func (b *Bus) settingsRedundancyHandlerPUT(jc jape.Context) { } // update the setting - if jc.Check("could not update redundancy settings", b.updateSetting(jc.Request.Context(), api.SettingRedundancy, string(data), false)) != nil { + if jc.Check("could not update redundancy settings", b.updateSetting(jc.Request.Context(), api.SettingUploads, string(data), false)) != nil { return } } -func (b *Bus) settingsS3AuthenticationHandlerGET(jc jape.Context) { - var s3as api.S3AuthenticationSettings - if err := b.fetchSetting(jc.Request.Context(), api.SettingS3Authentication, &s3as); errors.Is(err, api.ErrSettingNotFound) { +func (b *Bus) settingsS3HandlerGET(jc jape.Context) { + var s3as api.S3Settings + if err := b.fetchSetting(jc.Request.Context(), api.SettingS3, &s3as); errors.Is(err, api.ErrSettingNotFound) { jc.Error(err, http.StatusNotFound) } else if jc.Check("failed to get s3 authentication settings", err) == nil { jc.Encode(s3as) } } -func (b *Bus) settingsS3AuthenticationHandlerPUT(jc jape.Context) { - var s3as api.S3AuthenticationSettings +func (b *Bus) settingsS3HandlerPUT(jc jape.Context) { + var s3as api.S3Settings if jc.Decode(&s3as) != nil { return } else if err := s3as.Validate(); err != nil { @@ -1386,38 +1386,7 @@ func (b *Bus) settingsS3AuthenticationHandlerPUT(jc jape.Context) { } // update the setting - if jc.Check("could not update s3 authentication settings", b.updateSetting(jc.Request.Context(), api.SettingS3Authentication, string(data), false)) != nil { - return - } -} - -func (b *Bus) settingsUploadPackingHandlerGET(jc jape.Context) { - var ups api.UploadPackingSettings - if err := b.fetchSetting(jc.Request.Context(), api.SettingUploadPacking, &ups); errors.Is(err, api.ErrSettingNotFound) { - jc.Error(err, http.StatusNotFound) - } else if jc.Check("failed to get upload packing settings", err) == nil { - jc.Encode(ups) - } -} - -func (b *Bus) settingsUploadPackingHandlerPUT(jc jape.Context) { - var ups api.UploadPackingSettings - if jc.Decode(&ups) != nil { - return - } else if err := ups.Validate(); err != nil { - jc.Error(fmt.Errorf("couldn't update upload packing settings, error: %v", err), http.StatusBadRequest) - return - } - - // marshal the setting - data, err := json.Marshal(ups) - if err != nil { - jc.Error(fmt.Errorf("couldn't marshal the given value, error: %v", err), http.StatusBadRequest) - return - } - - // update the setting - if jc.Check("could not update upload packing settings", b.updateSetting(jc.Request.Context(), api.SettingUploadPacking, string(data), false)) != nil { + if jc.Check("could not update s3 authentication settings", b.updateSetting(jc.Request.Context(), api.SettingS3, string(data), false)) != nil { return } } @@ -1555,14 +1524,14 @@ func (b *Bus) slabsPartialHandlerPOST(jc jape.Context) { if jc.Check("failed to add partial slab", err) != nil { return } - var pus api.UploadPackingSettings - if err := b.fetchSetting(jc.Request.Context(), api.SettingUploadPacking, &pus); err != nil && !errors.Is(err, api.ErrSettingNotFound) { + var us api.UploadSettings + if err := b.fetchSetting(jc.Request.Context(), api.SettingUploads, &us); err != nil && !errors.Is(err, api.ErrSettingNotFound) { jc.Error(fmt.Errorf("could not get upload packing settings: %w", err), http.StatusInternalServerError) return } jc.Encode(api.AddPartialSlabResponse{ Slabs: slabs, - SlabBufferMaxSizeSoftReached: bufferSize >= pus.SlabBufferMaxSizeSoft, + SlabBufferMaxSizeSoftReached: bufferSize >= us.Packing.SlabBufferMaxSizeSoft, }) } @@ -1588,22 +1557,15 @@ func (b *Bus) paramsHandlerUploadGET(jc jape.Context) { return } - var contractSet string - var css api.ContractSetSetting - if err := b.fetchSetting(jc.Request.Context(), api.SettingContractSet, &css); err != nil && !errors.Is(err, api.ErrSettingNotFound) { - jc.Error(fmt.Errorf("could not get contract set settings: %w", err), http.StatusInternalServerError) - return - } else if err == nil { - contractSet = css.Default - } - var uploadPacking bool - var pus api.UploadPackingSettings - if err := b.fetchSetting(jc.Request.Context(), api.SettingUploadPacking, &pus); err != nil && !errors.Is(err, api.ErrSettingNotFound) { - jc.Error(fmt.Errorf("could not get upload packing settings: %w", err), http.StatusInternalServerError) + var contractSet string + var us api.UploadSettings + if err := b.fetchSetting(jc.Request.Context(), api.SettingUploads, &us); err != nil && !errors.Is(err, api.ErrSettingNotFound) { + jc.Error(fmt.Errorf("could not get upload settings: %w", err), http.StatusInternalServerError) return } else if err == nil { - uploadPacking = pus.Enabled + contractSet = us.DefaultContractSet + uploadPacking = us.Packing.Enabled } jc.Encode(api.UploadParams{ @@ -1650,7 +1612,7 @@ func (b *Bus) gougingParams(ctx context.Context) (api.GougingParams, error) { } var rs api.RedundancySettings - if rss, err := b.ss.Setting(ctx, api.SettingRedundancy); err != nil { + if rss, err := b.ss.Setting(ctx, api.SettingUploads); err != nil { return api.GougingParams{}, err } else if err := json.Unmarshal([]byte(rss), &rs); err != nil { b.logger.Panicf("failed to unmarshal redundancy settings '%s': %v", rss, err) diff --git a/cmd/renterd/node.go b/cmd/renterd/node.go index 5ab3bf13d..28d8e791d 100644 --- a/cmd/renterd/node.go +++ b/cmd/renterd/node.go @@ -413,30 +413,31 @@ func (n *node) Run() error { // set initial S3 keys if n.cfg.S3.Enabled && !n.cfg.S3.DisableAuth { - as, err := n.bus.S3AuthenticationSettings(context.Background()) + s3s, err := n.bus.S3Settings(context.Background()) if err != nil && !strings.Contains(err.Error(), api.ErrSettingNotFound.Error()) { - return fmt.Errorf("failed to fetch S3 authentication settings: %w", err) - } else if as.V4Keypairs == nil { - as.V4Keypairs = make(map[string]string) + return fmt.Errorf("failed to fetch S3 settings: %w", err) + } else if s3s.Authentication.V4Keypairs == nil { + s3s.Authentication.V4Keypairs = make(map[string]string) } // S3 key pair validation was broken at one point, we need to remove the // invalid key pairs here to ensure we don't fail when we update the // setting below. - for k, v := range as.V4Keypairs { + for k, v := range s3s.Authentication.V4Keypairs { if err := (api.S3AuthenticationSettings{V4Keypairs: map[string]string{k: v}}).Validate(); err != nil { n.logger.Infof("removing invalid S3 keypair for AccessKeyID %s, reason: %v", k, err) - delete(as.V4Keypairs, k) + delete(s3s.Authentication.V4Keypairs, k) } } // merge keys for k, v := range n.cfg.S3.KeypairsV4 { - as.V4Keypairs[k] = v + s3s.Authentication.V4Keypairs[k] = v } + // update settings - if err := n.bus.UpdateS3AuthenticationSettings(context.Background(), as); err != nil { - return fmt.Errorf("failed to update S3 authentication settings: %w", err) + if err := n.bus.UpdateS3Settings(context.Background(), s3s); err != nil { + return fmt.Errorf("failed to update S3 settings: %w", err) } } diff --git a/internal/bus/pinmanager.go b/internal/bus/pinmanager.go index c128a8392..9274f0920 100644 --- a/internal/bus/pinmanager.go +++ b/internal/bus/pinmanager.go @@ -103,10 +103,10 @@ func (pm *pinManager) averageRate() decimal.Decimal { return decimal.NewFromFloat(median) } -func (pm *pinManager) pinnedSettings(ctx context.Context) (api.PricePinSettings, error) { - var ps api.PricePinSettings - if pss, err := pm.s.Setting(ctx, api.SettingPricePinning); err != nil { - return api.PricePinSettings{}, err +func (pm *pinManager) pinnedSettings(ctx context.Context) (api.PinnedSettings, error) { + var ps api.PinnedSettings + if pss, err := pm.s.Setting(ctx, api.SettingPinned); err != nil { + return api.PinnedSettings{}, err } else if err := json.Unmarshal([]byte(pss), &ps); err != nil { pm.logger.Panicf("failed to unmarshal pinned settings '%s': %v", pss, err) } diff --git a/internal/bus/pinmanager_test.go b/internal/bus/pinmanager_test.go index e5158836d..33e4962eb 100644 --- a/internal/bus/pinmanager_test.go +++ b/internal/bus/pinmanager_test.go @@ -123,7 +123,7 @@ func newTestStore() *mockPinStore { // add default price pin - and gouging settings b, _ := json.Marshal(api.DefaultPricePinSettings) - s.settings[api.SettingPricePinning] = string(b) + s.settings[api.SettingPinned] = string(b) b, _ = json.Marshal(api.DefaultGougingSettings) s.settings[api.SettingGouging] = string(b) @@ -152,9 +152,9 @@ func (ms *mockPinStore) gougingSettings() api.GougingSettings { return gs } -func (ms *mockPinStore) updatPinnedSettings(pps api.PricePinSettings) { +func (ms *mockPinStore) updatPinnedSettings(pps api.PinnedSettings) { b, _ := json.Marshal(pps) - ms.UpdateSetting(context.Background(), api.SettingPricePinning, string(b)) + ms.UpdateSetting(context.Background(), api.SettingPinned, string(b)) time.Sleep(2 * testUpdateInterval) } diff --git a/internal/test/config.go b/internal/test/config.go index 1b5d926a0..877b6168e 100644 --- a/internal/test/config.go +++ b/internal/test/config.go @@ -33,10 +33,7 @@ var ( }, } - ContractSet = "testset" - ContractSetSettings = api.ContractSetSetting{ - Default: ContractSet, - } + ContractSet = "testset" GougingSettings = api.GougingSettings{ MaxRPCPrice: types.Siacoins(1).Div64(1000), // 1mS per RPC @@ -59,6 +56,11 @@ var ( TotalShards: 3, } + UploadSettings = api.UploadSettings{ + DefaultContractSet: ContractSet, + Redundancy: RedundancySettings, + } + S3AccessKeyID = "TESTINGYNHUWCPKOPSYQ" S3SecretAccessKey = "Rh30BNyj+qNI4ftYRteoZbHJ3X4Ln71QtZkRXzJ9" S3Credentials = credentials.NewStaticV4(S3AccessKeyID, S3SecretAccessKey, "") diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index 189a92e43..d84b87b17 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -435,18 +435,25 @@ func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { })) } + // Build upload settings. + us := test.UploadSettings + us.Packing = api.UploadPackingSettings{ + Enabled: enableUploadPacking, + SlabBufferMaxSizeSoft: api.DefaultUploadPackingSettings.SlabBufferMaxSizeSoft, + } + + // Build S3 settings. + s3 := api.S3Settings{ + Authentication: api.S3AuthenticationSettings{ + V4Keypairs: map[string]string{test.S3AccessKeyID: test.S3SecretAccessKey}, + }, + } + // Update the bus settings. tt.OK(busClient.UpdateGougingSettings(ctx, test.GougingSettings)) - tt.OK(busClient.UpdateContractSetSetting(ctx, test.ContractSetSettings)) tt.OK(busClient.UpdatePinnedSettings(ctx, test.PricePinSettings)) - tt.OK(busClient.UpdateRedundancySettings(ctx, test.RedundancySettings)) - tt.OK(busClient.UpdateS3AuthenticationSettings(ctx, api.S3AuthenticationSettings{ - V4Keypairs: map[string]string{test.S3AccessKeyID: test.S3SecretAccessKey}, - })) - tt.OK(busClient.UpdateUploadPackingSettings(ctx, api.UploadPackingSettings{ - Enabled: enableUploadPacking, - SlabBufferMaxSizeSoft: api.DefaultUploadPackingSettings.SlabBufferMaxSizeSoft, - })) + tt.OK(busClient.UpdateUploadSettings(ctx, us)) + tt.OK(busClient.UpdateS3Settings(ctx, s3)) // Fund the bus. if funding { diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 2c1c1e16e..902c922e4 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -178,10 +178,10 @@ func TestNewTestCluster(t *testing.T) { tt := cluster.tt // Upload packing should be disabled by default. - ups, err := b.UploadPackingSettings(context.Background()) + us, err := b.UploadSettings(context.Background()) tt.OK(err) - if ups.Enabled { - t.Fatalf("expected upload packing to be disabled by default, got %v", ups.Enabled) + if us.Packing.Enabled { + t.Fatalf("expected upload packing to be disabled by default, got %v", us.Packing.Enabled) } // PricePinningSettings should have default values @@ -1142,10 +1142,13 @@ func TestEphemeralAccounts(t *testing.T) { w := cluster.Worker tt := cluster.tt - tt.OK(b.UpdateRedundancySettings(context.Background(), api.RedundancySettings{ + us := test.UploadSettings + us.Redundancy = api.RedundancySettings{ MinShards: 1, TotalShards: 1, - })) + } + tt.OK(b.UpdateUploadSettings(context.Background(), us)) + // add a host hosts := cluster.AddHosts(1) h, err := b.Host(context.Background(), hosts[0].PublicKey()) diff --git a/internal/test/e2e/s3_test.go b/internal/test/e2e/s3_test.go index 5775d2292..272ead406 100644 --- a/internal/test/e2e/s3_test.go +++ b/internal/test/e2e/s3_test.go @@ -825,9 +825,11 @@ func TestS3SettingsValidate(t *testing.T) { }, } for i, test := range tests { - err := cluster.Bus.UpdateS3AuthenticationSettings(context.Background(), api.S3AuthenticationSettings{ - V4Keypairs: map[string]string{ - test.id: test.key, + err := cluster.Bus.UpdateS3Settings(context.Background(), api.S3Settings{ + Authentication: api.S3AuthenticationSettings{ + V4Keypairs: map[string]string{ + test.id: test.key, + }, }, }) if err != nil && !test.shouldFail { diff --git a/internal/worker/cache.go b/internal/worker/cache.go index 2ec207dc9..f6c1ea574 100644 --- a/internal/worker/cache.go +++ b/internal/worker/cache.go @@ -333,7 +333,7 @@ func (c *cache) handleSettingUpdate(e api.EventSettingUpdate) (err error) { gp.GougingSettings = gs c.cache.Set(cacheKeyGougingParams, gp) - case api.SettingRedundancy: + case api.SettingUploads: var rs api.RedundancySettings if err := json.Unmarshal(data, &rs); err != nil { return fmt.Errorf("couldn't update redundancy settings, invalid request body, %t", e.Update) diff --git a/worker/mocks_test.go b/worker/mocks_test.go index 13e5fd733..203afe7e1 100644 --- a/worker/mocks_test.go +++ b/worker/mocks_test.go @@ -678,8 +678,8 @@ func (*s3Mock) MultipartUploadParts(ctx context.Context, bucket, object string, return api.MultipartListPartsResponse{}, nil } -func (*s3Mock) S3AuthenticationSettings(context.Context) (as api.S3AuthenticationSettings, err error) { - return api.S3AuthenticationSettings{}, nil +func (*s3Mock) S3Settings(context.Context) (as api.S3Settings, err error) { + return api.S3Settings{}, nil } func (*s3Mock) UpdateSetting(context.Context, string, interface{}) error { diff --git a/worker/s3/authentication.go b/worker/s3/authentication.go index 58ebad677..066e27e53 100644 --- a/worker/s3/authentication.go +++ b/worker/s3/authentication.go @@ -117,11 +117,11 @@ func (b *authenticatedBackend) permsFromCtx(ctx context.Context, bucket string) } func (b *authenticatedBackend) reloadV4Keys(ctx context.Context) error { - as, err := b.backend.b.S3AuthenticationSettings(ctx) + s3, err := b.backend.b.S3Settings(ctx) if err != nil { return err } - signature.ReloadKeys(as.V4Keypairs) + signature.ReloadKeys(s3.Authentication.V4Keypairs) return nil } diff --git a/worker/s3/s3.go b/worker/s3/s3.go index efa921030..c0e2c054e 100644 --- a/worker/s3/s3.go +++ b/worker/s3/s3.go @@ -42,7 +42,7 @@ type Bus interface { MultipartUploads(ctx context.Context, bucket, prefix, keyMarker, uploadIDMarker string, maxUploads int) (resp api.MultipartListUploadsResponse, _ error) MultipartUploadParts(ctx context.Context, bucket, object string, uploadID string, marker int, limit int64) (resp api.MultipartListPartsResponse, _ error) - S3AuthenticationSettings(ctx context.Context) (as api.S3AuthenticationSettings, err error) + S3Settings(ctx context.Context) (as api.S3Settings, err error) UploadParams(ctx context.Context) (api.UploadParams, error) } From 2cadb86682f8fd3289aea59e60e86eecf9811e82 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 28 Aug 2024 17:38:49 +0200 Subject: [PATCH 011/708] bus: merge objects listing endpoints and add new endpoint to fetch object --- api/object.go | 58 +++++-------- bus/bus.go | 15 ++-- bus/client/objects.go | 26 +++--- bus/routes.go | 69 ++++----------- internal/test/e2e/cluster_test.go | 132 ++++++++++++----------------- internal/test/e2e/metadata_test.go | 8 +- internal/test/e2e/s3_test.go | 4 +- stores/metadata.go | 21 ++--- stores/metadata_test.go | 92 ++++++++++---------- stores/sql/database.go | 2 +- stores/sql/main.go | 46 +++++----- stores/sql/mysql/main.go | 4 +- stores/sql/sqlite/main.go | 4 +- worker/alerts.go | 4 +- worker/bench_test.go | 4 +- worker/client/client.go | 16 ---- worker/mocks_test.go | 10 +-- worker/s3/backend.go | 73 ++++------------ worker/s3/s3.go | 3 +- worker/upload_test.go | 40 ++++----- worker/worker.go | 65 +++++--------- 21 files changed, 269 insertions(+), 427 deletions(-) diff --git a/api/object.go b/api/object.go index a5cef0422..bb5944c2e 100644 --- a/api/object.go +++ b/api/object.go @@ -47,6 +47,10 @@ var ( // ErrSlabNotFound is returned when a slab can't be retrieved from the // database. ErrSlabNotFound = errors.New("slab not found") + + // ErrUnsupportedDelimiter is returned when an unsupported delimiter is + // provided. + ErrUnsupportedDelimiter = errors.New("unsupported delimiter") ) type ( @@ -99,16 +103,6 @@ type ( Metadata ObjectUserMetadata } - // ObjectsDeleteRequest is the request type for the /bus/objects/list endpoint. - ObjectsListRequest struct { - Bucket string `json:"bucket"` - Limit int `json:"limit"` - SortBy string `json:"sortBy"` - SortDir string `json:"sortDir"` - Prefix string `json:"prefix"` - Marker string `json:"marker"` - } - // ObjectsListResponse is the response type for the /bus/objects/list endpoint. ObjectsListResponse struct { HasMore bool `json:"hasMore"` @@ -207,32 +201,24 @@ type ( } HeadObjectOptions struct { - IgnoreDelim bool - Range *DownloadRange + Range *DownloadRange } DownloadObjectOptions struct { - GetObjectOptions Range *DownloadRange } GetObjectOptions struct { - Prefix string - Offset int - Limit int - IgnoreDelim bool - Marker string OnlyMetadata bool - SortBy string - SortDir string } ListObjectOptions struct { - Prefix string - Marker string - Limit int - SortBy string - SortDir string + Delimiter string + Limit int + Marker string + Prefix string + SortBy string + SortDir string } SearchObjectOptions struct { @@ -297,7 +283,6 @@ func (opts UploadMultipartUploadPartOptions) Apply(values url.Values) { } func (opts DownloadObjectOptions) ApplyValues(values url.Values) { - opts.GetObjectOptions.Apply(values) } func (opts DownloadObjectOptions) ApplyHeaders(h http.Header) { @@ -317,9 +302,6 @@ func (opts DeleteObjectOptions) Apply(values url.Values) { } func (opts HeadObjectOptions) Apply(values url.Values) { - if opts.IgnoreDelim { - values.Set("ignoreDelim", "true") - } } func (opts HeadObjectOptions) ApplyHeaders(h http.Header) { @@ -333,23 +315,23 @@ func (opts HeadObjectOptions) ApplyHeaders(h http.Header) { } func (opts GetObjectOptions) Apply(values url.Values) { - if opts.Prefix != "" { - values.Set("prefix", opts.Prefix) + if opts.OnlyMetadata { + values.Set("onlyMetadata", "true") } - if opts.Offset != 0 { - values.Set("offset", fmt.Sprint(opts.Offset)) +} + +func (opts ListObjectOptions) Apply(values url.Values) { + if opts.Delimiter != "" { + values.Set("delimiter", opts.Delimiter) } if opts.Limit != 0 { values.Set("limit", fmt.Sprint(opts.Limit)) } - if opts.IgnoreDelim { - values.Set("ignoreDelim", "true") - } if opts.Marker != "" { values.Set("marker", opts.Marker) } - if opts.OnlyMetadata { - values.Set("onlymetadata", "true") + if opts.Prefix != "" { + values.Set("prefix", opts.Prefix) } if opts.SortBy != "" { values.Set("sortBy", opts.SortBy) diff --git a/bus/bus.go b/bus/bus.go index 1807575e9..39cd4f409 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -226,10 +226,9 @@ type ( UpdateBucketPolicy(ctx context.Context, bucketName string, policy api.BucketPolicy) error CopyObject(ctx context.Context, srcBucket, dstBucket, srcPath, dstPath, mimeType string, metadata api.ObjectUserMetadata) (api.ObjectMetadata, error) - ListObjects(ctx context.Context, bucketName, prefix, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) + ListObjects(ctx context.Context, bucketName, prefix, delim, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) Object(ctx context.Context, bucketName, path string) (api.Object, error) ObjectMetadata(ctx context.Context, bucketName, path string) (api.Object, error) - ObjectEntries(ctx context.Context, bucketName, path, prefix, sortBy, sortDir, marker string, offset, limit int) ([]api.ObjectMetadata, bool, error) ObjectsBySlabKey(ctx context.Context, bucketName string, slabKey object.EncryptionKey) ([]api.ObjectMetadata, error) ObjectsStats(ctx context.Context, opts api.ObjectsStatsOpts) (api.ObjectsStatsResponse, error) RemoveObject(ctx context.Context, bucketName, path string) error @@ -440,12 +439,12 @@ func (b *Bus) Handler() http.Handler { "POST /multipart/listuploads": b.multipartHandlerListUploadsPOST, "POST /multipart/listparts": b.multipartHandlerListPartsPOST, - "GET /objects/*path": b.objectsHandlerGET, - "PUT /objects/*path": b.objectsHandlerPUT, - "DELETE /objects/*path": b.objectsHandlerDELETE, - "POST /objects/copy": b.objectsCopyHandlerPOST, - "POST /objects/rename": b.objectsRenameHandlerPOST, - "POST /objects/list": b.objectsListHandlerPOST, + "GET /object/*key": b.objectHandlerGET, + "GET /objects/*prefix": b.objectsHandlerPOST, + "PUT /objects/*path": b.objectsHandlerPUT, + "DELETE /objects/*path": b.objectsHandlerDELETE, + "POST /objects/copy": b.objectsCopyHandlerPOST, + "POST /objects/rename": b.objectsRenameHandlerPOST, "GET /params/gouging": b.paramsHandlerGougingGET, "GET /params/upload": b.paramsHandlerUploadGET, diff --git a/bus/client/objects.go b/bus/client/objects.go index fca893a49..0415e2831 100644 --- a/bus/client/objects.go +++ b/bus/client/objects.go @@ -49,21 +49,8 @@ func (c *Client) DeleteObject(ctx context.Context, bucket, path string, opts api return } -// ListOBjects lists objects in the given bucket. -func (c *Client) ListObjects(ctx context.Context, bucket string, opts api.ListObjectOptions) (resp api.ObjectsListResponse, err error) { - err = c.c.WithContext(ctx).POST("/objects/list", api.ObjectsListRequest{ - Bucket: bucket, - Limit: opts.Limit, - Prefix: opts.Prefix, - Marker: opts.Marker, - SortBy: opts.SortBy, - SortDir: opts.SortDir, - }, &resp) - return -} - // Objects returns the object at given path. -func (c *Client) Object(ctx context.Context, bucket, path string, opts api.GetObjectOptions) (res api.ObjectsResponse, err error) { +func (c *Client) Object(ctx context.Context, bucket, path string, opts api.GetObjectOptions) (res api.Object, err error) { values := url.Values{} values.Set("bucket", bucket) opts.Apply(values) @@ -71,7 +58,16 @@ func (c *Client) Object(ctx context.Context, bucket, path string, opts api.GetOb path = api.ObjectPathEscape(path) path += "?" + values.Encode() - err = c.c.WithContext(ctx).GET(fmt.Sprintf("/objects/%s", path), &res) + err = c.c.WithContext(ctx).GET(fmt.Sprintf("/object/%s", path), &res) + return +} + +// Objects lists objects in the given bucket. +func (c *Client) Objects(ctx context.Context, bucket string, opts api.ListObjectOptions) (resp api.ObjectsListResponse, err error) { + values := url.Values{} + values.Set("bucket", bucket) + opts.Apply(values) + err = c.c.WithContext(ctx).GET("/objects?"+values.Encode(), &resp) return } diff --git a/bus/routes.go b/bus/routes.go index 4eee7ce44..799914492 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1035,16 +1035,8 @@ func (b *Bus) searchObjectsHandlerGET(jc jape.Context) { jc.Encode(keys) } -func (b *Bus) objectsHandlerGET(jc jape.Context) { - var ignoreDelim bool - if jc.DecodeForm("ignoreDelim", &ignoreDelim) != nil { - return - } - path := jc.PathParam("path") - if strings.HasSuffix(path, "/") && !ignoreDelim { - b.objectEntriesHandlerGET(jc, path) - return - } +func (b *Bus) objectHandlerGET(jc jape.Context) { + path := jc.PathParam("key") bucket := api.DefaultBucketName if jc.DecodeForm("bucket", &bucket) != nil { return @@ -1056,6 +1048,7 @@ func (b *Bus) objectsHandlerGET(jc jape.Context) { var o api.Object var err error + if onlymetadata { o, err = b.ms.ObjectMetadata(jc.Request.Context(), bucket, path) } else { @@ -1070,48 +1063,40 @@ func (b *Bus) objectsHandlerGET(jc jape.Context) { jc.Encode(api.ObjectsResponse{Object: &o}) } -func (b *Bus) objectEntriesHandlerGET(jc jape.Context, path string) { +func (b *Bus) objectsHandlerPOST(jc jape.Context) { + var limit int + var marker, delim, prefix, sortBy, sortDir string bucket := api.DefaultBucketName if jc.DecodeForm("bucket", &bucket) != nil { return } - - var prefix string - if jc.DecodeForm("prefix", &prefix) != nil { + if jc.DecodeForm("delimiter", &limit) != nil { return } - - var sortBy string - if jc.DecodeForm("sortBy", &sortBy) != nil { + if jc.DecodeForm("limit", &limit) != nil { return } - - var sortDir string - if jc.DecodeForm("sortDir", &sortDir) != nil { + if jc.DecodeForm("marker", &marker) != nil { return } - - var marker string - if jc.DecodeForm("marker", &marker) != nil { + if jc.DecodeForm("prefix", &prefix) != nil { return } - - var offset int - if jc.DecodeForm("offset", &offset) != nil { + if jc.DecodeForm("sortBy", &sortBy) != nil { return } - limit := -1 - if jc.DecodeForm("limit", &limit) != nil { + if jc.DecodeForm("sortDir", &sortDir) != nil { return } - // look for object entries - entries, hasMore, err := b.ms.ObjectEntries(jc.Request.Context(), bucket, path, prefix, sortBy, sortDir, marker, offset, limit) - if jc.Check("couldn't list object entries", err) != nil { + resp, err := b.ms.ListObjects(jc.Request.Context(), bucket, prefix, delim, sortBy, sortDir, marker, limit) + if errors.Is(err, api.ErrUnsupportedDelimiter) { + jc.Error(err, http.StatusBadRequest) + return + } else if jc.Check("failed to query objects", err) != nil { return } - - jc.Encode(api.ObjectsResponse{Entries: entries, HasMore: hasMore}) + jc.Encode(resp) } func (b *Bus) objectsHandlerPUT(jc jape.Context) { @@ -1139,24 +1124,6 @@ func (b *Bus) objectsCopyHandlerPOST(jc jape.Context) { jc.Encode(om) } -func (b *Bus) objectsListHandlerPOST(jc jape.Context) { - var req api.ObjectsListRequest - if jc.Decode(&req) != nil { - return - } - if req.Bucket == "" { - req.Bucket = api.DefaultBucketName - } - resp, err := b.ms.ListObjects(jc.Request.Context(), req.Bucket, req.Prefix, req.SortBy, req.SortDir, req.Marker, req.Limit) - if errors.Is(err, api.ErrMarkerNotFound) { - jc.Error(err, http.StatusBadRequest) - return - } else if jc.Check("couldn't list objects", err) != nil { - return - } - jc.Encode(resp) -} - func (b *Bus) objectsRenameHandlerPOST(jc jape.Context) { var orr api.ObjectsRenameRequest if jc.Decode(&orr) != nil { diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 6d47d0590..ef527c975 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -117,7 +117,7 @@ func TestListObjects(t *testing.T) { } for _, test := range tests { // use the bus client - res, err := b.ListObjects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ + res, err := b.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ Prefix: test.prefix, SortBy: test.sortBy, SortDir: test.sortDir, @@ -136,7 +136,7 @@ func TestListObjects(t *testing.T) { if len(res.Objects) > 0 { marker := "" for offset := 0; offset < len(test.want); offset++ { - res, err := b.ListObjects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ + res, err := b.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ Prefix: test.prefix, SortBy: test.sortBy, SortDir: test.sortDir, @@ -162,7 +162,7 @@ func TestListObjects(t *testing.T) { } // list invalid marker - _, err := b.ListObjects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ + _, err := b.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ Marker: "invalid", SortBy: api.ObjectSortByHealth, }) @@ -481,34 +481,37 @@ func TestObjectEntries(t *testing.T) { } for _, test := range tests { // use the bus client - res, err := b.Object(context.Background(), api.DefaultBucketName, test.path, api.GetObjectOptions{ - Prefix: test.prefix, - SortBy: test.sortBy, - SortDir: test.sortDir, + res, err := b.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ + Delimiter: "/", + Prefix: test.path + test.prefix, + SortBy: test.sortBy, + SortDir: test.sortDir, }) if err != nil { t.Fatal(err, test.path) } - assertMetadata(res.Entries) + assertMetadata(res.Objects) - if !(len(res.Entries) == 0 && len(test.want) == 0) && !reflect.DeepEqual(res.Entries, test.want) { - t.Fatalf("\nlist: %v\nprefix: %v\nsortBy: %v\nsortDir: %v\ngot: %v\nwant: %v", test.path, test.prefix, test.sortBy, test.sortDir, res.Entries, test.want) + if !(len(res.Objects) == 0 && len(test.want) == 0) && !reflect.DeepEqual(res.Objects, test.want) { + t.Fatalf("\nlist: %v\nprefix: %v\nsortBy: %v\nsortDir: %v\ngot: %v\nwant: %v", test.path, test.prefix, test.sortBy, test.sortDir, res.Objects, test.want) } + var marker string for offset := 0; offset < len(test.want); offset++ { - res, err := b.Object(context.Background(), api.DefaultBucketName, test.path, api.GetObjectOptions{ - Prefix: test.prefix, + res, err := b.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ + Prefix: test.path + test.prefix, SortBy: test.sortBy, SortDir: test.sortDir, - Offset: offset, + Marker: marker, Limit: 1, }) + marker = res.NextMarker if err != nil { t.Fatal(err) } - assertMetadata(res.Entries) + assertMetadata(res.Objects) - if len(res.Entries) != 1 || res.Entries[0] != test.want[offset] { - t.Fatalf("\nlist: %v\nprefix: %v\nsortBy: %v\nsortDir: %v\ngot: %v\nwant: %v", test.path, test.prefix, test.sortBy, test.sortDir, res.Entries, test.want[offset]) + if len(res.Objects) != 1 || res.Objects[0] != test.want[offset] { + t.Fatalf("\nlist: %v\nprefix: %v\nsortBy: %v\nsortDir: %v\ngot: %v\nwant: %v", test.path, test.prefix, test.sortBy, test.sortDir, res.Objects, test.want[offset]) } moreRemaining := len(test.want)-offset-1 > 0 if res.HasMore != moreRemaining { @@ -520,8 +523,8 @@ func TestObjectEntries(t *testing.T) { continue } - res, err = b.Object(context.Background(), api.DefaultBucketName, test.path, api.GetObjectOptions{ - Prefix: test.prefix, + res, err = b.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ + Prefix: test.path + test.prefix, SortBy: test.sortBy, SortDir: test.sortDir, Marker: test.want[offset].Name, @@ -530,10 +533,10 @@ func TestObjectEntries(t *testing.T) { if err != nil { t.Fatalf("\nlist: %v\nprefix: %v\nsortBy: %v\nsortDir: %vmarker: %v\n\nerr: %v", test.path, test.prefix, test.sortBy, test.sortDir, test.want[offset].Name, err) } - assertMetadata(res.Entries) + assertMetadata(res.Objects) - if len(res.Entries) != 1 || res.Entries[0] != test.want[offset+1] { - t.Errorf("\nlist: %v\nprefix: %v\nmarker: %v\ngot: %v\nwant: %v", test.path, test.prefix, test.want[offset].Name, res.Entries, test.want[offset+1]) + if len(res.Objects) != 1 || res.Objects[0] != test.want[offset+1] { + t.Errorf("\nlist: %v\nprefix: %v\nmarker: %v\ngot: %v\nwant: %v", test.path, test.prefix, test.want[offset].Name, res.Objects, test.want[offset+1]) } moreRemaining = len(test.want)-offset-2 > 0 @@ -541,31 +544,6 @@ func TestObjectEntries(t *testing.T) { t.Errorf("invalid value for hasMore (%t) at marker (%s) test (%+v)", res.HasMore, test.want[offset].Name, test) } } - - // use the worker client - got, err := w.ObjectEntries(context.Background(), api.DefaultBucketName, test.path, api.GetObjectOptions{ - Prefix: test.prefix, - SortBy: test.sortBy, - SortDir: test.sortDir, - }) - if err != nil { - t.Fatal(err) - } - assertMetadata(got) - - if !(len(got) == 0 && len(test.want) == 0) && !reflect.DeepEqual(got, test.want) { - t.Errorf("\nlist: %v\nprefix: %v\ngot: %v\nwant: %v", test.path, test.prefix, got, test.want) - } - for _, entry := range got { - if !strings.HasSuffix(entry.Name, "/") { - buf := new(bytes.Buffer) - if err := w.DownloadObject(context.Background(), buf, api.DefaultBucketName, entry.Name, api.DownloadObjectOptions{}); err != nil { - t.Fatal(err) - } else if buf.Len() != int(entry.Size) { - t.Fatal("unexpected", buf.Len(), entry.Size) - } - } - } } // delete all uploads @@ -574,10 +552,12 @@ func TestObjectEntries(t *testing.T) { } // assert root dir is empty - if entries, err := w.ObjectEntries(context.Background(), api.DefaultBucketName, "/", api.GetObjectOptions{}); err != nil { + if resp, err := b.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ + Prefix: "/", + }); err != nil { t.Fatal(err) - } else if len(entries) != 0 { - t.Fatal("there should be no entries left", entries) + } else if len(resp.Objects) != 0 { + t.Fatal("there should be no entries left", resp.Objects) } } @@ -788,37 +768,33 @@ func TestUploadDownloadExtended(t *testing.T) { tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(file2), api.DefaultBucketName, "fileś/file2", api.UploadObjectOptions{})) // fetch all entries from the worker - entries, err := cluster.Worker.ObjectEntries(context.Background(), api.DefaultBucketName, "fileś/", api.GetObjectOptions{}) + resp, err := cluster.Bus.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ + Delimiter: "/", + Prefix: "fileś/", + }) tt.OK(err) - if len(entries) != 2 { - t.Fatal("expected two entries to be returned", len(entries)) + if len(resp.Objects) != 2 { + t.Fatal("expected two entries to be returned", len(resp.Objects)) } - for _, entry := range entries { + for _, entry := range resp.Objects { if entry.MimeType != "application/octet-stream" { t.Fatal("wrong mime type", entry.MimeType) } } // fetch entries with "file" prefix - res, err := cluster.Bus.Object(context.Background(), api.DefaultBucketName, "fileś/", api.GetObjectOptions{Prefix: "file"}) + res, err := cluster.Bus.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{Prefix: "file"}) tt.OK(err) - if len(res.Entries) != 2 { - t.Fatal("expected two entry to be returned", len(entries)) + if len(res.Objects) != 2 { + t.Fatal("expected two entry to be returned", len(res.Objects)) } // fetch entries with "fileś" prefix - res, err = cluster.Bus.Object(context.Background(), api.DefaultBucketName, "fileś/", api.GetObjectOptions{Prefix: "foo"}) + res, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{Prefix: "fileś/"}) tt.OK(err) - if len(res.Entries) != 0 { - t.Fatal("expected no entries to be returned", len(entries)) - } - - // fetch entries from the worker for unexisting path - entries, err = cluster.Worker.ObjectEntries(context.Background(), api.DefaultBucketName, "bar/", api.GetObjectOptions{}) - tt.OK(err) - if len(entries) != 0 { - t.Fatal("expected no entries to be returned", len(entries)) + if len(res.Objects) != 0 { + t.Fatal("expected no entries to be returned", len(res.Objects)) } // prepare two files, a small one and a large one @@ -971,11 +947,9 @@ func TestUploadDownloadSpending(t *testing.T) { tt.OK(err) var found bool - for _, entry := range res.Entries { - if entry.Name == fmt.Sprintf("/%s", path) { - found = true - break - } + if res.Name == fmt.Sprintf("/%s", path) { + found = true + break } if !found { t.Fatal("uploaded object not found in bus") @@ -1422,7 +1396,7 @@ func TestUploadDownloadSameHost(t *testing.T) { // upload 3 objects so every host has 3 sectors var err error - var res api.ObjectsResponse + var res api.Object shards := make(map[types.PublicKey][]object.Sector) for i := 0; i < 3; i++ { // upload object @@ -1448,7 +1422,7 @@ func TestUploadDownloadSameHost(t *testing.T) { // build a frankenstein object constructed with all sectors on the same host res.Object.Slabs[0].Shards = shards[res.Object.Slabs[0].Shards[0].LatestHost] - tt.OK(b.AddObject(context.Background(), api.DefaultBucketName, "frankenstein", test.ContractSet, *res.Object.Object, api.AddObjectOptions{})) + tt.OK(b.AddObject(context.Background(), api.DefaultBucketName, "frankenstein", test.ContractSet, *res.Object, api.AddObjectOptions{})) // assert we can download this object tt.OK(w.DownloadObject(context.Background(), io.Discard, api.DefaultBucketName, "frankenstein", api.DownloadObjectOptions{})) @@ -1708,15 +1682,17 @@ func TestUploadPacking(t *testing.T) { if err != nil { t.Fatal(err) } - if res.Object.Size != int64(len(data)) { - t.Fatal("unexpected size after upload", res.Object.Size, len(data)) + if res.Size != int64(len(data)) { + t.Fatal("unexpected size after upload", res.Size, len(data)) } - entries, err := w.ObjectEntries(context.Background(), api.DefaultBucketName, "/", api.GetObjectOptions{}) + resp, err := b.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ + Delimiter: "/", + }) if err != nil { t.Fatal(err) } var found bool - for _, entry := range entries { + for _, entry := range resp.Objects { if entry.Name == "/"+name { if entry.Size != int64(len(data)) { t.Fatal("unexpected size after upload", entry.Size, len(data)) @@ -1726,7 +1702,7 @@ func TestUploadPacking(t *testing.T) { } } if !found { - t.Fatal("object not found in list", name, entries) + t.Fatal("object not found in list", name, resp.Objects) } } diff --git a/internal/test/e2e/metadata_test.go b/internal/test/e2e/metadata_test.go index 4dd6c1229..cbbabf053 100644 --- a/internal/test/e2e/metadata_test.go +++ b/internal/test/e2e/metadata_test.go @@ -44,8 +44,8 @@ func TestObjectMetadata(t *testing.T) { if err != nil { t.Fatal(err) } - if !reflect.DeepEqual(or.Object.Metadata, opts.Metadata) { - t.Fatal("metadata mismatch", or.Object.Metadata) + if !reflect.DeepEqual(or.Metadata, opts.Metadata) { + t.Fatal("metadata mismatch", or.Metadata) } // get the object from the worker and assert it has the metadata @@ -62,7 +62,7 @@ func TestObjectMetadata(t *testing.T) { // HeadObject retrieves the modtime from a http header so it's not as // accurate as the modtime from the object GET endpoint which returns it in // the body. - orModtime, err := time.Parse(http.TimeFormat, or.Object.ModTime.Std().Format(http.TimeFormat)) + orModtime, err := time.Parse(http.TimeFormat, or.ModTime.Std().Format(http.TimeFormat)) if err != nil { t.Fatal(err) } @@ -72,7 +72,7 @@ func TestObjectMetadata(t *testing.T) { if err != nil { t.Fatal(err) } else if !reflect.DeepEqual(hor, &api.HeadObjectResponse{ - ContentType: or.Object.ContentType(), + ContentType: or.ContentType(), Etag: gor.Etag, LastModified: api.TimeRFC3339(orModtime), Range: &api.ContentRange{Offset: 1, Length: 1, Size: int64(len(data))}, diff --git a/internal/test/e2e/s3_test.go b/internal/test/e2e/s3_test.go index 3f20e22ad..1e3ee8499 100644 --- a/internal/test/e2e/s3_test.go +++ b/internal/test/e2e/s3_test.go @@ -83,8 +83,8 @@ func TestS3Basic(t *testing.T) { tt.OK(err) if busObject.Object == nil { t.Fatal("expected object to exist") - } else if busObject.Object.ETag != uploadInfo.ETag { - t.Fatalf("expected ETag %q, got %q", uploadInfo.ETag, busObject.Object.ETag) + } else if busObject.ETag != uploadInfo.ETag { + t.Fatalf("expected ETag %q, got %q", uploadInfo.ETag, busObject.ETag) } _, err = s3.PutObject(context.Background(), bucket+"nonexistent", objPath, bytes.NewReader(data), int64(len(data)), minio.PutObjectOptions{}) diff --git a/stores/metadata.go b/stores/metadata.go index fe26bc29e..e716e09c7 100644 --- a/stores/metadata.go +++ b/stores/metadata.go @@ -318,14 +318,6 @@ func (s *SQLStore) SearchObjects(ctx context.Context, bucket, substring string, return } -func (s *SQLStore) ObjectEntries(ctx context.Context, bucket, path, prefix, sortBy, sortDir, marker string, offset, limit int) (metadata []api.ObjectMetadata, hasMore bool, err error) { - err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - metadata, hasMore, err = tx.ObjectEntries(ctx, bucket, path, prefix, sortBy, sortDir, marker, offset, limit) - return err - }) - return -} - func (s *SQLStore) Object(ctx context.Context, bucket, path string) (obj api.Object, err error) { err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { obj, err = tx.Object(ctx, bucket, path) @@ -794,12 +786,15 @@ func (s *SQLStore) invalidateSlabHealthByFCID(ctx context.Context, fcids []types } } -// TODO: we can use ObjectEntries instead of ListObject if we want to use '/' as -// a delimiter for now (see backend.go) but it would be interesting to have -// arbitrary 'delim' support in ListObjects. -func (s *SQLStore) ListObjects(ctx context.Context, bucket, prefix, sortBy, sortDir, marker string, limit int) (resp api.ObjectsListResponse, err error) { +func (s *SQLStore) ListObjects(ctx context.Context, bucket, prefix, delim, sortBy, sortDir, marker string, limit int) (resp api.ObjectsListResponse, err error) { err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - resp, err = tx.ListObjects(ctx, bucket, prefix, sortBy, sortDir, marker, limit) + if delim == "" { + resp, err = tx.ListObjects(ctx, bucket, prefix, sortBy, sortDir, marker, limit) + } else if delim == "/" { + resp, err = tx.ObjectEntries(ctx, bucket, prefix, sortBy, sortDir, marker, limit) + } else { + return fmt.Errorf("unsupported delimiter: '%s'", delim) + } return err }) return diff --git a/stores/metadata_test.go b/stores/metadata_test.go index 6d0639e5d..35cce7796 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -1379,7 +1379,8 @@ func TestObjectHealth(t *testing.T) { } // assert health is returned correctly by ObjectEntries - entries, _, err := ss.ObjectEntries(context.Background(), api.DefaultBucketName, "/", "", "", "", "", 0, -1) + resp, err := ss.ListObjects(context.Background(), api.DefaultBucketName, "/", "", "", "", "", -1) + entries := resp.Objects if err != nil { t.Fatal(err) } else if len(entries) != 1 { @@ -1430,8 +1431,9 @@ func TestObjectHealth(t *testing.T) { } } -// TestObjectEntries is a test for the ObjectEntries method. -func TestObjectEntries(t *testing.T) { +// TestListObjectsWithPrefix is a test for the TestListObjects method +// with '/' as the prefix. +func TestListObjectsWithPrefix(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() @@ -1530,21 +1532,25 @@ func TestObjectEntries(t *testing.T) { {"/", "", "size", "ASC", []api.ObjectMetadata{{Name: "/gab/", Size: 5, Health: 1}, {Name: "/fileś/", Size: 6, Health: 1}, {Name: "/FOO/", Size: 7, Health: 1}, {Name: "/foo/", Size: 10, Health: .5}}}, } for _, test := range tests { - got, _, err := ss.ObjectEntries(ctx, api.DefaultBucketName, test.path, test.prefix, test.sortBy, test.sortDir, "", 0, -1) + resp, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path, test.prefix, test.sortBy, test.sortDir, "", -1) if err != nil { t.Fatal(err) } + got := resp.Objects assertMetadata(got) if !(len(got) == 0 && len(test.want) == 0) && !reflect.DeepEqual(got, test.want) { t.Fatalf("\nlist: %v\nprefix: %v\ngot: %v\nwant: %v", test.path, test.prefix, got, test.want) } + var marker string for offset := 0; offset < len(test.want); offset++ { - got, hasMore, err := ss.ObjectEntries(ctx, api.DefaultBucketName, test.path, test.prefix, test.sortBy, test.sortDir, "", offset, 1) + resp, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path, test.prefix, test.sortBy, test.sortDir, marker, 1) if err != nil { t.Fatal(err) } + marker = resp.NextMarker + got := resp.Objects assertMetadata(got) if len(got) != 1 || got[0] != test.want[offset] { @@ -1552,8 +1558,8 @@ func TestObjectEntries(t *testing.T) { } moreRemaining := len(test.want)-offset-1 > 0 - if hasMore != moreRemaining { - t.Fatalf("invalid value for hasMore (%t) at offset (%d) test (%+v)", hasMore, offset, test) + if resp.HasMore != moreRemaining { + t.Fatalf("invalid value for hasMore (%t) at offset (%d) test (%+v)", resp.HasMore, offset, test) } // make sure we stay within bounds @@ -1561,7 +1567,7 @@ func TestObjectEntries(t *testing.T) { continue } - got, hasMore, err = ss.ObjectEntries(ctx, api.DefaultBucketName, test.path, test.prefix, test.sortBy, test.sortDir, test.want[offset].Name, 0, 1) + resp, err = ss.ListObjects(ctx, api.DefaultBucketName, test.path, test.prefix, test.sortBy, test.sortDir, test.want[offset].Name, 1) if err != nil { t.Fatal(err) } @@ -1572,14 +1578,14 @@ func TestObjectEntries(t *testing.T) { } moreRemaining = len(test.want)-offset-2 > 0 - if hasMore != moreRemaining { - t.Fatalf("invalid value for hasMore (%t) at marker (%s) test (%+v)", hasMore, test.want[offset].Name, test) + if resp.HasMore != moreRemaining { + t.Fatalf("invalid value for hasMore (%t) at marker (%s) test (%+v)", resp.HasMore, test.want[offset].Name, test) } } } } -func TestObjectEntriesExplicitDir(t *testing.T) { +func TestListObjectsExplicitDir(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() @@ -1627,12 +1633,12 @@ func TestObjectEntriesExplicitDir(t *testing.T) { {"/dir/", "", "", "", []api.ObjectMetadata{{ETag: "d34db33f", Name: "/dir/file", Size: 1, Health: 0.5, MimeType: testMimeType}}}, } for _, test := range tests { - got, _, err := ss.ObjectEntries(ctx, api.DefaultBucketName, test.path, test.prefix, test.sortBy, test.sortDir, "", 0, -1) + got, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path, test.prefix, test.sortBy, test.sortDir, "", -1) if err != nil { t.Fatal(err) } - for i := range got { - got[i].ModTime = api.TimeRFC3339{} // ignore time for comparison + for i := range got.Objects { + got.Objects[i].ModTime = api.TimeRFC3339{} // ignore time for comparison } if !reflect.DeepEqual(got, test.want) { t.Fatalf("\nlist: %v\nprefix: %v\ngot: %v\nwant: %v", test.path, test.prefix, got, test.want) @@ -3320,15 +3326,15 @@ func TestBucketObjects(t *testing.T) { } // List the objects in the buckets. - if entries, _, err := ss.ObjectEntries(context.Background(), b1, "/foo/", "", "", "", "", 0, -1); err != nil { + if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", -1); err != nil { t.Fatal(err) - } else if len(entries) != 1 { + } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 1 entry", len(entries)) } else if entries[0].Size != 1 { t.Fatal("unexpected size", entries[0].Size) - } else if entries, _, err := ss.ObjectEntries(context.Background(), b2, "/foo/", "", "", "", "", 0, -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", -1); err != nil { t.Fatal(err) - } else if len(entries) != 1 { + } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 1 entry", len(entries)) } else if entries[0].Size != 2 { t.Fatal("unexpected size", entries[0].Size) @@ -3352,15 +3358,15 @@ func TestBucketObjects(t *testing.T) { // Rename object foo/bar in bucket 1 to foo/baz but not in bucket 2. if err := ss.RenameObjectBlocking(context.Background(), b1, "/foo/bar", "/foo/baz", false); err != nil { t.Fatal(err) - } else if entries, _, err := ss.ObjectEntries(context.Background(), b1, "/foo/", "", "", "", "", 0, -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", -1); err != nil { t.Fatal(err) - } else if len(entries) != 1 { + } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 2 entries", len(entries)) } else if entries[0].Name != "/foo/baz" { t.Fatal("unexpected name", entries[0].Name) - } else if entries, _, err := ss.ObjectEntries(context.Background(), b2, "/foo/", "", "", "", "", 0, -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", -1); err != nil { t.Fatal(err) - } else if len(entries) != 1 { + } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 2 entries", len(entries)) } else if entries[0].Name != "/foo/bar" { t.Fatal("unexpected name", entries[0].Name) @@ -3369,15 +3375,15 @@ func TestBucketObjects(t *testing.T) { // Rename foo/bar in bucket 2 using the batch rename. if err := ss.RenameObjectsBlocking(context.Background(), b2, "/foo/bar", "/foo/bam", false); err != nil { t.Fatal(err) - } else if entries, _, err := ss.ObjectEntries(context.Background(), b1, "/foo/", "", "", "", "", 0, -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", -1); err != nil { t.Fatal(err) - } else if len(entries) != 1 { + } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 2 entries", len(entries)) } else if entries[0].Name != "/foo/baz" { t.Fatal("unexpected name", entries[0].Name) - } else if entries, _, err := ss.ObjectEntries(context.Background(), b2, "/foo/", "", "", "", "", 0, -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", -1); err != nil { t.Fatal(err) - } else if len(entries) != 1 { + } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 2 entries", len(entries)) } else if entries[0].Name != "/foo/bam" { t.Fatal("unexpected name", entries[0].Name) @@ -3388,30 +3394,30 @@ func TestBucketObjects(t *testing.T) { t.Fatal(err) } else if err := ss.RemoveObjectBlocking(context.Background(), b1, "/foo/baz"); err != nil { t.Fatal(err) - } else if entries, _, err := ss.ObjectEntries(context.Background(), b1, "/foo/", "", "", "", "", 0, -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", -1); err != nil { t.Fatal(err) - } else if len(entries) > 0 { + } else if entries := resp.Objects; len(entries) > 0 { t.Fatal("expected 0 entries", len(entries)) - } else if entries, _, err := ss.ObjectEntries(context.Background(), b2, "/foo/", "", "", "", "", 0, -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", -1); err != nil { t.Fatal(err) - } else if len(entries) != 1 { + } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 1 entry", len(entries)) } // Delete all files in bucket 2. - if entries, _, err := ss.ObjectEntries(context.Background(), b2, "/", "", "", "", "", 0, -1); err != nil { + if resp, err := ss.ListObjects(context.Background(), b2, "/", "", "", "", "", -1); err != nil { t.Fatal(err) - } else if len(entries) != 2 { + } else if entries := resp.Objects; len(entries) != 2 { t.Fatal("expected 2 entries", len(entries)) } else if err := ss.RemoveObjectsBlocking(context.Background(), b2, "/"); err != nil { t.Fatal(err) - } else if entries, _, err := ss.ObjectEntries(context.Background(), b2, "/", "", "", "", "", 0, -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b2, "/", "", "", "", "", -1); err != nil { t.Fatal(err) - } else if len(entries) != 0 { + } else if entries := resp.Objects; len(entries) != 0 { t.Fatal("expected 0 entries", len(entries)) - } else if entries, _, err := ss.ObjectEntries(context.Background(), b1, "/", "", "", "", "", 0, -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b1, "/", "", "", "", "", -1); err != nil { t.Fatal(err) - } else if len(entries) != 1 { + } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 1 entry", len(entries)) } @@ -3460,9 +3466,9 @@ func TestCopyObject(t *testing.T) { // Copy it within the same bucket. if om, err := ss.CopyObject(ctx, "src", "src", "/foo", "/bar", "", nil); err != nil { t.Fatal(err) - } else if entries, _, err := ss.ObjectEntries(ctx, "src", "/", "", "", "", "", 0, -1); err != nil { + } else if resp, err := ss.ListObjects(ctx, "src", "/", "", "", "", "", -1); err != nil { t.Fatal(err) - } else if len(entries) != 2 { + } else if entries := resp.Objects; len(entries) != 2 { t.Fatal("expected 2 entries", len(entries)) } else if entries[0].Name != "/bar" || entries[1].Name != "/foo" { t.Fatal("unexpected names", entries[0].Name, entries[1].Name) @@ -3473,9 +3479,9 @@ func TestCopyObject(t *testing.T) { // Copy it cross buckets. if om, err := ss.CopyObject(ctx, "src", "dst", "/foo", "/bar", "", nil); err != nil { t.Fatal(err) - } else if entries, _, err := ss.ObjectEntries(ctx, "dst", "/", "", "", "", "", 0, -1); err != nil { + } else if resp, err := ss.ListObjects(ctx, "dst", "/", "", "", "", "", -1); err != nil { t.Fatal(err) - } else if len(entries) != 1 { + } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 1 entry", len(entries)) } else if entries[0].Name != "/bar" { t.Fatal("unexpected names", entries[0].Name, entries[1].Name) @@ -3559,7 +3565,7 @@ func TestMarkSlabUploadedAfterRenew(t *testing.T) { } } -func TestListObjects(t *testing.T) { +func TestListObjectsNoPrefix(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() objects := []struct { @@ -3633,7 +3639,7 @@ func TestListObjects(t *testing.T) { } } for _, test := range tests { - res, err := ss.ListObjects(ctx, api.DefaultBucketName, test.prefix, test.sortBy, test.sortDir, "", -1) + res, err := ss.ListObjects(ctx, api.DefaultBucketName, test.prefix, "", test.sortBy, test.sortDir, "", -1) if err != nil { t.Fatal(err) } @@ -3648,7 +3654,7 @@ func TestListObjects(t *testing.T) { if len(res.Objects) > 0 { marker := "" for offset := 0; offset < len(test.want); offset++ { - res, err := ss.ListObjects(ctx, api.DefaultBucketName, test.prefix, test.sortBy, test.sortDir, marker, 1) + res, err := ss.ListObjects(ctx, api.DefaultBucketName, test.prefix, "", test.sortBy, test.sortDir, marker, 1) if err != nil { t.Fatal(err) } diff --git a/stores/sql/database.go b/stores/sql/database.go index 3e1917502..e314d848f 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -218,7 +218,7 @@ type ( Object(ctx context.Context, bucket, key string) (api.Object, error) // ObjectEntries queries the database for objects in a given dir. - ObjectEntries(ctx context.Context, bucket, key, prefix, sortBy, sortDir, marker string, offset, limit int) ([]api.ObjectMetadata, bool, error) + ObjectEntries(ctx context.Context, bucket, prefix, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) // ObjectMetadata returns an object's metadata. ObjectMetadata(ctx context.Context, bucket, key string) (api.Object, error) diff --git a/stores/sql/main.go b/stores/sql/main.go index 655859bfc..d7241d7f4 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -1353,17 +1353,15 @@ func dirID(ctx context.Context, tx sql.Tx, dirPath string) (int64, error) { return id, nil } -func ObjectEntries(ctx context.Context, tx Tx, bucket, path, prefix, sortBy, sortDir, marker string, offset, limit int) ([]api.ObjectMetadata, bool, error) { - // sanity check we are passing a directory - if !strings.HasSuffix(path, "/") { - panic("path must end in /") +func ObjectEntries(ctx context.Context, tx Tx, bucket, prefix, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { + // split prefix into path and object prefix + path := "/" // root of bucket + if idx := strings.LastIndex(prefix, "/"); idx != -1 { + path = prefix[:idx+1] + prefix = prefix[idx+1:] } - - // sanity check we are passing sane paging parameters - usingMarker := marker != "" - usingOffset := offset > 0 - if usingMarker && usingOffset { - return nil, false, errors.New("fetching entries using a marker and an offset is not supported at the same time") + if !strings.HasSuffix(path, "/") { + panic("path must end with /") } // fetch one more to see if there are more entries @@ -1384,9 +1382,9 @@ func ObjectEntries(ctx context.Context, tx Tx, bucket, path, prefix, sortBy, sor // fetch directory id dirID, err := dirID(ctx, tx, path) if errors.Is(err, dsql.ErrNoRows) { - return []api.ObjectMetadata{}, false, nil + return api.ObjectsListResponse{}, nil } else if err != nil { - return nil, false, fmt.Errorf("failed to fetch directory id: %w", err) + return api.ObjectsListResponse{}, fmt.Errorf("failed to fetch directory id: %w", err) } args := []any{ @@ -1443,7 +1441,7 @@ func ObjectEntries(ctx context.Context, tx Tx, bucket, path, prefix, sortBy, sor } }) if err != nil { - return nil, false, fmt.Errorf("failed to query marker: %w", err) + return api.ObjectsListResponse{}, fmt.Errorf("failed to query marker: %w", err) } else if len(markerExprs) > 0 { whereExpr = "WHERE " + strings.Join(markerExprs, " AND ") } @@ -1452,11 +1450,11 @@ func ObjectEntries(ctx context.Context, tx Tx, bucket, path, prefix, sortBy, sor // apply sorting orderByExprs, err := orderByObject(sortBy, sortDir) if err != nil { - return nil, false, fmt.Errorf("failed to apply sorting: %w", err) + return api.ObjectsListResponse{}, fmt.Errorf("failed to apply sorting: %w", err) } // apply offset and limit - args = append(args, limit, offset) + args = append(args, limit) // objectsQuery consists of 2 parts // 1. fetch all objects in requested directory @@ -1481,7 +1479,7 @@ func ObjectEntries(ctx context.Context, tx Tx, bucket, path, prefix, sortBy, sor ) AS o %s ORDER BY %s - LIMIT ? OFFSET ? + LIMIT ? `, tx.SelectObjectMetadataExpr(), prefixExpr, @@ -1491,7 +1489,7 @@ func ObjectEntries(ctx context.Context, tx Tx, bucket, path, prefix, sortBy, sor strings.Join(orderByExprs, ", "), ), args...) if err != nil { - return nil, false, fmt.Errorf("failed to fetch objects: %w", err) + return api.ObjectsListResponse{}, fmt.Errorf("failed to fetch objects: %w", err) } defer rows.Close() @@ -1499,19 +1497,27 @@ func ObjectEntries(ctx context.Context, tx Tx, bucket, path, prefix, sortBy, sor for rows.Next() { om, err := tx.ScanObjectMetadata(rows) if err != nil { - return nil, false, fmt.Errorf("failed to scan object metadata: %w", err) + return api.ObjectsListResponse{}, fmt.Errorf("failed to scan object metadata: %w", err) } objects = append(objects, om) } // trim last element if we have more var hasMore bool + var nextMarker string if len(objects) == limit { - hasMore = true objects = objects[:len(objects)-1] + if len(objects) > 0 { + hasMore = true + nextMarker = objects[len(objects)-1].Name + } } - return objects, hasMore, nil + return api.ObjectsListResponse{ + HasMore: hasMore, + NextMarker: nextMarker, + Objects: objects, + }, nil } func ObjectMetadata(ctx context.Context, tx Tx, bucket, key string) (api.Object, error) { diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index de8b97bfa..e8cf69780 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -530,8 +530,8 @@ func (tx *MainDatabaseTx) Object(ctx context.Context, bucket, key string) (api.O return ssql.Object(ctx, tx, bucket, key) } -func (tx *MainDatabaseTx) ObjectEntries(ctx context.Context, bucket, path, prefix, sortBy, sortDir, marker string, offset, limit int) ([]api.ObjectMetadata, bool, error) { - return ssql.ObjectEntries(ctx, tx, bucket, path, prefix, sortBy, sortDir, marker, offset, limit) +func (tx *MainDatabaseTx) ObjectEntries(ctx context.Context, bucket, prefix, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { + return ssql.ObjectEntries(ctx, tx, bucket, prefix, sortBy, sortDir, marker, limit) } func (tx *MainDatabaseTx) ObjectMetadata(ctx context.Context, bucket, path string) (api.Object, error) { diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index 739fb47f4..674bf8237 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -527,8 +527,8 @@ func (tx *MainDatabaseTx) Object(ctx context.Context, bucket, key string) (api.O return ssql.Object(ctx, tx, bucket, key) } -func (tx *MainDatabaseTx) ObjectEntries(ctx context.Context, bucket, path, prefix, sortBy, sortDir, marker string, offset, limit int) ([]api.ObjectMetadata, bool, error) { - return ssql.ObjectEntries(ctx, tx, bucket, path, prefix, sortBy, sortDir, marker, offset, limit) +func (tx *MainDatabaseTx) ObjectEntries(ctx context.Context, bucket, prefix, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { + return ssql.ObjectEntries(ctx, tx, bucket, prefix, sortBy, sortDir, marker, limit) } func (tx *MainDatabaseTx) ObjectMetadata(ctx context.Context, bucket, path string) (api.Object, error) { diff --git a/worker/alerts.go b/worker/alerts.go index 5ab5092b7..664698fb6 100644 --- a/worker/alerts.go +++ b/worker/alerts.go @@ -13,7 +13,7 @@ func randomAlertID() types.Hash256 { return frand.Entropy256() } -func newDownloadFailedAlert(bucket, path, prefix, marker string, offset, length, contracts int64, err error) alerts.Alert { +func newDownloadFailedAlert(bucket, path string, offset, length, contracts int64, err error) alerts.Alert { return alerts.Alert{ ID: randomAlertID(), Severity: alerts.SeverityError, @@ -21,8 +21,6 @@ func newDownloadFailedAlert(bucket, path, prefix, marker string, offset, length, Data: map[string]any{ "bucket": bucket, "path": path, - "prefix": prefix, - "marker": marker, "offset": offset, "length": length, "contracts": contracts, diff --git a/worker/bench_test.go b/worker/bench_test.go index cc0034415..60a238dfc 100644 --- a/worker/bench_test.go +++ b/worker/bench_test.go @@ -42,10 +42,10 @@ func BenchmarkDownloaderSingleObject(b *testing.B) { b.Fatal(err) } - b.SetBytes(o.Object.Size) + b.SetBytes(o.Size) b.ResetTimer() for i := 0; i < b.N; i++ { - err = w.downloadManager.DownloadObject(context.Background(), io.Discard, *o.Object.Object, 0, uint64(o.Object.Size), w.Contracts()) + err = w.downloadManager.DownloadObject(context.Background(), io.Discard, *o.Object, 0, uint64(o.Size), w.Contracts()) if err != nil { b.Fatal(err) } diff --git a/worker/client/client.go b/worker/client/client.go index 7df0a6052..a65e7136e 100644 --- a/worker/client/client.go +++ b/worker/client/client.go @@ -2,7 +2,6 @@ package client import ( "context" - "encoding/json" "errors" "fmt" "io" @@ -178,21 +177,6 @@ func (c *Client) MigrateSlab(ctx context.Context, slab object.Slab, set string) return } -// ObjectEntries returns the entries at the given path, which must end in /. -func (c *Client) ObjectEntries(ctx context.Context, bucket, path string, opts api.GetObjectOptions) (entries []api.ObjectMetadata, err error) { - path = api.ObjectPathEscape(path) - body, _, err := c.object(ctx, bucket, path, api.DownloadObjectOptions{ - GetObjectOptions: opts, - }) - if err != nil { - return nil, err - } - defer io.Copy(io.Discard, body) - defer body.Close() - err = json.NewDecoder(body).Decode(&entries) - return -} - // State returns the current state of the worker. func (c *Client) State() (state api.WorkerStateResponse, err error) { err = c.c.GET("/state", &state) diff --git a/worker/mocks_test.go b/worker/mocks_test.go index 0b0d53351..c861d6a51 100644 --- a/worker/mocks_test.go +++ b/worker/mocks_test.go @@ -429,18 +429,18 @@ func (os *objectStoreMock) AddPartialSlab(ctx context.Context, data []byte, minS return []object.SlabSlice{ss}, os.totalSlabBufferSize() > os.slabBufferMaxSizeSoft, nil } -func (os *objectStoreMock) Object(ctx context.Context, bucket, path string, opts api.GetObjectOptions) (api.ObjectsResponse, error) { +func (os *objectStoreMock) Object(ctx context.Context, bucket, path string, opts api.GetObjectOptions) (api.Object, error) { os.mu.Lock() defer os.mu.Unlock() // check if the bucket exists if _, exists := os.objects[bucket]; !exists { - return api.ObjectsResponse{}, api.ErrBucketNotFound + return api.Object{}, api.ErrBucketNotFound } // check if the object exists if _, exists := os.objects[bucket][path]; !exists { - return api.ObjectsResponse{}, api.ErrObjectNotFound + return api.Object{}, api.ErrObjectNotFound } // clone to ensure the store isn't unwillingly modified @@ -451,10 +451,10 @@ func (os *objectStoreMock) Object(ctx context.Context, bucket, path string, opts panic(err) } - return api.ObjectsResponse{Object: &api.Object{ + return api.Object{ ObjectMetadata: api.ObjectMetadata{Name: path, Size: o.TotalSize()}, Object: &o, - }}, nil + }, nil } func (os *objectStoreMock) FetchPartialSlab(ctx context.Context, key object.EncryptionKey, offset, length uint32) ([]byte, error) { diff --git a/worker/s3/backend.go b/worker/s3/backend.go index a8dd1cb22..88a880828 100644 --- a/worker/s3/backend.go +++ b/worker/s3/backend.go @@ -82,9 +82,6 @@ func (s *s3) ListBucket(ctx context.Context, bucketName string, prefix *gofakes3 return nil, gofakes3.ErrorMessage(gofakes3.ErrNotImplemented, "delimiter must be '/' but was "+prefix.Delimiter) } - // Workaround for empty prefix - prefix.HasPrefix = prefix.Prefix != "" - // Adjust MaxKeys if page.MaxKeys == 0 { page.MaxKeys = maxKeysDefault @@ -95,59 +92,23 @@ func (s *s3) ListBucket(ctx context.Context, bucketName string, prefix *gofakes3 page.Marker = "/" + page.Marker } - var objects []api.ObjectMetadata - var err error - response := gofakes3.NewObjectList() - if prefix.HasDelimiter { - // Handle request with delimiter. - opts := api.GetObjectOptions{} - if page.HasMarker { - opts.Marker = page.Marker - opts.Limit = int(page.MaxKeys) - } - var path string // root of bucket - adjustedPrefix := prefix.Prefix - if idx := strings.LastIndex(adjustedPrefix, prefix.Delimiter); idx != -1 { - path = adjustedPrefix[:idx+1] - adjustedPrefix = adjustedPrefix[idx+1:] - } - if adjustedPrefix != "" { - opts.Prefix = adjustedPrefix - } - var res api.ObjectsResponse - res, err = s.b.Object(ctx, bucketName, path, opts) - if utils.IsErr(err, api.ErrBucketNotFound) { - return nil, gofakes3.BucketNotFound(bucketName) - } else if err != nil { - return nil, gofakes3.ErrorMessage(gofakes3.ErrInternal, err.Error()) - } - objects = res.Entries - response.IsTruncated = res.HasMore - if response.IsTruncated { - response.NextMarker = objects[len(objects)-1].Name - } - } else { - // Handle request without delimiter. - opts := api.ListObjectOptions{ - Limit: int(page.MaxKeys), - Marker: page.Marker, - Prefix: "/" + prefix.Prefix, - } - - var res api.ObjectsListResponse - res, err = s.b.ListObjects(ctx, bucketName, opts) - if utils.IsErr(err, api.ErrBucketNotFound) { - return nil, gofakes3.BucketNotFound(bucketName) - } else if err != nil { - return nil, gofakes3.ErrorMessage(gofakes3.ErrInternal, err.Error()) - } - objects = res.Objects - response.IsTruncated = res.HasMore - response.NextMarker = res.NextMarker - } - if err != nil { + resp, err := s.b.Objects(ctx, bucketName, api.ListObjectOptions{ + Delimiter: prefix.Delimiter, + Limit: int(page.MaxKeys), + Marker: page.Marker, + Prefix: prefix.Prefix, + }) + if utils.IsErr(err, api.ErrBucketNotFound) { + return nil, gofakes3.BucketNotFound(bucketName) + } else if err != nil { return nil, gofakes3.ErrorMessage(gofakes3.ErrInternal, err.Error()) } + objects := resp.Objects + + // prepare response + response := gofakes3.NewObjectList() + response.IsTruncated = resp.HasMore + response.NextMarker = resp.NextMarker // Remove the leading slash from the marker since we also do that for the // name of each object @@ -306,9 +267,7 @@ func (s *s3) GetObject(ctx context.Context, bucketName, objectName string, range // HeadObject should return a NotFound() error if the object does not // exist. func (s *s3) HeadObject(ctx context.Context, bucketName, objectName string) (*gofakes3.Object, error) { - res, err := s.w.HeadObject(ctx, bucketName, objectName, api.HeadObjectOptions{ - IgnoreDelim: true, - }) + res, err := s.w.HeadObject(ctx, bucketName, objectName, api.HeadObjectOptions{}) if utils.IsErr(err, api.ErrObjectNotFound) { return nil, gofakes3.KeyNotFound(objectName) } else if err != nil { diff --git a/worker/s3/s3.go b/worker/s3/s3.go index d5cbb71a3..77986b54f 100644 --- a/worker/s3/s3.go +++ b/worker/s3/s3.go @@ -33,8 +33,7 @@ type Bus interface { AddObject(ctx context.Context, bucket, path, contractSet string, o object.Object, opts api.AddObjectOptions) (err error) CopyObject(ctx context.Context, srcBucket, dstBucket, srcPath, dstPath string, opts api.CopyObjectOptions) (om api.ObjectMetadata, err error) DeleteObject(ctx context.Context, bucket, path string, opts api.DeleteObjectOptions) (err error) - ListObjects(ctx context.Context, bucket string, opts api.ListObjectOptions) (resp api.ObjectsListResponse, err error) - Object(ctx context.Context, bucket, path string, opts api.GetObjectOptions) (res api.ObjectsResponse, err error) + Objects(ctx context.Context, bucket string, opts api.ListObjectOptions) (resp api.ObjectsListResponse, err error) AbortMultipartUpload(ctx context.Context, bucket, path string, uploadID string) (err error) CompleteMultipartUpload(ctx context.Context, bucket, path, uploadID string, parts []api.MultipartCompletedPart, opts api.CompleteMultipartOptions) (_ api.MultipartCompleteResponse, err error) diff --git a/worker/upload_test.go b/worker/upload_test.go index 5bad0941a..c67044101 100644 --- a/worker/upload_test.go +++ b/worker/upload_test.go @@ -54,13 +54,13 @@ func TestUpload(t *testing.T) { // build used hosts used := make(map[types.PublicKey]struct{}) - for _, shard := range o.Object.Object.Slabs[0].Shards { + for _, shard := range o.Object.Slabs[0].Shards { used[shard.LatestHost] = struct{}{} } // download the data and assert it matches var buf bytes.Buffer - err = dl.DownloadObject(context.Background(), &buf, *o.Object.Object, 0, uint64(o.Object.Size), w.Contracts()) + err = dl.DownloadObject(context.Background(), &buf, *o.Object, 0, uint64(o.Size), w.Contracts()) if err != nil { t.Fatal(err) } else if !bytes.Equal(data, buf.Bytes()) { @@ -86,7 +86,7 @@ func TestUpload(t *testing.T) { // download the data again and assert it matches buf.Reset() - err = dl.DownloadObject(context.Background(), &buf, *o.Object.Object, 0, uint64(o.Object.Size), filtered) + err = dl.DownloadObject(context.Background(), &buf, *o.Object, 0, uint64(o.Size), filtered) if err != nil { t.Fatal(err) } else if !bytes.Equal(data, buf.Bytes()) { @@ -103,7 +103,7 @@ func TestUpload(t *testing.T) { // download the data again and assert it fails buf.Reset() - err = dl.DownloadObject(context.Background(), &buf, *o.Object.Object, 0, uint64(o.Object.Size), filtered) + err = dl.DownloadObject(context.Background(), &buf, *o.Object, 0, uint64(o.Size), filtered) if !errors.Is(err, errDownloadNotEnoughHosts) { t.Fatal("expected not enough hosts error", err) } @@ -165,7 +165,7 @@ func TestUploadPackedSlab(t *testing.T) { // download the data and assert it matches var buf bytes.Buffer - err = dl.DownloadObject(context.Background(), &buf, *o.Object.Object, 0, uint64(o.Object.Size), w.Contracts()) + err = dl.DownloadObject(context.Background(), &buf, *o.Object, 0, uint64(o.Size), w.Contracts()) if err != nil { t.Fatal(err) } else if !bytes.Equal(data, buf.Bytes()) { @@ -201,7 +201,7 @@ func TestUploadPackedSlab(t *testing.T) { // download the data again and assert it matches buf.Reset() - err = dl.DownloadObject(context.Background(), &buf, *o.Object.Object, 0, uint64(o.Object.Size), w.Contracts()) + err = dl.DownloadObject(context.Background(), &buf, *o.Object, 0, uint64(o.Size), w.Contracts()) if err != nil { t.Fatal(err) } else if !bytes.Equal(data, buf.Bytes()) { @@ -294,10 +294,10 @@ func TestMigrateLostSector(t *testing.T) { o, err := os.Object(context.Background(), testBucket, t.Name(), api.GetObjectOptions{}) if err != nil { t.Fatal(err) - } else if len(o.Object.Object.Slabs) != 1 { + } else if len(o.Object.Slabs) != 1 { t.Fatal("expected 1 slab") } - slab := o.Object.Object.Slabs[0] + slab := o.Object.Slabs[0] // build usedHosts hosts usedHosts := make(map[types.PublicKey]struct{}) @@ -320,7 +320,7 @@ func TestMigrateLostSector(t *testing.T) { } // encrypt the shards - o.Object.Object.Slabs[0].Slab.Encrypt(shards) + o.Object.Slabs[0].Slab.Encrypt(shards) // filter it down to the shards we need to migrate shards = shards[:1] @@ -336,7 +336,7 @@ func TestMigrateLostSector(t *testing.T) { // migrate the shard away from the bad host mem := mm.AcquireMemory(context.Background(), rhpv2.SectorSize) - err = ul.UploadShards(context.Background(), o.Object.Object.Slabs[0].Slab, []int{0}, shards, testContractSet, contracts, 0, lockingPriorityUpload, mem) + err = ul.UploadShards(context.Background(), o.Object.Slabs[0].Slab, []int{0}, shards, testContractSet, contracts, 0, lockingPriorityUpload, mem) if err != nil { t.Fatal(err) } @@ -345,10 +345,10 @@ func TestMigrateLostSector(t *testing.T) { o, err = os.Object(context.Background(), testBucket, t.Name(), api.GetObjectOptions{}) if err != nil { t.Fatal(err) - } else if len(o.Object.Object.Slabs) != 1 { + } else if len(o.Object.Slabs) != 1 { t.Fatal("expected 1 slab") } - slab = o.Object.Object.Slabs[0] + slab = o.Object.Slabs[0] // assert the bad shard is on a good host now shard := slab.Shards[0] @@ -395,10 +395,10 @@ func TestUploadShards(t *testing.T) { o, err := os.Object(context.Background(), testBucket, t.Name(), api.GetObjectOptions{}) if err != nil { t.Fatal(err) - } else if len(o.Object.Object.Slabs) != 1 { + } else if len(o.Object.Slabs) != 1 { t.Fatal("expected 1 slab") } - slab := o.Object.Object.Slabs[0] + slab := o.Object.Slabs[0] // build usedHosts hosts usedHosts := make(map[types.PublicKey]struct{}) @@ -423,7 +423,7 @@ func TestUploadShards(t *testing.T) { } // encrypt the shards - o.Object.Object.Slabs[0].Slab.Encrypt(shards) + o.Object.Slabs[0].Slab.Encrypt(shards) // filter it down to the shards we need to migrate for i, si := range badIndices { @@ -443,7 +443,7 @@ func TestUploadShards(t *testing.T) { // migrate those shards away from bad hosts mem := mm.AcquireMemory(context.Background(), uint64(len(badIndices))*rhpv2.SectorSize) - err = ul.UploadShards(context.Background(), o.Object.Object.Slabs[0].Slab, badIndices, shards, testContractSet, contracts, 0, lockingPriorityUpload, mem) + err = ul.UploadShards(context.Background(), o.Object.Slabs[0].Slab, badIndices, shards, testContractSet, contracts, 0, lockingPriorityUpload, mem) if err != nil { t.Fatal(err) } @@ -452,10 +452,10 @@ func TestUploadShards(t *testing.T) { o, err = os.Object(context.Background(), testBucket, t.Name(), api.GetObjectOptions{}) if err != nil { t.Fatal(err) - } else if len(o.Object.Object.Slabs) != 1 { + } else if len(o.Object.Slabs) != 1 { t.Fatal("expected 1 slab") } - slab = o.Object.Object.Slabs[0] + slab = o.Object.Slabs[0] // assert none of the shards are on bad hosts for i, shard := range slab.Shards { @@ -479,7 +479,7 @@ func TestUploadShards(t *testing.T) { // download the data and assert it matches var buf bytes.Buffer - err = dl.DownloadObject(context.Background(), &buf, *o.Object.Object, 0, uint64(o.Object.Size), contracts) + err = dl.DownloadObject(context.Background(), &buf, *o.Object, 0, uint64(o.Size), contracts) if err != nil { t.Fatal(err) } else if !bytes.Equal(data, buf.Bytes()) { @@ -621,7 +621,7 @@ func TestUploadRegression(t *testing.T) { // download data for good measure var buf bytes.Buffer - err = dl.DownloadObject(context.Background(), &buf, *o.Object.Object, 0, uint64(o.Object.Size), w.Contracts()) + err = dl.DownloadObject(context.Background(), &buf, *o.Object, 0, uint64(o.Size), w.Contracts()) if err != nil { t.Fatal(err) } else if !bytes.Equal(data, buf.Bytes()) { diff --git a/worker/worker.go b/worker/worker.go index 7502f646b..8d1166465 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -34,7 +34,6 @@ import ( "go.sia.tech/renterd/object" "go.sia.tech/renterd/webhooks" "go.sia.tech/renterd/worker/client" - "go.sia.tech/renterd/worker/s3" "go.uber.org/zap" "golang.org/x/crypto/blake2b" ) @@ -70,8 +69,6 @@ func NewClient(address, password string) *Client { type ( Bus interface { - s3.Bus - alerts.Alerter gouging.ConsensusState webhooks.Broadcaster @@ -122,7 +119,7 @@ type ( // NOTE: used by worker Bucket(_ context.Context, bucket string) (api.Bucket, error) - Object(ctx context.Context, bucket, path string, opts api.GetObjectOptions) (api.ObjectsResponse, error) + Object(ctx context.Context, bucket, path string, opts api.GetObjectOptions) (api.Object, error) DeleteObject(ctx context.Context, bucket, path string, opts api.DeleteObjectOptions) error MultipartUpload(ctx context.Context, uploadID string) (resp api.MultipartUpload, err error) PackedSlabsForUpload(ctx context.Context, lockingDuration time.Duration, minShards, totalShards uint8, set string, limit int) ([]api.PackedSlab, error) @@ -764,8 +761,7 @@ func (w *Worker) objectsHandlerHEAD(jc jape.Context) { // fetch object metadata hor, err := w.HeadObject(jc.Request.Context(), bucket, path, api.HeadObjectOptions{ - IgnoreDelim: ignoreDelim, - Range: &dr, + Range: &dr, }) if utils.IsErr(err, api.ErrObjectNotFound) { jc.Error(err, http.StatusNotFound) @@ -820,27 +816,9 @@ func (w *Worker) objectsHandlerGET(jc jape.Context) { return } - opts := api.GetObjectOptions{ - Prefix: prefix, - Marker: marker, - Offset: off, - Limit: limit, - IgnoreDelim: ignoreDelim, - SortBy: sortBy, - SortDir: sortDir, - } - path := jc.PathParam("path") - if path == "" || strings.HasSuffix(path, "/") { - // list directory - res, err := w.bus.Object(ctx, bucket, path, opts) - if utils.IsErr(err, api.ErrObjectNotFound) { - jc.Error(err, http.StatusNotFound) - return - } else if jc.Check("couldn't get object or entries", err) != nil { - return - } - jc.Encode(res.Entries) + if path == "" { + jc.Error(errors.New("no path provided"), http.StatusBadRequest) return } @@ -857,8 +835,7 @@ func (w *Worker) objectsHandlerGET(jc jape.Context) { } gor, err := w.GetObject(ctx, bucket, path, api.DownloadObjectOptions{ - GetObjectOptions: opts, - Range: &dr, + Range: &dr, }) if utils.IsErr(err, api.ErrObjectNotFound) { jc.Error(err, http.StatusNotFound) @@ -1387,16 +1364,15 @@ func isErrHostUnreachable(err error) bool { utils.IsErr(err, errors.New("cannot assign requested address")) } -func (w *Worker) headObject(ctx context.Context, bucket, path string, onlyMetadata bool, opts api.HeadObjectOptions) (*api.HeadObjectResponse, api.ObjectsResponse, error) { +func (w *Worker) headObject(ctx context.Context, bucket, path string, onlyMetadata bool, opts api.HeadObjectOptions) (*api.HeadObjectResponse, api.Object, error) { // fetch object res, err := w.bus.Object(ctx, bucket, path, api.GetObjectOptions{ - IgnoreDelim: opts.IgnoreDelim, OnlyMetadata: onlyMetadata, }) if err != nil { - return nil, api.ObjectsResponse{}, fmt.Errorf("couldn't fetch object: %w", err) + return nil, api.Object{}, fmt.Errorf("couldn't fetch object: %w", err) } else if res.Object == nil { - return nil, api.ObjectsResponse{}, errors.New("object is a directory") + return nil, api.Object{}, errors.New("object is a directory") } // adjust length @@ -1404,21 +1380,21 @@ func (w *Worker) headObject(ctx context.Context, bucket, path string, onlyMetada opts.Range = &api.DownloadRange{Offset: 0, Length: -1} } if opts.Range.Length == -1 { - opts.Range.Length = res.Object.Size - opts.Range.Offset + opts.Range.Length = res.Size - opts.Range.Offset } // check size of object against range - if opts.Range.Offset+opts.Range.Length > res.Object.Size { - return nil, api.ObjectsResponse{}, http_range.ErrInvalid + if opts.Range.Offset+opts.Range.Length > res.Size { + return nil, api.Object{}, http_range.ErrInvalid } return &api.HeadObjectResponse{ - ContentType: res.Object.MimeType, - Etag: res.Object.ETag, - LastModified: res.Object.ModTime, - Range: opts.Range.ContentRange(res.Object.Size), - Size: res.Object.Size, - Metadata: res.Object.Metadata, + ContentType: res.MimeType, + Etag: res.ETag, + LastModified: res.ModTime, + Range: opts.Range.ContentRange(res.Size), + Size: res.Size, + Metadata: res.Metadata, }, res, nil } @@ -1459,13 +1435,12 @@ func (w *Worker) FundAccount(ctx context.Context, fcid types.FileContractID, hk func (w *Worker) GetObject(ctx context.Context, bucket, path string, opts api.DownloadObjectOptions) (*api.GetObjectResponse, error) { // head object hor, res, err := w.headObject(ctx, bucket, path, false, api.HeadObjectOptions{ - IgnoreDelim: opts.IgnoreDelim, - Range: opts.Range, + Range: opts.Range, }) if err != nil { return nil, fmt.Errorf("couldn't fetch object: %w", err) } - obj := *res.Object.Object + obj := *res.Object // adjust range if opts.Range == nil { @@ -1502,7 +1477,7 @@ func (w *Worker) GetObject(ctx context.Context, bucket, path string, opts api.Do if !errors.Is(err, ErrShuttingDown) && !errors.Is(err, errDownloadCancelled) && !errors.Is(err, io.ErrClosedPipe) { - w.registerAlert(newDownloadFailedAlert(bucket, path, opts.Prefix, opts.Marker, offset, length, int64(len(contracts)), err)) + w.registerAlert(newDownloadFailedAlert(bucket, path, offset, length, int64(len(contracts)), err)) } return fmt.Errorf("failed to download object: %w", err) } From fe1564f58254f2421f1d7c2384d1ae35ff8c3654 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 28 Aug 2024 18:03:52 +0200 Subject: [PATCH 012/708] bus: fix jape --- bus/bus.go | 12 ++++++------ bus/routes.go | 10 +++++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/bus/bus.go b/bus/bus.go index 39cd4f409..9249629c0 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -439,12 +439,12 @@ func (b *Bus) Handler() http.Handler { "POST /multipart/listuploads": b.multipartHandlerListUploadsPOST, "POST /multipart/listparts": b.multipartHandlerListPartsPOST, - "GET /object/*key": b.objectHandlerGET, - "GET /objects/*prefix": b.objectsHandlerPOST, - "PUT /objects/*path": b.objectsHandlerPUT, - "DELETE /objects/*path": b.objectsHandlerDELETE, - "POST /objects/copy": b.objectsCopyHandlerPOST, - "POST /objects/rename": b.objectsRenameHandlerPOST, + "GET /object/*key": b.objectHandlerGET, + "GET /objects": b.objectsHandlerGET, + "PUT /objects/*key": b.objectsHandlerPUT, + "DELETE /objects/*key": b.objectsHandlerDELETE, + "POST /objects/copy": b.objectsCopyHandlerPOST, + "POST /objects/rename": b.objectsRenameHandlerPOST, "GET /params/gouging": b.paramsHandlerGougingGET, "GET /params/upload": b.paramsHandlerUploadGET, diff --git a/bus/routes.go b/bus/routes.go index 799914492..13770da8c 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1060,10 +1060,10 @@ func (b *Bus) objectHandlerGET(jc jape.Context) { } else if jc.Check("couldn't load object", err) != nil { return } - jc.Encode(api.ObjectsResponse{Object: &o}) + jc.Encode(o) } -func (b *Bus) objectsHandlerPOST(jc jape.Context) { +func (b *Bus) objectsHandlerGET(jc jape.Context) { var limit int var marker, delim, prefix, sortBy, sortDir string bucket := api.DefaultBucketName @@ -1106,7 +1106,7 @@ func (b *Bus) objectsHandlerPUT(jc jape.Context) { } else if aor.Bucket == "" { aor.Bucket = api.DefaultBucketName } - jc.Check("couldn't store object", b.ms.UpdateObject(jc.Request.Context(), aor.Bucket, jc.PathParam("path"), aor.ContractSet, aor.ETag, aor.MimeType, aor.Metadata, aor.Object)) + jc.Check("couldn't store object", b.ms.UpdateObject(jc.Request.Context(), aor.Bucket, jc.PathParam("key"), aor.ContractSet, aor.ETag, aor.MimeType, aor.Metadata, aor.Object)) } func (b *Bus) objectsCopyHandlerPOST(jc jape.Context) { @@ -1165,9 +1165,9 @@ func (b *Bus) objectsHandlerDELETE(jc jape.Context) { } var err error if batch { - err = b.ms.RemoveObjects(jc.Request.Context(), bucket, jc.PathParam("path")) + err = b.ms.RemoveObjects(jc.Request.Context(), bucket, jc.PathParam("key")) } else { - err = b.ms.RemoveObject(jc.Request.Context(), bucket, jc.PathParam("path")) + err = b.ms.RemoveObject(jc.Request.Context(), bucket, jc.PathParam("key")) } if errors.Is(err, api.ErrObjectNotFound) { jc.Error(err, http.StatusNotFound) From f43d5d7b86b90421a81ccc9ce19602d157d0ee3d Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 29 Aug 2024 09:34:12 +0200 Subject: [PATCH 013/708] stores: add compat code --- .github/ISSUE_TEMPLATE/bug_report.yml | 8 +- README.md | 40 +------ api/setting.go | 7 ++ bus/bus.go | 120 +++++++++++++------- bus/client/settings.go | 16 +-- bus/routes.go | 151 ++++++++++++-------------- internal/bus/pinmanager.go | 35 ++---- internal/bus/pinmanager_test.go | 72 ++++++------ stores/settingsdb.go | 115 +++++++++++++++++++- stores/settingsdb_test.go | 33 ------ stores/sql/database.go | 3 + stores/sql/main.go | 7 ++ stores/sql/mysql/main.go | 4 + stores/sql/sqlite/main.go | 4 + 14 files changed, 339 insertions(+), 276 deletions(-) delete mode 100644 stores/settingsdb_test.go diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 04504c086..5219b07cf 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -66,10 +66,10 @@ body: description: | The configuration of your bus ```bash - curl -u ":[YOUR_PASSWORD]" http://localhost:9980/api/bus/setting/contractset - curl -u ":[YOUR_PASSWORD]" http://localhost:9980/api/bus/setting/gouging - curl -u ":[YOUR_PASSWORD]" http://localhost:9980/api/bus/setting/redundancy - curl -u ":[YOUR_PASSWORD]" http://localhost:9980/api/bus/setting/uploadpacking + curl -u ":[YOUR_PASSWORD]" http://localhost:9980/api/bus/settings/contractset + curl -u ":[YOUR_PASSWORD]" http://localhost:9980/api/bus/settings/gouging + curl -u ":[YOUR_PASSWORD]" http://localhost:9980/api/bus/settings/redundancy + curl -u ":[YOUR_PASSWORD]" http://localhost:9980/api/bus/settings/uploadpacking ``` placeholder: Paste the output of the above commands here validations: diff --git a/README.md b/README.md index c20749935..7508620c5 100644 --- a/README.md +++ b/README.md @@ -558,49 +558,13 @@ formed. } ``` -### Contract Set - -The contract set settings on the bus allow specifying a default contract set. -This contract set will be returned by the `bus` through the upload parameters, -and decides what contracts data is upload or migrated to by default. This -setting does not have a default value, it can be updated using the settings API: - -- `GET /api/bus/setting/contractset` -- `PUT /api/bus/setting/contractset` - -```json -{ - "default": "autopilot" -} -``` - -In most cases the default set should match the set from your autopilot -configuration in order for migrations to work properly. The contract set can be -overridden by passing it as a query string parameter to the worker's upload and -migrate endpoints. - -- `PUT /api/worker/objects/foo?contractset=foo` - -### Redundancy - -The default redundancy on mainnet is 30-10, on testnet it is 6-2. The redundancy -can be updated using the settings API: - -- `GET /api/bus/setting/redundancy` -- `PUT /api/bus/setting/redundancy` - -The redundancy can also be passed through query string parameters on the upload -endpoint in the worker API: - -- `PUT /api/worker/objects/foo?minshards=2&totalshards=5` - ### Gouging The default gouging settings are listed below. The gouging settings can be updated using the settings API: -- `GET /api/bus/setting/gouging` -- `PUT /api/bus/setting/gouging` +- `GET /api/bus/settings/gouging` +- `PUT /api/bus/settings/gouging` ```json { diff --git a/api/setting.go b/api/setting.go index 3b81eb87e..f3e0f2b63 100644 --- a/api/setting.go +++ b/api/setting.go @@ -246,6 +246,13 @@ func (gs GougingSettings) Validate() error { return nil } +func (us UploadSettings) Validate() error { + return errors.Join( + us.Packing.Validate(), + us.Redundancy.Validate(), + ) +} + // Validate returns an error if the upload packing settings are not considered // valid. func (up UploadPackingSettings) Validate() error { diff --git a/bus/bus.go b/bus/bus.go index 81c52f99c..e1e5563f9 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -5,7 +5,6 @@ package bus import ( "context" - "encoding/json" "errors" "fmt" "net" @@ -278,8 +277,21 @@ type ( // A SettingStore stores settings. SettingStore interface { - Setting(ctx context.Context, key string) (string, error) - UpdateSetting(ctx context.Context, key, value string) error + GougingSettings(ctx context.Context) (api.GougingSettings, error) + UpdateGougingSettings(ctx context.Context, gs api.GougingSettings) error + + PinnedSettings(ctx context.Context) (api.PinnedSettings, error) + UpdatePinnedSettings(ctx context.Context, pps api.PinnedSettings) error + + UploadSettings(ctx context.Context) (api.UploadSettings, error) + UpdateUploadSettings(ctx context.Context, us api.UploadSettings) error + + S3Settings(ctx context.Context) (api.S3Settings, error) + UpdateS3Settings(ctx context.Context, s3as api.S3Settings) error + + // required for compat + Setting(ctx context.Context, key string, out interface{}) error + DeleteSetting(ctx context.Context, key string) error } WalletMetricsRecorder interface { @@ -357,6 +369,11 @@ func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksMa // create wallet metrics recorder b.walletMetricsRecorder = ibus.NewWalletMetricRecorder(store, w, defaultWalletRecordMetricInterval, l) + // migrate settings to V2 types + if err := b.compatV2Settings(ctx); err != nil { + return nil, err + } + return b, nil } @@ -457,8 +474,8 @@ func (b *Bus) Handler() http.Handler { "PUT /settings/pinned": b.settingsPinnedHandlerPUT, "GET /settings/s3": b.settingsS3HandlerGET, "PUT /settings/s3": b.settingsS3HandlerPUT, - "GET /settings/uploads": b.settingsRedundancyHandlerGET, - "PUT /settings/uploads": b.settingsRedundancyHandlerPUT, + "GET /settings/uploads": b.settingsUploadsHandlerGET, + "PUT /settings/uploads": b.settingsUploadsHandlerPUT, "POST /slabs/migration": b.slabsMigrationHandlerPOST, "GET /slabs/partial/:key": b.slabsPartialHandlerGET, @@ -594,56 +611,75 @@ func (b *Bus) deriveSubKey(purpose string) types.PrivateKey { return pk } -func (b *Bus) fetchSetting(ctx context.Context, key string, value interface{}) error { - defaults := map[string]interface{}{ - api.SettingGouging: api.DefaultGougingSettings, - api.SettingPinned: api.DefaultPricePinSettings, - api.SettingUploads: api.DefaultUploadSettings, +func (b *Bus) compatV2Settings(ctx context.Context) error { + // escape early if all settings are present + if !errors.Is(errors.Join( + b.ss.Setting(ctx, api.SettingGouging, struct{}{}), + b.ss.Setting(ctx, api.SettingPinned, struct{}{}), + b.ss.Setting(ctx, api.SettingS3, struct{}{}), + b.ss.Setting(ctx, api.SettingUploads, struct{}{}), + ), api.ErrAutopilotNotFound) { + return nil } - // testnets have different redundancy settings - if mn, _ := chain.Mainnet(); mn.Name != b.cm.TipState().Network.Name { - defaults[api.SettingUploads] = api.DefaultRedundancySettingsTestnet + // migrate S3 settings + var s3as api.S3AuthenticationSettings + if err := b.ss.Setting(ctx, "s3authentication", &s3as); err != nil && !errors.Is(err, api.ErrSettingNotFound) { + return err + } else if err == nil { + s3s := api.S3Settings{Authentication: s3as} + if err := b.ss.UpdateS3Settings(ctx, s3s); err != nil { + return err + } } - setting, err := b.ss.Setting(ctx, key) - if errors.Is(err, api.ErrSettingNotFound) { - val, ok := defaults[key] - if !ok { - return fmt.Errorf("%w: unknown setting '%s'", api.ErrSettingNotFound, key) + // migrate pinned settings + var pps api.PinnedSettings + if err := b.ss.Setting(ctx, "pricepinning", &pps); err != nil && !errors.Is(err, api.ErrSettingNotFound) { + return err + } else if errors.Is(err, api.ErrSettingNotFound) { + if err := b.ss.UpdatePinnedSettings(ctx, api.DefaultPricePinSettings); err != nil { + return err } - - bytes, _ := json.Marshal(val) - if err := b.ss.UpdateSetting(ctx, key, string(bytes)); err != nil { - b.logger.Warn(fmt.Sprintf("failed to update default setting '%s': %v", key, err)) + } else { + if err := b.ss.UpdatePinnedSettings(ctx, pps); err != nil { + return err } - return json.Unmarshal(bytes, &val) - } else if err != nil { - return err } - return json.Unmarshal([]byte(setting), &value) -} + // migrate upload settings + us := api.DefaultUploadSettings + var css struct { + Default string `json:"default"` + } -func (b *Bus) updateSetting(ctx context.Context, key string, value string, updatePinMgr bool) error { - err := b.ss.UpdateSetting(ctx, key, value) - if err != nil { + // override default contract set on default upload settings + if err := b.ss.Setting(ctx, "contractset", &css); err != nil && !errors.Is(err, api.ErrSettingNotFound) { return err + } else if err == nil { + us.DefaultContractSet = css.Default } - b.broadcastAction(webhooks.Event{ - Module: api.ModuleSetting, - Event: api.EventUpdate, - Payload: api.EventSettingUpdate{ - Key: key, - Update: value, - Timestamp: time.Now().UTC(), - }, - }) + // override redundancy settings on default upload settings + var rs api.RedundancySettings + if err := b.ss.Setting(ctx, "redundancy", &rs); err != nil && !errors.Is(err, api.ErrSettingNotFound) { + return err + } else if errors.Is(err, api.ErrSettingNotFound) { + // default redundancy settings for testnet are different from mainnet + if mn, _ := chain.Mainnet(); mn.Name != b.cm.TipState().Network.Name { + us.Redundancy = api.DefaultRedundancySettingsTestnet + } + } else { + us.Redundancy = rs + } - if updatePinMgr { - b.pinMgr.TriggerUpdate() + // override upload packing settings on default upload settings + var ups api.UploadPackingSettings + if err := b.ss.Setting(ctx, "uploadpacking", &ups); err != nil && !errors.Is(err, api.ErrSettingNotFound) { + return err + } else if err == nil { + us.Packing = ups } - return nil + return b.ss.UpdateUploadSettings(ctx, us) } diff --git a/bus/client/settings.go b/bus/client/settings.go index 35c48eac2..5723c3cdd 100644 --- a/bus/client/settings.go +++ b/bus/client/settings.go @@ -8,44 +8,44 @@ import ( // GougingSettings returns the gouging settings. func (c *Client) GougingSettings(ctx context.Context) (gs api.GougingSettings, err error) { - err = c.c.WithContext(ctx).GET("/setting/gouging", &gs) + err = c.c.WithContext(ctx).GET("/settings/gouging", &gs) return } // UpdateGougingSettings updates the given setting. func (c *Client) UpdateGougingSettings(ctx context.Context, gs api.GougingSettings) error { - return c.c.WithContext(ctx).PUT("/setting/gouging", gs) + return c.c.WithContext(ctx).PUT("/settings/gouging", gs) } // PricePinningSettings returns the contract set settings. func (c *Client) PricePinningSettings(ctx context.Context) (pps api.PinnedSettings, err error) { - err = c.c.WithContext(ctx).GET("/setting/pinned", &pps) + err = c.c.WithContext(ctx).GET("/settings/pinned", &pps) return } // UpdatePinnedSettings updates the given setting. func (c *Client) UpdatePinnedSettings(ctx context.Context, pps api.PinnedSettings) error { - return c.c.WithContext(ctx).PUT("/setting/pinned", pps) + return c.c.WithContext(ctx).PUT("/settings/pinned", pps) } // S3Settings returns the S3 settings. func (c *Client) S3Settings(ctx context.Context) (as api.S3Settings, err error) { - err = c.c.WithContext(ctx).GET("/setting/s3", &as) + err = c.c.WithContext(ctx).GET("/settings/s3", &as) return } // UpdateS3Settings updates the given setting. func (c *Client) UpdateS3Settings(ctx context.Context, as api.S3Settings) error { - return c.c.WithContext(ctx).PUT("/setting/s3", as) + return c.c.WithContext(ctx).PUT("/settings/s3", as) } // UploadSettings returns the upload settings. func (c *Client) UploadSettings(ctx context.Context) (css api.UploadSettings, err error) { - err = c.c.WithContext(ctx).GET("/setting/upload", &css) + err = c.c.WithContext(ctx).GET("/settings/upload", &css) return } // UpdateUploadSettings update the given setting. func (c *Client) UpdateUploadSettings(ctx context.Context, us api.UploadSettings) error { - return c.c.WithContext(ctx).PUT("/setting/upload", us) + return c.c.WithContext(ctx).PUT("/settings/upload", us) } diff --git a/bus/routes.go b/bus/routes.go index e4ba44a2d..593aa1112 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1253,8 +1253,7 @@ func (b *Bus) packedSlabsHandlerDonePOST(jc jape.Context) { } func (b *Bus) settingsGougingHandlerGET(jc jape.Context) { - var gs api.GougingSettings - if err := b.fetchSetting(jc.Request.Context(), api.SettingGouging, &gs); errors.Is(err, api.ErrSettingNotFound) { + if gs, err := b.ss.GougingSettings(jc.Request.Context()); errors.Is(err, api.ErrSettingNotFound) { jc.Error(err, http.StatusNotFound) } else if jc.Check("failed to get gouging settings", err) == nil { jc.Encode(gs) @@ -1268,24 +1267,22 @@ func (b *Bus) settingsGougingHandlerPUT(jc jape.Context) { } else if err := gs.Validate(); err != nil { jc.Error(fmt.Errorf("couldn't update gouging settings, error: %v", err), http.StatusBadRequest) return - } - - // marshal the setting - data, err := json.Marshal(gs) - if err != nil { - jc.Error(fmt.Errorf("couldn't marshal the given value, error: %v", err), http.StatusBadRequest) - return - } - - // update the setting - if jc.Check("could not update gouging settings", b.updateSetting(jc.Request.Context(), api.SettingGouging, string(data), true)) != nil { - return + } else if jc.Check("could not update gouging settings", b.ss.UpdateGougingSettings(jc.Request.Context(), gs)) == nil { + b.broadcastAction(webhooks.Event{ + Module: api.ModuleSetting, + Event: api.EventUpdate, + Payload: api.EventSettingUpdate{ + Key: api.SettingGouging, + Update: gs, + Timestamp: time.Now().UTC(), + }, + }) + b.pinMgr.TriggerUpdate() } } func (b *Bus) settingsPinnedHandlerGET(jc jape.Context) { - var pps api.PinnedSettings - if err := b.fetchSetting(jc.Request.Context(), api.SettingPinned, &pps); errors.Is(err, api.ErrSettingNotFound) { + if pps, err := b.ss.PinnedSettings(jc.Request.Context()); errors.Is(err, api.ErrSettingNotFound) { jc.Error(err, http.StatusNotFound) } else if jc.Check("failed to get price pinning settings", err) == nil { // populate the Autopilots map with the current autopilots @@ -1315,79 +1312,73 @@ func (b *Bus) settingsPinnedHandlerPUT(jc jape.Context) { return } } - - // marshal the setting - data, err := json.Marshal(pps) - if err != nil { - jc.Error(fmt.Errorf("couldn't marshal the given value, error: %v", err), http.StatusBadRequest) - return - } - - // update the setting - if jc.Check("could not update price pinning settings", b.updateSetting(jc.Request.Context(), api.SettingPinned, string(data), true)) != nil { - return + if jc.Check("could not update price pinning settings", b.ss.UpdatePinnedSettings(jc.Request.Context(), pps)) == nil { + b.broadcastAction(webhooks.Event{ + Module: api.ModuleSetting, + Event: api.EventUpdate, + Payload: api.EventSettingUpdate{ + Key: api.SettingPinned, + Update: pps, + Timestamp: time.Now().UTC(), + }, + }) + b.pinMgr.TriggerUpdate() } } -func (b *Bus) settingsRedundancyHandlerGET(jc jape.Context) { - var rs api.RedundancySettings - if err := b.fetchSetting(jc.Request.Context(), api.SettingUploads, &rs); errors.Is(err, api.ErrSettingNotFound) { +func (b *Bus) settingsUploadsHandlerGET(jc jape.Context) { + if us, err := b.ss.UploadSettings(jc.Request.Context()); errors.Is(err, api.ErrSettingNotFound) { jc.Error(err, http.StatusNotFound) - } else if jc.Check("failed to get redundancy settings", err) == nil { - jc.Encode(rs) + } else if jc.Check("failed to get upload settings", err) == nil { + jc.Encode(us) } } -func (b *Bus) settingsRedundancyHandlerPUT(jc jape.Context) { - var rs api.RedundancySettings - if jc.Decode(&rs) != nil { - return - } else if err := rs.Validate(); err != nil { - jc.Error(fmt.Errorf("couldn't update redundancy settings, error: %v", err), http.StatusBadRequest) - return - } - - // marshal the setting - data, err := json.Marshal(rs) - if err != nil { - jc.Error(fmt.Errorf("couldn't marshal the given value, error: %v", err), http.StatusBadRequest) +func (b *Bus) settingsUploadsHandlerPUT(jc jape.Context) { + var us api.UploadSettings + if jc.Decode(&us) != nil { return - } - - // update the setting - if jc.Check("could not update redundancy settings", b.updateSetting(jc.Request.Context(), api.SettingUploads, string(data), false)) != nil { + } else if err := us.Validate(); err != nil { + jc.Error(fmt.Errorf("couldn't update upload settings, error: %v", err), http.StatusBadRequest) return + } else if jc.Check("could not update upload settings", b.ss.UpdateUploadSettings(jc.Request.Context(), us)) == nil { + b.broadcastAction(webhooks.Event{ + Module: api.ModuleSetting, + Event: api.EventUpdate, + Payload: api.EventSettingUpdate{ + Key: api.SettingUploads, + Update: us, + Timestamp: time.Now().UTC(), + }, + }) } } func (b *Bus) settingsS3HandlerGET(jc jape.Context) { - var s3as api.S3Settings - if err := b.fetchSetting(jc.Request.Context(), api.SettingS3, &s3as); errors.Is(err, api.ErrSettingNotFound) { + if s3s, err := b.ss.S3Settings(jc.Request.Context()); errors.Is(err, api.ErrSettingNotFound) { jc.Error(err, http.StatusNotFound) - } else if jc.Check("failed to get s3 authentication settings", err) == nil { - jc.Encode(s3as) + } else if jc.Check("failed to get S3 settings", err) == nil { + jc.Encode(s3s) } } func (b *Bus) settingsS3HandlerPUT(jc jape.Context) { - var s3as api.S3Settings - if jc.Decode(&s3as) != nil { - return - } else if err := s3as.Validate(); err != nil { - jc.Error(fmt.Errorf("couldn't update s3 authentication settings, error: %v", err), http.StatusBadRequest) - return - } - - // marshal the setting - data, err := json.Marshal(s3as) - if err != nil { - jc.Error(fmt.Errorf("couldn't marshal the given value, error: %v", err), http.StatusBadRequest) + var s3s api.S3Settings + if jc.Decode(&s3s) != nil { return - } - - // update the setting - if jc.Check("could not update s3 authentication settings", b.updateSetting(jc.Request.Context(), api.SettingS3, string(data), false)) != nil { + } else if err := s3s.Validate(); err != nil { + jc.Error(fmt.Errorf("couldn't update S3 settings, error: %v", err), http.StatusBadRequest) return + } else if jc.Check("could not update S3 settings", b.ss.UpdateS3Settings(jc.Request.Context(), s3s)) == nil { + b.broadcastAction(webhooks.Event{ + Module: api.ModuleSetting, + Event: api.EventUpdate, + Payload: api.EventSettingUpdate{ + Key: api.SettingS3, + Update: s3s, + Timestamp: time.Now().UTC(), + }, + }) } } @@ -1524,8 +1515,8 @@ func (b *Bus) slabsPartialHandlerPOST(jc jape.Context) { if jc.Check("failed to add partial slab", err) != nil { return } - var us api.UploadSettings - if err := b.fetchSetting(jc.Request.Context(), api.SettingUploads, &us); err != nil && !errors.Is(err, api.ErrSettingNotFound) { + us, err := b.ss.UploadSettings(jc.Request.Context()) + if err != nil && !errors.Is(err, api.ErrSettingNotFound) { jc.Error(fmt.Errorf("could not get upload packing settings: %w", err), http.StatusInternalServerError) return } @@ -1559,8 +1550,8 @@ func (b *Bus) paramsHandlerUploadGET(jc jape.Context) { var uploadPacking bool var contractSet string - var us api.UploadSettings - if err := b.fetchSetting(jc.Request.Context(), api.SettingUploads, &us); err != nil && !errors.Is(err, api.ErrSettingNotFound) { + us, err := b.ss.UploadSettings(jc.Request.Context()) + if err != nil && !errors.Is(err, api.ErrSettingNotFound) { jc.Error(fmt.Errorf("could not get upload settings: %w", err), http.StatusInternalServerError) return } else if err == nil { @@ -1604,18 +1595,14 @@ func (b *Bus) paramsHandlerGougingGET(jc jape.Context) { } func (b *Bus) gougingParams(ctx context.Context) (api.GougingParams, error) { - var gs api.GougingSettings - if gss, err := b.ss.Setting(ctx, api.SettingGouging); err != nil { + gs, err := b.ss.GougingSettings(ctx) + if err != nil { return api.GougingParams{}, err - } else if err := json.Unmarshal([]byte(gss), &gs); err != nil { - b.logger.Panicf("failed to unmarshal gouging settings '%s': %v", gss, err) } - var rs api.RedundancySettings - if rss, err := b.ss.Setting(ctx, api.SettingUploads); err != nil { + us, err := b.ss.UploadSettings(ctx) + if err != nil { return api.GougingParams{}, err - } else if err := json.Unmarshal([]byte(rss), &rs); err != nil { - b.logger.Panicf("failed to unmarshal redundancy settings '%s': %v", rss, err) } cs, err := b.consensusState(ctx) @@ -1626,7 +1613,7 @@ func (b *Bus) gougingParams(ctx context.Context) (api.GougingParams, error) { return api.GougingParams{ ConsensusState: cs, GougingSettings: gs, - RedundancySettings: rs, + RedundancySettings: us.Redundancy, TransactionFee: b.cm.RecommendedFee(), }, nil } diff --git a/internal/bus/pinmanager.go b/internal/bus/pinmanager.go index ff51812dc..3bc579f28 100644 --- a/internal/bus/pinmanager.go +++ b/internal/bus/pinmanager.go @@ -2,7 +2,6 @@ package bus import ( "context" - "encoding/json" "errors" "fmt" "sync" @@ -20,9 +19,13 @@ import ( type ( Store interface { Autopilot(ctx context.Context, id string) (api.Autopilot, error) - Setting(ctx context.Context, key string) (string, error) UpdateAutopilot(ctx context.Context, ap api.Autopilot) error - UpdateSetting(ctx context.Context, key, value string) error + + GougingSettings(ctx context.Context) (api.GougingSettings, error) + UpdateGougingSettings(ctx context.Context, gs api.GougingSettings) error + + PinnedSettings(ctx context.Context) (api.PinnedSettings, error) + UpdatePinnedSettings(ctx context.Context, pps api.PinnedSettings) error } ) @@ -106,16 +109,6 @@ func (pm *pinManager) averageRate() decimal.Decimal { return decimal.NewFromFloat(median) } -func (pm *pinManager) pinnedSettings(ctx context.Context) (api.PinnedSettings, error) { - var ps api.PinnedSettings - if pss, err := pm.s.Setting(ctx, api.SettingPinned); err != nil { - return api.PinnedSettings{}, err - } else if err := json.Unmarshal([]byte(pss), &ps); err != nil { - pm.logger.Panicf("failed to unmarshal pinned settings '%s': %v", pss, err) - } - return ps, nil -} - func (pm *pinManager) rateExceedsThreshold(threshold float64) bool { pm.mu.Lock() defer pm.mu.Unlock() @@ -241,11 +234,8 @@ func (pm *pinManager) updateGougingSettings(ctx context.Context, pins api.Gougin var updated bool // fetch gouging settings - var gs api.GougingSettings - if gss, err := pm.s.Setting(ctx, api.SettingGouging); err != nil { - return err - } else if err := json.Unmarshal([]byte(gss), &gs); err != nil { - pm.logger.Panicf("failed to unmarshal gouging settings '%s': %v", gss, err) + gs, err := pm.s.GougingSettings(ctx) + if err != nil { return err } @@ -292,15 +282,14 @@ func (pm *pinManager) updateGougingSettings(ctx context.Context, pins api.Gougin } // validate settings - err := gs.Validate() + err = gs.Validate() if err != nil { pm.logger.Warnw("failed to update gouging setting, new settings make the setting invalid", zap.Error(err)) return err } // update settings - bytes, _ := json.Marshal(gs) - err = pm.s.UpdateSetting(ctx, api.SettingGouging, string(bytes)) + err = pm.s.UpdateGougingSettings(ctx, gs) // broadcast event if err == nil { @@ -309,7 +298,7 @@ func (pm *pinManager) updateGougingSettings(ctx context.Context, pins api.Gougin Event: api.EventUpdate, Payload: api.EventSettingUpdate{ Key: api.SettingGouging, - Update: string(bytes), + Update: gs, Timestamp: time.Now().UTC(), }, }) @@ -322,7 +311,7 @@ func (pm *pinManager) updatePrices(ctx context.Context, forced bool) error { pm.logger.Debugw("updating prices", zap.Bool("forced", forced)) // fetch pinned settings - settings, err := pm.pinnedSettings(ctx) + settings, err := pm.s.PinnedSettings(ctx) if errors.Is(err, api.ErrSettingNotFound) { pm.logger.Debug("price pinning not configured, skipping price update") return nil diff --git a/internal/bus/pinmanager_test.go b/internal/bus/pinmanager_test.go index 33e4962eb..37523dd6e 100644 --- a/internal/bus/pinmanager_test.go +++ b/internal/bus/pinmanager_test.go @@ -111,22 +111,18 @@ func (api *mockForexAPI) setUnreachable(unreachable bool) { type mockPinStore struct { mu sync.Mutex - settings map[string]string + gs api.GougingSettings + ps api.PinnedSettings autopilots map[string]api.Autopilot } func newTestStore() *mockPinStore { s := &mockPinStore{ autopilots: make(map[string]api.Autopilot), - settings: make(map[string]string), + gs: api.DefaultGougingSettings, + ps: api.DefaultPricePinSettings, } - // add default price pin - and gouging settings - b, _ := json.Marshal(api.DefaultPricePinSettings) - s.settings[api.SettingPinned] = string(b) - b, _ = json.Marshal(api.DefaultGougingSettings) - s.settings[api.SettingGouging] = string(b) - // add default autopilot s.autopilots[testAutopilotID] = api.Autopilot{ ID: testAutopilotID, @@ -140,34 +136,30 @@ func newTestStore() *mockPinStore { return s } -func (ms *mockPinStore) gougingSettings() api.GougingSettings { - val, err := ms.Setting(context.Background(), api.SettingGouging) - if err != nil { - panic(err) - } - var gs api.GougingSettings - if err := json.Unmarshal([]byte(val), &gs); err != nil { - panic(err) - } - return gs +func (ms *mockPinStore) GougingSettings(ctx context.Context) (api.GougingSettings, error) { + ms.mu.Lock() + defer ms.mu.Unlock() + return ms.gs, nil } -func (ms *mockPinStore) updatPinnedSettings(pps api.PinnedSettings) { - b, _ := json.Marshal(pps) - ms.UpdateSetting(context.Background(), api.SettingPinned, string(b)) - time.Sleep(2 * testUpdateInterval) +func (ms *mockPinStore) UpdateGougingSettings(ctx context.Context, gs api.GougingSettings) error { + ms.mu.Lock() + defer ms.mu.Unlock() + ms.gs = gs + return nil } -func (ms *mockPinStore) Setting(ctx context.Context, key string) (string, error) { +func (ms *mockPinStore) PinnedSettings(ctx context.Context) (api.PinnedSettings, error) { ms.mu.Lock() defer ms.mu.Unlock() - return ms.settings[key], nil + return ms.ps, nil } -func (ms *mockPinStore) UpdateSetting(ctx context.Context, key, value string) error { +func (ms *mockPinStore) UpdatePinnedSettings(ctx context.Context, ps api.PinnedSettings) error { ms.mu.Lock() defer ms.mu.Unlock() - ms.settings[key] = value + ms.ps = ps + time.Sleep(2 * testUpdateInterval) return nil } @@ -221,7 +213,7 @@ func TestPinManager(t *testing.T) { pps.Currency = "usd" pps.Threshold = 0.5 pps.ForexEndpointURL = forex.s.URL - ms.updatPinnedSettings(pps) + ms.UpdatePinnedSettings(context.Background(), pps) // assert price manager is running now if cnt := len(rates()); cnt < 1 { @@ -230,30 +222,30 @@ func TestPinManager(t *testing.T) { // update exchange rate and fetch current gouging settings forex.setRate(2.5) - gs := ms.gougingSettings() + gs, _ := ms.GougingSettings(context.Background()) // configure all pins but disable them for now pps.GougingSettingsPins.MaxDownload = api.Pin{Value: 3, Pinned: false} pps.GougingSettingsPins.MaxStorage = api.Pin{Value: 3, Pinned: false} pps.GougingSettingsPins.MaxUpload = api.Pin{Value: 3, Pinned: false} - ms.updatPinnedSettings(pps) + ms.UpdatePinnedSettings(context.Background(), pps) // assert gouging settings are unchanged - if gss := ms.gougingSettings(); !reflect.DeepEqual(gs, gss) { + if gss, _ := ms.GougingSettings(context.Background()); !reflect.DeepEqual(gs, gss) { t.Fatalf("expected gouging settings to be the same, got %v", gss) } // enable the max download pin, with the threshold at 0.5 it should remain unchanged pps.GougingSettingsPins.MaxDownload.Pinned = true - ms.updatPinnedSettings(pps) - if gss := ms.gougingSettings(); !reflect.DeepEqual(gs, gss) { + ms.UpdatePinnedSettings(context.Background(), pps) + if gss, _ := ms.GougingSettings(context.Background()); !reflect.DeepEqual(gs, gss) { t.Fatalf("expected gouging settings to be the same, got %v", gss) } // lower the threshold, gouging settings should be updated pps.Threshold = 0.05 - ms.updatPinnedSettings(pps) - if gss := ms.gougingSettings(); gss.MaxContractPrice.Equals(gs.MaxDownloadPrice) { + ms.UpdatePinnedSettings(context.Background(), pps) + if gss, _ := ms.GougingSettings(context.Background()); gss.MaxContractPrice.Equals(gs.MaxDownloadPrice) { t.Fatalf("expected gouging settings to be updated, got %v = %v", gss.MaxDownloadPrice, gs.MaxDownloadPrice) } @@ -261,10 +253,10 @@ func TestPinManager(t *testing.T) { pps.GougingSettingsPins.MaxDownload.Pinned = true pps.GougingSettingsPins.MaxStorage.Pinned = true pps.GougingSettingsPins.MaxUpload.Pinned = true - ms.updatPinnedSettings(pps) + ms.UpdatePinnedSettings(context.Background(), pps) // assert they're all updated - if gss := ms.gougingSettings(); gss.MaxDownloadPrice.Equals(gs.MaxDownloadPrice) || + if gss, _ := ms.GougingSettings(context.Background()); gss.MaxDownloadPrice.Equals(gs.MaxDownloadPrice) || gss.MaxStoragePrice.Equals(gs.MaxStoragePrice) || gss.MaxUploadPrice.Equals(gs.MaxUploadPrice) { t.Fatalf("expected gouging settings to be updated, got %v = %v", gss, gs) @@ -284,7 +276,7 @@ func TestPinManager(t *testing.T) { }, } pps.Autopilots = map[string]api.AutopilotPins{testAutopilotID: pins} - ms.updatPinnedSettings(pps) + ms.UpdatePinnedSettings(context.Background(), pps) // assert autopilot was not updated if app, _ := ms.Autopilot(context.Background(), testAutopilotID); !app.Config.Contracts.Allowance.Equals(ap.Config.Contracts.Allowance) { @@ -294,7 +286,7 @@ func TestPinManager(t *testing.T) { // enable the pin pins.Allowance.Pinned = true pps.Autopilots[testAutopilotID] = pins - ms.updatPinnedSettings(pps) + ms.UpdatePinnedSettings(context.Background(), pps) // assert autopilot was updated if app, _ := ms.Autopilot(context.Background(), testAutopilotID); app.Config.Contracts.Allowance.Equals(ap.Config.Contracts.Allowance) { @@ -305,7 +297,7 @@ func TestPinManager(t *testing.T) { forex.setUnreachable(true) // assert alert was registered - ms.updatPinnedSettings(pps) + ms.UpdatePinnedSettings(context.Background(), pps) res, _ := a.Alerts(context.Background(), alerts.AlertsOpts{}) if len(res.Alerts) == 0 { t.Fatalf("expected 1 alert, got %d", len(a.alerts)) @@ -315,7 +307,7 @@ func TestPinManager(t *testing.T) { forex.setUnreachable(false) // assert alert was dismissed - ms.updatPinnedSettings(pps) + ms.UpdatePinnedSettings(context.Background(), pps) res, _ = a.Alerts(context.Background(), alerts.AlertsOpts{}) if len(res.Alerts) != 0 { t.Fatalf("expected 0 alerts, got %d", len(a.alerts)) diff --git a/stores/settingsdb.go b/stores/settingsdb.go index ea31b25bd..407a53efd 100644 --- a/stores/settingsdb.go +++ b/stores/settingsdb.go @@ -2,14 +2,118 @@ package stores import ( "context" + "encoding/json" "fmt" + "go.sia.tech/renterd/api" sql "go.sia.tech/renterd/stores/sql" ) -// Setting implements the bus.SettingStore interface. -func (s *SQLStore) Setting(ctx context.Context, key string) (string, error) { - // Check cache first. +func (s *SQLStore) GougingSettings(ctx context.Context) (gs api.GougingSettings, _ error) { + value, err := s.fetchSetting(ctx, api.SettingGouging) + if err != nil { + return api.GougingSettings{}, err + } + + if err := json.Unmarshal([]byte(value), &gs); err != nil { + s.logger.Panicf("failed to unmarshal gouging settings '%s': %v", value, err) + return api.GougingSettings{}, err + } + return +} + +func (s *SQLStore) UpdateGougingSettings(ctx context.Context, gs api.GougingSettings) error { + data, err := json.Marshal(gs) + if err != nil { + return fmt.Errorf("couldn't marshal the given value, error: %v", err) + } + return s.updateSetting(ctx, api.SettingGouging, string(data)) +} + +func (s *SQLStore) PinnedSettings(ctx context.Context) (pps api.PinnedSettings, _ error) { + value, err := s.fetchSetting(ctx, api.SettingPinned) + if err != nil { + return api.PinnedSettings{}, err + } + + if err := json.Unmarshal([]byte(value), &pps); err != nil { + s.logger.Panicf("failed to unmarshal pinned settings '%s': %v", value, err) + return api.PinnedSettings{}, err + } + return +} + +func (s *SQLStore) UpdatePinnedSettings(ctx context.Context, pps api.PinnedSettings) error { + data, err := json.Marshal(pps) + if err != nil { + return fmt.Errorf("couldn't marshal the given value, error: %v", err) + } + return s.updateSetting(ctx, api.SettingPinned, string(data)) +} + +func (s *SQLStore) UploadSettings(ctx context.Context) (us api.UploadSettings, _ error) { + value, err := s.fetchSetting(ctx, api.SettingUploads) + if err != nil { + return api.UploadSettings{}, err + } + + if err := json.Unmarshal([]byte(value), &us); err != nil { + s.logger.Panicf("failed to unmarshal upload settings '%s': %v", value, err) + return api.UploadSettings{}, err + } + return +} + +func (s *SQLStore) UpdateUploadSettings(ctx context.Context, us api.UploadSettings) error { + data, err := json.Marshal(us) + if err != nil { + return fmt.Errorf("couldn't marshal the given value, error: %v", err) + } + return s.updateSetting(ctx, api.SettingUploads, string(data)) +} + +func (s *SQLStore) S3Settings(ctx context.Context) (ss api.S3Settings, _ error) { + value, err := s.fetchSetting(ctx, api.SettingS3) + if err != nil { + return api.S3Settings{}, err + } + + if err := json.Unmarshal([]byte(value), &ss); err != nil { + s.logger.Panicf("failed to unmarshal s3 settings '%s': %v", value, err) + return api.S3Settings{}, err + } + return +} + +func (s *SQLStore) UpdateS3Settings(ctx context.Context, ss api.S3Settings) error { + data, err := json.Marshal(ss) + if err != nil { + return fmt.Errorf("couldn't marshal the given value, error: %v", err) + } + return s.updateSetting(ctx, api.SettingS3, string(data)) +} + +func (s *SQLStore) DeleteSetting(ctx context.Context, key string) (err error) { + return s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { + return tx.DeleteSetting(ctx, key) + }) +} + +func (s *SQLStore) Setting(ctx context.Context, key string, out interface{}) (err error) { + var value string + err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { + value, err = tx.Setting(ctx, key) + return err + }) + if err != nil { + return fmt.Errorf("failed to fetch setting from db: %w", err) + } + + return json.Unmarshal([]byte(value), &out) +} + +func (s *SQLStore) fetchSetting(ctx context.Context, key string) (string, error) { + // check cache first s.settingsMu.Lock() defer s.settingsMu.Unlock() value, ok := s.settings[key] @@ -17,7 +121,7 @@ func (s *SQLStore) Setting(ctx context.Context, key string) (string, error) { return value, nil } - // Check database. + // check database var err error err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { value, err = tx.Setting(ctx, key) @@ -30,8 +134,7 @@ func (s *SQLStore) Setting(ctx context.Context, key string) (string, error) { return value, nil } -// UpdateSetting implements the bus.SettingStore interface. -func (s *SQLStore) UpdateSetting(ctx context.Context, key, value string) error { +func (s *SQLStore) updateSetting(ctx context.Context, key, value string) error { // update db first s.settingsMu.Lock() defer s.settingsMu.Unlock() diff --git a/stores/settingsdb_test.go b/stores/settingsdb_test.go deleted file mode 100644 index 9eda8f546..000000000 --- a/stores/settingsdb_test.go +++ /dev/null @@ -1,33 +0,0 @@ -package stores - -import ( - "context" - "testing" -) - -// TestSQLSettingStore tests the bus.SettingStore methods on the SQLSettingStore. -func TestSQLSettingStore(t *testing.T) { - ss := newTestSQLStore(t, defaultTestSQLStoreConfig) - defer ss.Close() - - // add a setting - if err := ss.UpdateSetting(context.Background(), "foo", "bar"); err != nil { - t.Fatal(err) - } - - // assert we can query the setting by key - if value, err := ss.Setting(context.Background(), "foo"); err != nil { - t.Fatal(err) - } else if value != "bar" { - t.Fatalf("unexpected value, %s != 'bar'", value) - } - - // assert we can update the setting - if err := ss.UpdateSetting(context.Background(), "foo", "barbaz"); err != nil { - t.Fatal(err) - } else if value, err := ss.Setting(context.Background(), "foo"); err != nil { - t.Fatal(err) - } else if value != "barbaz" { - t.Fatalf("unexpected value, %s != 'barbaz'", value) - } -} diff --git a/stores/sql/database.go b/stores/sql/database.go index e4a8ab967..b1f45ef70 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -150,6 +150,9 @@ type ( // prefix and returns 'true' if any object was deleted. DeleteObjects(ctx context.Context, bucket, prefix string, limit int64) (bool, error) + // DeleteSetting deletes the setting with the given key. + DeleteSetting(ctx context.Context, key string) error + // DeleteWebhook deletes the webhook with the matching module, event and // URL of the provided webhook. If the webhook doesn't exist, // webhooks.ErrWebhookNotFound is returned. diff --git a/stores/sql/main.go b/stores/sql/main.go index e0d158552..02f876214 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -548,6 +548,13 @@ func DeleteMetadata(ctx context.Context, tx sql.Tx, objID int64) error { return err } +func DeleteSetting(ctx context.Context, tx sql.Tx, key string) error { + if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", key); err != nil { + return fmt.Errorf("failed to delete setting '%s': %w", key, err) + } + return nil +} + func DeleteWebhook(ctx context.Context, tx sql.Tx, wh webhooks.Webhook) error { res, err := tx.Exec(ctx, "DELETE FROM webhooks WHERE module = ? AND event = ? AND url = ?", wh.Module, wh.Event, wh.URL) if err != nil { diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index 5be1a9c3f..0c5b0dce0 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -340,6 +340,10 @@ func (tx *MainDatabaseTx) InsertMultipartUpload(ctx context.Context, bucket, key return ssql.InsertMultipartUpload(ctx, tx, bucket, key, ec, mimeType, metadata) } +func (tx *MainDatabaseTx) DeleteSetting(ctx context.Context, key string) error { + return ssql.DeleteSetting(ctx, tx, key) +} + func (tx *MainDatabaseTx) DeleteWebhook(ctx context.Context, wh webhooks.Webhook) error { return ssql.DeleteWebhook(ctx, tx, wh) } diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index 50ea2619f..fa253a004 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -332,6 +332,10 @@ func (tx *MainDatabaseTx) DeleteHostSector(ctx context.Context, hk types.PublicK return ssql.DeleteHostSector(ctx, tx, hk, root) } +func (tx *MainDatabaseTx) DeleteSetting(ctx context.Context, key string) error { + return ssql.DeleteSetting(ctx, tx, key) +} + func (tx *MainDatabaseTx) DeleteWebhook(ctx context.Context, wh webhooks.Webhook) error { return ssql.DeleteWebhook(ctx, tx, wh) } From 0e43e8d03bf57b94401c790d8c352c9997b82d65 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 29 Aug 2024 09:42:44 +0200 Subject: [PATCH 014/708] all: update docs and defaults --- .github/ISSUE_TEMPLATE/bug_report.yml | 6 ++-- README.md | 23 -------------- api/setting.go | 45 ++++++++++----------------- bus/bus.go | 2 +- internal/bus/pinmanager_test.go | 4 +-- internal/test/config.go | 2 +- internal/test/e2e/cluster.go | 2 +- 7 files changed, 25 insertions(+), 59 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 5219b07cf..a5ccf759f 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -66,10 +66,10 @@ body: description: | The configuration of your bus ```bash - curl -u ":[YOUR_PASSWORD]" http://localhost:9980/api/bus/settings/contractset curl -u ":[YOUR_PASSWORD]" http://localhost:9980/api/bus/settings/gouging - curl -u ":[YOUR_PASSWORD]" http://localhost:9980/api/bus/settings/redundancy - curl -u ":[YOUR_PASSWORD]" http://localhost:9980/api/bus/settings/uploadpacking + curl -u ":[YOUR_PASSWORD]" http://localhost:9980/api/bus/settings/pinned + curl -u ":[YOUR_PASSWORD]" http://localhost:9980/api/bus/settings/s3 + curl -u ":[YOUR_PASSWORD]" http://localhost:9980/api/bus/settings/uploads ``` placeholder: Paste the output of the above commands here validations: diff --git a/README.md b/README.md index 7508620c5..698a7c4b5 100644 --- a/README.md +++ b/README.md @@ -558,29 +558,6 @@ formed. } ``` -### Gouging - -The default gouging settings are listed below. The gouging settings can be -updated using the settings API: - -- `GET /api/bus/settings/gouging` -- `PUT /api/bus/settings/gouging` - -```json -{ - "hostBlockHeightLeeway": 6, // 6 blocks - "maxContractPrice": "15000000000000000000000000", // 15 SC per contract - "maxDownloadPrice": "3000000000000000000000000000", // 3000 SC per 1 TB - "maxRPCPrice": "1000000000000000000000", // 1mS per RPC - "maxStoragePrice": "631593542824", // 3000 SC per TB per month - "maxUploadPrice": "3000000000000000000000000000", // 3000 SC per 1 TB - "migrationSurchargeMultiplier": 10, // overpay up to 10x for sectors migrations on critical slabs - "minAccountExpiry": 86400000000000, // 1 day - "minMaxEphemeralAccountBalance": "1000000000000000000000000", // 1 SC - "minPriceTableValidity": 300000000000 // 5 minutes -} -``` - ### Blocklist Unfortunately the Sia blockchain is subject to hosts that announced themselves diff --git a/api/setting.go b/api/setting.go index f3e0f2b63..4627a31a7 100644 --- a/api/setting.go +++ b/api/setting.go @@ -32,9 +32,7 @@ var ( ErrSettingNotFound = errors.New("setting not found") // DefaultGougingSettings define the default gouging settings the bus is - // configured with on startup. These values can be adjusted using the - // settings API. - // + // configured with on startup. DefaultGougingSettings = GougingSettings{ MaxRPCPrice: types.Siacoins(1).Div64(1000), // 1mS per RPC MaxContractPrice: types.Siacoins(15), // 15 SC per contract @@ -48,40 +46,31 @@ var ( MigrationSurchargeMultiplier: 10, // 10x } - // DefaultPricePinSettings define the default price pin settings the bus is - // configured with on startup. These values can be adjusted using the - // settings API. - DefaultPricePinSettings = PinnedSettings{ + // DefaultPinnedSettings define the default pin settings the bus is + // configured with on startup. + DefaultPinnedSettings = PinnedSettings{ Enabled: false, Currency: "usd", ForexEndpointURL: "https://api.siascan.com/exchange-rate/siacoin", Threshold: 0.05, } + // DefaultUploadSettings define the default upload settings the bus is + // configured with on startup. DefaultUploadSettings = UploadSettings{ - Packing: DefaultUploadPackingSettings, - Redundancy: DefaultRedundancySettings, + Packing: UploadPackingSettings{ + Enabled: true, + SlabBufferMaxSizeSoft: 1 << 32, // 4 GiB + }, + Redundancy: RedundancySettings{ + MinShards: 10, + TotalShards: 30, + }, } - // DefaultUploadPackingSettings define the default upload packing settings - // the bus is configured with on startup. - DefaultUploadPackingSettings = UploadPackingSettings{ - Enabled: true, - SlabBufferMaxSizeSoft: 1 << 32, // 4 GiB - } - - // DefaultRedundancySettings define the default redundancy settings the bus - // is configured with on startup. These values can be adjusted using the - // settings API. - // - // NOTE: default redundancy settings for testnet are different from mainnet. - DefaultRedundancySettings = RedundancySettings{ - MinShards: 10, - TotalShards: 30, - } - - // Same as DefaultRedundancySettings but for running on testnet networks due - // to their reduced number of hosts. + // DefaultRedundancySettingsTestnet defines redundancy settings for the + // testnet, these are lower due to the reduced number of hosts on the + // testnet. DefaultRedundancySettingsTestnet = RedundancySettings{ MinShards: 2, TotalShards: 6, diff --git a/bus/bus.go b/bus/bus.go index e1e5563f9..47de9c44f 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -638,7 +638,7 @@ func (b *Bus) compatV2Settings(ctx context.Context) error { if err := b.ss.Setting(ctx, "pricepinning", &pps); err != nil && !errors.Is(err, api.ErrSettingNotFound) { return err } else if errors.Is(err, api.ErrSettingNotFound) { - if err := b.ss.UpdatePinnedSettings(ctx, api.DefaultPricePinSettings); err != nil { + if err := b.ss.UpdatePinnedSettings(ctx, api.DefaultPinnedSettings); err != nil { return err } } else { diff --git a/internal/bus/pinmanager_test.go b/internal/bus/pinmanager_test.go index 37523dd6e..a90d76e38 100644 --- a/internal/bus/pinmanager_test.go +++ b/internal/bus/pinmanager_test.go @@ -120,7 +120,7 @@ func newTestStore() *mockPinStore { s := &mockPinStore{ autopilots: make(map[string]api.Autopilot), gs: api.DefaultGougingSettings, - ps: api.DefaultPricePinSettings, + ps: api.DefaultPinnedSettings, } // add default autopilot @@ -208,7 +208,7 @@ func TestPinManager(t *testing.T) { } // enable price pinning - pps := api.DefaultPricePinSettings + pps := api.DefaultPinnedSettings pps.Enabled = true pps.Currency = "usd" pps.Threshold = 0.5 diff --git a/internal/test/config.go b/internal/test/config.go index f55c8a9e0..b33c2b0d6 100644 --- a/internal/test/config.go +++ b/internal/test/config.go @@ -49,7 +49,7 @@ var ( MinMaxEphemeralAccountBalance: types.Siacoins(1), // 1SC } - PricePinSettings = api.DefaultPricePinSettings + PricePinSettings = api.DefaultPinnedSettings RedundancySettings = api.RedundancySettings{ MinShards: 2, diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index ab057e445..e79a1e605 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -446,7 +446,7 @@ func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { us := test.UploadSettings us.Packing = api.UploadPackingSettings{ Enabled: enableUploadPacking, - SlabBufferMaxSizeSoft: api.DefaultUploadPackingSettings.SlabBufferMaxSizeSoft, + SlabBufferMaxSizeSoft: 1 << 32, // 4 GiB, } // Build S3 settings. From 8c76a212257f907fbd6507f90924f514dfc6c768 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 29 Aug 2024 10:14:25 +0200 Subject: [PATCH 015/708] all: cleanup PR --- api/setting.go | 2 +- bus/bus.go | 8 ++++---- bus/routes.go | 9 ++++++--- internal/worker/cache.go | 14 +++++++------- stores/settingsdb.go | 4 ++-- 5 files changed, 20 insertions(+), 17 deletions(-) diff --git a/api/setting.go b/api/setting.go index 4627a31a7..dd2cb78af 100644 --- a/api/setting.go +++ b/api/setting.go @@ -13,7 +13,7 @@ const ( SettingGouging = "gouging" SettingPinned = "pinned" SettingS3 = "s3" - SettingUploads = "uploads" + SettingUpload = "upload" ) const ( diff --git a/bus/bus.go b/bus/bus.go index 47de9c44f..ff5320f70 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -474,8 +474,8 @@ func (b *Bus) Handler() http.Handler { "PUT /settings/pinned": b.settingsPinnedHandlerPUT, "GET /settings/s3": b.settingsS3HandlerGET, "PUT /settings/s3": b.settingsS3HandlerPUT, - "GET /settings/uploads": b.settingsUploadsHandlerGET, - "PUT /settings/uploads": b.settingsUploadsHandlerPUT, + "GET /settings/upload": b.settingsUploadHandlerGET, + "PUT /settings/upload": b.settingsUploadHandlerPUT, "POST /slabs/migration": b.slabsMigrationHandlerPOST, "GET /slabs/partial/:key": b.slabsPartialHandlerGET, @@ -617,8 +617,8 @@ func (b *Bus) compatV2Settings(ctx context.Context) error { b.ss.Setting(ctx, api.SettingGouging, struct{}{}), b.ss.Setting(ctx, api.SettingPinned, struct{}{}), b.ss.Setting(ctx, api.SettingS3, struct{}{}), - b.ss.Setting(ctx, api.SettingUploads, struct{}{}), - ), api.ErrAutopilotNotFound) { + b.ss.Setting(ctx, api.SettingUpload, struct{}{}), + ), api.ErrSettingNotFound) { return nil } diff --git a/bus/routes.go b/bus/routes.go index 593aa1112..e681b1b93 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1290,6 +1290,9 @@ func (b *Bus) settingsPinnedHandlerGET(jc jape.Context) { if jc.Check("failed to fetch autopilots", err) != nil { return } + if pps.Autopilots == nil { + pps.Autopilots = make(map[string]api.AutopilotPins) + } for _, ap := range aps { if _, exists := pps.Autopilots[ap.ID]; !exists { pps.Autopilots[ap.ID] = api.AutopilotPins{} @@ -1326,7 +1329,7 @@ func (b *Bus) settingsPinnedHandlerPUT(jc jape.Context) { } } -func (b *Bus) settingsUploadsHandlerGET(jc jape.Context) { +func (b *Bus) settingsUploadHandlerGET(jc jape.Context) { if us, err := b.ss.UploadSettings(jc.Request.Context()); errors.Is(err, api.ErrSettingNotFound) { jc.Error(err, http.StatusNotFound) } else if jc.Check("failed to get upload settings", err) == nil { @@ -1334,7 +1337,7 @@ func (b *Bus) settingsUploadsHandlerGET(jc jape.Context) { } } -func (b *Bus) settingsUploadsHandlerPUT(jc jape.Context) { +func (b *Bus) settingsUploadHandlerPUT(jc jape.Context) { var us api.UploadSettings if jc.Decode(&us) != nil { return @@ -1346,7 +1349,7 @@ func (b *Bus) settingsUploadsHandlerPUT(jc jape.Context) { Module: api.ModuleSetting, Event: api.EventUpdate, Payload: api.EventSettingUpdate{ - Key: api.SettingUploads, + Key: api.SettingUpload, Update: us, Timestamp: time.Now().UTC(), }, diff --git a/internal/worker/cache.go b/internal/worker/cache.go index f6c1ea574..ebb071acd 100644 --- a/internal/worker/cache.go +++ b/internal/worker/cache.go @@ -333,15 +333,15 @@ func (c *cache) handleSettingUpdate(e api.EventSettingUpdate) (err error) { gp.GougingSettings = gs c.cache.Set(cacheKeyGougingParams, gp) - case api.SettingUploads: - var rs api.RedundancySettings - if err := json.Unmarshal(data, &rs); err != nil { - return fmt.Errorf("couldn't update redundancy settings, invalid request body, %t", e.Update) - } else if err := rs.Validate(); err != nil { - return fmt.Errorf("couldn't update redundancy settings, error: %v", err) + case api.SettingUpload: + var us api.UploadSettings + if err := json.Unmarshal(data, &us); err != nil { + return fmt.Errorf("couldn't update upload settings, invalid request body, %t", e.Update) + } else if err := us.Validate(); err != nil { + return fmt.Errorf("couldn't update upload settings, error: %v", err) } - gp.RedundancySettings = rs + gp.RedundancySettings = us.Redundancy c.cache.Set(cacheKeyGougingParams, gp) default: } diff --git a/stores/settingsdb.go b/stores/settingsdb.go index 407a53efd..658b6de1f 100644 --- a/stores/settingsdb.go +++ b/stores/settingsdb.go @@ -52,7 +52,7 @@ func (s *SQLStore) UpdatePinnedSettings(ctx context.Context, pps api.PinnedSetti } func (s *SQLStore) UploadSettings(ctx context.Context) (us api.UploadSettings, _ error) { - value, err := s.fetchSetting(ctx, api.SettingUploads) + value, err := s.fetchSetting(ctx, api.SettingUpload) if err != nil { return api.UploadSettings{}, err } @@ -69,7 +69,7 @@ func (s *SQLStore) UpdateUploadSettings(ctx context.Context, us api.UploadSettin if err != nil { return fmt.Errorf("couldn't marshal the given value, error: %v", err) } - return s.updateSetting(ctx, api.SettingUploads, string(data)) + return s.updateSetting(ctx, api.SettingUpload, string(data)) } func (s *SQLStore) S3Settings(ctx context.Context) (ss api.S3Settings, _ error) { From 36a8d70ff5d09100373eca6945cd47c48f5326db Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 29 Aug 2024 09:51:08 +0200 Subject: [PATCH 016/708] stores: fix TestListObject tests --- stores/metadata_test.go | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/stores/metadata_test.go b/stores/metadata_test.go index 35cce7796..ba0dc4710 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -1431,9 +1431,9 @@ func TestObjectHealth(t *testing.T) { } } -// TestListObjectsWithPrefix is a test for the TestListObjects method -// with '/' as the prefix. -func TestListObjectsWithPrefix(t *testing.T) { +// TestListObjectsWithDelimiterSlash is a test for the +// TestListObjects method with '/' as the prefix. +func TestListObjectsWithDelimiterSlash(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() @@ -1532,7 +1532,7 @@ func TestListObjectsWithPrefix(t *testing.T) { {"/", "", "size", "ASC", []api.ObjectMetadata{{Name: "/gab/", Size: 5, Health: 1}, {Name: "/fileś/", Size: 6, Health: 1}, {Name: "/FOO/", Size: 7, Health: 1}, {Name: "/foo/", Size: 10, Health: .5}}}, } for _, test := range tests { - resp, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path, test.prefix, test.sortBy, test.sortDir, "", -1) + resp, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "/", test.sortBy, test.sortDir, "", -1) if err != nil { t.Fatal(err) } @@ -1545,7 +1545,7 @@ func TestListObjectsWithPrefix(t *testing.T) { var marker string for offset := 0; offset < len(test.want); offset++ { - resp, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path, test.prefix, test.sortBy, test.sortDir, marker, 1) + resp, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "/", test.sortBy, test.sortDir, marker, 1) if err != nil { t.Fatal(err) } @@ -1567,10 +1567,11 @@ func TestListObjectsWithPrefix(t *testing.T) { continue } - resp, err = ss.ListObjects(ctx, api.DefaultBucketName, test.path, test.prefix, test.sortBy, test.sortDir, test.want[offset].Name, 1) + resp, err = ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "/", test.sortBy, test.sortDir, test.want[offset].Name, 1) if err != nil { t.Fatal(err) } + got = resp.Objects assertMetadata(got) if len(got) != 1 || got[0] != test.want[offset+1] { @@ -1633,14 +1634,14 @@ func TestListObjectsExplicitDir(t *testing.T) { {"/dir/", "", "", "", []api.ObjectMetadata{{ETag: "d34db33f", Name: "/dir/file", Size: 1, Health: 0.5, MimeType: testMimeType}}}, } for _, test := range tests { - got, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path, test.prefix, test.sortBy, test.sortDir, "", -1) + got, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "/", test.sortBy, test.sortDir, "", -1) if err != nil { t.Fatal(err) } for i := range got.Objects { got.Objects[i].ModTime = api.TimeRFC3339{} // ignore time for comparison } - if !reflect.DeepEqual(got, test.want) { + if !reflect.DeepEqual(got.Objects, test.want) { t.Fatalf("\nlist: %v\nprefix: %v\ngot: %v\nwant: %v", test.path, test.prefix, got, test.want) } } @@ -3565,7 +3566,7 @@ func TestMarkSlabUploadedAfterRenew(t *testing.T) { } } -func TestListObjectsNoPrefix(t *testing.T) { +func TestListObjectsNoDelimiter(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() objects := []struct { From c45aa0beb485808e3d083fdb67465cd07675c12b Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 29 Aug 2024 10:27:35 +0200 Subject: [PATCH 017/708] all: cleanup PR --- api/setting.go | 46 ++++++++++++++++++++++----------------------- bus/bus.go | 29 +++++++++++++++++++++++++--- cmd/renterd/node.go | 32 ------------------------------- 3 files changed, 48 insertions(+), 59 deletions(-) diff --git a/api/setting.go b/api/setting.go index dd2cb78af..237a96f5f 100644 --- a/api/setting.go +++ b/api/setting.go @@ -30,7 +30,9 @@ var ( // ErrSettingNotFound is returned if a requested setting is not present in the // database. ErrSettingNotFound = errors.New("setting not found") +) +var ( // DefaultGougingSettings define the default gouging settings the bus is // configured with on startup. DefaultGougingSettings = GougingSettings{ @@ -55,6 +57,22 @@ var ( Threshold: 0.05, } + // DefaultRedundancySettingsTestnet defines redundancy settings for the + // testnet, these are lower due to the reduced number of hosts on the + // testnet. + DefaultRedundancySettingsTestnet = RedundancySettings{ + MinShards: 2, + TotalShards: 6, + } + + // DefaultS3Settings defines the 3 settings the bus is configured with on + // startup. + DefaultS3Settings = S3Settings{ + Authentication: S3AuthenticationSettings{ + V4Keypairs: map[string]string{}, + }, + } + // DefaultUploadSettings define the default upload settings the bus is // configured with on startup. DefaultUploadSettings = UploadSettings{ @@ -67,14 +85,6 @@ var ( TotalShards: 30, }, } - - // DefaultRedundancySettingsTestnet defines redundancy settings for the - // testnet, these are lower due to the reduced number of hosts on the - // testnet. - DefaultRedundancySettingsTestnet = RedundancySettings{ - MinShards: 2, - TotalShards: 6, - } ) type ( @@ -235,20 +245,12 @@ func (gs GougingSettings) Validate() error { return nil } +// Validate returns an error if the upload settings are not considered valid. func (us UploadSettings) Validate() error { - return errors.Join( - us.Packing.Validate(), - us.Redundancy.Validate(), - ) -} - -// Validate returns an error if the upload packing settings are not considered -// valid. -func (up UploadPackingSettings) Validate() error { - if up.Enabled && up.SlabBufferMaxSizeSoft <= 0 { + if us.Packing.Enabled && us.Packing.SlabBufferMaxSizeSoft <= 0 { return errors.New("SlabBufferMaxSizeSoft must be greater than zero when upload packing is enabled") } - return nil + return us.Redundancy.Validate() } // Redundancy returns the effective storage redundancy of the @@ -285,11 +287,7 @@ func (rs RedundancySettings) Validate() error { // Validate returns an error if the authentication settings are not considered // valid. func (s3s S3Settings) Validate() error { - return s3s.Authentication.Validate() -} - -func (s3a S3AuthenticationSettings) Validate() error { - for accessKeyID, secretAccessKey := range s3a.V4Keypairs { + for accessKeyID, secretAccessKey := range s3s.Authentication.V4Keypairs { if accessKeyID == "" { return fmt.Errorf("AccessKeyID cannot be empty") } else if len(accessKeyID) < S3MinAccessKeyLen || len(accessKeyID) > S3MaxAccessKeyLen { diff --git a/bus/bus.go b/bus/bus.go index ff5320f70..dc6dff267 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -622,13 +622,28 @@ func (b *Bus) compatV2Settings(ctx context.Context) error { return nil } + // migrate gouging settings + if _, err := b.ss.GougingSettings(ctx); err != nil && !errors.Is(err, api.ErrSettingNotFound) { + return err + } else if errors.Is(err, api.ErrSettingNotFound) { + if err := b.ss.UpdateGougingSettings(ctx, api.DefaultGougingSettings); err != nil { + return err + } + } + // migrate S3 settings var s3as api.S3AuthenticationSettings if err := b.ss.Setting(ctx, "s3authentication", &s3as); err != nil && !errors.Is(err, api.ErrSettingNotFound) { return err + } else if errors.Is(err, api.ErrSettingNotFound) { + if err := b.ss.UpdateS3Settings(ctx, api.DefaultS3Settings); err != nil { + return err + } } else if err == nil { s3s := api.S3Settings{Authentication: s3as} - if err := b.ss.UpdateS3Settings(ctx, s3s); err != nil { + if err := s3s.Validate(); err != nil { + return fmt.Errorf("failed to migrate S3 setting: %w", err) + } else if err := b.ss.UpdateS3Settings(ctx, s3s); err != nil { return err } } @@ -642,7 +657,9 @@ func (b *Bus) compatV2Settings(ctx context.Context) error { return err } } else { - if err := b.ss.UpdatePinnedSettings(ctx, pps); err != nil { + if err := pps.Validate(); err != nil { + return fmt.Errorf("failed to migrate pinned setting: %w", err) + } else if err := b.ss.UpdatePinnedSettings(ctx, pps); err != nil { return err } } @@ -681,5 +698,11 @@ func (b *Bus) compatV2Settings(ctx context.Context) error { us.Packing = ups } - return b.ss.UpdateUploadSettings(ctx, us) + if err := us.Validate(); err != nil { + return fmt.Errorf("failed to migrate upload setting: %w", err) + } else if err := b.ss.UpdateUploadSettings(ctx, us); err != nil { + return err + } + + return nil } diff --git a/cmd/renterd/node.go b/cmd/renterd/node.go index e87116c93..5510788bb 100644 --- a/cmd/renterd/node.go +++ b/cmd/renterd/node.go @@ -9,7 +9,6 @@ import ( "os" "path/filepath" "runtime" - "strings" "time" "go.sia.tech/core/consensus" @@ -21,7 +20,6 @@ import ( "go.sia.tech/coreutils/wallet" "go.sia.tech/jape" "go.sia.tech/renterd/alerts" - "go.sia.tech/renterd/api" "go.sia.tech/renterd/autopilot" "go.sia.tech/renterd/build" "go.sia.tech/renterd/bus" @@ -411,36 +409,6 @@ func (n *node) Run() error { } } - // set initial S3 keys - if n.cfg.S3.Enabled && !n.cfg.S3.DisableAuth { - s3s, err := n.bus.S3Settings(context.Background()) - if err != nil && !strings.Contains(err.Error(), api.ErrSettingNotFound.Error()) { - return fmt.Errorf("failed to fetch S3 settings: %w", err) - } else if s3s.Authentication.V4Keypairs == nil { - s3s.Authentication.V4Keypairs = make(map[string]string) - } - - // S3 key pair validation was broken at one point, we need to remove the - // invalid key pairs here to ensure we don't fail when we update the - // setting below. - for k, v := range s3s.Authentication.V4Keypairs { - if err := (api.S3AuthenticationSettings{V4Keypairs: map[string]string{k: v}}).Validate(); err != nil { - n.logger.Infof("removing invalid S3 keypair for AccessKeyID %s, reason: %v", k, err) - delete(s3s.Authentication.V4Keypairs, k) - } - } - - // merge keys - for k, v := range n.cfg.S3.KeypairsV4 { - s3s.Authentication.V4Keypairs[k] = v - } - - // update settings - if err := n.bus.UpdateS3Settings(context.Background(), s3s); err != nil { - return fmt.Errorf("failed to update S3 settings: %w", err) - } - } - // start S3 server if n.s3Srv != nil { go n.s3Srv.Serve(n.s3Listener) From 7d7257b9a505eb3b4ca926514bd2c86db5d267a7 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 29 Aug 2024 10:42:28 +0200 Subject: [PATCH 018/708] sql: combine ObjectEntries and ListObjects in interface --- bus/routes.go | 4 +- internal/test/e2e/cluster_test.go | 34 +- stores/metadata.go | 8 +- stores/sql/database.go | 5 +- stores/sql/main.go | 687 +++++++++++++++--------------- stores/sql/mysql/main.go | 8 +- stores/sql/sqlite/main.go | 8 +- 7 files changed, 375 insertions(+), 379 deletions(-) diff --git a/bus/routes.go b/bus/routes.go index 13770da8c..73c65cc72 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1064,15 +1064,15 @@ func (b *Bus) objectHandlerGET(jc jape.Context) { } func (b *Bus) objectsHandlerGET(jc jape.Context) { - var limit int var marker, delim, prefix, sortBy, sortDir string bucket := api.DefaultBucketName if jc.DecodeForm("bucket", &bucket) != nil { return } - if jc.DecodeForm("delimiter", &limit) != nil { + if jc.DecodeForm("delimiter", &delim) != nil { return } + limit := -1 if jc.DecodeForm("limit", &limit) != nil { return } diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index ef527c975..b6f7da3f9 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -34,7 +34,7 @@ import ( "lukechampine.com/frand" ) -func TestListObjects(t *testing.T) { +func TestListObjectsWithNoDelimiter(t *testing.T) { if testing.Short() { t.SkipNow() } @@ -378,11 +378,11 @@ func TestNewTestCluster(t *testing.T) { } } -// TestObjectEntries is an integration test that verifies objects are uploaded, -// download and deleted from and to the paths we would expect. It is similar to -// the TestObjectEntries unit test, but uses the worker and bus client to verify -// paths are passed correctly. -func TestObjectEntries(t *testing.T) { +// TestListObjectsWithDelimiterSlash is an integration test that verifies +// objects are uploaded, download and deleted from and to the paths we +// would expect. It is similar to the TestObjectEntries unit test, but uses +// the worker and bus client to verify paths are passed correctly. +func TestListObjectsWithDelimiterSlash(t *testing.T) { if testing.Short() { t.SkipNow() } @@ -498,11 +498,12 @@ func TestObjectEntries(t *testing.T) { var marker string for offset := 0; offset < len(test.want); offset++ { res, err := b.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ - Prefix: test.path + test.prefix, - SortBy: test.sortBy, - SortDir: test.sortDir, - Marker: marker, - Limit: 1, + Delimiter: "/", + Prefix: test.path + test.prefix, + SortBy: test.sortBy, + SortDir: test.sortDir, + Marker: marker, + Limit: 1, }) marker = res.NextMarker if err != nil { @@ -524,11 +525,12 @@ func TestObjectEntries(t *testing.T) { } res, err = b.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ - Prefix: test.path + test.prefix, - SortBy: test.sortBy, - SortDir: test.sortDir, - Marker: test.want[offset].Name, - Limit: 1, + Delimiter: "/", + Prefix: test.path + test.prefix, + SortBy: test.sortBy, + SortDir: test.sortDir, + Marker: test.want[offset].Name, + Limit: 1, }) if err != nil { t.Fatalf("\nlist: %v\nprefix: %v\nsortBy: %v\nsortDir: %vmarker: %v\n\nerr: %v", test.path, test.prefix, test.sortBy, test.sortDir, test.want[offset].Name, err) diff --git a/stores/metadata.go b/stores/metadata.go index e716e09c7..c84e6c646 100644 --- a/stores/metadata.go +++ b/stores/metadata.go @@ -788,13 +788,7 @@ func (s *SQLStore) invalidateSlabHealthByFCID(ctx context.Context, fcids []types func (s *SQLStore) ListObjects(ctx context.Context, bucket, prefix, delim, sortBy, sortDir, marker string, limit int) (resp api.ObjectsListResponse, err error) { err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - if delim == "" { - resp, err = tx.ListObjects(ctx, bucket, prefix, sortBy, sortDir, marker, limit) - } else if delim == "/" { - resp, err = tx.ObjectEntries(ctx, bucket, prefix, sortBy, sortDir, marker, limit) - } else { - return fmt.Errorf("unsupported delimiter: '%s'", delim) - } + resp, err = tx.ListObjects(ctx, bucket, prefix, delim, sortBy, sortDir, marker, limit) return err }) return diff --git a/stores/sql/database.go b/stores/sql/database.go index e314d848f..a9d4e8a06 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -193,7 +193,7 @@ type ( ListBuckets(ctx context.Context) ([]api.Bucket, error) // ListObjects returns a list of objects from the given bucket. - ListObjects(ctx context.Context, bucket, prefix, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) + ListObjects(ctx context.Context, bucket, prefix, delim, sortBy, sortDir, marker string, limit int) (resp api.ObjectsListResponse, err error) // MakeDirsForPath creates all directories for a given object's path. MakeDirsForPath(ctx context.Context, path string) (int64, error) @@ -217,9 +217,6 @@ type ( // Object returns an object from the database. Object(ctx context.Context, bucket, key string) (api.Object, error) - // ObjectEntries queries the database for objects in a given dir. - ObjectEntries(ctx context.Context, bucket, prefix, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) - // ObjectMetadata returns an object's metadata. ObjectMetadata(ctx context.Context, bucket, key string) (api.Object, error) diff --git a/stores/sql/main.go b/stores/sql/main.go index d7241d7f4..202108c9e 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -1013,102 +1013,15 @@ func orderByObject(sortBy, sortDir string) (orderByExprs []string, _ error) { return orderByExprs, nil } -func ListObjects(ctx context.Context, tx Tx, bucket, prefix, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { - // fetch one more to see if there are more entries - if limit <= -1 { - limit = math.MaxInt - } else if limit != math.MaxInt { - limit++ - } - - // establish sane defaults for sorting - if sortBy == "" { - sortBy = api.ObjectSortByName - } - if sortDir == "" { - sortDir = api.ObjectSortDirAsc - } - - // filter by bucket - whereExprs := []string{"o.db_bucket_id = (SELECT id FROM buckets b WHERE b.name = ?)"} - whereArgs := []any{bucket} - - // apply prefix - if prefix != "" { - whereExprs = append(whereExprs, "o.object_id LIKE ? AND SUBSTR(o.object_id, 1, ?) = ?") - whereArgs = append(whereArgs, prefix+"%", utf8.RuneCountInString(prefix), prefix) - } - - // apply sorting - orderByExprs, err := orderByObject(sortBy, sortDir) - if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to apply sorting: %w", err) - } - - // apply marker - markerExprs, markerArgs, err := whereObjectMarker(marker, sortBy, sortDir, func(dst any, marker, col string) error { - err := tx.QueryRow(ctx, fmt.Sprintf(` - SELECT o.%s - FROM objects o - INNER JOIN buckets b ON o.db_bucket_id = b.id - WHERE b.name = ? AND o.object_id = ? - `, col), bucket, marker).Scan(dst) - if errors.Is(err, dsql.ErrNoRows) { - return api.ErrMarkerNotFound - } else { - return err - } - }) - if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to get marker exprs: %w", err) - } - whereExprs = append(whereExprs, markerExprs...) - whereArgs = append(whereArgs, markerArgs...) - - // apply limit - whereArgs = append(whereArgs, limit) - - // run query - rows, err := tx.Query(ctx, fmt.Sprintf(` - SELECT %s - FROM objects o - WHERE %s - ORDER BY %s - LIMIT ? - `, - tx.SelectObjectMetadataExpr(), - strings.Join(whereExprs, " AND "), - strings.Join(orderByExprs, ", ")), - whereArgs...) - if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to fetch objects: %w", err) - } - defer rows.Close() - - var objects []api.ObjectMetadata - for rows.Next() { - om, err := tx.ScanObjectMetadata(rows) - if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to scan object metadata: %w", err) - } - objects = append(objects, om) - } - - var hasMore bool - var nextMarker string - if len(objects) == limit { - objects = objects[:len(objects)-1] - if len(objects) > 0 { - hasMore = true - nextMarker = objects[len(objects)-1].Name - } +func ListObjects(ctx context.Context, tx Tx, bucket, prefix, delim, sortBy, sortDir, marker string, limit int) (resp api.ObjectsListResponse, err error) { + if delim == "" { + resp, err = listObjectsNoDelim(ctx, tx, bucket, prefix, sortBy, sortDir, marker, limit) + } else if delim == "/" { + resp, err = listObjectsSlashDelim(ctx, tx, bucket, prefix, sortBy, sortDir, marker, limit) + } else { + err = fmt.Errorf("unsupported delimiter: '%s'", delim) } - - return api.ObjectsListResponse{ - HasMore: hasMore, - NextMarker: nextMarker, - Objects: objects, - }, nil + return } func MultipartUpload(ctx context.Context, tx sql.Tx, uploadID string) (api.MultipartUpload, error) { @@ -1353,266 +1266,99 @@ func dirID(ctx context.Context, tx sql.Tx, dirPath string) (int64, error) { return id, nil } -func ObjectEntries(ctx context.Context, tx Tx, bucket, prefix, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { - // split prefix into path and object prefix - path := "/" // root of bucket - if idx := strings.LastIndex(prefix, "/"); idx != -1 { - path = prefix[:idx+1] - prefix = prefix[idx+1:] - } - if !strings.HasSuffix(path, "/") { - panic("path must end with /") - } - - // fetch one more to see if there are more entries - if limit <= -1 { - limit = math.MaxInt - } else if limit != math.MaxInt { - limit++ - } - - // establish sane defaults for sorting - if sortBy == "" { - sortBy = api.ObjectSortByName - } - if sortDir == "" { - sortDir = api.ObjectSortDirAsc +func ObjectMetadata(ctx context.Context, tx Tx, bucket, key string) (api.Object, error) { + // fetch object id + var objID int64 + if err := tx.QueryRow(ctx, ` + SELECT o.id + FROM objects o + INNER JOIN buckets b ON b.id = o.db_bucket_id + WHERE o.object_id = ? AND b.name = ? + `, key, bucket).Scan(&objID); errors.Is(err, dsql.ErrNoRows) { + return api.Object{}, api.ErrObjectNotFound + } else if err != nil { + return api.Object{}, fmt.Errorf("failed to fetch object id: %w", err) } - // fetch directory id - dirID, err := dirID(ctx, tx, path) - if errors.Is(err, dsql.ErrNoRows) { - return api.ObjectsListResponse{}, nil - } else if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to fetch directory id: %w", err) + // fetch metadata + om, err := tx.ScanObjectMetadata(tx.QueryRow(ctx, fmt.Sprintf(` + SELECT %s + FROM objects o + WHERE o.id = ? + `, tx.SelectObjectMetadataExpr()), objID)) + if err != nil { + return api.Object{}, fmt.Errorf("failed to fetch object metadata: %w", err) } - args := []any{ - path, - dirID, bucket, + // fetch user metadata + rows, err := tx.Query(ctx, ` + SELECT oum.key, oum.value + FROM object_user_metadata oum + WHERE oum.db_object_id = ? + ORDER BY oum.id ASC + `, objID) + if err != nil { + return api.Object{}, fmt.Errorf("failed to fetch user metadata: %w", err) } + defer rows.Close() - // apply prefix - var prefixExpr string - if prefix != "" { - prefixExpr = "AND SUBSTR(o.object_id, 1, ?) = ?" - args = append(args, - utf8.RuneCountInString(path+prefix), path+prefix, - utf8.RuneCountInString(path+prefix), path+prefix, - ) + // build object + metadata := make(api.ObjectUserMetadata) + for rows.Next() { + var key, value string + if err := rows.Scan(&key, &value); err != nil { + return api.Object{}, fmt.Errorf("failed to scan user metadata: %w", err) + } + metadata[key] = value } - args = append(args, - bucket, - path+"%", - utf8.RuneCountInString(path), path, - dirID, - ) + return api.Object{ + Metadata: metadata, + ObjectMetadata: om, + Object: nil, // only return metadata + }, nil +} - // apply marker - var whereExpr string - markerExprs, markerArgs, err := whereObjectMarker(marker, sortBy, sortDir, func(dst any, marker, col string) error { - var groupFn string - switch col { - case "size": - groupFn = "SUM" - case "health": - groupFn = "MIN" - default: - return fmt.Errorf("unknown column: %v", col) - } - err := tx.QueryRow(ctx, fmt.Sprintf(` - SELECT o.%s - FROM objects o - INNER JOIN buckets b ON o.db_bucket_id = b.id - WHERE b.name = ? AND o.object_id = ? - UNION ALL - SELECT %s(o.%s) - FROM objects o - INNER JOIN buckets b ON o.db_bucket_id = b.id - INNER JOIN directories d ON SUBSTR(o.object_id, 1, %s(d.name)) = d.name - WHERE b.name = ? AND d.name = ? - GROUP BY d.id - `, col, groupFn, col, tx.CharLengthExpr()), bucket, marker, bucket, marker).Scan(dst) +func ObjectsStats(ctx context.Context, tx sql.Tx, opts api.ObjectsStatsOpts) (api.ObjectsStatsResponse, error) { + var args []any + var bucketExpr string + var bucketID int64 + if opts.Bucket != "" { + err := tx.QueryRow(ctx, "SELECT id FROM buckets WHERE name = ?", opts.Bucket). + Scan(&bucketID) if errors.Is(err, dsql.ErrNoRows) { - return api.ErrMarkerNotFound - } else { - return err + return api.ObjectsStatsResponse{}, api.ErrBucketNotFound + } else if err != nil { + return api.ObjectsStatsResponse{}, fmt.Errorf("failed to fetch bucket id: %w", err) } - }) + bucketExpr = "WHERE db_bucket_id = ?" + args = append(args, bucketID) + } + + // objects stats + var numObjects, totalObjectsSize uint64 + var minHealth float64 + err := tx.QueryRow(ctx, "SELECT COUNT(*), COALESCE(MIN(health), 1), COALESCE(SUM(size), 0) FROM objects "+bucketExpr, args...). + Scan(&numObjects, &minHealth, &totalObjectsSize) if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to query marker: %w", err) - } else if len(markerExprs) > 0 { - whereExpr = "WHERE " + strings.Join(markerExprs, " AND ") + return api.ObjectsStatsResponse{}, fmt.Errorf("failed to fetch objects stats: %w", err) } - args = append(args, markerArgs...) - // apply sorting - orderByExprs, err := orderByObject(sortBy, sortDir) + // multipart upload stats + var unfinishedObjects uint64 + err = tx.QueryRow(ctx, "SELECT COUNT(*) FROM multipart_uploads "+bucketExpr, args...). + Scan(&unfinishedObjects) if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to apply sorting: %w", err) + return api.ObjectsStatsResponse{}, fmt.Errorf("failed to fetch multipart upload stats: %w", err) } - // apply offset and limit - args = append(args, limit) - - // objectsQuery consists of 2 parts - // 1. fetch all objects in requested directory - // 2. fetch all sub-directories - rows, err := tx.Query(ctx, fmt.Sprintf(` - SELECT %s - FROM ( - SELECT o.object_id, o.size, o.health, o.mime_type, o.created_at, o.etag - FROM objects o - LEFT JOIN directories d ON d.name = o.object_id - WHERE o.object_id != ? AND o.db_directory_id = ? AND o.db_bucket_id = (SELECT id FROM buckets b WHERE b.name = ?) %s - AND d.id IS NULL - UNION ALL - SELECT d.name as object_id, SUM(o.size), MIN(o.health), '' as mime_type, MAX(o.created_at) as created_at, '' as etag - FROM objects o - INNER JOIN directories d ON SUBSTR(o.object_id, 1, %s(d.name)) = d.name %s - WHERE o.db_bucket_id = (SELECT id FROM buckets b WHERE b.name = ?) - AND o.object_id LIKE ? - AND SUBSTR(o.object_id, 1, ?) = ? - AND d.db_parent_id = ? - GROUP BY d.id - ) AS o - %s - ORDER BY %s - LIMIT ? - `, - tx.SelectObjectMetadataExpr(), - prefixExpr, - tx.CharLengthExpr(), - prefixExpr, - whereExpr, - strings.Join(orderByExprs, ", "), - ), args...) - if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to fetch objects: %w", err) - } - defer rows.Close() - - var objects []api.ObjectMetadata - for rows.Next() { - om, err := tx.ScanObjectMetadata(rows) - if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to scan object metadata: %w", err) - } - objects = append(objects, om) - } - - // trim last element if we have more - var hasMore bool - var nextMarker string - if len(objects) == limit { - objects = objects[:len(objects)-1] - if len(objects) > 0 { - hasMore = true - nextMarker = objects[len(objects)-1].Name - } - } - - return api.ObjectsListResponse{ - HasMore: hasMore, - NextMarker: nextMarker, - Objects: objects, - }, nil -} - -func ObjectMetadata(ctx context.Context, tx Tx, bucket, key string) (api.Object, error) { - // fetch object id - var objID int64 - if err := tx.QueryRow(ctx, ` - SELECT o.id - FROM objects o - INNER JOIN buckets b ON b.id = o.db_bucket_id - WHERE o.object_id = ? AND b.name = ? - `, key, bucket).Scan(&objID); errors.Is(err, dsql.ErrNoRows) { - return api.Object{}, api.ErrObjectNotFound - } else if err != nil { - return api.Object{}, fmt.Errorf("failed to fetch object id: %w", err) - } - - // fetch metadata - om, err := tx.ScanObjectMetadata(tx.QueryRow(ctx, fmt.Sprintf(` - SELECT %s - FROM objects o - WHERE o.id = ? - `, tx.SelectObjectMetadataExpr()), objID)) - if err != nil { - return api.Object{}, fmt.Errorf("failed to fetch object metadata: %w", err) - } - - // fetch user metadata - rows, err := tx.Query(ctx, ` - SELECT oum.key, oum.value - FROM object_user_metadata oum - WHERE oum.db_object_id = ? - ORDER BY oum.id ASC - `, objID) - if err != nil { - return api.Object{}, fmt.Errorf("failed to fetch user metadata: %w", err) - } - defer rows.Close() - - // build object - metadata := make(api.ObjectUserMetadata) - for rows.Next() { - var key, value string - if err := rows.Scan(&key, &value); err != nil { - return api.Object{}, fmt.Errorf("failed to scan user metadata: %w", err) - } - metadata[key] = value - } - - return api.Object{ - Metadata: metadata, - ObjectMetadata: om, - Object: nil, // only return metadata - }, nil -} - -func ObjectsStats(ctx context.Context, tx sql.Tx, opts api.ObjectsStatsOpts) (api.ObjectsStatsResponse, error) { - var args []any - var bucketExpr string - var bucketID int64 - if opts.Bucket != "" { - err := tx.QueryRow(ctx, "SELECT id FROM buckets WHERE name = ?", opts.Bucket). - Scan(&bucketID) - if errors.Is(err, dsql.ErrNoRows) { - return api.ObjectsStatsResponse{}, api.ErrBucketNotFound - } else if err != nil { - return api.ObjectsStatsResponse{}, fmt.Errorf("failed to fetch bucket id: %w", err) - } - bucketExpr = "WHERE db_bucket_id = ?" - args = append(args, bucketID) - } - - // objects stats - var numObjects, totalObjectsSize uint64 - var minHealth float64 - err := tx.QueryRow(ctx, "SELECT COUNT(*), COALESCE(MIN(health), 1), COALESCE(SUM(size), 0) FROM objects "+bucketExpr, args...). - Scan(&numObjects, &minHealth, &totalObjectsSize) - if err != nil { - return api.ObjectsStatsResponse{}, fmt.Errorf("failed to fetch objects stats: %w", err) - } - - // multipart upload stats - var unfinishedObjects uint64 - err = tx.QueryRow(ctx, "SELECT COUNT(*) FROM multipart_uploads "+bucketExpr, args...). - Scan(&unfinishedObjects) - if err != nil { - return api.ObjectsStatsResponse{}, fmt.Errorf("failed to fetch multipart upload stats: %w", err) - } - - // multipart upload part stats - var totalUnfinishedObjectsSize uint64 - err = tx.QueryRow(ctx, "SELECT COALESCE(SUM(size), 0) FROM multipart_parts mp INNER JOIN multipart_uploads mu ON mp.db_multipart_upload_id = mu.id "+bucketExpr, args...). - Scan(&totalUnfinishedObjectsSize) - if err != nil { - return api.ObjectsStatsResponse{}, fmt.Errorf("failed to fetch multipart upload part stats: %w", err) - } + // multipart upload part stats + var totalUnfinishedObjectsSize uint64 + err = tx.QueryRow(ctx, "SELECT COALESCE(SUM(size), 0) FROM multipart_parts mp INNER JOIN multipart_uploads mu ON mp.db_multipart_upload_id = mu.id "+bucketExpr, args...). + Scan(&totalUnfinishedObjectsSize) + if err != nil { + return api.ObjectsStatsResponse{}, fmt.Errorf("failed to fetch multipart upload part stats: %w", err) + } // total sectors var whereExpr string @@ -2920,3 +2666,268 @@ func Object(ctx context.Context, tx Tx, bucket, key string) (api.Object, error) }, }, nil } + +func listObjectsNoDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { + // fetch one more to see if there are more entries + if limit <= -1 { + limit = math.MaxInt + } else if limit != math.MaxInt { + limit++ + } + + // establish sane defaults for sorting + if sortBy == "" { + sortBy = api.ObjectSortByName + } + if sortDir == "" { + sortDir = api.ObjectSortDirAsc + } + + // filter by bucket + whereExprs := []string{"o.db_bucket_id = (SELECT id FROM buckets b WHERE b.name = ?)"} + whereArgs := []any{bucket} + + // apply prefix + if prefix != "" { + whereExprs = append(whereExprs, "o.object_id LIKE ? AND SUBSTR(o.object_id, 1, ?) = ?") + whereArgs = append(whereArgs, prefix+"%", utf8.RuneCountInString(prefix), prefix) + } + + // apply sorting + orderByExprs, err := orderByObject(sortBy, sortDir) + if err != nil { + return api.ObjectsListResponse{}, fmt.Errorf("failed to apply sorting: %w", err) + } + + // apply marker + markerExprs, markerArgs, err := whereObjectMarker(marker, sortBy, sortDir, func(dst any, marker, col string) error { + err := tx.QueryRow(ctx, fmt.Sprintf(` + SELECT o.%s + FROM objects o + INNER JOIN buckets b ON o.db_bucket_id = b.id + WHERE b.name = ? AND o.object_id = ? + `, col), bucket, marker).Scan(dst) + if errors.Is(err, dsql.ErrNoRows) { + return api.ErrMarkerNotFound + } else { + return err + } + }) + if err != nil { + return api.ObjectsListResponse{}, fmt.Errorf("failed to get marker exprs: %w", err) + } + whereExprs = append(whereExprs, markerExprs...) + whereArgs = append(whereArgs, markerArgs...) + + // apply limit + whereArgs = append(whereArgs, limit) + + // run query + rows, err := tx.Query(ctx, fmt.Sprintf(` + SELECT %s + FROM objects o + WHERE %s + ORDER BY %s + LIMIT ? + `, + tx.SelectObjectMetadataExpr(), + strings.Join(whereExprs, " AND "), + strings.Join(orderByExprs, ", ")), + whereArgs...) + if err != nil { + return api.ObjectsListResponse{}, fmt.Errorf("failed to fetch objects: %w", err) + } + defer rows.Close() + + var objects []api.ObjectMetadata + for rows.Next() { + om, err := tx.ScanObjectMetadata(rows) + if err != nil { + return api.ObjectsListResponse{}, fmt.Errorf("failed to scan object metadata: %w", err) + } + objects = append(objects, om) + } + + var hasMore bool + var nextMarker string + if len(objects) == limit { + objects = objects[:len(objects)-1] + if len(objects) > 0 { + hasMore = true + nextMarker = objects[len(objects)-1].Name + } + } + + return api.ObjectsListResponse{ + HasMore: hasMore, + NextMarker: nextMarker, + Objects: objects, + }, nil +} + +func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { + // split prefix into path and object prefix + path := "/" // root of bucket + if idx := strings.LastIndex(prefix, "/"); idx != -1 { + path = prefix[:idx+1] + prefix = prefix[idx+1:] + } + if !strings.HasSuffix(path, "/") { + panic("path must end with /") + } + + // fetch one more to see if there are more entries + if limit <= -1 { + limit = math.MaxInt + } else if limit != math.MaxInt { + limit++ + } + + // establish sane defaults for sorting + if sortBy == "" { + sortBy = api.ObjectSortByName + } + if sortDir == "" { + sortDir = api.ObjectSortDirAsc + } + + // fetch directory id + dirID, err := dirID(ctx, tx, path) + if errors.Is(err, dsql.ErrNoRows) { + return api.ObjectsListResponse{}, nil + } else if err != nil { + return api.ObjectsListResponse{}, fmt.Errorf("failed to fetch directory id: %w", err) + } + + args := []any{ + path, + dirID, bucket, + } + + // apply prefix + var prefixExpr string + if prefix != "" { + prefixExpr = "AND SUBSTR(o.object_id, 1, ?) = ?" + args = append(args, + utf8.RuneCountInString(path+prefix), path+prefix, + utf8.RuneCountInString(path+prefix), path+prefix, + ) + } + + args = append(args, + bucket, + path+"%", + utf8.RuneCountInString(path), path, + dirID, + ) + + // apply marker + var whereExpr string + markerExprs, markerArgs, err := whereObjectMarker(marker, sortBy, sortDir, func(dst any, marker, col string) error { + var groupFn string + switch col { + case "size": + groupFn = "SUM" + case "health": + groupFn = "MIN" + default: + return fmt.Errorf("unknown column: %v", col) + } + err := tx.QueryRow(ctx, fmt.Sprintf(` + SELECT o.%s + FROM objects o + INNER JOIN buckets b ON o.db_bucket_id = b.id + WHERE b.name = ? AND o.object_id = ? + UNION ALL + SELECT %s(o.%s) + FROM objects o + INNER JOIN buckets b ON o.db_bucket_id = b.id + INNER JOIN directories d ON SUBSTR(o.object_id, 1, %s(d.name)) = d.name + WHERE b.name = ? AND d.name = ? + GROUP BY d.id + `, col, groupFn, col, tx.CharLengthExpr()), bucket, marker, bucket, marker).Scan(dst) + if errors.Is(err, dsql.ErrNoRows) { + return api.ErrMarkerNotFound + } else { + return err + } + }) + if err != nil { + return api.ObjectsListResponse{}, fmt.Errorf("failed to query marker: %w", err) + } else if len(markerExprs) > 0 { + whereExpr = "WHERE " + strings.Join(markerExprs, " AND ") + } + args = append(args, markerArgs...) + + // apply sorting + orderByExprs, err := orderByObject(sortBy, sortDir) + if err != nil { + return api.ObjectsListResponse{}, fmt.Errorf("failed to apply sorting: %w", err) + } + + // apply offset and limit + args = append(args, limit) + + // objectsQuery consists of 2 parts + // 1. fetch all objects in requested directory + // 2. fetch all sub-directories + rows, err := tx.Query(ctx, fmt.Sprintf(` + SELECT %s + FROM ( + SELECT o.object_id, o.size, o.health, o.mime_type, o.created_at, o.etag + FROM objects o + LEFT JOIN directories d ON d.name = o.object_id + WHERE o.object_id != ? AND o.db_directory_id = ? AND o.db_bucket_id = (SELECT id FROM buckets b WHERE b.name = ?) %s + AND d.id IS NULL + UNION ALL + SELECT d.name as object_id, SUM(o.size), MIN(o.health), '' as mime_type, MAX(o.created_at) as created_at, '' as etag + FROM objects o + INNER JOIN directories d ON SUBSTR(o.object_id, 1, %s(d.name)) = d.name %s + WHERE o.db_bucket_id = (SELECT id FROM buckets b WHERE b.name = ?) + AND o.object_id LIKE ? + AND SUBSTR(o.object_id, 1, ?) = ? + AND d.db_parent_id = ? + GROUP BY d.id + ) AS o + %s + ORDER BY %s + LIMIT ? + `, + tx.SelectObjectMetadataExpr(), + prefixExpr, + tx.CharLengthExpr(), + prefixExpr, + whereExpr, + strings.Join(orderByExprs, ", "), + ), args...) + if err != nil { + return api.ObjectsListResponse{}, fmt.Errorf("failed to fetch objects: %w", err) + } + defer rows.Close() + + var objects []api.ObjectMetadata + for rows.Next() { + om, err := tx.ScanObjectMetadata(rows) + if err != nil { + return api.ObjectsListResponse{}, fmt.Errorf("failed to scan object metadata: %w", err) + } + objects = append(objects, om) + } + + // trim last element if we have more + var hasMore bool + var nextMarker string + if len(objects) == limit { + objects = objects[:len(objects)-1] + if len(objects) > 0 { + hasMore = true + nextMarker = objects[len(objects)-1].Name + } + } + + return api.ObjectsListResponse{ + HasMore: hasMore, + NextMarker: nextMarker, + Objects: objects, + }, nil +} diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index e8cf69780..fe39f09e3 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -470,8 +470,8 @@ func (tx *MainDatabaseTx) ListBuckets(ctx context.Context) ([]api.Bucket, error) return ssql.ListBuckets(ctx, tx) } -func (tx *MainDatabaseTx) ListObjects(ctx context.Context, bucket, prefix, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { - return ssql.ListObjects(ctx, tx, bucket, prefix, sortBy, sortDir, marker, limit) +func (tx *MainDatabaseTx) ListObjects(ctx context.Context, bucket, prefix, delim, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { + return ssql.ListObjects(ctx, tx, bucket, prefix, delim, sortBy, sortDir, marker, limit) } func (tx *MainDatabaseTx) MakeDirsForPath(ctx context.Context, path string) (int64, error) { @@ -530,10 +530,6 @@ func (tx *MainDatabaseTx) Object(ctx context.Context, bucket, key string) (api.O return ssql.Object(ctx, tx, bucket, key) } -func (tx *MainDatabaseTx) ObjectEntries(ctx context.Context, bucket, prefix, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { - return ssql.ObjectEntries(ctx, tx, bucket, prefix, sortBy, sortDir, marker, limit) -} - func (tx *MainDatabaseTx) ObjectMetadata(ctx context.Context, bucket, path string) (api.Object, error) { return ssql.ObjectMetadata(ctx, tx, bucket, path) } diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index 674bf8237..a3dee2af5 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -457,8 +457,8 @@ func (tx *MainDatabaseTx) ListBuckets(ctx context.Context) ([]api.Bucket, error) return ssql.ListBuckets(ctx, tx) } -func (tx *MainDatabaseTx) ListObjects(ctx context.Context, bucket, prefix, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { - return ssql.ListObjects(ctx, tx, bucket, prefix, sortBy, sortDir, marker, limit) +func (tx *MainDatabaseTx) ListObjects(ctx context.Context, bucket, prefix, delim, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { + return ssql.ListObjects(ctx, tx, bucket, prefix, delim, sortBy, sortDir, marker, limit) } func (tx *MainDatabaseTx) MakeDirsForPath(ctx context.Context, path string) (int64, error) { @@ -527,10 +527,6 @@ func (tx *MainDatabaseTx) Object(ctx context.Context, bucket, key string) (api.O return ssql.Object(ctx, tx, bucket, key) } -func (tx *MainDatabaseTx) ObjectEntries(ctx context.Context, bucket, prefix, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { - return ssql.ObjectEntries(ctx, tx, bucket, prefix, sortBy, sortDir, marker, limit) -} - func (tx *MainDatabaseTx) ObjectMetadata(ctx context.Context, bucket, path string) (api.Object, error) { return ssql.ObjectMetadata(ctx, tx, bucket, path) } From 54b3d34d377a588661392087c5c1f7042765d508 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 29 Aug 2024 10:49:30 +0200 Subject: [PATCH 019/708] api: get rid of setting constants --- api/events.go | 20 +++++++------- api/setting.go | 7 ----- bus/bus.go | 26 +++++++++++------- bus/client/settings.go | 8 +++--- bus/routes.go | 38 ++++++++++++-------------- internal/bus/pinmanager.go | 7 +++-- internal/test/e2e/events_test.go | 8 +----- internal/worker/cache.go | 46 ++++++++------------------------ stores/settingsdb.go | 31 ++++++++++++--------- 9 files changed, 82 insertions(+), 109 deletions(-) diff --git a/api/events.go b/api/events.go index 38d490506..bd6dcd776 100644 --- a/api/events.go +++ b/api/events.go @@ -50,22 +50,24 @@ type ( Timestamp time.Time `json:"timestamp"` } - EventHostUpdate struct { - HostKey types.PublicKey `json:"hostKey"` - NetAddr string `json:"netAddr"` - Timestamp time.Time `json:"timestamp"` - } - EventContractSetUpdate struct { Name string `json:"name"` ContractIDs []types.FileContractID `json:"contractIDs"` Timestamp time.Time `json:"timestamp"` } + EventHostUpdate struct { + HostKey types.PublicKey `json:"hostKey"` + NetAddr string `json:"netAddr"` + Timestamp time.Time `json:"timestamp"` + } + EventSettingUpdate struct { - Key string `json:"key"` - Update interface{} `json:"update"` - Timestamp time.Time `json:"timestamp"` + GougingSettings *GougingSettings `json:"gougingSettings,omitempty"` + PinnedSettings *PinnedSettings `json:"pinnedSettings,omitempty"` + S3Settings *S3Settings `json:"s3Settings,omitempty"` + UploadSettings *UploadSettings `json:"uploadSettings,omitempty"` + Timestamp time.Time `json:"timestamp"` } ) diff --git a/api/setting.go b/api/setting.go index 237a96f5f..e4741e5ff 100644 --- a/api/setting.go +++ b/api/setting.go @@ -9,13 +9,6 @@ import ( "go.sia.tech/core/types" ) -const ( - SettingGouging = "gouging" - SettingPinned = "pinned" - SettingS3 = "s3" - SettingUpload = "upload" -) - const ( S3MinAccessKeyLen = 16 S3MaxAccessKeyLen = 128 diff --git a/bus/bus.go b/bus/bus.go index dc6dff267..b7513177e 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -26,6 +26,7 @@ import ( "go.sia.tech/renterd/internal/rhp" rhp2 "go.sia.tech/renterd/internal/rhp/v2" "go.sia.tech/renterd/object" + "go.sia.tech/renterd/stores" "go.sia.tech/renterd/stores/sql" "go.sia.tech/renterd/webhooks" "go.uber.org/zap" @@ -281,7 +282,7 @@ type ( UpdateGougingSettings(ctx context.Context, gs api.GougingSettings) error PinnedSettings(ctx context.Context) (api.PinnedSettings, error) - UpdatePinnedSettings(ctx context.Context, pps api.PinnedSettings) error + UpdatePinnedSettings(ctx context.Context, ps api.PinnedSettings) error UploadSettings(ctx context.Context) (api.UploadSettings, error) UpdateUploadSettings(ctx context.Context, us api.UploadSettings) error @@ -614,10 +615,10 @@ func (b *Bus) deriveSubKey(purpose string) types.PrivateKey { func (b *Bus) compatV2Settings(ctx context.Context) error { // escape early if all settings are present if !errors.Is(errors.Join( - b.ss.Setting(ctx, api.SettingGouging, struct{}{}), - b.ss.Setting(ctx, api.SettingPinned, struct{}{}), - b.ss.Setting(ctx, api.SettingS3, struct{}{}), - b.ss.Setting(ctx, api.SettingUpload, struct{}{}), + b.ss.Setting(ctx, stores.SettingGouging, nil), + b.ss.Setting(ctx, stores.SettingPinned, nil), + b.ss.Setting(ctx, stores.SettingS3, nil), + b.ss.Setting(ctx, stores.SettingUpload, nil), ), api.ErrSettingNotFound) { return nil } @@ -649,17 +650,17 @@ func (b *Bus) compatV2Settings(ctx context.Context) error { } // migrate pinned settings - var pps api.PinnedSettings - if err := b.ss.Setting(ctx, "pricepinning", &pps); err != nil && !errors.Is(err, api.ErrSettingNotFound) { + var ps api.PinnedSettings + if err := b.ss.Setting(ctx, "pricepinning", &ps); err != nil && !errors.Is(err, api.ErrSettingNotFound) { return err } else if errors.Is(err, api.ErrSettingNotFound) { if err := b.ss.UpdatePinnedSettings(ctx, api.DefaultPinnedSettings); err != nil { return err } } else { - if err := pps.Validate(); err != nil { + if err := ps.Validate(); err != nil { return fmt.Errorf("failed to migrate pinned setting: %w", err) - } else if err := b.ss.UpdatePinnedSettings(ctx, pps); err != nil { + } else if err := b.ss.UpdatePinnedSettings(ctx, ps); err != nil { return err } } @@ -704,5 +705,10 @@ func (b *Bus) compatV2Settings(ctx context.Context) error { return err } - return nil + // delete old settings + return errors.Join( + b.ss.DeleteSetting(ctx, "contractset"), + b.ss.DeleteSetting(ctx, "pricepinning"), + b.ss.DeleteSetting(ctx, "uploadpacking"), + ) } diff --git a/bus/client/settings.go b/bus/client/settings.go index 5723c3cdd..46d3e8708 100644 --- a/bus/client/settings.go +++ b/bus/client/settings.go @@ -18,14 +18,14 @@ func (c *Client) UpdateGougingSettings(ctx context.Context, gs api.GougingSettin } // PricePinningSettings returns the contract set settings. -func (c *Client) PricePinningSettings(ctx context.Context) (pps api.PinnedSettings, err error) { - err = c.c.WithContext(ctx).GET("/settings/pinned", &pps) +func (c *Client) PricePinningSettings(ctx context.Context) (ps api.PinnedSettings, err error) { + err = c.c.WithContext(ctx).GET("/settings/pinned", &ps) return } // UpdatePinnedSettings updates the given setting. -func (c *Client) UpdatePinnedSettings(ctx context.Context, pps api.PinnedSettings) error { - return c.c.WithContext(ctx).PUT("/settings/pinned", pps) +func (c *Client) UpdatePinnedSettings(ctx context.Context, ps api.PinnedSettings) error { + return c.c.WithContext(ctx).PUT("/settings/pinned", ps) } // S3Settings returns the S3 settings. diff --git a/bus/routes.go b/bus/routes.go index e681b1b93..284609981 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1272,9 +1272,8 @@ func (b *Bus) settingsGougingHandlerPUT(jc jape.Context) { Module: api.ModuleSetting, Event: api.EventUpdate, Payload: api.EventSettingUpdate{ - Key: api.SettingGouging, - Update: gs, - Timestamp: time.Now().UTC(), + GougingSettings: &gs, + Timestamp: time.Now().UTC(), }, }) b.pinMgr.TriggerUpdate() @@ -1284,7 +1283,7 @@ func (b *Bus) settingsGougingHandlerPUT(jc jape.Context) { func (b *Bus) settingsPinnedHandlerGET(jc jape.Context) { if pps, err := b.ss.PinnedSettings(jc.Request.Context()); errors.Is(err, api.ErrSettingNotFound) { jc.Error(err, http.StatusNotFound) - } else if jc.Check("failed to get price pinning settings", err) == nil { + } else if jc.Check("failed to get pinned settings", err) == nil { // populate the Autopilots map with the current autopilots aps, err := b.as.Autopilots(jc.Request.Context()) if jc.Check("failed to fetch autopilots", err) != nil { @@ -1303,26 +1302,25 @@ func (b *Bus) settingsPinnedHandlerGET(jc jape.Context) { } func (b *Bus) settingsPinnedHandlerPUT(jc jape.Context) { - var pps api.PinnedSettings - if jc.Decode(&pps) != nil { + var ps api.PinnedSettings + if jc.Decode(&ps) != nil { return - } else if err := pps.Validate(); err != nil { - jc.Error(fmt.Errorf("couldn't update price pinning settings, error: %v", err), http.StatusBadRequest) + } else if err := ps.Validate(); err != nil { + jc.Error(fmt.Errorf("couldn't update pinned settings, error: %v", err), http.StatusBadRequest) return - } else if pps.Enabled { - if _, err := ibus.NewForexClient(pps.ForexEndpointURL).SiacoinExchangeRate(jc.Request.Context(), pps.Currency); err != nil { - jc.Error(fmt.Errorf("couldn't update price pinning settings, forex API unreachable,error: %v", err), http.StatusBadRequest) + } else if ps.Enabled { + if _, err := ibus.NewForexClient(ps.ForexEndpointURL).SiacoinExchangeRate(jc.Request.Context(), ps.Currency); err != nil { + jc.Error(fmt.Errorf("couldn't update pinned settings, forex API unreachable,error: %v", err), http.StatusBadRequest) return } } - if jc.Check("could not update price pinning settings", b.ss.UpdatePinnedSettings(jc.Request.Context(), pps)) == nil { + if jc.Check("could not update pinned settings", b.ss.UpdatePinnedSettings(jc.Request.Context(), ps)) == nil { b.broadcastAction(webhooks.Event{ Module: api.ModuleSetting, Event: api.EventUpdate, Payload: api.EventSettingUpdate{ - Key: api.SettingPinned, - Update: pps, - Timestamp: time.Now().UTC(), + PinnedSettings: &ps, + Timestamp: time.Now().UTC(), }, }) b.pinMgr.TriggerUpdate() @@ -1349,9 +1347,8 @@ func (b *Bus) settingsUploadHandlerPUT(jc jape.Context) { Module: api.ModuleSetting, Event: api.EventUpdate, Payload: api.EventSettingUpdate{ - Key: api.SettingUpload, - Update: us, - Timestamp: time.Now().UTC(), + UploadSettings: &us, + Timestamp: time.Now().UTC(), }, }) } @@ -1377,9 +1374,8 @@ func (b *Bus) settingsS3HandlerPUT(jc jape.Context) { Module: api.ModuleSetting, Event: api.EventUpdate, Payload: api.EventSettingUpdate{ - Key: api.SettingS3, - Update: s3s, - Timestamp: time.Now().UTC(), + S3Settings: &s3s, + Timestamp: time.Now().UTC(), }, }) } diff --git a/internal/bus/pinmanager.go b/internal/bus/pinmanager.go index 3bc579f28..716068565 100644 --- a/internal/bus/pinmanager.go +++ b/internal/bus/pinmanager.go @@ -25,7 +25,7 @@ type ( UpdateGougingSettings(ctx context.Context, gs api.GougingSettings) error PinnedSettings(ctx context.Context) (api.PinnedSettings, error) - UpdatePinnedSettings(ctx context.Context, pps api.PinnedSettings) error + UpdatePinnedSettings(ctx context.Context, ps api.PinnedSettings) error } ) @@ -297,9 +297,8 @@ func (pm *pinManager) updateGougingSettings(ctx context.Context, pins api.Gougin Module: api.ModuleSetting, Event: api.EventUpdate, Payload: api.EventSettingUpdate{ - Key: api.SettingGouging, - Update: gs, - Timestamp: time.Now().UTC(), + GougingSettings: &gs, + Timestamp: time.Now().UTC(), }, }) } diff --git a/internal/test/e2e/events_test.go b/internal/test/e2e/events_test.go index e1bc29df7..5f6d741ee 100644 --- a/internal/test/e2e/events_test.go +++ b/internal/test/e2e/events_test.go @@ -169,15 +169,9 @@ func TestEvents(t *testing.T) { t.Fatalf("unexpected event %+v", e) } case api.EventSettingUpdate: - if e.Key != api.SettingGouging || e.Timestamp.IsZero() { + if e.GougingSettings == nil || e.GougingSettings.HostBlockHeightLeeway != 100 || e.Timestamp.IsZero() { t.Fatalf("unexpected event %+v", e) } - var update api.GougingSettings - bytes, _ := json.Marshal(e.Update) - tt.OK(json.Unmarshal(bytes, &update)) - if update.HostBlockHeightLeeway != 100 { - t.Fatalf("unexpected update %+v", update) - } } } } diff --git a/internal/worker/cache.go b/internal/worker/cache.go index ebb071acd..1f5d28d22 100644 --- a/internal/worker/cache.go +++ b/internal/worker/cache.go @@ -181,8 +181,8 @@ func (c *cache) HandleEvent(event webhooks.Event) (err error) { log = log.With("hk", e.HostKey, "ts", e.Timestamp) c.handleHostUpdate(e) case api.EventSettingUpdate: - log = log.With("key", e.Key, "ts", e.Timestamp) - err = c.handleSettingUpdate(e) + log = log.With("gouging", e.GougingSettings != nil, "pinned", e.PinnedSettings != nil, "upload", e.UploadSettings != nil, "ts", e.Timestamp) + c.handleSettingUpdate(e) default: log.Info("unhandled event", e) return @@ -307,46 +307,22 @@ func (c *cache) handleHostUpdate(e api.EventHostUpdate) { c.cache.Set(cacheKeyDownloadContracts, contracts) } -func (c *cache) handleSettingUpdate(e api.EventSettingUpdate) (err error) { +func (c *cache) handleSettingUpdate(e api.EventSettingUpdate) { // return early if the cache doesn't have gouging params to update value, found, _ := c.cache.Get(cacheKeyGougingParams) if !found { - return nil + return } - gp := value.(api.GougingParams) - // marshal the updated value - data, err := json.Marshal(e.Update) - if err != nil { - return fmt.Errorf("couldn't marshal the given value, error: %v", err) + // update the cache + gp := value.(api.GougingParams) + if e.GougingSettings != nil { + gp.GougingSettings = *e.GougingSettings } - - // unmarshal into the appropriated setting and update the cache - switch e.Key { - case api.SettingGouging: - var gs api.GougingSettings - if err := json.Unmarshal(data, &gs); err != nil { - return fmt.Errorf("couldn't update gouging settings, invalid request body, %t", e.Update) - } else if err := gs.Validate(); err != nil { - return fmt.Errorf("couldn't update gouging settings, error: %v", err) - } - - gp.GougingSettings = gs - c.cache.Set(cacheKeyGougingParams, gp) - case api.SettingUpload: - var us api.UploadSettings - if err := json.Unmarshal(data, &us); err != nil { - return fmt.Errorf("couldn't update upload settings, invalid request body, %t", e.Update) - } else if err := us.Validate(); err != nil { - return fmt.Errorf("couldn't update upload settings, error: %v", err) - } - - gp.RedundancySettings = us.Redundancy - c.cache.Set(cacheKeyGougingParams, gp) - default: + if e.UploadSettings != nil { + gp.RedundancySettings = e.UploadSettings.Redundancy } - - return nil + c.cache.Set(cacheKeyGougingParams, gp) } func contractsEqual(x, y []api.ContractMetadata) bool { diff --git a/stores/settingsdb.go b/stores/settingsdb.go index 658b6de1f..31190f769 100644 --- a/stores/settingsdb.go +++ b/stores/settingsdb.go @@ -9,8 +9,15 @@ import ( sql "go.sia.tech/renterd/stores/sql" ) +const ( + SettingGouging = "gouging" + SettingPinned = "pinned" + SettingS3 = "s3" + SettingUpload = "upload" +) + func (s *SQLStore) GougingSettings(ctx context.Context) (gs api.GougingSettings, _ error) { - value, err := s.fetchSetting(ctx, api.SettingGouging) + value, err := s.fetchSetting(ctx, SettingGouging) if err != nil { return api.GougingSettings{}, err } @@ -27,32 +34,32 @@ func (s *SQLStore) UpdateGougingSettings(ctx context.Context, gs api.GougingSett if err != nil { return fmt.Errorf("couldn't marshal the given value, error: %v", err) } - return s.updateSetting(ctx, api.SettingGouging, string(data)) + return s.updateSetting(ctx, SettingGouging, string(data)) } -func (s *SQLStore) PinnedSettings(ctx context.Context) (pps api.PinnedSettings, _ error) { - value, err := s.fetchSetting(ctx, api.SettingPinned) +func (s *SQLStore) PinnedSettings(ctx context.Context) (ps api.PinnedSettings, _ error) { + value, err := s.fetchSetting(ctx, SettingPinned) if err != nil { return api.PinnedSettings{}, err } - if err := json.Unmarshal([]byte(value), &pps); err != nil { + if err := json.Unmarshal([]byte(value), &ps); err != nil { s.logger.Panicf("failed to unmarshal pinned settings '%s': %v", value, err) return api.PinnedSettings{}, err } return } -func (s *SQLStore) UpdatePinnedSettings(ctx context.Context, pps api.PinnedSettings) error { - data, err := json.Marshal(pps) +func (s *SQLStore) UpdatePinnedSettings(ctx context.Context, ps api.PinnedSettings) error { + data, err := json.Marshal(ps) if err != nil { return fmt.Errorf("couldn't marshal the given value, error: %v", err) } - return s.updateSetting(ctx, api.SettingPinned, string(data)) + return s.updateSetting(ctx, SettingPinned, string(data)) } func (s *SQLStore) UploadSettings(ctx context.Context) (us api.UploadSettings, _ error) { - value, err := s.fetchSetting(ctx, api.SettingUpload) + value, err := s.fetchSetting(ctx, SettingUpload) if err != nil { return api.UploadSettings{}, err } @@ -69,11 +76,11 @@ func (s *SQLStore) UpdateUploadSettings(ctx context.Context, us api.UploadSettin if err != nil { return fmt.Errorf("couldn't marshal the given value, error: %v", err) } - return s.updateSetting(ctx, api.SettingUpload, string(data)) + return s.updateSetting(ctx, SettingUpload, string(data)) } func (s *SQLStore) S3Settings(ctx context.Context) (ss api.S3Settings, _ error) { - value, err := s.fetchSetting(ctx, api.SettingS3) + value, err := s.fetchSetting(ctx, SettingS3) if err != nil { return api.S3Settings{}, err } @@ -90,7 +97,7 @@ func (s *SQLStore) UpdateS3Settings(ctx context.Context, ss api.S3Settings) erro if err != nil { return fmt.Errorf("couldn't marshal the given value, error: %v", err) } - return s.updateSetting(ctx, api.SettingS3, string(data)) + return s.updateSetting(ctx, SettingS3, string(data)) } func (s *SQLStore) DeleteSetting(ctx context.Context, key string) (err error) { From ed1679034330e69e48b61dda1897fa17e9171bd7 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 29 Aug 2024 10:52:08 +0200 Subject: [PATCH 020/708] testing: fix TestPinManager --- internal/bus/pinmanager_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/bus/pinmanager_test.go b/internal/bus/pinmanager_test.go index a90d76e38..1798a92a1 100644 --- a/internal/bus/pinmanager_test.go +++ b/internal/bus/pinmanager_test.go @@ -157,8 +157,8 @@ func (ms *mockPinStore) PinnedSettings(ctx context.Context) (api.PinnedSettings, func (ms *mockPinStore) UpdatePinnedSettings(ctx context.Context, ps api.PinnedSettings) error { ms.mu.Lock() - defer ms.mu.Unlock() ms.ps = ps + ms.mu.Unlock() time.Sleep(2 * testUpdateInterval) return nil } From d320faf827e4bc49470cca108cb16dc5867ab7fd Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 29 Aug 2024 10:53:29 +0200 Subject: [PATCH 021/708] bus: make prefix path param --- bus/bus.go | 12 ++++++------ bus/client/objects.go | 14 +++++++++----- bus/routes.go | 7 ++----- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/bus/bus.go b/bus/bus.go index 9249629c0..6e3786b97 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -439,12 +439,12 @@ func (b *Bus) Handler() http.Handler { "POST /multipart/listuploads": b.multipartHandlerListUploadsPOST, "POST /multipart/listparts": b.multipartHandlerListPartsPOST, - "GET /object/*key": b.objectHandlerGET, - "GET /objects": b.objectsHandlerGET, - "PUT /objects/*key": b.objectsHandlerPUT, - "DELETE /objects/*key": b.objectsHandlerDELETE, - "POST /objects/copy": b.objectsCopyHandlerPOST, - "POST /objects/rename": b.objectsRenameHandlerPOST, + "GET /object/*key": b.objectHandlerGET, + "GET /objects/*prefix": b.objectsHandlerGET, + "PUT /objects/*key": b.objectsHandlerPUT, + "DELETE /objects/*key": b.objectsHandlerDELETE, + "POST /objects/copy": b.objectsCopyHandlerPOST, + "POST /objects/rename": b.objectsRenameHandlerPOST, "GET /params/gouging": b.paramsHandlerGougingGET, "GET /params/upload": b.paramsHandlerUploadGET, diff --git a/bus/client/objects.go b/bus/client/objects.go index 0415e2831..c6ed3423b 100644 --- a/bus/client/objects.go +++ b/bus/client/objects.go @@ -50,15 +50,15 @@ func (c *Client) DeleteObject(ctx context.Context, bucket, path string, opts api } // Objects returns the object at given path. -func (c *Client) Object(ctx context.Context, bucket, path string, opts api.GetObjectOptions) (res api.Object, err error) { +func (c *Client) Object(ctx context.Context, bucket, key string, opts api.GetObjectOptions) (res api.Object, err error) { values := url.Values{} values.Set("bucket", bucket) opts.Apply(values) - path = api.ObjectPathEscape(path) - path += "?" + values.Encode() + key = api.ObjectPathEscape(key) + key += "?" + values.Encode() - err = c.c.WithContext(ctx).GET(fmt.Sprintf("/object/%s", path), &res) + err = c.c.WithContext(ctx).GET(fmt.Sprintf("/object/%s", key), &res) return } @@ -67,7 +67,11 @@ func (c *Client) Objects(ctx context.Context, bucket string, opts api.ListObject values := url.Values{} values.Set("bucket", bucket) opts.Apply(values) - err = c.c.WithContext(ctx).GET("/objects?"+values.Encode(), &resp) + + opts.Prefix = api.ObjectPathEscape(opts.Prefix) + opts.Prefix += "?" + values.Encode() + + err = c.c.WithContext(ctx).GET(fmt.Sprintf("/objects/%s", opts.Prefix), &resp) return } diff --git a/bus/routes.go b/bus/routes.go index 73c65cc72..7df2619fc 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1064,7 +1064,7 @@ func (b *Bus) objectHandlerGET(jc jape.Context) { } func (b *Bus) objectsHandlerGET(jc jape.Context) { - var marker, delim, prefix, sortBy, sortDir string + var marker, delim, sortBy, sortDir string bucket := api.DefaultBucketName if jc.DecodeForm("bucket", &bucket) != nil { return @@ -1079,9 +1079,6 @@ func (b *Bus) objectsHandlerGET(jc jape.Context) { if jc.DecodeForm("marker", &marker) != nil { return } - if jc.DecodeForm("prefix", &prefix) != nil { - return - } if jc.DecodeForm("sortBy", &sortBy) != nil { return } @@ -1089,7 +1086,7 @@ func (b *Bus) objectsHandlerGET(jc jape.Context) { return } - resp, err := b.ms.ListObjects(jc.Request.Context(), bucket, prefix, delim, sortBy, sortDir, marker, limit) + resp, err := b.ms.ListObjects(jc.Request.Context(), bucket, jc.PathParam("prefix"), delim, sortBy, sortDir, marker, limit) if errors.Is(err, api.ErrUnsupportedDelimiter) { jc.Error(err, http.StatusBadRequest) return From 45ad7777796841286df9c278727da992d0de0f87 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 29 Aug 2024 11:07:23 +0200 Subject: [PATCH 022/708] e2e: fix TestUploadDownloadExtended --- internal/test/e2e/cluster_test.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index b6f7da3f9..be1ba87cb 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -785,15 +785,21 @@ func TestUploadDownloadExtended(t *testing.T) { } } - // fetch entries with "file" prefix - res, err := cluster.Bus.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{Prefix: "file"}) + // fetch entries in /fileś starting with "file" + res, err := cluster.Bus.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ + Delimiter: "/", + Prefix: "fileś/file", + }) tt.OK(err) if len(res.Objects) != 2 { t.Fatal("expected two entry to be returned", len(res.Objects)) } - // fetch entries with "fileś" prefix - res, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{Prefix: "fileś/"}) + // fetch entries in /fileś starting with "foo" + res, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ + Delimiter: "/", + Prefix: "fileś/foo", + }) tt.OK(err) if len(res.Objects) != 0 { t.Fatal("expected no entries to be returned", len(res.Objects)) From f21c2cbe4a3a64f0b06c7f72f33d7992ab58696f Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 29 Aug 2024 11:09:24 +0200 Subject: [PATCH 023/708] testing: fix race in TestPinManager --- internal/bus/pinmanager_test.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/internal/bus/pinmanager_test.go b/internal/bus/pinmanager_test.go index 1798a92a1..8716197ee 100644 --- a/internal/bus/pinmanager_test.go +++ b/internal/bus/pinmanager_test.go @@ -156,8 +156,16 @@ func (ms *mockPinStore) PinnedSettings(ctx context.Context) (api.PinnedSettings, } func (ms *mockPinStore) UpdatePinnedSettings(ctx context.Context, ps api.PinnedSettings) error { + b, err := json.Marshal(ps) + if err != nil { + return err + } + var cloned api.PinnedSettings + if err := json.Unmarshal(b, &cloned); err != nil { + return err + } ms.mu.Lock() - ms.ps = ps + ms.ps = cloned ms.mu.Unlock() time.Sleep(2 * testUpdateInterval) return nil From d4e4e01aecef9b508659cecace5ceb02bb9e7caf Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 29 Aug 2024 11:11:50 +0200 Subject: [PATCH 024/708] bus: make prefix a mandatory arg --- api/object.go | 4 ---- bus/client/objects.go | 8 ++++---- internal/test/e2e/cluster_test.go | 32 +++++++++++-------------------- worker/s3/backend.go | 3 +-- worker/s3/s3.go | 2 +- 5 files changed, 17 insertions(+), 32 deletions(-) diff --git a/api/object.go b/api/object.go index bb5944c2e..bcd7bfb5c 100644 --- a/api/object.go +++ b/api/object.go @@ -216,7 +216,6 @@ type ( Delimiter string Limit int Marker string - Prefix string SortBy string SortDir string } @@ -330,9 +329,6 @@ func (opts ListObjectOptions) Apply(values url.Values) { if opts.Marker != "" { values.Set("marker", opts.Marker) } - if opts.Prefix != "" { - values.Set("prefix", opts.Prefix) - } if opts.SortBy != "" { values.Set("sortBy", opts.SortBy) } diff --git a/bus/client/objects.go b/bus/client/objects.go index c6ed3423b..3a081a9bd 100644 --- a/bus/client/objects.go +++ b/bus/client/objects.go @@ -63,15 +63,15 @@ func (c *Client) Object(ctx context.Context, bucket, key string, opts api.GetObj } // Objects lists objects in the given bucket. -func (c *Client) Objects(ctx context.Context, bucket string, opts api.ListObjectOptions) (resp api.ObjectsListResponse, err error) { +func (c *Client) Objects(ctx context.Context, bucket string, prefix string, opts api.ListObjectOptions) (resp api.ObjectsListResponse, err error) { values := url.Values{} values.Set("bucket", bucket) opts.Apply(values) - opts.Prefix = api.ObjectPathEscape(opts.Prefix) - opts.Prefix += "?" + values.Encode() + prefix = api.ObjectPathEscape(prefix) + prefix += "?" + values.Encode() - err = c.c.WithContext(ctx).GET(fmt.Sprintf("/objects/%s", opts.Prefix), &resp) + err = c.c.WithContext(ctx).GET(fmt.Sprintf("/objects/%s", prefix), &resp) return } diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index be1ba87cb..a0f2b1f35 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -117,8 +117,7 @@ func TestListObjectsWithNoDelimiter(t *testing.T) { } for _, test := range tests { // use the bus client - res, err := b.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ - Prefix: test.prefix, + res, err := b.Objects(context.Background(), api.DefaultBucketName, test.prefix, api.ListObjectOptions{ SortBy: test.sortBy, SortDir: test.sortDir, Limit: -1, @@ -136,8 +135,7 @@ func TestListObjectsWithNoDelimiter(t *testing.T) { if len(res.Objects) > 0 { marker := "" for offset := 0; offset < len(test.want); offset++ { - res, err := b.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ - Prefix: test.prefix, + res, err := b.Objects(context.Background(), api.DefaultBucketName, test.prefix, api.ListObjectOptions{ SortBy: test.sortBy, SortDir: test.sortDir, Marker: marker, @@ -162,7 +160,7 @@ func TestListObjectsWithNoDelimiter(t *testing.T) { } // list invalid marker - _, err := b.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ + _, err := b.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{ Marker: "invalid", SortBy: api.ObjectSortByHealth, }) @@ -481,9 +479,8 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { } for _, test := range tests { // use the bus client - res, err := b.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ + res, err := b.Objects(context.Background(), api.DefaultBucketName, test.path+test.prefix, api.ListObjectOptions{ Delimiter: "/", - Prefix: test.path + test.prefix, SortBy: test.sortBy, SortDir: test.sortDir, }) @@ -497,9 +494,8 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { } var marker string for offset := 0; offset < len(test.want); offset++ { - res, err := b.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ + res, err := b.Objects(context.Background(), api.DefaultBucketName, test.path+test.prefix, api.ListObjectOptions{ Delimiter: "/", - Prefix: test.path + test.prefix, SortBy: test.sortBy, SortDir: test.sortDir, Marker: marker, @@ -524,9 +520,8 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { continue } - res, err = b.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ + res, err = b.Objects(context.Background(), api.DefaultBucketName, test.path+test.prefix, api.ListObjectOptions{ Delimiter: "/", - Prefix: test.path + test.prefix, SortBy: test.sortBy, SortDir: test.sortDir, Marker: test.want[offset].Name, @@ -554,9 +549,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { } // assert root dir is empty - if resp, err := b.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ - Prefix: "/", - }); err != nil { + if resp, err := b.Objects(context.Background(), api.DefaultBucketName, "/", api.ListObjectOptions{}); err != nil { t.Fatal(err) } else if len(resp.Objects) != 0 { t.Fatal("there should be no entries left", resp.Objects) @@ -770,9 +763,8 @@ func TestUploadDownloadExtended(t *testing.T) { tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(file2), api.DefaultBucketName, "fileś/file2", api.UploadObjectOptions{})) // fetch all entries from the worker - resp, err := cluster.Bus.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ + resp, err := cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "fileś/", api.ListObjectOptions{ Delimiter: "/", - Prefix: "fileś/", }) tt.OK(err) @@ -786,9 +778,8 @@ func TestUploadDownloadExtended(t *testing.T) { } // fetch entries in /fileś starting with "file" - res, err := cluster.Bus.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ + res, err := cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "fileś/file", api.ListObjectOptions{ Delimiter: "/", - Prefix: "fileś/file", }) tt.OK(err) if len(res.Objects) != 2 { @@ -796,9 +787,8 @@ func TestUploadDownloadExtended(t *testing.T) { } // fetch entries in /fileś starting with "foo" - res, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ + res, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "fileś/foo", api.ListObjectOptions{ Delimiter: "/", - Prefix: "fileś/foo", }) tt.OK(err) if len(res.Objects) != 0 { @@ -1693,7 +1683,7 @@ func TestUploadPacking(t *testing.T) { if res.Size != int64(len(data)) { t.Fatal("unexpected size after upload", res.Size, len(data)) } - resp, err := b.Objects(context.Background(), api.DefaultBucketName, api.ListObjectOptions{ + resp, err := b.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{ Delimiter: "/", }) if err != nil { diff --git a/worker/s3/backend.go b/worker/s3/backend.go index 88a880828..57f166b38 100644 --- a/worker/s3/backend.go +++ b/worker/s3/backend.go @@ -92,11 +92,10 @@ func (s *s3) ListBucket(ctx context.Context, bucketName string, prefix *gofakes3 page.Marker = "/" + page.Marker } - resp, err := s.b.Objects(ctx, bucketName, api.ListObjectOptions{ + resp, err := s.b.Objects(ctx, bucketName, prefix.Prefix, api.ListObjectOptions{ Delimiter: prefix.Delimiter, Limit: int(page.MaxKeys), Marker: page.Marker, - Prefix: prefix.Prefix, }) if utils.IsErr(err, api.ErrBucketNotFound) { return nil, gofakes3.BucketNotFound(bucketName) diff --git a/worker/s3/s3.go b/worker/s3/s3.go index 77986b54f..8c334fa16 100644 --- a/worker/s3/s3.go +++ b/worker/s3/s3.go @@ -33,7 +33,7 @@ type Bus interface { AddObject(ctx context.Context, bucket, path, contractSet string, o object.Object, opts api.AddObjectOptions) (err error) CopyObject(ctx context.Context, srcBucket, dstBucket, srcPath, dstPath string, opts api.CopyObjectOptions) (om api.ObjectMetadata, err error) DeleteObject(ctx context.Context, bucket, path string, opts api.DeleteObjectOptions) (err error) - Objects(ctx context.Context, bucket string, opts api.ListObjectOptions) (resp api.ObjectsListResponse, err error) + Objects(ctx context.Context, bucket, prefix string, opts api.ListObjectOptions) (resp api.ObjectsListResponse, err error) AbortMultipartUpload(ctx context.Context, bucket, path string, uploadID string) (err error) CompleteMultipartUpload(ctx context.Context, bucket, path, uploadID string, parts []api.MultipartCompletedPart, opts api.CompleteMultipartOptions) (_ api.MultipartCompleteResponse, err error) From b0e71522a9083dd3ac488504f13488cf1af94883 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 29 Aug 2024 14:02:41 +0200 Subject: [PATCH 025/708] e2e: fix TestUploadDownloadSpending --- internal/test/e2e/cluster_test.go | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index a0f2b1f35..28d0203d2 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -941,18 +941,9 @@ func TestUploadDownloadSpending(t *testing.T) { tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, path, api.UploadObjectOptions{})) // Should be registered in bus. - res, err := cluster.Bus.Object(context.Background(), api.DefaultBucketName, "", api.GetObjectOptions{}) + _, err := cluster.Bus.Object(context.Background(), api.DefaultBucketName, path, api.GetObjectOptions{}) tt.OK(err) - var found bool - if res.Name == fmt.Sprintf("/%s", path) { - found = true - break - } - if !found { - t.Fatal("uploaded object not found in bus") - } - // download the data var buffer bytes.Buffer tt.OK(w.DownloadObject(context.Background(), &buffer, api.DefaultBucketName, path, api.DownloadObjectOptions{})) From 2161db9d20ad420612cb1a1b0d5ea4c5251c4763 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 29 Aug 2024 14:41:45 +0200 Subject: [PATCH 026/708] bus: rename objects to listobjects endpoint --- bus/bus.go | 12 ++++++------ bus/client/objects.go | 4 ++-- worker/worker.go | 24 ++++++++---------------- 3 files changed, 16 insertions(+), 24 deletions(-) diff --git a/bus/bus.go b/bus/bus.go index 6e3786b97..471e968b7 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -439,12 +439,12 @@ func (b *Bus) Handler() http.Handler { "POST /multipart/listuploads": b.multipartHandlerListUploadsPOST, "POST /multipart/listparts": b.multipartHandlerListPartsPOST, - "GET /object/*key": b.objectHandlerGET, - "GET /objects/*prefix": b.objectsHandlerGET, - "PUT /objects/*key": b.objectsHandlerPUT, - "DELETE /objects/*key": b.objectsHandlerDELETE, - "POST /objects/copy": b.objectsCopyHandlerPOST, - "POST /objects/rename": b.objectsRenameHandlerPOST, + "GET /listobjects/*prefix": b.objectsHandlerGET, + "GET /objects/*key": b.objectHandlerGET, + "PUT /objects/*key": b.objectsHandlerPUT, + "DELETE /objects/*key": b.objectsHandlerDELETE, + "POST /objects/copy": b.objectsCopyHandlerPOST, + "POST /objects/rename": b.objectsRenameHandlerPOST, "GET /params/gouging": b.paramsHandlerGougingGET, "GET /params/upload": b.paramsHandlerUploadGET, diff --git a/bus/client/objects.go b/bus/client/objects.go index 3a081a9bd..de3aeb702 100644 --- a/bus/client/objects.go +++ b/bus/client/objects.go @@ -58,7 +58,7 @@ func (c *Client) Object(ctx context.Context, bucket, key string, opts api.GetObj key = api.ObjectPathEscape(key) key += "?" + values.Encode() - err = c.c.WithContext(ctx).GET(fmt.Sprintf("/object/%s", key), &res) + err = c.c.WithContext(ctx).GET(fmt.Sprintf("/objects/%s", key), &res) return } @@ -71,7 +71,7 @@ func (c *Client) Objects(ctx context.Context, bucket string, prefix string, opts prefix = api.ObjectPathEscape(prefix) prefix += "?" + values.Encode() - err = c.c.WithContext(ctx).GET(fmt.Sprintf("/objects/%s", prefix), &resp) + err = c.c.WithContext(ctx).GET(fmt.Sprintf("/listobjects/%s", prefix), &resp) return } diff --git a/worker/worker.go b/worker/worker.go index 8d1166465..2464d3f62 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -726,17 +726,9 @@ func (w *Worker) objectsHandlerHEAD(jc jape.Context) { if jc.DecodeForm("bucket", &bucket) != nil { return } - var ignoreDelim bool - if jc.DecodeForm("ignoreDelim", &ignoreDelim) != nil { - return - } // parse path - path := jc.PathParam("path") - if !ignoreDelim && (path == "" || strings.HasSuffix(path, "/")) { - jc.Error(errors.New("HEAD requests can only be performed on objects, not directories"), http.StatusBadRequest) - return - } + path := jc.PathParam("key") var off int if jc.DecodeForm("offset", &off) != nil { @@ -816,7 +808,7 @@ func (w *Worker) objectsHandlerGET(jc jape.Context) { return } - path := jc.PathParam("path") + path := jc.PathParam("key") if path == "" { jc.Error(errors.New("no path provided"), http.StatusBadRequest) return @@ -857,7 +849,7 @@ func (w *Worker) objectsHandlerPUT(jc jape.Context) { ctx := jc.Request.Context() // grab the path - path := jc.PathParam("path") + path := jc.PathParam("key") // decode the contract set from the query string var contractset string @@ -1020,7 +1012,7 @@ func (w *Worker) objectsHandlerDELETE(jc jape.Context) { if jc.DecodeForm("bucket", &bucket) != nil { return } - err := w.bus.DeleteObject(jc.Request.Context(), bucket, jc.PathParam("path"), api.DeleteObjectOptions{Batch: batch}) + err := w.bus.DeleteObject(jc.Request.Context(), bucket, jc.PathParam("key"), api.DeleteObjectOptions{Batch: batch}) if utils.IsErr(err, api.ErrObjectNotFound) { jc.Error(err, http.StatusNotFound) return @@ -1213,10 +1205,10 @@ func (w *Worker) Handler() http.Handler { "GET /stats/uploads": w.uploadsStatsHandlerGET, "POST /slab/migrate": w.slabMigrateHandler, - "HEAD /objects/*path": w.objectsHandlerHEAD, - "GET /objects/*path": w.objectsHandlerGET, - "PUT /objects/*path": w.objectsHandlerPUT, - "DELETE /objects/*path": w.objectsHandlerDELETE, + "HEAD /objects/*key": w.objectsHandlerHEAD, + "GET /objects/*key": w.objectsHandlerGET, + "PUT /objects/*key": w.objectsHandlerPUT, + "DELETE /objects/*key": w.objectsHandlerDELETE, "PUT /multipart/*path": w.multipartUploadHandlerPUT, From b414531f9ce44eab0033635d05b140dd68b77252 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 30 Aug 2024 16:03:54 +0200 Subject: [PATCH 027/708] bus: remove ApplyValues --- api/object.go | 4 ---- internal/test/e2e/cluster_test.go | 4 +--- worker/client/client.go | 1 - 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/api/object.go b/api/object.go index bcd7bfb5c..9bcd8aaaf 100644 --- a/api/object.go +++ b/api/object.go @@ -280,10 +280,6 @@ func (opts UploadMultipartUploadPartOptions) Apply(values url.Values) { values.Set("contractset", opts.ContractSet) } } - -func (opts DownloadObjectOptions) ApplyValues(values url.Values) { -} - func (opts DownloadObjectOptions) ApplyHeaders(h http.Header) { if opts.Range != nil { if opts.Range.Length == -1 { diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 28d0203d2..ed658052d 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -1674,9 +1674,7 @@ func TestUploadPacking(t *testing.T) { if res.Size != int64(len(data)) { t.Fatal("unexpected size after upload", res.Size, len(data)) } - resp, err := b.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{ - Delimiter: "/", - }) + resp, err := b.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{}) if err != nil { t.Fatal(err) } diff --git a/worker/client/client.go b/worker/client/client.go index a65e7136e..6ea6172cd 100644 --- a/worker/client/client.go +++ b/worker/client/client.go @@ -274,7 +274,6 @@ func (c *Client) NotifyEvent(ctx context.Context, e webhooks.Event) (err error) func (c *Client) object(ctx context.Context, bucket, path string, opts api.DownloadObjectOptions) (_ io.ReadCloser, _ http.Header, err error) { values := url.Values{} values.Set("bucket", url.QueryEscape(bucket)) - opts.ApplyValues(values) path += "?" + values.Encode() c.c.Custom("GET", fmt.Sprintf("/objects/%s", path), nil, (*[]api.ObjectMetadata)(nil)) From 88e13f9e5b052a1abbd7679288e9b39335e4d9eb Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 30 Aug 2024 16:46:29 +0200 Subject: [PATCH 028/708] bus: add substring parameter to Objects endpoint --- api/object.go | 4 ++ bus/bus.go | 6 +-- bus/client/objects.go | 10 ----- bus/routes.go | 25 +++-------- internal/test/e2e/cluster_test.go | 40 +++++++++-------- stores/metadata.go | 12 +---- stores/metadata_test.go | 75 ++++++++++++++++--------------- stores/sql/database.go | 6 +-- stores/sql/main.go | 41 ++++------------- stores/sql/mysql/main.go | 8 +--- stores/sql/sqlite/main.go | 8 +--- 11 files changed, 88 insertions(+), 147 deletions(-) diff --git a/api/object.go b/api/object.go index 9bcd8aaaf..f3d345c03 100644 --- a/api/object.go +++ b/api/object.go @@ -218,6 +218,7 @@ type ( Marker string SortBy string SortDir string + Substring string } SearchObjectOptions struct { @@ -331,6 +332,9 @@ func (opts ListObjectOptions) Apply(values url.Values) { if opts.SortDir != "" { values.Set("sortDir", opts.SortDir) } + if opts.Substring != "" { + values.Set("substring", opts.Substring) + } } func (opts SearchObjectOptions) Apply(values url.Values) { diff --git a/bus/bus.go b/bus/bus.go index 092f109ee..3ec713524 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -231,7 +231,7 @@ type ( UpdateBucketPolicy(ctx context.Context, bucketName string, policy api.BucketPolicy) error CopyObject(ctx context.Context, srcBucket, dstBucket, srcPath, dstPath, mimeType string, metadata api.ObjectUserMetadata) (api.ObjectMetadata, error) - ListObjects(ctx context.Context, bucketName, prefix, delim, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) + ListObjects(ctx context.Context, bucketName, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) Object(ctx context.Context, bucketName, path string) (api.Object, error) ObjectMetadata(ctx context.Context, bucketName, path string) (api.Object, error) ObjectsBySlabKey(ctx context.Context, bucketName string, slabKey object.EncryptionKey) ([]api.ObjectMetadata, error) @@ -240,7 +240,6 @@ type ( RemoveObjects(ctx context.Context, bucketName, prefix string) error RenameObject(ctx context.Context, bucketName, from, to string, force bool) error RenameObjects(ctx context.Context, bucketName, from, to string, force bool) error - SearchObjects(ctx context.Context, bucketName, substring string, offset, limit int) ([]api.ObjectMetadata, error) UpdateObject(ctx context.Context, bucketName, path, contractSet, ETag, mimeType string, metadata api.ObjectUserMetadata, o object.Object) error AbortMultipartUpload(ctx context.Context, bucketName, path string, uploadID string) (err error) @@ -461,8 +460,7 @@ func (b *Bus) Handler() http.Handler { "POST /slabbuffer/done": b.packedSlabsHandlerDonePOST, "POST /slabbuffer/fetch": b.packedSlabsHandlerFetchPOST, - "POST /search/hosts": b.searchHostsHandlerPOST, - "GET /search/objects": b.searchObjectsHandlerGET, + "POST /search/hosts": b.searchHostsHandlerPOST, "DELETE /sectors/:hk/:root": b.sectorsHostRootHandlerDELETE, diff --git a/bus/client/objects.go b/bus/client/objects.go index de3aeb702..6a8482160 100644 --- a/bus/client/objects.go +++ b/bus/client/objects.go @@ -103,16 +103,6 @@ func (c *Client) RenameObjects(ctx context.Context, bucket, from, to string, for return c.renameObjects(ctx, bucket, from, to, api.ObjectsRenameModeMulti, force) } -// SearchObjects returns all objects that contains a sub-string in their key. -func (c *Client) SearchObjects(ctx context.Context, bucket string, opts api.SearchObjectOptions) (entries []api.ObjectMetadata, err error) { - values := url.Values{} - values.Set("bucket", bucket) - opts.Apply(values) - - err = c.c.WithContext(ctx).GET("/search/objects?"+values.Encode(), &entries) - return -} - func (c *Client) renameObjects(ctx context.Context, bucket, from, to, mode string, force bool) (err error) { err = c.c.WithContext(ctx).POST("/objects/rename", api.ObjectsRenameRequest{ Bucket: bucket, diff --git a/bus/routes.go b/bus/routes.go index 7860c77ca..2d4b7a729 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1029,24 +1029,6 @@ func (b *Bus) contractsAllHandlerDELETE(jc jape.Context) { jc.Check("couldn't remove contracts", b.ms.ArchiveAllContracts(jc.Request.Context(), api.ContractArchivalReasonRemoved)) } -func (b *Bus) searchObjectsHandlerGET(jc jape.Context) { - offset := 0 - limit := -1 - var key string - if jc.DecodeForm("offset", &offset) != nil || jc.DecodeForm("limit", &limit) != nil || jc.DecodeForm("key", &key) != nil { - return - } - bucket := api.DefaultBucketName - if jc.DecodeForm("bucket", &bucket) != nil { - return - } - keys, err := b.ms.SearchObjects(jc.Request.Context(), bucket, key, offset, limit) - if jc.Check("couldn't list objects", err) != nil { - return - } - jc.Encode(keys) -} - func (b *Bus) objectHandlerGET(jc jape.Context) { path := jc.PathParam("key") bucket := api.DefaultBucketName @@ -1076,7 +1058,7 @@ func (b *Bus) objectHandlerGET(jc jape.Context) { } func (b *Bus) objectsHandlerGET(jc jape.Context) { - var marker, delim, sortBy, sortDir string + var marker, delim, sortBy, sortDir, substring string bucket := api.DefaultBucketName if jc.DecodeForm("bucket", &bucket) != nil { return @@ -1097,8 +1079,11 @@ func (b *Bus) objectsHandlerGET(jc jape.Context) { if jc.DecodeForm("sortDir", &sortDir) != nil { return } + if jc.DecodeForm("substring", &substring) != nil { + return + } - resp, err := b.ms.ListObjects(jc.Request.Context(), bucket, jc.PathParam("prefix"), delim, sortBy, sortDir, marker, limit) + resp, err := b.ms.ListObjects(jc.Request.Context(), bucket, jc.PathParam("prefix"), substring, delim, sortBy, sortDir, marker, limit) if errors.Is(err, api.ErrUnsupportedDelimiter) { jc.Error(err, http.StatusBadRequest) return diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index ed658052d..cdcb922e4 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -959,20 +959,20 @@ func TestUploadDownloadSpending(t *testing.T) { uploadDownload() // Fuzzy search for uploaded data in various ways. - objects, err := cluster.Bus.SearchObjects(context.Background(), api.DefaultBucketName, api.SearchObjectOptions{}) + resp, err := cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{}) tt.OK(err) - if len(objects) != 2 { - t.Fatalf("should have 2 objects but got %v", len(objects)) + if len(resp.Objects) != 2 { + t.Fatalf("should have 2 objects but got %v", len(resp.Objects)) } - objects, err = cluster.Bus.SearchObjects(context.Background(), api.DefaultBucketName, api.SearchObjectOptions{Key: "ata"}) + resp, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "ata"}) tt.OK(err) - if len(objects) != 2 { - t.Fatalf("should have 2 objects but got %v", len(objects)) + if len(resp.Objects) != 2 { + t.Fatalf("should have 2 objects but got %v", len(resp.Objects)) } - objects, err = cluster.Bus.SearchObjects(context.Background(), api.DefaultBucketName, api.SearchObjectOptions{Key: "1258"}) + resp, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "1258"}) tt.OK(err) - if len(objects) != 1 { - t.Fatalf("should have 1 objects but got %v", len(objects)) + if len(resp.Objects) != 1 { + t.Fatalf("should have 1 objects but got %v", len(resp.Objects)) } // renew contracts. @@ -1204,28 +1204,29 @@ func TestParallelUpload(t *testing.T) { wg.Wait() // Check if objects exist. - objects, err := cluster.Bus.SearchObjects(context.Background(), api.DefaultBucketName, api.SearchObjectOptions{Key: "/dir/", Limit: 100}) + resp, err := cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "/dir/", Limit: 100}) tt.OK(err) - if len(objects) != 3 { - t.Fatal("wrong number of objects", len(objects)) + if len(resp.Objects) != 3 { + t.Fatal("wrong number of objects", len(resp.Objects)) } // Upload one more object. tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader([]byte("data")), api.DefaultBucketName, "/foo", api.UploadObjectOptions{})) - objects, err = cluster.Bus.SearchObjects(context.Background(), api.DefaultBucketName, api.SearchObjectOptions{Key: "/", Limit: 100}) + resp, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "/", Limit: 100}) tt.OK(err) - if len(objects) != 4 { - t.Fatal("wrong number of objects", len(objects)) + if len(resp.Objects) != 4 { + t.Fatal("wrong number of objects", len(resp.Objects)) } // Delete all objects under /dir/. if err := cluster.Bus.DeleteObject(context.Background(), api.DefaultBucketName, "/dir/", api.DeleteObjectOptions{Batch: true}); err != nil { t.Fatal(err) } - objects, err = cluster.Bus.SearchObjects(context.Background(), api.DefaultBucketName, api.SearchObjectOptions{Key: "/", Limit: 100}) + resp, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "/", Limit: 100}) + cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "/", Limit: 100}) tt.OK(err) - if len(objects) != 1 { + if len(resp.Objects) != 1 { t.Fatal("objects weren't deleted") } @@ -1233,9 +1234,10 @@ func TestParallelUpload(t *testing.T) { if err := cluster.Bus.DeleteObject(context.Background(), api.DefaultBucketName, "/", api.DeleteObjectOptions{Batch: true}); err != nil { t.Fatal(err) } - objects, err = cluster.Bus.SearchObjects(context.Background(), api.DefaultBucketName, api.SearchObjectOptions{Key: "/", Limit: 100}) + resp, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "/", Limit: 100}) + cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "/", Limit: 100}) tt.OK(err) - if len(objects) != 0 { + if len(resp.Objects) != 0 { t.Fatal("objects weren't deleted") } } diff --git a/stores/metadata.go b/stores/metadata.go index c84e6c646..44b2406d2 100644 --- a/stores/metadata.go +++ b/stores/metadata.go @@ -310,14 +310,6 @@ func (s *SQLStore) RenewedContract(ctx context.Context, renewedFrom types.FileCo return } -func (s *SQLStore) SearchObjects(ctx context.Context, bucket, substring string, offset, limit int) (objects []api.ObjectMetadata, err error) { - err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - objects, err = tx.SearchObjects(ctx, bucket, substring, offset, limit) - return err - }) - return -} - func (s *SQLStore) Object(ctx context.Context, bucket, path string) (obj api.Object, err error) { err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { obj, err = tx.Object(ctx, bucket, path) @@ -786,9 +778,9 @@ func (s *SQLStore) invalidateSlabHealthByFCID(ctx context.Context, fcids []types } } -func (s *SQLStore) ListObjects(ctx context.Context, bucket, prefix, delim, sortBy, sortDir, marker string, limit int) (resp api.ObjectsListResponse, err error) { +func (s *SQLStore) ListObjects(ctx context.Context, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (resp api.ObjectsListResponse, err error) { err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - resp, err = tx.ListObjects(ctx, bucket, prefix, delim, sortBy, sortDir, marker, limit) + resp, err = tx.ListObjects(ctx, bucket, prefix, substring, delim, sortBy, sortDir, marker, limit) return err }) return diff --git a/stores/metadata_test.go b/stores/metadata_test.go index ba0dc4710..15e595729 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -1379,7 +1379,7 @@ func TestObjectHealth(t *testing.T) { } // assert health is returned correctly by ObjectEntries - resp, err := ss.ListObjects(context.Background(), api.DefaultBucketName, "/", "", "", "", "", -1) + resp, err := ss.ListObjects(context.Background(), api.DefaultBucketName, "/", "", "", "", "", "", -1) entries := resp.Objects if err != nil { t.Fatal(err) @@ -1390,10 +1390,10 @@ func TestObjectHealth(t *testing.T) { } // assert health is returned correctly by SearchObject - entries, err = ss.SearchObjects(context.Background(), api.DefaultBucketName, "foo", 0, -1) + resp, err = ss.ListObjects(context.Background(), api.DefaultBucketName, "/", "foo", "", "", "", "", -1) if err != nil { t.Fatal(err) - } else if len(entries) != 1 { + } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("wrong number of entries", len(entries)) } else if entries[0].Health != expectedHealth { t.Fatal("wrong health", entries[0].Health) @@ -1532,7 +1532,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { {"/", "", "size", "ASC", []api.ObjectMetadata{{Name: "/gab/", Size: 5, Health: 1}, {Name: "/fileś/", Size: 6, Health: 1}, {Name: "/FOO/", Size: 7, Health: 1}, {Name: "/foo/", Size: 10, Health: .5}}}, } for _, test := range tests { - resp, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "/", test.sortBy, test.sortDir, "", -1) + resp, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, "", -1) if err != nil { t.Fatal(err) } @@ -1545,7 +1545,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { var marker string for offset := 0; offset < len(test.want); offset++ { - resp, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "/", test.sortBy, test.sortDir, marker, 1) + resp, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, marker, 1) if err != nil { t.Fatal(err) } @@ -1567,7 +1567,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { continue } - resp, err = ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "/", test.sortBy, test.sortDir, test.want[offset].Name, 1) + resp, err = ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, test.want[offset].Name, 1) if err != nil { t.Fatal(err) } @@ -1634,7 +1634,7 @@ func TestListObjectsExplicitDir(t *testing.T) { {"/dir/", "", "", "", []api.ObjectMetadata{{ETag: "d34db33f", Name: "/dir/file", Size: 1, Health: 0.5, MimeType: testMimeType}}}, } for _, test := range tests { - got, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "/", test.sortBy, test.sortDir, "", -1) + got, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, "", -1) if err != nil { t.Fatal(err) } @@ -1647,8 +1647,9 @@ func TestListObjectsExplicitDir(t *testing.T) { } } -// TestSearchObjects is a test for the SearchObjects method. -func TestSearchObjects(t *testing.T) { +// TestListObjectsSubstring is a test for the ListObjects fuzzy +// search via the "substring" argument. +func TestListObjectsSubstring(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() objects := []struct { @@ -1701,18 +1702,22 @@ func TestSearchObjects(t *testing.T) { {"uu", []api.ObjectMetadata{{Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}, {Name: "/gab/guub", Size: 5, Health: 1}}}, } for _, test := range tests { - got, err := ss.SearchObjects(ctx, api.DefaultBucketName, test.path, 0, -1) + resp, err := ss.ListObjects(ctx, api.DefaultBucketName, "", test.path, "", "", "", "", -1) if err != nil { t.Fatal(err) } + got := resp.Objects assertEqual(got, test.want) + var marker string for offset := 0; offset < len(test.want); offset++ { - if got, err := ss.SearchObjects(ctx, api.DefaultBucketName, test.path, offset, 1); err != nil { + if resp, err := ss.ListObjects(ctx, api.DefaultBucketName, "", test.path, "", "", "", marker, 1); err != nil { t.Fatal(err) - } else if len(got) != 1 { + } else if got := resp.Objects; len(got) != 1 { t.Errorf("\nkey: %v unexpected number of objects, %d != 1", test.path, len(got)) } else if !metadataEquals(got[0], test.want[offset]) { t.Errorf("\nkey: %v\ngot: %v\nwant: %v", test.path, got, test.want[offset]) + } else { + marker = resp.NextMarker } } } @@ -2550,16 +2555,16 @@ func TestRenameObjects(t *testing.T) { } // Assert that number of objects matches. - objs, err := ss.SearchObjects(ctx, api.DefaultBucketName, "/", 0, 100) + resp, err := ss.ListObjects(ctx, api.DefaultBucketName, "", "/", "", "", "", "", 100) if err != nil { t.Fatal(err) } - if len(objs) != len(objectsAfter) { - t.Fatal("unexpected number of objects", len(objs), len(objectsAfter)) + if len(resp.Objects) != len(objectsAfter) { + t.Fatal("unexpected number of objects", len(resp.Objects), len(objectsAfter)) } // Assert paths are correct. - for _, obj := range objs { + for _, obj := range resp.Objects { if _, exists := objectsAfterMap[obj.Name]; !exists { t.Fatal("unexpected path", obj.Name) } @@ -3327,13 +3332,13 @@ func TestBucketObjects(t *testing.T) { } // List the objects in the buckets. - if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", -1); err != nil { + if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 1 entry", len(entries)) } else if entries[0].Size != 1 { t.Fatal("unexpected size", entries[0].Size) - } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 1 entry", len(entries)) @@ -3342,15 +3347,15 @@ func TestBucketObjects(t *testing.T) { } // Search the objects in the buckets. - if objects, err := ss.SearchObjects(context.Background(), b1, "", 0, -1); err != nil { + if resp, err := ss.ListObjects(context.Background(), b1, "", "", "", "", "", "", -1); err != nil { t.Fatal(err) - } else if len(objects) != 2 { + } else if objects := resp.Objects; len(objects) != 2 { t.Fatal("expected 2 objects", len(objects)) } else if objects[0].Size != 3 || objects[1].Size != 1 { t.Fatal("unexpected size", objects[0].Size, objects[1].Size) - } else if objects, err := ss.SearchObjects(context.Background(), b2, "", 0, -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b2, "", "", "", "", "", "", -1); err != nil { t.Fatal(err) - } else if len(objects) != 2 { + } else if objects := resp.Objects; len(objects) != 2 { t.Fatal("expected 2 objects", len(objects)) } else if objects[0].Size != 4 || objects[1].Size != 2 { t.Fatal("unexpected size", objects[0].Size, objects[1].Size) @@ -3359,13 +3364,13 @@ func TestBucketObjects(t *testing.T) { // Rename object foo/bar in bucket 1 to foo/baz but not in bucket 2. if err := ss.RenameObjectBlocking(context.Background(), b1, "/foo/bar", "/foo/baz", false); err != nil { t.Fatal(err) - } else if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 2 entries", len(entries)) } else if entries[0].Name != "/foo/baz" { t.Fatal("unexpected name", entries[0].Name) - } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 2 entries", len(entries)) @@ -3376,13 +3381,13 @@ func TestBucketObjects(t *testing.T) { // Rename foo/bar in bucket 2 using the batch rename. if err := ss.RenameObjectsBlocking(context.Background(), b2, "/foo/bar", "/foo/bam", false); err != nil { t.Fatal(err) - } else if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 2 entries", len(entries)) } else if entries[0].Name != "/foo/baz" { t.Fatal("unexpected name", entries[0].Name) - } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 2 entries", len(entries)) @@ -3395,28 +3400,28 @@ func TestBucketObjects(t *testing.T) { t.Fatal(err) } else if err := ss.RemoveObjectBlocking(context.Background(), b1, "/foo/baz"); err != nil { t.Fatal(err) - } else if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) > 0 { t.Fatal("expected 0 entries", len(entries)) - } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 1 entry", len(entries)) } // Delete all files in bucket 2. - if resp, err := ss.ListObjects(context.Background(), b2, "/", "", "", "", "", -1); err != nil { + if resp, err := ss.ListObjects(context.Background(), b2, "/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 2 { t.Fatal("expected 2 entries", len(entries)) } else if err := ss.RemoveObjectsBlocking(context.Background(), b2, "/"); err != nil { t.Fatal(err) - } else if resp, err := ss.ListObjects(context.Background(), b2, "/", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b2, "/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 0 { t.Fatal("expected 0 entries", len(entries)) - } else if resp, err := ss.ListObjects(context.Background(), b1, "/", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b1, "/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 1 entry", len(entries)) @@ -3467,7 +3472,7 @@ func TestCopyObject(t *testing.T) { // Copy it within the same bucket. if om, err := ss.CopyObject(ctx, "src", "src", "/foo", "/bar", "", nil); err != nil { t.Fatal(err) - } else if resp, err := ss.ListObjects(ctx, "src", "/", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(ctx, "src", "/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 2 { t.Fatal("expected 2 entries", len(entries)) @@ -3480,7 +3485,7 @@ func TestCopyObject(t *testing.T) { // Copy it cross buckets. if om, err := ss.CopyObject(ctx, "src", "dst", "/foo", "/bar", "", nil); err != nil { t.Fatal(err) - } else if resp, err := ss.ListObjects(ctx, "dst", "/", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(ctx, "dst", "/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 1 entry", len(entries)) @@ -3640,7 +3645,7 @@ func TestListObjectsNoDelimiter(t *testing.T) { } } for _, test := range tests { - res, err := ss.ListObjects(ctx, api.DefaultBucketName, test.prefix, "", test.sortBy, test.sortDir, "", -1) + res, err := ss.ListObjects(ctx, api.DefaultBucketName, test.prefix, "", "", test.sortBy, test.sortDir, "", -1) if err != nil { t.Fatal(err) } @@ -3655,7 +3660,7 @@ func TestListObjectsNoDelimiter(t *testing.T) { if len(res.Objects) > 0 { marker := "" for offset := 0; offset < len(test.want); offset++ { - res, err := ss.ListObjects(ctx, api.DefaultBucketName, test.prefix, "", test.sortBy, test.sortDir, marker, 1) + res, err := ss.ListObjects(ctx, api.DefaultBucketName, test.prefix, "", "", test.sortBy, test.sortDir, marker, 1) if err != nil { t.Fatal(err) } diff --git a/stores/sql/database.go b/stores/sql/database.go index a9d4e8a06..c127a4fb9 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -193,7 +193,7 @@ type ( ListBuckets(ctx context.Context) ([]api.Bucket, error) // ListObjects returns a list of objects from the given bucket. - ListObjects(ctx context.Context, bucket, prefix, delim, sortBy, sortDir, marker string, limit int) (resp api.ObjectsListResponse, err error) + ListObjects(ctx context.Context, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (resp api.ObjectsListResponse, err error) // MakeDirsForPath creates all directories for a given object's path. MakeDirsForPath(ctx context.Context, path string) (int64, error) @@ -310,10 +310,6 @@ type ( // SearchHosts returns a list of hosts that match the provided filters SearchHosts(ctx context.Context, autopilotID, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) ([]api.Host, error) - // SearchObjects returns a list of objects that contain the provided - // substring. - SearchObjects(ctx context.Context, bucket, substring string, offset, limit int) ([]api.ObjectMetadata, error) - // SetContractSet creates the contract set with the given name and // associates it with the provided contract IDs. SetContractSet(ctx context.Context, name string, contractIds []types.FileContractID) error diff --git a/stores/sql/main.go b/stores/sql/main.go index 202108c9e..51277b7dd 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -1013,9 +1013,9 @@ func orderByObject(sortBy, sortDir string) (orderByExprs []string, _ error) { return orderByExprs, nil } -func ListObjects(ctx context.Context, tx Tx, bucket, prefix, delim, sortBy, sortDir, marker string, limit int) (resp api.ObjectsListResponse, err error) { +func ListObjects(ctx context.Context, tx Tx, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (resp api.ObjectsListResponse, err error) { if delim == "" { - resp, err = listObjectsNoDelim(ctx, tx, bucket, prefix, sortBy, sortDir, marker, limit) + resp, err = listObjectsNoDelim(ctx, tx, bucket, prefix, substring, sortBy, sortDir, marker, limit) } else if delim == "/" { resp, err = listObjectsSlashDelim(ctx, tx, bucket, prefix, sortBy, sortDir, marker, limit) } else { @@ -2369,35 +2369,6 @@ func scanStateElement(s Scanner) (types.StateElement, error) { }, nil } -func SearchObjects(ctx context.Context, tx Tx, bucket, substring string, offset, limit int) ([]api.ObjectMetadata, error) { - if limit <= -1 { - limit = math.MaxInt - } - - rows, err := tx.Query(ctx, fmt.Sprintf(` - SELECT %s - FROM objects o - INNER JOIN buckets b ON o.db_bucket_id = b.id - WHERE INSTR(o.object_id, ?) > 0 AND b.name = ? - ORDER BY o.object_id ASC - LIMIT ? OFFSET ? - `, tx.SelectObjectMetadataExpr()), substring, bucket, limit, offset) - if err != nil { - return nil, fmt.Errorf("failed to search objects: %w", err) - } - defer rows.Close() - - var objects []api.ObjectMetadata - for rows.Next() { - om, err := tx.ScanObjectMetadata(rows) - if err != nil { - return nil, fmt.Errorf("failed to scan object metadata: %w", err) - } - objects = append(objects, om) - } - return objects, nil -} - func ObjectsBySlabKey(ctx context.Context, tx Tx, bucket string, slabKey object.EncryptionKey) ([]api.ObjectMetadata, error) { rows, err := tx.Query(ctx, fmt.Sprintf(` SELECT %s @@ -2667,7 +2638,7 @@ func Object(ctx context.Context, tx Tx, bucket, key string) (api.Object, error) }, nil } -func listObjectsNoDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { +func listObjectsNoDelim(ctx context.Context, tx Tx, bucket, prefix, substring, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { // fetch one more to see if there are more entries if limit <= -1 { limit = math.MaxInt @@ -2693,6 +2664,12 @@ func listObjectsNoDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, sort whereArgs = append(whereArgs, prefix+"%", utf8.RuneCountInString(prefix), prefix) } + // apply substring + if prefix != "" { + whereExprs = append(whereExprs, "INSTR(o.object_id, ?) > 0") + whereArgs = append(whereArgs, substring) + } + // apply sorting orderByExprs, err := orderByObject(sortBy, sortDir) if err != nil { diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index fe39f09e3..09b420345 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -470,8 +470,8 @@ func (tx *MainDatabaseTx) ListBuckets(ctx context.Context) ([]api.Bucket, error) return ssql.ListBuckets(ctx, tx) } -func (tx *MainDatabaseTx) ListObjects(ctx context.Context, bucket, prefix, delim, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { - return ssql.ListObjects(ctx, tx, bucket, prefix, delim, sortBy, sortDir, marker, limit) +func (tx *MainDatabaseTx) ListObjects(ctx context.Context, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { + return ssql.ListObjects(ctx, tx, bucket, prefix, substring, delim, sortBy, sortDir, marker, limit) } func (tx *MainDatabaseTx) MakeDirsForPath(ctx context.Context, path string) (int64, error) { @@ -756,10 +756,6 @@ func (tx *MainDatabaseTx) SearchHosts(ctx context.Context, autopilotID, filterMo return ssql.SearchHosts(ctx, tx, autopilotID, filterMode, usabilityMode, addressContains, keyIn, offset, limit) } -func (tx *MainDatabaseTx) SearchObjects(ctx context.Context, bucket, substring string, offset, limit int) ([]api.ObjectMetadata, error) { - return ssql.SearchObjects(ctx, tx, bucket, substring, offset, limit) -} - func (tx *MainDatabaseTx) SelectObjectMetadataExpr() string { return "o.object_id, o.size, o.health, o.mime_type, o.created_at, o.etag" } diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index a3dee2af5..6596848d3 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -457,8 +457,8 @@ func (tx *MainDatabaseTx) ListBuckets(ctx context.Context) ([]api.Bucket, error) return ssql.ListBuckets(ctx, tx) } -func (tx *MainDatabaseTx) ListObjects(ctx context.Context, bucket, prefix, delim, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { - return ssql.ListObjects(ctx, tx, bucket, prefix, delim, sortBy, sortDir, marker, limit) +func (tx *MainDatabaseTx) ListObjects(ctx context.Context, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { + return ssql.ListObjects(ctx, tx, bucket, prefix, substring, delim, sortBy, sortDir, marker, limit) } func (tx *MainDatabaseTx) MakeDirsForPath(ctx context.Context, path string) (int64, error) { @@ -757,10 +757,6 @@ func (tx *MainDatabaseTx) SearchHosts(ctx context.Context, autopilotID, filterMo return ssql.SearchHosts(ctx, tx, autopilotID, filterMode, usabilityMode, addressContains, keyIn, offset, limit) } -func (tx *MainDatabaseTx) SearchObjects(ctx context.Context, bucket, substring string, offset, limit int) ([]api.ObjectMetadata, error) { - return ssql.SearchObjects(ctx, tx, bucket, substring, offset, limit) -} - func (tx *MainDatabaseTx) SelectObjectMetadataExpr() string { return "o.object_id, o.size, o.health, o.mime_type, DATETIME(o.created_at), o.etag" } From 35e1345c872738117ab55e46b8c099751358324c Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 3 Sep 2024 15:09:37 +0200 Subject: [PATCH 029/708] config: remove deprecated fields --- README.md | 5 --- api/worker.go | 3 -- bus/routes.go | 37 ++-------------- cmd/renterd/config.go | 82 +----------------------------------- cmd/renterd/logger.go | 4 -- cmd/renterd/node.go | 31 -------------- config/config.go | 14 +++--- internal/test/e2e/cluster.go | 4 +- worker/worker.go | 1 - 9 files changed, 13 insertions(+), 168 deletions(-) diff --git a/README.md b/README.md index c20749935..ccac14ab1 100644 --- a/README.md +++ b/README.md @@ -54,10 +54,6 @@ overview of all settings configurable through the CLI. | `Log.Database.Level` | Logger level for database queries (info\|warn\|error). Defaults to 'warn' | `warn` | `--log.database.level` | `RENTERD_LOG_DATABASE_LEVEL`, `RENTERD_LOG_LEVEL` | `log.database.level` | | `Log.Database.IgnoreRecordNotFoundError` | Enable ignoring 'not found' errors resulting from database queries. Defaults to 'true' | `true` | `--log.database.ignoreRecordNotFoundError` | `RENTERD_LOG_DATABASE_IGNORE_RECORD_NOT_FOUND_ERROR` | `log.database.ignoreRecordNotFoundError` | | `Log.Database.SlowThreshold` | Threshold for slow queries in logger. Defaults to 100ms | `100ms` | `--log.database.slowThreshold` | `RENTERD_LOG_DATABASE_SLOW_THRESHOLD` | `log.database.slowThreshold` | -| `Log.Database.Level (DEPRECATED)` | Logger level | `warn` | `--db.logger.logLevel` | `RENTERD_DB_LOGGER_LOG_LEVEL` | `log.database.level` | -| `Log.Database.IgnoreRecordNotFoundError (DEPRECATED)` | Ignores 'not found' errors in logger | `true` | `--db.logger.ignoreNotFoundError`| `RENTERD_DB_LOGGER_IGNORE_NOT_FOUND_ERROR` | `log.ignoreRecordNotFoundError` | -| `Log.Database.SlowThreshold (DEPRECATED)` | Threshold for slow queries in logger | `100ms` | `--db.logger.slowThreshold` | `RENTERD_DB_LOGGER_SLOW_THRESHOLD` | `log.slowThreshold` | -| `Log.Path (DEPRECATED)` | Path to directory for logs | - | `--log-path` | `RENTERD_LOG_PATH` | `log.path` | | `Database.MySQL.URI` | Database URI for the bus | - | `--db.uri` | `RENTERD_DB_URI` | `database.mysql.uri` | | `Database.MySQL.User` | Database username for the bus | `renterd` | `--db.user` | `RENTERD_DB_USER` | `database.mysql.user` | | `Database.MySQL.Password` | Database password for the bus | - | - | `RENTERD_DB_PASSWORD` | `database.mysql.password` | @@ -102,7 +98,6 @@ overview of all settings configurable through the CLI. | `S3.Enabled` | Enables/disables S3 API | `true` | `--s3.enabled` | `RENTERD_S3_ENABLED` | `s3.enabled` | | `S3.HostBucketBases` | Enables bucket rewriting in the router for the provided bases | - | `--s3.hostBucketBases` | `RENTERD_S3_HOST_BUCKET_BASES` | `s3.hostBucketBases` | | `S3.HostBucketEnabled` | Enables bucket rewriting in the router | - | `--s3.hostBucketEnabled` | `RENTERD_S3_HOST_BUCKET_ENABLED` | `s3.hostBucketEnabled` | -| `S3.KeypairsV4 (DEPRECATED)` | V4 keypairs for S3 | - | - | - | `s3.keypairsV4` | ### Single-Node Setup diff --git a/api/worker.go b/api/worker.go index ab4aec5dd..7a6dd8dc8 100644 --- a/api/worker.go +++ b/api/worker.go @@ -58,9 +58,6 @@ type ( ContractsResponse struct { Contracts []Contract `json:"contracts"` Errors map[types.PublicKey]string `json:"errors,omitempty"` - - // deprecated - Error string `json:"error,omitempty"` } MemoryResponse struct { diff --git a/bus/routes.go b/bus/routes.go index 92fe0843b..a904333aa 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -290,13 +290,6 @@ func (b *Bus) walletTransactionsHandler(jc jape.Context) { return } - // TODO: deprecate these parameters when moving to v2.0.0 - var before, since time.Time - if jc.DecodeForm("before", (*api.TimeRFC3339)(&before)) != nil || - jc.DecodeForm("since", (*api.TimeRFC3339)(&since)) != nil { - return - } - // convertToTransaction converts wallet event data to a Transaction. convertToTransaction := func(kind string, data wallet.EventData) (txn types.Transaction, ok bool) { ok = true @@ -339,32 +332,10 @@ func (b *Bus) walletTransactionsHandler(jc jape.Context) { return transactions } - if before.IsZero() && since.IsZero() { - events, err := b.w.Events(offset, limit) - if jc.Check("couldn't load transactions", err) == nil { - jc.Encode(convertToTransactions(events)) - } - return - } - - // TODO: remove this when 'before' and 'since' are deprecated, until then we - // fetch all transactions and paginate manually if either is specified - events, err := b.w.Events(0, -1) - if jc.Check("couldn't load transactions", err) != nil { - return - } - filtered := events[:0] - for _, txn := range events { - if (before.IsZero() || txn.Timestamp.Before(before)) && - (since.IsZero() || txn.Timestamp.After(since)) { - filtered = append(filtered, txn) - } - } - events = filtered - if limit == 0 || limit == -1 { - jc.Encode(convertToTransactions(events[offset:])) - } else { - jc.Encode(convertToTransactions(events[offset : offset+limit])) + // fetch events + events, err := b.w.Events(offset, limit) + if jc.Check("couldn't load transactions", err) == nil { + jc.Encode(convertToTransactions(events)) } } diff --git a/cmd/renterd/config.go b/cmd/renterd/config.go index e1200f121..40f651086 100644 --- a/cmd/renterd/config.go +++ b/cmd/renterd/config.go @@ -2,7 +2,6 @@ package main import ( "bufio" - "encoding/hex" "errors" "flag" "fmt" @@ -20,10 +19,8 @@ import ( "go.sia.tech/coreutils/wallet" "go.sia.tech/renterd/api" "go.sia.tech/renterd/config" - "go.sia.tech/renterd/worker/s3" "golang.org/x/term" "gopkg.in/yaml.v3" - "lukechampine.com/frand" ) // TODO: handle RENTERD_S3_HOST_BUCKET_BASES correctly @@ -45,7 +42,6 @@ var ( enableANSI = runtime.GOOS != "windows" hostBasesStr string - keyPairsV4 string workerRemotePassStr string workerRemoteAddrsStr string ) @@ -69,7 +65,6 @@ func defaultConfig() config.Config { }, }, Log: config.Log{ - Path: "", // deprecated. included for compatibility. Level: "", File: config.LogFile{ Enabled: true, @@ -127,7 +122,6 @@ func defaultConfig() config.Config { Address: "localhost:8080", Enabled: true, DisableAuth: false, - KeypairsV4: nil, }, } } @@ -219,17 +213,6 @@ func sanitizeConfig(cfg *config.Config) error { } } - // parse S3 auth keys - if cfg.S3.Enabled { - if !cfg.S3.DisableAuth && keyPairsV4 != "" { - var err error - cfg.S3.KeypairsV4, err = s3.Parsev4AuthKeys(strings.Split(keyPairsV4, ";")) - if err != nil { - return fmt.Errorf("failed to parse keypairs: %v", err) - } - } - } - // default log levels if cfg.Log.Level == "" { cfg.Log.Level = "info" @@ -267,12 +250,6 @@ func parseYamlConfig(cfg *config.Config) { } func parseCLIFlags(cfg *config.Config) { - // deprecated - these go first so that they can be overwritten by the non-deprecated flags - flag.StringVar(&cfg.Log.Database.Level, "db.logger.logLevel", cfg.Log.Database.Level, "(deprecated) Logger level (overrides with RENTERD_DB_LOGGER_LOG_LEVEL)") - flag.BoolVar(&cfg.Database.Log.IgnoreRecordNotFoundError, "db.logger.ignoreNotFoundError", cfg.Database.Log.IgnoreRecordNotFoundError, "(deprecated) Ignores 'not found' errors in logger (overrides with RENTERD_DB_LOGGER_IGNORE_NOT_FOUND_ERROR)") - flag.DurationVar(&cfg.Database.Log.SlowThreshold, "db.logger.slowThreshold", cfg.Database.Log.SlowThreshold, "(deprecated) Threshold for slow queries in logger (overrides with RENTERD_DB_LOGGER_SLOW_THRESHOLD)") - flag.StringVar(&cfg.Log.Path, "log-path", cfg.Log.Path, "(deprecated) Path to directory for logs (overrides with RENTERD_LOG_PATH)") - // node flag.StringVar(&cfg.HTTP.Address, "http", cfg.HTTP.Address, "Address for serving the API") flag.StringVar(&cfg.Directory, "dir", cfg.Directory, "Directory for storing node state") @@ -303,7 +280,6 @@ func parseCLIFlags(cfg *config.Config) { flag.Uint64Var(&cfg.Bus.AnnouncementMaxAgeHours, "bus.announcementMaxAgeHours", cfg.Bus.AnnouncementMaxAgeHours, "Max age for announcements") flag.BoolVar(&cfg.Bus.Bootstrap, "bus.bootstrap", cfg.Bus.Bootstrap, "Bootstraps gateway and consensus modules") flag.StringVar(&cfg.Bus.GatewayAddr, "bus.gatewayAddr", cfg.Bus.GatewayAddr, "Address for Sia peer connections (overrides with RENTERD_BUS_GATEWAY_ADDR)") - flag.DurationVar(&cfg.Bus.PersistInterval, "bus.persistInterval", cfg.Bus.PersistInterval, "(deprecated) Interval for persisting consensus updates") flag.DurationVar(&cfg.Bus.UsedUTXOExpiry, "bus.usedUTXOExpiry", cfg.Bus.UsedUTXOExpiry, "Expiry for used UTXOs in transactions") flag.Int64Var(&cfg.Bus.SlabBufferCompletionThreshold, "bus.slabBufferCompletionThreshold", cfg.Bus.SlabBufferCompletionThreshold, "Threshold for slab buffer upload (overrides with RENTERD_BUS_SLAB_BUFFER_COMPLETION_THRESHOLD)") @@ -374,10 +350,6 @@ func parseEnvironmentVariables(cfg *config.Config) { parseEnvVar("RENTERD_DB_NAME", &cfg.Database.MySQL.Database) parseEnvVar("RENTERD_DB_METRICS_NAME", &cfg.Database.MySQL.MetricsDatabase) - parseEnvVar("RENTERD_DB_LOGGER_IGNORE_NOT_FOUND_ERROR", &cfg.Database.Log.IgnoreRecordNotFoundError) - parseEnvVar("RENTERD_DB_LOGGER_LOG_LEVEL", &cfg.Log.Level) - parseEnvVar("RENTERD_DB_LOGGER_SLOW_THRESHOLD", &cfg.Database.Log.SlowThreshold) - parseEnvVar("RENTERD_WORKER_ENABLED", &cfg.Worker.Enabled) parseEnvVar("RENTERD_WORKER_ID", &cfg.Worker.ID) parseEnvVar("RENTERD_WORKER_UNAUTHENTICATED_DOWNLOADS", &cfg.Worker.AllowUnauthenticatedDownloads) @@ -395,7 +367,6 @@ func parseEnvironmentVariables(cfg *config.Config) { parseEnvVar("RENTERD_S3_HOST_BUCKET_ENABLED", &cfg.S3.HostBucketEnabled) parseEnvVar("RENTERD_S3_HOST_BUCKET_BASES", &cfg.S3.HostBucketBases) - parseEnvVar("RENTERD_LOG_PATH", &cfg.Log.Path) parseEnvVar("RENTERD_LOG_LEVEL", &cfg.Log.Level) parseEnvVar("RENTERD_LOG_FILE_ENABLED", &cfg.Log.File.Enabled) parseEnvVar("RENTERD_LOG_FILE_FORMAT", &cfg.Log.File.Format) @@ -410,8 +381,6 @@ func parseEnvironmentVariables(cfg *config.Config) { parseEnvVar("RENTERD_WORKER_REMOTE_ADDRS", &workerRemoteAddrsStr) parseEnvVar("RENTERD_WORKER_API_PASSWORD", &workerRemotePassStr) - - parseEnvVar("RENTERD_S3_KEYPAIRS_V4", &keyPairsV4) } // readPasswordInput reads a password from stdin. @@ -689,53 +658,6 @@ func setS3Config(cfg *config.Config) { fmt.Println("It should not be exposed to the public internet without setting up a reverse proxy.") setListenAddress("S3 Address", &cfg.S3.Address, true) - // s3 access key - if len(cfg.S3.KeypairsV4) != 0 { - fmt.Println("") - fmt.Println("A S3 keypair has already been created.") - fmt.Println("If you change your S3 key pair, you will need to update any scripts or applications that use the S3 API.") - if !promptYesNo("Would you like to change your S3 key pair?") { - return - } - } - - cfg.S3.KeypairsV4 = make(map[string]string) - - fmt.Println("") - answer := promptQuestion("Would you like to automatically generate a new S3 key pair or set your own?", []string{"auto", "manual"}) - if strings.EqualFold(answer, "auto") { - // generate a new key pair - accessKey := hex.EncodeToString(frand.Bytes(20)) - secretKey := hex.EncodeToString(frand.Bytes(20)) - cfg.S3.KeypairsV4[accessKey] = secretKey - fmt.Println("") - fmt.Println("A new S3 key pair has been generated below.") - fmt.Println(wrapANSI("\033[34;1m", "Access Key:", "\033[0m"), accessKey) - fmt.Println(wrapANSI("\033[34;1m", "Secret Key:", "\033[0m"), secretKey) - fmt.Println("") - return - } - - var accessKey, secretKey string - for { - fmt.Println("") - fmt.Println("Enter your S3 access key. It must between 16 and 128 characters long.") - accessKey = readInput("Enter access key") - if len(accessKey) >= 16 && len(accessKey) <= 128 { - break - } - fmt.Println(wrapANSI("\033[31m", "Access key must be between 16 and 128 characters!", "\033[0m")) - } - - for { - fmt.Println("") - fmt.Println("Enter your S3 secret key. It must be 40 characters long.") - secretKey = readInput("Enter secret key") - if len(secretKey) == 40 { - break - } - fmt.Println(wrapANSI("\033[31m", "Secret key must be be 40 characters!", "\033[0m")) - } - - cfg.S3.KeypairsV4[accessKey] = secretKey + // s3 keypairs + fmt.Println("The S3 keypairs need to be configured through the 's3' setting.") } diff --git a/cmd/renterd/logger.go b/cmd/renterd/logger.go index d107cc4a0..d53bdd709 100644 --- a/cmd/renterd/logger.go +++ b/cmd/renterd/logger.go @@ -14,10 +14,6 @@ import ( func NewLogger(dir, filename string, cfg config.Log) (*zap.Logger, func(context.Context) error, error) { // path path := filepath.Join(dir, filename) - if cfg.Path != "" { - path = filepath.Join(cfg.Path, filename) - } - if cfg.File.Path != "" { path = cfg.File.Path } diff --git a/cmd/renterd/node.go b/cmd/renterd/node.go index a9758439c..5510788bb 100644 --- a/cmd/renterd/node.go +++ b/cmd/renterd/node.go @@ -9,7 +9,6 @@ import ( "os" "path/filepath" "runtime" - "strings" "time" "go.sia.tech/core/consensus" @@ -21,7 +20,6 @@ import ( "go.sia.tech/coreutils/wallet" "go.sia.tech/jape" "go.sia.tech/renterd/alerts" - "go.sia.tech/renterd/api" "go.sia.tech/renterd/autopilot" "go.sia.tech/renterd/build" "go.sia.tech/renterd/bus" @@ -411,35 +409,6 @@ func (n *node) Run() error { } } - // set initial S3 keys - if n.cfg.S3.Enabled && !n.cfg.S3.DisableAuth { - as, err := n.bus.S3AuthenticationSettings(context.Background()) - if err != nil && !strings.Contains(err.Error(), api.ErrSettingNotFound.Error()) { - return fmt.Errorf("failed to fetch S3 authentication settings: %w", err) - } else if as.V4Keypairs == nil { - as.V4Keypairs = make(map[string]string) - } - - // S3 key pair validation was broken at one point, we need to remove the - // invalid key pairs here to ensure we don't fail when we update the - // setting below. - for k, v := range as.V4Keypairs { - if err := (api.S3AuthenticationSettings{V4Keypairs: map[string]string{k: v}}).Validate(); err != nil { - n.logger.Infof("removing invalid S3 keypair for AccessKeyID %s, reason: %v", k, err) - delete(as.V4Keypairs, k) - } - } - - // merge keys - for k, v := range n.cfg.S3.KeypairsV4 { - as.V4Keypairs[k] = v - } - // update settings - if err := n.bus.UpdateSetting(context.Background(), api.SettingS3Authentication, as); err != nil { - return fmt.Errorf("failed to update S3 authentication settings: %w", err) - } - } - // start S3 server if n.s3Srv != nil { go n.s3Srv.Serve(n.s3Listener) diff --git a/config/config.go b/config/config.go index 6755d3869..89d950cce 100644 --- a/config/config.go +++ b/config/config.go @@ -41,7 +41,6 @@ type ( } Database struct { - Log DatabaseLog `yaml:"log,omitempty"` // deprecated. included for compatibility. // optional fields depending on backend MySQL MySQL `yaml:"mysql,omitempty"` } @@ -55,7 +54,6 @@ type ( RemotePassword string `yaml:"remotePassword,omitempty"` UsedUTXOExpiry time.Duration `yaml:"usedUtxoExpiry,omitempty"` SlabBufferCompletionThreshold int64 `yaml:"slabBufferCompleionThreshold,omitempty"` - PersistInterval time.Duration `yaml:"persistInterval,omitempty"` // deprecated } // LogFile configures the file output of the logger. @@ -76,7 +74,6 @@ type ( } Log struct { - Path string `yaml:"path,omitempty"` // deprecated. included for compatibility. Level string `yaml:"level,omitempty"` // global log level StdOut StdOut `yaml:"stdout,omitempty"` File LogFile `yaml:"file,omitempty"` @@ -104,12 +101,11 @@ type ( } S3 struct { - Address string `yaml:"address,omitempty"` - DisableAuth bool `yaml:"disableAuth,omitempty"` - Enabled bool `yaml:"enabled,omitempty"` - KeypairsV4 map[string]string `yaml:"keypairsV4,omitempty"` // deprecated. included for compatibility. - HostBucketEnabled bool `yaml:"hostBucketEnabled,omitempty"` - HostBucketBases []string `yaml:"hostBucketBases,omitempty"` + Address string `yaml:"address,omitempty"` + DisableAuth bool `yaml:"disableAuth,omitempty"` + Enabled bool `yaml:"enabled,omitempty"` + HostBucketEnabled bool `yaml:"hostBucketEnabled,omitempty"` + HostBucketBases []string `yaml:"hostBucketBases,omitempty"` } // Worker contains the configuration for a worker. diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index 3b09b672e..639911471 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -752,8 +752,8 @@ func (c *TestCluster) WaitForContracts() []api.Contract { // fetch all contracts resp, err := c.Worker.Contracts(context.Background(), time.Minute) c.tt.OK(err) - if resp.Error != "" { - c.tt.Fatal(resp.Error) + if len(resp.Errors) > 0 { + c.tt.Fatal(resp.Errors) } return resp.Contracts } diff --git a/worker/worker.go b/worker/worker.go index be27f2cc6..f75884790 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -1015,7 +1015,6 @@ func (w *Worker) rhpContractsHandlerGET(jc jape.Context) { contracts, errs := w.fetchContracts(ctx, busContracts, hosttimeout) resp := api.ContractsResponse{Contracts: contracts} if errs != nil { - resp.Error = errs.Error() resp.Errors = make(map[types.PublicKey]string) for pk, err := range errs { resp.Errors[pk] = err.Error() From b2c5eeff4b6dacd8d8c387719fe5f335d75dc26e Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 3 Sep 2024 15:33:19 +0200 Subject: [PATCH 030/708] stores: unmarshal in store --- stores/settingsdb.go | 81 ++++++++++++++------------------------------ 1 file changed, 26 insertions(+), 55 deletions(-) diff --git a/stores/settingsdb.go b/stores/settingsdb.go index 31190f769..e4eeb20c9 100644 --- a/stores/settingsdb.go +++ b/stores/settingsdb.go @@ -16,16 +16,8 @@ const ( SettingUpload = "upload" ) -func (s *SQLStore) GougingSettings(ctx context.Context) (gs api.GougingSettings, _ error) { - value, err := s.fetchSetting(ctx, SettingGouging) - if err != nil { - return api.GougingSettings{}, err - } - - if err := json.Unmarshal([]byte(value), &gs); err != nil { - s.logger.Panicf("failed to unmarshal gouging settings '%s': %v", value, err) - return api.GougingSettings{}, err - } +func (s *SQLStore) GougingSettings(ctx context.Context) (gs api.GougingSettings, err error) { + err = s.fetchSetting(ctx, SettingGouging, &gs) return } @@ -37,16 +29,8 @@ func (s *SQLStore) UpdateGougingSettings(ctx context.Context, gs api.GougingSett return s.updateSetting(ctx, SettingGouging, string(data)) } -func (s *SQLStore) PinnedSettings(ctx context.Context) (ps api.PinnedSettings, _ error) { - value, err := s.fetchSetting(ctx, SettingPinned) - if err != nil { - return api.PinnedSettings{}, err - } - - if err := json.Unmarshal([]byte(value), &ps); err != nil { - s.logger.Panicf("failed to unmarshal pinned settings '%s': %v", value, err) - return api.PinnedSettings{}, err - } +func (s *SQLStore) PinnedSettings(ctx context.Context) (ps api.PinnedSettings, err error) { + err = s.fetchSetting(ctx, SettingPinned, ps) return } @@ -58,16 +42,8 @@ func (s *SQLStore) UpdatePinnedSettings(ctx context.Context, ps api.PinnedSettin return s.updateSetting(ctx, SettingPinned, string(data)) } -func (s *SQLStore) UploadSettings(ctx context.Context) (us api.UploadSettings, _ error) { - value, err := s.fetchSetting(ctx, SettingUpload) - if err != nil { - return api.UploadSettings{}, err - } - - if err := json.Unmarshal([]byte(value), &us); err != nil { - s.logger.Panicf("failed to unmarshal upload settings '%s': %v", value, err) - return api.UploadSettings{}, err - } +func (s *SQLStore) UploadSettings(ctx context.Context) (us api.UploadSettings, err error) { + err = s.fetchSetting(ctx, SettingUpload, us) return } @@ -79,16 +55,8 @@ func (s *SQLStore) UpdateUploadSettings(ctx context.Context, us api.UploadSettin return s.updateSetting(ctx, SettingUpload, string(data)) } -func (s *SQLStore) S3Settings(ctx context.Context) (ss api.S3Settings, _ error) { - value, err := s.fetchSetting(ctx, SettingS3) - if err != nil { - return api.S3Settings{}, err - } - - if err := json.Unmarshal([]byte(value), &ss); err != nil { - s.logger.Panicf("failed to unmarshal s3 settings '%s': %v", value, err) - return api.S3Settings{}, err - } +func (s *SQLStore) S3Settings(ctx context.Context) (ss api.S3Settings, err error) { + err = s.fetchSetting(ctx, SettingS3, ss) return } @@ -119,26 +87,29 @@ func (s *SQLStore) Setting(ctx context.Context, key string, out interface{}) (er return json.Unmarshal([]byte(value), &out) } -func (s *SQLStore) fetchSetting(ctx context.Context, key string) (string, error) { - // check cache first +func (s *SQLStore) fetchSetting(ctx context.Context, key string, out interface{}) error { s.settingsMu.Lock() defer s.settingsMu.Unlock() - value, ok := s.settings[key] - if ok { - return value, nil - } - // check database - var err error - err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - value, err = tx.Setting(ctx, key) + value, ok := s.settings[key] + if !ok { + var err error + if err := s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { + value, err = tx.Setting(ctx, key) + return err + }); err != nil { + return fmt.Errorf("failed to fetch setting from db: %w", err) + } + s.settings[key] = value + } + + // unmarshal setting + if err := json.Unmarshal([]byte(value), &out); err != nil { + s.logger.Panicf("failed to unmarshal %s setting '%s': %v", key, value, err) return err - }) - if err != nil { - return "", fmt.Errorf("failed to fetch setting from db: %w", err) } - s.settings[key] = value - return value, nil + + return nil } func (s *SQLStore) updateSetting(ctx context.Context, key, value string) error { From 8a8e78313bf115086ed2243d8b3a73aad5c95bd0 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 3 Sep 2024 16:12:52 +0200 Subject: [PATCH 031/708] gouging: change gouging settings to base unit --- api/setting.go | 4 ++-- internal/bus/pinmanager.go | 8 ++++---- internal/gouging/gouging.go | 27 ++++++++------------------- 3 files changed, 14 insertions(+), 25 deletions(-) diff --git a/api/setting.go b/api/setting.go index 5976b00b2..c9601ccae 100644 --- a/api/setting.go +++ b/api/setting.go @@ -40,8 +40,8 @@ var ( DefaultGougingSettings = GougingSettings{ MaxRPCPrice: types.Siacoins(1).Div64(1000), // 1mS per RPC MaxContractPrice: types.Siacoins(15), // 15 SC per contract - MaxDownloadPrice: types.Siacoins(3000), // 3000 SC per 1 TB - MaxUploadPrice: types.Siacoins(3000), // 3000 SC per 1 TB + MaxDownloadPrice: types.Siacoins(3000).Div64(1e12), // 3000 SC per 1 TB + MaxUploadPrice: types.Siacoins(3000).Div64(1e12), // 3000 SC per 1 TB MaxStoragePrice: types.Siacoins(3000).Div64(1e12).Div64(144 * 30), // 3000 SC per TB per month HostBlockHeightLeeway: 6, // 6 blocks MinPriceTableValidity: 5 * time.Minute, // 5 minutes diff --git a/internal/bus/pinmanager.go b/internal/bus/pinmanager.go index c128a8392..07e8d7b4f 100644 --- a/internal/bus/pinmanager.go +++ b/internal/bus/pinmanager.go @@ -253,10 +253,10 @@ func (pm *pinManager) updateGougingSettings(ctx context.Context, pins api.Gougin // update max download price if pins.MaxDownload.IsPinned() { - update, err := convertCurrencyToSC(decimal.NewFromFloat(pins.MaxDownload.Value), rate) + maxDownloadCurr, err := convertCurrencyToSC(decimal.NewFromFloat(pins.MaxDownload.Value), rate) if err != nil { pm.logger.Warn("failed to convert max download price to currency") - } else if !gs.MaxDownloadPrice.Equals(update) { + } else if update := maxDownloadCurr.Div64(1e12); !gs.MaxDownloadPrice.Equals(update) { gs.MaxDownloadPrice = update pm.logger.Infow("updating max download price", "old", gs.MaxDownloadPrice, "new", update, "rate", rate) updated = true @@ -277,10 +277,10 @@ func (pm *pinManager) updateGougingSettings(ctx context.Context, pins api.Gougin // update max upload price if pins.MaxUpload.IsPinned() { - update, err := convertCurrencyToSC(decimal.NewFromFloat(pins.MaxUpload.Value), rate) + maxUploadCurr, err := convertCurrencyToSC(decimal.NewFromFloat(pins.MaxUpload.Value), rate) if err != nil { pm.logger.Warnw("failed to convert max upload price to currency", zap.Error(err)) - } else if !gs.MaxUploadPrice.Equals(update) { + } else if update := maxUploadCurr.Div64(1e12); !gs.MaxUploadPrice.Equals(update) { pm.logger.Infow("updating max upload price", "old", gs.MaxUploadPrice, "new", update, "rate", rate) gs.MaxUploadPrice = update updated = true diff --git a/internal/gouging/gouging.go b/internal/gouging/gouging.go index 8e729247d..5620498e2 100644 --- a/internal/gouging/gouging.go +++ b/internal/gouging/gouging.go @@ -13,8 +13,6 @@ import ( ) const ( - bytesPerTB = 1e12 - // maxBaseRPCPriceVsBandwidth is the max ratio for sane pricing between the // MinBaseRPCPrice and the MinDownloadBandwidthPrice. This ensures that 1 // million base RPC charges are at most 1% of the cost to download 4TB. This @@ -190,7 +188,7 @@ func checkPriceGougingPT(gs api.GougingSettings, cs api.ConsensusState, txnFee t } // check LatestRevisionCost - expect sane value - maxRevisionCost, overflow := gs.MaxRPCPrice.AddWithOverflow(gs.MaxDownloadPrice.Div64(bytesPerTB).Mul64(2048)) + maxRevisionCost, overflow := gs.MaxRPCPrice.AddWithOverflow(gs.MaxDownloadPrice.Mul64(2048)) if overflow { maxRevisionCost = types.MaxCurrency } @@ -292,12 +290,9 @@ func checkPruneGougingRHPv2(gs api.GougingSettings, hs *rhpv2.HostSettings) erro if overflow { return fmt.Errorf("%w: overflow detected when computing sector download price", errHostSettingsGouging) } - dpptb, overflow := sectorDownloadPrice.Mul64WithOverflow(uint64(bytesPerTB) / rhpv2.SectorSize) // sectors per TB - if overflow { - return fmt.Errorf("%w: overflow detected when computing download price per TiB", errHostSettingsGouging) - } - if !gs.MaxDownloadPrice.IsZero() && dpptb.Cmp(gs.MaxDownloadPrice) > 0 { - return fmt.Errorf("%w: cost per TiB exceeds max dl price: %v > %v", errHostSettingsGouging, dpptb, gs.MaxDownloadPrice) + dppb := sectorDownloadPrice.Div64(rhpv2.SectorSize) + if !gs.MaxDownloadPrice.IsZero() && dppb.Cmp(gs.MaxDownloadPrice) > 0 { + return fmt.Errorf("%w: cost per byte exceeds max dl price: %v > %v", errHostSettingsGouging, dppb, gs.MaxDownloadPrice) } return nil } @@ -310,12 +305,9 @@ func checkDownloadGougingRHPv3(gs api.GougingSettings, pt *rhpv3.HostPriceTable) if overflow { return fmt.Errorf("%w: overflow detected when computing sector download price", ErrPriceTableGouging) } - dpptb, overflow := sectorDownloadPrice.Mul64WithOverflow(uint64(bytesPerTB) / rhpv2.SectorSize) // sectors per TiB - if overflow { - return fmt.Errorf("%w: overflow detected when computing download price per TiB", ErrPriceTableGouging) - } - if !gs.MaxDownloadPrice.IsZero() && dpptb.Cmp(gs.MaxDownloadPrice) > 0 { - return fmt.Errorf("%w: cost per TiB exceeds max dl price: %v > %v", ErrPriceTableGouging, dpptb, gs.MaxDownloadPrice) + dppb := sectorDownloadPrice.Div64(rhpv2.SectorSize) + if !gs.MaxDownloadPrice.IsZero() && dppb.Cmp(gs.MaxDownloadPrice) > 0 { + return fmt.Errorf("%w: cost per byte exceeds max dl price: %v > %v", ErrPriceTableGouging, dppb, gs.MaxDownloadPrice) } return nil } @@ -328,10 +320,7 @@ func checkUploadGougingRHPv3(gs api.GougingSettings, pt *rhpv3.HostPriceTable) e if overflow { return fmt.Errorf("%w: overflow detected when computing sector price", ErrPriceTableGouging) } - uploadPrice, overflow := sectorUploadPricePerMonth.Mul64WithOverflow(uint64(bytesPerTB) / rhpv2.SectorSize) // sectors per TiB - if overflow { - return fmt.Errorf("%w: overflow detected when computing upload price per TiB", ErrPriceTableGouging) - } + uploadPrice := sectorUploadPricePerMonth.Div64(rhpv2.SectorSize) if !gs.MaxUploadPrice.IsZero() && uploadPrice.Cmp(gs.MaxUploadPrice) > 0 { return fmt.Errorf("%w: cost per TiB exceeds max ul price: %v > %v", ErrPriceTableGouging, uploadPrice, gs.MaxUploadPrice) } From 1c4648d63a16b664285e52224082251bc5e07f28 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 3 Sep 2024 17:16:07 +0200 Subject: [PATCH 032/708] settings: update store --- api/setting.go | 15 +- bus/bus.go | 116 +-------------- bus/routes.go | 27 ++-- cmd/renterd/node.go | 2 +- internal/bus/pinmanager.go | 5 +- internal/test/e2e/cluster.go | 4 +- stores/settings.go | 281 +++++++++++++++++++++++++++++++++++ stores/settingsdb.go | 130 ---------------- stores/sql.go | 5 +- stores/sql/main.go | 7 +- stores/sql_test.go | 3 +- 11 files changed, 319 insertions(+), 276 deletions(-) create mode 100644 stores/settings.go delete mode 100644 stores/settingsdb.go diff --git a/api/setting.go b/api/setting.go index e4741e5ff..a9443d6be 100644 --- a/api/setting.go +++ b/api/setting.go @@ -5,6 +5,7 @@ import ( "fmt" "time" + "go.sia.tech/core/consensus" rhpv2 "go.sia.tech/core/rhp/v2" "go.sia.tech/core/types" ) @@ -19,10 +20,6 @@ var ( // ErrInvalidRedundancySettings is returned if the redundancy settings are // not valid ErrInvalidRedundancySettings = errors.New("invalid redundancy settings") - - // ErrSettingNotFound is returned if a requested setting is not present in the - // database. - ErrSettingNotFound = errors.New("setting not found") ) var ( @@ -65,10 +62,12 @@ var ( V4Keypairs: map[string]string{}, }, } +) - // DefaultUploadSettings define the default upload settings the bus is - // configured with on startup. - DefaultUploadSettings = UploadSettings{ +// DefaultUploadSettings define the default upload settings the bus is +// configured with on startup. +func DefaultUploadSettings(network *consensus.Network) UploadSettings { + return UploadSettings{ Packing: UploadPackingSettings{ Enabled: true, SlabBufferMaxSizeSoft: 1 << 32, // 4 GiB @@ -78,7 +77,7 @@ var ( TotalShards: 30, }, } -) +} type ( // GougingSettings contain some price settings used in price gouging. diff --git a/bus/bus.go b/bus/bus.go index 718b4a091..4bb509d73 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -31,7 +31,6 @@ import ( rhp3 "go.sia.tech/renterd/internal/rhp/v3" "go.sia.tech/renterd/internal/utils" "go.sia.tech/renterd/object" - "go.sia.tech/renterd/stores" "go.sia.tech/renterd/stores/sql" "go.sia.tech/renterd/webhooks" "go.uber.org/zap" @@ -297,9 +296,7 @@ type ( S3Settings(ctx context.Context) (api.S3Settings, error) UpdateS3Settings(ctx context.Context, s3as api.S3Settings) error - // required for compat - Setting(ctx context.Context, key string, out interface{}) error - DeleteSetting(ctx context.Context, key string) error + MigrateV2Settings(ctx context.Context) error } WalletMetricsRecorder interface { @@ -364,6 +361,11 @@ func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksMa rhp3: rhp3.New(rhp.NewFallbackDialer(store, net.Dialer{}, l), l), } + // migrate settings store + if err := store.MigrateV2Settings(ctx); err != nil { + return nil, err + } + // create contract locker b.contractLocker = ibus.NewContractLocker() @@ -379,11 +381,6 @@ func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksMa // create wallet metrics recorder b.walletMetricsRecorder = ibus.NewWalletMetricRecorder(store, w, defaultWalletRecordMetricInterval, l) - // migrate settings to V2 types - if err := b.compatV2Settings(ctx); err != nil { - return nil, err - } - return b, nil } @@ -574,107 +571,6 @@ func (b *Bus) addRenewedContract(ctx context.Context, renewedFrom types.FileCont return r, nil } -func (b *Bus) compatV2Settings(ctx context.Context) error { - // escape early if all settings are present - if !errors.Is(errors.Join( - b.ss.Setting(ctx, stores.SettingGouging, nil), - b.ss.Setting(ctx, stores.SettingPinned, nil), - b.ss.Setting(ctx, stores.SettingS3, nil), - b.ss.Setting(ctx, stores.SettingUpload, nil), - ), api.ErrSettingNotFound) { - return nil - } - - // migrate gouging settings - if _, err := b.ss.GougingSettings(ctx); err != nil && !errors.Is(err, api.ErrSettingNotFound) { - return err - } else if errors.Is(err, api.ErrSettingNotFound) { - if err := b.ss.UpdateGougingSettings(ctx, api.DefaultGougingSettings); err != nil { - return err - } - } - - // migrate S3 settings - var s3as api.S3AuthenticationSettings - if err := b.ss.Setting(ctx, "s3authentication", &s3as); err != nil && !errors.Is(err, api.ErrSettingNotFound) { - return err - } else if errors.Is(err, api.ErrSettingNotFound) { - if err := b.ss.UpdateS3Settings(ctx, api.DefaultS3Settings); err != nil { - return err - } - } else if err == nil { - s3s := api.S3Settings{Authentication: s3as} - if err := s3s.Validate(); err != nil { - return fmt.Errorf("failed to migrate S3 setting: %w", err) - } else if err := b.ss.UpdateS3Settings(ctx, s3s); err != nil { - return err - } - } - - // migrate pinned settings - var ps api.PinnedSettings - if err := b.ss.Setting(ctx, "pricepinning", &ps); err != nil && !errors.Is(err, api.ErrSettingNotFound) { - return err - } else if errors.Is(err, api.ErrSettingNotFound) { - if err := b.ss.UpdatePinnedSettings(ctx, api.DefaultPinnedSettings); err != nil { - return err - } - } else { - if err := ps.Validate(); err != nil { - return fmt.Errorf("failed to migrate pinned setting: %w", err) - } else if err := b.ss.UpdatePinnedSettings(ctx, ps); err != nil { - return err - } - } - - // migrate upload settings - us := api.DefaultUploadSettings - var css struct { - Default string `json:"default"` - } - - // override default contract set on default upload settings - if err := b.ss.Setting(ctx, "contractset", &css); err != nil && !errors.Is(err, api.ErrSettingNotFound) { - return err - } else if err == nil { - us.DefaultContractSet = css.Default - } - - // override redundancy settings on default upload settings - var rs api.RedundancySettings - if err := b.ss.Setting(ctx, "redundancy", &rs); err != nil && !errors.Is(err, api.ErrSettingNotFound) { - return err - } else if errors.Is(err, api.ErrSettingNotFound) { - // default redundancy settings for testnet are different from mainnet - if mn, _ := chain.Mainnet(); mn.Name != b.cm.TipState().Network.Name { - us.Redundancy = api.DefaultRedundancySettingsTestnet - } - } else { - us.Redundancy = rs - } - - // override upload packing settings on default upload settings - var ups api.UploadPackingSettings - if err := b.ss.Setting(ctx, "uploadpacking", &ups); err != nil && !errors.Is(err, api.ErrSettingNotFound) { - return err - } else if err == nil { - us.Packing = ups - } - - if err := us.Validate(); err != nil { - return fmt.Errorf("failed to migrate upload setting: %w", err) - } else if err := b.ss.UpdateUploadSettings(ctx, us); err != nil { - return err - } - - // delete old settings - return errors.Join( - b.ss.DeleteSetting(ctx, "contractset"), - b.ss.DeleteSetting(ctx, "pricepinning"), - b.ss.DeleteSetting(ctx, "uploadpacking"), - ) -} - func (b *Bus) deriveRenterKey(hostKey types.PublicKey) types.PrivateKey { seed := blake2b.Sum256(append(b.deriveSubKey("renterkey"), hostKey[:]...)) pk := types.NewPrivateKeyFromSeed(seed[:]) diff --git a/bus/routes.go b/bus/routes.go index e4159dbeb..52b32ab5e 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1348,9 +1348,8 @@ func (b *Bus) packedSlabsHandlerDonePOST(jc jape.Context) { } func (b *Bus) settingsGougingHandlerGET(jc jape.Context) { - if gs, err := b.ss.GougingSettings(jc.Request.Context()); errors.Is(err, api.ErrSettingNotFound) { - jc.Error(err, http.StatusNotFound) - } else if jc.Check("failed to get gouging settings", err) == nil { + gs, err := b.ss.GougingSettings(jc.Request.Context()) + if jc.Check("failed to get gouging settings", err) == nil { jc.Encode(gs) } } @@ -1376,9 +1375,8 @@ func (b *Bus) settingsGougingHandlerPUT(jc jape.Context) { } func (b *Bus) settingsPinnedHandlerGET(jc jape.Context) { - if pps, err := b.ss.PinnedSettings(jc.Request.Context()); errors.Is(err, api.ErrSettingNotFound) { - jc.Error(err, http.StatusNotFound) - } else if jc.Check("failed to get pinned settings", err) == nil { + pps, err := b.ss.PinnedSettings(jc.Request.Context()) + if jc.Check("failed to get pinned settings", err) == nil { // populate the Autopilots map with the current autopilots aps, err := b.as.Autopilots(jc.Request.Context()) if jc.Check("failed to fetch autopilots", err) != nil { @@ -1423,9 +1421,8 @@ func (b *Bus) settingsPinnedHandlerPUT(jc jape.Context) { } func (b *Bus) settingsUploadHandlerGET(jc jape.Context) { - if us, err := b.ss.UploadSettings(jc.Request.Context()); errors.Is(err, api.ErrSettingNotFound) { - jc.Error(err, http.StatusNotFound) - } else if jc.Check("failed to get upload settings", err) == nil { + us, err := b.ss.UploadSettings(jc.Request.Context()) + if jc.Check("failed to get upload settings", err) == nil { jc.Encode(us) } } @@ -1450,9 +1447,8 @@ func (b *Bus) settingsUploadHandlerPUT(jc jape.Context) { } func (b *Bus) settingsS3HandlerGET(jc jape.Context) { - if s3s, err := b.ss.S3Settings(jc.Request.Context()); errors.Is(err, api.ErrSettingNotFound) { - jc.Error(err, http.StatusNotFound) - } else if jc.Check("failed to get S3 settings", err) == nil { + s3s, err := b.ss.S3Settings(jc.Request.Context()) + if jc.Check("failed to get S3 settings", err) == nil { jc.Encode(s3s) } } @@ -1610,7 +1606,7 @@ func (b *Bus) slabsPartialHandlerPOST(jc jape.Context) { return } us, err := b.ss.UploadSettings(jc.Request.Context()) - if err != nil && !errors.Is(err, api.ErrSettingNotFound) { + if err != nil { jc.Error(fmt.Errorf("could not get upload packing settings: %w", err), http.StatusInternalServerError) return } @@ -1645,10 +1641,7 @@ func (b *Bus) paramsHandlerUploadGET(jc jape.Context) { var uploadPacking bool var contractSet string us, err := b.ss.UploadSettings(jc.Request.Context()) - if err != nil && !errors.Is(err, api.ErrSettingNotFound) { - jc.Error(fmt.Errorf("could not get upload settings: %w", err), http.StatusInternalServerError) - return - } else if err == nil { + if jc.Check("could not get upload settings", err) == nil { contractSet = us.DefaultContractSet uploadPacking = us.Packing.Enabled } diff --git a/cmd/renterd/node.go b/cmd/renterd/node.go index 5510788bb..6721408ca 100644 --- a/cmd/renterd/node.go +++ b/cmd/renterd/node.go @@ -264,7 +264,7 @@ func newBus(ctx context.Context, cfg config.Config, pk types.PrivateKey, network if err != nil { return nil, nil, err } - sqlStore, err := stores.NewSQLStore(storeCfg) + sqlStore, err := stores.NewSQLStore(storeCfg, network) if err != nil { return nil, nil, err } diff --git a/internal/bus/pinmanager.go b/internal/bus/pinmanager.go index 716068565..8929b9064 100644 --- a/internal/bus/pinmanager.go +++ b/internal/bus/pinmanager.go @@ -311,10 +311,7 @@ func (pm *pinManager) updatePrices(ctx context.Context, forced bool) error { // fetch pinned settings settings, err := pm.s.PinnedSettings(ctx) - if errors.Is(err, api.ErrSettingNotFound) { - pm.logger.Debug("price pinning not configured, skipping price update") - return nil - } else if err != nil { + if err != nil { return fmt.Errorf("failed to fetch pinned settings: %w", err) } else if !settings.Enabled { pm.logger.Debug("price pinning is disabled, skipping price update") diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index 1c59cddfe..f96440835 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -526,7 +526,8 @@ func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, return nil, nil, nil, nil, err } - sqlStore, err := stores.NewSQLStore(storeCfg) + network, genesis := testNetwork() + sqlStore, err := stores.NewSQLStore(storeCfg, network) if err != nil { return nil, nil, nil, nil, err } @@ -554,7 +555,6 @@ func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, } // create chain manager - network, genesis := testNetwork() store, state, err := chain.NewDBStore(bdb, network, genesis) if err != nil { return nil, nil, nil, nil, err diff --git a/stores/settings.go b/stores/settings.go new file mode 100644 index 000000000..4d13262c6 --- /dev/null +++ b/stores/settings.go @@ -0,0 +1,281 @@ +package stores + +import ( + "context" + "encoding/json" + "errors" + "fmt" + + "go.sia.tech/renterd/api" + sql "go.sia.tech/renterd/stores/sql" + "go.uber.org/zap" +) + +const ( + SettingGouging = "gouging" + SettingPinned = "pinned" + SettingS3 = "s3" + SettingUpload = "upload" +) + +func (s *SQLStore) GougingSettings(ctx context.Context) (gs api.GougingSettings, err error) { + err = s.fetchSetting(ctx, SettingPinned, &gs) + return +} + +func (s *SQLStore) UpdateGougingSettings(ctx context.Context, gs api.GougingSettings) error { + return s.updateSetting(ctx, SettingGouging, gs) +} + +func (s *SQLStore) PinnedSettings(ctx context.Context) (ps api.PinnedSettings, err error) { + err = s.fetchSetting(ctx, SettingPinned, &ps) + return +} + +func (s *SQLStore) UpdatePinnedSettings(ctx context.Context, ps api.PinnedSettings) error { + return s.updateSetting(ctx, SettingPinned, ps) +} + +func (s *SQLStore) UploadSettings(ctx context.Context) (us api.UploadSettings, err error) { + err = s.fetchSetting(ctx, SettingUpload, &us) + return +} + +func (s *SQLStore) UpdateUploadSettings(ctx context.Context, us api.UploadSettings) error { + return s.updateSetting(ctx, SettingUpload, us) +} + +func (s *SQLStore) S3Settings(ctx context.Context) (ss api.S3Settings, err error) { + err = s.fetchSetting(ctx, SettingS3, &ss) + return +} + +func (s *SQLStore) UpdateS3Settings(ctx context.Context, ss api.S3Settings) error { + return s.updateSetting(ctx, SettingS3, ss) +} + +// MigrateV2Settings migrates the settings from the old format to the new, +// migrating the existing settings over to the new types and removing the old +// settings. If a setting is not present in the database it will be set to its +// default setting. If an existing setting is not valid, the default will be +// used and a warning will get logged. +func (s *SQLStore) MigrateV2Settings(ctx context.Context) error { + return s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { + // escape early if none of the old settings are present + var found bool + for _, key := range []string{ + "pricepinning", + "s3authentication", + "contractset", + "redundancy", + "uploadpacking", + } { + if _, err := tx.Setting(ctx, key); err != nil && !errors.Is(err, sql.ErrSettingNotFound) { + return err + } else if err == nil { + found = true + break + } + } + if !found { + return nil + } + + s.logger.Info("migrating settings...") + + // migrate gouging settings + value, err := tx.Setting(ctx, "gouging") + if err != nil && !errors.Is(err, sql.ErrSettingNotFound) { + return err + } else if errors.Is(err, sql.ErrSettingNotFound) { + if err := tx.UpdateSetting(ctx, SettingGouging, s.defaultSetting(SettingGouging)); err != nil { + return err + } + } + + // migrate pinned settings + value, err = tx.Setting(ctx, "pricepinning") + if err != nil && !errors.Is(err, sql.ErrSettingNotFound) { + return err + } else if err == nil { + var ps api.PinnedSettings + if err := json.Unmarshal([]byte(value), &ps); err != nil { + s.logger.Warnw("failed to unmarshal pinned settings, using default", zap.Error(err)) + value = s.defaultSetting(SettingPinned) + } else if err := ps.Validate(); err != nil { + s.logger.Warnw("failed to migrate pinned settings, using default", zap.Error(err)) + value = s.defaultSetting(SettingPinned) + } + + // update setting and delete old value + if err := tx.UpdateSetting(ctx, SettingPinned, value); err != nil { + return err + } else if err := tx.DeleteSetting(ctx, "pricepinning"); err != nil { + return err + } + } + + // migrate s3 settings + value, err = tx.Setting(ctx, "s3authentication") + if err != nil && !errors.Is(err, sql.ErrSettingNotFound) { + return err + } else if err == nil { + var s3s api.S3Settings + if err := json.Unmarshal([]byte(value), &s3s.Authentication); err != nil { + s.logger.Warnw("failed to unmarshal S3 authentication settings, using default", zap.Error(err)) + s3s = api.DefaultS3Settings + } else if err := s3s.Validate(); err != nil { + s.logger.Warnw("failed to migrate S3 settings, using default", zap.Error(err)) + s3s = api.DefaultS3Settings + } + + // update setting and delete old value + update, _ := json.Marshal(s3s) + if err := tx.UpdateSetting(ctx, SettingS3, string(update)); err != nil { + return err + } else if err := tx.DeleteSetting(ctx, "s3authentication"); err != nil { + return err + } + } + + us := api.DefaultUploadSettings(s.network) + + // migrate contractset settings + value, err = tx.Setting(ctx, "contractset") + if err != nil && !errors.Is(err, sql.ErrSettingNotFound) { + return err + } else if err == nil { + var css struct { + Default string `json:"default"` + } + if err := json.Unmarshal([]byte(value), &css); err != nil { + s.logger.Warnw("failed to unmarshal contractset setting, using default", zap.Error(err)) + } else { + us.DefaultContractSet = css.Default + } + + // delete old value + if err := tx.DeleteSetting(ctx, "contractset"); err != nil { + return err + } + } + + // migrate redundancy settings + value, err = tx.Setting(ctx, "redundancy") + if err != nil && !errors.Is(err, sql.ErrSettingNotFound) { + return err + } else if err == nil { + var rs api.RedundancySettings + if err := json.Unmarshal([]byte(value), &rs); err != nil { + s.logger.Warnw("failed to unmarshal redundancy settings, using default", zap.Error(err)) + } else if err := rs.Validate(); err != nil { + s.logger.Warnw("failed to migrate redundancy settings, using default", zap.Error(err)) + } else { + us.Redundancy = rs + } + + // delete old value + if err := tx.DeleteSetting(ctx, "redundancy"); err != nil { + return err + } + } + + // migrate uploadpacking settings + value, err = tx.Setting(ctx, "uploadpacking") + if err != nil && !errors.Is(err, sql.ErrSettingNotFound) { + return err + } else if err == nil { + var ups api.UploadPackingSettings + if err := json.Unmarshal([]byte(value), &ups); err != nil { + s.logger.Warnw("failed to unmarshal uploadpacking settings, using default", zap.Error(err)) + } else { + us.Packing = ups + } + + // delete old value + if err := tx.DeleteSetting(ctx, "uploadpacking"); err != nil { + return err + } + } + + // update upload settings + if update, err := json.Marshal(us); err != nil { + return fmt.Errorf("failed to marshal upload settings: %w", err) + } else if err := tx.UpdateSetting(ctx, SettingUpload, string(update)); err != nil { + return err + } + + s.logger.Info("successfully migrated settings") + return nil + }) +} + +func (s *SQLStore) fetchSetting(ctx context.Context, key string, out interface{}) error { + s.settingsMu.Lock() + defer s.settingsMu.Unlock() + + // fetch setting value + value, ok := s.settings[key] + if !ok { + var err error + if err := s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { + value, err = tx.Setting(ctx, key) + return err + }); err != nil && !errors.Is(err, sql.ErrSettingNotFound) { + return fmt.Errorf("failed to fetch setting from db: %w", err) + } else if err != nil { + value = s.defaultSetting(key) + } + s.settings[key] = value + } + + // unmarshal setting + if err := json.Unmarshal([]byte(value), &out); err != nil { + s.logger.Warnf("failed to unmarshal %s setting '%s': %v, using default", key, value, err) + return json.Unmarshal([]byte(s.defaultSetting(key)), &out) + } + + return nil +} + +func (s *SQLStore) updateSetting(ctx context.Context, key string, value any) error { + s.settingsMu.Lock() + defer s.settingsMu.Unlock() + + // marshal the value + b, err := json.Marshal(value) + if err != nil { + return fmt.Errorf("couldn't marshal the given value, error: %v", err) + } + + // update db first + err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { + return tx.UpdateSetting(ctx, key, string(b)) + }) + if err != nil { + return err + } + + // update cache second + s.settings[key] = string(b) + return nil +} + +func (s *SQLStore) defaultSetting(key string) string { + switch key { + case SettingGouging: + b, _ := json.Marshal(api.DefaultGougingSettings) + return string(b) + case SettingPinned: + b, _ := json.Marshal(api.DefaultPinnedSettings) + return string(b) + case SettingS3: + b, _ := json.Marshal(api.DefaultS3Settings) + return string(b) + case SettingUpload: + b, _ := json.Marshal(api.DefaultUploadSettings(s.network)) + return string(b) + default: + panic("unknown setting") // developer error + } +} diff --git a/stores/settingsdb.go b/stores/settingsdb.go deleted file mode 100644 index e4eeb20c9..000000000 --- a/stores/settingsdb.go +++ /dev/null @@ -1,130 +0,0 @@ -package stores - -import ( - "context" - "encoding/json" - "fmt" - - "go.sia.tech/renterd/api" - sql "go.sia.tech/renterd/stores/sql" -) - -const ( - SettingGouging = "gouging" - SettingPinned = "pinned" - SettingS3 = "s3" - SettingUpload = "upload" -) - -func (s *SQLStore) GougingSettings(ctx context.Context) (gs api.GougingSettings, err error) { - err = s.fetchSetting(ctx, SettingGouging, &gs) - return -} - -func (s *SQLStore) UpdateGougingSettings(ctx context.Context, gs api.GougingSettings) error { - data, err := json.Marshal(gs) - if err != nil { - return fmt.Errorf("couldn't marshal the given value, error: %v", err) - } - return s.updateSetting(ctx, SettingGouging, string(data)) -} - -func (s *SQLStore) PinnedSettings(ctx context.Context) (ps api.PinnedSettings, err error) { - err = s.fetchSetting(ctx, SettingPinned, ps) - return -} - -func (s *SQLStore) UpdatePinnedSettings(ctx context.Context, ps api.PinnedSettings) error { - data, err := json.Marshal(ps) - if err != nil { - return fmt.Errorf("couldn't marshal the given value, error: %v", err) - } - return s.updateSetting(ctx, SettingPinned, string(data)) -} - -func (s *SQLStore) UploadSettings(ctx context.Context) (us api.UploadSettings, err error) { - err = s.fetchSetting(ctx, SettingUpload, us) - return -} - -func (s *SQLStore) UpdateUploadSettings(ctx context.Context, us api.UploadSettings) error { - data, err := json.Marshal(us) - if err != nil { - return fmt.Errorf("couldn't marshal the given value, error: %v", err) - } - return s.updateSetting(ctx, SettingUpload, string(data)) -} - -func (s *SQLStore) S3Settings(ctx context.Context) (ss api.S3Settings, err error) { - err = s.fetchSetting(ctx, SettingS3, ss) - return -} - -func (s *SQLStore) UpdateS3Settings(ctx context.Context, ss api.S3Settings) error { - data, err := json.Marshal(ss) - if err != nil { - return fmt.Errorf("couldn't marshal the given value, error: %v", err) - } - return s.updateSetting(ctx, SettingS3, string(data)) -} - -func (s *SQLStore) DeleteSetting(ctx context.Context, key string) (err error) { - return s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - return tx.DeleteSetting(ctx, key) - }) -} - -func (s *SQLStore) Setting(ctx context.Context, key string, out interface{}) (err error) { - var value string - err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - value, err = tx.Setting(ctx, key) - return err - }) - if err != nil { - return fmt.Errorf("failed to fetch setting from db: %w", err) - } - - return json.Unmarshal([]byte(value), &out) -} - -func (s *SQLStore) fetchSetting(ctx context.Context, key string, out interface{}) error { - s.settingsMu.Lock() - defer s.settingsMu.Unlock() - - value, ok := s.settings[key] - if !ok { - var err error - if err := s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - value, err = tx.Setting(ctx, key) - return err - }); err != nil { - return fmt.Errorf("failed to fetch setting from db: %w", err) - } - s.settings[key] = value - } - - // unmarshal setting - if err := json.Unmarshal([]byte(value), &out); err != nil { - s.logger.Panicf("failed to unmarshal %s setting '%s': %v", key, value, err) - return err - } - - return nil -} - -func (s *SQLStore) updateSetting(ctx context.Context, key, value string) error { - // update db first - s.settingsMu.Lock() - defer s.settingsMu.Unlock() - - err := s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - return tx.UpdateSetting(ctx, key, value) - }) - if err != nil { - return err - } - - // update cache second - s.settings[key] = value - return nil -} diff --git a/stores/sql.go b/stores/sql.go index 50533768d..cd0c54e08 100644 --- a/stores/sql.go +++ b/stores/sql.go @@ -8,6 +8,7 @@ import ( "sync" "time" + "go.sia.tech/core/consensus" "go.sia.tech/core/types" "go.sia.tech/renterd/alerts" "go.sia.tech/renterd/stores/sql" @@ -39,6 +40,7 @@ type ( logger *zap.SugaredLogger walletAddress types.Address + network *consensus.Network // ObjectDB related fields slabBufferMgr *SlabBufferManager @@ -64,7 +66,7 @@ type ( // NewSQLStore uses a given Dialector to connect to a SQL database. NOTE: Only // pass migrate=true for the first instance of SQLHostDB if you connect via the // same Dialector multiple times. -func NewSQLStore(cfg Config) (*SQLStore, error) { +func NewSQLStore(cfg Config, network *consensus.Network) (*SQLStore, error) { if err := os.MkdirAll(cfg.PartialSlabDir, 0700); err != nil { return nil, fmt.Errorf("failed to create partial slab dir '%s': %v", cfg.PartialSlabDir, err) } @@ -97,6 +99,7 @@ func NewSQLStore(cfg Config) (*SQLStore, error) { settings: make(map[string]string), walletAddress: cfg.WalletAddress, + network: network, slabPruneSigChan: make(chan struct{}, 1), lastPrunedAt: time.Now(), diff --git a/stores/sql/main.go b/stores/sql/main.go index 02f876214..948c78a67 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -28,7 +28,10 @@ import ( "lukechampine.com/frand" ) -var ErrNegativeOffset = errors.New("offset can not be negative") +var ( + ErrNegativeOffset = errors.New("offset can not be negative") + ErrSettingNotFound = errors.New("setting not found") +) // helper types type ( @@ -2212,7 +2215,7 @@ func Setting(ctx context.Context, tx sql.Tx, key string) (string, error) { var value string err := tx.QueryRow(ctx, "SELECT value FROM settings WHERE `key` = ?", key).Scan((*BusSetting)(&value)) if errors.Is(err, dsql.ErrNoRows) { - return "", api.ErrSettingNotFound + return "", ErrSettingNotFound } else if err != nil { return "", fmt.Errorf("failed to fetch setting '%s': %w", key, err) } diff --git a/stores/sql_test.go b/stores/sql_test.go index 0846254cb..48fb7a6a9 100644 --- a/stores/sql_test.go +++ b/stores/sql_test.go @@ -10,6 +10,7 @@ import ( "testing" "time" + "go.sia.tech/core/consensus" "go.sia.tech/core/types" "go.sia.tech/renterd/alerts" "go.sia.tech/renterd/api" @@ -179,7 +180,7 @@ func newTestSQLStore(t *testing.T, cfg testSQLStoreConfig) *testSQLStore { LongQueryDuration: 100 * time.Millisecond, LongTxDuration: 100 * time.Millisecond, RetryTransactionIntervals: []time.Duration{50 * time.Millisecond, 100 * time.Millisecond, 200 * time.Millisecond}, - }) + }, &consensus.Network{}) if err != nil { t.Fatal("failed to create SQLStore", err) } From 0e49a7c7dd9606770fae255ad1493c2c7ce75d7e Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 3 Sep 2024 17:18:08 +0200 Subject: [PATCH 033/708] e2e: fix TestGouging --- internal/gouging/gouging.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/internal/gouging/gouging.go b/internal/gouging/gouging.go index 5620498e2..fd9aa3ff6 100644 --- a/internal/gouging/gouging.go +++ b/internal/gouging/gouging.go @@ -188,7 +188,11 @@ func checkPriceGougingPT(gs api.GougingSettings, cs api.ConsensusState, txnFee t } // check LatestRevisionCost - expect sane value - maxRevisionCost, overflow := gs.MaxRPCPrice.AddWithOverflow(gs.MaxDownloadPrice.Mul64(2048)) + twoKiBMax, overflow := gs.MaxDownloadPrice.Mul64WithOverflow(2048) + if overflow { + twoKiBMax = types.MaxCurrency + } + maxRevisionCost, overflow := gs.MaxRPCPrice.AddWithOverflow(twoKiBMax) if overflow { maxRevisionCost = types.MaxCurrency } From bd4d1c86b243f418cbdc4341002c78197082339c Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 3 Sep 2024 17:18:35 +0200 Subject: [PATCH 034/708] wallet: remove before and since wallet txn options --- api/wallet.go | 12 ---------- internal/test/e2e/cluster_test.go | 38 ------------------------------- 2 files changed, 50 deletions(-) diff --git a/api/wallet.go b/api/wallet.go index ad8acb56d..23fca9623 100644 --- a/api/wallet.go +++ b/api/wallet.go @@ -78,18 +78,6 @@ type ( // WalletTransactionsOption is an option for the WalletTransactions method. type WalletTransactionsOption func(url.Values) -func WalletTransactionsWithBefore(before time.Time) WalletTransactionsOption { - return func(q url.Values) { - q.Set("before", before.Format(time.RFC3339)) - } -} - -func WalletTransactionsWithSince(since time.Time) WalletTransactionsOption { - return func(q url.Values) { - q.Set("since", since.Format(time.RFC3339)) - } -} - func WalletTransactionsWithLimit(limit int) WalletTransactionsOption { return func(q url.Values) { q.Set("limit", fmt.Sprint(limit)) diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index ec4bfabd4..09042410e 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -1604,50 +1604,12 @@ func TestWalletTransactions(t *testing.T) { t.Fatal("transactions don't match", cmp.Diff(txns, allTxns[2:])) } - // Find the first index that has a different timestamp than the first. - var txnIdx int - for i := 1; i < len(allTxns); i++ { - if allTxns[i].Timestamp.Unix() != allTxns[0].Timestamp.Unix() { - txnIdx = i - break - } - } - medianTxnTimestamp := allTxns[txnIdx].Timestamp - // Limit the number of transactions to 5. txns, err = b.WalletTransactions(context.Background(), api.WalletTransactionsWithLimit(5)) tt.OK(err) if len(txns) != 5 { t.Fatalf("expected exactly 5 transactions, got %v", len(txns)) } - - // Fetch txns before and since median. - txns, err = b.WalletTransactions(context.Background(), api.WalletTransactionsWithBefore(medianTxnTimestamp)) - tt.OK(err) - if len(txns) == 0 { - for _, txn := range allTxns { - fmt.Println(txn.Timestamp.Unix()) - } - t.Fatal("expected at least 1 transaction before median timestamp", medianTxnTimestamp.Unix()) - } - for _, txn := range txns { - if txn.Timestamp.Unix() >= medianTxnTimestamp.Unix() { - t.Fatal("expected only transactions before median timestamp") - } - } - txns, err = b.WalletTransactions(context.Background(), api.WalletTransactionsWithSince(medianTxnTimestamp)) - tt.OK(err) - if len(txns) == 0 { - for _, txn := range allTxns { - fmt.Println(txn.Timestamp.Unix()) - } - t.Fatal("expected at least 1 transaction after median timestamp") - } - for _, txn := range txns { - if txn.Timestamp.Unix() < medianTxnTimestamp.Unix() { - t.Fatal("expected only transactions after median timestamp", medianTxnTimestamp.Unix()) - } - } } func TestUploadPacking(t *testing.T) { From dc3580b734d28b2483f7986797d92f88cb8f4012 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 3 Sep 2024 17:28:54 +0200 Subject: [PATCH 035/708] stores: add migrations --- internal/sql/migrations.go | 6 ++++++ .../mysql/migrations/main/migration_00016_gouging_units.sql | 1 + .../migrations/main/migration_00016_gouging_units.sql | 1 + 3 files changed, 8 insertions(+) create mode 100644 stores/sql/mysql/migrations/main/migration_00016_gouging_units.sql create mode 100644 stores/sql/sqlite/migrations/main/migration_00016_gouging_units.sql diff --git a/internal/sql/migrations.go b/internal/sql/migrations.go index 377bf6fc5..aefee160d 100644 --- a/internal/sql/migrations.go +++ b/internal/sql/migrations.go @@ -205,6 +205,12 @@ var ( return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00015_reset_drift", log) }, }, + { + ID: "00016_gouging_units", + Migrate: func(tx Tx) error { + return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00016_gouging_units", log) + }, + }, } } MetricsMigrations = func(ctx context.Context, migrationsFs embed.FS, log *zap.SugaredLogger) []Migration { diff --git a/stores/sql/mysql/migrations/main/migration_00016_gouging_units.sql b/stores/sql/mysql/migrations/main/migration_00016_gouging_units.sql new file mode 100644 index 000000000..c151d90a3 --- /dev/null +++ b/stores/sql/mysql/migrations/main/migration_00016_gouging_units.sql @@ -0,0 +1 @@ +UPDATE ephemeral_accounts SET drift = "0", clean_shutdown = 0, requires_sync = 1; \ No newline at end of file diff --git a/stores/sql/sqlite/migrations/main/migration_00016_gouging_units.sql b/stores/sql/sqlite/migrations/main/migration_00016_gouging_units.sql new file mode 100644 index 000000000..c151d90a3 --- /dev/null +++ b/stores/sql/sqlite/migrations/main/migration_00016_gouging_units.sql @@ -0,0 +1 @@ +UPDATE ephemeral_accounts SET drift = "0", clean_shutdown = 0, requires_sync = 1; \ No newline at end of file From 36a73dbe27fd7beee7f873bd3695ec6210517a8f Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 3 Sep 2024 17:31:19 +0200 Subject: [PATCH 036/708] testing: fix setting key --- stores/settings.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stores/settings.go b/stores/settings.go index 4d13262c6..2c9fc9a6b 100644 --- a/stores/settings.go +++ b/stores/settings.go @@ -19,7 +19,7 @@ const ( ) func (s *SQLStore) GougingSettings(ctx context.Context) (gs api.GougingSettings, err error) { - err = s.fetchSetting(ctx, SettingPinned, &gs) + err = s.fetchSetting(ctx, SettingGouging, &gs) return } From 51a4669c5bf87a2b1aabf9f34e6c73a744f094e3 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 3 Sep 2024 19:45:49 +0200 Subject: [PATCH 037/708] bus: remove /search/hosts --- api/host.go | 7 +- autopilot/autopilot.go | 8 +- autopilot/client.go | 2 +- autopilot/contractor/contractor.go | 8 +- bus/bus.go | 4 +- bus/client/hosts.go | 28 +- bus/routes.go | 6 +- internal/test/e2e/blocklist_test.go | 6 +- internal/test/e2e/cluster_test.go | 4 +- internal/test/e2e/pruning_test.go | 4 +- stores/hostdb.go | 11 +- stores/hostdb_test.go | 147 ++------- stores/sql/database.go | 6 +- stores/sql/main.go | 452 ++++++++++++++-------------- stores/sql/mysql/main.go | 8 +- stores/sql/sqlite/main.go | 8 +- 16 files changed, 305 insertions(+), 404 deletions(-) diff --git a/api/host.go b/api/host.go index 36dd0862a..8ce9b6d76 100644 --- a/api/host.go +++ b/api/host.go @@ -57,9 +57,8 @@ type ( MinRecentScanFailures uint64 `json:"minRecentScanFailures"` } - // SearchHostsRequest is the request type for the /api/bus/search/hosts - // endpoint. - SearchHostsRequest struct { + // HostsRequest is the request type for the /api/bus/hosts endpoint. + HostsRequest struct { Offset int `json:"offset"` Limit int `json:"limit"` AutopilotID string `json:"autopilotID"` @@ -110,7 +109,7 @@ type ( Offset int } - SearchHostOptions struct { + HostOptions struct { AutopilotID string AddressContains string FilterMode string diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 58bf76bb1..6c24db8ad 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -54,9 +54,9 @@ type Bus interface { // hostdb Host(ctx context.Context, hostKey types.PublicKey) (api.Host, error) + Hosts(ctx context.Context, opts api.HostOptions) ([]api.Host, error) HostsForScanning(ctx context.Context, opts api.HostsForScanningOptions) ([]api.HostAddress, error) RemoveOfflineHosts(ctx context.Context, minRecentScanFailures uint64, maxDowntime time.Duration) (uint64, error) - SearchHosts(ctx context.Context, opts api.SearchHostOptions) ([]api.Host, error) UpdateHostCheck(ctx context.Context, autopilotID string, hostKey types.PublicKey, hostCheck api.HostCheck) error // metrics @@ -194,7 +194,7 @@ func (ap *Autopilot) configHandlerPOST(jc jape.Context) { } // fetch hosts - hosts, err := ap.bus.SearchHosts(ctx, api.SearchHostOptions{}) + hosts, err := ap.bus.Hosts(ctx, api.HostOptions{}) if jc.Check("failed to get hosts", err) != nil { return } @@ -747,7 +747,7 @@ func (ap *Autopilot) hostHandlerGET(jc jape.Context) { } func (ap *Autopilot) hostsHandlerPOST(jc jape.Context) { - var req api.SearchHostsRequest + var req api.HostsRequest if jc.Decode(&req) != nil { return } else if req.AutopilotID != "" && req.AutopilotID != ap.id { @@ -755,7 +755,7 @@ func (ap *Autopilot) hostsHandlerPOST(jc jape.Context) { return } - hosts, err := ap.bus.SearchHosts(jc.Request.Context(), api.SearchHostOptions{ + hosts, err := ap.bus.Hosts(jc.Request.Context(), api.HostOptions{ AutopilotID: ap.id, Offset: req.Offset, Limit: req.Limit, diff --git a/autopilot/client.go b/autopilot/client.go index 010c1f037..22ab93f36 100644 --- a/autopilot/client.go +++ b/autopilot/client.go @@ -41,7 +41,7 @@ func (c *Client) HostInfo(hostKey types.PublicKey) (resp api.HostResponse, err e // HostInfo returns information about all hosts. func (c *Client) HostInfos(ctx context.Context, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) (resp []api.HostResponse, err error) { - err = c.c.POST("/hosts", api.SearchHostsRequest{ + err = c.c.POST("/hosts", api.HostsRequest{ Offset: offset, Limit: limit, FilterMode: filterMode, diff --git a/autopilot/contractor/contractor.go b/autopilot/contractor/contractor.go index 37223864b..639729c28 100644 --- a/autopilot/contractor/contractor.go +++ b/autopilot/contractor/contractor.go @@ -90,8 +90,8 @@ type Bus interface { FileContractTax(ctx context.Context, payout types.Currency) (types.Currency, error) FormContract(ctx context.Context, renterAddress types.Address, renterFunds types.Currency, hostKey types.PublicKey, hostIP string, hostCollateral types.Currency, endHeight uint64) (api.ContractMetadata, error) Host(ctx context.Context, hostKey types.PublicKey) (api.Host, error) + Hosts(ctx context.Context, opts api.HostOptions) ([]api.Host, error) RecordContractSetChurnMetric(ctx context.Context, metrics ...api.ContractSetChurnMetric) error - SearchHosts(ctx context.Context, opts api.SearchHostOptions) ([]api.Host, error) SetContractSet(ctx context.Context, set string, contracts []types.FileContractID) error UpdateHostCheck(ctx context.Context, autopilotID string, hostKey types.PublicKey, hostCheck api.HostCheck) error } @@ -1129,7 +1129,7 @@ func performContractFormations(ctx *mCtx, bus Bus, w Worker, cr contractReviser, for _, c := range contracts { usedHosts[c.HostKey] = struct{}{} } - allHosts, err := bus.SearchHosts(ctx, api.SearchHostOptions{}) + allHosts, err := bus.Hosts(ctx, api.HostOptions{}) if err != nil { return nil, fmt.Errorf("failed to fetch usable hosts: %w", err) } @@ -1228,7 +1228,7 @@ func performContractFormations(ctx *mCtx, bus Bus, w Worker, cr contractReviser, func performHostChecks(ctx *mCtx, bus Bus, logger *zap.SugaredLogger) error { var usabilityBreakdown unusableHostsBreakdown // fetch all hosts that are not blocked - hosts, err := bus.SearchHosts(ctx, api.SearchHostOptions{}) + hosts, err := bus.Hosts(ctx, api.HostOptions{}) if err != nil { return fmt.Errorf("failed to fetch all hosts: %w", err) } @@ -1281,7 +1281,7 @@ func performPostMaintenanceTasks(ctx *mCtx, bus Bus, w Worker, alerter alerts.Al if err != nil { return fmt.Errorf("failed to fetch contracts: %w", err) } - allHosts, err := bus.SearchHosts(ctx, api.SearchHostOptions{}) + allHosts, err := bus.Hosts(ctx, api.HostOptions{}) if err != nil { return fmt.Errorf("failed to fetch all hosts: %w", err) } diff --git a/bus/bus.go b/bus/bus.go index 423329e94..4f25c5426 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -201,12 +201,12 @@ type ( Host(ctx context.Context, hostKey types.PublicKey) (api.Host, error) HostAllowlist(ctx context.Context) ([]types.PublicKey, error) HostBlocklist(ctx context.Context) ([]string, error) + Hosts(ctx context.Context, autopilotID, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) ([]api.Host, error) HostsForScanning(ctx context.Context, maxLastScan time.Time, offset, limit int) ([]api.HostAddress, error) RecordHostScans(ctx context.Context, scans []api.HostScan) error RecordPriceTables(ctx context.Context, priceTableUpdate []api.HostPriceTableUpdate) error RemoveOfflineHosts(ctx context.Context, minRecentScanFailures uint64, maxDowntime time.Duration) (uint64, error) ResetLostSectors(ctx context.Context, hk types.PublicKey) error - SearchHosts(ctx context.Context, autopilotID, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) ([]api.Host, error) UpdateHostAllowlistEntries(ctx context.Context, add, remove []types.PublicKey, clear bool) error UpdateHostBlocklistEntries(ctx context.Context, add, remove []string, clear bool) error UpdateHostCheck(ctx context.Context, autopilotID string, hk types.PublicKey, check api.HostCheck) error @@ -442,6 +442,7 @@ func (b *Bus) Handler() http.Handler { "GET /contract/:id/roots": b.contractIDRootsHandlerGET, "GET /contract/:id/size": b.contractSizeHandlerGET, + "POST /hosts": b.hostsHandlerPOST, "GET /hosts/allowlist": b.hostsAllowlistHandlerGET, "PUT /hosts/allowlist": b.hostsAllowlistHandlerPUT, "GET /hosts/blocklist": b.hostsBlocklistHandlerGET, @@ -479,7 +480,6 @@ func (b *Bus) Handler() http.Handler { "POST /slabbuffer/done": b.packedSlabsHandlerDonePOST, "POST /slabbuffer/fetch": b.packedSlabsHandlerFetchPOST, - "POST /search/hosts": b.searchHostsHandlerPOST, "GET /search/objects": b.searchObjectsHandlerGET, "DELETE /sectors/:hk/:root": b.sectorsHostRootHandlerDELETE, diff --git a/bus/client/hosts.go b/bus/client/hosts.go index 391a9977e..a13ac5c57 100644 --- a/bus/client/hosts.go +++ b/bus/client/hosts.go @@ -16,6 +16,20 @@ func (c *Client) Host(ctx context.Context, hostKey types.PublicKey) (h api.Host, return } +// Hosts returns all hosts that match certain search criteria. +func (c *Client) Hosts(ctx context.Context, opts api.HostOptions) (hosts []api.Host, err error) { + err = c.c.WithContext(ctx).POST("/hosts", api.HostsRequest{ + AutopilotID: opts.AutopilotID, + Offset: opts.Offset, + Limit: opts.Limit, + FilterMode: opts.FilterMode, + UsabilityMode: opts.UsabilityMode, + AddressContains: opts.AddressContains, + KeyIn: opts.KeyIn, + }, &hosts) + return +} + // HostAllowlist returns the allowlist. func (c *Client) HostAllowlist(ctx context.Context) (allowlist []types.PublicKey, err error) { err = c.c.WithContext(ctx).GET("/hosts/allowlist", &allowlist) @@ -68,20 +82,6 @@ func (c *Client) ResetLostSectors(ctx context.Context, hostKey types.PublicKey) return } -// SearchHosts returns all hosts that match certain search criteria. -func (c *Client) SearchHosts(ctx context.Context, opts api.SearchHostOptions) (hosts []api.Host, err error) { - err = c.c.WithContext(ctx).POST("/search/hosts", api.SearchHostsRequest{ - AutopilotID: opts.AutopilotID, - Offset: opts.Offset, - Limit: opts.Limit, - FilterMode: opts.FilterMode, - UsabilityMode: opts.UsabilityMode, - AddressContains: opts.AddressContains, - KeyIn: opts.KeyIn, - }, &hosts) - return -} - // UpdateHostAllowlist updates the host allowlist, adding and removing the given entries. func (c *Client) UpdateHostAllowlist(ctx context.Context, add, remove []types.PublicKey, clear bool) (err error) { err = c.c.WithContext(ctx).PUT("/hosts/allowlist", api.UpdateAllowlistRequest{Add: add, Remove: remove, Clear: clear}) diff --git a/bus/routes.go b/bus/routes.go index 9733a0eb5..0e278c0a7 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -564,8 +564,8 @@ func (b *Bus) walletPendingHandler(jc jape.Context) { jc.Encode(relevant) } -func (b *Bus) searchHostsHandlerPOST(jc jape.Context) { - var req api.SearchHostsRequest +func (b *Bus) hostsHandlerPOST(jc jape.Context) { + var req api.HostsRequest if jc.Decode(&req) != nil { return } @@ -606,7 +606,7 @@ func (b *Bus) searchHostsHandlerPOST(jc jape.Context) { req.Limit = -1 } - hosts, err := b.hs.SearchHosts(jc.Request.Context(), req.AutopilotID, req.FilterMode, req.UsabilityMode, req.AddressContains, req.KeyIn, req.Offset, req.Limit) + hosts, err := b.hs.Hosts(jc.Request.Context(), req.AutopilotID, req.FilterMode, req.UsabilityMode, req.AddressContains, req.KeyIn, req.Offset, req.Limit) if jc.Check(fmt.Sprintf("couldn't fetch hosts %d-%d", req.Offset, req.Offset+req.Limit), err) != nil { return } diff --git a/internal/test/e2e/blocklist_test.go b/internal/test/e2e/blocklist_test.go index 39d2540a3..c82283726 100644 --- a/internal/test/e2e/blocklist_test.go +++ b/internal/test/e2e/blocklist_test.go @@ -121,7 +121,7 @@ func TestBlocklist(t *testing.T) { } // assert we have 4 hosts - hosts, err := b.SearchHosts(context.Background(), api.SearchHostOptions{}) + hosts, err := b.Hosts(context.Background(), api.HostOptions{}) tt.OK(err) if len(hosts) != 4 { t.Fatal("unexpected number of hosts", len(hosts)) @@ -146,7 +146,7 @@ func TestBlocklist(t *testing.T) { } // assert all others are blocked - hosts, err = b.SearchHosts(context.Background(), api.SearchHostOptions{}) + hosts, err = b.Hosts(context.Background(), api.HostOptions{}) tt.OK(err) if len(hosts) != 1 { t.Fatal("unexpected number of hosts", len(hosts)) @@ -156,7 +156,7 @@ func TestBlocklist(t *testing.T) { tt.OK(b.UpdateHostAllowlist(context.Background(), nil, nil, true)) // assert no hosts are blocked - hosts, err = b.SearchHosts(context.Background(), api.SearchHostOptions{}) + hosts, err = b.Hosts(context.Background(), api.HostOptions{}) tt.OK(err) if len(hosts) != 5 { t.Fatal("unexpected number of hosts", len(hosts)) diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index f048666fb..9064d1968 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -290,7 +290,7 @@ func TestNewTestCluster(t *testing.T) { }) // Get host info for every host. - hosts, err := cluster.Bus.SearchHosts(context.Background(), api.SearchHostOptions{}) + hosts, err := cluster.Bus.Hosts(context.Background(), api.HostOptions{}) tt.OK(err) for _, host := range hosts { hi, err := cluster.Autopilot.HostInfo(host.PublicKey) @@ -744,7 +744,7 @@ func TestUploadDownloadBasic(t *testing.T) { // check that stored data on hosts was updated tt.Retry(100, 100*time.Millisecond, func() error { - hosts, err := cluster.Bus.SearchHosts(context.Background(), api.SearchHostOptions{}) + hosts, err := cluster.Bus.Hosts(context.Background(), api.HostOptions{}) tt.OK(err) for _, host := range hosts { if host.StoredData != rhpv2.SectorSize { diff --git a/internal/test/e2e/pruning_test.go b/internal/test/e2e/pruning_test.go index 81db425a4..4ad48fc76 100644 --- a/internal/test/e2e/pruning_test.go +++ b/internal/test/e2e/pruning_test.go @@ -59,7 +59,7 @@ func TestHostPruning(t *testing.T) { tt.OKAll(a.Trigger(true)) // assert the host was not pruned - hostss, err := b.SearchHosts(context.Background(), api.SearchHostOptions{}) + hostss, err := b.Hosts(context.Background(), api.HostOptions{}) tt.OK(err) if len(hostss) != 1 { t.Fatal("host was pruned") @@ -71,7 +71,7 @@ func TestHostPruning(t *testing.T) { // assert the host was pruned tt.Retry(10, time.Second, func() error { - hostss, err = b.SearchHosts(context.Background(), api.SearchHostOptions{}) + hostss, err = b.Hosts(context.Background(), api.HostOptions{}) tt.OK(err) if len(hostss) != 0 { a.Trigger(true) // trigger autopilot diff --git a/stores/hostdb.go b/stores/hostdb.go index 5111682d1..22f9ab9f3 100644 --- a/stores/hostdb.go +++ b/stores/hostdb.go @@ -17,7 +17,7 @@ var ( // Host returns information about a host. func (s *SQLStore) Host(ctx context.Context, hostKey types.PublicKey) (api.Host, error) { - hosts, err := s.SearchHosts(ctx, "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", []types.PublicKey{hostKey}, 0, 1) + hosts, err := s.Hosts(ctx, "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", []types.PublicKey{hostKey}, 0, 1) if err != nil { return api.Host{}, err } else if len(hosts) == 0 { @@ -48,20 +48,15 @@ func (s *SQLStore) ResetLostSectors(ctx context.Context, hk types.PublicKey) err }) } -func (s *SQLStore) SearchHosts(ctx context.Context, autopilotID, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) ([]api.Host, error) { +func (s *SQLStore) Hosts(ctx context.Context, autopilotID, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) ([]api.Host, error) { var hosts []api.Host err := s.db.Transaction(ctx, func(tx sql.DatabaseTx) (err error) { - hosts, err = tx.SearchHosts(ctx, autopilotID, filterMode, usabilityMode, addressContains, keyIn, offset, limit) + hosts, err = tx.Hosts(ctx, autopilotID, filterMode, usabilityMode, addressContains, keyIn, offset, limit) return }) return hosts, err } -// Hosts returns non-blocked hosts at given offset and limit. -func (s *SQLStore) Hosts(ctx context.Context, offset, limit int) ([]api.Host, error) { - return s.SearchHosts(ctx, "", api.HostFilterModeAllowed, api.UsabilityFilterModeAll, "", nil, offset, limit) -} - func (s *SQLStore) RemoveOfflineHosts(ctx context.Context, minRecentFailures uint64, maxDowntime time.Duration) (removed uint64, err error) { // sanity check 'maxDowntime' if maxDowntime < 0 { diff --git a/stores/hostdb_test.go b/stores/hostdb_test.go index b4bba0dc1..c62d67adc 100644 --- a/stores/hostdb_test.go +++ b/stores/hostdb_test.go @@ -38,7 +38,7 @@ func TestSQLHostDB(t *testing.T) { } // Assert it's returned - allHosts, err := ss.Hosts(ctx, 0, -1) + allHosts, err := ss.Hosts(ctx, "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 0, -1) if err != nil { t.Fatal(err) } @@ -63,7 +63,7 @@ func TestSQLHostDB(t *testing.T) { } // Same thing again but with hosts. - hosts, err := ss.Hosts(ctx, 0, -1) + hosts, err := ss.Hosts(ctx, "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 0, -1) if err != nil { t.Fatal(err) } @@ -106,101 +106,8 @@ func TestSQLHostDB(t *testing.T) { } } -func (s *SQLStore) addTestScan(hk types.PublicKey, t time.Time, err error, settings rhpv2.HostSettings) error { - return s.RecordHostScans(context.Background(), []api.HostScan{ - { - HostKey: hk, - Settings: settings, - Success: err == nil, - Timestamp: t, - }, - }) -} - -// TestSQLHosts tests the Hosts method of the SQLHostDB type. -func TestSQLHosts(t *testing.T) { - ss := newTestSQLStore(t, defaultTestSQLStoreConfig) - defer ss.Close() - ctx := context.Background() - - hks, err := ss.addTestHosts(3) - if err != nil { - t.Fatal(err) - } - hk1, hk2, hk3 := hks[0], hks[1], hks[2] - - // assert the hosts method returns the expected hosts - if hosts, err := ss.Hosts(ctx, 0, -1); err != nil || len(hosts) != 3 { - t.Fatal("unexpected", len(hosts), err) - } - if hosts, err := ss.Hosts(ctx, 0, 1); err != nil || len(hosts) != 1 { - t.Fatal("unexpected", len(hosts), err) - } else if host := hosts[0]; host.PublicKey != hk1 { - t.Fatal("unexpected host", hk1, hk2, hk3, host.PublicKey) - } - if hosts, err := ss.Hosts(ctx, 1, 1); err != nil || len(hosts) != 1 { - t.Fatal("unexpected", len(hosts), err) - } else if host := hosts[0]; host.PublicKey != hk2 { - t.Fatal("unexpected host", hk1, hk2, hk3, host.PublicKey) - } - if hosts, err := ss.Hosts(ctx, 3, 1); err != nil || len(hosts) != 0 { - t.Fatal("unexpected", len(hosts), err) - } - if _, err := ss.Hosts(ctx, -1, -1); !errors.Is(err, sql.ErrNegativeOffset) { - t.Fatal("unexpected error", err) - } - - // Add a scan for each host. - n := time.Now() - if err := ss.addTestScan(hk1, n.Add(-time.Minute), nil, rhpv2.HostSettings{}); err != nil { - t.Fatal(err) - } - if err := ss.addTestScan(hk2, n.Add(-2*time.Minute), nil, rhpv2.HostSettings{}); err != nil { - t.Fatal(err) - } - if err := ss.addTestScan(hk3, n.Add(-3*time.Minute), nil, rhpv2.HostSettings{}); err != nil { - t.Fatal(err) - } - - // Fetch all hosts using the HostsForScanning method. - hostAddresses, err := ss.HostsForScanning(ctx, n, 0, 3) - if err != nil { - t.Fatal(err) - } - if len(hostAddresses) != 3 { - t.Fatal("wrong number of addresses") - } - if hostAddresses[0].PublicKey != hk3 { - t.Fatal("wrong key") - } - if hostAddresses[1].PublicKey != hk2 { - t.Fatal("wrong key") - } - if hostAddresses[2].PublicKey != hk1 { - t.Fatal("wrong key") - } - - // Fetch one host by setting the cutoff exactly to hk2. - hostAddresses, err = ss.HostsForScanning(ctx, n.Add(-2*time.Minute), 0, 3) - if err != nil { - t.Fatal(err) - } - if len(hostAddresses) != 1 { - t.Fatal("wrong number of addresses") - } - - // Fetch no hosts. - hostAddresses, err = ss.HostsForScanning(ctx, time.Time{}, 0, 3) - if err != nil { - t.Fatal(err) - } - if len(hostAddresses) != 0 { - t.Fatal("wrong number of addresses") - } -} - -// TestSearchHosts is a unit test for SearchHosts. -func TestSearchHosts(t *testing.T) { +// TestHosts is a unit test for the Hosts method of the SQLHostDB type. +func TestHosts(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() ctx := context.Background() @@ -216,7 +123,7 @@ func TestSearchHosts(t *testing.T) { hk1, hk2, hk3 := hks[0], hks[1], hks[2] // search all hosts - his, err := ss.SearchHosts(context.Background(), "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 0, -1) + his, err := ss.Hosts(context.Background(), "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 0, -1) if err != nil { t.Fatal(err) } else if len(his) != 3 { @@ -224,19 +131,19 @@ func TestSearchHosts(t *testing.T) { } // assert offset & limit are taken into account - his, err = ss.SearchHosts(context.Background(), "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 0, 1) + his, err = ss.Hosts(context.Background(), "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 0, 1) if err != nil { t.Fatal(err) } else if len(his) != 1 { t.Fatal("unexpected") } - his, err = ss.SearchHosts(context.Background(), "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 1, 2) + his, err = ss.Hosts(context.Background(), "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 1, 2) if err != nil { t.Fatal(err) } else if len(his) != 2 { t.Fatal("unexpected") } - his, err = ss.SearchHosts(context.Background(), "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 3, 1) + his, err = ss.Hosts(context.Background(), "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 3, 1) if err != nil { t.Fatal(err) } else if len(his) != 0 { @@ -244,16 +151,16 @@ func TestSearchHosts(t *testing.T) { } // assert address and key filters are taken into account - if hosts, err := ss.SearchHosts(ctx, "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "com:1001", nil, 0, -1); err != nil || len(hosts) != 1 { + if hosts, err := ss.Hosts(ctx, "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "com:1001", nil, 0, -1); err != nil || len(hosts) != 1 { t.Fatal("unexpected", len(hosts), err) } - if hosts, err := ss.SearchHosts(ctx, "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", []types.PublicKey{hk2, hk3}, 0, -1); err != nil || len(hosts) != 2 { + if hosts, err := ss.Hosts(ctx, "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", []types.PublicKey{hk2, hk3}, 0, -1); err != nil || len(hosts) != 2 { t.Fatal("unexpected", len(hosts), err) } - if hosts, err := ss.SearchHosts(ctx, "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "com:1002", []types.PublicKey{hk2, hk3}, 0, -1); err != nil || len(hosts) != 1 { + if hosts, err := ss.Hosts(ctx, "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "com:1002", []types.PublicKey{hk2, hk3}, 0, -1); err != nil || len(hosts) != 1 { t.Fatal("unexpected", len(hosts), err) } - if hosts, err := ss.SearchHosts(ctx, "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "com:1002", []types.PublicKey{hk1}, 0, -1); err != nil || len(hosts) != 0 { + if hosts, err := ss.Hosts(ctx, "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "com:1002", []types.PublicKey{hk1}, 0, -1); err != nil || len(hosts) != 0 { t.Fatal("unexpected", len(hosts), err) } @@ -262,7 +169,7 @@ func TestSearchHosts(t *testing.T) { if err != nil { t.Fatal(err) } - his, err = ss.SearchHosts(context.Background(), "", api.HostFilterModeAllowed, api.UsabilityFilterModeAll, "", nil, 0, -1) + his, err = ss.Hosts(context.Background(), "", api.HostFilterModeAllowed, api.UsabilityFilterModeAll, "", nil, 0, -1) if err != nil { t.Fatal(err) } else if len(his) != 2 { @@ -270,7 +177,7 @@ func TestSearchHosts(t *testing.T) { } else if his[0].PublicKey != (types.PublicKey{2}) || his[1].PublicKey != (types.PublicKey{3}) { t.Fatal("unexpected", his[0].PublicKey, his[1].PublicKey) } - his, err = ss.SearchHosts(context.Background(), "", api.HostFilterModeBlocked, api.UsabilityFilterModeAll, "", nil, 0, -1) + his, err = ss.Hosts(context.Background(), "", api.HostFilterModeBlocked, api.UsabilityFilterModeAll, "", nil, 0, -1) if err != nil { t.Fatal(err) } else if len(his) != 1 { @@ -325,7 +232,7 @@ func TestSearchHosts(t *testing.T) { } // fetch all hosts - his, err = ss.SearchHosts(context.Background(), "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 0, -1) + his, err = ss.Hosts(context.Background(), "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 0, -1) if err != nil { t.Fatal(err) } else if len(his) != 3 { @@ -342,7 +249,7 @@ func TestSearchHosts(t *testing.T) { } // assert autopilot filter is taken into account - his, err = ss.SearchHosts(context.Background(), ap1, api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 0, -1) + his, err = ss.Hosts(context.Background(), ap1, api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 0, -1) if err != nil { t.Fatal(err) } else if len(his) != 3 { @@ -364,7 +271,7 @@ func TestSearchHosts(t *testing.T) { if err != nil { t.Fatal(err) } - his, err = ss.SearchHosts(context.Background(), ap1, api.HostFilterModeAll, api.UsabilityFilterModeUsable, "", nil, 0, -1) + his, err = ss.Hosts(context.Background(), ap1, api.HostFilterModeAll, api.UsabilityFilterModeUsable, "", nil, 0, -1) if err != nil { t.Fatal(err) } else if len(his) != 1 { @@ -376,7 +283,7 @@ func TestSearchHosts(t *testing.T) { t.Fatal("unexpected", c1, ok) } - his, err = ss.SearchHosts(context.Background(), ap1, api.HostFilterModeAll, api.UsabilityFilterModeUnusable, "", nil, 0, -1) + his, err = ss.Hosts(context.Background(), ap1, api.HostFilterModeAll, api.UsabilityFilterModeUnusable, "", nil, 0, -1) if err != nil { t.Fatal(err) } else if len(his) != 1 { @@ -692,7 +599,7 @@ func TestSQLHostAllowlist(t *testing.T) { numHosts := func() int { t.Helper() - hosts, err := ss.Hosts(ctx, 0, -1) + hosts, err := ss.Hosts(ctx, "", api.HostFilterModeAllowed, api.UsabilityFilterModeAll, "", nil, 0, -1) if err != nil { t.Fatal(err) } @@ -770,23 +677,23 @@ func TestSQLHostAllowlist(t *testing.T) { t.Fatal(err) } - assertSearch := func(total, allowed, blocked int) error { + assertHosts := func(total, allowed, blocked int) error { t.Helper() - hosts, err := ss.SearchHosts(context.Background(), "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 0, -1) + hosts, err := ss.Hosts(context.Background(), "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 0, -1) if err != nil { return err } if len(hosts) != total { return fmt.Errorf("invalid number of hosts: %v", len(hosts)) } - hosts, err = ss.SearchHosts(context.Background(), "", api.HostFilterModeAllowed, api.UsabilityFilterModeAll, "", nil, 0, -1) + hosts, err = ss.Hosts(context.Background(), "", api.HostFilterModeAllowed, api.UsabilityFilterModeAll, "", nil, 0, -1) if err != nil { return err } if len(hosts) != allowed { return fmt.Errorf("invalid number of hosts: %v", len(hosts)) } - hosts, err = ss.SearchHosts(context.Background(), "", api.HostFilterModeBlocked, api.UsabilityFilterModeAll, "", nil, 0, -1) + hosts, err = ss.Hosts(context.Background(), "", api.HostFilterModeBlocked, api.UsabilityFilterModeAll, "", nil, 0, -1) if err != nil { return err } @@ -798,7 +705,7 @@ func TestSQLHostAllowlist(t *testing.T) { // Search for hosts using different modes. Should have 3 hosts in total, 2 // allowed ones and 2 blocked ones. - if err := assertSearch(3, 1, 2); err != nil { + if err := assertHosts(3, 1, 2); err != nil { t.Fatal(err) } @@ -818,7 +725,7 @@ func TestSQLHostAllowlist(t *testing.T) { // Search for hosts using different modes. Should have 2 hosts in total, 0 // allowed ones and 2 blocked ones. - if err := assertSearch(2, 0, 2); err != nil { + if err := assertHosts(2, 0, 2); err != nil { t.Fatal(err) } @@ -830,7 +737,7 @@ func TestSQLHostAllowlist(t *testing.T) { // Search for hosts using different modes. Should have 2 hosts in total, 2 // allowed ones and 0 blocked ones. - if err := assertSearch(2, 2, 0); err != nil { + if err := assertHosts(2, 2, 0); err != nil { t.Fatal(err) } @@ -860,7 +767,7 @@ func TestSQLHostBlocklist(t *testing.T) { numHosts := func() int { t.Helper() - hosts, err := ss.Hosts(ctx, 0, -1) + hosts, err := ss.Hosts(ctx, "", api.HostFilterModeAllowed, api.UsabilityFilterModeAll, "", nil, 0, -1) if err != nil { t.Fatal(err) } diff --git a/stores/sql/database.go b/stores/sql/database.go index cc2aab0df..67b1d7382 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -185,6 +185,9 @@ type ( // InsertObject inserts a new object into the database. InsertObject(ctx context.Context, bucket, key, contractSet string, dirID int64, o object.Object, mimeType, eTag string, md api.ObjectUserMetadata) error + // Hosts returns a list of hosts that match the provided filters + Hosts(ctx context.Context, autopilotID, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) ([]api.Host, error) + // HostsForScanning returns a list of hosts to scan which haven't been // scanned since at least maxLastScan. HostsForScanning(ctx context.Context, maxLastScan time.Time, offset, limit int) ([]api.HostAddress, error) @@ -310,9 +313,6 @@ type ( // existing ones and setting the clean shutdown flag. SaveAccounts(ctx context.Context, accounts []api.Account) error - // SearchHosts returns a list of hosts that match the provided filters - SearchHosts(ctx context.Context, autopilotID, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) ([]api.Host, error) - // SearchObjects returns a list of objects that contain the provided // substring. SearchObjects(ctx context.Context, bucket, substring string, offset, limit int) ([]api.ObjectMetadata, error) diff --git a/stores/sql/main.go b/stores/sql/main.go index bb03bd86d..d3801b175 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -655,6 +655,232 @@ func HostBlocklist(ctx context.Context, tx sql.Tx) ([]string, error) { return blocklist, nil } +func Hosts(ctx context.Context, tx sql.Tx, autopilot, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) ([]api.Host, error) { + if offset < 0 { + return nil, ErrNegativeOffset + } + + var hasAllowlist, hasBlocklist bool + if err := tx.QueryRow(ctx, "SELECT EXISTS (SELECT 1 FROM host_allowlist_entries)").Scan(&hasAllowlist); err != nil { + return nil, fmt.Errorf("failed to check for allowlist: %w", err) + } else if err := tx.QueryRow(ctx, "SELECT EXISTS (SELECT 1 FROM host_blocklist_entries)").Scan(&hasBlocklist); err != nil { + return nil, fmt.Errorf("failed to check for blocklist: %w", err) + } + + // validate filterMode + switch filterMode { + case api.HostFilterModeAllowed: + case api.HostFilterModeBlocked: + case api.HostFilterModeAll: + default: + return nil, fmt.Errorf("invalid filter mode: %v", filterMode) + } + + var whereExprs []string + var args []any + + // fetch autopilot id + var autopilotID int64 + if autopilot != "" { + if err := tx.QueryRow(ctx, "SELECT id FROM autopilots WHERE identifier = ?", autopilot). + Scan(&autopilotID); errors.Is(err, dsql.ErrNoRows) { + return nil, api.ErrAutopilotNotFound + } else if err != nil { + return nil, fmt.Errorf("failed to fetch autopilot id: %w", err) + } + } + + // filter allowlist/blocklist + switch filterMode { + case api.HostFilterModeAllowed: + if hasAllowlist { + whereExprs = append(whereExprs, "EXISTS (SELECT 1 FROM host_allowlist_entry_hosts hbeh WHERE hbeh.db_host_id = h.id)") + } + if hasBlocklist { + whereExprs = append(whereExprs, "NOT EXISTS (SELECT 1 FROM host_blocklist_entry_hosts hbeh WHERE hbeh.db_host_id = h.id)") + } + case api.HostFilterModeBlocked: + if hasAllowlist { + whereExprs = append(whereExprs, "NOT EXISTS (SELECT 1 FROM host_allowlist_entry_hosts hbeh WHERE hbeh.db_host_id = h.id)") + } + if hasBlocklist { + whereExprs = append(whereExprs, "EXISTS (SELECT 1 FROM host_blocklist_entry_hosts hbeh WHERE hbeh.db_host_id = h.id)") + } + if !hasAllowlist && !hasBlocklist { + // if neither an allowlist nor a blocklist exist, all hosts are + // allowed which means we return none + return []api.Host{}, nil + } + } + + // filter address + if addressContains != "" { + whereExprs = append(whereExprs, "h.net_address LIKE ?") + args = append(args, "%"+addressContains+"%") + } + + // filter public key + if len(keyIn) > 0 { + pubKeys := make([]any, len(keyIn)) + for i, pk := range keyIn { + pubKeys[i] = PublicKey(pk) + } + placeholders := strings.Repeat("?, ", len(keyIn)-1) + "?" + whereExprs = append(whereExprs, fmt.Sprintf("h.public_key IN (%s)", placeholders)) + args = append(args, pubKeys...) + } + + // filter usability + whereApExpr := "" + if autopilot != "" { + whereApExpr = "AND hc.db_autopilot_id = ?" + } + switch usabilityMode { + case api.UsabilityFilterModeUsable: + whereExprs = append(whereExprs, fmt.Sprintf("EXISTS (SELECT 1 FROM hosts h2 INNER JOIN host_checks hc ON hc.db_host_id = h2.id AND h2.id = h.id WHERE (hc.usability_blocked = 0 AND hc.usability_offline = 0 AND hc.usability_low_score = 0 AND hc.usability_redundant_ip = 0 AND hc.usability_gouging = 0 AND hc.usability_not_accepting_contracts = 0 AND hc.usability_not_announced = 0 AND hc.usability_not_completing_scan = 0) %s)", whereApExpr)) + args = append(args, autopilotID) + case api.UsabilityFilterModeUnusable: + whereExprs = append(whereExprs, fmt.Sprintf("EXISTS (SELECT 1 FROM hosts h2 INNER JOIN host_checks hc ON hc.db_host_id = h2.id AND h2.id = h.id WHERE (hc.usability_blocked = 1 OR hc.usability_offline = 1 OR hc.usability_low_score = 1 OR hc.usability_redundant_ip = 1 OR hc.usability_gouging = 1 OR hc.usability_not_accepting_contracts = 1 OR hc.usability_not_announced = 1 OR hc.usability_not_completing_scan = 1) %s)", whereApExpr)) + args = append(args, autopilotID) + } + + // offset + limit + if limit == -1 { + limit = math.MaxInt64 + } + offsetLimitStr := fmt.Sprintf("LIMIT %d OFFSET %d", limit, offset) + + // fetch stored data for each host + rows, err := tx.Query(ctx, "SELECT host_id, SUM(size) FROM contracts GROUP BY host_id") + if err != nil { + return nil, fmt.Errorf("failed to fetch stored data: %w", err) + } + defer rows.Close() + + storedDataMap := make(map[int64]uint64) + for rows.Next() { + var hostID int64 + var storedData uint64 + if err := rows.Scan(&hostID, &storedData); err != nil { + return nil, fmt.Errorf("failed to scan stored data: %w", err) + } + storedDataMap[hostID] = storedData + } + + // query hosts + var blockedExprs []string + if hasAllowlist { + blockedExprs = append(blockedExprs, "NOT EXISTS (SELECT 1 FROM host_allowlist_entry_hosts hbeh WHERE hbeh.db_host_id = h.id)") + } + if hasBlocklist { + blockedExprs = append(blockedExprs, "EXISTS (SELECT 1 FROM host_blocklist_entry_hosts hbeh WHERE hbeh.db_host_id = h.id)") + } + var blockedExpr string + if len(blockedExprs) > 0 { + blockedExpr = strings.Join(blockedExprs, " OR ") + } else { + blockedExpr = "FALSE" + } + var whereExpr string + if len(whereExprs) > 0 { + whereExpr = "WHERE " + strings.Join(whereExprs, " AND ") + } + rows, err = tx.Query(ctx, fmt.Sprintf(` + SELECT h.id, h.created_at, h.last_announcement, h.public_key, h.net_address, h.price_table, h.price_table_expiry, + h.settings, h.total_scans, h.last_scan, h.last_scan_success, h.second_to_last_scan_success, + h.uptime, h.downtime, h.successful_interactions, h.failed_interactions, COALESCE(h.lost_sectors, 0), + h.scanned, h.resolved_addresses, %s + FROM hosts h + %s + %s + `, blockedExpr, whereExpr, offsetLimitStr), args...) + if err != nil { + return nil, fmt.Errorf("failed to fetch hosts: %w", err) + } + defer rows.Close() + + var hosts []api.Host + for rows.Next() { + var h api.Host + var hostID int64 + var pte dsql.NullTime + var resolvedAddresses string + err := rows.Scan(&hostID, &h.KnownSince, &h.LastAnnouncement, (*PublicKey)(&h.PublicKey), + &h.NetAddress, (*PriceTable)(&h.PriceTable.HostPriceTable), &pte, + (*HostSettings)(&h.Settings), &h.Interactions.TotalScans, (*UnixTimeNS)(&h.Interactions.LastScan), &h.Interactions.LastScanSuccess, + &h.Interactions.SecondToLastScanSuccess, &h.Interactions.Uptime, &h.Interactions.Downtime, + &h.Interactions.SuccessfulInteractions, &h.Interactions.FailedInteractions, &h.Interactions.LostSectors, + &h.Scanned, &resolvedAddresses, &h.Blocked, + ) + if err != nil { + return nil, fmt.Errorf("failed to scan host: %w", err) + } + + if resolvedAddresses != "" { + h.ResolvedAddresses = strings.Split(resolvedAddresses, ",") + h.Subnets, err = utils.AddressesToSubnets(h.ResolvedAddresses) + if err != nil { + return nil, fmt.Errorf("failed to convert addresses to subnets: %w", err) + } + } + h.PriceTable.Expiry = pte.Time + h.StoredData = storedDataMap[hostID] + hosts = append(hosts, h) + } + + // query host checks + var apExpr string + if autopilot != "" { + apExpr = "WHERE ap.identifier = ?" + args = append(args, autopilot) + } + rows, err = tx.Query(ctx, fmt.Sprintf(` + SELECT h.public_key, ap.identifier, hc.usability_blocked, hc.usability_offline, hc.usability_low_score, hc.usability_redundant_ip, + hc.usability_gouging, usability_not_accepting_contracts, hc.usability_not_announced, hc.usability_not_completing_scan, + hc.score_age, hc.score_collateral, hc.score_interactions, hc.score_storage_remaining, hc.score_uptime, + hc.score_version, hc.score_prices, hc.gouging_contract_err, hc.gouging_download_err, hc.gouging_gouging_err, + hc.gouging_prune_err, hc.gouging_upload_err + FROM ( + SELECT h.id, h.public_key + FROM hosts h + %s + %s + ) AS h + INNER JOIN host_checks hc ON hc.db_host_id = h.id + INNER JOIN autopilots ap ON hc.db_autopilot_id = ap.id + %s + `, whereExpr, offsetLimitStr, apExpr), args...) + if err != nil { + return nil, fmt.Errorf("failed to fetch host checks: %w", err) + } + defer rows.Close() + + hostChecks := make(map[types.PublicKey]map[string]api.HostCheck) + for rows.Next() { + var ap string + var pk PublicKey + var hc api.HostCheck + err := rows.Scan(&pk, &ap, &hc.Usability.Blocked, &hc.Usability.Offline, &hc.Usability.LowScore, &hc.Usability.RedundantIP, + &hc.Usability.Gouging, &hc.Usability.NotAcceptingContracts, &hc.Usability.NotAnnounced, &hc.Usability.NotCompletingScan, + &hc.Score.Age, &hc.Score.Collateral, &hc.Score.Interactions, &hc.Score.StorageRemaining, &hc.Score.Uptime, + &hc.Score.Version, &hc.Score.Prices, &hc.Gouging.ContractErr, &hc.Gouging.DownloadErr, &hc.Gouging.GougingErr, + &hc.Gouging.PruneErr, &hc.Gouging.UploadErr) + if err != nil { + return nil, fmt.Errorf("failed to scan host: %w", err) + } + if _, ok := hostChecks[types.PublicKey(pk)]; !ok { + hostChecks[types.PublicKey(pk)] = make(map[string]api.HostCheck) + } + hostChecks[types.PublicKey(pk)][ap] = hc + } + + // fill in hosts + for i := range hosts { + hosts[i].Checks = hostChecks[hosts[i].PublicKey] + } + return hosts, nil +} + func HostsForScanning(ctx context.Context, tx sql.Tx, maxLastScan time.Time, offset, limit int) ([]api.HostAddress, error) { if offset < 0 { return nil, ErrNegativeOffset @@ -1975,232 +2201,6 @@ func ResetLostSectors(ctx context.Context, tx sql.Tx, hk types.PublicKey) error return nil } -func SearchHosts(ctx context.Context, tx sql.Tx, autopilot, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) ([]api.Host, error) { - if offset < 0 { - return nil, ErrNegativeOffset - } - - var hasAllowlist, hasBlocklist bool - if err := tx.QueryRow(ctx, "SELECT EXISTS (SELECT 1 FROM host_allowlist_entries)").Scan(&hasAllowlist); err != nil { - return nil, fmt.Errorf("failed to check for allowlist: %w", err) - } else if err := tx.QueryRow(ctx, "SELECT EXISTS (SELECT 1 FROM host_blocklist_entries)").Scan(&hasBlocklist); err != nil { - return nil, fmt.Errorf("failed to check for blocklist: %w", err) - } - - // validate filterMode - switch filterMode { - case api.HostFilterModeAllowed: - case api.HostFilterModeBlocked: - case api.HostFilterModeAll: - default: - return nil, fmt.Errorf("invalid filter mode: %v", filterMode) - } - - var whereExprs []string - var args []any - - // fetch autopilot id - var autopilotID int64 - if autopilot != "" { - if err := tx.QueryRow(ctx, "SELECT id FROM autopilots WHERE identifier = ?", autopilot). - Scan(&autopilotID); errors.Is(err, dsql.ErrNoRows) { - return nil, api.ErrAutopilotNotFound - } else if err != nil { - return nil, fmt.Errorf("failed to fetch autopilot id: %w", err) - } - } - - // filter allowlist/blocklist - switch filterMode { - case api.HostFilterModeAllowed: - if hasAllowlist { - whereExprs = append(whereExprs, "EXISTS (SELECT 1 FROM host_allowlist_entry_hosts hbeh WHERE hbeh.db_host_id = h.id)") - } - if hasBlocklist { - whereExprs = append(whereExprs, "NOT EXISTS (SELECT 1 FROM host_blocklist_entry_hosts hbeh WHERE hbeh.db_host_id = h.id)") - } - case api.HostFilterModeBlocked: - if hasAllowlist { - whereExprs = append(whereExprs, "NOT EXISTS (SELECT 1 FROM host_allowlist_entry_hosts hbeh WHERE hbeh.db_host_id = h.id)") - } - if hasBlocklist { - whereExprs = append(whereExprs, "EXISTS (SELECT 1 FROM host_blocklist_entry_hosts hbeh WHERE hbeh.db_host_id = h.id)") - } - if !hasAllowlist && !hasBlocklist { - // if neither an allowlist nor a blocklist exist, all hosts are - // allowed which means we return none - return []api.Host{}, nil - } - } - - // filter address - if addressContains != "" { - whereExprs = append(whereExprs, "h.net_address LIKE ?") - args = append(args, "%"+addressContains+"%") - } - - // filter public key - if len(keyIn) > 0 { - pubKeys := make([]any, len(keyIn)) - for i, pk := range keyIn { - pubKeys[i] = PublicKey(pk) - } - placeholders := strings.Repeat("?, ", len(keyIn)-1) + "?" - whereExprs = append(whereExprs, fmt.Sprintf("h.public_key IN (%s)", placeholders)) - args = append(args, pubKeys...) - } - - // filter usability - whereApExpr := "" - if autopilot != "" { - whereApExpr = "AND hc.db_autopilot_id = ?" - } - switch usabilityMode { - case api.UsabilityFilterModeUsable: - whereExprs = append(whereExprs, fmt.Sprintf("EXISTS (SELECT 1 FROM hosts h2 INNER JOIN host_checks hc ON hc.db_host_id = h2.id AND h2.id = h.id WHERE (hc.usability_blocked = 0 AND hc.usability_offline = 0 AND hc.usability_low_score = 0 AND hc.usability_redundant_ip = 0 AND hc.usability_gouging = 0 AND hc.usability_not_accepting_contracts = 0 AND hc.usability_not_announced = 0 AND hc.usability_not_completing_scan = 0) %s)", whereApExpr)) - args = append(args, autopilotID) - case api.UsabilityFilterModeUnusable: - whereExprs = append(whereExprs, fmt.Sprintf("EXISTS (SELECT 1 FROM hosts h2 INNER JOIN host_checks hc ON hc.db_host_id = h2.id AND h2.id = h.id WHERE (hc.usability_blocked = 1 OR hc.usability_offline = 1 OR hc.usability_low_score = 1 OR hc.usability_redundant_ip = 1 OR hc.usability_gouging = 1 OR hc.usability_not_accepting_contracts = 1 OR hc.usability_not_announced = 1 OR hc.usability_not_completing_scan = 1) %s)", whereApExpr)) - args = append(args, autopilotID) - } - - // offset + limit - if limit == -1 { - limit = math.MaxInt64 - } - offsetLimitStr := fmt.Sprintf("LIMIT %d OFFSET %d", limit, offset) - - // fetch stored data for each host - rows, err := tx.Query(ctx, "SELECT host_id, SUM(size) FROM contracts GROUP BY host_id") - if err != nil { - return nil, fmt.Errorf("failed to fetch stored data: %w", err) - } - defer rows.Close() - - storedDataMap := make(map[int64]uint64) - for rows.Next() { - var hostID int64 - var storedData uint64 - if err := rows.Scan(&hostID, &storedData); err != nil { - return nil, fmt.Errorf("failed to scan stored data: %w", err) - } - storedDataMap[hostID] = storedData - } - - // query hosts - var blockedExprs []string - if hasAllowlist { - blockedExprs = append(blockedExprs, "NOT EXISTS (SELECT 1 FROM host_allowlist_entry_hosts hbeh WHERE hbeh.db_host_id = h.id)") - } - if hasBlocklist { - blockedExprs = append(blockedExprs, "EXISTS (SELECT 1 FROM host_blocklist_entry_hosts hbeh WHERE hbeh.db_host_id = h.id)") - } - var blockedExpr string - if len(blockedExprs) > 0 { - blockedExpr = strings.Join(blockedExprs, " OR ") - } else { - blockedExpr = "FALSE" - } - var whereExpr string - if len(whereExprs) > 0 { - whereExpr = "WHERE " + strings.Join(whereExprs, " AND ") - } - rows, err = tx.Query(ctx, fmt.Sprintf(` - SELECT h.id, h.created_at, h.last_announcement, h.public_key, h.net_address, h.price_table, h.price_table_expiry, - h.settings, h.total_scans, h.last_scan, h.last_scan_success, h.second_to_last_scan_success, - h.uptime, h.downtime, h.successful_interactions, h.failed_interactions, COALESCE(h.lost_sectors, 0), - h.scanned, h.resolved_addresses, %s - FROM hosts h - %s - %s - `, blockedExpr, whereExpr, offsetLimitStr), args...) - if err != nil { - return nil, fmt.Errorf("failed to fetch hosts: %w", err) - } - defer rows.Close() - - var hosts []api.Host - for rows.Next() { - var h api.Host - var hostID int64 - var pte dsql.NullTime - var resolvedAddresses string - err := rows.Scan(&hostID, &h.KnownSince, &h.LastAnnouncement, (*PublicKey)(&h.PublicKey), - &h.NetAddress, (*PriceTable)(&h.PriceTable.HostPriceTable), &pte, - (*HostSettings)(&h.Settings), &h.Interactions.TotalScans, (*UnixTimeNS)(&h.Interactions.LastScan), &h.Interactions.LastScanSuccess, - &h.Interactions.SecondToLastScanSuccess, &h.Interactions.Uptime, &h.Interactions.Downtime, - &h.Interactions.SuccessfulInteractions, &h.Interactions.FailedInteractions, &h.Interactions.LostSectors, - &h.Scanned, &resolvedAddresses, &h.Blocked, - ) - if err != nil { - return nil, fmt.Errorf("failed to scan host: %w", err) - } - - if resolvedAddresses != "" { - h.ResolvedAddresses = strings.Split(resolvedAddresses, ",") - h.Subnets, err = utils.AddressesToSubnets(h.ResolvedAddresses) - if err != nil { - return nil, fmt.Errorf("failed to convert addresses to subnets: %w", err) - } - } - h.PriceTable.Expiry = pte.Time - h.StoredData = storedDataMap[hostID] - hosts = append(hosts, h) - } - - // query host checks - var apExpr string - if autopilot != "" { - apExpr = "WHERE ap.identifier = ?" - args = append(args, autopilot) - } - rows, err = tx.Query(ctx, fmt.Sprintf(` - SELECT h.public_key, ap.identifier, hc.usability_blocked, hc.usability_offline, hc.usability_low_score, hc.usability_redundant_ip, - hc.usability_gouging, usability_not_accepting_contracts, hc.usability_not_announced, hc.usability_not_completing_scan, - hc.score_age, hc.score_collateral, hc.score_interactions, hc.score_storage_remaining, hc.score_uptime, - hc.score_version, hc.score_prices, hc.gouging_contract_err, hc.gouging_download_err, hc.gouging_gouging_err, - hc.gouging_prune_err, hc.gouging_upload_err - FROM ( - SELECT h.id, h.public_key - FROM hosts h - %s - %s - ) AS h - INNER JOIN host_checks hc ON hc.db_host_id = h.id - INNER JOIN autopilots ap ON hc.db_autopilot_id = ap.id - %s - `, whereExpr, offsetLimitStr, apExpr), args...) - if err != nil { - return nil, fmt.Errorf("failed to fetch host checks: %w", err) - } - defer rows.Close() - - hostChecks := make(map[types.PublicKey]map[string]api.HostCheck) - for rows.Next() { - var ap string - var pk PublicKey - var hc api.HostCheck - err := rows.Scan(&pk, &ap, &hc.Usability.Blocked, &hc.Usability.Offline, &hc.Usability.LowScore, &hc.Usability.RedundantIP, - &hc.Usability.Gouging, &hc.Usability.NotAcceptingContracts, &hc.Usability.NotAnnounced, &hc.Usability.NotCompletingScan, - &hc.Score.Age, &hc.Score.Collateral, &hc.Score.Interactions, &hc.Score.StorageRemaining, &hc.Score.Uptime, - &hc.Score.Version, &hc.Score.Prices, &hc.Gouging.ContractErr, &hc.Gouging.DownloadErr, &hc.Gouging.GougingErr, - &hc.Gouging.PruneErr, &hc.Gouging.UploadErr) - if err != nil { - return nil, fmt.Errorf("failed to scan host: %w", err) - } - if _, ok := hostChecks[types.PublicKey(pk)]; !ok { - hostChecks[types.PublicKey(pk)] = make(map[string]api.HostCheck) - } - hostChecks[types.PublicKey(pk)][ap] = hc - } - - // fill in hosts - for i := range hosts { - hosts[i].Checks = hostChecks[hosts[i].PublicKey] - } - return hosts, nil -} - func Setting(ctx context.Context, tx sql.Tx, key string) (string, error) { var value string err := tx.QueryRow(ctx, "SELECT value FROM settings WHERE `key` = ?", key).Scan((*BusSetting)(&value)) diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index 08ff0010e..9f4ea97a5 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -403,6 +403,10 @@ func (tx *MainDatabaseTx) HostBlocklist(ctx context.Context) ([]string, error) { return ssql.HostBlocklist(ctx, tx) } +func (tx *MainDatabaseTx) Hosts(ctx context.Context, autopilotID, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) ([]api.Host, error) { + return ssql.Hosts(ctx, tx, autopilotID, filterMode, usabilityMode, addressContains, keyIn, offset, limit) +} + func (tx *MainDatabaseTx) HostsForScanning(ctx context.Context, maxLastScan time.Time, offset, limit int) ([]api.HostAddress, error) { return ssql.HostsForScanning(ctx, tx, maxLastScan, offset, limit) } @@ -756,10 +760,6 @@ func (tx *MainDatabaseTx) ScanObjectMetadata(s ssql.Scanner, others ...any) (md return md, nil } -func (tx *MainDatabaseTx) SearchHosts(ctx context.Context, autopilotID, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) ([]api.Host, error) { - return ssql.SearchHosts(ctx, tx, autopilotID, filterMode, usabilityMode, addressContains, keyIn, offset, limit) -} - func (tx *MainDatabaseTx) SearchObjects(ctx context.Context, bucket, substring string, offset, limit int) ([]api.ObjectMetadata, error) { return ssql.SearchObjects(ctx, tx, bucket, substring, offset, limit) } diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index b72ec5e8c..6ee1f3c04 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -392,6 +392,10 @@ func (tx *MainDatabaseTx) HostBlocklist(ctx context.Context) ([]string, error) { return ssql.HostBlocklist(ctx, tx) } +func (tx *MainDatabaseTx) Hosts(ctx context.Context, autopilotID, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) ([]api.Host, error) { + return ssql.Hosts(ctx, tx, autopilotID, filterMode, usabilityMode, addressContains, keyIn, offset, limit) +} + func (tx *MainDatabaseTx) HostsForScanning(ctx context.Context, maxLastScan time.Time, offset, limit int) ([]api.HostAddress, error) { return ssql.HostsForScanning(ctx, tx, maxLastScan, offset, limit) } @@ -757,10 +761,6 @@ func (tx *MainDatabaseTx) ScanObjectMetadata(s ssql.Scanner, others ...any) (md return md, nil } -func (tx *MainDatabaseTx) SearchHosts(ctx context.Context, autopilotID, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) ([]api.Host, error) { - return ssql.SearchHosts(ctx, tx, autopilotID, filterMode, usabilityMode, addressContains, keyIn, offset, limit) -} - func (tx *MainDatabaseTx) SearchObjects(ctx context.Context, bucket, substring string, offset, limit int) ([]api.ObjectMetadata, error) { return ssql.SearchObjects(ctx, tx, bucket, substring, offset, limit) } From e6d837cf3bc9b3266090618fb2c682270fbdb15c Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 4 Sep 2024 13:40:51 +0200 Subject: [PATCH 038/708] bus: fix analyse --- autopilot/autopilot.go | 6 ++-- autopilot/contractor/contractor.go | 4 +-- autopilot/workerpool.go | 1 - bus/bus.go | 9 ----- bus/client/contracts.go | 6 ++++ bus/client/wallet.go | 5 +-- internal/test/e2e/cluster_test.go | 55 ++++++++++++++++++------------ worker/client/rhp.go | 7 ---- 8 files changed, 49 insertions(+), 44 deletions(-) diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 41ae0ded9..2d07cd928 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -11,6 +11,7 @@ import ( "time" "go.sia.tech/core/types" + "go.sia.tech/coreutils/wallet" "go.sia.tech/jape" "go.sia.tech/renterd/alerts" "go.sia.tech/renterd/api" @@ -41,6 +42,7 @@ type Bus interface { // contracts AncestorContracts(ctx context.Context, id types.FileContractID, minStartHeight uint64) ([]api.ArchivedContract, error) ArchiveContracts(ctx context.Context, toArchive map[types.FileContractID]string) error + BroadcastRevision(ctx context.Context, contractID types.FileContractID) error Contract(ctx context.Context, id types.FileContractID) (api.ContractMetadata, error) Contracts(ctx context.Context, opts api.ContractsOpts) (contracts []api.ContractMetadata, err error) FileContractTax(ctx context.Context, payout types.Currency) (types.Currency, error) @@ -84,7 +86,7 @@ type Bus interface { // wallet Wallet(ctx context.Context) (api.WalletResponse, error) - WalletPending(ctx context.Context) (resp []types.Transaction, err error) + WalletPending(ctx context.Context) (resp []wallet.Event, err error) WalletRedistribute(ctx context.Context, outputs int, amount types.Currency) (ids []types.TransactionID, err error) } @@ -609,7 +611,7 @@ func (ap *Autopilot) performWalletMaintenance(ctx context.Context) error { } for _, txn := range pending { for _, mTxnID := range ap.maintenanceTxnIDs { - if mTxnID == txn.ID() { + if mTxnID == types.TransactionID(txn.ID) { l.Debugf("wallet maintenance skipped, pending transaction found with id %v", mTxnID) return nil } diff --git a/autopilot/contractor/contractor.go b/autopilot/contractor/contractor.go index a886f7cc2..22374a1bb 100644 --- a/autopilot/contractor/contractor.go +++ b/autopilot/contractor/contractor.go @@ -83,6 +83,7 @@ const ( type Bus interface { AncestorContracts(ctx context.Context, id types.FileContractID, minStartHeight uint64) ([]api.ArchivedContract, error) ArchiveContracts(ctx context.Context, toArchive map[types.FileContractID]string) error + BroadcastRevision(ctx context.Context, contractID types.FileContractID) error ConsensusState(ctx context.Context) (api.ConsensusState, error) Contract(ctx context.Context, id types.FileContractID) (api.ContractMetadata, error) Contracts(ctx context.Context, opts api.ContractsOpts) (contracts []api.ContractMetadata, err error) @@ -98,7 +99,6 @@ type Bus interface { type Worker interface { Contracts(ctx context.Context, hostTimeout time.Duration) (api.ContractsResponse, error) - RHPBroadcast(ctx context.Context, fcid types.FileContractID) (err error) RHPPriceTable(ctx context.Context, hostKey types.PublicKey, siamuxAddr string, timeout time.Duration) (api.HostPriceTable, error) RHPScan(ctx context.Context, hostKey types.PublicKey, hostIP string, timeout time.Duration) (api.RHPScanResponse, error) } @@ -433,7 +433,7 @@ func (c *Contractor) broadcastRevisions(ctx context.Context, w Worker, contracts // broadcast revision ctx, cancel := context.WithTimeout(ctx, timeoutBroadcastRevision) - err := w.RHPBroadcast(ctx, contract.ID) + err := c.bus.BroadcastRevision(ctx, contract.ID) cancel() if utils.IsErr(err, errors.New("transaction has a file contract with an outdated revision number")) { continue // don't log - revision was already broadcasted diff --git a/autopilot/workerpool.go b/autopilot/workerpool.go index 11bcfa09b..871f1babc 100644 --- a/autopilot/workerpool.go +++ b/autopilot/workerpool.go @@ -18,7 +18,6 @@ type Worker interface { ID(ctx context.Context) (string, error) MigrateSlab(ctx context.Context, s object.Slab, set string) (api.MigrateSlabResponse, error) - RHPBroadcast(ctx context.Context, fcid types.FileContractID) (err error) RHPPriceTable(ctx context.Context, hostKey types.PublicKey, siamuxAddr string, timeout time.Duration) (api.HostPriceTable, error) RHPScan(ctx context.Context, hostKey types.PublicKey, hostIP string, timeout time.Duration) (api.RHPScanResponse, error) } diff --git a/bus/bus.go b/bus/bus.go index 2c8a264e6..ce600424c 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -510,15 +510,6 @@ func (b *Bus) Handler() http.Handler { "GET /wallet/pending": b.walletPendingHandler, "POST /wallet/redistribute": b.walletRedistributeHandler, "POST /wallet/send": b.walletSendSiacoinsHandler, - // "GET /wallet": b.walletHandler, - // "POST /wallet/discard": b.walletDiscardHandler, - // "POST /wallet/fund": b.walletFundHandler, - // "GET /wallet/outputs": b.walletOutputsHandler, - // "GET /wallet/pending": b.walletPendingHandler, - // "POST /wallet/redistribute": b.walletRedistributeHandler, - // "POST /wallet/send": b.walletSendSiacoinsHandler, - // "POST /wallet/sign": b.walletSignHandler, - // "GET /wallet/transactions": b.walletTransactionsHandler, "GET /webhooks": b.webhookHandlerGet, "POST /webhooks": b.webhookHandlerPost, diff --git a/bus/client/contracts.go b/bus/client/contracts.go index 6929c8af9..b0b58de69 100644 --- a/bus/client/contracts.go +++ b/bus/client/contracts.go @@ -11,6 +11,12 @@ import ( "go.sia.tech/renterd/api" ) +// BroadcastRevision broadcasts the latest revision for a contract. +func (c *Client) BroadcastRevision(ctx context.Context, contractID types.FileContractID) (err error) { + err = c.c.WithContext(ctx).POST(fmt.Sprintf("/contract/%s/broadcast", contractID), nil, nil) + return +} + // AddContract adds the provided contract to the metadata store. func (c *Client) AddContract(ctx context.Context, contract rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, state string) (added api.ContractMetadata, err error) { err = c.c.WithContext(ctx).POST(fmt.Sprintf("/contract/%s", contract.ID()), api.ContractAddRequest{ diff --git a/bus/client/wallet.go b/bus/client/wallet.go index f6d958dce..00c612515 100644 --- a/bus/client/wallet.go +++ b/bus/client/wallet.go @@ -7,6 +7,7 @@ import ( "net/url" "go.sia.tech/core/types" + "go.sia.tech/coreutils/wallet" "go.sia.tech/renterd/api" ) @@ -29,7 +30,7 @@ func (c *Client) Wallet(ctx context.Context) (resp api.WalletResponse, err error // WalletPending returns the txpool transactions that are relevant to the // wallet. -func (c *Client) WalletPending(ctx context.Context) (resp []types.Transaction, err error) { +func (c *Client) WalletPending(ctx context.Context) (resp []wallet.Event, err error) { err = c.c.WithContext(ctx).GET("/wallet/pending", &resp) return } @@ -48,7 +49,7 @@ func (c *Client) WalletRedistribute(ctx context.Context, outputs int, amount typ } // WalletEvents returns all events relevant to the wallet. -func (c *Client) WalletEvents(ctx context.Context, opts ...api.WalletTransactionsOption) (resp []api.Transaction, err error) { +func (c *Client) WalletEvents(ctx context.Context, opts ...api.WalletTransactionsOption) (resp []wallet.Event, err error) { c.c.Custom("GET", "/wallet/events", nil, &resp) values := url.Values{} diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 3b494dc9a..d325b1476 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -1089,7 +1089,6 @@ func TestContractApplyChainUpdates(t *testing.T) { defer cluster.Shutdown() // convenience variables - w := cluster.Worker b := cluster.Bus tt := cluster.tt @@ -1111,7 +1110,7 @@ func TestContractApplyChainUpdates(t *testing.T) { } // broadcast the revision for each contract - tt.OK(w.RHPBroadcast(context.Background(), contract.ID)) + tt.OK(b.BroadcastRevision(context.Background(), contract.ID)) cluster.MineBlocks(1) // check the revision height was updated. @@ -1789,18 +1788,18 @@ func TestWallet(t *testing.T) { tt := cluster.tt // Check wallet info is sane after startup. - wallet, err := b.Wallet(context.Background()) + wr, err := b.Wallet(context.Background()) tt.OK(err) - if wallet.Confirmed.IsZero() { + if wr.Confirmed.IsZero() { t.Fatal("wallet confirmed balance should not be zero") } - if !wallet.Spendable.Equals(wallet.Confirmed) { + if !wr.Spendable.Equals(wr.Confirmed) { t.Fatal("wallet spendable balance should match confirmed") } - if !wallet.Unconfirmed.IsZero() { + if !wr.Unconfirmed.IsZero() { t.Fatal("wallet unconfirmed balance should be zero") } - if wallet.Address == (types.Address{}) { + if wr.Address == (types.Address{}) { t.Fatal("wallet address should be set") } @@ -1815,9 +1814,14 @@ func TestWallet(t *testing.T) { var minerFee types.Currency for _, txn := range txns { - if txn.ID == txnID { - for _, fee := range txn.Raw.MinerFees { - minerFee = minerFee.Add(fee) + if types.TransactionID(txn.ID) == txnID { + switch txn := txn.Data.(type) { + case *wallet.EventV1Transaction: + for _, fee := range txn.Transaction.MinerFees { + minerFee = minerFee.Add(fee) + } + case *wallet.EventV2Transaction: + minerFee = minerFee.Add(txn.MinerFee) } } } @@ -1830,18 +1834,18 @@ func TestWallet(t *testing.T) { tt.Retry(600, 100*time.Millisecond, func() error { updated, err := b.Wallet(context.Background()) tt.OK(err) - if !updated.Confirmed.Equals(wallet.Confirmed) { - return fmt.Errorf("wallet confirmed balance should not have changed: %v %v", updated.Confirmed, wallet.Confirmed) + if !updated.Confirmed.Equals(wr.Confirmed) { + return fmt.Errorf("wr confirmed balance should not have changed: %v %v", updated.Confirmed, wr.Confirmed) } // The diffs of the spendable balance and unconfirmed balance should add up // to the amount of money sent as well as the miner fees used. - spendableDiff := wallet.Spendable.Sub(updated.Spendable) + spendableDiff := wr.Spendable.Sub(updated.Spendable) if updated.Unconfirmed.Cmp(spendableDiff) > 0 { t.Fatalf("unconfirmed balance can't be greater than the difference in spendable balance here: \nconfirmed %v (%v) - >%v (%v) \nunconfirmed %v (%v) -> %v (%v) \nspendable %v (%v) -> %v (%v) \nfee %v (%v)", - wallet.Confirmed, wallet.Confirmed.ExactString(), updated.Confirmed, updated.Confirmed.ExactString(), - wallet.Unconfirmed, wallet.Unconfirmed.ExactString(), updated.Unconfirmed, updated.Unconfirmed.ExactString(), - wallet.Spendable, wallet.Spendable.ExactString(), updated.Spendable, updated.Spendable.ExactString(), + wr.Confirmed, wr.Confirmed.ExactString(), updated.Confirmed, updated.Confirmed.ExactString(), + wr.Unconfirmed, wr.Unconfirmed.ExactString(), updated.Unconfirmed, updated.Unconfirmed.ExactString(), + wr.Spendable, wr.Spendable.ExactString(), updated.Spendable, updated.Spendable.ExactString(), minerFee, minerFee.ExactString()) } withdrawnAmt := spendableDiff.Sub(updated.Unconfirmed) @@ -2540,11 +2544,20 @@ func TestWalletRedistribute(t *testing.T) { utxos := make(map[types.SiacoinOutputID]struct{}) for _, txn := range txns { - for i := range txn.Raw.SiacoinOutputs { - utxos[txn.Raw.SiacoinOutputID(i)] = struct{}{} - } - for _, sci := range txn.Raw.SiacoinInputs { - delete(utxos, sci.ParentID) + if v1Txn, ok := txn.Data.(*wallet.EventV1Transaction); ok { + for i := range v1Txn.SpentSiacoinElements { + utxos[v1Txn.Transaction.SiacoinOutputID(i)] = struct{}{} + } + for _, sci := range v1Txn.Transaction.SiacoinInputs { + delete(utxos, sci.ParentID) + } + } else if v2Txn, ok := txn.Data.(*wallet.EventV1Transaction); ok { + for i := range v2Txn.SpentSiacoinElements { + utxos[v2Txn.Transaction.SiacoinOutputID(i)] = struct{}{} + } + for _, sci := range v2Txn.Transaction.SiacoinInputs { + delete(utxos, sci.ParentID) + } } } if cnt := len(utxos); cnt != 5 { diff --git a/worker/client/rhp.go b/worker/client/rhp.go index bb923b705..5aeeee8bf 100644 --- a/worker/client/rhp.go +++ b/worker/client/rhp.go @@ -2,19 +2,12 @@ package client import ( "context" - "fmt" "time" "go.sia.tech/core/types" "go.sia.tech/renterd/api" ) -// RHPBroadcast broadcasts the latest revision for a contract. -func (c *Client) RHPBroadcast(ctx context.Context, contractID types.FileContractID) (err error) { - err = c.c.WithContext(ctx).POST(fmt.Sprintf("/rhp/contract/%s/broadcast", contractID), nil, nil) - return -} - // RHPPriceTable fetches a price table for a host. func (c *Client) RHPPriceTable(ctx context.Context, hostKey types.PublicKey, siamuxAddr string, timeout time.Duration) (pt api.HostPriceTable, err error) { req := api.RHPPriceTableRequest{ From 6b466248d0fa188d7fa12b25e80dc0ce4acf3231 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 4 Sep 2024 15:03:51 +0200 Subject: [PATCH 039/708] e2e: fix TestWalletEvents --- bus/client/client.go | 26 -------------------------- bus/client/wallet.go | 15 +-------------- internal/test/e2e/cluster_test.go | 2 +- 3 files changed, 2 insertions(+), 41 deletions(-) diff --git a/bus/client/client.go b/bus/client/client.go index b082e5d9e..8ca1bf81e 100644 --- a/bus/client/client.go +++ b/bus/client/client.go @@ -1,11 +1,6 @@ package client import ( - "encoding/json" - "errors" - "io" - "net/http" - "go.sia.tech/jape" "go.sia.tech/renterd/api" ) @@ -28,24 +23,3 @@ func (c *Client) State() (state api.BusStateResponse, err error) { err = c.c.GET("/state", &state) return } - -func (c *Client) do(req *http.Request, resp interface{}) error { - req.Header.Set("Content-Type", "application/json") - if c.c.Password != "" { - req.SetBasicAuth("", c.c.Password) - } - r, err := http.DefaultClient.Do(req) - if err != nil { - return err - } - defer io.Copy(io.Discard, r.Body) - defer r.Body.Close() - if !(200 <= r.StatusCode && r.StatusCode < 300) { - err, _ := io.ReadAll(r.Body) - return errors.New(string(err)) - } - if resp == nil { - return nil - } - return json.NewDecoder(r.Body).Decode(resp) -} diff --git a/bus/client/wallet.go b/bus/client/wallet.go index 00c612515..5314ade52 100644 --- a/bus/client/wallet.go +++ b/bus/client/wallet.go @@ -2,8 +2,6 @@ package client import ( "context" - "fmt" - "net/http" "net/url" "go.sia.tech/core/types" @@ -50,21 +48,10 @@ func (c *Client) WalletRedistribute(ctx context.Context, outputs int, amount typ // WalletEvents returns all events relevant to the wallet. func (c *Client) WalletEvents(ctx context.Context, opts ...api.WalletTransactionsOption) (resp []wallet.Event, err error) { - c.c.Custom("GET", "/wallet/events", nil, &resp) - values := url.Values{} for _, opt := range opts { opt(values) } - u, err := url.Parse(fmt.Sprintf("%v/wallet/transactions", c.c.BaseURL)) - if err != nil { - panic(err) - } - u.RawQuery = values.Encode() - req, err := http.NewRequestWithContext(ctx, "GET", u.String(), http.NoBody) - if err != nil { - panic(err) - } - err = c.do(req, &resp) + err = c.c.WithContext(ctx).GET("/wallet/events?"+values.Encode(), &resp) return } diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 772a374c6..436ce480b 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -1568,7 +1568,7 @@ func TestUnconfirmedContractArchival(t *testing.T) { }) } -func TestWalletTransactions(t *testing.T) { +func TestWalletEvents(t *testing.T) { if testing.Short() { t.SkipNow() } From 4347a87f273d85b4631c22577fc652929cc99474 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 4 Sep 2024 15:28:02 +0200 Subject: [PATCH 040/708] e2e: fix TestWallet --- internal/test/e2e/cluster_test.go | 34 +++++++++++++++---------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 436ce480b..338655549 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -1803,30 +1803,30 @@ func TestWallet(t *testing.T) { t.Fatal("wallet address should be set") } - // Send 1 SC to an address outside our wallet. We manually do this to be in - // control of the miner fees. + // Send 1 SC to an address outside our wallet. sendAmt := types.HastingsPerSiacoin - txnID, err := b.SendSiacoins(context.Background(), types.VoidAddress, sendAmt, false) + _, err = b.SendSiacoins(context.Background(), types.Address{1, 2, 3}, sendAmt, false) tt.OK(err) txns, err := b.WalletEvents(context.Background()) tt.OK(err) - var minerFee types.Currency - for _, txn := range txns { - if types.TransactionID(txn.ID) == txnID { - switch txn := txn.Data.(type) { - case *wallet.EventV1Transaction: - for _, fee := range txn.Transaction.MinerFees { - minerFee = minerFee.Add(fee) - } - case *wallet.EventV2Transaction: - minerFee = minerFee.Add(txn.MinerFee) - } - } + txns, err = b.WalletPending(context.Background()) + tt.OK(err) + if len(txns) != 1 { + t.Fatalf("expected 1 txn got %v", len(txns)) } - if minerFee.IsZero() { - t.Fatal("miner fee should not be zero") + + var minerFee types.Currency + switch txn := txns[0].Data.(type) { + case wallet.EventV1Transaction: + for _, fee := range txn.Transaction.MinerFees { + minerFee = minerFee.Add(fee) + } + case wallet.EventV2Transaction: + minerFee = txn.MinerFee + default: + t.Fatalf("unexpected event %T", txn) } // The wallet should still have the same confirmed balance, a lower From 5d35cb056c9ad1c0ed0ad3f8f6a910af251ef48c Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 4 Sep 2024 16:19:39 +0200 Subject: [PATCH 041/708] e2e: fix TestWalletRedistribute --- bus/routes.go | 16 +++++++--- internal/test/e2e/cluster_test.go | 49 +++++++++++++++++-------------- 2 files changed, 39 insertions(+), 26 deletions(-) diff --git a/bus/routes.go b/bus/routes.go index 90c0de3e2..fdff08a78 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -377,14 +377,22 @@ func (b *Bus) walletRedistributeHandler(jc jape.Context) { return } - available, err := b.w.SpendableOutputs() + spendableOutputs, err := b.w.SpendableOutputs() if jc.Check("couldn't fetch spendable outputs", err) != nil { return - } else if len(available) >= wfr.Outputs { - b.logger.Debugf("no wallet maintenance needed, plenty of outputs available (%v>=%v)", len(available), wfr.Outputs) + } + var available int + for _, so := range spendableOutputs { + if so.SiacoinOutput.Value.Cmp(wfr.Amount) >= 0 { + available++ + } + } + if available >= wfr.Outputs { + b.logger.Debugf("no wallet maintenance needed, plenty of outputs available (%v>=%v)", available, wfr.Outputs) + jc.Encode([]types.TransactionID{}) return } - wantedOutputs := wfr.Outputs - len(available) + wantedOutputs := wfr.Outputs - available var ids []types.TransactionID if state := b.cm.TipState(); state.Index.Height < state.Network.HardforkV2.AllowHeight { diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 338655549..a781efd38 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -2529,46 +2529,51 @@ func TestWalletRedistribute(t *testing.T) { }) defer cluster.Shutdown() - // redistribute into 5 outputs - _, err := cluster.Bus.WalletRedistribute(context.Background(), 5, types.Siacoins(10)) + // redistribute into 2 outputs of 500KS each + numOutputs := 2 + outputAmt := types.Siacoins(500e3) + txnSet, err := cluster.Bus.WalletRedistribute(context.Background(), numOutputs, outputAmt) if err != nil { t.Fatal(err) + } else if len(txnSet) == 0 { + t.Fatal("nothing happened") } cluster.MineBlocks(1) // assert we have 5 outputs with 10 SC txns, err := cluster.Bus.WalletEvents(context.Background()) - if err != nil { - t.Fatal(err) - } + cluster.tt.OK(err) - utxos := make(map[types.SiacoinOutputID]struct{}) + nOutputs := 0 for _, txn := range txns { - if v1Txn, ok := txn.Data.(*wallet.EventV1Transaction); ok { - for i := range v1Txn.SpentSiacoinElements { - utxos[v1Txn.Transaction.SiacoinOutputID(i)] = struct{}{} - } - for _, sci := range v1Txn.Transaction.SiacoinInputs { - delete(utxos, sci.ParentID) - } - } else if v2Txn, ok := txn.Data.(*wallet.EventV1Transaction); ok { - for i := range v2Txn.SpentSiacoinElements { - utxos[v2Txn.Transaction.SiacoinOutputID(i)] = struct{}{} + switch txn := txn.Data.(type) { + case wallet.EventV1Transaction: + for _, sco := range txn.Transaction.SiacoinOutputs { + if sco.Value.Equals(types.Siacoins(500e3)) { + nOutputs++ + } } - for _, sci := range v2Txn.Transaction.SiacoinInputs { - delete(utxos, sci.ParentID) + case wallet.EventV2Transaction: + for _, sco := range txn.SiacoinOutputs { + if sco.Value.Equals(types.Siacoins(500e3)) { + nOutputs++ + } } + case wallet.EventPayout: + default: + t.Fatalf("unexpected transaction type %T", txn) } } - if cnt := len(utxos); cnt != 5 { + if cnt := nOutputs; cnt != numOutputs { t.Fatalf("expected 5 outputs with 10 SC, got %v", cnt) } // assert redistributing into 3 outputs succeeds, used to fail because we // were broadcasting an empty transaction set - _, err = cluster.Bus.WalletRedistribute(context.Background(), 3, types.Siacoins(10)) - if err != nil { - t.Fatal(err) + txnSet, err = cluster.Bus.WalletRedistribute(context.Background(), nOutputs, outputAmt) + cluster.tt.OK(err) + if len(txnSet) != 0 { + t.Fatal("txnSet should be empty") } } From b6d738f6d3da56b407f638d88dc813ff9e24b957 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 4 Sep 2024 16:56:15 +0200 Subject: [PATCH 042/708] bus: address comments --- api/object.go | 15 ++++----------- bus/bus.go | 18 +++++++++--------- bus/client/objects.go | 24 ++++++++++++------------ bus/routes.go | 8 ++++---- stores/sql/main.go | 7 ++++--- worker/client/client.go | 12 ++++++------ 6 files changed, 39 insertions(+), 45 deletions(-) diff --git a/api/object.go b/api/object.go index f3d345c03..899b181e1 100644 --- a/api/object.go +++ b/api/object.go @@ -80,13 +80,6 @@ type ( // well ObjectUserMetadata map[string]string - // ObjectsResponse is the response type for the /bus/objects endpoint. - ObjectsResponse struct { - HasMore bool `json:"hasMore"` - Entries []ObjectMetadata `json:"entries,omitempty"` - Object *Object `json:"object,omitempty"` - } - // GetObjectResponse is the response type for the GET /worker/object endpoint. GetObjectResponse struct { Content io.ReadCloser `json:"content"` @@ -187,10 +180,10 @@ type ( // CopyObjectsRequest is the request type for the /bus/objects/copy endpoint. CopyObjectsRequest struct { SourceBucket string `json:"sourceBucket"` - SourcePath string `json:"sourcePath"` + SourceKey string `json:"sourcePath"` DestinationBucket string `json:"destinationBucket"` - DestinationPath string `json:"destinationPath"` + DestinationKey string `json:"destinationPath"` MimeType string `json:"mimeType"` Metadata ObjectUserMetadata `json:"metadata"` @@ -353,6 +346,6 @@ func FormatETag(eTag string) string { return fmt.Sprintf("%q", eTag) } -func ObjectPathEscape(path string) string { - return url.PathEscape(strings.TrimPrefix(path, "/")) +func ObjectKeyEscape(key string) string { + return url.PathEscape(strings.TrimPrefix(key, "/")) } diff --git a/bus/bus.go b/bus/bus.go index 7e5a0ee0a..8feca7219 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -232,22 +232,22 @@ type ( ListBuckets(_ context.Context) ([]api.Bucket, error) UpdateBucketPolicy(ctx context.Context, bucketName string, policy api.BucketPolicy) error - CopyObject(ctx context.Context, srcBucket, dstBucket, srcPath, dstPath, mimeType string, metadata api.ObjectUserMetadata) (api.ObjectMetadata, error) + CopyObject(ctx context.Context, srcBucket, dstBucket, srcKey, dstKey, mimeType string, metadata api.ObjectUserMetadata) (api.ObjectMetadata, error) ListObjects(ctx context.Context, bucketName, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) - Object(ctx context.Context, bucketName, path string) (api.Object, error) - ObjectMetadata(ctx context.Context, bucketName, path string) (api.Object, error) + Object(ctx context.Context, bucketName, key string) (api.Object, error) + ObjectMetadata(ctx context.Context, bucketName, key string) (api.Object, error) ObjectsBySlabKey(ctx context.Context, bucketName string, slabKey object.EncryptionKey) ([]api.ObjectMetadata, error) ObjectsStats(ctx context.Context, opts api.ObjectsStatsOpts) (api.ObjectsStatsResponse, error) - RemoveObject(ctx context.Context, bucketName, path string) error + RemoveObject(ctx context.Context, bucketName, key string) error RemoveObjects(ctx context.Context, bucketName, prefix string) error RenameObject(ctx context.Context, bucketName, from, to string, force bool) error RenameObjects(ctx context.Context, bucketName, from, to string, force bool) error - UpdateObject(ctx context.Context, bucketName, path, contractSet, ETag, mimeType string, metadata api.ObjectUserMetadata, o object.Object) error + UpdateObject(ctx context.Context, bucketName, key, contractSet, ETag, mimeType string, metadata api.ObjectUserMetadata, o object.Object) error - AbortMultipartUpload(ctx context.Context, bucketName, path string, uploadID string) (err error) - AddMultipartPart(ctx context.Context, bucketName, path, contractSet, eTag, uploadID string, partNumber int, slices []object.SlabSlice) (err error) - CompleteMultipartUpload(ctx context.Context, bucketName, path, uploadID string, parts []api.MultipartCompletedPart, opts api.CompleteMultipartOptions) (_ api.MultipartCompleteResponse, err error) - CreateMultipartUpload(ctx context.Context, bucketName, path string, ec object.EncryptionKey, mimeType string, metadata api.ObjectUserMetadata) (api.MultipartCreateResponse, error) + AbortMultipartUpload(ctx context.Context, bucketName, key string, uploadID string) (err error) + AddMultipartPart(ctx context.Context, bucketName, key, contractSet, eTag, uploadID string, partNumber int, slices []object.SlabSlice) (err error) + CompleteMultipartUpload(ctx context.Context, bucketName, key, uploadID string, parts []api.MultipartCompletedPart, opts api.CompleteMultipartOptions) (_ api.MultipartCompleteResponse, err error) + CreateMultipartUpload(ctx context.Context, bucketName, key string, ec object.EncryptionKey, mimeType string, metadata api.ObjectUserMetadata) (api.MultipartCreateResponse, error) MultipartUpload(ctx context.Context, uploadID string) (resp api.MultipartUpload, _ error) MultipartUploads(ctx context.Context, bucketName, prefix, keyMarker, uploadIDMarker string, maxUploads int) (resp api.MultipartListUploadsResponse, _ error) MultipartUploadParts(ctx context.Context, bucketName, object string, uploadID string, marker int, limit int64) (resp api.MultipartListPartsResponse, _ error) diff --git a/bus/client/objects.go b/bus/client/objects.go index 6a8482160..1a1f7fc0b 100644 --- a/bus/client/objects.go +++ b/bus/client/objects.go @@ -11,7 +11,7 @@ import ( // AddObject stores the provided object under the given path. func (c *Client) AddObject(ctx context.Context, bucket, path, contractSet string, o object.Object, opts api.AddObjectOptions) (err error) { - path = api.ObjectPathEscape(path) + path = api.ObjectKeyEscape(path) err = c.c.WithContext(ctx).PUT(fmt.Sprintf("/objects/%s", path), api.AddObjectRequest{ Bucket: bucket, ContractSet: contractSet, @@ -25,37 +25,37 @@ func (c *Client) AddObject(ctx context.Context, bucket, path, contractSet string // CopyObject copies the object from the source bucket and path to the // destination bucket and path. -func (c *Client) CopyObject(ctx context.Context, srcBucket, dstBucket, srcPath, dstPath string, opts api.CopyObjectOptions) (om api.ObjectMetadata, err error) { +func (c *Client) CopyObject(ctx context.Context, srcBucket, dstBucket, srcKey, dstKey string, opts api.CopyObjectOptions) (om api.ObjectMetadata, err error) { err = c.c.WithContext(ctx).POST("/objects/copy", api.CopyObjectsRequest{ SourceBucket: srcBucket, DestinationBucket: dstBucket, - SourcePath: srcPath, - DestinationPath: dstPath, + SourceKey: srcKey, + DestinationKey: dstKey, MimeType: opts.MimeType, Metadata: opts.Metadata, }, &om) return } -// DeleteObject either deletes the object at the given path or if batch=true -// deletes all objects that start with the given path. -func (c *Client) DeleteObject(ctx context.Context, bucket, path string, opts api.DeleteObjectOptions) (err error) { +// DeleteObject either deletes the object at the given key or if batch=true +// deletes all objects that start with the given key. +func (c *Client) DeleteObject(ctx context.Context, bucket, key string, opts api.DeleteObjectOptions) (err error) { values := url.Values{} values.Set("bucket", bucket) opts.Apply(values) - path = api.ObjectPathEscape(path) - err = c.c.WithContext(ctx).DELETE(fmt.Sprintf("/objects/%s?"+values.Encode(), path)) + key = api.ObjectKeyEscape(key) + err = c.c.WithContext(ctx).DELETE(fmt.Sprintf("/objects/%s?"+values.Encode(), key)) return } -// Objects returns the object at given path. +// Objects returns the object at given key. func (c *Client) Object(ctx context.Context, bucket, key string, opts api.GetObjectOptions) (res api.Object, err error) { values := url.Values{} values.Set("bucket", bucket) opts.Apply(values) - key = api.ObjectPathEscape(key) + key = api.ObjectKeyEscape(key) key += "?" + values.Encode() err = c.c.WithContext(ctx).GET(fmt.Sprintf("/objects/%s", key), &res) @@ -68,7 +68,7 @@ func (c *Client) Objects(ctx context.Context, bucket string, prefix string, opts values.Set("bucket", bucket) opts.Apply(values) - prefix = api.ObjectPathEscape(prefix) + prefix = api.ObjectKeyEscape(prefix) prefix += "?" + values.Encode() err = c.c.WithContext(ctx).GET(fmt.Sprintf("/listobjects/%s", prefix), &resp) diff --git a/bus/routes.go b/bus/routes.go index 8bcbf12c4..dbfb71d68 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1113,7 +1113,7 @@ func (b *Bus) contractsAllHandlerDELETE(jc jape.Context) { } func (b *Bus) objectHandlerGET(jc jape.Context) { - path := jc.PathParam("key") + key := jc.PathParam("key") bucket := api.DefaultBucketName if jc.DecodeForm("bucket", &bucket) != nil { return @@ -1127,9 +1127,9 @@ func (b *Bus) objectHandlerGET(jc jape.Context) { var err error if onlymetadata { - o, err = b.ms.ObjectMetadata(jc.Request.Context(), bucket, path) + o, err = b.ms.ObjectMetadata(jc.Request.Context(), bucket, key) } else { - o, err = b.ms.Object(jc.Request.Context(), bucket, path) + o, err = b.ms.Object(jc.Request.Context(), bucket, key) } if errors.Is(err, api.ErrObjectNotFound) { jc.Error(err, http.StatusNotFound) @@ -1191,7 +1191,7 @@ func (b *Bus) objectsCopyHandlerPOST(jc jape.Context) { if jc.Decode(&orr) != nil { return } - om, err := b.ms.CopyObject(jc.Request.Context(), orr.SourceBucket, orr.DestinationBucket, orr.SourcePath, orr.DestinationPath, orr.MimeType, orr.Metadata) + om, err := b.ms.CopyObject(jc.Request.Context(), orr.SourceBucket, orr.DestinationBucket, orr.SourceKey, orr.DestinationKey, orr.MimeType, orr.Metadata) if jc.Check("couldn't copy object", err) != nil { return } diff --git a/stores/sql/main.go b/stores/sql/main.go index 04111f29a..82d1da8f0 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -1014,11 +1014,12 @@ func orderByObject(sortBy, sortDir string) (orderByExprs []string, _ error) { } func ListObjects(ctx context.Context, tx Tx, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (resp api.ObjectsListResponse, err error) { - if delim == "" { + switch delim { + case "": resp, err = listObjectsNoDelim(ctx, tx, bucket, prefix, substring, sortBy, sortDir, marker, limit) - } else if delim == "/" { + case "/": resp, err = listObjectsSlashDelim(ctx, tx, bucket, prefix, sortBy, sortDir, marker, limit) - } else { + default: err = fmt.Errorf("unsupported delimiter: '%s'", delim) } return diff --git a/worker/client/client.go b/worker/client/client.go index 6ea6172cd..6f950dfd8 100644 --- a/worker/client/client.go +++ b/worker/client/client.go @@ -62,7 +62,7 @@ func (c *Client) DeleteObject(ctx context.Context, bucket, path string, opts api values.Set("bucket", bucket) opts.Apply(values) - path = api.ObjectPathEscape(path) + path = api.ObjectKeyEscape(path) err = c.c.WithContext(ctx).DELETE(fmt.Sprintf("/objects/%s?"+values.Encode(), path)) return } @@ -73,7 +73,7 @@ func (c *Client) DownloadObject(ctx context.Context, w io.Writer, bucket, path s return errors.New("the given path is a directory, use ObjectEntries instead") } - path = api.ObjectPathEscape(path) + path = api.ObjectKeyEscape(path) body, _, err := c.object(ctx, bucket, path, opts) if err != nil { return err @@ -96,7 +96,7 @@ func (c *Client) HeadObject(ctx context.Context, bucket, path string, opts api.H values := url.Values{} values.Set("bucket", url.QueryEscape(bucket)) opts.Apply(values) - path = api.ObjectPathEscape(path) + path = api.ObjectKeyEscape(path) path += "?" + values.Encode() // TODO: support HEAD in jape client @@ -134,7 +134,7 @@ func (c *Client) GetObject(ctx context.Context, bucket, path string, opts api.Do return nil, errors.New("the given path is a directory, use ObjectEntries instead") } - path = api.ObjectPathEscape(path) + path = api.ObjectKeyEscape(path) body, header, err := c.object(ctx, bucket, path, opts) if err != nil { return nil, err @@ -185,7 +185,7 @@ func (c *Client) State() (state api.WorkerStateResponse, err error) { // UploadMultipartUploadPart uploads part of the data for a multipart upload. func (c *Client) UploadMultipartUploadPart(ctx context.Context, r io.Reader, bucket, path, uploadID string, partNumber int, opts api.UploadMultipartUploadPartOptions) (*api.UploadMultipartUploadPartResponse, error) { - path = api.ObjectPathEscape(path) + path = api.ObjectKeyEscape(path) c.c.Custom("PUT", fmt.Sprintf("/multipart/%s", path), []byte{}, nil) values := make(url.Values) @@ -224,7 +224,7 @@ func (c *Client) UploadMultipartUploadPart(ctx context.Context, r io.Reader, buc // UploadObject uploads the data in r, creating an object at the given path. func (c *Client) UploadObject(ctx context.Context, r io.Reader, bucket, path string, opts api.UploadObjectOptions) (*api.UploadObjectResponse, error) { - path = api.ObjectPathEscape(path) + path = api.ObjectKeyEscape(path) c.c.Custom("PUT", fmt.Sprintf("/objects/%s", path), []byte{}, nil) values := make(url.Values) From 1debed9b74fe4f8389b5b6c651b695554f4bbd78 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 4 Sep 2024 17:23:06 +0200 Subject: [PATCH 043/708] api: call object name's 'key' instead of 'path' or 'name' --- api/multipart.go | 30 ++--- api/object.go | 4 +- api/slab.go | 10 +- autopilot/migrator.go | 24 ++-- bus/client/multipart-upload.go | 30 +++-- bus/routes.go | 16 +-- internal/test/e2e/cluster_test.go | 104 ++++++++--------- internal/test/e2e/migrations_test.go | 4 +- object/object.go | 2 +- stores/metadata.go | 24 ++-- stores/metadata_test.go | 162 +++++++++++++-------------- stores/multipart.go | 18 +-- stores/slabbuffer.go | 6 +- stores/sql/database.go | 2 +- stores/sql/main.go | 12 +- stores/sql/mysql/main.go | 10 +- stores/sql/sqlite/main.go | 10 +- stores/sql_test.go | 6 +- worker/alerts.go | 4 +- worker/bench_test.go | 2 +- worker/client/client.go | 56 ++++----- worker/mocks_test.go | 30 ++--- worker/s3/backend.go | 32 +++--- worker/s3/s3.go | 20 ++-- worker/upload.go | 12 +- worker/upload_params.go | 6 +- worker/upload_test.go | 12 +- worker/worker.go | 48 ++++---- 28 files changed, 347 insertions(+), 349 deletions(-) diff --git a/api/multipart.go b/api/multipart.go index ecd19789f..c5b88513c 100644 --- a/api/multipart.go +++ b/api/multipart.go @@ -31,11 +31,11 @@ var ( type ( MultipartUpload struct { - Bucket string `json:"bucket"` - Key object.EncryptionKey `json:"key"` - Path string `json:"path"` - UploadID string `json:"uploadID"` - CreatedAt TimeRFC3339 `json:"createdAt"` + Bucket string `json:"bucket"` + EncryptionKey object.EncryptionKey `json:"encryptionKey"` + Key string `json:"key"` + UploadID string `json:"uploadID"` + CreatedAt TimeRFC3339 `json:"createdAt"` } MultipartListPartItem struct { @@ -65,14 +65,14 @@ type ( type ( MultipartAbortRequest struct { Bucket string `json:"bucket"` - Path string `json:"path"` + Key string `json:"key"` UploadID string `json:"uploadID"` } MultipartAddPartRequest struct { Bucket string `json:"bucket"` ETag string `json:"eTag"` - Path string `json:"path"` + Key string `json:"key"` ContractSet string `json:"contractSet"` UploadID string `json:"uploadID"` PartNumber int `json:"partNumber"` @@ -86,17 +86,17 @@ type ( MultipartCompleteRequest struct { Bucket string `json:"bucket"` Metadata ObjectUserMetadata `json:"metadata"` - Path string `json:"path"` + Key string `json:"key"` UploadID string `json:"uploadID"` Parts []MultipartCompletedPart `json:"parts"` } MultipartCreateRequest struct { - Bucket string `json:"bucket"` - Path string `json:"path"` - Key *object.EncryptionKey `json:"key"` - MimeType string `json:"mimeType"` - Metadata ObjectUserMetadata `json:"metadata"` + Bucket string `json:"bucket"` + EncryptionKey *object.EncryptionKey `json:"encryptionKey"` + Key string `json:"key"` + MimeType string `json:"mimeType"` + Metadata ObjectUserMetadata `json:"metadata"` // TODO: The next major version change should invert this to create a // key by default @@ -109,7 +109,7 @@ type ( MultipartListPartsRequest struct { Bucket string `json:"bucket"` - Path string `json:"path"` + Key string `json:"key"` UploadID string `json:"uploadID"` PartNumberMarker int `json:"partNumberMarker"` Limit int64 `json:"limit"` @@ -124,7 +124,7 @@ type ( MultipartListUploadsRequest struct { Bucket string `json:"bucket"` Prefix string `json:"prefix"` - PathMarker string `json:"pathMarker"` + KeyMarker string `json:"keyMarker"` UploadIDMarker string `json:"uploadIDMarker"` Limit int `json:"limit"` } diff --git a/api/object.go b/api/object.go index 899b181e1..fe71ddb1b 100644 --- a/api/object.go +++ b/api/object.go @@ -66,7 +66,7 @@ type ( ETag string `json:"eTag,omitempty"` Health float64 `json:"health"` ModTime TimeRFC3339 `json:"modTime"` - Name string `json:"name"` + Key string `json:"key"` Size int64 `json:"size"` MimeType string `json:"mimeType,omitempty"` } @@ -146,7 +146,7 @@ func (o ObjectMetadata) ContentType() string { return o.MimeType } - if ext := filepath.Ext(o.Name); ext != "" { + if ext := filepath.Ext(o.Key); ext != "" { return mime.TypeByExtension(ext) } diff --git a/api/slab.go b/api/slab.go index 65d19788d..f93ebe532 100644 --- a/api/slab.go +++ b/api/slab.go @@ -7,9 +7,9 @@ import ( type ( PackedSlab struct { - BufferID uint `json:"bufferID"` - Data []byte `json:"data"` - Key object.EncryptionKey `json:"key"` + BufferID uint `json:"bufferID"` + Data []byte `json:"data"` + EncryptionKey object.EncryptionKey `json:"encryptionKey"` } SlabBuffer struct { @@ -22,8 +22,8 @@ type ( } UnhealthySlab struct { - Key object.EncryptionKey `json:"key"` - Health float64 `json:"health"` + EncryptionKey object.EncryptionKey `json:"encryptionKey"` + Health float64 `json:"health"` } UploadedPackedSlab struct { diff --git a/autopilot/migrator.go b/autopilot/migrator.go index fd935cabb..251c5e893 100644 --- a/autopilot/migrator.go +++ b/autopilot/migrator.go @@ -50,7 +50,7 @@ type ( ) func (j *job) execute(ctx context.Context, w Worker) (_ api.MigrateSlabResponse, err error) { - slab, err := j.b.Slab(ctx, j.Key) + slab, err := j.b.Slab(ctx, j.EncryptionKey) if err != nil { return api.MigrateSlabResponse{}, fmt.Errorf("failed to fetch slab; %w", err) } @@ -161,7 +161,7 @@ func (m *migrator) performMigrations(p *workerPool) { res, err := j.execute(ctx, w) m.statsSlabMigrationSpeedMS.Track(float64(time.Since(start).Milliseconds())) if err != nil { - m.logger.Errorf("%v: migration %d/%d failed, key: %v, health: %v, overpaid: %v, err: %v", id, j.slabIdx+1, j.batchSize, j.Key, j.Health, res.SurchargeApplied, err) + m.logger.Errorf("%v: migration %d/%d failed, key: %v, health: %v, overpaid: %v, err: %v", id, j.slabIdx+1, j.batchSize, j.EncryptionKey, j.Health, res.SurchargeApplied, err) if utils.IsErr(err, api.ErrConsensusNotSynced) { // interrupt migrations if consensus is not synced select { @@ -172,7 +172,7 @@ func (m *migrator) performMigrations(p *workerPool) { } else if !utils.IsErr(err, api.ErrSlabNotFound) { // fetch all object IDs for the slab we failed to migrate var objectIds map[string][]string - if res, err := m.objectIDsForSlabKey(ctx, j.Key); err != nil { + if res, err := m.objectIDsForSlabKey(ctx, j.EncryptionKey); err != nil { m.logger.Errorf("failed to fetch object ids for slab key; %w", err) } else { objectIds = res @@ -180,20 +180,20 @@ func (m *migrator) performMigrations(p *workerPool) { // register the alert if res.SurchargeApplied { - m.ap.RegisterAlert(ctx, newCriticalMigrationFailedAlert(j.Key, j.Health, objectIds, err)) + m.ap.RegisterAlert(ctx, newCriticalMigrationFailedAlert(j.EncryptionKey, j.Health, objectIds, err)) } else { - m.ap.RegisterAlert(ctx, newMigrationFailedAlert(j.Key, j.Health, objectIds, err)) + m.ap.RegisterAlert(ctx, newMigrationFailedAlert(j.EncryptionKey, j.Health, objectIds, err)) } } } else { - m.logger.Infof("%v: migration %d/%d succeeded, key: %v, health: %v, overpaid: %v, shards migrated: %v", id, j.slabIdx+1, j.batchSize, j.Key, j.Health, res.SurchargeApplied, res.NumShardsMigrated) - m.ap.DismissAlert(ctx, alerts.IDForSlab(alertMigrationID, j.Key)) + m.logger.Infof("%v: migration %d/%d succeeded, key: %v, health: %v, overpaid: %v, shards migrated: %v", id, j.slabIdx+1, j.batchSize, j.EncryptionKey, j.Health, res.SurchargeApplied, res.NumShardsMigrated) + m.ap.DismissAlert(ctx, alerts.IDForSlab(alertMigrationID, j.EncryptionKey)) if res.SurchargeApplied { // this alert confirms the user his gouging // settings are working, it will be dismissed // automatically the next time this slab is // successfully migrated - m.ap.RegisterAlert(ctx, newCriticalMigrationSucceededAlert(j.Key)) + m.ap.RegisterAlert(ctx, newCriticalMigrationSucceededAlert(j.EncryptionKey)) } } } @@ -238,13 +238,13 @@ func (m *migrator) performMigrations(p *workerPool) { // starvation. migrateNewMap := make(map[object.EncryptionKey]*api.UnhealthySlab) for i, slab := range toMigrateNew { - migrateNewMap[slab.Key] = &toMigrateNew[i] + migrateNewMap[slab.EncryptionKey] = &toMigrateNew[i] } removed := 0 for i := 0; i < len(toMigrate)-removed; { slab := toMigrate[i] - if _, exists := migrateNewMap[slab.Key]; exists { - delete(migrateNewMap, slab.Key) // delete from map to leave only new slabs + if _, exists := migrateNewMap[slab.EncryptionKey]; exists { + delete(migrateNewMap, slab.EncryptionKey) // delete from map to leave only new slabs i++ } else { toMigrate[i] = toMigrate[len(toMigrate)-1-removed] @@ -337,7 +337,7 @@ func (m *migrator) objectIDsForSlabKey(ctx context.Context, key object.Encryptio idsPerBucket[bucket.Name] = make([]string, len(objects)) for i, object := range objects { - idsPerBucket[bucket.Name][i] = object.Name + idsPerBucket[bucket.Name][i] = object.Key } } diff --git a/bus/client/multipart-upload.go b/bus/client/multipart-upload.go index 6fd06204c..1c6ce0756 100644 --- a/bus/client/multipart-upload.go +++ b/bus/client/multipart-upload.go @@ -9,21 +9,21 @@ import ( ) // AbortMultipartUpload aborts a multipart upload. -func (c *Client) AbortMultipartUpload(ctx context.Context, bucket, path string, uploadID string) (err error) { +func (c *Client) AbortMultipartUpload(ctx context.Context, bucket, key string, uploadID string) (err error) { err = c.c.WithContext(ctx).POST("/multipart/abort", api.MultipartAbortRequest{ Bucket: bucket, - Path: path, + Key: key, UploadID: uploadID, }, nil) return } // AddMultipartPart adds a part to a multipart upload. -func (c *Client) AddMultipartPart(ctx context.Context, bucket, path, contractSet, eTag, uploadID string, partNumber int, slices []object.SlabSlice) (err error) { +func (c *Client) AddMultipartPart(ctx context.Context, bucket, key, contractSet, eTag, uploadID string, partNumber int, slices []object.SlabSlice) (err error) { err = c.c.WithContext(ctx).PUT("/multipart/part", api.MultipartAddPartRequest{ Bucket: bucket, ETag: eTag, - Path: path, + Key: key, ContractSet: contractSet, UploadID: uploadID, PartNumber: partNumber, @@ -33,10 +33,10 @@ func (c *Client) AddMultipartPart(ctx context.Context, bucket, path, contractSet } // CompleteMultipartUpload completes a multipart upload. -func (c *Client) CompleteMultipartUpload(ctx context.Context, bucket, path, uploadID string, parts []api.MultipartCompletedPart, opts api.CompleteMultipartOptions) (resp api.MultipartCompleteResponse, err error) { +func (c *Client) CompleteMultipartUpload(ctx context.Context, bucket, key, uploadID string, parts []api.MultipartCompletedPart, opts api.CompleteMultipartOptions) (resp api.MultipartCompleteResponse, err error) { err = c.c.WithContext(ctx).POST("/multipart/complete", api.MultipartCompleteRequest{ Bucket: bucket, - Path: path, + Key: key, Metadata: opts.Metadata, UploadID: uploadID, Parts: parts, @@ -45,14 +45,12 @@ func (c *Client) CompleteMultipartUpload(ctx context.Context, bucket, path, uplo } // CreateMultipartUpload creates a new multipart upload. -func (c *Client) CreateMultipartUpload(ctx context.Context, bucket, path string, opts api.CreateMultipartOptions) (resp api.MultipartCreateResponse, err error) { +func (c *Client) CreateMultipartUpload(ctx context.Context, bucket, key string, opts api.CreateMultipartOptions) (resp api.MultipartCreateResponse, err error) { err = c.c.WithContext(ctx).POST("/multipart/create", api.MultipartCreateRequest{ - Bucket: bucket, - GenerateKey: opts.GenerateKey, - Path: path, - Key: opts.Key, - MimeType: opts.MimeType, - Metadata: opts.Metadata, + Bucket: bucket, + Key: key, + MimeType: opts.MimeType, + Metadata: opts.Metadata, }, &resp) return } @@ -68,7 +66,7 @@ func (c *Client) MultipartUploads(ctx context.Context, bucket, prefix, keyMarker err = c.c.WithContext(ctx).POST("/multipart/listuploads", api.MultipartListUploadsRequest{ Bucket: bucket, Prefix: prefix, - PathMarker: keyMarker, + KeyMarker: keyMarker, UploadIDMarker: uploadIDMarker, Limit: maxUploads, }, &resp) @@ -76,10 +74,10 @@ func (c *Client) MultipartUploads(ctx context.Context, bucket, prefix, keyMarker } // MultipartUploadParts returns information about all parts of a multipart upload. -func (c *Client) MultipartUploadParts(ctx context.Context, bucket, path string, uploadID string, partNumberMarker int, limit int64) (resp api.MultipartListPartsResponse, err error) { +func (c *Client) MultipartUploadParts(ctx context.Context, bucket, key string, uploadID string, partNumberMarker int, limit int64) (resp api.MultipartListPartsResponse, err error) { err = c.c.WithContext(ctx).POST("/multipart/listparts", api.MultipartListPartsRequest{ Bucket: bucket, - Path: path, + Key: key, UploadID: uploadID, PartNumberMarker: partNumberMarker, Limit: limit, diff --git a/bus/routes.go b/bus/routes.go index dbfb71d68..e093afbc6 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -2116,13 +2116,13 @@ func (b *Bus) multipartHandlerCreatePOST(jc jape.Context) { var key object.EncryptionKey if req.GenerateKey { key = object.GenerateEncryptionKey() - } else if req.Key == nil { + } else if req.EncryptionKey == nil { key = object.NoOpKey } else { - key = *req.Key + key = *req.EncryptionKey } - resp, err := b.ms.CreateMultipartUpload(jc.Request.Context(), req.Bucket, req.Path, key, req.MimeType, req.Metadata) + resp, err := b.ms.CreateMultipartUpload(jc.Request.Context(), req.Bucket, req.Key, key, req.MimeType, req.Metadata) if jc.Check("failed to create multipart upload", err) != nil { return } @@ -2134,7 +2134,7 @@ func (b *Bus) multipartHandlerAbortPOST(jc jape.Context) { if jc.Decode(&req) != nil { return } - err := b.ms.AbortMultipartUpload(jc.Request.Context(), req.Bucket, req.Path, req.UploadID) + err := b.ms.AbortMultipartUpload(jc.Request.Context(), req.Bucket, req.Key, req.UploadID) if jc.Check("failed to abort multipart upload", err) != nil { return } @@ -2145,7 +2145,7 @@ func (b *Bus) multipartHandlerCompletePOST(jc jape.Context) { if jc.Decode(&req) != nil { return } - resp, err := b.ms.CompleteMultipartUpload(jc.Request.Context(), req.Bucket, req.Path, req.UploadID, req.Parts, api.CompleteMultipartOptions{ + resp, err := b.ms.CompleteMultipartUpload(jc.Request.Context(), req.Bucket, req.Key, req.UploadID, req.Parts, api.CompleteMultipartOptions{ Metadata: req.Metadata, }) if jc.Check("failed to complete multipart upload", err) != nil { @@ -2174,7 +2174,7 @@ func (b *Bus) multipartHandlerUploadPartPUT(jc jape.Context) { jc.Error(errors.New("upload_id must be non-empty"), http.StatusBadRequest) return } - err := b.ms.AddMultipartPart(jc.Request.Context(), req.Bucket, req.Path, req.ContractSet, req.ETag, req.UploadID, req.PartNumber, req.Slices) + err := b.ms.AddMultipartPart(jc.Request.Context(), req.Bucket, req.Key, req.ContractSet, req.ETag, req.UploadID, req.PartNumber, req.Slices) if jc.Check("failed to upload part", err) != nil { return } @@ -2193,7 +2193,7 @@ func (b *Bus) multipartHandlerListUploadsPOST(jc jape.Context) { if jc.Decode(&req) != nil { return } - resp, err := b.ms.MultipartUploads(jc.Request.Context(), req.Bucket, req.Prefix, req.PathMarker, req.UploadIDMarker, req.Limit) + resp, err := b.ms.MultipartUploads(jc.Request.Context(), req.Bucket, req.Prefix, req.KeyMarker, req.UploadIDMarker, req.Limit) if jc.Check("failed to list multipart uploads", err) != nil { return } @@ -2205,7 +2205,7 @@ func (b *Bus) multipartHandlerListPartsPOST(jc jape.Context) { if jc.Decode(&req) != nil { return } - resp, err := b.ms.MultipartUploadParts(jc.Request.Context(), req.Bucket, req.Path, req.UploadID, req.PartNumberMarker, int64(req.Limit)) + resp, err := b.ms.MultipartUploadParts(jc.Request.Context(), req.Bucket, req.Key, req.UploadID, req.PartNumberMarker, int64(req.Limit)) if jc.Check("failed to list multipart upload parts", err) != nil { return } diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 49fb43cbc..7661b14ac 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -45,13 +45,13 @@ func TestListObjectsWithNoDelimiter(t *testing.T) { assertMetadata := func(entries []api.ObjectMetadata) { for i := range entries { // assert mod time - if !strings.HasSuffix(entries[i].Name, "/") && !entries[i].ModTime.Std().After(start.UTC()) { + if !strings.HasSuffix(entries[i].Key, "/") && !entries[i].ModTime.Std().After(start.UTC()) { t.Fatal("mod time should be set") } entries[i].ModTime = api.TimeRFC3339{} // assert mime type - isDir := strings.HasSuffix(entries[i].Name, "/") && entries[i].Name != "//double/" // double is a file + isDir := strings.HasSuffix(entries[i].Key, "/") && entries[i].Key != "//double/" // double is a file if (isDir && entries[i].MimeType != "") || (!isDir && entries[i].MimeType == "") { t.Fatal("unexpected mime type", entries[i].MimeType) } @@ -77,7 +77,7 @@ func TestListObjectsWithNoDelimiter(t *testing.T) { // upload the following paths uploads := []struct { - path string + key string size int }{ {"/foo/bar", 1}, @@ -90,11 +90,11 @@ func TestListObjectsWithNoDelimiter(t *testing.T) { for _, upload := range uploads { if upload.size == 0 { - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(nil), api.DefaultBucketName, upload.path, api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(nil), api.DefaultBucketName, upload.key, api.UploadObjectOptions{})) } else { data := make([]byte, upload.size) frand.Read(data) - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, upload.path, api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, upload.key, api.UploadObjectOptions{})) } } @@ -104,16 +104,16 @@ func TestListObjectsWithNoDelimiter(t *testing.T) { sortDir string want []api.ObjectMetadata }{ - {"/", "", "", []api.ObjectMetadata{{Name: "/FOO/bar", Size: 6, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}, {Name: "/gab/guub", Size: 5, Health: 1}}}, - {"/", "", api.ObjectSortDirAsc, []api.ObjectMetadata{{Name: "/FOO/bar", Size: 6, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}, {Name: "/gab/guub", Size: 5, Health: 1}}}, - {"/", "", api.ObjectSortDirDesc, []api.ObjectMetadata{{Name: "/gab/guub", Size: 5, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/FOO/bar", Size: 6, Health: 1}}}, - {"/", api.ObjectSortByHealth, api.ObjectSortDirAsc, []api.ObjectMetadata{{Name: "/FOO/bar", Size: 6, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}, {Name: "/gab/guub", Size: 5, Health: 1}}}, - {"/", api.ObjectSortByHealth, api.ObjectSortDirDesc, []api.ObjectMetadata{{Name: "/FOO/bar", Size: 6, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}, {Name: "/gab/guub", Size: 5, Health: 1}}}, - {"/foo/b", "", "", []api.ObjectMetadata{{Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}}}, + {"/", "", "", []api.ObjectMetadata{{Key: "/FOO/bar", Size: 6, Health: 1}, {Key: "/foo/bar", Size: 1, Health: 1}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/foo/baz/quux", Size: 3, Health: 1}, {Key: "/foo/baz/quuz", Size: 4, Health: 1}, {Key: "/gab/guub", Size: 5, Health: 1}}}, + {"/", "", api.ObjectSortDirAsc, []api.ObjectMetadata{{Key: "/FOO/bar", Size: 6, Health: 1}, {Key: "/foo/bar", Size: 1, Health: 1}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/foo/baz/quux", Size: 3, Health: 1}, {Key: "/foo/baz/quuz", Size: 4, Health: 1}, {Key: "/gab/guub", Size: 5, Health: 1}}}, + {"/", "", api.ObjectSortDirDesc, []api.ObjectMetadata{{Key: "/gab/guub", Size: 5, Health: 1}, {Key: "/foo/baz/quuz", Size: 4, Health: 1}, {Key: "/foo/baz/quux", Size: 3, Health: 1}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/foo/bar", Size: 1, Health: 1}, {Key: "/FOO/bar", Size: 6, Health: 1}}}, + {"/", api.ObjectSortByHealth, api.ObjectSortDirAsc, []api.ObjectMetadata{{Key: "/FOO/bar", Size: 6, Health: 1}, {Key: "/foo/bar", Size: 1, Health: 1}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/foo/baz/quux", Size: 3, Health: 1}, {Key: "/foo/baz/quuz", Size: 4, Health: 1}, {Key: "/gab/guub", Size: 5, Health: 1}}}, + {"/", api.ObjectSortByHealth, api.ObjectSortDirDesc, []api.ObjectMetadata{{Key: "/FOO/bar", Size: 6, Health: 1}, {Key: "/foo/bar", Size: 1, Health: 1}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/foo/baz/quux", Size: 3, Health: 1}, {Key: "/foo/baz/quuz", Size: 4, Health: 1}, {Key: "/gab/guub", Size: 5, Health: 1}}}, + {"/foo/b", "", "", []api.ObjectMetadata{{Key: "/foo/bar", Size: 1, Health: 1}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/foo/baz/quux", Size: 3, Health: 1}, {Key: "/foo/baz/quuz", Size: 4, Health: 1}}}, {"o/baz/quu", "", "", []api.ObjectMetadata{}}, - {"/foo", "", "", []api.ObjectMetadata{{Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}}}, - {"/foo", api.ObjectSortBySize, api.ObjectSortDirAsc, []api.ObjectMetadata{{Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}}}, - {"/foo", api.ObjectSortBySize, api.ObjectSortDirDesc, []api.ObjectMetadata{{Name: "/foo/baz/quuz", Size: 4, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}}}, + {"/foo", "", "", []api.ObjectMetadata{{Key: "/foo/bar", Size: 1, Health: 1}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/foo/baz/quux", Size: 3, Health: 1}, {Key: "/foo/baz/quuz", Size: 4, Health: 1}}}, + {"/foo", api.ObjectSortBySize, api.ObjectSortDirAsc, []api.ObjectMetadata{{Key: "/foo/bar", Size: 1, Health: 1}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/foo/baz/quux", Size: 3, Health: 1}, {Key: "/foo/baz/quuz", Size: 4, Health: 1}}}, + {"/foo", api.ObjectSortBySize, api.ObjectSortDirDesc, []api.ObjectMetadata{{Key: "/foo/baz/quuz", Size: 4, Health: 1}, {Key: "/foo/baz/quux", Size: 3, Health: 1}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/foo/bar", Size: 1, Health: 1}}}, } for _, test := range tests { // use the bus client @@ -151,8 +151,8 @@ func TestListObjectsWithNoDelimiter(t *testing.T) { got := res.Objects if len(got) != 1 { t.Fatalf("expected 1 object, got %v", len(got)) - } else if got[0].Name != test.want[offset].Name { - t.Fatalf("expected %v, got %v, offset %v, marker %v, sortBy %v, sortDir %v", test.want[offset].Name, got[0].Name, offset, marker, test.sortBy, test.sortDir) + } else if got[0].Key != test.want[offset].Key { + t.Fatalf("expected %v, got %v, offset %v, marker %v, sortBy %v, sortDir %v", test.want[offset].Key, got[0].Key, offset, marker, test.sortBy, test.sortDir) } marker = res.NextMarker } @@ -391,13 +391,13 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { assertMetadata := func(entries []api.ObjectMetadata) { for i := range entries { // assert mod time - if !strings.HasSuffix(entries[i].Name, "/") && !entries[i].ModTime.Std().After(start.UTC()) { + if !strings.HasSuffix(entries[i].Key, "/") && !entries[i].ModTime.Std().After(start.UTC()) { t.Fatal("mod time should be set") } entries[i].ModTime = api.TimeRFC3339{} // assert mime type - isDir := strings.HasSuffix(entries[i].Name, "/") && entries[i].Name != "//double/" // double is a file + isDir := strings.HasSuffix(entries[i].Key, "/") && entries[i].Key != "//double/" // double is a file if (isDir && entries[i].MimeType != "") || (!isDir && entries[i].MimeType == "") { t.Fatal("unexpected mime type", entries[i].MimeType) } @@ -423,7 +423,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { // upload the following paths uploads := []struct { - path string + key string size int }{ {"/foo/bar", 1}, @@ -439,11 +439,11 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { for _, upload := range uploads { if upload.size == 0 { - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(nil), api.DefaultBucketName, upload.path, api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(nil), api.DefaultBucketName, upload.key, api.UploadObjectOptions{})) } else { data := make([]byte, upload.size) frand.Read(data) - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, upload.path, api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, upload.key, api.UploadObjectOptions{})) } } @@ -454,28 +454,28 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { sortDir string want []api.ObjectMetadata }{ - {"/", "", "", "", []api.ObjectMetadata{{Name: "//", Size: 15, Health: 1}, {Name: "/FOO/", Size: 9, Health: 1}, {Name: "/fileś/", Size: 6, Health: 1}, {Name: "/foo/", Size: 10, Health: 1}, {Name: "/gab/", Size: 5, Health: 1}}}, - {"//", "", "", "", []api.ObjectMetadata{{Name: "///", Size: 8, Health: 1}, {Name: "//double/", Size: 7, Health: 1}}}, - {"///", "", "", "", []api.ObjectMetadata{{Name: "///triple", Size: 8, Health: 1}}}, - {"/foo/", "", "", "", []api.ObjectMetadata{{Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/", Size: 7, Health: 1}}}, - {"/FOO/", "", "", "", []api.ObjectMetadata{{Name: "/FOO/bar", Size: 9, Health: 1}}}, - {"/foo/baz/", "", "", "", []api.ObjectMetadata{{Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}}}, - {"/gab/", "", "", "", []api.ObjectMetadata{{Name: "/gab/guub", Size: 5, Health: 1}}}, - {"/fileś/", "", "", "", []api.ObjectMetadata{{Name: "/fileś/śpecial", Size: 6, Health: 1}}}, - - {"/", "f", "", "", []api.ObjectMetadata{{Name: "/fileś/", Size: 6, Health: 1}, {Name: "/foo/", Size: 10, Health: 1}}}, + {"/", "", "", "", []api.ObjectMetadata{{Key: "//", Size: 15, Health: 1}, {Key: "/FOO/", Size: 9, Health: 1}, {Key: "/fileś/", Size: 6, Health: 1}, {Key: "/foo/", Size: 10, Health: 1}, {Key: "/gab/", Size: 5, Health: 1}}}, + {"//", "", "", "", []api.ObjectMetadata{{Key: "///", Size: 8, Health: 1}, {Key: "//double/", Size: 7, Health: 1}}}, + {"///", "", "", "", []api.ObjectMetadata{{Key: "///triple", Size: 8, Health: 1}}}, + {"/foo/", "", "", "", []api.ObjectMetadata{{Key: "/foo/bar", Size: 1, Health: 1}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/foo/baz/", Size: 7, Health: 1}}}, + {"/FOO/", "", "", "", []api.ObjectMetadata{{Key: "/FOO/bar", Size: 9, Health: 1}}}, + {"/foo/baz/", "", "", "", []api.ObjectMetadata{{Key: "/foo/baz/quux", Size: 3, Health: 1}, {Key: "/foo/baz/quuz", Size: 4, Health: 1}}}, + {"/gab/", "", "", "", []api.ObjectMetadata{{Key: "/gab/guub", Size: 5, Health: 1}}}, + {"/fileś/", "", "", "", []api.ObjectMetadata{{Key: "/fileś/śpecial", Size: 6, Health: 1}}}, + + {"/", "f", "", "", []api.ObjectMetadata{{Key: "/fileś/", Size: 6, Health: 1}, {Key: "/foo/", Size: 10, Health: 1}}}, {"/foo/", "fo", "", "", []api.ObjectMetadata{}}, - {"/foo/baz/", "quux", "", "", []api.ObjectMetadata{{Name: "/foo/baz/quux", Size: 3, Health: 1}}}, + {"/foo/baz/", "quux", "", "", []api.ObjectMetadata{{Key: "/foo/baz/quux", Size: 3, Health: 1}}}, {"/gab/", "/guub", "", "", []api.ObjectMetadata{}}, - {"/", "", "name", "ASC", []api.ObjectMetadata{{Name: "//", Size: 15, Health: 1}, {Name: "/FOO/", Size: 9, Health: 1}, {Name: "/fileś/", Size: 6, Health: 1}, {Name: "/foo/", Size: 10, Health: 1}, {Name: "/gab/", Size: 5, Health: 1}}}, - {"/", "", "name", "DESC", []api.ObjectMetadata{{Name: "/gab/", Size: 5, Health: 1}, {Name: "/foo/", Size: 10, Health: 1}, {Name: "/fileś/", Size: 6, Health: 1}, {Name: "/FOO/", Size: 9, Health: 1}, {Name: "//", Size: 15, Health: 1}}}, + {"/", "", "name", "ASC", []api.ObjectMetadata{{Key: "//", Size: 15, Health: 1}, {Key: "/FOO/", Size: 9, Health: 1}, {Key: "/fileś/", Size: 6, Health: 1}, {Key: "/foo/", Size: 10, Health: 1}, {Key: "/gab/", Size: 5, Health: 1}}}, + {"/", "", "name", "DESC", []api.ObjectMetadata{{Key: "/gab/", Size: 5, Health: 1}, {Key: "/foo/", Size: 10, Health: 1}, {Key: "/fileś/", Size: 6, Health: 1}, {Key: "/FOO/", Size: 9, Health: 1}, {Key: "//", Size: 15, Health: 1}}}, - {"/", "", "health", "ASC", []api.ObjectMetadata{{Name: "//", Size: 15, Health: 1}, {Name: "/FOO/", Size: 9, Health: 1}, {Name: "/fileś/", Size: 6, Health: 1}, {Name: "/foo/", Size: 10, Health: 1}, {Name: "/gab/", Size: 5, Health: 1}}}, - {"/", "", "health", "DESC", []api.ObjectMetadata{{Name: "//", Size: 15, Health: 1}, {Name: "/FOO/", Size: 9, Health: 1}, {Name: "/fileś/", Size: 6, Health: 1}, {Name: "/foo/", Size: 10, Health: 1}, {Name: "/gab/", Size: 5, Health: 1}}}, + {"/", "", "health", "ASC", []api.ObjectMetadata{{Key: "//", Size: 15, Health: 1}, {Key: "/FOO/", Size: 9, Health: 1}, {Key: "/fileś/", Size: 6, Health: 1}, {Key: "/foo/", Size: 10, Health: 1}, {Key: "/gab/", Size: 5, Health: 1}}}, + {"/", "", "health", "DESC", []api.ObjectMetadata{{Key: "//", Size: 15, Health: 1}, {Key: "/FOO/", Size: 9, Health: 1}, {Key: "/fileś/", Size: 6, Health: 1}, {Key: "/foo/", Size: 10, Health: 1}, {Key: "/gab/", Size: 5, Health: 1}}}, - {"/", "", "size", "ASC", []api.ObjectMetadata{{Name: "/gab/", Size: 5, Health: 1}, {Name: "/fileś/", Size: 6, Health: 1}, {Name: "/FOO/", Size: 9, Health: 1}, {Name: "/foo/", Size: 10, Health: 1}, {Name: "//", Size: 15, Health: 1}}}, - {"/", "", "size", "DESC", []api.ObjectMetadata{{Name: "//", Size: 15, Health: 1}, {Name: "/foo/", Size: 10, Health: 1}, {Name: "/FOO/", Size: 9, Health: 1}, {Name: "/fileś/", Size: 6, Health: 1}, {Name: "/gab/", Size: 5, Health: 1}}}, + {"/", "", "size", "ASC", []api.ObjectMetadata{{Key: "/gab/", Size: 5, Health: 1}, {Key: "/fileś/", Size: 6, Health: 1}, {Key: "/FOO/", Size: 9, Health: 1}, {Key: "/foo/", Size: 10, Health: 1}, {Key: "//", Size: 15, Health: 1}}}, + {"/", "", "size", "DESC", []api.ObjectMetadata{{Key: "//", Size: 15, Health: 1}, {Key: "/foo/", Size: 10, Health: 1}, {Key: "/FOO/", Size: 9, Health: 1}, {Key: "/fileś/", Size: 6, Health: 1}, {Key: "/gab/", Size: 5, Health: 1}}}, } for _, test := range tests { // use the bus client @@ -524,28 +524,28 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { Delimiter: "/", SortBy: test.sortBy, SortDir: test.sortDir, - Marker: test.want[offset].Name, + Marker: test.want[offset].Key, Limit: 1, }) if err != nil { - t.Fatalf("\nlist: %v\nprefix: %v\nsortBy: %v\nsortDir: %vmarker: %v\n\nerr: %v", test.path, test.prefix, test.sortBy, test.sortDir, test.want[offset].Name, err) + t.Fatalf("\nlist: %v\nprefix: %v\nsortBy: %v\nsortDir: %vmarker: %v\n\nerr: %v", test.path, test.prefix, test.sortBy, test.sortDir, test.want[offset].Key, err) } assertMetadata(res.Objects) if len(res.Objects) != 1 || res.Objects[0] != test.want[offset+1] { - t.Errorf("\nlist: %v\nprefix: %v\nmarker: %v\ngot: %v\nwant: %v", test.path, test.prefix, test.want[offset].Name, res.Objects, test.want[offset+1]) + t.Errorf("\nlist: %v\nprefix: %v\nmarker: %v\ngot: %v\nwant: %v", test.path, test.prefix, test.want[offset].Key, res.Objects, test.want[offset+1]) } moreRemaining = len(test.want)-offset-2 > 0 if res.HasMore != moreRemaining { - t.Errorf("invalid value for hasMore (%t) at marker (%s) test (%+v)", res.HasMore, test.want[offset].Name, test) + t.Errorf("invalid value for hasMore (%t) at marker (%s) test (%+v)", res.HasMore, test.want[offset].Key, test) } } } // delete all uploads for _, upload := range uploads { - tt.OK(w.DeleteObject(context.Background(), api.DefaultBucketName, upload.path, api.DeleteObjectOptions{})) + tt.OK(w.DeleteObject(context.Background(), api.DefaultBucketName, upload.key, api.DeleteObjectOptions{})) } // assert root dir is empty @@ -1649,14 +1649,14 @@ func TestUploadPacking(t *testing.T) { frand.Read(data3) // declare helpers - download := func(path string, data []byte, offset, length int64) { + download := func(key string, data []byte, offset, length int64) { t.Helper() var buffer bytes.Buffer if err := w.DownloadObject( context.Background(), &buffer, api.DefaultBucketName, - path, + key, api.DownloadObjectOptions{Range: &api.DownloadRange{Offset: offset, Length: length}}, ); err != nil { t.Fatal(err) @@ -1682,7 +1682,7 @@ func TestUploadPacking(t *testing.T) { } var found bool for _, entry := range resp.Objects { - if entry.Name == "/"+name { + if entry.Key == "/"+name { if entry.Size != int64(len(data)) { t.Fatal("unexpected size after upload", entry.Size, len(data)) } @@ -1779,12 +1779,12 @@ func TestUploadPacking(t *testing.T) { t.Fatal("expected 2 objects", len(objs)) } sort.Slice(objs, func(i, j int) bool { - return objs[i].Name < objs[j].Name // make result deterministic + return objs[i].Key < objs[j].Key // make result deterministic }) - if objs[0].Name != "/file1" { - t.Fatal("expected file1", objs[0].Name) - } else if objs[1].Name != "/file2" { - t.Fatal("expected file2", objs[1].Name) + if objs[0].Key != "/file1" { + t.Fatal("expected file1", objs[0].Key) + } else if objs[1].Key != "/file2" { + t.Fatal("expected file2", objs[1].Key) } } @@ -2135,7 +2135,7 @@ func TestMultipartUploads(t *testing.T) { tt.OK(err) if len(lmu.Uploads) != 1 { t.Fatal("expected 1 upload got", len(lmu.Uploads)) - } else if upload := lmu.Uploads[0]; upload.UploadID != mpr.UploadID || upload.Path != objPath { + } else if upload := lmu.Uploads[0]; upload.UploadID != mpr.UploadID || upload.Key != objPath { t.Fatal("unexpected upload:", upload) } diff --git a/internal/test/e2e/migrations_test.go b/internal/test/e2e/migrations_test.go index b049da908..ab03a3339 100644 --- a/internal/test/e2e/migrations_test.go +++ b/internal/test/e2e/migrations_test.go @@ -41,8 +41,8 @@ func TestMigrations(t *testing.T) { tt := cluster.tt // create a helper to fetch used hosts - usedHosts := func(path string) map[types.PublicKey]struct{} { - res, _ := b.Object(context.Background(), api.DefaultBucketName, path, api.GetObjectOptions{}) + usedHosts := func(key string) map[types.PublicKey]struct{} { + res, _ := b.Object(context.Background(), api.DefaultBucketName, key, api.GetObjectOptions{}) if res.Object == nil { t.Fatal("object not found") } diff --git a/object/object.go b/object/object.go index 95517619f..1fa4a98ec 100644 --- a/object/object.go +++ b/object/object.go @@ -117,7 +117,7 @@ func GenerateEncryptionKey() EncryptionKey { // tagged omitempty to make sure responses where no object is returned remain // clean. type Object struct { - Key EncryptionKey `json:"key,omitempty"` + Key EncryptionKey `json:"encryptionKey,omitempty"` Slabs SlabSlices `json:"slabs,omitempty"` } diff --git a/stores/metadata.go b/stores/metadata.go index 44b2406d2..7262d8eb6 100644 --- a/stores/metadata.go +++ b/stores/metadata.go @@ -310,9 +310,9 @@ func (s *SQLStore) RenewedContract(ctx context.Context, renewedFrom types.FileCo return } -func (s *SQLStore) Object(ctx context.Context, bucket, path string) (obj api.Object, err error) { +func (s *SQLStore) Object(ctx context.Context, bucket, key string) (obj api.Object, err error) { err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - obj, err = tx.Object(ctx, bucket, path) + obj, err = tx.Object(ctx, bucket, key) return err }) return @@ -462,7 +462,7 @@ func (s *SQLStore) DeleteHostSector(ctx context.Context, hk types.PublicKey, roo return } -func (s *SQLStore) UpdateObject(ctx context.Context, bucket, path, contractSet, eTag, mimeType string, metadata api.ObjectUserMetadata, o object.Object) error { +func (s *SQLStore) UpdateObject(ctx context.Context, bucket, key, contractSet, eTag, mimeType string, metadata api.ObjectUserMetadata, o object.Object) error { // Sanity check input. for _, s := range o.Slabs { for i, shard := range s.Shards { @@ -487,19 +487,19 @@ func (s *SQLStore) UpdateObject(ctx context.Context, bucket, path, contractSet, // if we stop recreating the object we have to make sure to delete the // object's metadata before trying to recreate it var err error - prune, err = tx.DeleteObject(ctx, bucket, path) + prune, err = tx.DeleteObject(ctx, bucket, key) if err != nil { return fmt.Errorf("UpdateObject: failed to delete object: %w", err) } // create the dir - dirID, err := tx.MakeDirsForPath(ctx, path) + dirID, err := tx.MakeDirsForPath(ctx, key) if err != nil { - return fmt.Errorf("failed to create directories for path '%s': %w", path, err) + return fmt.Errorf("failed to create directories for key '%s': %w", key, err) } // Insert a new object. - err = tx.InsertObject(ctx, bucket, path, contractSet, dirID, o, mimeType, eTag, metadata) + err = tx.InsertObject(ctx, bucket, key, contractSet, dirID, o, mimeType, eTag, metadata) if err != nil { return fmt.Errorf("failed to insert object: %w", err) } @@ -514,16 +514,16 @@ func (s *SQLStore) UpdateObject(ctx context.Context, bucket, path, contractSet, return nil } -func (s *SQLStore) RemoveObject(ctx context.Context, bucket, path string) error { +func (s *SQLStore) RemoveObject(ctx context.Context, bucket, key string) error { var prune bool err := s.db.Transaction(ctx, func(tx sql.DatabaseTx) (err error) { - prune, err = tx.DeleteObject(ctx, bucket, path) + prune, err = tx.DeleteObject(ctx, bucket, key) return }) if err != nil { return fmt.Errorf("RemoveObject: failed to delete object: %w", err) } else if !prune { - return fmt.Errorf("%w: key: %s", api.ErrObjectNotFound, path) + return fmt.Errorf("%w: key: %s", api.ErrObjectNotFound, key) } s.triggerSlabPruning() return nil @@ -630,9 +630,9 @@ func (s *SQLStore) UnhealthySlabs(ctx context.Context, healthCutoff float64, set } // ObjectMetadata returns an object's metadata -func (s *SQLStore) ObjectMetadata(ctx context.Context, bucket, path string) (obj api.Object, err error) { +func (s *SQLStore) ObjectMetadata(ctx context.Context, bucket, key string) (obj api.Object, err error) { err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - obj, err = tx.ObjectMetadata(ctx, bucket, path) + obj, err = tx.ObjectMetadata(ctx, bucket, key) return err }) return diff --git a/stores/metadata_test.go b/stores/metadata_test.go index 15e595729..65d604077 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -42,10 +42,10 @@ func (s *testSQLStore) InsertSlab(slab object.Slab) { } } -func (s *SQLStore) RemoveObjectBlocking(ctx context.Context, bucket, path string) error { +func (s *SQLStore) RemoveObjectBlocking(ctx context.Context, bucket, key string) error { ts := time.Now() time.Sleep(time.Millisecond) - if err := s.RemoveObject(ctx, bucket, path); err != nil { + if err := s.RemoveObject(ctx, bucket, key); err != nil { return err } return s.waitForPruneLoop(ts) @@ -1051,7 +1051,7 @@ func TestSQLMetadataStore(t *testing.T) { ETag: testETag, Health: 1, ModTime: api.TimeRFC3339{}, - Name: objID, + Key: objID, Size: obj1.TotalSize(), MimeType: testMimeType, }, @@ -1438,7 +1438,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { defer ss.Close() objects := []struct { - path string + key string size int64 }{ {"/foo/bar", 1}, @@ -1458,7 +1458,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { obj := newTestObject(frand.Intn(9) + 1) obj.Slabs = obj.Slabs[:1] obj.Slabs[0].Length = uint32(o.size) - _, err := ss.addTestObject(o.path, obj) + _, err := ss.addTestObject(o.key, obj) if err != nil { t.Fatal(err) } @@ -1470,13 +1470,13 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { t.Helper() for i := range entries { // assert mod time - if !strings.HasSuffix(entries[i].Name, "/") && entries[i].ModTime.IsZero() { + if !strings.HasSuffix(entries[i].Key, "/") && entries[i].ModTime.IsZero() { t.Fatal("mod time should be set") } entries[i].ModTime = api.TimeRFC3339{} // assert mime type - isDir := strings.HasSuffix(entries[i].Name, "/") + isDir := strings.HasSuffix(entries[i].Key, "/") if (isDir && entries[i].MimeType != "") || (!isDir && entries[i].MimeType != testMimeType) { t.Fatal("unexpected mime type", entries[i].MimeType) } @@ -1510,26 +1510,26 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { sortDir string want []api.ObjectMetadata }{ - {"/", "", "", "", []api.ObjectMetadata{{Name: "/FOO/", Size: 7, Health: 1}, {Name: "/fileś/", Size: 6, Health: 1}, {Name: "/foo/", Size: 10, Health: .5}, {Name: "/gab/", Size: 5, Health: 1}}}, - {"/foo/", "", "", "", []api.ObjectMetadata{{Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/", Size: 7, Health: .5}}}, - {"/foo/baz/", "", "", "", []api.ObjectMetadata{{Name: "/foo/baz/quux", Size: 3, Health: .75}, {Name: "/foo/baz/quuz", Size: 4, Health: .5}}}, - {"/gab/", "", "", "", []api.ObjectMetadata{{Name: "/gab/guub", Size: 5, Health: 1}}}, - {"/fileś/", "", "", "", []api.ObjectMetadata{{Name: "/fileś/śpecial", Size: 6, Health: 1}}}, - - {"/", "f", "", "", []api.ObjectMetadata{{Name: "/fileś/", Size: 6, Health: 1}, {Name: "/foo/", Size: 10, Health: .5}}}, - {"/", "F", "", "", []api.ObjectMetadata{{Name: "/FOO/", Size: 7, Health: 1}}}, + {"/", "", "", "", []api.ObjectMetadata{{Key: "/FOO/", Size: 7, Health: 1}, {Key: "/fileś/", Size: 6, Health: 1}, {Key: "/foo/", Size: 10, Health: .5}, {Key: "/gab/", Size: 5, Health: 1}}}, + {"/foo/", "", "", "", []api.ObjectMetadata{{Key: "/foo/bar", Size: 1, Health: 1}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/foo/baz/", Size: 7, Health: .5}}}, + {"/foo/baz/", "", "", "", []api.ObjectMetadata{{Key: "/foo/baz/quux", Size: 3, Health: .75}, {Key: "/foo/baz/quuz", Size: 4, Health: .5}}}, + {"/gab/", "", "", "", []api.ObjectMetadata{{Key: "/gab/guub", Size: 5, Health: 1}}}, + {"/fileś/", "", "", "", []api.ObjectMetadata{{Key: "/fileś/śpecial", Size: 6, Health: 1}}}, + + {"/", "f", "", "", []api.ObjectMetadata{{Key: "/fileś/", Size: 6, Health: 1}, {Key: "/foo/", Size: 10, Health: .5}}}, + {"/", "F", "", "", []api.ObjectMetadata{{Key: "/FOO/", Size: 7, Health: 1}}}, {"/foo/", "fo", "", "", []api.ObjectMetadata{}}, - {"/foo/baz/", "quux", "", "", []api.ObjectMetadata{{Name: "/foo/baz/quux", Size: 3, Health: .75}}}, + {"/foo/baz/", "quux", "", "", []api.ObjectMetadata{{Key: "/foo/baz/quux", Size: 3, Health: .75}}}, {"/gab/", "/guub", "", "", []api.ObjectMetadata{}}, - {"/", "", "name", "ASC", []api.ObjectMetadata{{Name: "/FOO/", Size: 7, Health: 1}, {Name: "/fileś/", Size: 6, Health: 1}, {Name: "/foo/", Size: 10, Health: .5}, {Name: "/gab/", Size: 5, Health: 1}}}, - {"/", "", "name", "DESC", []api.ObjectMetadata{{Name: "/gab/", Size: 5, Health: 1}, {Name: "/foo/", Size: 10, Health: .5}, {Name: "/fileś/", Size: 6, Health: 1}, {Name: "/FOO/", Size: 7, Health: 1}}}, + {"/", "", "name", "ASC", []api.ObjectMetadata{{Key: "/FOO/", Size: 7, Health: 1}, {Key: "/fileś/", Size: 6, Health: 1}, {Key: "/foo/", Size: 10, Health: .5}, {Key: "/gab/", Size: 5, Health: 1}}}, + {"/", "", "name", "DESC", []api.ObjectMetadata{{Key: "/gab/", Size: 5, Health: 1}, {Key: "/foo/", Size: 10, Health: .5}, {Key: "/fileś/", Size: 6, Health: 1}, {Key: "/FOO/", Size: 7, Health: 1}}}, - {"/", "", "health", "ASC", []api.ObjectMetadata{{Name: "/foo/", Size: 10, Health: .5}, {Name: "/FOO/", Size: 7, Health: 1}, {Name: "/fileś/", Size: 6, Health: 1}, {Name: "/gab/", Size: 5, Health: 1}}}, - {"/", "", "health", "DESC", []api.ObjectMetadata{{Name: "/FOO/", Size: 7, Health: 1}, {Name: "/fileś/", Size: 6, Health: 1}, {Name: "/gab/", Size: 5, Health: 1}, {Name: "/foo/", Size: 10, Health: .5}}}, + {"/", "", "health", "ASC", []api.ObjectMetadata{{Key: "/foo/", Size: 10, Health: .5}, {Key: "/FOO/", Size: 7, Health: 1}, {Key: "/fileś/", Size: 6, Health: 1}, {Key: "/gab/", Size: 5, Health: 1}}}, + {"/", "", "health", "DESC", []api.ObjectMetadata{{Key: "/FOO/", Size: 7, Health: 1}, {Key: "/fileś/", Size: 6, Health: 1}, {Key: "/gab/", Size: 5, Health: 1}, {Key: "/foo/", Size: 10, Health: .5}}}, - {"/", "", "size", "DESC", []api.ObjectMetadata{{Name: "/foo/", Size: 10, Health: .5}, {Name: "/FOO/", Size: 7, Health: 1}, {Name: "/fileś/", Size: 6, Health: 1}, {Name: "/gab/", Size: 5, Health: 1}}}, - {"/", "", "size", "ASC", []api.ObjectMetadata{{Name: "/gab/", Size: 5, Health: 1}, {Name: "/fileś/", Size: 6, Health: 1}, {Name: "/FOO/", Size: 7, Health: 1}, {Name: "/foo/", Size: 10, Health: .5}}}, + {"/", "", "size", "DESC", []api.ObjectMetadata{{Key: "/foo/", Size: 10, Health: .5}, {Key: "/FOO/", Size: 7, Health: 1}, {Key: "/fileś/", Size: 6, Health: 1}, {Key: "/gab/", Size: 5, Health: 1}}}, + {"/", "", "size", "ASC", []api.ObjectMetadata{{Key: "/gab/", Size: 5, Health: 1}, {Key: "/fileś/", Size: 6, Health: 1}, {Key: "/FOO/", Size: 7, Health: 1}, {Key: "/foo/", Size: 10, Health: .5}}}, } for _, test := range tests { resp, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, "", -1) @@ -1567,7 +1567,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { continue } - resp, err = ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, test.want[offset].Name, 1) + resp, err = ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, test.want[offset].Key, 1) if err != nil { t.Fatal(err) } @@ -1575,12 +1575,12 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { assertMetadata(got) if len(got) != 1 || got[0] != test.want[offset+1] { - t.Fatalf("\noffset: %v\nlist: %v\nprefix: %v\nmarker: %v\ngot: %v\nwant: %v", offset+1, test.path, test.prefix, test.want[offset].Name, got, test.want[offset+1]) + t.Fatalf("\noffset: %v\nlist: %v\nprefix: %v\nmarker: %v\ngot: %v\nwant: %v", offset+1, test.path, test.prefix, test.want[offset].Key, got, test.want[offset+1]) } moreRemaining = len(test.want)-offset-2 > 0 if resp.HasMore != moreRemaining { - t.Fatalf("invalid value for hasMore (%t) at marker (%s) test (%+v)", resp.HasMore, test.want[offset].Name, test) + t.Fatalf("invalid value for hasMore (%t) at marker (%s) test (%+v)", resp.HasMore, test.want[offset].Key, test) } } } @@ -1591,7 +1591,7 @@ func TestListObjectsExplicitDir(t *testing.T) { defer ss.Close() objects := []struct { - path string + key string size int64 }{ {"/dir/", 0}, // empty dir - created first @@ -1604,7 +1604,7 @@ func TestListObjectsExplicitDir(t *testing.T) { obj := newTestObject(frand.Intn(9) + 1) obj.Slabs = obj.Slabs[:1] obj.Slabs[0].Length = uint32(o.size) - _, err := ss.addTestObject(o.path, obj) + _, err := ss.addTestObject(o.key, obj) if err != nil { t.Fatal(err) } @@ -1628,10 +1628,10 @@ func TestListObjectsExplicitDir(t *testing.T) { want []api.ObjectMetadata }{ {"/", "", "", "", []api.ObjectMetadata{ - {Name: "/dir/", Size: 1, Health: 0.5}, - {ETag: "d34db33f", Name: "/dir2/", Size: 2, Health: 1, MimeType: testMimeType}, // has MimeType and ETag since it's a file + {Key: "/dir/", Size: 1, Health: 0.5}, + {ETag: "d34db33f", Key: "/dir2/", Size: 2, Health: 1, MimeType: testMimeType}, // has MimeType and ETag since it's a file }}, - {"/dir/", "", "", "", []api.ObjectMetadata{{ETag: "d34db33f", Name: "/dir/file", Size: 1, Health: 0.5, MimeType: testMimeType}}}, + {"/dir/", "", "", "", []api.ObjectMetadata{{ETag: "d34db33f", Key: "/dir/file", Size: 1, Health: 0.5, MimeType: testMimeType}}}, } for _, test := range tests { got, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, "", -1) @@ -1653,7 +1653,7 @@ func TestListObjectsSubstring(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() objects := []struct { - path string + key string size int64 }{ {"/foo/bar", 1}, @@ -1668,14 +1668,14 @@ func TestListObjectsSubstring(t *testing.T) { obj := newTestObject(frand.Intn(9) + 1) obj.Slabs = obj.Slabs[:1] obj.Slabs[0].Length = uint32(o.size) - if _, err := ss.addTestObject(o.path, obj); err != nil { + if _, err := ss.addTestObject(o.key, obj); err != nil { t.Fatal(err) } } metadataEquals := func(got api.ObjectMetadata, want api.ObjectMetadata) bool { t.Helper() - return got.Name == want.Name && + return got.Key == want.Key && got.Size == want.Size && got.Health == want.Health } @@ -1693,16 +1693,16 @@ func TestListObjectsSubstring(t *testing.T) { } tests := []struct { - path string + key string want []api.ObjectMetadata }{ - {"/", []api.ObjectMetadata{{Name: "/FOO/bar", Size: 6, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}, {Name: "/gab/guub", Size: 5, Health: 1}}}, - {"/foo/b", []api.ObjectMetadata{{Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}}}, - {"o/baz/quu", []api.ObjectMetadata{{Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}}}, - {"uu", []api.ObjectMetadata{{Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}, {Name: "/gab/guub", Size: 5, Health: 1}}}, + {"/", []api.ObjectMetadata{{Key: "/FOO/bar", Size: 6, Health: 1}, {Key: "/foo/bar", Size: 1, Health: 1}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/foo/baz/quux", Size: 3, Health: 1}, {Key: "/foo/baz/quuz", Size: 4, Health: 1}, {Key: "/gab/guub", Size: 5, Health: 1}}}, + {"/foo/b", []api.ObjectMetadata{{Key: "/foo/bar", Size: 1, Health: 1}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/foo/baz/quux", Size: 3, Health: 1}, {Key: "/foo/baz/quuz", Size: 4, Health: 1}}}, + {"o/baz/quu", []api.ObjectMetadata{{Key: "/foo/baz/quux", Size: 3, Health: 1}, {Key: "/foo/baz/quuz", Size: 4, Health: 1}}}, + {"uu", []api.ObjectMetadata{{Key: "/foo/baz/quux", Size: 3, Health: 1}, {Key: "/foo/baz/quuz", Size: 4, Health: 1}, {Key: "/gab/guub", Size: 5, Health: 1}}}, } for _, test := range tests { - resp, err := ss.ListObjects(ctx, api.DefaultBucketName, "", test.path, "", "", "", "", -1) + resp, err := ss.ListObjects(ctx, api.DefaultBucketName, "", test.key, "", "", "", "", -1) if err != nil { t.Fatal(err) } @@ -1710,12 +1710,12 @@ func TestListObjectsSubstring(t *testing.T) { assertEqual(got, test.want) var marker string for offset := 0; offset < len(test.want); offset++ { - if resp, err := ss.ListObjects(ctx, api.DefaultBucketName, "", test.path, "", "", "", marker, 1); err != nil { + if resp, err := ss.ListObjects(ctx, api.DefaultBucketName, "", test.key, "", "", "", marker, 1); err != nil { t.Fatal(err) } else if got := resp.Objects; len(got) != 1 { - t.Errorf("\nkey: %v unexpected number of objects, %d != 1", test.path, len(got)) + t.Errorf("\nkey: %v unexpected number of objects, %d != 1", test.key, len(got)) } else if !metadataEquals(got[0], test.want[offset]) { - t.Errorf("\nkey: %v\ngot: %v\nwant: %v", test.path, got, test.want[offset]) + t.Errorf("\nkey: %v\ngot: %v\nwant: %v", test.key, got, test.want[offset]) } else { marker = resp.NextMarker } @@ -1850,10 +1850,10 @@ func TestUnhealthySlabs(t *testing.T) { } expected := []api.UnhealthySlab{ - {Key: obj.Slabs[2].Key, Health: 0}, - {Key: obj.Slabs[4].Key, Health: 0}, - {Key: obj.Slabs[1].Key, Health: 0.5}, - {Key: obj.Slabs[3].Key, Health: 0.5}, + {EncryptionKey: obj.Slabs[2].Key, Health: 0}, + {EncryptionKey: obj.Slabs[4].Key, Health: 0}, + {EncryptionKey: obj.Slabs[1].Key, Health: 0.5}, + {EncryptionKey: obj.Slabs[3].Key, Health: 0.5}, } if !reflect.DeepEqual(slabs, expected) { t.Fatal("slabs are not returned in the correct order") @@ -1871,8 +1871,8 @@ func TestUnhealthySlabs(t *testing.T) { } expected = []api.UnhealthySlab{ - {Key: obj.Slabs[2].Key, Health: 0}, - {Key: obj.Slabs[4].Key, Health: 0}, + {EncryptionKey: obj.Slabs[2].Key, Health: 0}, + {EncryptionKey: obj.Slabs[4].Key, Health: 0}, } if !reflect.DeepEqual(slabs, expected) { t.Fatal("slabs are not returned in the correct order", slabs, expected) @@ -2096,7 +2096,7 @@ func TestUnhealthySlabsNoRedundancy(t *testing.T) { } expected := []api.UnhealthySlab{ - {Key: obj.Slabs[1].Slab.Key, Health: -1}, + {EncryptionKey: obj.Slabs[1].Slab.Key, Health: -1}, } if !reflect.DeepEqual(slabs, expected) { t.Fatal("slabs are not returned in the correct order") @@ -2565,8 +2565,8 @@ func TestRenameObjects(t *testing.T) { // Assert paths are correct. for _, obj := range resp.Objects { - if _, exists := objectsAfterMap[obj.Name]; !exists { - t.Fatal("unexpected path", obj.Name) + if _, exists := objectsAfterMap[obj.Key]; !exists { + t.Fatal("unexpected path", obj.Key) } } @@ -2955,7 +2955,7 @@ func TestPartialSlab(t *testing.T) { assertBuffer(buffer1Name, rhpv2.SectorSize, true, true) assertBuffer(buffer2Name, 1, false, false) - buffer = fetchBuffer(packedSlabs[0].Key) + buffer = fetchBuffer(packedSlabs[0].EncryptionKey) if buffer.ID != packedSlabs[0].BufferID { t.Fatalf("wrong buffer id, %v != %v", buffer.ID, packedSlabs[0].BufferID) } @@ -2974,7 +2974,7 @@ func TestPartialSlab(t *testing.T) { t.Fatal(err) } - buffer = fetchBuffer(packedSlabs[0].Key) + buffer = fetchBuffer(packedSlabs[0].EncryptionKey) if buffer != (bufferedSlab{}) { t.Fatal("shouldn't be able to find buffer", err) } @@ -3229,8 +3229,8 @@ func TestObjectsBySlabKey(t *testing.T) { t.Fatal(err) } for i, name := range []string{"obj1", "obj2", "obj3"} { - if objs[i].Name != name { - t.Fatal("unexpected object name", objs[i].Name, name) + if objs[i].Key != name { + t.Fatal("unexpected object name", objs[i].Key, name) } if objs[i].Size != int64(i)+1 { t.Fatal("unexpected object size", objs[i].Size, i+1) @@ -3368,14 +3368,14 @@ func TestBucketObjects(t *testing.T) { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 2 entries", len(entries)) - } else if entries[0].Name != "/foo/baz" { - t.Fatal("unexpected name", entries[0].Name) + } else if entries[0].Key != "/foo/baz" { + t.Fatal("unexpected name", entries[0].Key) } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 2 entries", len(entries)) - } else if entries[0].Name != "/foo/bar" { - t.Fatal("unexpected name", entries[0].Name) + } else if entries[0].Key != "/foo/bar" { + t.Fatal("unexpected name", entries[0].Key) } // Rename foo/bar in bucket 2 using the batch rename. @@ -3385,14 +3385,14 @@ func TestBucketObjects(t *testing.T) { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 2 entries", len(entries)) - } else if entries[0].Name != "/foo/baz" { - t.Fatal("unexpected name", entries[0].Name) + } else if entries[0].Key != "/foo/baz" { + t.Fatal("unexpected name", entries[0].Key) } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 2 entries", len(entries)) - } else if entries[0].Name != "/foo/bam" { - t.Fatal("unexpected name", entries[0].Name) + } else if entries[0].Key != "/foo/bam" { + t.Fatal("unexpected name", entries[0].Key) } // Delete foo/baz in bucket 1 but first try bucket 2 since that should fail. @@ -3476,8 +3476,8 @@ func TestCopyObject(t *testing.T) { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 2 { t.Fatal("expected 2 entries", len(entries)) - } else if entries[0].Name != "/bar" || entries[1].Name != "/foo" { - t.Fatal("unexpected names", entries[0].Name, entries[1].Name) + } else if entries[0].Key != "/bar" || entries[1].Key != "/foo" { + t.Fatal("unexpected names", entries[0].Key, entries[1].Key) } else if om.ModTime.IsZero() { t.Fatal("expected mod time to be set") } @@ -3489,8 +3489,8 @@ func TestCopyObject(t *testing.T) { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 1 entry", len(entries)) - } else if entries[0].Name != "/bar" { - t.Fatal("unexpected names", entries[0].Name, entries[1].Name) + } else if entries[0].Key != "/bar" { + t.Fatal("unexpected names", entries[0].Key, entries[1].Key) } else if om.ModTime.IsZero() { t.Fatal("expected mod time to be set") } @@ -3575,7 +3575,7 @@ func TestListObjectsNoDelimiter(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() objects := []struct { - path string + key string size int64 }{ {"/foo/bar", 1}, @@ -3589,7 +3589,7 @@ func TestListObjectsNoDelimiter(t *testing.T) { // assert mod time & clear it afterwards so we can compare assertModTime := func(entries []api.ObjectMetadata) { for i := range entries { - if !strings.HasSuffix(entries[i].Name, "/") && entries[i].ModTime.IsZero() { + if !strings.HasSuffix(entries[i].Key, "/") && entries[i].ModTime.IsZero() { t.Fatal("mod time should be set") } entries[i].ModTime = api.TimeRFC3339{} @@ -3601,7 +3601,7 @@ func TestListObjectsNoDelimiter(t *testing.T) { obj := newTestObject(frand.Intn(9) + 1) obj.Slabs = obj.Slabs[:1] obj.Slabs[0].Length = uint32(o.size) - if _, err := ss.addTestObject(o.path, obj); err != nil { + if _, err := ss.addTestObject(o.key, obj); err != nil { t.Fatal(err) } } @@ -3626,16 +3626,16 @@ func TestListObjectsNoDelimiter(t *testing.T) { marker string want []api.ObjectMetadata }{ - {"/", "", "", "", []api.ObjectMetadata{{Name: "/FOO/bar", Size: 6, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: .75}, {Name: "/foo/baz/quuz", Size: 4, Health: .5}, {Name: "/gab/guub", Size: 5, Health: 1}}}, - {"/", "", "ASC", "", []api.ObjectMetadata{{Name: "/FOO/bar", Size: 6, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: .75}, {Name: "/foo/baz/quuz", Size: 4, Health: .5}, {Name: "/gab/guub", Size: 5, Health: 1}}}, - {"/", "", "DESC", "", []api.ObjectMetadata{{Name: "/gab/guub", Size: 5, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: .5}, {Name: "/foo/baz/quux", Size: 3, Health: .75}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/FOO/bar", Size: 6, Health: 1}}}, - {"/", "health", "ASC", "", []api.ObjectMetadata{{Name: "/foo/baz/quuz", Size: 4, Health: .5}, {Name: "/foo/baz/quux", Size: 3, Health: .75}, {Name: "/FOO/bar", Size: 6, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/gab/guub", Size: 5, Health: 1}}}, - {"/", "health", "DESC", "", []api.ObjectMetadata{{Name: "/FOO/bar", Size: 6, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/gab/guub", Size: 5, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: .75}, {Name: "/foo/baz/quuz", Size: 4, Health: .5}}}, - {"/foo/b", "", "", "", []api.ObjectMetadata{{Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: .75}, {Name: "/foo/baz/quuz", Size: 4, Health: .5}}}, + {"/", "", "", "", []api.ObjectMetadata{{Key: "/FOO/bar", Size: 6, Health: 1}, {Key: "/foo/bar", Size: 1, Health: 1}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/foo/baz/quux", Size: 3, Health: .75}, {Key: "/foo/baz/quuz", Size: 4, Health: .5}, {Key: "/gab/guub", Size: 5, Health: 1}}}, + {"/", "", "ASC", "", []api.ObjectMetadata{{Key: "/FOO/bar", Size: 6, Health: 1}, {Key: "/foo/bar", Size: 1, Health: 1}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/foo/baz/quux", Size: 3, Health: .75}, {Key: "/foo/baz/quuz", Size: 4, Health: .5}, {Key: "/gab/guub", Size: 5, Health: 1}}}, + {"/", "", "DESC", "", []api.ObjectMetadata{{Key: "/gab/guub", Size: 5, Health: 1}, {Key: "/foo/baz/quuz", Size: 4, Health: .5}, {Key: "/foo/baz/quux", Size: 3, Health: .75}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/foo/bar", Size: 1, Health: 1}, {Key: "/FOO/bar", Size: 6, Health: 1}}}, + {"/", "health", "ASC", "", []api.ObjectMetadata{{Key: "/foo/baz/quuz", Size: 4, Health: .5}, {Key: "/foo/baz/quux", Size: 3, Health: .75}, {Key: "/FOO/bar", Size: 6, Health: 1}, {Key: "/foo/bar", Size: 1, Health: 1}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/gab/guub", Size: 5, Health: 1}}}, + {"/", "health", "DESC", "", []api.ObjectMetadata{{Key: "/FOO/bar", Size: 6, Health: 1}, {Key: "/foo/bar", Size: 1, Health: 1}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/gab/guub", Size: 5, Health: 1}, {Key: "/foo/baz/quux", Size: 3, Health: .75}, {Key: "/foo/baz/quuz", Size: 4, Health: .5}}}, + {"/foo/b", "", "", "", []api.ObjectMetadata{{Key: "/foo/bar", Size: 1, Health: 1}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/foo/baz/quux", Size: 3, Health: .75}, {Key: "/foo/baz/quuz", Size: 4, Health: .5}}}, {"o/baz/quu", "", "", "", []api.ObjectMetadata{}}, - {"/foo", "", "", "", []api.ObjectMetadata{{Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: .75}, {Name: "/foo/baz/quuz", Size: 4, Health: .5}}}, - {"/foo", "size", "ASC", "", []api.ObjectMetadata{{Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: .75}, {Name: "/foo/baz/quuz", Size: 4, Health: .5}}}, - {"/foo", "size", "DESC", "", []api.ObjectMetadata{{Name: "/foo/baz/quuz", Size: 4, Health: .5}, {Name: "/foo/baz/quux", Size: 3, Health: .75}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}}}, + {"/foo", "", "", "", []api.ObjectMetadata{{Key: "/foo/bar", Size: 1, Health: 1}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/foo/baz/quux", Size: 3, Health: .75}, {Key: "/foo/baz/quuz", Size: 4, Health: .5}}}, + {"/foo", "size", "ASC", "", []api.ObjectMetadata{{Key: "/foo/bar", Size: 1, Health: 1}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/foo/baz/quux", Size: 3, Health: .75}, {Key: "/foo/baz/quuz", Size: 4, Health: .5}}}, + {"/foo", "size", "DESC", "", []api.ObjectMetadata{{Key: "/foo/baz/quuz", Size: 4, Health: .5}, {Key: "/foo/baz/quux", Size: 3, Health: .75}, {Key: "/foo/bat", Size: 2, Health: 1}, {Key: "/foo/bar", Size: 1, Health: 1}}}, } // set common fields for i := range tests { @@ -3671,8 +3671,8 @@ func TestListObjectsNoDelimiter(t *testing.T) { got := res.Objects if len(got) != 1 { t.Fatalf("expected 1 object, got %v", len(got)) - } else if got[0].Name != test.want[offset].Name { - t.Fatalf("expected %v, got %v, offset %v, marker %v", test.want[offset].Name, got[0].Name, offset, marker) + } else if got[0].Key != test.want[offset].Key { + t.Fatalf("expected %v, got %v, offset %v, marker %v", test.want[offset].Key, got[0].Key, offset, marker) } marker = res.NextMarker } diff --git a/stores/multipart.go b/stores/multipart.go index ec987619f..532942303 100644 --- a/stores/multipart.go +++ b/stores/multipart.go @@ -10,10 +10,10 @@ import ( sql "go.sia.tech/renterd/stores/sql" ) -func (s *SQLStore) CreateMultipartUpload(ctx context.Context, bucket, path string, ec object.EncryptionKey, mimeType string, metadata api.ObjectUserMetadata) (api.MultipartCreateResponse, error) { +func (s *SQLStore) CreateMultipartUpload(ctx context.Context, bucket, key string, ec object.EncryptionKey, mimeType string, metadata api.ObjectUserMetadata) (api.MultipartCreateResponse, error) { var uploadID string err := s.db.Transaction(ctx, func(tx sql.DatabaseTx) (err error) { - uploadID, err = tx.InsertMultipartUpload(ctx, bucket, path, ec, mimeType, metadata) + uploadID, err = tx.InsertMultipartUpload(ctx, bucket, key, ec, mimeType, metadata) return }) if err != nil { @@ -24,9 +24,9 @@ func (s *SQLStore) CreateMultipartUpload(ctx context.Context, bucket, path strin }, err } -func (s *SQLStore) AddMultipartPart(ctx context.Context, bucket, path, contractSet, eTag, uploadID string, partNumber int, slices []object.SlabSlice) (err error) { +func (s *SQLStore) AddMultipartPart(ctx context.Context, bucket, key, contractSet, eTag, uploadID string, partNumber int, slices []object.SlabSlice) (err error) { return s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - return tx.AddMultipartPart(ctx, bucket, path, contractSet, eTag, uploadID, partNumber, slices) + return tx.AddMultipartPart(ctx, bucket, key, contractSet, eTag, uploadID, partNumber, slices) }) } @@ -54,9 +54,9 @@ func (s *SQLStore) MultipartUploadParts(ctx context.Context, bucket, object stri return resp, err } -func (s *SQLStore) AbortMultipartUpload(ctx context.Context, bucket, path string, uploadID string) error { +func (s *SQLStore) AbortMultipartUpload(ctx context.Context, bucket, key string, uploadID string) error { err := s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - return tx.AbortMultipartUpload(ctx, bucket, path, uploadID) + return tx.AbortMultipartUpload(ctx, bucket, key, uploadID) }) if err != nil { return err @@ -65,7 +65,7 @@ func (s *SQLStore) AbortMultipartUpload(ctx context.Context, bucket, path string return nil } -func (s *SQLStore) CompleteMultipartUpload(ctx context.Context, bucket, path string, uploadID string, parts []api.MultipartCompletedPart, opts api.CompleteMultipartOptions) (_ api.MultipartCompleteResponse, err error) { +func (s *SQLStore) CompleteMultipartUpload(ctx context.Context, bucket, key string, uploadID string, parts []api.MultipartCompletedPart, opts api.CompleteMultipartOptions) (_ api.MultipartCompleteResponse, err error) { // Sanity check input parts. if !sort.SliceIsSorted(parts, func(i, j int) bool { return parts[i].PartNumber < parts[j].PartNumber @@ -82,13 +82,13 @@ func (s *SQLStore) CompleteMultipartUpload(ctx context.Context, bucket, path str var prune bool err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { // Delete potentially existing object. - prune, err = tx.DeleteObject(ctx, bucket, path) + prune, err = tx.DeleteObject(ctx, bucket, key) if err != nil { return fmt.Errorf("failed to delete object: %w", err) } // Complete upload - eTag, err = tx.CompleteMultipartUpload(ctx, bucket, path, uploadID, parts, opts) + eTag, err = tx.CompleteMultipartUpload(ctx, bucket, key, uploadID, parts, opts) if err != nil { return fmt.Errorf("failed to complete multipart upload: %w", err) } diff --git a/stores/slabbuffer.go b/stores/slabbuffer.go index 5e8a542b8..7e61480e1 100644 --- a/stores/slabbuffer.go +++ b/stores/slabbuffer.go @@ -334,9 +334,9 @@ func (mgr *SlabBufferManager) SlabsForUpload(ctx context.Context, lockingDuratio return nil, err } slabs = append(slabs, api.PackedSlab{ - BufferID: buffer.dbID, - Data: data, - Key: buffer.slabKey, + BufferID: buffer.dbID, + Data: data, + EncryptionKey: buffer.slabKey, }) if len(slabs) == limit { break diff --git a/stores/sql/database.go b/stores/sql/database.go index c127a4fb9..1705e5b62 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -169,7 +169,7 @@ type ( // InsertMultipartUpload creates a new multipart upload and returns a // unique upload ID. - InsertMultipartUpload(ctx context.Context, bucket, path string, ec object.EncryptionKey, mimeType string, metadata api.ObjectUserMetadata) (string, error) + InsertMultipartUpload(ctx context.Context, bucket, key string, ec object.EncryptionKey, mimeType string, metadata api.ObjectUserMetadata) (string, error) // InvalidateSlabHealthByFCID invalidates the health of all slabs that // are associated with any of the provided contracts. diff --git a/stores/sql/main.go b/stores/sql/main.go index 82d1da8f0..41bacfd8e 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -392,7 +392,7 @@ func CopyObject(ctx context.Context, tx sql.Tx, srcBucket, dstBucket, srcKey, ds // helper to fetch metadata fetchMetadata := func(objID int64) (om api.ObjectMetadata, err error) { err = tx.QueryRow(ctx, "SELECT etag, health, created_at, object_id, size, mime_type FROM objects WHERE id = ?", objID). - Scan(&om.ETag, &om.Health, (*time.Time)(&om.ModTime), &om.Name, &om.Size, &om.MimeType) + Scan(&om.ETag, &om.Health, (*time.Time)(&om.ModTime), &om.Key, &om.Size, &om.MimeType) if err != nil { return api.ObjectMetadata{}, fmt.Errorf("failed to fetch new object: %w", err) } @@ -1134,7 +1134,7 @@ func MultipartUploads(ctx context.Context, tx sql.Tx, bucket, prefix, keyMarker, if limitUsed && len(uploads) > int(limit) { hasMore = true uploads = uploads[:len(uploads)-1] - nextPathMarker = uploads[len(uploads)-1].Path + nextPathMarker = uploads[len(uploads)-1].Key nextUploadIDMarker = uploads[len(uploads)-1].UploadID } @@ -2124,7 +2124,7 @@ func UnhealthySlabs(ctx context.Context, tx sql.Tx, healthCutoff float64, set st var slabs []api.UnhealthySlab for rows.Next() { var slab api.UnhealthySlab - if err := rows.Scan((*EncryptionKey)(&slab.Key), &slab.Health); err != nil { + if err := rows.Scan((*EncryptionKey)(&slab.EncryptionKey), &slab.Health); err != nil { return nil, fmt.Errorf("failed to scan unhealthy slab: %w", err) } slabs = append(slabs, slab) @@ -2285,7 +2285,7 @@ func scanBucket(s Scanner) (api.Bucket, error) { } func scanMultipartUpload(s Scanner) (resp api.MultipartUpload, _ error) { - err := s.Scan(&resp.Bucket, (*EncryptionKey)(&resp.Key), &resp.Path, &resp.UploadID, &resp.CreatedAt) + err := s.Scan(&resp.Bucket, (*EncryptionKey)(&resp.EncryptionKey), &resp.Key, &resp.UploadID, &resp.CreatedAt) if errors.Is(err, dsql.ErrNoRows) { return api.MultipartUpload{}, api.ErrMultipartUploadNotFound } else if err != nil { @@ -2732,7 +2732,7 @@ func listObjectsNoDelim(ctx context.Context, tx Tx, bucket, prefix, substring, s objects = objects[:len(objects)-1] if len(objects) > 0 { hasMore = true - nextMarker = objects[len(objects)-1].Name + nextMarker = objects[len(objects)-1].Key } } @@ -2899,7 +2899,7 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s objects = objects[:len(objects)-1] if len(objects) > 0 { hasMore = true - nextMarker = objects[len(objects)-1].Name + nextMarker = objects[len(objects)-1].Key } } diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index 09b420345..f995b804b 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -91,8 +91,8 @@ func (b *MainDatabase) wrapTxn(tx sql.Tx) *MainDatabaseTx { return &MainDatabaseTx{tx, b.log.Named(hex.EncodeToString(frand.Bytes(16)))} } -func (tx *MainDatabaseTx) AbortMultipartUpload(ctx context.Context, bucket, path string, uploadID string) error { - return ssql.AbortMultipartUpload(ctx, tx, bucket, path, uploadID) +func (tx *MainDatabaseTx) AbortMultipartUpload(ctx context.Context, bucket, key string, uploadID string) error { + return ssql.AbortMultipartUpload(ctx, tx, bucket, key, uploadID) } func (tx *MainDatabaseTx) Accounts(ctx context.Context, owner string) ([]api.Account, error) { @@ -530,8 +530,8 @@ func (tx *MainDatabaseTx) Object(ctx context.Context, bucket, key string) (api.O return ssql.Object(ctx, tx, bucket, key) } -func (tx *MainDatabaseTx) ObjectMetadata(ctx context.Context, bucket, path string) (api.Object, error) { - return ssql.ObjectMetadata(ctx, tx, bucket, path) +func (tx *MainDatabaseTx) ObjectMetadata(ctx context.Context, bucket, key string) (api.Object, error) { + return ssql.ObjectMetadata(ctx, tx, bucket, key) } func (tx *MainDatabaseTx) ObjectsBySlabKey(ctx context.Context, bucket string, slabKey object.EncryptionKey) (metadata []api.ObjectMetadata, err error) { @@ -744,7 +744,7 @@ func (tx MainDatabaseTx) SaveAccounts(ctx context.Context, accounts []api.Accoun } func (tx *MainDatabaseTx) ScanObjectMetadata(s ssql.Scanner, others ...any) (md api.ObjectMetadata, err error) { - dst := []any{&md.Name, &md.Size, &md.Health, &md.MimeType, &md.ModTime, &md.ETag} + dst := []any{&md.Key, &md.Size, &md.Health, &md.MimeType, &md.ModTime, &md.ETag} dst = append(dst, others...) if err := s.Scan(dst...); err != nil { return api.ObjectMetadata{}, fmt.Errorf("failed to scan object metadata: %w", err) diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index 6596848d3..2e1652103 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -94,8 +94,8 @@ func (tx *MainDatabaseTx) Accounts(ctx context.Context, owner string) ([]api.Acc return ssql.Accounts(ctx, tx, owner) } -func (tx *MainDatabaseTx) AbortMultipartUpload(ctx context.Context, bucket, path string, uploadID string) error { - return ssql.AbortMultipartUpload(ctx, tx, bucket, path, uploadID) +func (tx *MainDatabaseTx) AbortMultipartUpload(ctx context.Context, bucket, key string, uploadID string) error { + return ssql.AbortMultipartUpload(ctx, tx, bucket, key, uploadID) } func (tx *MainDatabaseTx) AddMultipartPart(ctx context.Context, bucket, path, contractSet, eTag, uploadID string, partNumber int, slices object.SlabSlices) error { @@ -527,8 +527,8 @@ func (tx *MainDatabaseTx) Object(ctx context.Context, bucket, key string) (api.O return ssql.Object(ctx, tx, bucket, key) } -func (tx *MainDatabaseTx) ObjectMetadata(ctx context.Context, bucket, path string) (api.Object, error) { - return ssql.ObjectMetadata(ctx, tx, bucket, path) +func (tx *MainDatabaseTx) ObjectMetadata(ctx context.Context, bucket, key string) (api.Object, error) { + return ssql.ObjectMetadata(ctx, tx, bucket, key) } func (tx *MainDatabaseTx) ObjectsBySlabKey(ctx context.Context, bucket string, slabKey object.EncryptionKey) (metadata []api.ObjectMetadata, err error) { @@ -743,7 +743,7 @@ func (tx *MainDatabaseTx) SaveAccounts(ctx context.Context, accounts []api.Accou func (tx *MainDatabaseTx) ScanObjectMetadata(s ssql.Scanner, others ...any) (md api.ObjectMetadata, err error) { var createdAt string - dst := []any{&md.Name, &md.Size, &md.Health, &md.MimeType, &createdAt, &md.ETag} + dst := []any{&md.Key, &md.Size, &md.Health, &md.MimeType, &createdAt, &md.ETag} dst = append(dst, others...) if err := s.Scan(dst...); err != nil { return api.ObjectMetadata{}, fmt.Errorf("failed to scan object metadata: %w", err) diff --git a/stores/sql_test.go b/stores/sql_test.go index 0846254cb..c85800094 100644 --- a/stores/sql_test.go +++ b/stores/sql_test.go @@ -282,10 +282,10 @@ func (s *testSQLStore) Retry(tries int, durationBetweenAttempts time.Duration, f } } -func (s *testSQLStore) addTestObject(path string, o object.Object) (api.Object, error) { - if err := s.UpdateObjectBlocking(context.Background(), api.DefaultBucketName, path, testContractSet, testETag, testMimeType, testMetadata, o); err != nil { +func (s *testSQLStore) addTestObject(key string, o object.Object) (api.Object, error) { + if err := s.UpdateObjectBlocking(context.Background(), api.DefaultBucketName, key, testContractSet, testETag, testMimeType, testMetadata, o); err != nil { return api.Object{}, err - } else if obj, err := s.Object(context.Background(), api.DefaultBucketName, path); err != nil { + } else if obj, err := s.Object(context.Background(), api.DefaultBucketName, key); err != nil { return api.Object{}, err } else { return obj, nil diff --git a/worker/alerts.go b/worker/alerts.go index 664698fb6..02598c770 100644 --- a/worker/alerts.go +++ b/worker/alerts.go @@ -13,14 +13,14 @@ func randomAlertID() types.Hash256 { return frand.Entropy256() } -func newDownloadFailedAlert(bucket, path string, offset, length, contracts int64, err error) alerts.Alert { +func newDownloadFailedAlert(bucket, key string, offset, length, contracts int64, err error) alerts.Alert { return alerts.Alert{ ID: randomAlertID(), Severity: alerts.SeverityError, Message: "Download failed", Data: map[string]any{ "bucket": bucket, - "path": path, + "key": key, "offset": offset, "length": length, "contracts": contracts, diff --git a/worker/bench_test.go b/worker/bench_test.go index 60a238dfc..3cde1792a 100644 --- a/worker/bench_test.go +++ b/worker/bench_test.go @@ -37,7 +37,7 @@ func BenchmarkDownloaderSingleObject(b *testing.B) { if err != nil { b.Fatal(err) } - o, err := w.os.Object(context.Background(), testBucket, up.path, api.GetObjectOptions{}) + o, err := w.os.Object(context.Background(), testBucket, up.key, api.GetObjectOptions{}) if err != nil { b.Fatal(err) } diff --git a/worker/client/client.go b/worker/client/client.go index 6f950dfd8..95a997277 100644 --- a/worker/client/client.go +++ b/worker/client/client.go @@ -57,24 +57,24 @@ func (c *Client) Contracts(ctx context.Context, hostTimeout time.Duration) (resp } // DeleteObject deletes the object at the given path. -func (c *Client) DeleteObject(ctx context.Context, bucket, path string, opts api.DeleteObjectOptions) (err error) { +func (c *Client) DeleteObject(ctx context.Context, bucket, key string, opts api.DeleteObjectOptions) (err error) { values := url.Values{} values.Set("bucket", bucket) opts.Apply(values) - path = api.ObjectKeyEscape(path) - err = c.c.WithContext(ctx).DELETE(fmt.Sprintf("/objects/%s?"+values.Encode(), path)) + key = api.ObjectKeyEscape(key) + err = c.c.WithContext(ctx).DELETE(fmt.Sprintf("/objects/%s?"+values.Encode(), key)) return } -// DownloadObject downloads the object at the given path. -func (c *Client) DownloadObject(ctx context.Context, w io.Writer, bucket, path string, opts api.DownloadObjectOptions) (err error) { - if strings.HasSuffix(path, "/") { - return errors.New("the given path is a directory, use ObjectEntries instead") +// DownloadObject downloads the object at the given key. +func (c *Client) DownloadObject(ctx context.Context, w io.Writer, bucket, key string, opts api.DownloadObjectOptions) (err error) { + if strings.HasSuffix(key, "/") { + return errors.New("the given key is a directory, use ObjectEntries instead") } - path = api.ObjectKeyEscape(path) - body, _, err := c.object(ctx, bucket, path, opts) + key = api.ObjectKeyEscape(key) + body, _, err := c.object(ctx, bucket, key, opts) if err != nil { return err } @@ -89,18 +89,18 @@ func (c *Client) DownloadStats() (resp api.DownloadStatsResponse, err error) { return } -// HeadObject returns the metadata of the object at the given path. -func (c *Client) HeadObject(ctx context.Context, bucket, path string, opts api.HeadObjectOptions) (*api.HeadObjectResponse, error) { - c.c.Custom("HEAD", fmt.Sprintf("/objects/%s", path), nil, nil) +// HeadObject returns the metadata of the object at the given key. +func (c *Client) HeadObject(ctx context.Context, bucket, key string, opts api.HeadObjectOptions) (*api.HeadObjectResponse, error) { + c.c.Custom("HEAD", fmt.Sprintf("/objects/%s", key), nil, nil) values := url.Values{} values.Set("bucket", url.QueryEscape(bucket)) opts.Apply(values) - path = api.ObjectKeyEscape(path) - path += "?" + values.Encode() + key = api.ObjectKeyEscape(key) + key += "?" + values.Encode() // TODO: support HEAD in jape client - req, err := http.NewRequestWithContext(ctx, "HEAD", fmt.Sprintf("%s/objects/%s", c.c.BaseURL, path), http.NoBody) + req, err := http.NewRequestWithContext(ctx, "HEAD", fmt.Sprintf("%s/objects/%s", c.c.BaseURL, key), http.NoBody) if err != nil { panic(err) } @@ -128,14 +128,14 @@ func (c *Client) HeadObject(ctx context.Context, bucket, path string, opts api.H return &head, nil } -// GetObject returns the object at given path alongside its metadata. -func (c *Client) GetObject(ctx context.Context, bucket, path string, opts api.DownloadObjectOptions) (*api.GetObjectResponse, error) { - if strings.HasSuffix(path, "/") { +// GetObject returns the object at given key alongside its metadata. +func (c *Client) GetObject(ctx context.Context, bucket, key string, opts api.DownloadObjectOptions) (*api.GetObjectResponse, error) { + if strings.HasSuffix(key, "/") { return nil, errors.New("the given path is a directory, use ObjectEntries instead") } - path = api.ObjectKeyEscape(path) - body, header, err := c.object(ctx, bucket, path, opts) + key = api.ObjectKeyEscape(key) + body, header, err := c.object(ctx, bucket, key, opts) if err != nil { return nil, err } @@ -223,14 +223,14 @@ func (c *Client) UploadMultipartUploadPart(ctx context.Context, r io.Reader, buc } // UploadObject uploads the data in r, creating an object at the given path. -func (c *Client) UploadObject(ctx context.Context, r io.Reader, bucket, path string, opts api.UploadObjectOptions) (*api.UploadObjectResponse, error) { - path = api.ObjectKeyEscape(path) - c.c.Custom("PUT", fmt.Sprintf("/objects/%s", path), []byte{}, nil) +func (c *Client) UploadObject(ctx context.Context, r io.Reader, bucket, key string, opts api.UploadObjectOptions) (*api.UploadObjectResponse, error) { + key = api.ObjectKeyEscape(key) + c.c.Custom("PUT", fmt.Sprintf("/objects/%s", key), []byte{}, nil) values := make(url.Values) values.Set("bucket", bucket) opts.ApplyValues(values) - u, err := url.Parse(fmt.Sprintf("%v/objects/%v", c.c.BaseURL, path)) + u, err := url.Parse(fmt.Sprintf("%v/objects/%v", c.c.BaseURL, key)) if err != nil { panic(err) } @@ -271,13 +271,13 @@ func (c *Client) NotifyEvent(ctx context.Context, e webhooks.Event) (err error) return } -func (c *Client) object(ctx context.Context, bucket, path string, opts api.DownloadObjectOptions) (_ io.ReadCloser, _ http.Header, err error) { +func (c *Client) object(ctx context.Context, bucket, key string, opts api.DownloadObjectOptions) (_ io.ReadCloser, _ http.Header, err error) { values := url.Values{} values.Set("bucket", url.QueryEscape(bucket)) - path += "?" + values.Encode() + key += "?" + values.Encode() - c.c.Custom("GET", fmt.Sprintf("/objects/%s", path), nil, (*[]api.ObjectMetadata)(nil)) - req, err := http.NewRequestWithContext(ctx, "GET", fmt.Sprintf("%s/objects/%s", c.c.BaseURL, path), http.NoBody) + c.c.Custom("GET", fmt.Sprintf("/objects/%s", key), nil, (*[]api.ObjectMetadata)(nil)) + req, err := http.NewRequestWithContext(ctx, "GET", fmt.Sprintf("%s/objects/%s", c.c.BaseURL, key), http.NoBody) if err != nil { panic(err) } diff --git a/worker/mocks_test.go b/worker/mocks_test.go index 440ca9403..4e14cf7da 100644 --- a/worker/mocks_test.go +++ b/worker/mocks_test.go @@ -386,7 +386,7 @@ func (os *objectStoreMock) DeleteHostSector(ctx context.Context, hk types.Public return nil } -func (os *objectStoreMock) DeleteObject(ctx context.Context, bucket, path string, opts api.DeleteObjectOptions) error { +func (os *objectStoreMock) DeleteObject(ctx context.Context, bucket, key string, opts api.DeleteObjectOptions) error { return nil } @@ -433,7 +433,7 @@ func (os *objectStoreMock) AddPartialSlab(ctx context.Context, data []byte, minS return []object.SlabSlice{ss}, os.totalSlabBufferSize() > os.slabBufferMaxSizeSoft, nil } -func (os *objectStoreMock) Object(ctx context.Context, bucket, path string, opts api.GetObjectOptions) (api.Object, error) { +func (os *objectStoreMock) Object(ctx context.Context, bucket, key string, opts api.GetObjectOptions) (api.Object, error) { os.mu.Lock() defer os.mu.Unlock() @@ -443,20 +443,20 @@ func (os *objectStoreMock) Object(ctx context.Context, bucket, path string, opts } // check if the object exists - if _, exists := os.objects[bucket][path]; !exists { + if _, exists := os.objects[bucket][key]; !exists { return api.Object{}, api.ErrObjectNotFound } // clone to ensure the store isn't unwillingly modified var o object.Object - if b, err := json.Marshal(os.objects[bucket][path]); err != nil { + if b, err := json.Marshal(os.objects[bucket][key]); err != nil { panic(err) } else if err := json.Unmarshal(b, &o); err != nil { panic(err) } return api.Object{ - ObjectMetadata: api.ObjectMetadata{Name: path, Size: o.TotalSize()}, + ObjectMetadata: api.ObjectMetadata{Key: key, Size: o.TotalSize()}, Object: &o, }, nil } @@ -480,7 +480,7 @@ func (os *objectStoreMock) Slab(ctx context.Context, key object.EncryptionKey) ( os.mu.Lock() defer os.mu.Unlock() - os.forEachObject(func(bucket, path string, o object.Object) { + os.forEachObject(func(bucket, objKey string, o object.Object) { for _, s := range o.Slabs { if s.Slab.Key.String() == key.String() { slab = s.Slab @@ -496,13 +496,13 @@ func (os *objectStoreMock) UpdateSlab(ctx context.Context, s object.Slab, contra os.mu.Lock() defer os.mu.Unlock() - os.forEachObject(func(bucket, path string, o object.Object) { + os.forEachObject(func(bucket, objKey string, o object.Object) { for i, slab := range o.Slabs { if slab.Key.String() != s.Key.String() { continue } // update slab - shards := os.objects[bucket][path].Slabs[i].Slab.Shards + shards := os.objects[bucket][objKey].Slabs[i].Slab.Shards for sI := range shards { // overwrite latest host shards[sI].LatestHost = s.Shards[sI].LatestHost @@ -523,7 +523,7 @@ func (os *objectStoreMock) UpdateSlab(ctx context.Context, s object.Slab, contra } } } - os.objects[bucket][path].Slabs[i].Slab.Shards = shards + os.objects[bucket][objKey].Slabs[i].Slab.Shards = shards return } }) @@ -544,9 +544,9 @@ func (os *objectStoreMock) PackedSlabsForUpload(ctx context.Context, lockingDura if ps.parameterKey == parameterKey && time.Now().After(ps.lockedUntil) { ps.lockedUntil = time.Now().Add(lockingDuration) pss = append(pss, api.PackedSlab{ - BufferID: ps.bufferID, - Data: ps.data, - Key: ps.slabKey, + BufferID: ps.bufferID, + Data: ps.data, + EncryptionKey: ps.slabKey, }) if len(pss) == limit { break @@ -566,9 +566,9 @@ func (os *objectStoreMock) MarkPackedSlabsUploaded(ctx context.Context, slabs [] } slabKeyToSlab := make(map[string]*object.Slab) - os.forEachObject(func(bucket, path string, o object.Object) { + os.forEachObject(func(bucket, objKey string, o object.Object) { for i, slab := range o.Slabs { - slabKeyToSlab[slab.Slab.Key.String()] = &os.objects[bucket][path].Slabs[i].Slab + slabKeyToSlab[slab.Slab.Key.String()] = &os.objects[bucket][objKey].Slabs[i].Slab } }) @@ -604,7 +604,7 @@ func (os *objectStoreMock) setSlabBufferMaxSizeSoft(n int) { os.slabBufferMaxSizeSoft = n } -func (os *objectStoreMock) forEachObject(fn func(bucket, path string, o object.Object)) { +func (os *objectStoreMock) forEachObject(fn func(bucket, key string, o object.Object)) { for bucket, objects := range os.objects { for path, object := range objects { fn(bucket, path, object) diff --git a/worker/s3/backend.go b/worker/s3/backend.go index e1963666a..2fefec1c8 100644 --- a/worker/s3/backend.go +++ b/worker/s3/backend.go @@ -115,7 +115,7 @@ func (s *s3) ListBucket(ctx context.Context, bucketName string, prefix *gofakes3 // Loop over the entries and add them to the response. for _, object := range objects { - key := strings.TrimPrefix(object.Name, "/") + key := strings.TrimPrefix(object.Key, "/") if prefix.HasDelimiter && strings.HasSuffix(key, prefix.Delimiter) { response.AddPrefix(key) continue @@ -199,7 +199,7 @@ func (s *s3) DeleteBucket(ctx context.Context, name string) error { // If the backend is a VersionedBackend, GetObject retrieves the latest version. // TODO: Range requests starting from the end are not supported yet. Backend // needs to be updated for that. -func (s *s3) GetObject(ctx context.Context, bucketName, objectName string, rangeRequest *gofakes3.ObjectRangeRequest) (*gofakes3.Object, error) { +func (s *s3) GetObject(ctx context.Context, bucketName, key string, rangeRequest *gofakes3.ObjectRangeRequest) (*gofakes3.Object, error) { if rangeRequest != nil && rangeRequest.FromEnd { return nil, gofakes3.ErrorMessage(gofakes3.ErrNotImplemented, "range request from end not supported") } @@ -213,11 +213,11 @@ func (s *s3) GetObject(ctx context.Context, bucketName, objectName string, range opts.Range = &api.DownloadRange{Offset: rangeRequest.Start, Length: length} } - res, err := s.w.GetObject(ctx, bucketName, objectName, opts) + res, err := s.w.GetObject(ctx, bucketName, key, opts) if utils.IsErr(err, api.ErrBucketNotFound) { return nil, gofakes3.BucketNotFound(bucketName) } else if utils.IsErr(err, api.ErrObjectNotFound) { - return nil, gofakes3.KeyNotFound(objectName) + return nil, gofakes3.KeyNotFound(key) } else if err != nil { return nil, gofakes3.ErrorMessage(gofakes3.ErrInternal, err.Error()) } @@ -248,7 +248,7 @@ func (s *s3) GetObject(ctx context.Context, bucketName, objectName string, range return &gofakes3.Object{ Hash: etag, - Name: gofakes3.URLEncode(objectName), + Name: gofakes3.URLEncode(key), Metadata: res.Metadata, Size: res.Size, Contents: res.Content, @@ -265,10 +265,10 @@ func (s *s3) GetObject(ctx context.Context, bucketName, objectName string, range // // HeadObject should return a NotFound() error if the object does not // exist. -func (s *s3) HeadObject(ctx context.Context, bucketName, objectName string) (*gofakes3.Object, error) { - res, err := s.w.HeadObject(ctx, bucketName, objectName, api.HeadObjectOptions{}) +func (s *s3) HeadObject(ctx context.Context, bucketName, key string) (*gofakes3.Object, error) { + res, err := s.w.HeadObject(ctx, bucketName, key, api.HeadObjectOptions{}) if utils.IsErr(err, api.ErrObjectNotFound) { - return nil, gofakes3.KeyNotFound(objectName) + return nil, gofakes3.KeyNotFound(key) } else if err != nil { return nil, gofakes3.ErrorMessage(gofakes3.ErrInternal, err.Error()) } @@ -291,7 +291,7 @@ func (s *s3) HeadObject(ctx context.Context, bucketName, objectName string) (*go return &gofakes3.Object{ Hash: hash, - Name: gofakes3.URLEncode(objectName), + Name: gofakes3.URLEncode(key), Metadata: metadata, Size: res.Size, Contents: io.NopCloser(bytes.NewReader(nil)), @@ -313,8 +313,8 @@ func (s *s3) HeadObject(ctx context.Context, bucketName, objectName string) (*go // Removes the null version (if there is one) of an object and inserts a // delete marker, which becomes the latest version of the object. If there // isn't a null version, Amazon S3 does not remove any objects. -func (s *s3) DeleteObject(ctx context.Context, bucketName, objectName string) (gofakes3.ObjectDeleteResult, error) { - err := s.b.DeleteObject(ctx, bucketName, objectName, api.DeleteObjectOptions{}) +func (s *s3) DeleteObject(ctx context.Context, bucketName, key string) (gofakes3.ObjectDeleteResult, error) { + err := s.b.DeleteObject(ctx, bucketName, key, api.DeleteObjectOptions{}) if utils.IsErr(err, api.ErrBucketNotFound) { return gofakes3.ObjectDeleteResult{}, gofakes3.BucketNotFound(bucketName) } else if utils.IsErr(err, api.ErrObjectNotFound) { @@ -354,17 +354,17 @@ func (s *s3) PutObject(ctx context.Context, bucketName, key string, meta map[str func (s *s3) DeleteMulti(ctx context.Context, bucketName string, objects ...string) (gofakes3.MultiDeleteResult, error) { var res gofakes3.MultiDeleteResult - for _, objectName := range objects { - err := s.b.DeleteObject(ctx, bucketName, objectName, api.DeleteObjectOptions{}) + for _, key := range objects { + err := s.b.DeleteObject(ctx, bucketName, key, api.DeleteObjectOptions{}) if err != nil && !utils.IsErr(err, api.ErrObjectNotFound) { res.Error = append(res.Error, gofakes3.ErrorResult{ - Key: objectName, + Key: key, Code: gofakes3.ErrInternal, Message: err.Error(), }) } else { res.Deleted = append(res.Deleted, gofakes3.ObjectID{ - Key: objectName, + Key: key, VersionID: "", // not supported }) } @@ -432,7 +432,7 @@ func (s *s3) ListMultipartUploads(ctx context.Context, bucket string, marker *go var uploads []gofakes3.ListMultipartUploadItem for _, upload := range resp.Uploads { uploads = append(uploads, gofakes3.ListMultipartUploadItem{ - Key: upload.Path[1:], + Key: upload.Key[1:], UploadID: gofakes3.UploadID(upload.UploadID), Initiated: gofakes3.NewContentTime(upload.CreatedAt.Std()), }) diff --git a/worker/s3/s3.go b/worker/s3/s3.go index 8c334fa16..347e3c5cc 100644 --- a/worker/s3/s3.go +++ b/worker/s3/s3.go @@ -30,14 +30,14 @@ type Bus interface { DeleteBucket(ctx context.Context, bucketName string) error ListBuckets(ctx context.Context) (buckets []api.Bucket, err error) - AddObject(ctx context.Context, bucket, path, contractSet string, o object.Object, opts api.AddObjectOptions) (err error) - CopyObject(ctx context.Context, srcBucket, dstBucket, srcPath, dstPath string, opts api.CopyObjectOptions) (om api.ObjectMetadata, err error) - DeleteObject(ctx context.Context, bucket, path string, opts api.DeleteObjectOptions) (err error) + AddObject(ctx context.Context, bucket, key, contractSet string, o object.Object, opts api.AddObjectOptions) (err error) + CopyObject(ctx context.Context, srcBucket, dstBucket, srcKey, dstKey string, opts api.CopyObjectOptions) (om api.ObjectMetadata, err error) + DeleteObject(ctx context.Context, bucket, key string, opts api.DeleteObjectOptions) (err error) Objects(ctx context.Context, bucket, prefix string, opts api.ListObjectOptions) (resp api.ObjectsListResponse, err error) - AbortMultipartUpload(ctx context.Context, bucket, path string, uploadID string) (err error) - CompleteMultipartUpload(ctx context.Context, bucket, path, uploadID string, parts []api.MultipartCompletedPart, opts api.CompleteMultipartOptions) (_ api.MultipartCompleteResponse, err error) - CreateMultipartUpload(ctx context.Context, bucket, path string, opts api.CreateMultipartOptions) (api.MultipartCreateResponse, error) + AbortMultipartUpload(ctx context.Context, bucket, key string, uploadID string) (err error) + CompleteMultipartUpload(ctx context.Context, bucket, key, uploadID string, parts []api.MultipartCompletedPart, opts api.CompleteMultipartOptions) (_ api.MultipartCompleteResponse, err error) + CreateMultipartUpload(ctx context.Context, bucket, key string, opts api.CreateMultipartOptions) (api.MultipartCreateResponse, error) MultipartUploads(ctx context.Context, bucket, prefix, keyMarker, uploadIDMarker string, maxUploads int) (resp api.MultipartListUploadsResponse, _ error) MultipartUploadParts(ctx context.Context, bucket, object string, uploadID string, marker int, limit int64) (resp api.MultipartListPartsResponse, _ error) @@ -47,10 +47,10 @@ type Bus interface { } type Worker interface { - GetObject(ctx context.Context, bucket, path string, opts api.DownloadObjectOptions) (*api.GetObjectResponse, error) - HeadObject(ctx context.Context, bucket, path string, opts api.HeadObjectOptions) (*api.HeadObjectResponse, error) - UploadObject(ctx context.Context, r io.Reader, bucket, path string, opts api.UploadObjectOptions) (*api.UploadObjectResponse, error) - UploadMultipartUploadPart(ctx context.Context, r io.Reader, bucket, path, uploadID string, partNumber int, opts api.UploadMultipartUploadPartOptions) (*api.UploadMultipartUploadPartResponse, error) + GetObject(ctx context.Context, bucket, key string, opts api.DownloadObjectOptions) (*api.GetObjectResponse, error) + HeadObject(ctx context.Context, bucket, key string, opts api.HeadObjectOptions) (*api.HeadObjectResponse, error) + UploadObject(ctx context.Context, r io.Reader, bucket, key string, opts api.UploadObjectOptions) (*api.UploadObjectResponse, error) + UploadMultipartUploadPart(ctx context.Context, r io.Reader, bucket, key, uploadID string, partNumber int, opts api.UploadMultipartUploadPartOptions) (*api.UploadMultipartUploadPartResponse, error) } func (l *gofakes3Logger) Print(level gofakes3.LogLevel, v ...interface{}) { diff --git a/worker/upload.go b/worker/upload.go index 6ced77f9a..1e1dca9a1 100644 --- a/worker/upload.go +++ b/worker/upload.go @@ -154,16 +154,16 @@ func (w *Worker) initUploadManager(maxMemory, maxOverdrive uint64, overdriveTime w.uploadManager = newUploadManager(w.shutdownCtx, w, w.bus, w.bus, w.bus, maxMemory, maxOverdrive, overdriveTimeout, w.contractLockingDuration, logger) } -func (w *Worker) upload(ctx context.Context, bucket, path string, rs api.RedundancySettings, r io.Reader, contracts []api.ContractMetadata, opts ...UploadOption) (_ string, err error) { +func (w *Worker) upload(ctx context.Context, bucket, key string, rs api.RedundancySettings, r io.Reader, contracts []api.ContractMetadata, opts ...UploadOption) (_ string, err error) { // apply the options - up := defaultParameters(bucket, path, rs) + up := defaultParameters(bucket, key, rs) for _, opt := range opts { opt(&up) } // if not given, try decide on a mime type using the file extension if !up.multipart && up.mimeType == "" { - up.mimeType = mime.TypeByExtension(filepath.Ext(up.path)) + up.mimeType = mime.TypeByExtension(filepath.Ext(up.key)) // if mime type is still not known, wrap the reader with a mime reader if up.mimeType == "" { @@ -540,13 +540,13 @@ func (mgr *uploadManager) Upload(ctx context.Context, r io.Reader, contracts []a if up.multipart { // persist the part - err = mgr.os.AddMultipartPart(ctx, up.bucket, up.path, up.contractSet, eTag, up.uploadID, up.partNumber, o.Slabs) + err = mgr.os.AddMultipartPart(ctx, up.bucket, up.key, up.contractSet, eTag, up.uploadID, up.partNumber, o.Slabs) if err != nil { return bufferSizeLimitReached, "", fmt.Errorf("couldn't add multi part: %w", err) } } else { // persist the object - err = mgr.os.AddObject(ctx, up.bucket, up.path, up.contractSet, o, api.AddObjectOptions{MimeType: up.mimeType, ETag: eTag, Metadata: up.metadata}) + err = mgr.os.AddObject(ctx, up.bucket, up.key, up.contractSet, o, api.AddObjectOptions{MimeType: up.mimeType, ETag: eTag, Metadata: up.metadata}) if err != nil { return bufferSizeLimitReached, "", fmt.Errorf("couldn't add object: %w", err) } @@ -561,7 +561,7 @@ func (mgr *uploadManager) UploadPackedSlab(ctx context.Context, rs api.Redundanc defer cancel() // build the shards - shards := encryptPartialSlab(ps.Data, ps.Key, uint8(rs.MinShards), uint8(rs.TotalShards)) + shards := encryptPartialSlab(ps.Data, ps.EncryptionKey, uint8(rs.MinShards), uint8(rs.TotalShards)) // create the upload upload, err := mgr.newUpload(len(shards), contracts, bh, lockPriority) diff --git a/worker/upload_params.go b/worker/upload_params.go index 109488bb9..b20ec6485 100644 --- a/worker/upload_params.go +++ b/worker/upload_params.go @@ -7,7 +7,7 @@ import ( type uploadParameters struct { bucket string - path string + key string multipart bool uploadID string @@ -25,10 +25,10 @@ type uploadParameters struct { metadata api.ObjectUserMetadata } -func defaultParameters(bucket, path string, rs api.RedundancySettings) uploadParameters { +func defaultParameters(bucket, key string, rs api.RedundancySettings) uploadParameters { return uploadParameters{ bucket: bucket, - path: path, + key: key, ec: object.GenerateEncryptionKey(), // random key encryptionOffset: 0, // from the beginning diff --git a/worker/upload_test.go b/worker/upload_test.go index c67044101..d36c67a6e 100644 --- a/worker/upload_test.go +++ b/worker/upload_test.go @@ -221,8 +221,8 @@ func TestUploadPackedSlab(t *testing.T) { var c int uploadBytes := func(n int) { t.Helper() - params.path = fmt.Sprintf("%s_%d", t.Name(), c) - _, err := w.upload(context.Background(), params.bucket, params.path, testRedundancySettings, bytes.NewReader(frand.Bytes(n)), w.Contracts(), opts...) + params.key = fmt.Sprintf("%s_%d", t.Name(), c) + _, err := w.upload(context.Background(), params.bucket, params.key, testRedundancySettings, bytes.NewReader(frand.Bytes(n)), w.Contracts(), opts...) if err != nil { t.Fatal(err) } @@ -599,7 +599,7 @@ func TestUploadRegression(t *testing.T) { // upload data ctx, cancel := context.WithTimeout(context.Background(), time.Second) defer cancel() - _, err := w.upload(ctx, params.bucket, params.path, testRedundancySettings, bytes.NewReader(data), w.Contracts(), testOpts()...) + _, err := w.upload(ctx, params.bucket, params.key, testRedundancySettings, bytes.NewReader(data), w.Contracts(), testOpts()...) if !errors.Is(err, errUploadInterrupted) { t.Fatal(err) } @@ -608,7 +608,7 @@ func TestUploadRegression(t *testing.T) { unblock() // upload data - _, err = w.upload(context.Background(), params.bucket, params.path, testRedundancySettings, bytes.NewReader(data), w.Contracts(), testOpts()...) + _, err = w.upload(context.Background(), params.bucket, params.key, testRedundancySettings, bytes.NewReader(data), w.Contracts(), testOpts()...) if err != nil { t.Fatal(err) } @@ -660,10 +660,10 @@ func TestUploadSingleSectorSlowHosts(t *testing.T) { } } -func testParameters(path string) uploadParameters { +func testParameters(key string) uploadParameters { return uploadParameters{ bucket: testBucket, - path: path, + key: key, ec: object.GenerateEncryptionKey(), // random key encryptionOffset: 0, // from the beginning diff --git a/worker/worker.go b/worker/worker.go index 2ce7f78a8..2ec8c835e 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -113,8 +113,8 @@ type ( Slab(ctx context.Context, key object.EncryptionKey) (object.Slab, error) // NOTE: used for upload - AddObject(ctx context.Context, bucket, path, contractSet string, o object.Object, opts api.AddObjectOptions) error - AddMultipartPart(ctx context.Context, bucket, path, contractSet, ETag, uploadID string, partNumber int, slices []object.SlabSlice) (err error) + AddObject(ctx context.Context, bucket, key, contractSet string, o object.Object, opts api.AddObjectOptions) error + AddMultipartPart(ctx context.Context, bucket, key, contractSet, ETag, uploadID string, partNumber int, slices []object.SlabSlice) (err error) AddPartialSlab(ctx context.Context, data []byte, minShards, totalShards uint8, contractSet string) (slabs []object.SlabSlice, slabBufferMaxSizeSoftReached bool, err error) AddUploadingSector(ctx context.Context, uID api.UploadID, id types.FileContractID, root types.Hash256) error FinishUpload(ctx context.Context, uID api.UploadID) error @@ -124,8 +124,8 @@ type ( // NOTE: used by worker Bucket(_ context.Context, bucket string) (api.Bucket, error) - Object(ctx context.Context, bucket, path string, opts api.GetObjectOptions) (api.Object, error) - DeleteObject(ctx context.Context, bucket, path string, opts api.DeleteObjectOptions) error + Object(ctx context.Context, bucket, key string, opts api.GetObjectOptions) (api.Object, error) + DeleteObject(ctx context.Context, bucket, key string, opts api.DeleteObjectOptions) error MultipartUpload(ctx context.Context, uploadID string) (resp api.MultipartUpload, err error) PackedSlabsForUpload(ctx context.Context, lockingDuration time.Duration, minShards, totalShards uint8, set string, limit int) ([]api.PackedSlab, error) } @@ -664,7 +664,7 @@ func (w *Worker) objectsHandlerHEAD(jc jape.Context) { return } - // parse path + // parse key path := jc.PathParam("key") var off int @@ -745,8 +745,8 @@ func (w *Worker) objectsHandlerGET(jc jape.Context) { return } - path := jc.PathParam("key") - if path == "" { + key := jc.PathParam("key") + if key == "" { jc.Error(errors.New("no path provided"), http.StatusBadRequest) return } @@ -763,7 +763,7 @@ func (w *Worker) objectsHandlerGET(jc jape.Context) { return } - gor, err := w.GetObject(ctx, bucket, path, api.DownloadObjectOptions{ + gor, err := w.GetObject(ctx, bucket, key, api.DownloadObjectOptions{ Range: &dr, }) if utils.IsErr(err, api.ErrObjectNotFound) { @@ -778,7 +778,7 @@ func (w *Worker) objectsHandlerGET(jc jape.Context) { defer gor.Content.Close() // serve the content - serveContent(jc.ResponseWriter, jc.Request, path, gor.Content, gor.HeadObjectResponse) + serveContent(jc.ResponseWriter, jc.Request, key, gor.Content, gor.HeadObjectResponse) } func (w *Worker) objectsHandlerPUT(jc jape.Context) { @@ -857,7 +857,7 @@ func (w *Worker) multipartUploadHandlerPUT(jc jape.Context) { ctx := jc.Request.Context() // grab the path - path := jc.PathParam("path") + path := jc.PathParam("key") // decode the contract set from the query string var contractset string @@ -1146,7 +1146,7 @@ func (w *Worker) Handler() http.Handler { "PUT /objects/*key": w.objectsHandlerPUT, "DELETE /objects/*key": w.objectsHandlerDELETE, - "PUT /multipart/*path": w.multipartUploadHandlerPUT, + "PUT /multipart/*key": w.multipartUploadHandlerPUT, "GET /state": w.stateHandlerGET, }) @@ -1292,9 +1292,9 @@ func isErrHostUnreachable(err error) bool { utils.IsErr(err, errors.New("cannot assign requested address")) } -func (w *Worker) headObject(ctx context.Context, bucket, path string, onlyMetadata bool, opts api.HeadObjectOptions) (*api.HeadObjectResponse, api.Object, error) { +func (w *Worker) headObject(ctx context.Context, bucket, key string, onlyMetadata bool, opts api.HeadObjectOptions) (*api.HeadObjectResponse, api.Object, error) { // fetch object - res, err := w.bus.Object(ctx, bucket, path, api.GetObjectOptions{ + res, err := w.bus.Object(ctx, bucket, key, api.GetObjectOptions{ OnlyMetadata: onlyMetadata, }) if err != nil { @@ -1355,9 +1355,9 @@ func (w *Worker) FundAccount(ctx context.Context, fcid types.FileContractID, hk }) } -func (w *Worker) GetObject(ctx context.Context, bucket, path string, opts api.DownloadObjectOptions) (*api.GetObjectResponse, error) { +func (w *Worker) GetObject(ctx context.Context, bucket, key string, opts api.DownloadObjectOptions) (*api.GetObjectResponse, error) { // head object - hor, res, err := w.headObject(ctx, bucket, path, false, api.HeadObjectOptions{ + hor, res, err := w.headObject(ctx, bucket, key, false, api.HeadObjectOptions{ Range: opts.Range, }) if err != nil { @@ -1400,7 +1400,7 @@ func (w *Worker) GetObject(ctx context.Context, bucket, path string, opts api.Do if !errors.Is(err, ErrShuttingDown) && !errors.Is(err, errDownloadCancelled) && !errors.Is(err, io.ErrClosedPipe) { - w.registerAlert(newDownloadFailedAlert(bucket, path, offset, length, int64(len(contracts)), err)) + w.registerAlert(newDownloadFailedAlert(bucket, key, offset, length, int64(len(contracts)), err)) } return fmt.Errorf("failed to download object: %w", err) } @@ -1420,8 +1420,8 @@ func (w *Worker) GetObject(ctx context.Context, bucket, path string, opts api.Do }, nil } -func (w *Worker) HeadObject(ctx context.Context, bucket, path string, opts api.HeadObjectOptions) (*api.HeadObjectResponse, error) { - res, _, err := w.headObject(ctx, bucket, path, true, opts) +func (w *Worker) HeadObject(ctx context.Context, bucket, key string, opts api.HeadObjectOptions) (*api.HeadObjectResponse, error) { + res, _, err := w.headObject(ctx, bucket, key, true, opts) return res, err } @@ -1444,7 +1444,7 @@ func (w *Worker) SyncAccount(ctx context.Context, fcid types.FileContractID, hk return nil } -func (w *Worker) UploadObject(ctx context.Context, r io.Reader, bucket, path string, opts api.UploadObjectOptions) (*api.UploadObjectResponse, error) { +func (w *Worker) UploadObject(ctx context.Context, r io.Reader, bucket, key string, opts api.UploadObjectOptions) (*api.UploadObjectResponse, error) { // prepare upload params up, err := w.prepareUploadParams(ctx, bucket, opts.ContractSet, opts.MinShards, opts.TotalShards) if err != nil { @@ -1461,7 +1461,7 @@ func (w *Worker) UploadObject(ctx context.Context, r io.Reader, bucket, path str } // upload - eTag, err := w.upload(ctx, bucket, path, up.RedundancySettings, r, contracts, + eTag, err := w.upload(ctx, bucket, key, up.RedundancySettings, r, contracts, WithBlockHeight(up.CurrentHeight), WithContractSet(up.ContractSet), WithMimeType(opts.MimeType), @@ -1469,9 +1469,9 @@ func (w *Worker) UploadObject(ctx context.Context, r io.Reader, bucket, path str WithObjectUserMetadata(opts.Metadata), ) if err != nil { - w.logger.With(zap.Error(err)).With("path", path).With("bucket", bucket).Error("failed to upload object") + w.logger.With(zap.Error(err)).With("key", key).With("bucket", bucket).Error("failed to upload object") if !errors.Is(err, ErrShuttingDown) && !errors.Is(err, errUploadInterrupted) && !errors.Is(err, context.Canceled) { - w.registerAlert(newUploadFailedAlert(bucket, path, up.ContractSet, opts.MimeType, up.RedundancySettings.MinShards, up.RedundancySettings.TotalShards, len(contracts), up.UploadPacking, false, err)) + w.registerAlert(newUploadFailedAlert(bucket, key, up.ContractSet, opts.MimeType, up.RedundancySettings.MinShards, up.RedundancySettings.TotalShards, len(contracts), up.UploadPacking, false, err)) } return nil, fmt.Errorf("couldn't upload object: %w", err) } @@ -1501,13 +1501,13 @@ func (w *Worker) UploadMultipartUploadPart(ctx context.Context, r io.Reader, buc WithBlockHeight(up.CurrentHeight), WithContractSet(up.ContractSet), WithPacking(up.UploadPacking), - WithCustomKey(upload.Key), + WithCustomKey(upload.EncryptionKey), WithPartNumber(partNumber), WithUploadID(uploadID), } // make sure only one of the following is set - if encryptionEnabled := !upload.Key.IsNoopKey(); encryptionEnabled && opts.EncryptionOffset == nil { + if encryptionEnabled := !upload.EncryptionKey.IsNoopKey(); encryptionEnabled && opts.EncryptionOffset == nil { return nil, fmt.Errorf("%w: if object encryption (pre-erasure coding) wasn't disabled by creating the multipart upload with the no-op key, the offset needs to be set", api.ErrInvalidMultipartEncryptionSettings) } else if opts.EncryptionOffset != nil && *opts.EncryptionOffset < 0 { return nil, fmt.Errorf("%w: encryption offset must be positive", api.ErrInvalidMultipartEncryptionSettings) From 621ed2b36e1ed1c73be9e0988bc99d97ee2421f8 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 5 Sep 2024 09:08:10 +0200 Subject: [PATCH 044/708] stores: soft delete contracts --- internal/sql/migrations.go | 6 + stores/metadata.go | 2 +- stores/metadata_test.go | 291 +++++++----------- stores/sql/chain.go | 114 +++---- stores/sql/database.go | 2 +- stores/sql/main.go | 149 +++++---- stores/sql/mysql/main.go | 4 +- .../migration_00017_archived_contracts.sql | 52 ++++ stores/sql/mysql/migrations/main/schema.sql | 42 +-- stores/sql/rows.go | 10 +- stores/sql/sqlite/main.go | 4 +- .../migration_00017_archived_contracts.sql | 52 ++++ stores/sql/sqlite/migrations/main/schema.sql | 17 +- stores/sql_test.go | 4 +- 14 files changed, 365 insertions(+), 384 deletions(-) create mode 100644 stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql create mode 100644 stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql diff --git a/internal/sql/migrations.go b/internal/sql/migrations.go index 9b98be300..b70ca0ddd 100644 --- a/internal/sql/migrations.go +++ b/internal/sql/migrations.go @@ -211,6 +211,12 @@ var ( return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00016_account_owner", log) }, }, + { + ID: "00017_archived_contracts", + Migrate: func(tx Tx) error { + return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00017_archived_contracts", log) + }, + }, } } MetricsMigrations = func(ctx context.Context, migrationsFs embed.FS, log *zap.SugaredLogger) []Migration { diff --git a/stores/metadata.go b/stores/metadata.go index 1f4755bd7..f0fe3dba9 100644 --- a/stores/metadata.go +++ b/stores/metadata.go @@ -112,7 +112,7 @@ func (s *SQLStore) SlabBuffers(ctx context.Context) ([]api.SlabBuffer, error) { func (s *SQLStore) AddContract(ctx context.Context, c rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, state string) (_ api.ContractMetadata, err error) { var contract api.ContractMetadata err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - contract, err = tx.InsertContract(ctx, c, contractPrice, totalCost, startHeight, types.FileContractID{}, state) + contract, err = tx.InsertContract(ctx, c, contractPrice, totalCost, startHeight, state) return err }) if err != nil { diff --git a/stores/metadata_test.go b/stores/metadata_test.go index b3529eea6..883c6d2b5 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -523,7 +523,7 @@ func TestSQLContractStore(t *testing.T) { t.Fatal("wrong sets returned", sets) } - // Delete the contract. + // Archive the contract. if err := ss.ArchiveContract(ctx, c.ID(), api.ContractArchivalReasonRemoved); err != nil { t.Fatal(err) } @@ -541,12 +541,7 @@ func TestSQLContractStore(t *testing.T) { t.Fatalf("should have 0 contracts but got %v", len(contracts)) } - // Make sure the db was cleaned up properly through the CASCADE delete. - if count := ss.Count("contracts"); count != 0 { - t.Fatalf("expected %v rows in contracts but got %v", 0, count) - } - - // Check join table count as well. + // Make sure the sectors were removed if count := ss.Count("contract_sectors"); count != 0 { t.Fatalf("expected %v objects in contract_sectors but got %v", 0, count) } @@ -604,103 +599,56 @@ func TestRenewedContract(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() - // Create a host for the contract and another one for redundancy. - hks, err := ss.addTestHosts(2) + // create a host + hk := types.PublicKey{1} + err := ss.addTestHost(hk) if err != nil { t.Fatal(err) } - hk, hk2 := hks[0], hks[1] - // Add announcements. + // announce the host so we can assert the net address if err := ss.announceHost(hk, "address"); err != nil { t.Fatal(err) } - if err := ss.announceHost(hk2, "address2"); err != nil { - t.Fatal(err) - } - // Create random unlock conditions for the hosts. - uc := randomMultisigUC() - uc.PublicKeys[1].Key = hk[:] - uc.Timelock = 192837 - - uc2 := randomMultisigUC() - uc2.PublicKeys[1].Key = hk2[:] - uc2.Timelock = 192837 - - // Insert the contracts. - fcid1 := types.FileContractID{1, 1, 1, 1, 1} - c := rhpv2.ContractRevision{ - Revision: types.FileContractRevision{ - ParentID: fcid1, - UnlockConditions: uc, - FileContract: types.FileContract{ - Filesize: 1, - WindowStart: 2, - WindowEnd: 3, - RevisionNumber: 4, - }, - }, - } - oldContractPrice := types.NewCurrency64(1) - oldContractTotal := types.NewCurrency64(111) - oldContractStartHeight := uint64(100) - ctx := context.Background() - added, err := ss.AddContract(ctx, c, oldContractPrice, oldContractTotal, oldContractStartHeight, api.ContractStatePending) + // create a contract + fcid := types.FileContractID{1} + c := newTestContract(fcid, hk) + added, err := ss.AddContract(context.Background(), c, types.NewCurrency64(1), types.NewCurrency64(2), 1, api.ContractStatePending) if err != nil { t.Fatal(err) } - // Assert the contract is returned. - if added.RenewedFrom != (types.FileContractID{}) { - t.Fatal("unexpected") - } - - fcid2 := types.FileContractID{9, 9, 9, 9, 9} - c2 := c - c2.Revision.ParentID = fcid2 - c2.Revision.UnlockConditions = uc2 - _, err = ss.AddContract(ctx, c2, oldContractPrice, oldContractTotal, oldContractStartHeight, api.ContractStatePending) + // add it to a set + err = ss.SetContractSet(context.Background(), testContractSet, []types.FileContractID{fcid}) if err != nil { t.Fatal(err) } - // add an object for that contract. - obj := object.Object{ - Key: object.GenerateEncryptionKey(), - Slabs: []object.SlabSlice{ - // good slab - { - Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: 1, - Shards: append(newTestShards(hk, fcid1, types.Hash256{1}), newTestShards(hk2, fcid2, types.Hash256{2})...), - }, - }, - }, - } - - // create a contract set with both contracts. - if err := ss.SetContractSet(context.Background(), "test", []types.FileContractID{fcid1, fcid2}); err != nil { - t.Fatal(err) + // assert the contract is returned + if added.RenewedFrom != (types.FileContractID{}) { + t.Fatal("unexpected") } - // add the object. + // add an object + obj := newTestObject(1) + obj.Slabs[0].MinShards = 1 + obj.Slabs[0].Shards[0].Contracts = map[types.PublicKey][]types.FileContractID{hk: {fcid}} + obj.Slabs[0].Shards[0].LatestHost = hk + obj.Slabs[0].Shards = obj.Slabs[0].Shards[:1] if _, err := ss.addTestObject(t.Name(), obj); err != nil { t.Fatal(err) } - // mock recording of spending records to ensure the cached fields get updated - spending := api.ContractSpending{ - Uploads: types.Siacoins(1), - Downloads: types.Siacoins(2), - FundAccount: types.Siacoins(3), - Deletions: types.Siacoins(4), - SectorRoots: types.Siacoins(5), - } + // record contract spending if err := ss.RecordContractSpending(context.Background(), []api.ContractSpendingRecord{ - {ContractID: fcid1, RevisionNumber: 1, Size: rhpv2.SectorSize, ContractSpending: spending}, - {ContractID: fcid2, RevisionNumber: 1, Size: rhpv2.SectorSize, ContractSpending: spending}, + {ContractID: fcid, RevisionNumber: 1, Size: rhpv2.SectorSize, ContractSpending: api.ContractSpending{ + Uploads: types.Siacoins(1), + Downloads: types.Siacoins(2), + FundAccount: types.Siacoins(3), + Deletions: types.Siacoins(4), + SectorRoots: types.Siacoins(5), + }}, }); err != nil { t.Fatal(err) } @@ -709,26 +657,25 @@ func TestRenewedContract(t *testing.T) { if err := ss.RefreshHealth(context.Background()); err != nil { t.Fatal(err) } - slabs, err := ss.UnhealthySlabs(context.Background(), 0.99, "test", 10) + slabs, err := ss.UnhealthySlabs(context.Background(), 0.99, testContractSet, -1) if err != nil { t.Fatal(err) - } - if len(slabs) > 0 { - t.Fatal("shouldn't return any slabs", len(slabs)) + } else if len(slabs) > 0 { + t.Fatal("shouldn't return any slabs", len(slabs), slabs[0].Health) } - // Assert we can't fetch the renewed contract. - _, err = ss.RenewedContract(context.Background(), fcid1) + // assert there's no renewal + _, err = ss.RenewedContract(context.Background(), fcid) if !errors.Is(err, api.ErrContractNotFound) { t.Fatal("unexpected", err) } - // Renew it. - fcid1Renewed := types.FileContractID{2, 2, 2, 2, 2} + // renew it + fcidR := types.FileContractID{2} rev := rhpv2.ContractRevision{ Revision: types.FileContractRevision{ - ParentID: fcid1Renewed, - UnlockConditions: uc, + ParentID: fcidR, + UnlockConditions: c.Revision.UnlockConditions, FileContract: types.FileContract{ Filesize: 2 * rhpv2.SectorSize, MissedProofOutputs: []types.SiacoinOutput{}, @@ -736,29 +683,26 @@ func TestRenewedContract(t *testing.T) { }, }, } - newContractPrice := types.NewCurrency64(2) - newContractTotal := types.NewCurrency64(222) - newContractStartHeight := uint64(200) - if _, err := ss.AddRenewedContract(ctx, rev, newContractPrice, newContractTotal, newContractStartHeight, fcid1, api.ContractStatePending); err != nil { + if _, err := ss.AddRenewedContract(context.Background(), rev, types.NewCurrency64(3), types.NewCurrency64(4), 2, fcid, api.ContractStatePending); err != nil { t.Fatal(err) } - // Assert we can fetch the renewed contract. - renewed, err := ss.RenewedContract(context.Background(), fcid1) + // assert there's a renewal + renewed, err := ss.RenewedContract(context.Background(), fcid) if err != nil { t.Fatal("unexpected", err) - } - if renewed.ID != fcid1Renewed { + } else if renewed.ID != fcidR { t.Fatal("unexpected") } // make sure the contract set was updated. - setContracts, err := ss.Contracts(ctx, api.ContractsOpts{ContractSet: "test"}) + contracts, err := ss.Contracts(context.Background(), api.ContractsOpts{ContractSet: testContractSet}) if err != nil { t.Fatal(err) - } - if len(setContracts) != 2 || (setContracts[0].ID != fcid1Renewed && setContracts[1].ID != fcid1Renewed) { - t.Fatal("contract set wasn't updated", setContracts) + } else if len(contracts) != 1 { + t.Fatal("unexpected number of contracts", len(contracts)) + } else if contracts[0].ID != fcidR { + t.Fatal("unexpected contract ID", contracts[0].ID) } // slab should still be in good shape. @@ -773,23 +717,23 @@ func TestRenewedContract(t *testing.T) { t.Fatal("shouldn't return any slabs", len(slabs)) } - // Contract should be gone from active contracts. - _, err = ss.Contract(ctx, fcid1) + // renewed contract should not be returned + _, err = ss.Contract(context.Background(), fcid) if !errors.Is(err, api.ErrContractNotFound) { t.Fatal(err) } - // New contract should exist. - newContract, err := ss.Contract(ctx, fcid1Renewed) + // renewal should be returned + renewal, err := ss.Contract(context.Background(), fcidR) if err != nil { t.Fatal(err) } expected := api.ContractMetadata{ - ID: fcid1Renewed, + ID: fcidR, HostIP: "address", HostKey: hk, - StartHeight: newContractStartHeight, - RenewedFrom: fcid1, + StartHeight: 2, + RenewedFrom: fcid, Size: 2 * rhpv2.SectorSize, State: api.ContractStatePending, Spending: api.ContractSpending{ @@ -797,28 +741,26 @@ func TestRenewedContract(t *testing.T) { Downloads: types.ZeroCurrency, FundAccount: types.ZeroCurrency, }, - ContractPrice: types.NewCurrency64(2), + ContractPrice: types.NewCurrency64(3), ContractSets: []string{"test"}, - TotalCost: newContractTotal, + TotalCost: types.NewCurrency64(4), } - if !reflect.DeepEqual(newContract, expected) { + if !reflect.DeepEqual(renewal, expected) { t.Fatal("mismatch") } - // Archived contract should exist. - ancestors, err := ss.AncestorContracts(context.Background(), fcid1Renewed, 0) + // ancestor should be returned + ancestors, err := ss.AncestorContracts(context.Background(), fcidR, 0) if err != nil { t.Fatal(err) } else if len(ancestors) != 1 { t.Fatalf("expected 1 ancestor but got %v", len(ancestors)) } - ac := ancestors[0] - expectedContract := api.ArchivedContract{ - ID: fcid1, + ID: fcid, HostIP: "address", HostKey: c.HostKey(), - RenewedTo: fcid1Renewed, + RenewedTo: fcidR, Spending: api.ContractSpending{ Uploads: types.Siacoins(1), Downloads: types.Siacoins(2), @@ -828,47 +770,50 @@ func TestRenewedContract(t *testing.T) { }, ArchivalReason: api.ContractArchivalReasonRenewed, - ContractPrice: oldContractPrice, + ContractPrice: types.NewCurrency64(1), ProofHeight: 0, RenewedFrom: types.FileContractID{}, RevisionHeight: 0, RevisionNumber: 1, Size: rhpv2.SectorSize, - StartHeight: 100, + StartHeight: 1, State: api.ContractStatePending, - TotalCost: oldContractTotal, - WindowStart: 2, - WindowEnd: 3, + TotalCost: types.NewCurrency64(2), + WindowStart: 400, + WindowEnd: 500, } - - if !reflect.DeepEqual(ac, expectedContract) { - t.Fatal("mismatch", cmp.Diff(ac, expectedContract)) + if !reflect.DeepEqual(ancestors[0], expectedContract) { + t.Fatal("mismatch", cmp.Diff(ancestors[0], expectedContract)) } - // Renew it once more. - fcid3 := types.FileContractID{3, 3, 3, 3, 3} + // renew it again + fcidRR := types.FileContractID{3} rev = rhpv2.ContractRevision{ Revision: types.FileContractRevision{ - ParentID: fcid3, - UnlockConditions: uc, + ParentID: fcidRR, + UnlockConditions: c.Revision.UnlockConditions, FileContract: types.FileContract{ MissedProofOutputs: []types.SiacoinOutput{}, ValidProofOutputs: []types.SiacoinOutput{}, }, }, } - newContractPrice = types.NewCurrency64(3) - newContractTotal = types.NewCurrency64(333) - newContractStartHeight = uint64(300) - // Assert the renewed contract is returned - renewedContract, err := ss.AddRenewedContract(ctx, rev, newContractPrice, newContractTotal, newContractStartHeight, fcid1Renewed, api.ContractStatePending) + // assert the renewed contract is returned + renewedContract, err := ss.AddRenewedContract(context.Background(), rev, types.NewCurrency64(5), types.NewCurrency64(6), 3, fcidR, api.ContractStatePending) if err != nil { t.Fatal(err) - } - if renewedContract.RenewedFrom != fcid1Renewed { + } else if renewedContract.RenewedFrom != fcidR { t.Fatal("unexpected") } + + // ancestor should be returned + ancestors, err = ss.AncestorContracts(context.Background(), fcidRR, 0) + if err != nil { + t.Fatal(err) + } else if len(ancestors) != 2 { + t.Fatalf("expected 2 ancestor but got %v", len(ancestors)) + } } // TestAncestorsContracts verifies that AncestorContracts returns the right @@ -978,7 +923,7 @@ func TestArchiveContracts(t *testing.T) { ffcids := make([]sql.FileContractID, 2) ffcids[0] = sql.FileContractID(fcids[1]) ffcids[1] = sql.FileContractID(fcids[2]) - rows, err := ss.DB().Query(context.Background(), "SELECT reason FROM archived_contracts WHERE fcid IN (?, ?)", + rows, err := ss.DB().Query(context.Background(), "SELECT archival_reason FROM contracts WHERE fcid IN (?, ?)", sql.FileContractID(ffcids[0]), sql.FileContractID(ffcids[1])) if err != nil { t.Fatal(err) @@ -1002,7 +947,7 @@ func TestArchiveContracts(t *testing.T) { } } -func testContractRevision(fcid types.FileContractID, hk types.PublicKey) rhpv2.ContractRevision { +func newTestContract(fcid types.FileContractID, hk types.PublicKey) rhpv2.ContractRevision { uc := randomMultisigUC() uc.PublicKeys[1].Key = hk[:] uc.Timelock = 192837 @@ -2173,70 +2118,56 @@ func TestContractSectors(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() - // Create a host, contract and sector to upload to that host into the - // given contract. - hk1 := types.PublicKey{1} - fcid1 := types.FileContractID{1} - err := ss.addTestHost(hk1) + // add two hosts + hks, err := ss.addTestHosts(2) if err != nil { t.Fatal(err) } - _, err = ss.addTestContract(fcid1, hk1) + + // add two contracts + fcids, _, err := ss.addTestContracts(hks) if err != nil { t.Fatal(err) } - sectorGood := newTestShard(hk1, fcid1, types.Hash256{1}) - // Create object. - obj := object.Object{ - Key: object.GenerateEncryptionKey(), - Slabs: []object.SlabSlice{ - { - Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: 1, - Shards: []object.Sector{ - sectorGood, - }, - }, - }, - }, - } - if _, err := ss.addTestObject(t.Name(), obj); err != nil { + // create two objects + obj1 := newTestObject(1) + obj1.Slabs[0].Shards[0].Contracts = map[types.PublicKey][]types.FileContractID{hks[0]: {fcids[0]}} + obj1.Slabs[0].Shards[1].LatestHost = hks[0] + if _, err := ss.addTestObject(t.Name()+"_1", obj1); err != nil { t.Fatal(err) } - // Delete the contract. - err = ss.ArchiveContract(context.Background(), fcid1, api.ContractArchivalReasonRemoved) - if err != nil { + obj2 := newTestObject(1) + obj2.Slabs[0].Shards[0].Contracts = map[types.PublicKey][]types.FileContractID{hks[1]: {fcids[1]}} + obj2.Slabs[0].Shards[1].LatestHost = hks[1] + if _, err := ss.addTestObject(t.Name()+"_2", obj2); err != nil { t.Fatal(err) } - // Check the join table. Should be empty. - if n := ss.Count("contract_sectors"); n != 0 { - t.Fatal("table should be empty", n) + // assert there's two sectors + if n := ss.Count("contract_sectors"); n != 2 { + t.Fatal("expected two sectors", n) } - // Add the contract back. - _, err = ss.addTestContract(fcid1, hk1) + // archive the contract + err = ss.ArchiveContract(context.Background(), fcids[0], api.ContractArchivalReasonRemoved) if err != nil { t.Fatal(err) } - // Add the object again. - if _, err := ss.addTestObject(t.Name(), obj); err != nil { - t.Fatal(err) + // assert there's one sector + if n := ss.Count("contract_sectors"); n != 1 { + t.Fatal("expected one sector", n) } - // Delete the object. - if err := ss.RemoveObjectBlocking(context.Background(), api.DefaultBucketName, t.Name()); err != nil { + // delete the object + if err := ss.RemoveObjectBlocking(context.Background(), api.DefaultBucketName, t.Name()+"_2"); err != nil { t.Fatal(err) } - // Delete the sector. - if _, err := ss.DB().Exec(context.Background(), "DELETE FROM sectors WHERE id = ?", 1); err != nil { - t.Fatal(err) - } else if n := ss.Count("contract_sectors"); n != 0 { + // assert there's no sectors + if n := ss.Count("contract_sectors"); n != 0 { t.Fatal("table should be empty", n) } } diff --git a/stores/sql/chain.go b/stores/sql/chain.go index c9c991d4e..7247e23ee 100644 --- a/stores/sql/chain.go +++ b/stores/sql/chain.go @@ -12,20 +12,10 @@ import ( "go.uber.org/zap" ) -var contractTables = []string{ - "contracts", - "archived_contracts", -} - func GetContractState(ctx context.Context, tx sql.Tx, fcid types.FileContractID) (api.ContractState, error) { var cse ContractState err := tx. - QueryRow(ctx, - fmt.Sprintf("SELECT state FROM (SELECT state, fcid FROM %s UNION SELECT state, fcid FROM %s) as combined WHERE fcid = ?", - contractTables[0], - contractTables[1]), - FileContractID(fcid), - ). + QueryRow(ctx, `SELECT state FROM contracts WHERE fcid = ?`, FileContractID(fcid)). Scan(&cse) if errors.Is(err, dsql.ErrNoRows) { return "", contractNotFoundErr(fcid) @@ -55,45 +45,41 @@ func UpdateChainIndex(ctx context.Context, tx sql.Tx, index types.ChainIndex, l } func UpdateContract(ctx context.Context, tx sql.Tx, fcid types.FileContractID, revisionHeight, revisionNumber, size uint64, l *zap.SugaredLogger) error { - for _, table := range contractTables { - // fetch current contract, in SQLite we could use a single query to - // perform the conditional update, however we have to compare the - // revision number which are stored as strings so we need to fetch the - // current contract info separately - var currRevisionHeight, currSize uint64 - var currRevisionNumber Uint64Str - err := tx. - QueryRow(ctx, fmt.Sprintf("SELECT revision_height, revision_number, COALESCE(size, 0) FROM %s WHERE fcid = ?", table), FileContractID(fcid)). - Scan(&currRevisionHeight, &currRevisionNumber, &currSize) - if errors.Is(err, dsql.ErrNoRows) { - continue - } else if err != nil { - return fmt.Errorf("failed to fetch '%s' info for %v: %w", table[:len(table)-1], fcid, err) - } - - // update contract - err = updateContract(ctx, tx, table, fcid, currRevisionHeight, uint64(currRevisionNumber), revisionHeight, revisionNumber, size) - if err != nil { - return fmt.Errorf("failed to update '%s' %v: %w", table[:len(table)-1], fcid, err) - } + // fetch current contract, in SQLite we could use a single query to + // perform the conditional update, however we have to compare the + // revision number which are stored as strings so we need to fetch the + // current contract info separately + var currRevisionHeight, currSize uint64 + var currRevisionNumber Uint64Str + err := tx. + QueryRow(ctx, `SELECT revision_height, revision_number, COALESCE(size, 0) FROM contracts WHERE fcid = ?`, FileContractID(fcid)). + Scan(&currRevisionHeight, &currRevisionNumber, &currSize) + if errors.Is(err, dsql.ErrNoRows) { + return contractNotFoundErr(fcid) + } else if err != nil { + return fmt.Errorf("failed to fetch contract %v: %w", fcid, err) + } - l.Debugw(fmt.Sprintf("update %s, revision number %d -> %d, revision height %d -> %d, size %d -> %d", table[:len(table)-1], currRevisionNumber, revisionNumber, currRevisionHeight, revisionHeight, currSize, size), "fcid", fcid) - return nil + // update contract + err = updateContract(ctx, tx, fcid, currRevisionHeight, uint64(currRevisionNumber), revisionHeight, revisionNumber, size) + if err != nil { + return fmt.Errorf("failed to update contract %v: %w", fcid, err) } - return contractNotFoundErr(fcid) + l.Debugw(fmt.Sprintf("updated contract %v: revision number %d -> %d, revision height %d -> %d, size %d -> %d", fcid, currRevisionNumber, revisionNumber, currRevisionHeight, revisionHeight, currSize, size)) + return nil } func UpdateContractProofHeight(ctx context.Context, tx sql.Tx, fcid types.FileContractID, proofHeight uint64, l *zap.SugaredLogger) error { l.Debugw("update contract proof height", "fcid", fcid, "proof_height", proofHeight) - for _, table := range contractTables { - ok, err := updateContractProofHeight(ctx, tx, table, fcid, proofHeight) - if err != nil { - return fmt.Errorf("failed to update '%s' %v proof height: %w", table[:len(table)-1], fcid, err) - } else if ok { - break - } + res, err := tx.Exec(ctx, `UPDATE contracts SET proof_height = ? WHERE fcid = ?`, proofHeight, FileContractID(fcid)) + if err != nil { + return err + } else if n, err := res.RowsAffected(); err != nil { + return fmt.Errorf("failed to get rows affected: %w", err) + } else if n == 0 { + return fmt.Errorf("expected to update 1 row, but updated %d", n) } return nil @@ -107,13 +93,13 @@ func UpdateContractState(ctx context.Context, tx sql.Tx, fcid types.FileContract return err } - for _, table := range contractTables { - ok, err := updateContractState(ctx, tx, table, fcid, cs) - if err != nil { - return fmt.Errorf("failed to update %s state: %w", table[:len(table)-1], err) - } else if ok { - break - } + res, err := tx.Exec(ctx, `UPDATE contracts SET state = ? WHERE fcid = ?`, cs, FileContractID(fcid)) + if err != nil { + return err + } else if n, err := res.RowsAffected(); err != nil { + return fmt.Errorf("failed to get rows affected: %w", err) + } else if n == 0 { + return fmt.Errorf("expected to update 1 row, but updated %d", n) } return nil @@ -180,11 +166,11 @@ func contractNotFoundErr(fcid types.FileContractID) error { return fmt.Errorf("%w: %v", api.ErrContractNotFound, fcid) } -func updateContract(ctx context.Context, tx sql.Tx, table string, fcid types.FileContractID, currRevisionHeight, currRevisionNumber, revisionHeight, revisionNumber, size uint64) (err error) { +func updateContract(ctx context.Context, tx sql.Tx, fcid types.FileContractID, currRevisionHeight, currRevisionNumber, revisionHeight, revisionNumber, size uint64) (err error) { if revisionNumber > currRevisionNumber { _, err = tx.Exec( ctx, - fmt.Sprintf("UPDATE %s SET revision_height = ?, revision_number = ?, size = ? WHERE fcid = ?", table), + "UPDATE contracts SET revision_height = ?, revision_number = ?, size = ? WHERE fcid = ?", revisionHeight, fmt.Sprint(revisionNumber), size, @@ -193,34 +179,10 @@ func updateContract(ctx context.Context, tx sql.Tx, table string, fcid types.Fil } else if revisionHeight > currRevisionHeight { _, err = tx.Exec( ctx, - fmt.Sprintf("UPDATE %s SET revision_height = ? WHERE fcid = ?", table), + "UPDATE contracts SET revision_height = ? WHERE fcid = ?", revisionHeight, FileContractID(fcid), ) } return } - -func updateContractProofHeight(ctx context.Context, tx sql.Tx, table string, fcid types.FileContractID, proofHeight uint64) (bool, error) { - res, err := tx.Exec(ctx, fmt.Sprintf("UPDATE %s SET proof_height = ? WHERE fcid = ?", table), proofHeight, FileContractID(fcid)) - if err != nil { - return false, err - } - n, err := res.RowsAffected() - if err != nil { - return false, fmt.Errorf("failed to get rows affected: %w", err) - } - return n == 1, nil -} - -func updateContractState(ctx context.Context, tx sql.Tx, table string, fcid types.FileContractID, cs ContractState) (bool, error) { - res, err := tx.Exec(ctx, fmt.Sprintf("UPDATE %s SET state = ? WHERE fcid = ?", table), cs, FileContractID(fcid)) - if err != nil { - return false, err - } - n, err := res.RowsAffected() - if err != nil { - return false, fmt.Errorf("failed to get rows affected: %w", err) - } - return n == 1, nil -} diff --git a/stores/sql/database.go b/stores/sql/database.go index bc08865da..27ba198a0 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -165,7 +165,7 @@ type ( InsertBufferedSlab(ctx context.Context, fileName string, contractSetID int64, ec object.EncryptionKey, minShards, totalShards uint8) (int64, error) // InsertContract inserts a new contract into the database. - InsertContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (api.ContractMetadata, error) + InsertContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) // InsertMultipartUpload creates a new multipart upload and returns a // unique upload ID. diff --git a/stores/sql/main.go b/stores/sql/main.go index 655859bfc..ebec351b6 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -127,18 +127,18 @@ func AncestorContracts(ctx context.Context, tx sql.Tx, fcid types.FileContractID WITH RECURSIVE ancestors AS ( SELECT * - FROM archived_contracts + FROM contracts WHERE renewed_to = ? UNION ALL - SELECT archived_contracts.* - FROM ancestors, archived_contracts - WHERE archived_contracts.renewed_to = ancestors.fcid + SELECT contracts.* + FROM ancestors, contracts + WHERE contracts.renewed_to = ancestors.fcid ) - SELECT fcid, host, renewed_to, upload_spending, download_spending, fund_account_spending, delete_spending, + SELECT fcid, h.public_key, renewed_to, upload_spending, download_spending, fund_account_spending, delete_spending, proof_height, revision_height, revision_number, size, start_height, state, window_start, window_end, - COALESCE(h.net_address, ''), contract_price, renewed_from, total_cost, reason + COALESCE(h.net_address, ''), contract_price, renewed_from, total_cost, archival_reason FROM ancestors - LEFT JOIN hosts h ON h.public_key = ancestors.host + LEFT JOIN hosts h ON h.id = ancestors.host_id WHERE start_height >= ? `, FileContractID(fcid), startHeight) if err != nil { @@ -166,16 +166,24 @@ func AncestorContracts(ctx context.Context, tx sql.Tx, fcid types.FileContractID } func ArchiveContract(ctx context.Context, tx sql.Tx, fcid types.FileContractID, reason string) error { - if err := copyContractToArchive(ctx, tx, fcid, nil, reason); err != nil { - return fmt.Errorf("failed to copy contract to archived_contracts: %w", err) + var id int64 + err := tx.QueryRow(ctx, "SELECT id FROM contracts WHERE fcid = ?", FileContractID(fcid)).Scan(&id) + if err != nil { + return fmt.Errorf("failed to fetch contract id: %w", err) } - res, err := tx.Exec(ctx, "DELETE FROM contracts WHERE fcid = ?", FileContractID(fcid)) + + res, err := tx.Exec(ctx, "UPDATE contracts SET archival_reason = ? WHERE fcid = ?", reason, FileContractID(fcid)) if err != nil { - return fmt.Errorf("failed to delete contract from contracts: %w", err) + return fmt.Errorf("failed to archive contract: %w", err) } else if n, err := res.RowsAffected(); err != nil { return fmt.Errorf("failed to fetch rows affected: %w", err) } else if n == 0 { - return fmt.Errorf("expected to delete 1 row, deleted %d", n) + return fmt.Errorf("expected to update 1 row, updated %d", n) + } + + _, err = tx.Exec(ctx, "DELETE FROM contract_sectors WHERE db_contract_id = ?", id) + if err != nil { + return fmt.Errorf("failed to delete contract_sectors: %w", err) } return nil } @@ -331,7 +339,7 @@ func ContractSizes(ctx context.Context, tx sql.Tx) (map[types.FileContractID]api rows, err := tx.Query(ctx, ` SELECT c.fcid, c.size, c.size FROM contracts c - WHERE NOT EXISTS ( + WHERE archival_reason == '' AND NOT EXISTS ( SELECT 1 FROM contract_sectors cs WHERE cs.db_contract_id = c.id @@ -342,6 +350,7 @@ func ContractSizes(ctx context.Context, tx sql.Tx) (map[types.FileContractID]api SELECT c.fcid, c.size, MAX(c.size) as contract_size, COUNT(*) * ? as sector_size FROM contracts c INNER JOIN contract_sectors cs ON cs.db_contract_id = c.id + WHERE archival_reason == '' GROUP BY c.fcid ) i `, rhpv2.SectorSize) @@ -709,7 +718,7 @@ func InsertBufferedSlab(ctx context.Context, tx sql.Tx, fileName string, contrac return bufferedSlabID, nil } -func InsertContract(ctx context.Context, tx sql.Tx, rev rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (api.ContractMetadata, error) { +func InsertContract(ctx context.Context, tx sql.Tx, rev rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { var contractState ContractState if err := contractState.LoadString(state); err != nil { return api.ContractMetadata{}, fmt.Errorf("failed to load contract state: %w", err) @@ -721,11 +730,11 @@ func InsertContract(ctx context.Context, tx sql.Tx, rev rhpv2.ContractRevision, } res, err := tx.Exec(ctx, ` - INSERT INTO contracts (created_at, host_id, fcid, renewed_from, contract_price, state, total_cost, proof_height, + INSERT INTO contracts (created_at, host_id, fcid, renewed_from, renewed_to, contract_price, state, total_cost, proof_height, revision_height, revision_number, size, start_height, window_start, window_end, upload_spending, download_spending, fund_account_spending, delete_spending, list_spending) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - `, time.Now(), hostID, FileContractID(rev.ID()), FileContractID(renewedFrom), Currency(contractPrice), + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `, time.Now(), hostID, FileContractID(rev.ID()), FileContractID(types.FileContractID{}), FileContractID(types.FileContractID{}), Currency(contractPrice), contractState, Currency(totalCost), 0, 0, "0", rev.Revision.Filesize, startHeight, rev.Revision.WindowStart, rev.Revision.WindowEnd, ZeroCurrency, ZeroCurrency, ZeroCurrency, ZeroCurrency, ZeroCurrency) if err != nil { @@ -1850,8 +1859,10 @@ func RemoveOfflineHosts(ctx context.Context, tx sql.Tx, minRecentFailures uint64 } // delete hosts - res, err := tx.Exec(ctx, "DELETE FROM hosts WHERE recent_downtime >= ? AND recent_scan_failures >= ?", - maxDownTime, minRecentFailures) + res, err := tx.Exec(ctx, ` +DELETE FROM hosts h +LEFT JOIN contracts c ON c.host_id = h.id +WHERE h.recent_downtime >= ? AND h.recent_scan_failures >= ? AND c.id IS NULL`, maxDownTime, minRecentFailures) if err != nil { return 0, fmt.Errorf("failed to delete hosts: %w", err) } @@ -1863,53 +1874,75 @@ func RenewContract(ctx context.Context, tx sql.Tx, rev rhpv2.ContractRevision, c if err := contractState.LoadString(state); err != nil { return api.ContractMetadata{}, fmt.Errorf("failed to load contract state: %w", err) } - // create copy of contract in archived_contracts - if err := copyContractToArchive(ctx, tx, renewedFrom, &rev.Revision.ParentID, api.ContractArchivalReasonRenewed); err != nil { - return api.ContractMetadata{}, fmt.Errorf("failed to copy contract to archived_contracts: %w", err) + + // fetch existing contract + var r ContractRow + err := tx.QueryRow(ctx, ` +SELECT + c.created_at, c.fcid, c.renewed_from, + c.contract_price, c.state, c.total_cost, c.proof_height, c.revision_height, c.revision_number, c.size, c.start_height, c.window_start, c.window_end, + c.upload_spending, c.download_spending, c.fund_account_spending, c.delete_spending, c.list_spending, + c.host_id, c.archival_reason +FROM contracts AS c +WHERE fcid = ?`, FileContractID(renewedFrom)).Scan(&r.CreatedAt, &r.FCID, &r.RenewedFrom, + &r.ContractPrice, &r.State, &r.TotalCost, &r.ProofHeight, &r.RevisionHeight, &r.RevisionNumber, &r.Size, &r.StartHeight, &r.WindowStart, &r.WindowEnd, + &r.UploadSpending, &r.DownloadSpending, &r.FundAccountSpending, &r.DeleteSpending, &r.ListSpending, + &r.HostID, &r.ArchivalReason) + if errors.Is(err, dsql.ErrNoRows) { + return api.ContractMetadata{}, contractNotFoundErr(renewedFrom) + } else if err != nil { + return api.ContractMetadata{}, fmt.Errorf("failed to fetch contract: %w", err) } - // update existing contract - _, err := tx.Exec(ctx, ` - UPDATE contracts SET - created_at = ?, - fcid = ?, - renewed_from = ?, - contract_price = ?, - state = ?, - total_cost = ?, - proof_height = ?, - revision_height = ?, - revision_number = ?, - size = ?, - start_height = ?, - window_start = ?, - window_end = ?, - upload_spending = ?, - download_spending = ?, - fund_account_spending = ?, - delete_spending = ?, - list_spending = ? - WHERE fcid = ? - `, - time.Now(), FileContractID(rev.ID()), FileContractID(renewedFrom), Currency(contractPrice), contractState, + + // overwrite existing contract + _, err = tx.Exec(ctx, ` +UPDATE contracts SET + created_at = ?, fcid = ?, renewed_from = ?, renewed_to = ?, + contract_price = ?, state = ?, total_cost = ?, proof_height = ?, revision_height = ?, revision_number = ?, size = ?, start_height = ?, window_start = ?, window_end = ?, + upload_spending = ?, download_spending = ?, fund_account_spending = ?, delete_spending = ?, list_spending = ? +WHERE fcid = ?`, + time.Now(), FileContractID(rev.ID()), FileContractID(renewedFrom), FileContractID(types.FileContractID{}), Currency(contractPrice), contractState, Currency(totalCost), 0, 0, fmt.Sprint(rev.Revision.RevisionNumber), rev.Revision.Filesize, startHeight, rev.Revision.WindowStart, rev.Revision.WindowEnd, ZeroCurrency, ZeroCurrency, ZeroCurrency, ZeroCurrency, ZeroCurrency, FileContractID(renewedFrom)) if err != nil { return api.ContractMetadata{}, fmt.Errorf("failed to update contract: %w", err) } + + // insert archived contract + r.ArchivalReason = api.ContractArchivalReasonRenewed + res, err := tx.Exec(ctx, ` +INSERT INTO contracts ( + created_at, fcid, renewed_from, renewed_to, contract_price, state, total_cost, proof_height, + revision_height, revision_number, size, start_height, window_start, window_end, upload_spending, download_spending, fund_account_spending, delete_spending, list_spending, + host_id, archival_reason +) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, + r.CreatedAt, r.FCID, r.RenewedFrom, FileContractID(rev.ID()), r.ContractPrice, r.State, r.TotalCost, r.ProofHeight, + r.RevisionHeight, r.RevisionNumber, r.Size, r.StartHeight, r.WindowStart, r.WindowEnd, r.UploadSpending, r.DownloadSpending, r.FundAccountSpending, r.DeleteSpending, r.ListSpending, + r.HostID, r.ArchivalReason, + ) + if err != nil { + return api.ContractMetadata{}, fmt.Errorf("failed to insert archived contract: %w", err) + } else if n, err := res.RowsAffected(); err != nil { + return api.ContractMetadata{}, fmt.Errorf("failed to insert archived contract: %w", err) + } else if n != 1 { + return api.ContractMetadata{}, fmt.Errorf("failed to insert archived contract: no rows affected") + } + return Contract(ctx, tx, rev.ID()) } func QueryContracts(ctx context.Context, tx sql.Tx, whereExprs []string, whereArgs []any) ([]api.ContractMetadata, error) { - var whereExpr string + whereExpr := "WHERE c.archival_reason == ''" if len(whereExprs) > 0 { - whereExpr = "WHERE " + strings.Join(whereExprs, " AND ") + whereExpr += " AND " + strings.Join(whereExprs, " AND ") } + rows, err := tx.Query(ctx, fmt.Sprintf(` - SELECT c.fcid, c.renewed_from, c.contract_price, c.state, c.total_cost, c.proof_height, + SELECT c.created_at, c.fcid, c.renewed_from, c.contract_price, c.state, c.total_cost, c.proof_height, c.revision_height, c.revision_number, c.size, c.start_height, c.window_start, c.window_end, c.upload_spending, c.download_spending, c.fund_account_spending, c.delete_spending, c.list_spending, - COALESCE(cs.name, ""), h.net_address, h.public_key, h.settings->>'$.siamuxport' AS siamux_port + c.host_id, c.archival_reason, COALESCE(cs.name, ""), COALESCE(h.net_address, ""), h.public_key, h.settings->>'$.siamuxport' AS siamux_port FROM contracts AS c INNER JOIN hosts h ON h.id = c.host_id LEFT JOIN contract_set_contracts csc ON csc.db_contract_id = c.id @@ -2487,22 +2520,6 @@ func WalletEventCount(ctx context.Context, tx sql.Tx) (count uint64, err error) return uint64(n), nil } -func copyContractToArchive(ctx context.Context, tx sql.Tx, fcid types.FileContractID, renewedTo *types.FileContractID, reason string) error { - _, err := tx.Exec(ctx, ` - INSERT INTO archived_contracts (created_at, fcid, renewed_from, contract_price, state, total_cost, - proof_height, revision_height, revision_number, size, start_height, window_start, window_end, - upload_spending, download_spending, fund_account_spending, delete_spending, list_spending, renewed_to, - host, reason) - SELECT ?, fcid, renewed_from, contract_price, state, total_cost, proof_height, revision_height, revision_number, - size, start_height, window_start, window_end, upload_spending, download_spending, fund_account_spending, - delete_spending, list_spending, ?, h.public_key, ? - FROM contracts c - INNER JOIN hosts h ON h.id = c.host_id - WHERE fcid = ? - `, time.Now(), (*FileContractID)(renewedTo), reason, FileContractID(fcid)) - return err -} - func scanAutopilot(s Scanner) (api.Autopilot, error) { var a api.Autopilot if err := s.Scan(&a.ID, (*AutopilotConfig)(&a.Config), &a.CurrentPeriod); err != nil { diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index ef671baef..f2c72bdf6 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -336,8 +336,8 @@ func (tx *MainDatabaseTx) InsertBufferedSlab(ctx context.Context, fileName strin return ssql.InsertBufferedSlab(ctx, tx, fileName, contractSetID, ec, minShards, totalShards) } -func (tx *MainDatabaseTx) InsertContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (api.ContractMetadata, error) { - return ssql.InsertContract(ctx, tx, rev, contractPrice, totalCost, startHeight, renewedFrom, state) +func (tx *MainDatabaseTx) InsertContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { + return ssql.InsertContract(ctx, tx, rev, contractPrice, totalCost, startHeight, state) } func (tx *MainDatabaseTx) InsertMultipartUpload(ctx context.Context, bucket, key string, ec object.EncryptionKey, mimeType string, metadata api.ObjectUserMetadata) (string, error) { diff --git a/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql b/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql new file mode 100644 index 000000000..15c6a7ad9 --- /dev/null +++ b/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql @@ -0,0 +1,52 @@ +ALTER TABLE `contracts` ADD COLUMN archival_reason VARCHAR(191) NOT NULL DEFAULT ''; +CREATE INDEX `idx_contracts_archival_reason` ON `contracts`(`archival_reason`); + +ALTER TABLE `contracts` ADD COLUMN renewed_to VARBINARY(32) DEFAULT NULL; +CREATE INDEX `idx_contracts_renewed_to` ON `contracts`(`renewed_to`); + +INSERT INTO `contracts` ( +created_at, +fcid, +renewed_from, +renewed_to, +contract_price, +state, +total_cost, +proof_height, +revision_height, +revision_number, +size, +start_height, +window_start, +window_end, +upload_spending, +download_spending, +fund_account_spending, +delete_spending, +list_spending, +host_id, +archival_reason +) SELECT +ac.created_at, +ac.fcid, +ac.renewed_from, +ac.renewed_to, +ac.contract_price, +ac.state, +ac.total_cost, +ac.proof_height, +ac.revision_height, +ac.revision_number, +ac.size, +ac.start_height, +ac.window_start, +ac.window_end, +ac.upload_spending, +ac.download_spending, +ac.fund_account_spending, +ac.delete_spending, +ac.list_spending, +h.id, +ac.reason +FROM `archived_contracts` ac INNER JOIN hosts h ON ac.host = h.public_key ; +DROP TABLE `archived_contracts`; diff --git a/stores/sql/mysql/migrations/main/schema.sql b/stores/sql/mysql/migrations/main/schema.sql index 96008942a..991100a9d 100644 --- a/stores/sql/mysql/migrations/main/schema.sql +++ b/stores/sql/mysql/migrations/main/schema.sql @@ -1,41 +1,3 @@ --- dbArchivedContract -CREATE TABLE `archived_contracts` ( - `id` bigint unsigned NOT NULL AUTO_INCREMENT, - `created_at` datetime(3) DEFAULT NULL, - `fcid` varbinary(32) NOT NULL, - `renewed_from` varbinary(32) DEFAULT NULL, - `contract_price` longtext, - `state` tinyint unsigned NOT NULL DEFAULT '0', - `total_cost` longtext, - `proof_height` bigint unsigned DEFAULT '0', - `revision_height` bigint unsigned DEFAULT '0', - `revision_number` varchar(191) NOT NULL DEFAULT '0', - `size` bigint unsigned DEFAULT NULL, - `start_height` bigint unsigned NOT NULL, - `window_start` bigint unsigned NOT NULL DEFAULT '0', - `window_end` bigint unsigned NOT NULL DEFAULT '0', - `upload_spending` longtext, - `download_spending` longtext, - `fund_account_spending` longtext, - `delete_spending` longtext, - `list_spending` longtext, - `renewed_to` varbinary(32) DEFAULT NULL, - `host` varbinary(32) NOT NULL, - `reason` longtext, - PRIMARY KEY (`id`), - UNIQUE KEY `fcid` (`fcid`), - KEY `idx_archived_contracts_renewed_from` (`renewed_from`), - KEY `idx_archived_contracts_proof_height` (`proof_height`), - KEY `idx_archived_contracts_revision_height` (`revision_height`), - KEY `idx_archived_contracts_start_height` (`start_height`), - KEY `idx_archived_contracts_host` (`host`), - KEY `idx_archived_contracts_fc_id` (`fcid`), - KEY `idx_archived_contracts_state` (`state`), - KEY `idx_archived_contracts_window_start` (`window_start`), - KEY `idx_archived_contracts_window_end` (`window_end`), - KEY `idx_archived_contracts_renewed_to` (`renewed_to`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - -- dbAutopilot CREATE TABLE `autopilots` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT, @@ -114,6 +76,7 @@ CREATE TABLE `contracts` ( `created_at` datetime(3) DEFAULT NULL, `fcid` varbinary(32) NOT NULL, `renewed_from` varbinary(32) DEFAULT NULL, + `renewed_to` varbinary(32) DEFAULT NULL, `contract_price` longtext, `state` tinyint unsigned NOT NULL DEFAULT '0', `total_cost` longtext, @@ -130,17 +93,20 @@ CREATE TABLE `contracts` ( `delete_spending` longtext, `list_spending` longtext, `host_id` bigint unsigned DEFAULT NULL, + `archival_reason` VARCHAR(191) NOT NULL DEFAULT '', PRIMARY KEY (`id`), UNIQUE KEY `fcid` (`fcid`), KEY `idx_contracts_window_end` (`window_end`), KEY `idx_contracts_host_id` (`host_id`), KEY `idx_contracts_renewed_from` (`renewed_from`), + KEY `idx_contracts_renewed_to` (`renewed_to`), KEY `idx_contracts_state` (`state`), KEY `idx_contracts_proof_height` (`proof_height`), KEY `idx_contracts_start_height` (`start_height`), KEY `idx_contracts_fc_id` (`fcid`), KEY `idx_contracts_revision_height` (`revision_height`), KEY `idx_contracts_window_start` (`window_start`), + KEY `idx_contracts_archival_reason` (`archival_reason`), CONSTRAINT `fk_contracts_host` FOREIGN KEY (`host_id`) REFERENCES `hosts` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; diff --git a/stores/sql/rows.go b/stores/sql/rows.go index 20830ee93..e777599ad 100644 --- a/stores/sql/rows.go +++ b/stores/sql/rows.go @@ -1,6 +1,8 @@ package sql import ( + "time" + rhpv2 "go.sia.tech/core/rhp/v2" "go.sia.tech/core/types" "go.sia.tech/renterd/api" @@ -11,6 +13,7 @@ type Scanner interface { } type ContractRow struct { + CreatedAt time.Time FCID FileContractID RenewedFrom FileContractID @@ -32,6 +35,9 @@ type ContractRow struct { DeleteSpending Currency ListSpending Currency + HostID int64 + ArchivalReason string + ContractSet string NetAddress string PublicKey PublicKey @@ -39,10 +45,10 @@ type ContractRow struct { } func (r *ContractRow) Scan(s Scanner) error { - return s.Scan(&r.FCID, &r.RenewedFrom, &r.ContractPrice, &r.State, &r.TotalCost, &r.ProofHeight, + return s.Scan(&r.CreatedAt, &r.FCID, &r.RenewedFrom, &r.ContractPrice, &r.State, &r.TotalCost, &r.ProofHeight, &r.RevisionHeight, &r.RevisionNumber, &r.Size, &r.StartHeight, &r.WindowStart, &r.WindowEnd, &r.UploadSpending, &r.DownloadSpending, &r.FundAccountSpending, &r.DeleteSpending, &r.ListSpending, - &r.ContractSet, &r.NetAddress, &r.PublicKey, &r.SiamuxPort) + &r.HostID, &r.ArchivalReason, &r.ContractSet, &r.NetAddress, &r.PublicKey, &r.SiamuxPort) } func (r *ContractRow) ContractMetadata() api.ContractMetadata { diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index 744617565..ca6e2911f 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -348,8 +348,8 @@ func (tx *MainDatabaseTx) InsertBufferedSlab(ctx context.Context, fileName strin return ssql.InsertBufferedSlab(ctx, tx, fileName, contractSetID, ec, minShards, totalShards) } -func (tx *MainDatabaseTx) InsertContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (api.ContractMetadata, error) { - return ssql.InsertContract(ctx, tx, rev, contractPrice, totalCost, startHeight, renewedFrom, state) +func (tx *MainDatabaseTx) InsertContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { + return ssql.InsertContract(ctx, tx, rev, contractPrice, totalCost, startHeight, state) } func (tx *MainDatabaseTx) InsertMultipartUpload(ctx context.Context, bucket, key string, ec object.EncryptionKey, mimeType string, metadata api.ObjectUserMetadata) (string, error) { diff --git a/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql b/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql new file mode 100644 index 000000000..55ad7912d --- /dev/null +++ b/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql @@ -0,0 +1,52 @@ +ALTER TABLE `contracts` ADD COLUMN archival_reason text NOT NULL DEFAULT ''; +CREATE INDEX `idx_contracts_archival_reason` ON `contracts`(`archival_reason`); + +ALTER TABLE `contracts` ADD COLUMN renewed_to blob; +CREATE INDEX `idx_contracts_renewed_to` ON `contracts`(`renewed_to`); + +INSERT INTO `contracts` ( +created_at, +fcid, +renewed_from, +renewed_to, +contract_price, +state, +total_cost, +proof_height, +revision_height, +revision_number, +size, +start_height, +window_start, +window_end, +upload_spending, +download_spending, +fund_account_spending, +delete_spending, +list_spending, +host_id, +archival_reason +) SELECT +ac.created_at, +ac.fcid, +ac.renewed_from, +ac.renewed_to, +ac.contract_price, +ac.state, +ac.total_cost, +ac.proof_height, +ac.revision_height, +ac.revision_number, +ac.size, +ac.start_height, +ac.window_start, +ac.window_end, +ac.upload_spending, +ac.download_spending, +ac.fund_account_spending, +ac.delete_spending, +ac.list_spending, +h.id, +ac.reason +FROM `archived_contracts` ac INNER JOIN hosts h ON ac.host = h.public_key ; +DROP TABLE `archived_contracts`; diff --git a/stores/sql/sqlite/migrations/main/schema.sql b/stores/sql/sqlite/migrations/main/schema.sql index 6d8d0ee6c..22784725c 100644 --- a/stores/sql/sqlite/migrations/main/schema.sql +++ b/stores/sql/sqlite/migrations/main/schema.sql @@ -1,16 +1,3 @@ --- dbArchivedContract -CREATE TABLE `archived_contracts` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at` datetime,`fcid` blob NOT NULL UNIQUE,`renewed_from` blob,`contract_price` text,`state` integer NOT NULL DEFAULT 0,`total_cost` text,`proof_height` integer DEFAULT 0,`revision_height` integer DEFAULT 0,`revision_number` text NOT NULL DEFAULT "0",`size` integer,`start_height` integer NOT NULL,`window_start` integer NOT NULL DEFAULT 0,`window_end` integer NOT NULL DEFAULT 0,`upload_spending` text,`download_spending` text,`fund_account_spending` text,`delete_spending` text,`list_spending` text,`renewed_to` blob,`host` blob NOT NULL,`reason` text); -CREATE INDEX `idx_archived_contracts_start_height` ON `archived_contracts`(`start_height`); -CREATE INDEX `idx_archived_contracts_revision_height` ON `archived_contracts`(`revision_height`); -CREATE INDEX `idx_archived_contracts_proof_height` ON `archived_contracts`(`proof_height`); -CREATE INDEX `idx_archived_contracts_fc_id` ON `archived_contracts`(`fcid`); -CREATE INDEX `idx_archived_contracts_host` ON `archived_contracts`(`host`); -CREATE INDEX `idx_archived_contracts_renewed_to` ON `archived_contracts`(`renewed_to`); -CREATE INDEX `idx_archived_contracts_window_end` ON `archived_contracts`(`window_end`); -CREATE INDEX `idx_archived_contracts_window_start` ON `archived_contracts`(`window_start`); -CREATE INDEX `idx_archived_contracts_state` ON `archived_contracts`(`state`); -CREATE INDEX `idx_archived_contracts_renewed_from` ON `archived_contracts`(`renewed_from`); - -- dbHost CREATE TABLE `hosts` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at` datetime,`public_key` blob NOT NULL UNIQUE,`settings` text,`price_table` text,`price_table_expiry` datetime,`total_scans` integer,`last_scan` integer,`last_scan_success` numeric,`second_to_last_scan_success` numeric,`scanned` numeric,`uptime` integer,`downtime` integer,`recent_downtime` integer,`recent_scan_failures` integer,`successful_interactions` real,`failed_interactions` real,`lost_sectors` integer,`last_announcement` datetime,`net_address` text,`resolved_addresses` text NOT NULL DEFAULT ''); CREATE INDEX `idx_hosts_recent_scan_failures` ON `hosts`(`recent_scan_failures`); @@ -21,15 +8,17 @@ CREATE INDEX `idx_hosts_public_key` ON `hosts`(`public_key`); CREATE INDEX `idx_hosts_net_address` ON `hosts`(`net_address`); -- dbContract -CREATE TABLE `contracts` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at` datetime,`fcid` blob NOT NULL UNIQUE,`renewed_from` blob,`contract_price` text,`state` integer NOT NULL DEFAULT 0,`total_cost` text,`proof_height` integer DEFAULT 0,`revision_height` integer DEFAULT 0,`revision_number` text NOT NULL DEFAULT "0",`size` integer,`start_height` integer NOT NULL,`window_start` integer NOT NULL DEFAULT 0,`window_end` integer NOT NULL DEFAULT 0,`upload_spending` text,`download_spending` text,`fund_account_spending` text,`delete_spending` text,`list_spending` text,`host_id` integer,CONSTRAINT `fk_contracts_host` FOREIGN KEY (`host_id`) REFERENCES `hosts`(`id`)); +CREATE TABLE `contracts` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at` datetime,`fcid` blob NOT NULL UNIQUE,`renewed_from` blob,`renewed_to` blob,`contract_price` text,`state` integer NOT NULL DEFAULT 0,`total_cost` text,`proof_height` integer DEFAULT 0,`revision_height` integer DEFAULT 0,`revision_number` text NOT NULL DEFAULT "0",`size` integer,`start_height` integer NOT NULL,`window_start` integer NOT NULL DEFAULT 0,`window_end` integer NOT NULL DEFAULT 0,`upload_spending` text,`download_spending` text,`fund_account_spending` text,`delete_spending` text,`list_spending` text,`host_id` integer,`archival_reason` text NOT NULL DEFAULT "", CONSTRAINT `fk_contracts_host` FOREIGN KEY (`host_id`) REFERENCES `hosts`(`id`)); CREATE INDEX `idx_contracts_proof_height` ON `contracts`(`proof_height`); CREATE INDEX `idx_contracts_state` ON `contracts`(`state`); CREATE INDEX `idx_contracts_renewed_from` ON `contracts`(`renewed_from`); +CREATE INDEX `idx_contracts_renewed_to` ON `contracts`(`renewed_to`); CREATE INDEX `idx_contracts_host_id` ON `contracts`(`host_id`); CREATE INDEX `idx_contracts_window_end` ON `contracts`(`window_end`); CREATE INDEX `idx_contracts_window_start` ON `contracts`(`window_start`); CREATE INDEX `idx_contracts_revision_height` ON `contracts`(`revision_height`); CREATE INDEX `idx_contracts_start_height` ON `contracts`(`start_height`); +CREATE INDEX `idx_contracts_archival_reason` ON `contracts`(`archival_reason`); CREATE INDEX `idx_contracts_fc_id` ON `contracts`(`fcid`); -- dbContractSet diff --git a/stores/sql_test.go b/stores/sql_test.go index 0846254cb..439db7d9e 100644 --- a/stores/sql_test.go +++ b/stores/sql_test.go @@ -314,12 +314,12 @@ func (s *testSQLStore) addTestContracts(keys []types.PublicKey) (fcids []types.F } func (s *SQLStore) addTestContract(fcid types.FileContractID, hk types.PublicKey) (api.ContractMetadata, error) { - rev := testContractRevision(fcid, hk) + rev := newTestContract(fcid, hk) return s.AddContract(context.Background(), rev, types.ZeroCurrency, types.ZeroCurrency, 0, api.ContractStatePending) } func (s *SQLStore) addTestRenewedContract(fcid, renewedFrom types.FileContractID, hk types.PublicKey, startHeight uint64) (api.ContractMetadata, error) { - rev := testContractRevision(fcid, hk) + rev := newTestContract(fcid, hk) return s.AddRenewedContract(context.Background(), rev, types.ZeroCurrency, types.ZeroCurrency, startHeight, renewedFrom, api.ContractStatePending) } From 7c23b18a9907823370aeea56185f91789967fdc4 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 5 Sep 2024 09:38:44 +0200 Subject: [PATCH 045/708] readme: update --- README.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/README.md b/README.md index c20749935..c9ac7cfa0 100644 --- a/README.md +++ b/README.md @@ -54,10 +54,6 @@ overview of all settings configurable through the CLI. | `Log.Database.Level` | Logger level for database queries (info\|warn\|error). Defaults to 'warn' | `warn` | `--log.database.level` | `RENTERD_LOG_DATABASE_LEVEL`, `RENTERD_LOG_LEVEL` | `log.database.level` | | `Log.Database.IgnoreRecordNotFoundError` | Enable ignoring 'not found' errors resulting from database queries. Defaults to 'true' | `true` | `--log.database.ignoreRecordNotFoundError` | `RENTERD_LOG_DATABASE_IGNORE_RECORD_NOT_FOUND_ERROR` | `log.database.ignoreRecordNotFoundError` | | `Log.Database.SlowThreshold` | Threshold for slow queries in logger. Defaults to 100ms | `100ms` | `--log.database.slowThreshold` | `RENTERD_LOG_DATABASE_SLOW_THRESHOLD` | `log.database.slowThreshold` | -| `Log.Database.Level (DEPRECATED)` | Logger level | `warn` | `--db.logger.logLevel` | `RENTERD_DB_LOGGER_LOG_LEVEL` | `log.database.level` | -| `Log.Database.IgnoreRecordNotFoundError (DEPRECATED)` | Ignores 'not found' errors in logger | `true` | `--db.logger.ignoreNotFoundError`| `RENTERD_DB_LOGGER_IGNORE_NOT_FOUND_ERROR` | `log.ignoreRecordNotFoundError` | -| `Log.Database.SlowThreshold (DEPRECATED)` | Threshold for slow queries in logger | `100ms` | `--db.logger.slowThreshold` | `RENTERD_DB_LOGGER_SLOW_THRESHOLD` | `log.slowThreshold` | -| `Log.Path (DEPRECATED)` | Path to directory for logs | - | `--log-path` | `RENTERD_LOG_PATH` | `log.path` | | `Database.MySQL.URI` | Database URI for the bus | - | `--db.uri` | `RENTERD_DB_URI` | `database.mysql.uri` | | `Database.MySQL.User` | Database username for the bus | `renterd` | `--db.user` | `RENTERD_DB_USER` | `database.mysql.user` | | `Database.MySQL.Password` | Database password for the bus | - | - | `RENTERD_DB_PASSWORD` | `database.mysql.password` | @@ -70,7 +66,6 @@ overview of all settings configurable through the CLI. | `Bus.GatewayAddr` | Address for Sia peer connections | `:9981` | `--bus.gatewayAddr` | `RENTERD_BUS_GATEWAY_ADDR` | `bus.gatewayAddr` | | `Bus.RemoteAddr` | Remote address for the bus | - | - | `RENTERD_BUS_REMOTE_ADDR` | `bus.remoteAddr` | | `Bus.RemotePassword` | Remote password for the bus | - | - | `RENTERD_BUS_API_PASSWORD` | `bus.remotePassword` | -| `Bus.PersistInterval` | Interval for persisting consensus updates | `1m` | `--bus.persistInterval` | - | `bus.persistInterval` | | `Bus.UsedUTXOExpiry` | Expiry for used UTXOs in transactions | `24h` | `--bus.usedUTXOExpiry` | - | `bus.usedUtxoExpiry` | | `Bus.SlabBufferCompletionThreshold` | Threshold for slab buffer upload | `4096` | `--bus.slabBufferCompletionThreshold` | `RENTERD_BUS_SLAB_BUFFER_COMPLETION_THRESHOLD` | `bus.slabBufferCompletionThreshold` | | `Worker.AllowPrivateIPs` | Allows hosts with private IPs | - | `--worker.allowPrivateIPs` | - | `worker.allowPrivateIPs` | @@ -102,7 +97,6 @@ overview of all settings configurable through the CLI. | `S3.Enabled` | Enables/disables S3 API | `true` | `--s3.enabled` | `RENTERD_S3_ENABLED` | `s3.enabled` | | `S3.HostBucketBases` | Enables bucket rewriting in the router for the provided bases | - | `--s3.hostBucketBases` | `RENTERD_S3_HOST_BUCKET_BASES` | `s3.hostBucketBases` | | `S3.HostBucketEnabled` | Enables bucket rewriting in the router | - | `--s3.hostBucketEnabled` | `RENTERD_S3_HOST_BUCKET_ENABLED` | `s3.hostBucketEnabled` | -| `S3.KeypairsV4 (DEPRECATED)` | V4 keypairs for S3 | - | - | - | `s3.keypairsV4` | ### Single-Node Setup From a09f927b99c60ace5ed2390e1e3b384ed3d13108 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 5 Sep 2024 11:54:57 +0200 Subject: [PATCH 046/708] autopilot: remove /hosts route --- autopilot/autopilot.go | 43 -------- bus/bus.go | 2 +- bus/routes.go | 10 +- stores/hostdb.go | 14 ++- stores/hostdb_test.go | 210 ++++++++++++++++++++++++++++++++++---- stores/sql/database.go | 2 +- stores/sql/main.go | 40 ++++---- stores/sql/mysql/main.go | 4 +- stores/sql/sqlite/main.go | 4 +- 9 files changed, 235 insertions(+), 94 deletions(-) diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 52d24c696..966c7b93b 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -161,7 +161,6 @@ func (ap *Autopilot) Handler() http.Handler { "GET /config": ap.configHandlerGET, "PUT /config": ap.configHandlerPUT, "POST /config": ap.configHandlerPOST, - "POST /hosts": ap.hostsHandlerPOST, "GET /host/:hostKey": ap.hostHandlerGET, "GET /state": ap.stateHandlerGET, "POST /trigger": ap.triggerHandlerPOST, @@ -736,48 +735,6 @@ func (ap *Autopilot) hostHandlerGET(jc jape.Context) { jc.Encode(api.HostResponse{Host: hi}) } -func (ap *Autopilot) hostsHandlerPOST(jc jape.Context) { - var req api.HostsRequest - if jc.Decode(&req) != nil { - return - } else if req.AutopilotID != "" && req.AutopilotID != ap.id { - jc.Error(errors.New("invalid autopilot id"), http.StatusBadRequest) - return - } - - hosts, err := ap.bus.Hosts(jc.Request.Context(), api.HostOptions{ - AutopilotID: ap.id, - Offset: req.Offset, - Limit: req.Limit, - FilterMode: req.FilterMode, - UsabilityMode: req.UsabilityMode, - AddressContains: req.AddressContains, - KeyIn: req.KeyIn, - }) - if jc.Check("failed to get host info", err) != nil { - return - } - resps := make([]api.HostResponse, len(hosts)) - for i, host := range hosts { - if check, ok := host.Checks[ap.id]; ok { - resps[i] = api.HostResponse{ - Host: host, - Checks: &api.HostChecks{ - Gouging: check.Gouging.Gouging(), - GougingBreakdown: check.Gouging, - Score: check.Score.Score(), - ScoreBreakdown: check.Score, - Usable: check.Usability.IsUsable(), - UnusableReasons: check.Usability.UnusableReasons(), - }, - } - } else { - resps[i] = api.HostResponse{Host: host} - } - } - jc.Encode(resps) -} - func (ap *Autopilot) stateHandlerGET(jc jape.Context) { ap.mu.Lock() pruning, pLastStart := ap.pruning, ap.pruningLastStart // TODO: move to a 'pruner' type diff --git a/bus/bus.go b/bus/bus.go index c4b916a43..d8f156cc9 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -197,7 +197,7 @@ type ( Host(ctx context.Context, hostKey types.PublicKey) (api.Host, error) HostAllowlist(ctx context.Context) ([]types.PublicKey, error) HostBlocklist(ctx context.Context) ([]string, error) - Hosts(ctx context.Context, autopilotID, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) ([]api.Host, error) + Hosts(ctx context.Context, opts api.HostOptions) ([]api.Host, error) HostsForScanning(ctx context.Context, maxLastScan time.Time, offset, limit int) ([]api.HostAddress, error) RecordHostScans(ctx context.Context, scans []api.HostScan) error RecordPriceTables(ctx context.Context, priceTableUpdate []api.HostPriceTableUpdate) error diff --git a/bus/routes.go b/bus/routes.go index 3d9c32da3..50cfb23e0 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -632,7 +632,15 @@ func (b *Bus) hostsHandlerPOST(jc jape.Context) { req.Limit = -1 } - hosts, err := b.hs.Hosts(jc.Request.Context(), req.AutopilotID, req.FilterMode, req.UsabilityMode, req.AddressContains, req.KeyIn, req.Offset, req.Limit) + hosts, err := b.hs.Hosts(jc.Request.Context(), api.HostOptions{ + AutopilotID: req.AutopilotID, + FilterMode: req.FilterMode, + UsabilityMode: req.UsabilityMode, + AddressContains: req.AddressContains, + KeyIn: req.KeyIn, + Offset: req.Offset, + Limit: req.Limit, + }) if jc.Check(fmt.Sprintf("couldn't fetch hosts %d-%d", req.Offset, req.Offset+req.Limit), err) != nil { return } diff --git a/stores/hostdb.go b/stores/hostdb.go index 22f9ab9f3..1df6a30d6 100644 --- a/stores/hostdb.go +++ b/stores/hostdb.go @@ -17,7 +17,15 @@ var ( // Host returns information about a host. func (s *SQLStore) Host(ctx context.Context, hostKey types.PublicKey) (api.Host, error) { - hosts, err := s.Hosts(ctx, "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", []types.PublicKey{hostKey}, 0, 1) + hosts, err := s.Hosts(ctx, api.HostOptions{ + AutopilotID: "", + AddressContains: "", + FilterMode: api.HostFilterModeAll, + UsabilityMode: api.UsabilityFilterModeAll, + KeyIn: []types.PublicKey{hostKey}, + Offset: 0, + Limit: 1, + }) if err != nil { return api.Host{}, err } else if len(hosts) == 0 { @@ -48,10 +56,10 @@ func (s *SQLStore) ResetLostSectors(ctx context.Context, hk types.PublicKey) err }) } -func (s *SQLStore) Hosts(ctx context.Context, autopilotID, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) ([]api.Host, error) { +func (s *SQLStore) Hosts(ctx context.Context, opts api.HostOptions) ([]api.Host, error) { var hosts []api.Host err := s.db.Transaction(ctx, func(tx sql.DatabaseTx) (err error) { - hosts, err = tx.Hosts(ctx, autopilotID, filterMode, usabilityMode, addressContains, keyIn, offset, limit) + hosts, err = tx.Hosts(ctx, opts) return }) return hosts, err diff --git a/stores/hostdb_test.go b/stores/hostdb_test.go index c62d67adc..fdcd68327 100644 --- a/stores/hostdb_test.go +++ b/stores/hostdb_test.go @@ -38,7 +38,15 @@ func TestSQLHostDB(t *testing.T) { } // Assert it's returned - allHosts, err := ss.Hosts(ctx, "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 0, -1) + allHosts, err := ss.Hosts(ctx, api.HostOptions{ + AutopilotID: "", + FilterMode: api.HostFilterModeAll, + UsabilityMode: api.UsabilityFilterModeAll, + AddressContains: "", + KeyIn: nil, + Offset: 0, + Limit: -1, + }) if err != nil { t.Fatal(err) } @@ -63,7 +71,15 @@ func TestSQLHostDB(t *testing.T) { } // Same thing again but with hosts. - hosts, err := ss.Hosts(ctx, "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 0, -1) + hosts, err := ss.Hosts(ctx, api.HostOptions{ + AutopilotID: "", + FilterMode: api.HostFilterModeAll, + UsabilityMode: api.UsabilityFilterModeAll, + AddressContains: "", + KeyIn: nil, + Offset: 0, + Limit: -1, + }) if err != nil { t.Fatal(err) } @@ -123,7 +139,15 @@ func TestHosts(t *testing.T) { hk1, hk2, hk3 := hks[0], hks[1], hks[2] // search all hosts - his, err := ss.Hosts(context.Background(), "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 0, -1) + his, err := ss.Hosts(context.Background(), api.HostOptions{ + AutopilotID: "", + FilterMode: api.HostFilterModeAll, + UsabilityMode: api.UsabilityFilterModeAll, + AddressContains: "", + KeyIn: nil, + Offset: 0, + Limit: -1, + }) if err != nil { t.Fatal(err) } else if len(his) != 3 { @@ -131,19 +155,43 @@ func TestHosts(t *testing.T) { } // assert offset & limit are taken into account - his, err = ss.Hosts(context.Background(), "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 0, 1) + his, err = ss.Hosts(context.Background(), api.HostOptions{ + AutopilotID: "", + FilterMode: api.HostFilterModeAll, + UsabilityMode: api.UsabilityFilterModeAll, + AddressContains: "", + KeyIn: nil, + Offset: 0, + Limit: 1, + }) if err != nil { t.Fatal(err) } else if len(his) != 1 { t.Fatal("unexpected") } - his, err = ss.Hosts(context.Background(), "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 1, 2) + his, err = ss.Hosts(context.Background(), api.HostOptions{ + AutopilotID: "", + FilterMode: api.HostFilterModeAll, + UsabilityMode: api.UsabilityFilterModeAll, + AddressContains: "", + KeyIn: nil, + Offset: 1, + Limit: 2, + }) if err != nil { t.Fatal(err) } else if len(his) != 2 { t.Fatal("unexpected") } - his, err = ss.Hosts(context.Background(), "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 3, 1) + his, err = ss.Hosts(context.Background(), api.HostOptions{ + AutopilotID: "", + FilterMode: api.HostFilterModeAll, + UsabilityMode: api.UsabilityFilterModeAll, + AddressContains: "", + KeyIn: nil, + Offset: 3, + Limit: 1, + }) if err != nil { t.Fatal(err) } else if len(his) != 0 { @@ -151,16 +199,48 @@ func TestHosts(t *testing.T) { } // assert address and key filters are taken into account - if hosts, err := ss.Hosts(ctx, "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "com:1001", nil, 0, -1); err != nil || len(hosts) != 1 { + if hosts, err := ss.Hosts(ctx, api.HostOptions{ + AutopilotID: "", + FilterMode: api.HostFilterModeAll, + UsabilityMode: api.UsabilityFilterModeAll, + AddressContains: "com:1001", + KeyIn: nil, + Offset: 0, + Limit: -1, + }); err != nil || len(hosts) != 1 { t.Fatal("unexpected", len(hosts), err) } - if hosts, err := ss.Hosts(ctx, "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", []types.PublicKey{hk2, hk3}, 0, -1); err != nil || len(hosts) != 2 { + if hosts, err := ss.Hosts(ctx, api.HostOptions{ + AutopilotID: "", + FilterMode: api.HostFilterModeAll, + UsabilityMode: api.UsabilityFilterModeAll, + AddressContains: "", + KeyIn: []types.PublicKey{hk2, hk3}, + Offset: 0, + Limit: -1, + }); err != nil || len(hosts) != 2 { t.Fatal("unexpected", len(hosts), err) } - if hosts, err := ss.Hosts(ctx, "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "com:1002", []types.PublicKey{hk2, hk3}, 0, -1); err != nil || len(hosts) != 1 { + if hosts, err := ss.Hosts(ctx, api.HostOptions{ + AutopilotID: "", + FilterMode: api.HostFilterModeAll, + UsabilityMode: api.UsabilityFilterModeAll, + AddressContains: "com:1002", + KeyIn: []types.PublicKey{hk2, hk3}, + Offset: 0, + Limit: -1, + }); err != nil || len(hosts) != 1 { t.Fatal("unexpected", len(hosts), err) } - if hosts, err := ss.Hosts(ctx, "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "com:1002", []types.PublicKey{hk1}, 0, -1); err != nil || len(hosts) != 0 { + if hosts, err := ss.Hosts(ctx, api.HostOptions{ + AutopilotID: "", + FilterMode: api.HostFilterModeAll, + UsabilityMode: api.UsabilityFilterModeAll, + AddressContains: "com:1002", + KeyIn: []types.PublicKey{hk1}, + Offset: 0, + Limit: -1, + }); err != nil || len(hosts) != 0 { t.Fatal("unexpected", len(hosts), err) } @@ -169,7 +249,15 @@ func TestHosts(t *testing.T) { if err != nil { t.Fatal(err) } - his, err = ss.Hosts(context.Background(), "", api.HostFilterModeAllowed, api.UsabilityFilterModeAll, "", nil, 0, -1) + his, err = ss.Hosts(context.Background(), api.HostOptions{ + AutopilotID: "", + FilterMode: api.HostFilterModeAllowed, + UsabilityMode: api.UsabilityFilterModeAll, + AddressContains: "", + KeyIn: nil, + Offset: 0, + Limit: -1, + }) if err != nil { t.Fatal(err) } else if len(his) != 2 { @@ -177,7 +265,15 @@ func TestHosts(t *testing.T) { } else if his[0].PublicKey != (types.PublicKey{2}) || his[1].PublicKey != (types.PublicKey{3}) { t.Fatal("unexpected", his[0].PublicKey, his[1].PublicKey) } - his, err = ss.Hosts(context.Background(), "", api.HostFilterModeBlocked, api.UsabilityFilterModeAll, "", nil, 0, -1) + his, err = ss.Hosts(context.Background(), api.HostOptions{ + AutopilotID: "", + FilterMode: api.HostFilterModeBlocked, + UsabilityMode: api.UsabilityFilterModeAll, + AddressContains: "", + KeyIn: nil, + Offset: 0, + Limit: -1, + }) if err != nil { t.Fatal(err) } else if len(his) != 1 { @@ -232,7 +328,15 @@ func TestHosts(t *testing.T) { } // fetch all hosts - his, err = ss.Hosts(context.Background(), "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 0, -1) + his, err = ss.Hosts(context.Background(), api.HostOptions{ + AutopilotID: "", + FilterMode: api.HostFilterModeAll, + UsabilityMode: api.UsabilityFilterModeAll, + AddressContains: "", + KeyIn: nil, + Offset: 0, + Limit: -1, + }) if err != nil { t.Fatal(err) } else if len(his) != 3 { @@ -249,7 +353,15 @@ func TestHosts(t *testing.T) { } // assert autopilot filter is taken into account - his, err = ss.Hosts(context.Background(), ap1, api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 0, -1) + his, err = ss.Hosts(context.Background(), api.HostOptions{ + AutopilotID: ap1, + FilterMode: api.HostFilterModeAll, + UsabilityMode: api.UsabilityFilterModeAll, + AddressContains: "", + KeyIn: nil, + Offset: 0, + Limit: -1, + }) if err != nil { t.Fatal(err) } else if len(his) != 3 { @@ -271,7 +383,15 @@ func TestHosts(t *testing.T) { if err != nil { t.Fatal(err) } - his, err = ss.Hosts(context.Background(), ap1, api.HostFilterModeAll, api.UsabilityFilterModeUsable, "", nil, 0, -1) + his, err = ss.Hosts(context.Background(), api.HostOptions{ + AutopilotID: ap1, + FilterMode: api.HostFilterModeAll, + UsabilityMode: api.UsabilityFilterModeUsable, + AddressContains: "", + KeyIn: nil, + Offset: 0, + Limit: -1, + }) if err != nil { t.Fatal(err) } else if len(his) != 1 { @@ -283,7 +403,15 @@ func TestHosts(t *testing.T) { t.Fatal("unexpected", c1, ok) } - his, err = ss.Hosts(context.Background(), ap1, api.HostFilterModeAll, api.UsabilityFilterModeUnusable, "", nil, 0, -1) + his, err = ss.Hosts(context.Background(), api.HostOptions{ + AutopilotID: ap1, + FilterMode: api.HostFilterModeAll, + UsabilityMode: api.UsabilityFilterModeUnusable, + AddressContains: "", + KeyIn: nil, + Offset: 0, + Limit: -1, + }) if err != nil { t.Fatal(err) } else if len(his) != 1 { @@ -599,7 +727,15 @@ func TestSQLHostAllowlist(t *testing.T) { numHosts := func() int { t.Helper() - hosts, err := ss.Hosts(ctx, "", api.HostFilterModeAllowed, api.UsabilityFilterModeAll, "", nil, 0, -1) + hosts, err := ss.Hosts(ctx, api.HostOptions{ + AutopilotID: "", + FilterMode: api.HostFilterModeAllowed, + UsabilityMode: api.UsabilityFilterModeAll, + AddressContains: "", + KeyIn: nil, + Offset: 0, + Limit: -1, + }) if err != nil { t.Fatal(err) } @@ -679,21 +815,45 @@ func TestSQLHostAllowlist(t *testing.T) { assertHosts := func(total, allowed, blocked int) error { t.Helper() - hosts, err := ss.Hosts(context.Background(), "", api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 0, -1) + hosts, err := ss.Hosts(context.Background(), api.HostOptions{ + AutopilotID: "", + FilterMode: api.HostFilterModeAll, + UsabilityMode: api.UsabilityFilterModeAll, + AddressContains: "", + KeyIn: nil, + Offset: 0, + Limit: -1, + }) if err != nil { return err } if len(hosts) != total { return fmt.Errorf("invalid number of hosts: %v", len(hosts)) } - hosts, err = ss.Hosts(context.Background(), "", api.HostFilterModeAllowed, api.UsabilityFilterModeAll, "", nil, 0, -1) + hosts, err = ss.Hosts(context.Background(), api.HostOptions{ + AutopilotID: "", + FilterMode: api.HostFilterModeAllowed, + UsabilityMode: api.UsabilityFilterModeAll, + AddressContains: "", + KeyIn: nil, + Offset: 0, + Limit: -1, + }) if err != nil { return err } if len(hosts) != allowed { return fmt.Errorf("invalid number of hosts: %v", len(hosts)) } - hosts, err = ss.Hosts(context.Background(), "", api.HostFilterModeBlocked, api.UsabilityFilterModeAll, "", nil, 0, -1) + hosts, err = ss.Hosts(context.Background(), api.HostOptions{ + AutopilotID: "", + FilterMode: api.HostFilterModeBlocked, + UsabilityMode: api.UsabilityFilterModeAll, + AddressContains: "", + KeyIn: nil, + Offset: 0, + Limit: -1, + }) if err != nil { return err } @@ -767,7 +927,15 @@ func TestSQLHostBlocklist(t *testing.T) { numHosts := func() int { t.Helper() - hosts, err := ss.Hosts(ctx, "", api.HostFilterModeAllowed, api.UsabilityFilterModeAll, "", nil, 0, -1) + hosts, err := ss.Hosts(ctx, api.HostOptions{ + AutopilotID: "", + FilterMode: api.HostFilterModeAllowed, + UsabilityMode: api.UsabilityFilterModeAll, + AddressContains: "", + KeyIn: nil, + Offset: 0, + Limit: -1, + }) if err != nil { t.Fatal(err) } diff --git a/stores/sql/database.go b/stores/sql/database.go index 0dc72b32f..22e767388 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -186,7 +186,7 @@ type ( InsertObject(ctx context.Context, bucket, key, contractSet string, dirID int64, o object.Object, mimeType, eTag string, md api.ObjectUserMetadata) error // Hosts returns a list of hosts that match the provided filters - Hosts(ctx context.Context, autopilotID, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) ([]api.Host, error) + Hosts(ctx context.Context, opts api.HostOptions) ([]api.Host, error) // HostsForScanning returns a list of hosts to scan which haven't been // scanned since at least maxLastScan. diff --git a/stores/sql/main.go b/stores/sql/main.go index 6d4a82a75..60d4bf3d7 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -662,8 +662,8 @@ func HostBlocklist(ctx context.Context, tx sql.Tx) ([]string, error) { return blocklist, nil } -func Hosts(ctx context.Context, tx sql.Tx, autopilot, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) ([]api.Host, error) { - if offset < 0 { +func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, error) { + if opts.Offset < 0 { return nil, ErrNegativeOffset } @@ -675,12 +675,12 @@ func Hosts(ctx context.Context, tx sql.Tx, autopilot, filterMode, usabilityMode, } // validate filterMode - switch filterMode { + switch opts.FilterMode { case api.HostFilterModeAllowed: case api.HostFilterModeBlocked: case api.HostFilterModeAll: default: - return nil, fmt.Errorf("invalid filter mode: %v", filterMode) + return nil, fmt.Errorf("invalid filter mode: %v", opts.FilterMode) } var whereExprs []string @@ -688,8 +688,8 @@ func Hosts(ctx context.Context, tx sql.Tx, autopilot, filterMode, usabilityMode, // fetch autopilot id var autopilotID int64 - if autopilot != "" { - if err := tx.QueryRow(ctx, "SELECT id FROM autopilots WHERE identifier = ?", autopilot). + if opts.AutopilotID != "" { + if err := tx.QueryRow(ctx, "SELECT id FROM autopilots WHERE identifier = ?", opts.AutopilotID). Scan(&autopilotID); errors.Is(err, dsql.ErrNoRows) { return nil, api.ErrAutopilotNotFound } else if err != nil { @@ -698,7 +698,7 @@ func Hosts(ctx context.Context, tx sql.Tx, autopilot, filterMode, usabilityMode, } // filter allowlist/blocklist - switch filterMode { + switch opts.FilterMode { case api.HostFilterModeAllowed: if hasAllowlist { whereExprs = append(whereExprs, "EXISTS (SELECT 1 FROM host_allowlist_entry_hosts hbeh WHERE hbeh.db_host_id = h.id)") @@ -721,28 +721,28 @@ func Hosts(ctx context.Context, tx sql.Tx, autopilot, filterMode, usabilityMode, } // filter address - if addressContains != "" { + if opts.AddressContains != "" { whereExprs = append(whereExprs, "h.net_address LIKE ?") - args = append(args, "%"+addressContains+"%") + args = append(args, "%"+opts.AddressContains+"%") } // filter public key - if len(keyIn) > 0 { - pubKeys := make([]any, len(keyIn)) - for i, pk := range keyIn { + if len(opts.KeyIn) > 0 { + pubKeys := make([]any, len(opts.KeyIn)) + for i, pk := range opts.KeyIn { pubKeys[i] = PublicKey(pk) } - placeholders := strings.Repeat("?, ", len(keyIn)-1) + "?" + placeholders := strings.Repeat("?, ", len(opts.KeyIn)-1) + "?" whereExprs = append(whereExprs, fmt.Sprintf("h.public_key IN (%s)", placeholders)) args = append(args, pubKeys...) } // filter usability whereApExpr := "" - if autopilot != "" { + if opts.AutopilotID != "" { whereApExpr = "AND hc.db_autopilot_id = ?" } - switch usabilityMode { + switch opts.UsabilityMode { case api.UsabilityFilterModeUsable: whereExprs = append(whereExprs, fmt.Sprintf("EXISTS (SELECT 1 FROM hosts h2 INNER JOIN host_checks hc ON hc.db_host_id = h2.id AND h2.id = h.id WHERE (hc.usability_blocked = 0 AND hc.usability_offline = 0 AND hc.usability_low_score = 0 AND hc.usability_redundant_ip = 0 AND hc.usability_gouging = 0 AND hc.usability_not_accepting_contracts = 0 AND hc.usability_not_announced = 0 AND hc.usability_not_completing_scan = 0) %s)", whereApExpr)) args = append(args, autopilotID) @@ -752,10 +752,10 @@ func Hosts(ctx context.Context, tx sql.Tx, autopilot, filterMode, usabilityMode, } // offset + limit - if limit == -1 { - limit = math.MaxInt64 + if opts.Limit == -1 { + opts.Limit = math.MaxInt64 } - offsetLimitStr := fmt.Sprintf("LIMIT %d OFFSET %d", limit, offset) + offsetLimitStr := fmt.Sprintf("LIMIT %d OFFSET %d", opts.Limit, opts.Offset) // fetch stored data for each host rows, err := tx.Query(ctx, "SELECT host_id, SUM(size) FROM contracts GROUP BY host_id") @@ -837,9 +837,9 @@ func Hosts(ctx context.Context, tx sql.Tx, autopilot, filterMode, usabilityMode, // query host checks var apExpr string - if autopilot != "" { + if opts.AutopilotID != "" { apExpr = "WHERE ap.identifier = ?" - args = append(args, autopilot) + args = append(args, opts.AutopilotID) } rows, err = tx.Query(ctx, fmt.Sprintf(` SELECT h.public_key, ap.identifier, hc.usability_blocked, hc.usability_offline, hc.usability_low_score, hc.usability_redundant_ip, diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index c6eb0bf7d..df9ce0b04 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -407,8 +407,8 @@ func (tx *MainDatabaseTx) HostBlocklist(ctx context.Context) ([]string, error) { return ssql.HostBlocklist(ctx, tx) } -func (tx *MainDatabaseTx) Hosts(ctx context.Context, autopilotID, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) ([]api.Host, error) { - return ssql.Hosts(ctx, tx, autopilotID, filterMode, usabilityMode, addressContains, keyIn, offset, limit) +func (tx *MainDatabaseTx) Hosts(ctx context.Context, opts api.HostOptions) ([]api.Host, error) { + return ssql.Hosts(ctx, tx, opts) } func (tx *MainDatabaseTx) HostsForScanning(ctx context.Context, maxLastScan time.Time, offset, limit int) ([]api.HostAddress, error) { diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index 5472d5de7..9ef185e2b 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -396,8 +396,8 @@ func (tx *MainDatabaseTx) HostBlocklist(ctx context.Context) ([]string, error) { return ssql.HostBlocklist(ctx, tx) } -func (tx *MainDatabaseTx) Hosts(ctx context.Context, autopilotID, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) ([]api.Host, error) { - return ssql.Hosts(ctx, tx, autopilotID, filterMode, usabilityMode, addressContains, keyIn, offset, limit) +func (tx *MainDatabaseTx) Hosts(ctx context.Context, opts api.HostOptions) ([]api.Host, error) { + return ssql.Hosts(ctx, tx, opts) } func (tx *MainDatabaseTx) HostsForScanning(ctx context.Context, maxLastScan time.Time, offset, limit int) ([]api.HostAddress, error) { From 434e11f37341933db1e2b0f1b11663f653427d38 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 5 Sep 2024 13:12:58 +0200 Subject: [PATCH 047/708] autopilot: fix jape check --- autopilot/autopilot.go | 41 +++------------------ autopilot/client.go | 21 ----------- internal/test/e2e/cluster_test.go | 61 +++++++++++++++---------------- 3 files changed, 35 insertions(+), 88 deletions(-) diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 966c7b93b..f6db87b99 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -158,12 +158,11 @@ func (ap *Autopilot) Config(ctx context.Context) (api.Autopilot, error) { // Handler returns an HTTP handler that serves the autopilot api. func (ap *Autopilot) Handler() http.Handler { return jape.Mux(map[string]jape.Handler{ - "GET /config": ap.configHandlerGET, - "PUT /config": ap.configHandlerPUT, - "POST /config": ap.configHandlerPOST, - "GET /host/:hostKey": ap.hostHandlerGET, - "GET /state": ap.stateHandlerGET, - "POST /trigger": ap.triggerHandlerPOST, + "GET /config": ap.configHandlerGET, + "PUT /config": ap.configHandlerPUT, + "POST /config": ap.configHandlerPOST, + "GET /state": ap.stateHandlerGET, + "POST /trigger": ap.triggerHandlerPOST, }) } @@ -705,36 +704,6 @@ func (ap *Autopilot) triggerHandlerPOST(jc jape.Context) { }) } -func (ap *Autopilot) hostHandlerGET(jc jape.Context) { - var hk types.PublicKey - if jc.DecodeParam("hostKey", &hk) != nil { - return - } - - hi, err := ap.bus.Host(jc.Request.Context(), hk) - if jc.Check("failed to get host info", err) != nil { - return - } - - check, ok := hi.Checks[ap.id] - if ok { - jc.Encode(api.HostResponse{ - Host: hi, - Checks: &api.HostChecks{ - Gouging: check.Gouging.Gouging(), - GougingBreakdown: check.Gouging, - Score: check.Score.Score(), - ScoreBreakdown: check.Score, - Usable: check.Usability.IsUsable(), - UnusableReasons: check.Usability.UnusableReasons(), - }, - }) - return - } - - jc.Encode(api.HostResponse{Host: hi}) -} - func (ap *Autopilot) stateHandlerGET(jc jape.Context) { ap.mu.Lock() pruning, pLastStart := ap.pruning, ap.pruningLastStart // TODO: move to a 'pruner' type diff --git a/autopilot/client.go b/autopilot/client.go index 22ab93f36..05592662b 100644 --- a/autopilot/client.go +++ b/autopilot/client.go @@ -2,9 +2,7 @@ package autopilot import ( "context" - "fmt" - "go.sia.tech/core/types" "go.sia.tech/jape" "go.sia.tech/renterd/api" ) @@ -33,25 +31,6 @@ func (c *Client) UpdateConfig(cfg api.AutopilotConfig) error { return c.c.PUT("/config", cfg) } -// HostInfo returns information about the host with given host key. -func (c *Client) HostInfo(hostKey types.PublicKey) (resp api.HostResponse, err error) { - err = c.c.GET(fmt.Sprintf("/host/%s", hostKey), &resp) - return -} - -// HostInfo returns information about all hosts. -func (c *Client) HostInfos(ctx context.Context, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) (resp []api.HostResponse, err error) { - err = c.c.POST("/hosts", api.HostsRequest{ - Offset: offset, - Limit: limit, - FilterMode: filterMode, - UsabilityMode: usabilityMode, - AddressContains: addressContains, - KeyIn: keyIn, - }, &resp) - return -} - // State returns the current state of the autopilot. func (c *Client) State() (state api.AutopilotStateResponse, err error) { err = c.c.GET("/state", &state) diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index d6c5ed0bc..00450116a 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -295,64 +295,63 @@ func TestNewTestCluster(t *testing.T) { hosts, err := cluster.Bus.Hosts(context.Background(), api.HostOptions{}) tt.OK(err) for _, host := range hosts { - hi, err := cluster.Autopilot.HostInfo(host.PublicKey) + hi, err := cluster.Bus.Host(context.Background(), host.PublicKey) if err != nil { t.Fatal(err) - } - if hi.Checks.ScoreBreakdown.Score() == 0 { - js, _ := json.MarshalIndent(hi.Checks.ScoreBreakdown, "", " ") + } else if checks := hi.Checks[testApCfg().ID]; checks == (api.HostCheck{}) { + t.Fatal("host check not found") + } else if checks.Score.Score() == 0 { + js, _ := json.MarshalIndent(checks.Score, "", " ") t.Fatalf("score shouldn't be 0 because that means one of the fields was 0: %s", string(js)) - } - if hi.Checks.Score == 0 { - t.Fatal("score shouldn't be 0") - } - if !hi.Checks.Usable { + } else if !checks.Usability.IsUsable() { t.Fatal("host should be usable") - } - if len(hi.Checks.UnusableReasons) != 0 { + } else if len(checks.Usability.UnusableReasons()) != 0 { t.Fatal("usable hosts don't have any reasons set") - } - if reflect.DeepEqual(hi.Host, api.Host{}) { + } else if reflect.DeepEqual(hi, api.Host{}) { t.Fatal("host wasn't set") - } - if hi.Host.Settings.Release == "" { + } else if hi.Settings.Release == "" { t.Fatal("release should be set") } } - hostInfos, err := cluster.Autopilot.HostInfos(context.Background(), api.HostFilterModeAll, api.UsabilityFilterModeAll, "", nil, 0, -1) + hostInfos, err := cluster.Bus.Hosts(context.Background(), api.HostOptions{ + FilterMode: api.HostFilterModeAll, + UsabilityMode: api.UsabilityFilterModeAll, + }) tt.OK(err) allHosts := make(map[types.PublicKey]struct{}) for _, hi := range hostInfos { - if hi.Checks.ScoreBreakdown.Score() == 0 { - js, _ := json.MarshalIndent(hi.Checks.ScoreBreakdown, "", " ") + if checks := hi.Checks[testApCfg().ID]; checks == (api.HostCheck{}) { + t.Fatal("host check not found") + } else if checks.Score.Score() == 0 { + js, _ := json.MarshalIndent(checks.Score, "", " ") t.Fatalf("score shouldn't be 0 because that means one of the fields was 0: %s", string(js)) - } - if hi.Checks.Score == 0 { - t.Fatal("score shouldn't be 0") - } - if !hi.Checks.Usable { + } else if !checks.Usability.IsUsable() { t.Fatal("host should be usable") - } - if len(hi.Checks.UnusableReasons) != 0 { + } else if len(checks.Usability.UnusableReasons()) != 0 { t.Fatal("usable hosts don't have any reasons set") - } - if reflect.DeepEqual(hi.Host, api.Host{}) { + } else if reflect.DeepEqual(hi, api.Host{}) { t.Fatal("host wasn't set") } - allHosts[hi.Host.PublicKey] = struct{}{} + allHosts[hi.PublicKey] = struct{}{} } - hostInfosUnusable, err := cluster.Autopilot.HostInfos(context.Background(), api.HostFilterModeAll, api.UsabilityFilterModeUnusable, "", nil, 0, -1) + hostInfosUnusable, err := cluster.Bus.Hosts(context.Background(), api.HostOptions{ + FilterMode: api.UsabilityFilterModeAll, + UsabilityMode: api.UsabilityFilterModeUnusable, + }) tt.OK(err) if len(hostInfosUnusable) != 0 { t.Fatal("there should be no unusable hosts", len(hostInfosUnusable)) } - hostInfosUsable, err := cluster.Autopilot.HostInfos(context.Background(), api.HostFilterModeAll, api.UsabilityFilterModeUsable, "", nil, 0, -1) + hostInfosUsable, err := cluster.Bus.Hosts(context.Background(), api.HostOptions{ + FilterMode: api.UsabilityFilterModeAll, + UsabilityMode: api.UsabilityFilterModeUsable, + }) tt.OK(err) for _, hI := range hostInfosUsable { - delete(allHosts, hI.Host.PublicKey) + delete(allHosts, hI.PublicKey) } if len(hostInfosUsable) != len(hostInfos) || len(allHosts) != 0 { t.Fatalf("result for 'usable' should match the result for 'all', \n\nall: %+v \n\nusable: %+v", hostInfos, hostInfosUsable) From b7f2f7d8b7c3042de9985eca4a92718fbb377a43 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 5 Sep 2024 13:26:24 +0200 Subject: [PATCH 048/708] stores: remove FK between contracts and hosts --- stores/bench_test.go | 15 +- stores/sql/main.go | 159 +++++++------- .../migration_00017_archived_contracts.sql | 194 +++++++++++++----- stores/sql/mysql/migrations/main/schema.sql | 34 +-- stores/sql/rows.go | 40 ++-- .../migration_00017_archived_contracts.sql | 186 ++++++++++++----- stores/sql/sqlite/migrations/main/schema.sql | 14 +- stores/sql/types.go | 4 + 8 files changed, 410 insertions(+), 236 deletions(-) diff --git a/stores/bench_test.go b/stores/bench_test.go index 60f75b52f..4a28f7c99 100644 --- a/stores/bench_test.go +++ b/stores/bench_test.go @@ -66,21 +66,10 @@ func BenchmarkPrunableContractRoots(b *testing.B) { } func prepareDB(db *isql.DB, fcid types.FileContractID, n int) (roots []types.Hash256, _ error) { - // insert host + // insert contract hk := types.PublicKey{1} res, err := db.Exec(context.Background(), ` -INSERT INTO hosts (public_key) VALUES (?)`, sql.PublicKey(hk)) - if err != nil { - return nil, err - } - hostID, err := res.LastInsertId() - if err != nil { - return nil, err - } - - // insert contract - res, err = db.Exec(context.Background(), ` -INSERT INTO contracts (host_id, fcid,start_height) VALUES (?, ?, ?)`, hostID, sql.FileContractID(fcid), 0) +INSERT INTO contracts (fcid, host_key, start_height) VALUES (?, ?, ?)`, sql.PublicKey(hk), sql.FileContractID(fcid), 0) if err != nil { return nil, err } diff --git a/stores/sql/main.go b/stores/sql/main.go index ebec351b6..95e95c316 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -138,7 +138,7 @@ func AncestorContracts(ctx context.Context, tx sql.Tx, fcid types.FileContractID proof_height, revision_height, revision_number, size, start_height, state, window_start, window_end, COALESCE(h.net_address, ''), contract_price, renewed_from, total_cost, archival_reason FROM ancestors - LEFT JOIN hosts h ON h.id = ancestors.host_id + LEFT JOIN hosts h ON h.public_key = ancestors.host_key WHERE start_height >= ? `, FileContractID(fcid), startHeight) if err != nil { @@ -166,12 +166,7 @@ func AncestorContracts(ctx context.Context, tx sql.Tx, fcid types.FileContractID } func ArchiveContract(ctx context.Context, tx sql.Tx, fcid types.FileContractID, reason string) error { - var id int64 - err := tx.QueryRow(ctx, "SELECT id FROM contracts WHERE fcid = ?", FileContractID(fcid)).Scan(&id) - if err != nil { - return fmt.Errorf("failed to fetch contract id: %w", err) - } - + // archive contract res, err := tx.Exec(ctx, "UPDATE contracts SET archival_reason = ? WHERE fcid = ?", reason, FileContractID(fcid)) if err != nil { return fmt.Errorf("failed to archive contract: %w", err) @@ -181,7 +176,8 @@ func ArchiveContract(ctx context.Context, tx sql.Tx, fcid types.FileContractID, return fmt.Errorf("expected to update 1 row, updated %d", n) } - _, err = tx.Exec(ctx, "DELETE FROM contract_sectors WHERE db_contract_id = ?", id) + // delete its sectors + _, err = tx.Exec(ctx, "DELETE FROM contract_sectors WHERE db_contract_id IN (SELECT id FROM contracts WHERE fcid = ?)", FileContractID(fcid)) if err != nil { return fmt.Errorf("failed to delete contract_sectors: %w", err) } @@ -306,7 +302,7 @@ func ContractSets(ctx context.Context, tx sql.Tx) ([]string, error) { func ContractSize(ctx context.Context, tx sql.Tx, id types.FileContractID) (api.ContractSize, error) { var contractID, size uint64 - if err := tx.QueryRow(ctx, "SELECT id, size FROM contracts WHERE fcid = ?", FileContractID(id)). + if err := tx.QueryRow(ctx, "SELECT id, size FROM contracts WHERE fcid = ? AND archival_reason = ''", FileContractID(id)). Scan(&contractID, &size); errors.Is(err, dsql.ErrNoRows) { return api.ContractSize{}, api.ErrContractNotFound } else if err != nil { @@ -339,7 +335,7 @@ func ContractSizes(ctx context.Context, tx sql.Tx) (map[types.FileContractID]api rows, err := tx.Query(ctx, ` SELECT c.fcid, c.size, c.size FROM contracts c - WHERE archival_reason == '' AND NOT EXISTS ( + WHERE archival_reason = '' AND NOT EXISTS ( SELECT 1 FROM contract_sectors cs WHERE cs.db_contract_id = c.id @@ -350,7 +346,7 @@ func ContractSizes(ctx context.Context, tx sql.Tx) (map[types.FileContractID]api SELECT c.fcid, c.size, MAX(c.size) as contract_size, COUNT(*) * ? as sector_size FROM contracts c INNER JOIN contract_sectors cs ON cs.db_contract_id = c.id - WHERE archival_reason == '' + WHERE archival_reason = '' GROUP BY c.fcid ) i `, rhpv2.SectorSize) @@ -487,12 +483,11 @@ func DeleteHostSector(ctx context.Context, tx sql.Tx, hk types.PublicKey, root t UPDATE sectors SET latest_host = COALESCE(( SELECT * FROM ( - SELECT h.public_key - FROM hosts h - INNER JOIN contracts c ON c.host_id = h.id + SELECT c.host_key + FROM contracts c INNER JOIN contract_sectors cs ON cs.db_contract_id = c.id INNER JOIN sectors s ON s.id = cs.db_sector_id - WHERE s.root = ? AND h.public_key != ? + WHERE s.root = ? AND c.host_key != ? AND c.archival_reason = '' LIMIT 1 ) AS _ ), ?) @@ -512,8 +507,7 @@ func DeleteHostSector(ctx context.Context, tx sql.Tx, hk types.PublicKey, root t ) AND db_contract_id IN ( SELECT c.id FROM contracts c - INNER JOIN hosts h ON h.id = c.host_id - WHERE h.public_key = ? + WHERE c.host_key = ? ) `, Hash256(root), PublicKey(hk)) if err != nil { @@ -730,12 +724,15 @@ func InsertContract(ctx context.Context, tx sql.Tx, rev rhpv2.ContractRevision, } res, err := tx.Exec(ctx, ` - INSERT INTO contracts (created_at, host_id, fcid, renewed_from, renewed_to, contract_price, state, total_cost, proof_height, - revision_height, revision_number, size, start_height, window_start, window_end, upload_spending, download_spending, - fund_account_spending, delete_spending, list_spending) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - `, time.Now(), hostID, FileContractID(rev.ID()), FileContractID(types.FileContractID{}), FileContractID(types.FileContractID{}), Currency(contractPrice), - contractState, Currency(totalCost), 0, 0, "0", rev.Revision.Filesize, startHeight, rev.Revision.WindowStart, rev.Revision.WindowEnd, +INSERT INTO contracts ( + created_at, + fcid, host_key, proof_height, revision_height, revision_number, size, start_height, state, window_start, window_end, + contract_price, total_cost, + delete_spending, download_spending, fund_account_spending, list_spending,upload_spending +) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, + time.Now(), + FileContractID(rev.ID()), PublicKey(rev.HostKey()), 0, 0, "0", rev.Revision.Filesize, startHeight, contractState, rev.Revision.WindowStart, rev.Revision.WindowEnd, + Currency(contractPrice), Currency(totalCost), ZeroCurrency, ZeroCurrency, ZeroCurrency, ZeroCurrency, ZeroCurrency) if err != nil { return api.ContractMetadata{}, fmt.Errorf("failed to insert contract: %w", err) @@ -905,11 +902,11 @@ func PrepareSlabHealth(ctx context.Context, tx sql.Tx, limit int64, now time.Tim CREATE TEMPORARY TABLE slabs_health AS SELECT slabs.id as id, CASE WHEN (slabs.min_shards = slabs.total_shards) THEN - CASE WHEN (COUNT(DISTINCT(CASE WHEN cs.name IS NULL THEN NULL ELSE c.host_id END)) < slabs.min_shards) + CASE WHEN (COUNT(DISTINCT(CASE WHEN cs.name IS NULL THEN NULL ELSE c.host_key END)) < slabs.min_shards) THEN -1 ELSE 1 END - ELSE (CAST(COUNT(DISTINCT(CASE WHEN cs.name IS NULL THEN NULL ELSE c.host_id END)) AS FLOAT) - CAST(slabs.min_shards AS FLOAT)) / Cast(slabs.total_shards - slabs.min_shards AS FLOAT) + ELSE (CAST(COUNT(DISTINCT(CASE WHEN cs.name IS NULL THEN NULL ELSE c.host_key END)) AS FLOAT) - CAST(slabs.min_shards AS FLOAT)) / Cast(slabs.total_shards - slabs.min_shards AS FLOAT) END as health FROM slabs INNER JOIN sectors s ON s.db_slab_id = slabs.id @@ -1638,7 +1635,7 @@ func ObjectsStats(ctx context.Context, tx sql.Tx, opts api.ObjectsStatsOpts) (ap } var totalUploaded uint64 - err = tx.QueryRow(ctx, "SELECT COALESCE(SUM(size), 0) FROM contracts"). + err = tx.QueryRow(ctx, "SELECT COALESCE(SUM(size), 0) FROM contracts WHERE archival_reason = ''"). Scan(&totalUploaded) if err != nil { return api.ObjectsStatsResponse{}, fmt.Errorf("failed to fetch contract stats: %w", err) @@ -1830,13 +1827,12 @@ func RemoveContractSet(ctx context.Context, tx sql.Tx, contractSet string) error } func RemoveOfflineHosts(ctx context.Context, tx sql.Tx, minRecentFailures uint64, maxDownTime time.Duration) (int64, error) { - // fetch contracts + // fetch contracts belonging to offline hosts rows, err := tx.Query(ctx, ` - SELECT fcid - FROM contracts - INNER JOIN hosts h ON h.id = contracts.host_id - WHERE recent_downtime >= ? AND recent_scan_failures >= ? - `, maxDownTime, minRecentFailures) +SELECT fcid +FROM contracts c +INNER JOIN hosts h ON h.public_key = c.host_key +WHERE h.recent_downtime >= ? AND h.recent_scan_failures >= ?`, maxDownTime, minRecentFailures) if err != nil { return 0, fmt.Errorf("failed to fetch contracts: %w", err) } @@ -1851,7 +1847,7 @@ func RemoveOfflineHosts(ctx context.Context, tx sql.Tx, minRecentFailures uint64 fcids = append(fcids, types.FileContractID(fcid)) } - // archive contracts + // archive those contracts for _, fcid := range fcids { if err := ArchiveContract(ctx, tx, fcid, api.ContractArchivalReasonHostPruned); err != nil { return 0, fmt.Errorf("failed to archive contract %v: %w", fcid, err) @@ -1859,10 +1855,7 @@ func RemoveOfflineHosts(ctx context.Context, tx sql.Tx, minRecentFailures uint64 } // delete hosts - res, err := tx.Exec(ctx, ` -DELETE FROM hosts h -LEFT JOIN contracts c ON c.host_id = h.id -WHERE h.recent_downtime >= ? AND h.recent_scan_failures >= ? AND c.id IS NULL`, maxDownTime, minRecentFailures) + res, err := tx.Exec(ctx, `DELETE FROM hosts WHERE recent_downtime >= ? AND recent_scan_failures >= ?`, maxDownTime, minRecentFailures) if err != nil { return 0, fmt.Errorf("failed to delete hosts: %w", err) } @@ -1877,17 +1870,15 @@ func RenewContract(ctx context.Context, tx sql.Tx, rev rhpv2.ContractRevision, c // fetch existing contract var r ContractRow - err := tx.QueryRow(ctx, ` + err := r.Scan(tx.QueryRow(ctx, ` SELECT - c.created_at, c.fcid, c.renewed_from, - c.contract_price, c.state, c.total_cost, c.proof_height, c.revision_height, c.revision_number, c.size, c.start_height, c.window_start, c.window_end, - c.upload_spending, c.download_spending, c.fund_account_spending, c.delete_spending, c.list_spending, - c.host_id, c.archival_reason + c.created_at, c.fcid, c.host_key, + c.archival_reason, c.proof_height, c.renewed_from, c.renewed_to, c.revision_height, c.revision_number, c.size, c.start_height, c.state, c.window_start, c.window_end, + c.contract_price, c.total_cost, + c.delete_spending, c.download_spending, c.fund_account_spending, c.list_spending, c.upload_spending, + "", "", "" FROM contracts AS c -WHERE fcid = ?`, FileContractID(renewedFrom)).Scan(&r.CreatedAt, &r.FCID, &r.RenewedFrom, - &r.ContractPrice, &r.State, &r.TotalCost, &r.ProofHeight, &r.RevisionHeight, &r.RevisionNumber, &r.Size, &r.StartHeight, &r.WindowStart, &r.WindowEnd, - &r.UploadSpending, &r.DownloadSpending, &r.FundAccountSpending, &r.DeleteSpending, &r.ListSpending, - &r.HostID, &r.ArchivalReason) +WHERE fcid = ?`, FileContractID(renewedFrom))) if errors.Is(err, dsql.ErrNoRows) { return api.ContractMetadata{}, contractNotFoundErr(renewedFrom) } else if err != nil { @@ -1897,30 +1888,33 @@ WHERE fcid = ?`, FileContractID(renewedFrom)).Scan(&r.CreatedAt, &r.FCID, &r.Ren // overwrite existing contract _, err = tx.Exec(ctx, ` UPDATE contracts SET - created_at = ?, fcid = ?, renewed_from = ?, renewed_to = ?, - contract_price = ?, state = ?, total_cost = ?, proof_height = ?, revision_height = ?, revision_number = ?, size = ?, start_height = ?, window_start = ?, window_end = ?, - upload_spending = ?, download_spending = ?, fund_account_spending = ?, delete_spending = ?, list_spending = ? + created_at = ?, fcid = ?, + proof_height = ?, renewed_from = ?, renewed_to = ?, revision_height = ?, revision_number = ?, size = ?, start_height = ?, state = ?, window_start = ?, window_end = ?, + contract_price = ?, total_cost = ?, + delete_spending = ?, download_spending = ?, fund_account_spending = ?, list_spending = ?, upload_spending = ? WHERE fcid = ?`, - time.Now(), FileContractID(rev.ID()), FileContractID(renewedFrom), FileContractID(types.FileContractID{}), Currency(contractPrice), contractState, - Currency(totalCost), 0, 0, fmt.Sprint(rev.Revision.RevisionNumber), rev.Revision.Filesize, startHeight, - rev.Revision.WindowStart, rev.Revision.WindowEnd, ZeroCurrency, ZeroCurrency, ZeroCurrency, ZeroCurrency, - ZeroCurrency, FileContractID(renewedFrom)) + time.Now(), FileContractID(rev.ID()), + 0, FileContractID(renewedFrom), FileContractID(types.FileContractID{}), 0, fmt.Sprint(rev.Revision.RevisionNumber), rev.Revision.Filesize, startHeight, contractState, rev.Revision.WindowStart, rev.Revision.WindowEnd, + Currency(contractPrice), Currency(totalCost), + ZeroCurrency, ZeroCurrency, ZeroCurrency, ZeroCurrency, ZeroCurrency, + FileContractID(renewedFrom), + ) if err != nil { return api.ContractMetadata{}, fmt.Errorf("failed to update contract: %w", err) } // insert archived contract - r.ArchivalReason = api.ContractArchivalReasonRenewed res, err := tx.Exec(ctx, ` INSERT INTO contracts ( - created_at, fcid, renewed_from, renewed_to, contract_price, state, total_cost, proof_height, - revision_height, revision_number, size, start_height, window_start, window_end, upload_spending, download_spending, fund_account_spending, delete_spending, list_spending, - host_id, archival_reason + created_at, fcid, host_key, + archival_reason, proof_height, renewed_from, renewed_to, revision_height, revision_number, size, start_height, state, window_start, window_end, + contract_price, total_cost, + delete_spending, download_spending, fund_account_spending, list_spending, upload_spending ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, - r.CreatedAt, r.FCID, r.RenewedFrom, FileContractID(rev.ID()), r.ContractPrice, r.State, r.TotalCost, r.ProofHeight, - r.RevisionHeight, r.RevisionNumber, r.Size, r.StartHeight, r.WindowStart, r.WindowEnd, r.UploadSpending, r.DownloadSpending, r.FundAccountSpending, r.DeleteSpending, r.ListSpending, - r.HostID, r.ArchivalReason, - ) + r.CreatedAt, r.FCID, r.HostKey, + api.ContractArchivalReasonRenewed, r.ProofHeight, r.RenewedFrom, FileContractID(rev.ID()), r.RevisionHeight, r.RevisionNumber, r.Size, r.StartHeight, r.State, r.WindowStart, r.WindowEnd, + r.ContractPrice, r.TotalCost, + r.DeleteSpending, r.DownloadSpending, r.FundAccountSpending, r.ListSpending, r.UploadSpending) if err != nil { return api.ContractMetadata{}, fmt.Errorf("failed to insert archived contract: %w", err) } else if n, err := res.RowsAffected(); err != nil { @@ -1933,24 +1927,24 @@ INSERT INTO contracts ( } func QueryContracts(ctx context.Context, tx sql.Tx, whereExprs []string, whereArgs []any) ([]api.ContractMetadata, error) { - whereExpr := "WHERE c.archival_reason == ''" + whereExpr := "WHERE c.archival_reason = ''" if len(whereExprs) > 0 { whereExpr += " AND " + strings.Join(whereExprs, " AND ") } rows, err := tx.Query(ctx, fmt.Sprintf(` - SELECT c.created_at, c.fcid, c.renewed_from, c.contract_price, c.state, c.total_cost, c.proof_height, - c.revision_height, c.revision_number, c.size, c.start_height, c.window_start, c.window_end, - c.upload_spending, c.download_spending, c.fund_account_spending, c.delete_spending, c.list_spending, - c.host_id, c.archival_reason, COALESCE(cs.name, ""), COALESCE(h.net_address, ""), h.public_key, h.settings->>'$.siamuxport' AS siamux_port - FROM contracts AS c - INNER JOIN hosts h ON h.id = c.host_id - LEFT JOIN contract_set_contracts csc ON csc.db_contract_id = c.id - LEFT JOIN contract_sets cs ON cs.id = csc.db_contract_set_id - %s - ORDER BY c.id ASC`, whereExpr), - whereArgs..., - ) +SELECT + c.created_at, c.fcid, c.host_key, + c.archival_reason, c.proof_height, c.renewed_from, c.renewed_to, c.revision_height, c.revision_number, c.size, c.start_height, c.state, c.window_start, c.window_end, + c.contract_price, c.total_cost, + c.delete_spending, c.download_spending, c.fund_account_spending, c.list_spending, c.upload_spending, + COALESCE(cs.name, ""), COALESCE(h.net_address, ""), h.settings->>'$.siamuxport' AS siamux_port +FROM contracts AS c +INNER JOIN hosts h ON h.public_key = c.host_key +LEFT JOIN contract_set_contracts csc ON csc.db_contract_id = c.id +LEFT JOIN contract_sets cs ON cs.id = csc.db_contract_set_id +%s +ORDER BY c.id ASC`, whereExpr), whereArgs...) if err != nil { return nil, err } @@ -2111,20 +2105,20 @@ func SearchHosts(ctx context.Context, tx sql.Tx, autopilot, filterMode, usabilit offsetLimitStr := fmt.Sprintf("LIMIT %d OFFSET %d", limit, offset) // fetch stored data for each host - rows, err := tx.Query(ctx, "SELECT host_id, SUM(size) FROM contracts GROUP BY host_id") + rows, err := tx.Query(ctx, "SELECT host_key, SUM(size) FROM contracts WHERE archival_reason = '' GROUP BY host_key") if err != nil { return nil, fmt.Errorf("failed to fetch stored data: %w", err) } defer rows.Close() - storedDataMap := make(map[int64]uint64) + storedDataMap := make(map[types.PublicKey]uint64) for rows.Next() { - var hostID int64 + var hostKey PublicKey var storedData uint64 - if err := rows.Scan(&hostID, &storedData); err != nil { + if err := rows.Scan(&hostKey, &storedData); err != nil { return nil, fmt.Errorf("failed to scan stored data: %w", err) } - storedDataMap[hostID] = storedData + storedDataMap[types.PublicKey(hostKey)] = storedData } // query hosts @@ -2184,7 +2178,7 @@ func SearchHosts(ctx context.Context, tx sql.Tx, autopilot, filterMode, usabilit } } h.PriceTable.Expiry = pte.Time - h.StoredData = storedDataMap[hostID] + h.StoredData = storedDataMap[h.PublicKey] hosts = append(hosts, h) } @@ -2312,7 +2306,7 @@ func Slab(ctx context.Context, tx sql.Tx, key object.EncryptionKey) (object.Slab SELECT h.public_key, c.fcid FROM contract_sectors cs INNER JOIN contracts c ON c.id = cs.db_contract_id - INNER JOIN hosts h ON h.id = c.host_id + INNER JOIN hosts h ON h.public_key = c.host_key WHERE cs.db_sector_id = ? ORDER BY c.id `) @@ -2844,13 +2838,12 @@ func Object(ctx context.Context, tx Tx, bucket, key string) (api.Object, error) // fetch slab slices rows, err = tx.Query(ctx, ` - SELECT sla.db_buffered_slab_id IS NOT NULL, sli.object_index, sli.offset, sli.length, sla.health, sla.key, sla.min_shards, COALESCE(sec.slab_index, 0), COALESCE(sec.root, ?), COALESCE(sec.latest_host, ?), COALESCE(c.fcid, ?), COALESCE(h.public_key, ?) + SELECT sla.db_buffered_slab_id IS NOT NULL, sli.object_index, sli.offset, sli.length, sla.health, sla.key, sla.min_shards, COALESCE(sec.slab_index, 0), COALESCE(sec.root, ?), COALESCE(sec.latest_host, ?), COALESCE(c.fcid, ?), COALESCE(c.host_key, ?) FROM slices sli INNER JOIN slabs sla ON sli.db_slab_id = sla.id LEFT JOIN sectors sec ON sec.db_slab_id = sla.id LEFT JOIN contract_sectors csec ON csec.db_sector_id = sec.id LEFT JOIN contracts c ON c.id = csec.db_contract_id - LEFT JOIN hosts h ON h.id = c.host_id WHERE sli.db_object_id = ? ORDER BY sli.object_index ASC, sec.slab_index ASC `, Hash256{}, PublicKey{}, FileContractID{}, PublicKey{}, objID) diff --git a/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql b/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql index 15c6a7ad9..3817bc7e8 100644 --- a/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql +++ b/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql @@ -1,52 +1,146 @@ -ALTER TABLE `contracts` ADD COLUMN archival_reason VARCHAR(191) NOT NULL DEFAULT ''; -CREATE INDEX `idx_contracts_archival_reason` ON `contracts`(`archival_reason`); - -ALTER TABLE `contracts` ADD COLUMN renewed_to VARBINARY(32) DEFAULT NULL; -CREATE INDEX `idx_contracts_renewed_to` ON `contracts`(`renewed_to`); - -INSERT INTO `contracts` ( -created_at, -fcid, -renewed_from, -renewed_to, -contract_price, -state, -total_cost, -proof_height, -revision_height, -revision_number, -size, -start_height, -window_start, -window_end, -upload_spending, -download_spending, -fund_account_spending, -delete_spending, -list_spending, -host_id, -archival_reason +/* +TODOs: +- drop list_spending +- drop download_spending +- rename total_cost +*/ + +DROP TABLE IF EXISTS contracts_temp; + +CREATE TABLE contracts_temp ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT, + `created_at` datetime(3) DEFAULT NULL, + + `archival_reason` varchar(191) NOT NULL DEFAULT '', + `fcid` varbinary(32) NOT NULL, + `host_key` varbinary(32) NOT NULL, + `proof_height` bigint unsigned DEFAULT '0', + `renewed_from` varbinary(32) DEFAULT NULL, + `renewed_to` varbinary(32) DEFAULT NULL, + `revision_height` bigint unsigned DEFAULT '0', + `revision_number` varchar(191) NOT NULL DEFAULT '0', + `size` bigint unsigned DEFAULT NULL, + `start_height` bigint unsigned NOT NULL, + `state` tinyint unsigned NOT NULL DEFAULT '0', + `window_start` bigint unsigned NOT NULL DEFAULT '0', + `window_end` bigint unsigned NOT NULL DEFAULT '0', + + `contract_price` longtext, + `total_cost` longtext, + + `delete_spending` longtext, + `download_spending` longtext, + `fund_account_spending` longtext, + `list_spending` longtext, + `upload_spending` longtext, + PRIMARY KEY (`id`), + UNIQUE KEY `fcid` (`fcid`), + KEY `idx_contracts_archival_reason` (`archival_reason`), + KEY `idx_contracts_fcid` (`fcid`), + KEY `idx_contracts_host_key` (`host_key`), + KEY `idx_contracts_proof_height` (`proof_height`), + KEY `idx_contracts_renewed_from` (`renewed_from`), + KEY `idx_contracts_renewed_to` (`renewed_to`), + KEY `idx_contracts_revision_height` (`revision_height`), + KEY `idx_contracts_start_height` (`start_height`), + KEY `idx_contracts_state` (`state`), + KEY `idx_contracts_window_start` (`window_start`), + KEY `idx_contracts_window_end` (`window_end`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; + +INSERT INTO contracts_temp ( + id, + created_at, + fcid, + host_key, + proof_height, + renewed_from, + revision_height, + revision_number, + size, + start_height, + state, + window_start, + window_end, + contract_price, + total_cost, + delete_spending, + download_spending, + fund_account_spending, + list_spending, + upload_spending +) SELECT + c.id, + c.created_at, + c.fcid, + h.public_key, + c.proof_height, + c.renewed_from, + c.revision_height, + c.revision_number, + c.size, + c.start_height, + c.state, + c.window_start, + c.window_end, + c.contract_price, + c.total_cost, + c.delete_spending, + c.download_spending, + c.fund_account_spending, + c.list_spending, + c.upload_spending +FROM contracts c +INNER JOIN hosts h ON c.host_id = h.id; + +INSERT INTO contracts_temp ( + created_at, + fcid, + host_key, + archival_reason, + proof_height, + renewed_from, + renewed_to, + revision_height, + revision_number, + size, + start_height, + state, + window_start, + window_end, + contract_price, + total_cost, + delete_spending, + download_spending, + fund_account_spending, + list_spending, + upload_spending ) SELECT -ac.created_at, -ac.fcid, -ac.renewed_from, -ac.renewed_to, -ac.contract_price, -ac.state, -ac.total_cost, -ac.proof_height, -ac.revision_height, -ac.revision_number, -ac.size, -ac.start_height, -ac.window_start, -ac.window_end, -ac.upload_spending, -ac.download_spending, -ac.fund_account_spending, -ac.delete_spending, -ac.list_spending, -h.id, -ac.reason -FROM `archived_contracts` ac INNER JOIN hosts h ON ac.host = h.public_key ; + ac.created_at, + ac.fcid, + COALESCE(h.public_key, UNHEX('0000000000000000000000000000000000000000000000000000000000000000')), + ac.reason, + ac.proof_height, + ac.renewed_from, + ac.renewed_to, + ac.revision_height, + ac.revision_number, + ac.size, + ac.start_height, + ac.state, + ac.window_start, + ac.window_end, + ac.contract_price, + ac.total_cost, + ac.delete_spending, + ac.download_spending, + ac.fund_account_spending, + ac.list_spending, + ac.upload_spending +FROM `archived_contracts` ac +LEFT JOIN hosts h ON ac.host = h.public_key; + +DROP TABLE `contracts`; DROP TABLE `archived_contracts`; + +ALTER TABLE contracts_temp RENAME TO contracts; diff --git a/stores/sql/mysql/migrations/main/schema.sql b/stores/sql/mysql/migrations/main/schema.sql index 991100a9d..19168f24d 100644 --- a/stores/sql/mysql/migrations/main/schema.sql +++ b/stores/sql/mysql/migrations/main/schema.sql @@ -75,39 +75,41 @@ CREATE TABLE `contracts` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT, `created_at` datetime(3) DEFAULT NULL, `fcid` varbinary(32) NOT NULL, + `host_key` varbinary(32) NOT NULL, + + `archival_reason` varchar(191) NOT NULL DEFAULT '', + `proof_height` bigint unsigned DEFAULT '0', `renewed_from` varbinary(32) DEFAULT NULL, `renewed_to` varbinary(32) DEFAULT NULL, - `contract_price` longtext, - `state` tinyint unsigned NOT NULL DEFAULT '0', - `total_cost` longtext, - `proof_height` bigint unsigned DEFAULT '0', `revision_height` bigint unsigned DEFAULT '0', `revision_number` varchar(191) NOT NULL DEFAULT '0', `size` bigint unsigned DEFAULT NULL, `start_height` bigint unsigned NOT NULL, + `state` tinyint unsigned NOT NULL DEFAULT '0', `window_start` bigint unsigned NOT NULL DEFAULT '0', `window_end` bigint unsigned NOT NULL DEFAULT '0', - `upload_spending` longtext, + + `contract_price` longtext, + `total_cost` longtext, + + `delete_spending` longtext, `download_spending` longtext, `fund_account_spending` longtext, - `delete_spending` longtext, `list_spending` longtext, - `host_id` bigint unsigned DEFAULT NULL, - `archival_reason` VARCHAR(191) NOT NULL DEFAULT '', + `upload_spending` longtext, PRIMARY KEY (`id`), UNIQUE KEY `fcid` (`fcid`), - KEY `idx_contracts_window_end` (`window_end`), - KEY `idx_contracts_host_id` (`host_id`), + KEY `idx_contracts_archival_reason` (`archival_reason`), + KEY `idx_contracts_fcid` (`fcid`), + KEY `idx_contracts_host_key` (`host_key`), + KEY `idx_contracts_proof_height` (`proof_height`), KEY `idx_contracts_renewed_from` (`renewed_from`), KEY `idx_contracts_renewed_to` (`renewed_to`), - KEY `idx_contracts_state` (`state`), - KEY `idx_contracts_proof_height` (`proof_height`), - KEY `idx_contracts_start_height` (`start_height`), - KEY `idx_contracts_fc_id` (`fcid`), KEY `idx_contracts_revision_height` (`revision_height`), + KEY `idx_contracts_start_height` (`start_height`), + KEY `idx_contracts_state` (`state`), KEY `idx_contracts_window_start` (`window_start`), - KEY `idx_contracts_archival_reason` (`archival_reason`), - CONSTRAINT `fk_contracts_host` FOREIGN KEY (`host_id`) REFERENCES `hosts` (`id`) + KEY `idx_contracts_window_end` (`window_end`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- dbContractSet diff --git a/stores/sql/rows.go b/stores/sql/rows.go index e777599ad..c0054f66e 100644 --- a/stores/sql/rows.go +++ b/stores/sql/rows.go @@ -13,42 +13,48 @@ type Scanner interface { } type ContractRow struct { - CreatedAt time.Time - FCID FileContractID - RenewedFrom FileContractID + CreatedAt time.Time + FCID FileContractID + HostKey PublicKey - ContractPrice Currency - State ContractState - TotalCost Currency + // state fields + ArchivalReason string ProofHeight uint64 + RenewedFrom FileContractID + RenewedTo FileContractID RevisionHeight uint64 RevisionNumber uint64 Size uint64 StartHeight uint64 + State ContractState WindowStart uint64 WindowEnd uint64 + // cost fields + ContractPrice Currency + TotalCost Currency + // spending fields - UploadSpending Currency + DeleteSpending Currency DownloadSpending Currency FundAccountSpending Currency - DeleteSpending Currency ListSpending Currency + UploadSpending Currency - HostID int64 - ArchivalReason string - + // decorated fields ContractSet string NetAddress string - PublicKey PublicKey SiamuxPort string } func (r *ContractRow) Scan(s Scanner) error { - return s.Scan(&r.CreatedAt, &r.FCID, &r.RenewedFrom, &r.ContractPrice, &r.State, &r.TotalCost, &r.ProofHeight, - &r.RevisionHeight, &r.RevisionNumber, &r.Size, &r.StartHeight, &r.WindowStart, &r.WindowEnd, - &r.UploadSpending, &r.DownloadSpending, &r.FundAccountSpending, &r.DeleteSpending, &r.ListSpending, - &r.HostID, &r.ArchivalReason, &r.ContractSet, &r.NetAddress, &r.PublicKey, &r.SiamuxPort) + return s.Scan( + &r.CreatedAt, &r.FCID, &r.HostKey, + &r.ArchivalReason, &r.ProofHeight, &r.RenewedFrom, &r.RenewedTo, &r.RevisionHeight, &r.RevisionNumber, &r.Size, &r.StartHeight, &r.State, &r.WindowStart, &r.WindowEnd, + &r.ContractPrice, &r.TotalCost, + &r.DeleteSpending, &r.DownloadSpending, &r.FundAccountSpending, &r.ListSpending, &r.UploadSpending, + &r.ContractSet, &r.NetAddress, &r.SiamuxPort, + ) } func (r *ContractRow) ContractMetadata() api.ContractMetadata { @@ -60,7 +66,7 @@ func (r *ContractRow) ContractMetadata() api.ContractMetadata { ContractPrice: types.Currency(r.ContractPrice), ID: types.FileContractID(r.FCID), HostIP: r.NetAddress, - HostKey: types.PublicKey(r.PublicKey), + HostKey: types.PublicKey(r.HostKey), SiamuxAddr: rhpv2.HostSettings{ NetAddress: r.NetAddress, SiaMuxPort: r.SiamuxPort, diff --git a/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql b/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql index 55ad7912d..3d09a8178 100644 --- a/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql +++ b/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql @@ -1,52 +1,138 @@ -ALTER TABLE `contracts` ADD COLUMN archival_reason text NOT NULL DEFAULT ''; -CREATE INDEX `idx_contracts_archival_reason` ON `contracts`(`archival_reason`); - -ALTER TABLE `contracts` ADD COLUMN renewed_to blob; -CREATE INDEX `idx_contracts_renewed_to` ON `contracts`(`renewed_to`); - -INSERT INTO `contracts` ( -created_at, -fcid, -renewed_from, -renewed_to, -contract_price, -state, -total_cost, -proof_height, -revision_height, -revision_number, -size, -start_height, -window_start, -window_end, -upload_spending, -download_spending, -fund_account_spending, -delete_spending, -list_spending, -host_id, -archival_reason +DROP TABLE IF EXISTS contracts_temp; + +CREATE TABLE contracts_temp ( + `id` integer PRIMARY KEY AUTOINCREMENT, + `created_at` datetime, + `fcid` blob NOT NULL UNIQUE, + `host_key` blob NOT NULL, + + `archival_reason` text NOT NULL DEFAULT "", + `proof_height` integer DEFAULT 0, + `renewed_from` blob, + `renewed_to` blob, + `revision_height` integer DEFAULT 0, + `revision_number` text NOT NULL DEFAULT "0", + `size` integer, + `start_height` integer NOT NULL, + `state` integer NOT NULL DEFAULT 0, + `window_start` integer NOT NULL DEFAULT 0, + `window_end` integer NOT NULL DEFAULT 0, + + `contract_price` text, + `total_cost` text, + + `delete_spending` text, + `download_spending` text, + `list_spending` text, + `fund_account_spending` text, + `upload_spending` text +); +CREATE INDEX `idx_contracts_archival_reason` ON `contracts_temp`(`archival_reason`); +CREATE INDEX `idx_contracts_fcid` ON `contracts_temp`(`fcid`); +CREATE INDEX `idx_contracts_host_key` ON `contracts_temp`(`host_key`); +CREATE INDEX `idx_contracts_proof_height` ON `contracts_temp`(`proof_height`); +CREATE INDEX `idx_contracts_renewed_from` ON `contracts_temp`(`renewed_from`); +CREATE INDEX `idx_contracts_renewed_to` ON `contracts_temp`(`renewed_to`); +CREATE INDEX `idx_contracts_revision_height` ON `contracts_temp`(`revision_height`); +CREATE INDEX `idx_contracts_start_height` ON `contracts_temp`(`start_height`); +CREATE INDEX `idx_contracts_state` ON `contracts_temp`(`state`); +CREATE INDEX `idx_contracts_window_end` ON `contracts_temp`(`window_end`); +CREATE INDEX `idx_contracts_window_start` ON `contracts_temp`(`window_start`); + + +INSERT INTO contracts_temp ( + id, + created_at, + fcid, + host_key, + proof_height, + renewed_from, + revision_height, + revision_number, + size, + start_height, + state, + window_start, + window_end, + contract_price, + total_cost, + delete_spending, + download_spending, + fund_account_spending, + list_spending, + upload_spending +) SELECT + c.id, + c.created_at, + c.fcid, + h.public_key, + c.proof_height, + c.renewed_from, + c.revision_height, + c.revision_number, + c.size, + c.start_height, + c.state, + c.window_start, + c.window_end, + c.contract_price, + c.total_cost, + c.delete_spending, + c.download_spending, + c.fund_account_spending, + c.list_spending, + c.upload_spending +FROM contracts c +INNER JOIN hosts h ON c.host_id = h.id; + +INSERT INTO contracts_temp ( + created_at, + archival_reason, + fcid, + host_key, + proof_height, + renewed_from, + renewed_to, + revision_height, + revision_number, + size, + start_height, + state, + window_start, + window_end, + contract_price, + total_cost, + delete_spending, + download_spending, + fund_account_spending, + list_spending, + upload_spending ) SELECT -ac.created_at, -ac.fcid, -ac.renewed_from, -ac.renewed_to, -ac.contract_price, -ac.state, -ac.total_cost, -ac.proof_height, -ac.revision_height, -ac.revision_number, -ac.size, -ac.start_height, -ac.window_start, -ac.window_end, -ac.upload_spending, -ac.download_spending, -ac.fund_account_spending, -ac.delete_spending, -ac.list_spending, -h.id, -ac.reason -FROM `archived_contracts` ac INNER JOIN hosts h ON ac.host = h.public_key ; + ac.created_at, + ac.reason, + ac.fcid, + COALESCE(h.public_key, X'0000000000000000000000000000000000000000000000000000000000000000'), + ac.proof_height, + ac.renewed_from, + ac.renewed_to, + ac.revision_height, + ac.revision_number, + ac.size, + ac.start_height, + ac.state, + ac.window_start, + ac.window_end, + ac.contract_price, + ac.total_cost, + ac.delete_spending, + ac.download_spending, + ac.fund_account_spending, + ac.list_spending, + ac.upload_spending +FROM `archived_contracts` ac +LEFT JOIN hosts h ON ac.host = h.public_key; + +DROP TABLE `contracts`; DROP TABLE `archived_contracts`; + +ALTER TABLE contracts_temp RENAME TO contracts; diff --git a/stores/sql/sqlite/migrations/main/schema.sql b/stores/sql/sqlite/migrations/main/schema.sql index 22784725c..8c24a3eb4 100644 --- a/stores/sql/sqlite/migrations/main/schema.sql +++ b/stores/sql/sqlite/migrations/main/schema.sql @@ -8,18 +8,18 @@ CREATE INDEX `idx_hosts_public_key` ON `hosts`(`public_key`); CREATE INDEX `idx_hosts_net_address` ON `hosts`(`net_address`); -- dbContract -CREATE TABLE `contracts` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at` datetime,`fcid` blob NOT NULL UNIQUE,`renewed_from` blob,`renewed_to` blob,`contract_price` text,`state` integer NOT NULL DEFAULT 0,`total_cost` text,`proof_height` integer DEFAULT 0,`revision_height` integer DEFAULT 0,`revision_number` text NOT NULL DEFAULT "0",`size` integer,`start_height` integer NOT NULL,`window_start` integer NOT NULL DEFAULT 0,`window_end` integer NOT NULL DEFAULT 0,`upload_spending` text,`download_spending` text,`fund_account_spending` text,`delete_spending` text,`list_spending` text,`host_id` integer,`archival_reason` text NOT NULL DEFAULT "", CONSTRAINT `fk_contracts_host` FOREIGN KEY (`host_id`) REFERENCES `hosts`(`id`)); +CREATE TABLE contracts (`id` integer PRIMARY KEY AUTOINCREMENT, `created_at` datetime, `fcid` blob NOT NULL UNIQUE, `host_key` blob NOT NULL, `archival_reason` text NOT NULL DEFAULT "", `proof_height` integer DEFAULT 0, `renewed_from` blob, `renewed_to` blob, `revision_height` integer DEFAULT 0, `revision_number` text NOT NULL DEFAULT "0", `size` integer, `start_height` integer NOT NULL, `state` integer NOT NULL DEFAULT 0, `window_start` integer NOT NULL DEFAULT 0, `window_end` integer NOT NULL DEFAULT 0, `contract_price` text, `total_cost` text, `delete_spending` text, `download_spending` text, `fund_account_spending` text, `list_spending` text, `upload_spending` text); +CREATE INDEX `idx_contracts_archival_reason` ON `contracts`(`archival_reason`); +CREATE INDEX `idx_contracts_fcid` ON `contracts`(`fcid`); +CREATE INDEX `idx_contracts_host_key` ON `contracts`(`host_key`); CREATE INDEX `idx_contracts_proof_height` ON `contracts`(`proof_height`); -CREATE INDEX `idx_contracts_state` ON `contracts`(`state`); CREATE INDEX `idx_contracts_renewed_from` ON `contracts`(`renewed_from`); CREATE INDEX `idx_contracts_renewed_to` ON `contracts`(`renewed_to`); -CREATE INDEX `idx_contracts_host_id` ON `contracts`(`host_id`); -CREATE INDEX `idx_contracts_window_end` ON `contracts`(`window_end`); -CREATE INDEX `idx_contracts_window_start` ON `contracts`(`window_start`); CREATE INDEX `idx_contracts_revision_height` ON `contracts`(`revision_height`); CREATE INDEX `idx_contracts_start_height` ON `contracts`(`start_height`); -CREATE INDEX `idx_contracts_archival_reason` ON `contracts`(`archival_reason`); -CREATE INDEX `idx_contracts_fc_id` ON `contracts`(`fcid`); +CREATE INDEX `idx_contracts_state` ON `contracts`(`state`); +CREATE INDEX `idx_contracts_window_end` ON `contracts`(`window_end`); +CREATE INDEX `idx_contracts_window_start` ON `contracts`(`window_start`); -- dbContractSet CREATE TABLE `contract_sets` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at` datetime,`name` text UNIQUE); diff --git a/stores/sql/types.go b/stores/sql/types.go index 10cf76e42..46e44599f 100644 --- a/stores/sql/types.go +++ b/stores/sql/types.go @@ -159,6 +159,10 @@ func (c Currency) Value() (driver.Value, error) { // Scan scan value into fileContractID, implements sql.Scanner interface. func (fcid *FileContractID) Scan(value interface{}) error { + if value == nil { + *fcid = FileContractID{} + return nil + } bytes, ok := value.([]byte) if !ok { return errors.New(fmt.Sprint("failed to unmarshal fcid value:", value)) From 41e32946cd8e65797f11ad5a70fcf872388be991 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 5 Sep 2024 13:38:37 +0200 Subject: [PATCH 049/708] api: add includeArchived to api.ContractsOpts --- api/contract.go | 3 ++- stores/sql/main.go | 9 ++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/api/contract.go b/api/contract.go index 19da16a2d..76746615e 100644 --- a/api/contract.go +++ b/api/contract.go @@ -222,7 +222,8 @@ type ( } ContractsOpts struct { - ContractSet string `json:"contractset"` + ContractSet string `json:"contractset"` + IncludeArchived bool `json:"includeArchived"` } ) diff --git a/stores/sql/main.go b/stores/sql/main.go index 95e95c316..625c847fc 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -222,7 +222,7 @@ func Bucket(ctx context.Context, tx sql.Tx, bucket string) (api.Bucket, error) { } func Contract(ctx context.Context, tx sql.Tx, fcid types.FileContractID) (api.ContractMetadata, error) { - contracts, err := QueryContracts(ctx, tx, []string{"c.fcid = ?"}, []any{FileContractID(fcid)}) + contracts, err := QueryContracts(ctx, tx, []string{"c.fcid = ?", "c.archival_reason = ''"}, []any{FileContractID(fcid)}) if err != nil { return api.ContractMetadata{}, fmt.Errorf("failed to fetch contract: %w", err) } else if len(contracts) == 0 { @@ -268,6 +268,9 @@ func Contracts(ctx context.Context, tx sql.Tx, opts api.ContractsOpts) ([]api.Co whereExprs = append(whereExprs, "cs.id = ?") whereArgs = append(whereArgs, contractSetID) } + if !opts.IncludeArchived { + whereExprs = append(whereExprs, "c.archival_reason = ''") + } return QueryContracts(ctx, tx, whereExprs, whereArgs) } @@ -1927,9 +1930,9 @@ INSERT INTO contracts ( } func QueryContracts(ctx context.Context, tx sql.Tx, whereExprs []string, whereArgs []any) ([]api.ContractMetadata, error) { - whereExpr := "WHERE c.archival_reason = ''" + var whereExpr string if len(whereExprs) > 0 { - whereExpr += " AND " + strings.Join(whereExprs, " AND ") + whereExpr = "WHERE " + strings.Join(whereExprs, " AND ") } rows, err := tx.Query(ctx, fmt.Sprintf(` From 017ccb1042189aeccafe64066dbaff6ea19e070a Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 5 Sep 2024 13:44:06 +0200 Subject: [PATCH 050/708] stores: fix TODO --- .../mysql/migrations/main/migration_00017_archived_contracts.sql | 1 - 1 file changed, 1 deletion(-) diff --git a/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql b/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql index 3817bc7e8..0711a04f9 100644 --- a/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql +++ b/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql @@ -1,6 +1,5 @@ /* TODOs: -- drop list_spending - drop download_spending - rename total_cost */ From 3934a8fb3e01503d69120f5fc6470ca427b89b5d Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 5 Sep 2024 13:38:08 +0200 Subject: [PATCH 051/708] stores: debug logging --- stores/sql/main.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/stores/sql/main.go b/stores/sql/main.go index 60d4bf3d7..31fad2bf7 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -723,6 +723,7 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er // filter address if opts.AddressContains != "" { whereExprs = append(whereExprs, "h.net_address LIKE ?") + fmt.Println("append1", opts.AddressContains) args = append(args, "%"+opts.AddressContains+"%") } @@ -734,6 +735,7 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er } placeholders := strings.Repeat("?, ", len(opts.KeyIn)-1) + "?" whereExprs = append(whereExprs, fmt.Sprintf("h.public_key IN (%s)", placeholders)) + fmt.Println("append2", pubKeys) args = append(args, pubKeys...) } @@ -745,10 +747,12 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er switch opts.UsabilityMode { case api.UsabilityFilterModeUsable: whereExprs = append(whereExprs, fmt.Sprintf("EXISTS (SELECT 1 FROM hosts h2 INNER JOIN host_checks hc ON hc.db_host_id = h2.id AND h2.id = h.id WHERE (hc.usability_blocked = 0 AND hc.usability_offline = 0 AND hc.usability_low_score = 0 AND hc.usability_redundant_ip = 0 AND hc.usability_gouging = 0 AND hc.usability_not_accepting_contracts = 0 AND hc.usability_not_announced = 0 AND hc.usability_not_completing_scan = 0) %s)", whereApExpr)) + fmt.Println("append3", autopilotID) args = append(args, autopilotID) case api.UsabilityFilterModeUnusable: whereExprs = append(whereExprs, fmt.Sprintf("EXISTS (SELECT 1 FROM hosts h2 INNER JOIN host_checks hc ON hc.db_host_id = h2.id AND h2.id = h.id WHERE (hc.usability_blocked = 1 OR hc.usability_offline = 1 OR hc.usability_low_score = 1 OR hc.usability_redundant_ip = 1 OR hc.usability_gouging = 1 OR hc.usability_not_accepting_contracts = 1 OR hc.usability_not_announced = 1 OR hc.usability_not_completing_scan = 1) %s)", whereApExpr)) args = append(args, autopilotID) + fmt.Println("append4", autopilotID) } // offset + limit @@ -802,7 +806,9 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er %s `, blockedExpr, whereExpr, offsetLimitStr), args...) if err != nil { - return nil, fmt.Errorf("failed to fetch hosts: %w", err) + inOpts, _ := json.MarshalIndent(opts, " ", " ") + fmt.Println(string(inOpts)) + return nil, fmt.Errorf("failed to fetch hosts: %w %v %v", err, string(inOpts), args) } defer rows.Close() From 0ab35a801655ed2c1f637de0de34a0334fd5f26f Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 5 Sep 2024 14:27:18 +0200 Subject: [PATCH 052/708] stores: remove logging --- bus/routes.go | 5 +++++ internal/test/e2e/cluster_test.go | 2 ++ stores/hostdb_test.go | 2 +- stores/sql/main.go | 32 +++++++++++++++---------------- 4 files changed, 24 insertions(+), 17 deletions(-) diff --git a/bus/routes.go b/bus/routes.go index 50cfb23e0..a49742724 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -608,6 +608,11 @@ func (b *Bus) hostsHandlerPOST(jc jape.Context) { return } + if req.AutopilotID == "" && req.UsabilityMode != api.UsabilityFilterModeAll { + jc.Error(errors.New("need to specify autopilot id when usability mode isn't 'all'"), http.StatusBadRequest) + return + } + // validate the filter mode switch req.FilterMode { case api.HostFilterModeAllowed: diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 00450116a..9c3383d83 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -337,6 +337,7 @@ func TestNewTestCluster(t *testing.T) { } hostInfosUnusable, err := cluster.Bus.Hosts(context.Background(), api.HostOptions{ + AutopilotID: testApCfg().ID, FilterMode: api.UsabilityFilterModeAll, UsabilityMode: api.UsabilityFilterModeUnusable, }) @@ -346,6 +347,7 @@ func TestNewTestCluster(t *testing.T) { } hostInfosUsable, err := cluster.Bus.Hosts(context.Background(), api.HostOptions{ + AutopilotID: testApCfg().ID, FilterMode: api.UsabilityFilterModeAll, UsabilityMode: api.UsabilityFilterModeUsable, }) diff --git a/stores/hostdb_test.go b/stores/hostdb_test.go index fdcd68327..82e73191e 100644 --- a/stores/hostdb_test.go +++ b/stores/hostdb_test.go @@ -370,7 +370,7 @@ func TestHosts(t *testing.T) { // assert h1 and h2 have the expected checks if c1, ok := his[0].Checks[ap1]; !ok || c1 != h1c { - t.Fatal("unexpected", c1, ok) + t.Fatal("unexpected", c1, ok, his[0]) } else if c2, ok := his[1].Checks[ap1]; !ok || c2 != h2c1 { t.Fatal("unexpected", c2, ok) } else if _, ok := his[1].Checks[ap2]; ok { diff --git a/stores/sql/main.go b/stores/sql/main.go index 31fad2bf7..95d933fa9 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -28,7 +28,10 @@ import ( "lukechampine.com/frand" ) -var ErrNegativeOffset = errors.New("offset can not be negative") +var ( + ErrNegativeOffset = errors.New("offset can not be negative") + ErrMissingAutopilotID = errors.New("missing autopilot id") +) // helper types type ( @@ -665,6 +668,8 @@ func HostBlocklist(ctx context.Context, tx sql.Tx) ([]string, error) { func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, error) { if opts.Offset < 0 { return nil, ErrNegativeOffset + } else if opts.AutopilotID == "" && opts.UsabilityMode != "" && opts.UsabilityMode != api.UsabilityFilterModeAll { + return nil, fmt.Errorf("%w: have to specify autopilot id when filter mode isn't 'all'", ErrMissingAutopilotID) } var hasAllowlist, hasBlocklist bool @@ -723,7 +728,6 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er // filter address if opts.AddressContains != "" { whereExprs = append(whereExprs, "h.net_address LIKE ?") - fmt.Println("append1", opts.AddressContains) args = append(args, "%"+opts.AddressContains+"%") } @@ -735,7 +739,6 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er } placeholders := strings.Repeat("?, ", len(opts.KeyIn)-1) + "?" whereExprs = append(whereExprs, fmt.Sprintf("h.public_key IN (%s)", placeholders)) - fmt.Println("append2", pubKeys) args = append(args, pubKeys...) } @@ -743,16 +746,15 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er whereApExpr := "" if opts.AutopilotID != "" { whereApExpr = "AND hc.db_autopilot_id = ?" - } - switch opts.UsabilityMode { - case api.UsabilityFilterModeUsable: - whereExprs = append(whereExprs, fmt.Sprintf("EXISTS (SELECT 1 FROM hosts h2 INNER JOIN host_checks hc ON hc.db_host_id = h2.id AND h2.id = h.id WHERE (hc.usability_blocked = 0 AND hc.usability_offline = 0 AND hc.usability_low_score = 0 AND hc.usability_redundant_ip = 0 AND hc.usability_gouging = 0 AND hc.usability_not_accepting_contracts = 0 AND hc.usability_not_announced = 0 AND hc.usability_not_completing_scan = 0) %s)", whereApExpr)) - fmt.Println("append3", autopilotID) - args = append(args, autopilotID) - case api.UsabilityFilterModeUnusable: - whereExprs = append(whereExprs, fmt.Sprintf("EXISTS (SELECT 1 FROM hosts h2 INNER JOIN host_checks hc ON hc.db_host_id = h2.id AND h2.id = h.id WHERE (hc.usability_blocked = 1 OR hc.usability_offline = 1 OR hc.usability_low_score = 1 OR hc.usability_redundant_ip = 1 OR hc.usability_gouging = 1 OR hc.usability_not_accepting_contracts = 1 OR hc.usability_not_announced = 1 OR hc.usability_not_completing_scan = 1) %s)", whereApExpr)) - args = append(args, autopilotID) - fmt.Println("append4", autopilotID) + + switch opts.UsabilityMode { + case api.UsabilityFilterModeUsable: + whereExprs = append(whereExprs, fmt.Sprintf("EXISTS (SELECT 1 FROM hosts h2 INNER JOIN host_checks hc ON hc.db_host_id = h2.id AND h2.id = h.id WHERE (hc.usability_blocked = 0 AND hc.usability_offline = 0 AND hc.usability_low_score = 0 AND hc.usability_redundant_ip = 0 AND hc.usability_gouging = 0 AND hc.usability_not_accepting_contracts = 0 AND hc.usability_not_announced = 0 AND hc.usability_not_completing_scan = 0) %s)", whereApExpr)) + args = append(args, autopilotID) + case api.UsabilityFilterModeUnusable: + whereExprs = append(whereExprs, fmt.Sprintf("EXISTS (SELECT 1 FROM hosts h2 INNER JOIN host_checks hc ON hc.db_host_id = h2.id AND h2.id = h.id WHERE (hc.usability_blocked = 1 OR hc.usability_offline = 1 OR hc.usability_low_score = 1 OR hc.usability_redundant_ip = 1 OR hc.usability_gouging = 1 OR hc.usability_not_accepting_contracts = 1 OR hc.usability_not_announced = 1 OR hc.usability_not_completing_scan = 1) %s)", whereApExpr)) + args = append(args, autopilotID) + } } // offset + limit @@ -806,9 +808,7 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er %s `, blockedExpr, whereExpr, offsetLimitStr), args...) if err != nil { - inOpts, _ := json.MarshalIndent(opts, " ", " ") - fmt.Println(string(inOpts)) - return nil, fmt.Errorf("failed to fetch hosts: %w %v %v", err, string(inOpts), args) + return nil, fmt.Errorf("failed to fetch hosts: %w", err) } defer rows.Close() From 8996de5ccd2f66a344bd134172262ccffaf62b98 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 5 Sep 2024 14:56:16 +0200 Subject: [PATCH 053/708] stores: get rid of download_spending --- api/contract.go | 66 +++++--------- api/metrics.go | 1 - autopilot/autopilot.go | 2 +- autopilot/contractor/contractor.go | 2 +- bus/bus.go | 2 +- bus/client/contracts.go | 2 +- internal/sql/migrations.go | 6 ++ internal/test/e2e/cluster_test.go | 10 +-- stores/metadata.go | 6 +- stores/metadata_test.go | 85 ++++++++----------- stores/metrics_test.go | 2 - stores/sql/database.go | 2 +- stores/sql/main.go | 80 ++++++++--------- stores/sql/metrics.go | 6 +- stores/sql/mysql/main.go | 2 +- .../migration_00017_archived_contracts.sql | 6 -- stores/sql/mysql/migrations/main/schema.sql | 1 - ...migration_00003_drop_download_spending.sql | 1 + .../sql/mysql/migrations/metrics/schema.sql | 3 - stores/sql/rows.go | 47 +++++----- stores/sql/sqlite/main.go | 2 +- .../migration_00017_archived_contracts.sql | 5 -- stores/sql/sqlite/migrations/main/schema.sql | 2 +- ...migration_00003_drop_download_spending.sql | 1 + .../sql/sqlite/migrations/metrics/schema.sql | 3 +- 25 files changed, 143 insertions(+), 202 deletions(-) create mode 100644 stores/sql/mysql/migrations/metrics/migration_00003_drop_download_spending.sql create mode 100644 stores/sql/sqlite/migrations/metrics/migration_00003_drop_download_spending.sql diff --git a/api/contract.go b/api/contract.go index 76746615e..48aaf4235 100644 --- a/api/contract.go +++ b/api/contract.go @@ -53,23 +53,26 @@ type ( ID types.FileContractID `json:"id"` HostIP string `json:"hostIP"` HostKey types.PublicKey `json:"hostKey"` - SiamuxAddr string `json:"siamuxAddr"` - - ProofHeight uint64 `json:"proofHeight"` - RevisionHeight uint64 `json:"revisionHeight"` - RevisionNumber uint64 `json:"revisionNumber"` - Size uint64 `json:"size"` - StartHeight uint64 `json:"startHeight"` - State string `json:"state"` - WindowStart uint64 `json:"windowStart"` - WindowEnd uint64 `json:"windowEnd"` - - ContractPrice types.Currency `json:"contractPrice"` - RenewedFrom types.FileContractID `json:"renewedFrom"` - Spending ContractSpending `json:"spending"` - TotalCost types.Currency `json:"totalCost"` - - ContractSets []string `json:"contractSets"` + SiamuxAddr string `json:"siamuxAddr,omitempty"` + + ArchivalReason string `json:"archivalReason,omitempty"` + ProofHeight uint64 `json:"proofHeight"` + RenewedFrom types.FileContractID `json:"renewedFrom"` + RenewedTo types.FileContractID `json:"renewedTo,omitempty"` + RevisionHeight uint64 `json:"revisionHeight"` + RevisionNumber uint64 `json:"revisionNumber"` + Size uint64 `json:"size"` + StartHeight uint64 `json:"startHeight"` + State string `json:"state"` + WindowStart uint64 `json:"windowStart"` + WindowEnd uint64 `json:"windowEnd"` + + ContractPrice types.Currency `json:"contractPrice"` + TotalCost types.Currency `json:"totalCost"` + + Spending ContractSpending `json:"spending"` + + ContractSets []string `json:"contractSets,omitempty"` } // ContractPrunableData wraps a contract's size information with its id. @@ -81,9 +84,8 @@ type ( // ContractSpending contains all spending details for a contract. ContractSpending struct { Uploads types.Currency `json:"uploads"` - Downloads types.Currency `json:"downloads"` - FundAccount types.Currency `json:"fundAccount"` Deletions types.Currency `json:"deletions"` + FundAccount types.Currency `json:"fundAccount"` SectorRoots types.Currency `json:"sectorRoots"` } @@ -96,29 +98,6 @@ type ( MissedHostPayout types.Currency `json:"missedHostPayout"` ValidRenterPayout types.Currency `json:"validRenterPayout"` } - - // An ArchivedContract contains all information about a contract with a host - // that has been moved to the archive either due to expiring or being renewed. - ArchivedContract struct { - ID types.FileContractID `json:"id"` - HostIP string `json:"hostIP"` - HostKey types.PublicKey `json:"hostKey"` - RenewedTo types.FileContractID `json:"renewedTo"` - Spending ContractSpending `json:"spending"` - - ArchivalReason string `json:"archivalReason"` - ContractPrice types.Currency `json:"contractPrice"` - ProofHeight uint64 `json:"proofHeight"` - RenewedFrom types.FileContractID `json:"renewedFrom"` - RevisionHeight uint64 `json:"revisionHeight"` - RevisionNumber uint64 `json:"revisionNumber"` - Size uint64 `json:"size"` - StartHeight uint64 `json:"startHeight"` - State string `json:"state"` - TotalCost types.Currency `json:"totalCost"` - WindowStart uint64 `json:"windowStart"` - WindowEnd uint64 `json:"windowEnd"` - } ) type ( @@ -229,13 +208,12 @@ type ( // Total returns the total cost of the contract spending. func (x ContractSpending) Total() types.Currency { - return x.Uploads.Add(x.Downloads).Add(x.FundAccount).Add(x.Deletions).Add(x.SectorRoots) + return x.Uploads.Add(x.FundAccount).Add(x.Deletions).Add(x.SectorRoots) } // Add returns the sum of the current and given contract spending. func (x ContractSpending) Add(y ContractSpending) (z ContractSpending) { z.Uploads = x.Uploads.Add(y.Uploads) - z.Downloads = x.Downloads.Add(y.Downloads) z.FundAccount = x.FundAccount.Add(y.FundAccount) z.Deletions = x.Deletions.Add(y.Deletions) z.SectorRoots = x.SectorRoots.Add(y.SectorRoots) diff --git a/api/metrics.go b/api/metrics.go index 98c6f06b0..599386afc 100644 --- a/api/metrics.go +++ b/api/metrics.go @@ -75,7 +75,6 @@ type ( RevisionNumber uint64 `json:"revisionNumber"` UploadSpending types.Currency `json:"uploadSpending"` - DownloadSpending types.Currency `json:"downloadSpending"` FundAccountSpending types.Currency `json:"fundAccountSpending"` DeleteSpending types.Currency `json:"deleteSpending"` ListSpending types.Currency `json:"listSpending"` diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 8c45e950a..7b287e586 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -39,7 +39,7 @@ type Bus interface { ConsensusState(ctx context.Context) (api.ConsensusState, error) // contracts - AncestorContracts(ctx context.Context, id types.FileContractID, minStartHeight uint64) ([]api.ArchivedContract, error) + AncestorContracts(ctx context.Context, id types.FileContractID, minStartHeight uint64) ([]api.ContractMetadata, error) ArchiveContracts(ctx context.Context, toArchive map[types.FileContractID]string) error BroadcastContract(ctx context.Context, fcid types.FileContractID) (types.TransactionID, error) Contract(ctx context.Context, id types.FileContractID) (api.ContractMetadata, error) diff --git a/autopilot/contractor/contractor.go b/autopilot/contractor/contractor.go index 35ede27c9..74a8dda30 100644 --- a/autopilot/contractor/contractor.go +++ b/autopilot/contractor/contractor.go @@ -81,7 +81,7 @@ const ( ) type Bus interface { - AncestorContracts(ctx context.Context, id types.FileContractID, minStartHeight uint64) ([]api.ArchivedContract, error) + AncestorContracts(ctx context.Context, id types.FileContractID, minStartHeight uint64) ([]api.ContractMetadata, error) ArchiveContracts(ctx context.Context, toArchive map[types.FileContractID]string) error BroadcastContract(ctx context.Context, fcid types.FileContractID) (types.TransactionID, error) ConsensusState(ctx context.Context) (api.ConsensusState, error) diff --git a/bus/bus.go b/bus/bus.go index 832b603b0..af5821ef5 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -212,7 +212,7 @@ type ( MetadataStore interface { AddContract(ctx context.Context, c rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) AddRenewedContract(ctx context.Context, c rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (api.ContractMetadata, error) - AncestorContracts(ctx context.Context, fcid types.FileContractID, minStartHeight uint64) ([]api.ArchivedContract, error) + AncestorContracts(ctx context.Context, fcid types.FileContractID, minStartHeight uint64) ([]api.ContractMetadata, error) ArchiveContract(ctx context.Context, id types.FileContractID, reason string) error ArchiveContracts(ctx context.Context, toArchive map[types.FileContractID]string) error ArchiveAllContracts(ctx context.Context, reason string) error diff --git a/bus/client/contracts.go b/bus/client/contracts.go index 0403e49f5..f16db02a9 100644 --- a/bus/client/contracts.go +++ b/bus/client/contracts.go @@ -37,7 +37,7 @@ func (c *Client) AddRenewedContract(ctx context.Context, contract rhpv2.Contract } // AncestorContracts returns any ancestors of a given contract. -func (c *Client) AncestorContracts(ctx context.Context, contractID types.FileContractID, minStartHeight uint64) (contracts []api.ArchivedContract, err error) { +func (c *Client) AncestorContracts(ctx context.Context, contractID types.FileContractID, minStartHeight uint64) (contracts []api.ContractMetadata, err error) { values := url.Values{} values.Set("minStartHeight", fmt.Sprint(minStartHeight)) err = c.c.WithContext(ctx).GET(fmt.Sprintf("/contract/%s/ancestors?"+values.Encode(), contractID), &contracts) diff --git a/internal/sql/migrations.go b/internal/sql/migrations.go index b70ca0ddd..d44f487e3 100644 --- a/internal/sql/migrations.go +++ b/internal/sql/migrations.go @@ -238,6 +238,12 @@ var ( return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00002_idx_wallet_metrics_immature", log) }, }, + { + ID: "00003_drop_download_spending", + Migrate: func(tx Tx) error { + return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00003_drop_download_spending", log) + }, + }, } } ) diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index bdff91d56..b92b66443 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -269,7 +269,7 @@ func TestNewTestCluster(t *testing.T) { } // Now wait for the revision and proof to be caught by the hostdb. - var ac api.ArchivedContract + var ac api.ContractMetadata tt.Retry(20, time.Second, func() error { archivedContracts, err := cluster.Bus.AncestorContracts(context.Background(), renewalID, 0) if err != nil { @@ -935,9 +935,6 @@ func TestUploadDownloadSpending(t *testing.T) { if !c.Spending.Uploads.IsZero() { t.Fatal("upload spending should be zero") } - if !c.Spending.Downloads.IsZero() { - t.Fatal("download spending should be zero") - } if !c.Spending.FundAccount.IsZero() { nFunded++ if c.RevisionNumber == 0 { @@ -1064,9 +1061,6 @@ func TestUploadDownloadSpending(t *testing.T) { if c.Spending.Uploads.IsZero() { t.Fatal("upload spending shouldn't be zero") } - if !c.Spending.Downloads.IsZero() { - t.Fatal("download spending should be zero") - } if c.RevisionNumber == 0 { t.Fatalf("revision number for contract wasn't recorded: %v", c.RevisionNumber) } @@ -2456,8 +2450,6 @@ func TestBusRecordedMetrics(t *testing.T) { t.Fatal("expected zero RevisionNumber") } else if !m.UploadSpending.IsZero() { t.Fatal("expected zero UploadSpending") - } else if !m.DownloadSpending.IsZero() { - t.Fatal("expected zero DownloadSpending") } else if m.FundAccountSpending == (types.Currency{}) { t.Fatal("expected non-zero FundAccountSpending") } else if !m.DeleteSpending.IsZero() { diff --git a/stores/metadata.go b/stores/metadata.go index 03de23cbc..6ca61ff63 100644 --- a/stores/metadata.go +++ b/stores/metadata.go @@ -146,7 +146,7 @@ func (s *SQLStore) AddRenewedContract(ctx context.Context, c rhpv2.ContractRevis return } -func (s *SQLStore) AncestorContracts(ctx context.Context, id types.FileContractID, startHeight uint64) (ancestors []api.ArchivedContract, err error) { +func (s *SQLStore) AncestorContracts(ctx context.Context, id types.FileContractID, startHeight uint64) (ancestors []api.ContractMetadata, err error) { err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { ancestors, err = tx.AncestorContracts(ctx, id, startHeight) return err @@ -382,7 +382,6 @@ func (s *SQLStore) RecordContractSpending(ctx context.Context, records []api.Con RemainingFunds: latestValues[fcid].validRenterPayout, RevisionNumber: latestValues[fcid].revision, UploadSpending: contract.Spending.Uploads.Add(newSpending.Uploads), - DownloadSpending: contract.Spending.Downloads.Add(newSpending.Downloads), FundAccountSpending: contract.Spending.FundAccount.Add(newSpending.FundAccount), DeleteSpending: contract.Spending.Deletions.Add(newSpending.Deletions), ListSpending: contract.Spending.SectorRoots.Add(newSpending.SectorRoots), @@ -393,9 +392,6 @@ func (s *SQLStore) RecordContractSpending(ctx context.Context, records []api.Con if !newSpending.Uploads.IsZero() { updates.Uploads = m.UploadSpending } - if !newSpending.Downloads.IsZero() { - updates.Downloads = m.DownloadSpending - } if !newSpending.FundAccount.IsZero() { updates.FundAccount = m.FundAccountSpending } diff --git a/stores/metadata_test.go b/stores/metadata_test.go index 2512ff28a..9d2c8a38c 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -453,19 +453,15 @@ func TestSQLContractStore(t *testing.T) { t.Fatal(err) } expected := api.ContractMetadata{ - ID: fcid, - HostIP: "address", - HostKey: hk, - StartHeight: 100, - State: api.ContractStatePending, - WindowStart: 400, - WindowEnd: 500, - RenewedFrom: types.FileContractID{}, - Spending: api.ContractSpending{ - Uploads: types.ZeroCurrency, - Downloads: types.ZeroCurrency, - FundAccount: types.ZeroCurrency, - }, + ID: fcid, + HostIP: "address", + HostKey: hk, + StartHeight: 100, + State: api.ContractStatePending, + WindowStart: 400, + WindowEnd: 500, + RenewedFrom: types.FileContractID{}, + Spending: api.ContractSpending{}, ContractPrice: types.NewCurrency64(1), TotalCost: totalCost, Size: c.Revision.Filesize, @@ -641,14 +637,14 @@ func TestRenewedContract(t *testing.T) { } // record contract spending + s := api.ContractSpending{ + Uploads: types.Siacoins(1), + FundAccount: types.Siacoins(2), + Deletions: types.Siacoins(3), + SectorRoots: types.Siacoins(4), + } if err := ss.RecordContractSpending(context.Background(), []api.ContractSpendingRecord{ - {ContractID: fcid, RevisionNumber: 1, Size: rhpv2.SectorSize, ContractSpending: api.ContractSpending{ - Uploads: types.Siacoins(1), - Downloads: types.Siacoins(2), - FundAccount: types.Siacoins(3), - Deletions: types.Siacoins(4), - SectorRoots: types.Siacoins(5), - }}, + {ContractID: fcid, RevisionNumber: 1, Size: rhpv2.SectorSize, ContractSpending: s}, }); err != nil { t.Fatal(err) } @@ -738,7 +734,6 @@ func TestRenewedContract(t *testing.T) { State: api.ContractStatePending, Spending: api.ContractSpending{ Uploads: types.ZeroCurrency, - Downloads: types.ZeroCurrency, FundAccount: types.ZeroCurrency, }, ContractPrice: types.NewCurrency64(3), @@ -756,18 +751,21 @@ func TestRenewedContract(t *testing.T) { } else if len(ancestors) != 1 { t.Fatalf("expected 1 ancestor but got %v", len(ancestors)) } - expectedContract := api.ArchivedContract{ + t.Log("del", s.Deletions.String()) + t.Log("ul", s.Uploads.String()) + t.Log("roots", s.SectorRoots.String()) + t.Log("fund", s.FundAccount.String()) + t.Log("- - ") + t.Log("del", ancestors[0].Spending.Deletions.String()) + t.Log("ul", ancestors[0].Spending.Uploads.String()) + t.Log("roots", ancestors[0].Spending.SectorRoots.String()) + t.Log("fund", ancestors[0].Spending.FundAccount.String()) + expectedContract := api.ContractMetadata{ ID: fcid, HostIP: "address", HostKey: c.HostKey(), RenewedTo: fcidR, - Spending: api.ContractSpending{ - Uploads: types.Siacoins(1), - Downloads: types.Siacoins(2), - FundAccount: types.Siacoins(3), - Deletions: types.Siacoins(4), - SectorRoots: types.ZeroCurrency, // currently not persisted - }, + Spending: s, ArchivalReason: api.ContractArchivalReasonRenewed, ContractPrice: types.NewCurrency64(1), @@ -857,7 +855,7 @@ func TestAncestorsContracts(t *testing.T) { if j := len(fcids) - 1 - i; j >= 0 { renewedTo = fcids[j] } - expected := api.ArchivedContract{ + expected := api.ContractMetadata{ ArchivalReason: api.ContractArchivalReasonRenewed, ID: fcids[len(fcids)-2-i], HostKey: hk, @@ -1184,13 +1182,9 @@ func TestSQLMetadataStore(t *testing.T) { WindowEnd: 500, ContractPrice: types.ZeroCurrency, RenewedFrom: types.FileContractID{}, - Spending: api.ContractSpending{ - Uploads: types.ZeroCurrency, - Downloads: types.ZeroCurrency, - FundAccount: types.ZeroCurrency, - }, - TotalCost: totalCost1, - ContractSets: nil, + Spending: api.ContractSpending{}, + TotalCost: totalCost1, + ContractSets: nil, } expectedObjSlab2 := object.Slab{ @@ -1223,13 +1217,9 @@ func TestSQLMetadataStore(t *testing.T) { WindowEnd: 500, ContractPrice: types.ZeroCurrency, RenewedFrom: types.FileContractID{}, - Spending: api.ContractSpending{ - Uploads: types.ZeroCurrency, - Downloads: types.ZeroCurrency, - FundAccount: types.ZeroCurrency, - }, - TotalCost: totalCost2, - ContractSets: nil, + Spending: api.ContractSpending{}, + TotalCost: totalCost2, + ContractSets: nil, } // Compare slabs. @@ -2413,10 +2403,9 @@ func TestRecordContractSpending(t *testing.T) { // Record some spending. expectedSpending := api.ContractSpending{ Uploads: types.Siacoins(1), - Downloads: types.Siacoins(2), - FundAccount: types.Siacoins(3), - Deletions: types.Siacoins(4), - SectorRoots: types.Siacoins(5), + FundAccount: types.Siacoins(2), + Deletions: types.Siacoins(3), + SectorRoots: types.Siacoins(4), } err = ss.RecordContractSpending(context.Background(), []api.ContractSpendingRecord{ // non-existent contract diff --git a/stores/metrics_test.go b/stores/metrics_test.go index 9a9f7b71b..d6453dd3a 100644 --- a/stores/metrics_test.go +++ b/stores/metrics_test.go @@ -118,7 +118,6 @@ func TestContractMetrics(t *testing.T) { RemainingFunds: types.NewCurrency(frand.Uint64n(math.MaxUint64), frand.Uint64n(math.MaxUint64)), RevisionNumber: math.MaxUint64, UploadSpending: types.NewCurrency(frand.Uint64n(math.MaxUint64), frand.Uint64n(math.MaxUint64)), - DownloadSpending: types.NewCurrency(frand.Uint64n(math.MaxUint64), frand.Uint64n(math.MaxUint64)), FundAccountSpending: types.NewCurrency(frand.Uint64n(math.MaxUint64), frand.Uint64n(math.MaxUint64)), DeleteSpending: types.NewCurrency(frand.Uint64n(math.MaxUint64), frand.Uint64n(math.MaxUint64)), ListSpending: types.NewCurrency64(1), @@ -189,7 +188,6 @@ func TestContractMetrics(t *testing.T) { expectedMetric.RemainingFunds, _ = metricsTimeAsc[2*i].RemainingFunds.AddWithOverflow(metricsTimeAsc[2*i+1].RemainingFunds) expectedMetric.RevisionNumber = 0 expectedMetric.UploadSpending, _ = metricsTimeAsc[2*i].UploadSpending.AddWithOverflow(metricsTimeAsc[2*i+1].UploadSpending) - expectedMetric.DownloadSpending, _ = metricsTimeAsc[2*i].DownloadSpending.AddWithOverflow(metricsTimeAsc[2*i+1].DownloadSpending) expectedMetric.FundAccountSpending, _ = metricsTimeAsc[2*i].FundAccountSpending.AddWithOverflow(metricsTimeAsc[2*i+1].FundAccountSpending) expectedMetric.DeleteSpending, _ = metricsTimeAsc[2*i].DeleteSpending.AddWithOverflow(metricsTimeAsc[2*i+1].DeleteSpending) expectedMetric.ListSpending, _ = metricsTimeAsc[2*i].ListSpending.AddWithOverflow(metricsTimeAsc[2*i+1].ListSpending) diff --git a/stores/sql/database.go b/stores/sql/database.go index 31dbaf280..5fe377a1c 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -66,7 +66,7 @@ type ( // AncestorContracts returns all ancestor contracts of the contract up // until the given start height. - AncestorContracts(ctx context.Context, id types.FileContractID, startHeight uint64) ([]api.ArchivedContract, error) + AncestorContracts(ctx context.Context, id types.FileContractID, startHeight uint64) ([]api.ContractMetadata, error) // ArchiveContract moves a contract from the regular contracts to the // archived ones. diff --git a/stores/sql/main.go b/stores/sql/main.go index 625c847fc..67715cecd 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -122,47 +122,43 @@ func Accounts(ctx context.Context, tx sql.Tx, owner string) ([]api.Account, erro return accounts, nil } -func AncestorContracts(ctx context.Context, tx sql.Tx, fcid types.FileContractID, startHeight uint64) ([]api.ArchivedContract, error) { +func AncestorContracts(ctx context.Context, tx sql.Tx, fcid types.FileContractID, startHeight uint64) (ancestors []api.ContractMetadata, _ error) { rows, err := tx.Query(ctx, ` - WITH RECURSIVE ancestors AS + WITH RECURSIVE c AS ( SELECT * FROM contracts WHERE renewed_to = ? UNION ALL SELECT contracts.* - FROM ancestors, contracts - WHERE contracts.renewed_to = ancestors.fcid + FROM c, contracts + WHERE contracts.renewed_to = c.fcid ) - SELECT fcid, h.public_key, renewed_to, upload_spending, download_spending, fund_account_spending, delete_spending, - proof_height, revision_height, revision_number, size, start_height, state, window_start, window_end, - COALESCE(h.net_address, ''), contract_price, renewed_from, total_cost, archival_reason - FROM ancestors - LEFT JOIN hosts h ON h.public_key = ancestors.host_key - WHERE start_height >= ? + SELECT + c.created_at, c.fcid, c.host_key, + c.archival_reason, c.proof_height, c.renewed_from, c.renewed_to, c.revision_height, c.revision_number, c.size, c.start_height, c.state, c.window_start, c.window_end, + c.contract_price, c.total_cost, + c.delete_spending, c.fund_account_spending, c.list_spending, c.upload_spending, + "", COALESCE(h.net_address, ""), COALESCE(h.settings->>'$.siamuxport', "") + FROM contracts AS c + LEFT JOIN hosts h ON h.public_key = c.host_key + WHERE start_height >= ? AND archival_reason != '' + ORDER BY start_height DESC `, FileContractID(fcid), startHeight) if err != nil { return nil, fmt.Errorf("failed to fetch ancestor contracts: %w", err) } defer rows.Close() - var contracts []api.ArchivedContract for rows.Next() { - var c api.ArchivedContract - var state ContractState - err := rows.Scan((*FileContractID)(&c.ID), (*PublicKey)(&c.HostKey), (*FileContractID)(&c.RenewedTo), - (*Currency)(&c.Spending.Uploads), (*Currency)(&c.Spending.Downloads), (*Currency)(&c.Spending.FundAccount), - (*Currency)(&c.Spending.Deletions), &c.ProofHeight, - &c.RevisionHeight, &c.RevisionNumber, &c.Size, &c.StartHeight, &state, &c.WindowStart, - &c.WindowEnd, &c.HostIP, (*Currency)(&c.ContractPrice), (*FileContractID)(&c.RenewedFrom), - (*Currency)(&c.TotalCost), &c.ArchivalReason) - if err != nil { - return nil, fmt.Errorf("failed to scan contract: %w", err) + var r ContractRow + if err := r.Scan(rows); err != nil { + return nil, fmt.Errorf("failed to scan ancestor: %w", err) } - c.State = state.String() - contracts = append(contracts, c) + ancestors = append(ancestors, r.ContractMetadata()) } - return contracts, nil + + return } func ArchiveContract(ctx context.Context, tx sql.Tx, fcid types.FileContractID, reason string) error { @@ -728,15 +724,15 @@ func InsertContract(ctx context.Context, tx sql.Tx, rev rhpv2.ContractRevision, res, err := tx.Exec(ctx, ` INSERT INTO contracts ( - created_at, - fcid, host_key, proof_height, revision_height, revision_number, size, start_height, state, window_start, window_end, + created_at, fcid, host_key, + proof_height, revision_height, revision_number, size, start_height, state, window_start, window_end, contract_price, total_cost, - delete_spending, download_spending, fund_account_spending, list_spending,upload_spending -) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, - time.Now(), - FileContractID(rev.ID()), PublicKey(rev.HostKey()), 0, 0, "0", rev.Revision.Filesize, startHeight, contractState, rev.Revision.WindowStart, rev.Revision.WindowEnd, + delete_spending, fund_account_spending, list_spending, upload_spending +) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, + time.Now(), FileContractID(rev.ID()), PublicKey(rev.HostKey()), + 0, 0, "0", rev.Revision.Filesize, startHeight, contractState, rev.Revision.WindowStart, rev.Revision.WindowEnd, Currency(contractPrice), Currency(totalCost), - ZeroCurrency, ZeroCurrency, ZeroCurrency, ZeroCurrency, ZeroCurrency) + ZeroCurrency, ZeroCurrency, ZeroCurrency, ZeroCurrency) if err != nil { return api.ContractMetadata{}, fmt.Errorf("failed to insert contract: %w", err) } @@ -1878,7 +1874,7 @@ SELECT c.created_at, c.fcid, c.host_key, c.archival_reason, c.proof_height, c.renewed_from, c.renewed_to, c.revision_height, c.revision_number, c.size, c.start_height, c.state, c.window_start, c.window_end, c.contract_price, c.total_cost, - c.delete_spending, c.download_spending, c.fund_account_spending, c.list_spending, c.upload_spending, + c.delete_spending, c.fund_account_spending, c.list_spending, c.upload_spending, "", "", "" FROM contracts AS c WHERE fcid = ?`, FileContractID(renewedFrom))) @@ -1894,12 +1890,12 @@ UPDATE contracts SET created_at = ?, fcid = ?, proof_height = ?, renewed_from = ?, renewed_to = ?, revision_height = ?, revision_number = ?, size = ?, start_height = ?, state = ?, window_start = ?, window_end = ?, contract_price = ?, total_cost = ?, - delete_spending = ?, download_spending = ?, fund_account_spending = ?, list_spending = ?, upload_spending = ? + delete_spending = ?, fund_account_spending = ?, list_spending = ?, upload_spending = ? WHERE fcid = ?`, time.Now(), FileContractID(rev.ID()), 0, FileContractID(renewedFrom), FileContractID(types.FileContractID{}), 0, fmt.Sprint(rev.Revision.RevisionNumber), rev.Revision.Filesize, startHeight, contractState, rev.Revision.WindowStart, rev.Revision.WindowEnd, Currency(contractPrice), Currency(totalCost), - ZeroCurrency, ZeroCurrency, ZeroCurrency, ZeroCurrency, ZeroCurrency, + ZeroCurrency, ZeroCurrency, ZeroCurrency, ZeroCurrency, FileContractID(renewedFrom), ) if err != nil { @@ -1912,12 +1908,12 @@ INSERT INTO contracts ( created_at, fcid, host_key, archival_reason, proof_height, renewed_from, renewed_to, revision_height, revision_number, size, start_height, state, window_start, window_end, contract_price, total_cost, - delete_spending, download_spending, fund_account_spending, list_spending, upload_spending -) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, + delete_spending, fund_account_spending, list_spending, upload_spending +) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, r.CreatedAt, r.FCID, r.HostKey, api.ContractArchivalReasonRenewed, r.ProofHeight, r.RenewedFrom, FileContractID(rev.ID()), r.RevisionHeight, r.RevisionNumber, r.Size, r.StartHeight, r.State, r.WindowStart, r.WindowEnd, r.ContractPrice, r.TotalCost, - r.DeleteSpending, r.DownloadSpending, r.FundAccountSpending, r.ListSpending, r.UploadSpending) + r.DeleteSpending, r.FundAccountSpending, r.ListSpending, r.UploadSpending) if err != nil { return api.ContractMetadata{}, fmt.Errorf("failed to insert archived contract: %w", err) } else if n, err := res.RowsAffected(); err != nil { @@ -1940,10 +1936,10 @@ SELECT c.created_at, c.fcid, c.host_key, c.archival_reason, c.proof_height, c.renewed_from, c.renewed_to, c.revision_height, c.revision_number, c.size, c.start_height, c.state, c.window_start, c.window_end, c.contract_price, c.total_cost, - c.delete_spending, c.download_spending, c.fund_account_spending, c.list_spending, c.upload_spending, - COALESCE(cs.name, ""), COALESCE(h.net_address, ""), h.settings->>'$.siamuxport' AS siamux_port + c.delete_spending, c.fund_account_spending, c.list_spending, c.upload_spending, + COALESCE(cs.name, ""), COALESCE(h.net_address, ""), COALESCE(h.settings->>'$.siamuxport', "") AS siamux_port FROM contracts AS c -INNER JOIN hosts h ON h.public_key = c.host_key +LEFT JOIN hosts h ON h.public_key = c.host_key LEFT JOIN contract_set_contracts csc ON csc.db_contract_id = c.id LEFT JOIN contract_sets cs ON cs.id = csc.db_contract_set_id %s @@ -2770,10 +2766,6 @@ func RecordContractSpending(ctx context.Context, tx Tx, fcid types.FileContractI updateKeys = append(updateKeys, "upload_spending = ?") updateValues = append(updateValues, Currency(newSpending.Uploads)) } - if !newSpending.Downloads.IsZero() { - updateKeys = append(updateKeys, "download_spending = ?") - updateValues = append(updateValues, Currency(newSpending.Downloads)) - } if !newSpending.FundAccount.IsZero() { updateKeys = append(updateKeys, "fund_account_spending = ?") updateValues = append(updateValues, Currency(newSpending.FundAccount)) diff --git a/stores/sql/metrics.go b/stores/sql/metrics.go index 6f6e5420f..89f76c53b 100644 --- a/stores/sql/metrics.go +++ b/stores/sql/metrics.go @@ -43,7 +43,6 @@ func ContractMetrics(ctx context.Context, tx sql.Tx, start time.Time, n uint64, (*Unsigned64)(&cm.RemainingFunds.Lo), (*Unsigned64)(&cm.RemainingFunds.Hi), &placeHolderRevisionNumber, (*Unsigned64)(&cm.UploadSpending.Lo), (*Unsigned64)(&cm.UploadSpending.Hi), - (*Unsigned64)(&cm.DownloadSpending.Lo), (*Unsigned64)(&cm.DownloadSpending.Hi), (*Unsigned64)(&cm.FundAccountSpending.Lo), (*Unsigned64)(&cm.FundAccountSpending.Hi), (*Unsigned64)(&cm.DeleteSpending.Lo), (*Unsigned64)(&cm.DeleteSpending.Hi), (*Unsigned64)(&cm.ListSpending.Lo), (*Unsigned64)(&cm.ListSpending.Hi), @@ -196,7 +195,7 @@ func PruneMetrics(ctx context.Context, tx sql.Tx, metric string, cutoff time.Tim } func RecordContractMetric(ctx context.Context, tx sql.Tx, metrics ...api.ContractMetric) error { - insertStmt, err := tx.Prepare(ctx, "INSERT INTO contracts (created_at, timestamp, fcid, host, remaining_collateral_lo, remaining_collateral_hi, remaining_funds_lo, remaining_funds_hi, revision_number, upload_spending_lo, upload_spending_hi, download_spending_lo, download_spending_hi, fund_account_spending_lo, fund_account_spending_hi, delete_spending_lo, delete_spending_hi, list_spending_lo, list_spending_hi) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)") + insertStmt, err := tx.Prepare(ctx, "INSERT INTO contracts (created_at, timestamp, fcid, host, remaining_collateral_lo, remaining_collateral_hi, remaining_funds_lo, remaining_funds_hi, revision_number, upload_spending_lo, upload_spending_hi, fund_account_spending_lo, fund_account_spending_hi, delete_spending_lo, delete_spending_hi, list_spending_lo, list_spending_hi) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)") if err != nil { return fmt.Errorf("failed to prepare statement to insert contract metric: %w", err) } @@ -232,8 +231,6 @@ func RecordContractMetric(ctx context.Context, tx sql.Tx, metrics ...api.Contrac Unsigned64(metric.RevisionNumber), Unsigned64(metric.UploadSpending.Lo), Unsigned64(metric.UploadSpending.Hi), - Unsigned64(metric.DownloadSpending.Lo), - Unsigned64(metric.DownloadSpending.Hi), Unsigned64(metric.FundAccountSpending.Lo), Unsigned64(metric.FundAccountSpending.Hi), Unsigned64(metric.DeleteSpending.Lo), @@ -606,7 +603,6 @@ func aggregateMetrics(x, y api.ContractMetric) (out api.ContractMetric) { out.RemainingCollateral, _ = out.RemainingCollateral.AddWithOverflow(y.RemainingCollateral) out.RemainingFunds, _ = out.RemainingFunds.AddWithOverflow(y.RemainingFunds) out.UploadSpending, _ = out.UploadSpending.AddWithOverflow(y.UploadSpending) - out.DownloadSpending, _ = out.DownloadSpending.AddWithOverflow(y.DownloadSpending) out.FundAccountSpending, _ = out.FundAccountSpending.AddWithOverflow(y.FundAccountSpending) out.DeleteSpending, _ = out.DeleteSpending.AddWithOverflow(y.DeleteSpending) out.ListSpending, _ = out.ListSpending.AddWithOverflow(y.ListSpending) diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index 5b96cc998..356103138 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -176,7 +176,7 @@ func (tx *MainDatabaseTx) AddWebhook(ctx context.Context, wh webhooks.Webhook) e return nil } -func (tx *MainDatabaseTx) AncestorContracts(ctx context.Context, fcid types.FileContractID, startHeight uint64) ([]api.ArchivedContract, error) { +func (tx *MainDatabaseTx) AncestorContracts(ctx context.Context, fcid types.FileContractID, startHeight uint64) ([]api.ContractMetadata, error) { return ssql.AncestorContracts(ctx, tx, fcid, startHeight) } diff --git a/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql b/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql index 0711a04f9..f138c7ac4 100644 --- a/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql +++ b/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql @@ -1,6 +1,5 @@ /* TODOs: -- drop download_spending - rename total_cost */ @@ -28,7 +27,6 @@ CREATE TABLE contracts_temp ( `total_cost` longtext, `delete_spending` longtext, - `download_spending` longtext, `fund_account_spending` longtext, `list_spending` longtext, `upload_spending` longtext, @@ -64,7 +62,6 @@ INSERT INTO contracts_temp ( contract_price, total_cost, delete_spending, - download_spending, fund_account_spending, list_spending, upload_spending @@ -85,7 +82,6 @@ INSERT INTO contracts_temp ( c.contract_price, c.total_cost, c.delete_spending, - c.download_spending, c.fund_account_spending, c.list_spending, c.upload_spending @@ -110,7 +106,6 @@ INSERT INTO contracts_temp ( contract_price, total_cost, delete_spending, - download_spending, fund_account_spending, list_spending, upload_spending @@ -132,7 +127,6 @@ INSERT INTO contracts_temp ( ac.contract_price, ac.total_cost, ac.delete_spending, - ac.download_spending, ac.fund_account_spending, ac.list_spending, ac.upload_spending diff --git a/stores/sql/mysql/migrations/main/schema.sql b/stores/sql/mysql/migrations/main/schema.sql index 19168f24d..3b193cd0e 100644 --- a/stores/sql/mysql/migrations/main/schema.sql +++ b/stores/sql/mysql/migrations/main/schema.sql @@ -93,7 +93,6 @@ CREATE TABLE `contracts` ( `total_cost` longtext, `delete_spending` longtext, - `download_spending` longtext, `fund_account_spending` longtext, `list_spending` longtext, `upload_spending` longtext, diff --git a/stores/sql/mysql/migrations/metrics/migration_00003_drop_download_spending.sql b/stores/sql/mysql/migrations/metrics/migration_00003_drop_download_spending.sql new file mode 100644 index 000000000..121283c38 --- /dev/null +++ b/stores/sql/mysql/migrations/metrics/migration_00003_drop_download_spending.sql @@ -0,0 +1 @@ +ALTER TABLE contracts DROP COLUMN download_spending_lo, download_spending_hi; \ No newline at end of file diff --git a/stores/sql/mysql/migrations/metrics/schema.sql b/stores/sql/mysql/migrations/metrics/schema.sql index 7c4c27d6c..b4bca9d35 100644 --- a/stores/sql/mysql/migrations/metrics/schema.sql +++ b/stores/sql/mysql/migrations/metrics/schema.sql @@ -63,8 +63,6 @@ CREATE TABLE `contracts` ( `revision_number` bigint NOT NULL, `upload_spending_lo` bigint NOT NULL, `upload_spending_hi` bigint NOT NULL, - `download_spending_lo` bigint NOT NULL, - `download_spending_hi` bigint NOT NULL, `fund_account_spending_lo` bigint NOT NULL, `fund_account_spending_hi` bigint NOT NULL, `delete_spending_lo` bigint NOT NULL, @@ -77,7 +75,6 @@ CREATE TABLE `contracts` ( KEY `idx_remaining_collateral` (`remaining_collateral_lo`,`remaining_collateral_hi`), KEY `idx_contracts_revision_number` (`revision_number`), KEY `idx_upload_spending` (`upload_spending_lo`,`upload_spending_hi`), - KEY `idx_download_spending` (`download_spending_lo`,`download_spending_hi`), KEY `idx_fund_account_spending` (`fund_account_spending_lo`,`fund_account_spending_hi`), KEY `idx_contracts_timestamp` (`timestamp`), KEY `idx_remaining_funds` (`remaining_funds_lo`,`remaining_funds_hi`), diff --git a/stores/sql/rows.go b/stores/sql/rows.go index c0054f66e..52deeabb5 100644 --- a/stores/sql/rows.go +++ b/stores/sql/rows.go @@ -36,7 +36,6 @@ type ContractRow struct { // spending fields DeleteSpending Currency - DownloadSpending Currency FundAccountSpending Currency ListSpending Currency UploadSpending Currency @@ -52,7 +51,7 @@ func (r *ContractRow) Scan(s Scanner) error { &r.CreatedAt, &r.FCID, &r.HostKey, &r.ArchivalReason, &r.ProofHeight, &r.RenewedFrom, &r.RenewedTo, &r.RevisionHeight, &r.RevisionNumber, &r.Size, &r.StartHeight, &r.State, &r.WindowStart, &r.WindowEnd, &r.ContractPrice, &r.TotalCost, - &r.DeleteSpending, &r.DownloadSpending, &r.FundAccountSpending, &r.ListSpending, &r.UploadSpending, + &r.DeleteSpending, &r.FundAccountSpending, &r.ListSpending, &r.UploadSpending, &r.ContractSet, &r.NetAddress, &r.SiamuxPort, ) } @@ -62,33 +61,43 @@ func (r *ContractRow) ContractMetadata() api.ContractMetadata { if r.ContractSet != "" { sets = append(sets, r.ContractSet) } - return api.ContractMetadata{ - ContractPrice: types.Currency(r.ContractPrice), - ID: types.FileContractID(r.FCID), - HostIP: r.NetAddress, - HostKey: types.PublicKey(r.HostKey), - SiamuxAddr: rhpv2.HostSettings{ + + var siamuxAddr string + if r.NetAddress != "" && r.SiamuxPort != "" { + siamuxAddr = rhpv2.HostSettings{ NetAddress: r.NetAddress, SiaMuxPort: r.SiamuxPort, - }.SiamuxAddr(), + }.SiamuxAddr() + } - RenewedFrom: types.FileContractID(r.RenewedFrom), - TotalCost: types.Currency(r.TotalCost), - Spending: api.ContractSpending{ - Uploads: types.Currency(r.UploadSpending), - Downloads: types.Currency(r.DownloadSpending), - FundAccount: types.Currency(r.FundAccountSpending), - Deletions: types.Currency(r.DeleteSpending), - SectorRoots: types.Currency(r.ListSpending), - }, + return api.ContractMetadata{ + ID: types.FileContractID(r.FCID), + HostIP: r.NetAddress, + HostKey: types.PublicKey(r.HostKey), + SiamuxAddr: siamuxAddr, + + ArchivalReason: r.ArchivalReason, ProofHeight: r.ProofHeight, + RenewedFrom: types.FileContractID(r.RenewedFrom), + RenewedTo: types.FileContractID(r.RenewedTo), RevisionHeight: r.RevisionHeight, RevisionNumber: r.RevisionNumber, - ContractSets: sets, Size: r.Size, StartHeight: r.StartHeight, State: r.State.String(), WindowStart: r.WindowStart, WindowEnd: r.WindowEnd, + + ContractPrice: types.Currency(r.ContractPrice), + TotalCost: types.Currency(r.TotalCost), + + Spending: api.ContractSpending{ + Uploads: types.Currency(r.UploadSpending), + FundAccount: types.Currency(r.FundAccountSpending), + Deletions: types.Currency(r.DeleteSpending), + SectorRoots: types.Currency(r.ListSpending), + }, + + ContractSets: sets, } } diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index 9b1ce9f12..2fafc3ba8 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -175,7 +175,7 @@ func (tx *MainDatabaseTx) AddWebhook(ctx context.Context, wh webhooks.Webhook) e return nil } -func (tx *MainDatabaseTx) AncestorContracts(ctx context.Context, fcid types.FileContractID, startHeight uint64) ([]api.ArchivedContract, error) { +func (tx *MainDatabaseTx) AncestorContracts(ctx context.Context, fcid types.FileContractID, startHeight uint64) ([]api.ContractMetadata, error) { return ssql.AncestorContracts(ctx, tx, fcid, startHeight) } diff --git a/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql b/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql index 3d09a8178..1d72befd8 100644 --- a/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql +++ b/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql @@ -22,7 +22,6 @@ CREATE TABLE contracts_temp ( `total_cost` text, `delete_spending` text, - `download_spending` text, `list_spending` text, `fund_account_spending` text, `upload_spending` text @@ -57,7 +56,6 @@ INSERT INTO contracts_temp ( contract_price, total_cost, delete_spending, - download_spending, fund_account_spending, list_spending, upload_spending @@ -78,7 +76,6 @@ INSERT INTO contracts_temp ( c.contract_price, c.total_cost, c.delete_spending, - c.download_spending, c.fund_account_spending, c.list_spending, c.upload_spending @@ -103,7 +100,6 @@ INSERT INTO contracts_temp ( contract_price, total_cost, delete_spending, - download_spending, fund_account_spending, list_spending, upload_spending @@ -125,7 +121,6 @@ INSERT INTO contracts_temp ( ac.contract_price, ac.total_cost, ac.delete_spending, - ac.download_spending, ac.fund_account_spending, ac.list_spending, ac.upload_spending diff --git a/stores/sql/sqlite/migrations/main/schema.sql b/stores/sql/sqlite/migrations/main/schema.sql index 8c24a3eb4..860e3e2c2 100644 --- a/stores/sql/sqlite/migrations/main/schema.sql +++ b/stores/sql/sqlite/migrations/main/schema.sql @@ -8,7 +8,7 @@ CREATE INDEX `idx_hosts_public_key` ON `hosts`(`public_key`); CREATE INDEX `idx_hosts_net_address` ON `hosts`(`net_address`); -- dbContract -CREATE TABLE contracts (`id` integer PRIMARY KEY AUTOINCREMENT, `created_at` datetime, `fcid` blob NOT NULL UNIQUE, `host_key` blob NOT NULL, `archival_reason` text NOT NULL DEFAULT "", `proof_height` integer DEFAULT 0, `renewed_from` blob, `renewed_to` blob, `revision_height` integer DEFAULT 0, `revision_number` text NOT NULL DEFAULT "0", `size` integer, `start_height` integer NOT NULL, `state` integer NOT NULL DEFAULT 0, `window_start` integer NOT NULL DEFAULT 0, `window_end` integer NOT NULL DEFAULT 0, `contract_price` text, `total_cost` text, `delete_spending` text, `download_spending` text, `fund_account_spending` text, `list_spending` text, `upload_spending` text); +CREATE TABLE contracts (`id` integer PRIMARY KEY AUTOINCREMENT, `created_at` datetime, `fcid` blob NOT NULL UNIQUE, `host_key` blob NOT NULL, `archival_reason` text NOT NULL DEFAULT "", `proof_height` integer DEFAULT 0, `renewed_from` blob, `renewed_to` blob, `revision_height` integer DEFAULT 0, `revision_number` text NOT NULL DEFAULT "0", `size` integer, `start_height` integer NOT NULL, `state` integer NOT NULL DEFAULT 0, `window_start` integer NOT NULL DEFAULT 0, `window_end` integer NOT NULL DEFAULT 0, `contract_price` text, `total_cost` text, `delete_spending` text, `fund_account_spending` text, `list_spending` text, `upload_spending` text); CREATE INDEX `idx_contracts_archival_reason` ON `contracts`(`archival_reason`); CREATE INDEX `idx_contracts_fcid` ON `contracts`(`fcid`); CREATE INDEX `idx_contracts_host_key` ON `contracts`(`host_key`); diff --git a/stores/sql/sqlite/migrations/metrics/migration_00003_drop_download_spending.sql b/stores/sql/sqlite/migrations/metrics/migration_00003_drop_download_spending.sql new file mode 100644 index 000000000..121283c38 --- /dev/null +++ b/stores/sql/sqlite/migrations/metrics/migration_00003_drop_download_spending.sql @@ -0,0 +1 @@ +ALTER TABLE contracts DROP COLUMN download_spending_lo, download_spending_hi; \ No newline at end of file diff --git a/stores/sql/sqlite/migrations/metrics/schema.sql b/stores/sql/sqlite/migrations/metrics/schema.sql index dfb8e3cf1..289862930 100644 --- a/stores/sql/sqlite/migrations/metrics/schema.sql +++ b/stores/sql/sqlite/migrations/metrics/schema.sql @@ -1,5 +1,5 @@ -- dbContractMetric -CREATE TABLE `contracts` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at` datetime,`timestamp` BIGINT NOT NULL,`fcid` blob NOT NULL,`host` blob NOT NULL,`remaining_collateral_lo` BIGINT NOT NULL,`remaining_collateral_hi` BIGINT NOT NULL,`remaining_funds_lo` BIGINT NOT NULL,`remaining_funds_hi` BIGINT NOT NULL,`revision_number` BIGINT NOT NULL,`upload_spending_lo` BIGINT NOT NULL,`upload_spending_hi` BIGINT NOT NULL,`download_spending_lo` BIGINT NOT NULL,`download_spending_hi` BIGINT NOT NULL,`fund_account_spending_lo` BIGINT NOT NULL,`fund_account_spending_hi` BIGINT NOT NULL,`delete_spending_lo` BIGINT NOT NULL,`delete_spending_hi` BIGINT NOT NULL,`list_spending_lo` BIGINT NOT NULL,`list_spending_hi` BIGINT NOT NULL); +CREATE TABLE `contracts` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at` datetime,`timestamp` BIGINT NOT NULL,`fcid` blob NOT NULL,`host` blob NOT NULL,`remaining_collateral_lo` BIGINT NOT NULL,`remaining_collateral_hi` BIGINT NOT NULL,`remaining_funds_lo` BIGINT NOT NULL,`remaining_funds_hi` BIGINT NOT NULL,`revision_number` BIGINT NOT NULL,`upload_spending_lo` BIGINT NOT NULL,`upload_spending_hi` BIGINT NOT NULL,`fund_account_spending_lo` BIGINT NOT NULL,`fund_account_spending_hi` BIGINT NOT NULL,`delete_spending_lo` BIGINT NOT NULL,`delete_spending_hi` BIGINT NOT NULL,`list_spending_lo` BIGINT NOT NULL,`list_spending_hi` BIGINT NOT NULL); CREATE INDEX `idx_list_spending` ON `contracts`(`list_spending_lo`,`list_spending_hi`); CREATE INDEX `idx_fund_account_spending` ON `contracts`(`fund_account_spending_lo`,`fund_account_spending_hi`); CREATE INDEX `idx_contracts_fc_id` ON `contracts`(`fcid`); @@ -7,7 +7,6 @@ CREATE INDEX `idx_remaining_collateral` ON `contracts`(`remaining_collateral_lo` CREATE INDEX `idx_contracts_host` ON `contracts`(`host`); CREATE INDEX `idx_contracts_timestamp` ON `contracts`(`timestamp`); CREATE INDEX `idx_delete_spending` ON `contracts`(`delete_spending_lo`,`delete_spending_hi`); -CREATE INDEX `idx_download_spending` ON `contracts`(`download_spending_lo`,`download_spending_hi`); CREATE INDEX `idx_upload_spending` ON `contracts`(`upload_spending_lo`,`upload_spending_hi`); CREATE INDEX `idx_contracts_revision_number` ON `contracts`(`revision_number`); CREATE INDEX `idx_remaining_funds` ON `contracts`(`remaining_funds_lo`,`remaining_funds_hi`); From fdbb15eaf3b724f8b60011c3491468e7b6b64a73 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 5 Sep 2024 15:04:45 +0200 Subject: [PATCH 054/708] stores: rename total_cost --- api/contract.go | 26 ++-- autopilot/contractor/contract_spending.go | 4 +- autopilot/contractor/contractor.go | 8 +- autopilot/contractor/hostfilter.go | 8 +- bus/bus.go | 12 +- bus/client/contracts.go | 26 ++-- bus/routes.go | 12 +- internal/test/e2e/cluster_test.go | 4 +- stores/metadata.go | 8 +- stores/metadata_test.go | 140 +++++++++--------- stores/sql/database.go | 4 +- stores/sql/main.go | 22 +-- stores/sql/mysql/main.go | 8 +- .../migration_00017_archived_contracts.sql | 11 +- stores/sql/mysql/migrations/main/schema.sql | 2 +- stores/sql/rows.go | 10 +- stores/sql/sqlite/main.go | 8 +- .../migration_00017_archived_contracts.sql | 6 +- stores/sql/sqlite/migrations/main/schema.sql | 2 +- 19 files changed, 154 insertions(+), 167 deletions(-) diff --git a/api/contract.go b/api/contract.go index 48aaf4235..0dab5f24e 100644 --- a/api/contract.go +++ b/api/contract.go @@ -67,8 +67,8 @@ type ( WindowStart uint64 `json:"windowStart"` WindowEnd uint64 `json:"windowEnd"` - ContractPrice types.Currency `json:"contractPrice"` - TotalCost types.Currency `json:"totalCost"` + ContractPrice types.Currency `json:"contractPrice"` + InitialRenterFunds types.Currency `json:"initialRenterFunds"` Spending ContractSpending `json:"spending"` @@ -116,11 +116,11 @@ type ( // ContractAddRequest is the request type for the /contract/:id endpoint. ContractAddRequest struct { - Contract rhpv2.ContractRevision `json:"contract"` - ContractPrice types.Currency `json:"contractPrice"` - StartHeight uint64 `json:"startHeight"` - State string `json:"state,omitempty"` - TotalCost types.Currency `json:"totalCost"` + Contract rhpv2.ContractRevision `json:"contract"` + ContractPrice types.Currency `json:"contractPrice"` + InitialRenterFunds types.Currency `json:"initialRenterFunds"` + StartHeight uint64 `json:"startHeight"` + State string `json:"state,omitempty"` } // ContractFormRequest is the request type for the POST /contracts endpoint. @@ -174,12 +174,12 @@ type ( // ContractRenewedRequest is the request type for the /contract/:id/renewed // endpoint. ContractRenewedRequest struct { - Contract rhpv2.ContractRevision `json:"contract"` - ContractPrice types.Currency `json:"contractPrice"` - RenewedFrom types.FileContractID `json:"renewedFrom"` - StartHeight uint64 `json:"startHeight"` - State string `json:"state,omitempty"` - TotalCost types.Currency `json:"totalCost"` + Contract rhpv2.ContractRevision `json:"contract"` + ContractPrice types.Currency `json:"contractPrice"` + InitialRenterFunds types.Currency `json:"initialRenterFunds"` + RenewedFrom types.FileContractID `json:"renewedFrom"` + StartHeight uint64 `json:"startHeight"` + State string `json:"state,omitempty"` } // ContractRootsResponse is the response type for the /contract/:id/roots diff --git a/autopilot/contractor/contract_spending.go b/autopilot/contractor/contract_spending.go index 54985a130..22790dbc1 100644 --- a/autopilot/contractor/contract_spending.go +++ b/autopilot/contractor/contract_spending.go @@ -10,7 +10,7 @@ import ( func currentPeriodSpending(contracts []api.ContractMetadata, currentPeriod uint64) types.Currency { totalCosts := make(map[types.FileContractID]types.Currency) for _, c := range contracts { - totalCosts[c.ID] = c.TotalCost + totalCosts[c.ID] = c.InitialRenterFunds } // filter contracts in the current period @@ -24,7 +24,7 @@ func currentPeriodSpending(contracts []api.ContractMetadata, currentPeriod uint6 // calculate the money allocated var totalAllocated types.Currency for _, contract := range filtered { - totalAllocated = totalAllocated.Add(contract.TotalCost) + totalAllocated = totalAllocated.Add(contract.InitialRenterFunds) } return totalAllocated } diff --git a/autopilot/contractor/contractor.go b/autopilot/contractor/contractor.go index 74a8dda30..70230f6ca 100644 --- a/autopilot/contractor/contractor.go +++ b/autopilot/contractor/contractor.go @@ -325,7 +325,7 @@ func (c *Contractor) refreshContract(ctx *mCtx, w Worker, contract api.Contract, } // update the budget - *budget = budget.Sub(renewal.TotalCost) + *budget = budget.Sub(renewal.InitialRenterFunds) // add to renewed set logger.Infow("refresh succeeded", @@ -357,7 +357,7 @@ func (c *Contractor) renewContract(ctx *mCtx, w Worker, contract api.Contract, h // calculate the renter funds for the renewal a.k.a. the funds the renter will // be able to spend minRenterFunds, _ := initialContractFundingMinMax(ctx.AutopilotConfig()) - renterFunds := renewFundingEstimate(minRenterFunds, contract.TotalCost, contract.RenterFunds(), logger) + renterFunds := renewFundingEstimate(minRenterFunds, contract.InitialRenterFunds, contract.RenterFunds(), logger) // check our budget if budget.Cmp(renterFunds) < 0 { @@ -392,7 +392,7 @@ func (c *Contractor) renewContract(ctx *mCtx, w Worker, contract api.Contract, h } // update the budget - *budget = budget.Sub(renewal.TotalCost) + *budget = budget.Sub(renewal.InitialRenterFunds) logger.Infow( "renewal succeeded", @@ -465,7 +465,7 @@ func (c *Contractor) broadcastRevisions(ctx context.Context, w Worker, contracts func (c *Contractor) refreshFundingEstimate(cfg api.AutopilotConfig, contract api.Contract, host api.Host, fee types.Currency, logger *zap.SugaredLogger) types.Currency { // refresh with 1.2x the funds - refreshAmount := contract.TotalCost.Mul64(6).Div64(5) + refreshAmount := contract.InitialRenterFunds.Mul64(6).Div64(5) // estimate the txn fee txnFeeEstimate := fee.Mul64(estimatedFileContractTransactionSetSize) diff --git a/autopilot/contractor/hostfilter.go b/autopilot/contractor/hostfilter.go index 3083976ed..100128ff7 100644 --- a/autopilot/contractor/hostfilter.go +++ b/autopilot/contractor/hostfilter.go @@ -138,9 +138,9 @@ func (c *Contractor) isUsableContract(cfg api.AutopilotConfig, s rhpv2.HostSetti } func isOutOfFunds(cfg api.AutopilotConfig, pt rhpv3.HostPriceTable, c api.Contract) bool { - // TotalCost should never be zero but for legacy reasons we check and return - // true should it be the case - if c.TotalCost.IsZero() { + // InitialRenterFunds should never be zero but for legacy reasons we check + // and return true should it be the case + if c.InitialRenterFunds.IsZero() { return true } @@ -148,7 +148,7 @@ func isOutOfFunds(cfg api.AutopilotConfig, pt rhpv3.HostPriceTable, c api.Contra Add(pt.AppendSectorCost(cfg.Contracts.Period)). Add(pt.ReadSectorCost(rhpv2.SectorSize)). Total() - percentRemaining, _ := big.NewRat(0, 1).SetFrac(c.RenterFunds().Big(), c.TotalCost.Big()).Float64() + percentRemaining, _ := big.NewRat(0, 1).SetFrac(c.RenterFunds().Big(), c.InitialRenterFunds.Big()).Float64() return c.RenterFunds().Cmp(sectorPrice.Mul64(3)) < 0 || percentRemaining < minContractFundUploadThreshold } diff --git a/bus/bus.go b/bus/bus.go index af5821ef5..1665947e2 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -210,8 +210,8 @@ type ( // A MetadataStore stores information about contracts and objects. MetadataStore interface { - AddContract(ctx context.Context, c rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) - AddRenewedContract(ctx context.Context, c rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (api.ContractMetadata, error) + AddContract(ctx context.Context, c rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) + AddRenewedContract(ctx context.Context, c rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (api.ContractMetadata, error) AncestorContracts(ctx context.Context, fcid types.FileContractID, minStartHeight uint64) ([]api.ContractMetadata, error) ArchiveContract(ctx context.Context, id types.FileContractID, reason string) error ArchiveContracts(ctx context.Context, toArchive map[types.FileContractID]string) error @@ -532,8 +532,8 @@ func (b *Bus) Shutdown(ctx context.Context) error { ) } -func (b *Bus) addContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { - c, err := b.ms.AddContract(ctx, rev, contractPrice, totalCost, startHeight, state) +func (b *Bus) addContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { + c, err := b.ms.AddContract(ctx, rev, contractPrice, initialRenterFunds, startHeight, state) if err != nil { return api.ContractMetadata{}, err } @@ -549,8 +549,8 @@ func (b *Bus) addContract(ctx context.Context, rev rhpv2.ContractRevision, contr return c, nil } -func (b *Bus) addRenewedContract(ctx context.Context, renewedFrom types.FileContractID, rev rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { - r, err := b.ms.AddRenewedContract(ctx, rev, contractPrice, totalCost, startHeight, renewedFrom, state) +func (b *Bus) addRenewedContract(ctx context.Context, renewedFrom types.FileContractID, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { + r, err := b.ms.AddRenewedContract(ctx, rev, contractPrice, initialRenterFunds, startHeight, renewedFrom, state) if err != nil { return api.ContractMetadata{}, err } diff --git a/bus/client/contracts.go b/bus/client/contracts.go index f16db02a9..9ecdc7baa 100644 --- a/bus/client/contracts.go +++ b/bus/client/contracts.go @@ -12,26 +12,26 @@ import ( ) // AddContract adds the provided contract to the metadata store. -func (c *Client) AddContract(ctx context.Context, contract rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, state string) (added api.ContractMetadata, err error) { +func (c *Client) AddContract(ctx context.Context, contract rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (added api.ContractMetadata, err error) { err = c.c.WithContext(ctx).POST(fmt.Sprintf("/contract/%s", contract.ID()), api.ContractAddRequest{ - Contract: contract, - StartHeight: startHeight, - ContractPrice: contractPrice, - State: state, - TotalCost: totalCost, + Contract: contract, + ContractPrice: contractPrice, + InitialRenterFunds: initialRenterFunds, + StartHeight: startHeight, + State: state, }, &added) return } // AddRenewedContract adds the provided contract to the metadata store. -func (c *Client) AddRenewedContract(ctx context.Context, contract rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (renewed api.ContractMetadata, err error) { +func (c *Client) AddRenewedContract(ctx context.Context, contract rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (renewed api.ContractMetadata, err error) { err = c.c.WithContext(ctx).POST(fmt.Sprintf("/contract/%s/renewed", contract.ID()), api.ContractRenewedRequest{ - Contract: contract, - RenewedFrom: renewedFrom, - StartHeight: startHeight, - ContractPrice: contractPrice, - State: state, - TotalCost: totalCost, + Contract: contract, + ContractPrice: contractPrice, + InitialRenterFunds: initialRenterFunds, + RenewedFrom: renewedFrom, + StartHeight: startHeight, + State: state, }, &renewed) return } diff --git a/bus/routes.go b/bus/routes.go index d8ffd2997..b74323858 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1081,12 +1081,12 @@ func (b *Bus) contractIDHandlerPOST(jc jape.Context) { } else if req.Contract.ID() != id { http.Error(jc.ResponseWriter, "contract ID mismatch", http.StatusBadRequest) return - } else if req.TotalCost.IsZero() { - http.Error(jc.ResponseWriter, "TotalCost can not be zero", http.StatusBadRequest) + } else if req.InitialRenterFunds.IsZero() { + http.Error(jc.ResponseWriter, "InitialRenterFunds can not be zero", http.StatusBadRequest) return } - a, err := b.addContract(jc.Request.Context(), req.Contract, req.ContractPrice, req.TotalCost, req.StartHeight, req.State) + a, err := b.addContract(jc.Request.Context(), req.Contract, req.ContractPrice, req.InitialRenterFunds, req.StartHeight, req.State) if jc.Check("couldn't store contract", err) != nil { return } @@ -1183,14 +1183,14 @@ func (b *Bus) contractIDRenewedHandlerPOST(jc jape.Context) { http.Error(jc.ResponseWriter, "contract ID mismatch", http.StatusBadRequest) return } - if req.TotalCost.IsZero() { - http.Error(jc.ResponseWriter, "TotalCost can not be zero", http.StatusBadRequest) + if req.InitialRenterFunds.IsZero() { + http.Error(jc.ResponseWriter, "InitialRenterFunds can not be zero", http.StatusBadRequest) return } if req.State == "" { req.State = api.ContractStatePending } - r, err := b.addRenewedContract(jc.Request.Context(), req.RenewedFrom, req.Contract, req.ContractPrice, req.TotalCost, req.StartHeight, req.State) + r, err := b.addRenewedContract(jc.Request.Context(), req.RenewedFrom, req.Contract, req.ContractPrice, req.InitialRenterFunds, req.StartHeight, req.State) if jc.Check("couldn't store contract", err) != nil { return } diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index b92b66443..ca3cfc5e0 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -223,8 +223,8 @@ func TestNewTestCluster(t *testing.T) { expectedEndHeight := currentPeriod + cfg.Contracts.Period + cfg.Contracts.RenewWindow if contract.EndHeight() != expectedEndHeight || contract.Revision.EndHeight() != expectedEndHeight { t.Fatal("wrong endHeight", contract.EndHeight(), contract.Revision.EndHeight()) - } else if contract.TotalCost.IsZero() || contract.ContractPrice.IsZero() { - t.Fatal("TotalCost and ContractPrice shouldn't be zero") + } else if contract.InitialRenterFunds.IsZero() || contract.ContractPrice.IsZero() { + t.Fatal("InitialRenterFunds and ContractPrice shouldn't be zero") } // Wait for contract set to form diff --git a/stores/metadata.go b/stores/metadata.go index 6ca61ff63..781d55013 100644 --- a/stores/metadata.go +++ b/stores/metadata.go @@ -109,10 +109,10 @@ func (s *SQLStore) SlabBuffers(ctx context.Context) ([]api.SlabBuffer, error) { return buffers, nil } -func (s *SQLStore) AddContract(ctx context.Context, c rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, state string) (_ api.ContractMetadata, err error) { +func (s *SQLStore) AddContract(ctx context.Context, c rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (_ api.ContractMetadata, err error) { var contract api.ContractMetadata err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - contract, err = tx.InsertContract(ctx, c, contractPrice, totalCost, startHeight, state) + contract, err = tx.InsertContract(ctx, c, contractPrice, initialRenterFunds, startHeight, state) return err }) if err != nil { @@ -135,9 +135,9 @@ func (s *SQLStore) Contracts(ctx context.Context, opts api.ContractsOpts) ([]api // The old contract specified as 'renewedFrom' will be deleted from the active // contracts and moved to the archive. Both new and old contract will be linked // to each other through the RenewedFrom and RenewedTo fields respectively. -func (s *SQLStore) AddRenewedContract(ctx context.Context, c rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (renewed api.ContractMetadata, err error) { +func (s *SQLStore) AddRenewedContract(ctx context.Context, c rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (renewed api.ContractMetadata, err error) { err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - renewed, err = tx.RenewContract(ctx, c, contractPrice, totalCost, startHeight, renewedFrom, state) + renewed, err = tx.RenewContract(ctx, c, contractPrice, initialRenterFunds, startHeight, renewedFrom, state) return err }) if err != nil { diff --git a/stores/metadata_test.go b/stores/metadata_test.go index 9d2c8a38c..042569d7f 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -446,25 +446,25 @@ func TestSQLContractStore(t *testing.T) { // Insert it. contractPrice := types.NewCurrency64(1) - totalCost := types.NewCurrency64(456) + initialRenterFunds := types.NewCurrency64(456) startHeight := uint64(100) - returned, err := ss.AddContract(ctx, c, contractPrice, totalCost, startHeight, api.ContractStatePending) + returned, err := ss.AddContract(ctx, c, contractPrice, initialRenterFunds, startHeight, api.ContractStatePending) if err != nil { t.Fatal(err) } expected := api.ContractMetadata{ - ID: fcid, - HostIP: "address", - HostKey: hk, - StartHeight: 100, - State: api.ContractStatePending, - WindowStart: 400, - WindowEnd: 500, - RenewedFrom: types.FileContractID{}, - Spending: api.ContractSpending{}, - ContractPrice: types.NewCurrency64(1), - TotalCost: totalCost, - Size: c.Revision.Filesize, + ID: fcid, + HostIP: "address", + HostKey: hk, + StartHeight: 100, + State: api.ContractStatePending, + WindowStart: 400, + WindowEnd: 500, + RenewedFrom: types.FileContractID{}, + Spending: api.ContractSpending{}, + ContractPrice: types.NewCurrency64(1), + InitialRenterFunds: initialRenterFunds, + Size: c.Revision.Filesize, } if !reflect.DeepEqual(returned, expected) { t.Fatal("contract mismatch", cmp.Diff(returned, expected)) @@ -736,9 +736,9 @@ func TestRenewedContract(t *testing.T) { Uploads: types.ZeroCurrency, FundAccount: types.ZeroCurrency, }, - ContractPrice: types.NewCurrency64(3), - ContractSets: []string{"test"}, - TotalCost: types.NewCurrency64(4), + ContractPrice: types.NewCurrency64(3), + ContractSets: []string{"test"}, + InitialRenterFunds: types.NewCurrency64(4), } if !reflect.DeepEqual(renewal, expected) { t.Fatal("mismatch") @@ -751,15 +751,7 @@ func TestRenewedContract(t *testing.T) { } else if len(ancestors) != 1 { t.Fatalf("expected 1 ancestor but got %v", len(ancestors)) } - t.Log("del", s.Deletions.String()) - t.Log("ul", s.Uploads.String()) - t.Log("roots", s.SectorRoots.String()) - t.Log("fund", s.FundAccount.String()) - t.Log("- - ") - t.Log("del", ancestors[0].Spending.Deletions.String()) - t.Log("ul", ancestors[0].Spending.Uploads.String()) - t.Log("roots", ancestors[0].Spending.SectorRoots.String()) - t.Log("fund", ancestors[0].Spending.FundAccount.String()) + expectedContract := api.ContractMetadata{ ID: fcid, HostIP: "address", @@ -767,18 +759,18 @@ func TestRenewedContract(t *testing.T) { RenewedTo: fcidR, Spending: s, - ArchivalReason: api.ContractArchivalReasonRenewed, - ContractPrice: types.NewCurrency64(1), - ProofHeight: 0, - RenewedFrom: types.FileContractID{}, - RevisionHeight: 0, - RevisionNumber: 1, - Size: rhpv2.SectorSize, - StartHeight: 1, - State: api.ContractStatePending, - TotalCost: types.NewCurrency64(2), - WindowStart: 400, - WindowEnd: 500, + ArchivalReason: api.ContractArchivalReasonRenewed, + ContractPrice: types.NewCurrency64(1), + ProofHeight: 0, + RenewedFrom: types.FileContractID{}, + RevisionHeight: 0, + RevisionNumber: 1, + Size: rhpv2.SectorSize, + StartHeight: 1, + State: api.ContractStatePending, + InitialRenterFunds: types.NewCurrency64(2), + WindowStart: 400, + WindowEnd: 500, } if !reflect.DeepEqual(ancestors[0], expectedContract) { t.Fatal("mismatch", cmp.Diff(ancestors[0], expectedContract)) @@ -1013,8 +1005,8 @@ func TestSQLMetadataStore(t *testing.T) { fcid1, fcid2 := fcids[0], fcids[1] // Extract start height and total cost - startHeight1, totalCost1 := contracts[0].StartHeight, contracts[0].TotalCost - startHeight2, totalCost2 := contracts[1].StartHeight, contracts[1].TotalCost + startHeight1, initialRenterFunds1 := contracts[0].StartHeight, contracts[0].InitialRenterFunds + startHeight2, initialRenterFunds2 := contracts[1].StartHeight, contracts[1].InitialRenterFunds // Create an object with 2 slabs pointing to 2 different sectors. obj1 := object.Object{ @@ -1168,23 +1160,23 @@ func TestSQLMetadataStore(t *testing.T) { } expectedContract1 := api.ContractMetadata{ - ID: fcid1, - HostIP: "", - HostKey: hk1, - SiamuxAddr: "", - ProofHeight: 0, - RevisionHeight: 0, - RevisionNumber: 0, - Size: 4096, - StartHeight: startHeight1, - State: api.ContractStatePending, - WindowStart: 400, - WindowEnd: 500, - ContractPrice: types.ZeroCurrency, - RenewedFrom: types.FileContractID{}, - Spending: api.ContractSpending{}, - TotalCost: totalCost1, - ContractSets: nil, + ID: fcid1, + HostIP: "", + HostKey: hk1, + SiamuxAddr: "", + ProofHeight: 0, + RevisionHeight: 0, + RevisionNumber: 0, + Size: 4096, + StartHeight: startHeight1, + State: api.ContractStatePending, + WindowStart: 400, + WindowEnd: 500, + ContractPrice: types.ZeroCurrency, + RenewedFrom: types.FileContractID{}, + Spending: api.ContractSpending{}, + InitialRenterFunds: initialRenterFunds1, + ContractSets: nil, } expectedObjSlab2 := object.Slab{ @@ -1203,23 +1195,23 @@ func TestSQLMetadataStore(t *testing.T) { } expectedContract2 := api.ContractMetadata{ - ID: fcid2, - HostIP: "", - HostKey: hk2, - SiamuxAddr: "", - ProofHeight: 0, - RevisionHeight: 0, - RevisionNumber: 0, - Size: 4096, - StartHeight: startHeight2, - State: api.ContractStatePending, - WindowStart: 400, - WindowEnd: 500, - ContractPrice: types.ZeroCurrency, - RenewedFrom: types.FileContractID{}, - Spending: api.ContractSpending{}, - TotalCost: totalCost2, - ContractSets: nil, + ID: fcid2, + HostIP: "", + HostKey: hk2, + SiamuxAddr: "", + ProofHeight: 0, + RevisionHeight: 0, + RevisionNumber: 0, + Size: 4096, + StartHeight: startHeight2, + State: api.ContractStatePending, + WindowStart: 400, + WindowEnd: 500, + ContractPrice: types.ZeroCurrency, + RenewedFrom: types.FileContractID{}, + Spending: api.ContractSpending{}, + InitialRenterFunds: initialRenterFunds2, + ContractSets: nil, } // Compare slabs. diff --git a/stores/sql/database.go b/stores/sql/database.go index 5fe377a1c..76f41ae2d 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -165,7 +165,7 @@ type ( InsertBufferedSlab(ctx context.Context, fileName string, contractSetID int64, ec object.EncryptionKey, minShards, totalShards uint8) (int64, error) // InsertContract inserts a new contract into the database. - InsertContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) + InsertContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) // InsertMultipartUpload creates a new multipart upload and returns a // unique upload ID. @@ -298,7 +298,7 @@ type ( // contract with the ID of 'renewedFrom' will be moved to the archived // contracts and the new contract will overwrite the existing one, // inheriting its sectors. - RenewContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (api.ContractMetadata, error) + RenewContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (api.ContractMetadata, error) // RenewedContract returns the metadata of the contract that was renewed // from the specified contract or ErrContractNotFound otherwise. diff --git a/stores/sql/main.go b/stores/sql/main.go index 67715cecd..85af65983 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -137,7 +137,7 @@ func AncestorContracts(ctx context.Context, tx sql.Tx, fcid types.FileContractID SELECT c.created_at, c.fcid, c.host_key, c.archival_reason, c.proof_height, c.renewed_from, c.renewed_to, c.revision_height, c.revision_number, c.size, c.start_height, c.state, c.window_start, c.window_end, - c.contract_price, c.total_cost, + c.contract_price, c.initial_renter_funds, c.delete_spending, c.fund_account_spending, c.list_spending, c.upload_spending, "", COALESCE(h.net_address, ""), COALESCE(h.settings->>'$.siamuxport', "") FROM contracts AS c @@ -711,7 +711,7 @@ func InsertBufferedSlab(ctx context.Context, tx sql.Tx, fileName string, contrac return bufferedSlabID, nil } -func InsertContract(ctx context.Context, tx sql.Tx, rev rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { +func InsertContract(ctx context.Context, tx sql.Tx, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { var contractState ContractState if err := contractState.LoadString(state); err != nil { return api.ContractMetadata{}, fmt.Errorf("failed to load contract state: %w", err) @@ -726,12 +726,12 @@ func InsertContract(ctx context.Context, tx sql.Tx, rev rhpv2.ContractRevision, INSERT INTO contracts ( created_at, fcid, host_key, proof_height, revision_height, revision_number, size, start_height, state, window_start, window_end, - contract_price, total_cost, + contract_price, initial_renter_funds, delete_spending, fund_account_spending, list_spending, upload_spending ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, time.Now(), FileContractID(rev.ID()), PublicKey(rev.HostKey()), 0, 0, "0", rev.Revision.Filesize, startHeight, contractState, rev.Revision.WindowStart, rev.Revision.WindowEnd, - Currency(contractPrice), Currency(totalCost), + Currency(contractPrice), Currency(initialRenterFunds), ZeroCurrency, ZeroCurrency, ZeroCurrency, ZeroCurrency) if err != nil { return api.ContractMetadata{}, fmt.Errorf("failed to insert contract: %w", err) @@ -1861,7 +1861,7 @@ WHERE h.recent_downtime >= ? AND h.recent_scan_failures >= ?`, maxDownTime, minR return res.RowsAffected() } -func RenewContract(ctx context.Context, tx sql.Tx, rev rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (api.ContractMetadata, error) { +func RenewContract(ctx context.Context, tx sql.Tx, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (api.ContractMetadata, error) { var contractState ContractState if err := contractState.LoadString(state); err != nil { return api.ContractMetadata{}, fmt.Errorf("failed to load contract state: %w", err) @@ -1873,7 +1873,7 @@ func RenewContract(ctx context.Context, tx sql.Tx, rev rhpv2.ContractRevision, c SELECT c.created_at, c.fcid, c.host_key, c.archival_reason, c.proof_height, c.renewed_from, c.renewed_to, c.revision_height, c.revision_number, c.size, c.start_height, c.state, c.window_start, c.window_end, - c.contract_price, c.total_cost, + c.contract_price, c.initial_renter_funds, c.delete_spending, c.fund_account_spending, c.list_spending, c.upload_spending, "", "", "" FROM contracts AS c @@ -1889,12 +1889,12 @@ WHERE fcid = ?`, FileContractID(renewedFrom))) UPDATE contracts SET created_at = ?, fcid = ?, proof_height = ?, renewed_from = ?, renewed_to = ?, revision_height = ?, revision_number = ?, size = ?, start_height = ?, state = ?, window_start = ?, window_end = ?, - contract_price = ?, total_cost = ?, + contract_price = ?, initial_renter_funds = ?, delete_spending = ?, fund_account_spending = ?, list_spending = ?, upload_spending = ? WHERE fcid = ?`, time.Now(), FileContractID(rev.ID()), 0, FileContractID(renewedFrom), FileContractID(types.FileContractID{}), 0, fmt.Sprint(rev.Revision.RevisionNumber), rev.Revision.Filesize, startHeight, contractState, rev.Revision.WindowStart, rev.Revision.WindowEnd, - Currency(contractPrice), Currency(totalCost), + Currency(contractPrice), Currency(initialRenterFunds), ZeroCurrency, ZeroCurrency, ZeroCurrency, ZeroCurrency, FileContractID(renewedFrom), ) @@ -1907,12 +1907,12 @@ WHERE fcid = ?`, INSERT INTO contracts ( created_at, fcid, host_key, archival_reason, proof_height, renewed_from, renewed_to, revision_height, revision_number, size, start_height, state, window_start, window_end, - contract_price, total_cost, + contract_price, initial_renter_funds, delete_spending, fund_account_spending, list_spending, upload_spending ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, r.CreatedAt, r.FCID, r.HostKey, api.ContractArchivalReasonRenewed, r.ProofHeight, r.RenewedFrom, FileContractID(rev.ID()), r.RevisionHeight, r.RevisionNumber, r.Size, r.StartHeight, r.State, r.WindowStart, r.WindowEnd, - r.ContractPrice, r.TotalCost, + r.ContractPrice, r.InitialRenterFunds, r.DeleteSpending, r.FundAccountSpending, r.ListSpending, r.UploadSpending) if err != nil { return api.ContractMetadata{}, fmt.Errorf("failed to insert archived contract: %w", err) @@ -1935,7 +1935,7 @@ func QueryContracts(ctx context.Context, tx sql.Tx, whereExprs []string, whereAr SELECT c.created_at, c.fcid, c.host_key, c.archival_reason, c.proof_height, c.renewed_from, c.renewed_to, c.revision_height, c.revision_number, c.size, c.start_height, c.state, c.window_start, c.window_end, - c.contract_price, c.total_cost, + c.contract_price, c.initial_renter_funds, c.delete_spending, c.fund_account_spending, c.list_spending, c.upload_spending, COALESCE(cs.name, ""), COALESCE(h.net_address, ""), COALESCE(h.settings->>'$.siamuxport', "") AS siamux_port FROM contracts AS c diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index 356103138..f126d2170 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -336,8 +336,8 @@ func (tx *MainDatabaseTx) InsertBufferedSlab(ctx context.Context, fileName strin return ssql.InsertBufferedSlab(ctx, tx, fileName, contractSetID, ec, minShards, totalShards) } -func (tx *MainDatabaseTx) InsertContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { - return ssql.InsertContract(ctx, tx, rev, contractPrice, totalCost, startHeight, state) +func (tx *MainDatabaseTx) InsertContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { + return ssql.InsertContract(ctx, tx, rev, contractPrice, initialRenterFunds, startHeight, state) } func (tx *MainDatabaseTx) InsertMultipartUpload(ctx context.Context, bucket, key string, ec object.EncryptionKey, mimeType string, metadata api.ObjectUserMetadata) (string, error) { @@ -760,8 +760,8 @@ func (tx *MainDatabaseTx) RenameObjects(ctx context.Context, bucket, prefixOld, return nil } -func (tx *MainDatabaseTx) RenewContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (api.ContractMetadata, error) { - return ssql.RenewContract(ctx, tx, rev, contractPrice, totalCost, startHeight, renewedFrom, state) +func (tx *MainDatabaseTx) RenewContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (api.ContractMetadata, error) { + return ssql.RenewContract(ctx, tx, rev, contractPrice, initialRenterFunds, startHeight, renewedFrom, state) } func (tx *MainDatabaseTx) RenewedContract(ctx context.Context, renwedFrom types.FileContractID) (api.ContractMetadata, error) { diff --git a/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql b/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql index f138c7ac4..129263ab5 100644 --- a/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql +++ b/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql @@ -1,8 +1,3 @@ -/* -TODOs: -- rename total_cost -*/ - DROP TABLE IF EXISTS contracts_temp; CREATE TABLE contracts_temp ( @@ -24,7 +19,7 @@ CREATE TABLE contracts_temp ( `window_end` bigint unsigned NOT NULL DEFAULT '0', `contract_price` longtext, - `total_cost` longtext, + `initial_renter_funds` longtext, `delete_spending` longtext, `fund_account_spending` longtext, @@ -60,7 +55,7 @@ INSERT INTO contracts_temp ( window_start, window_end, contract_price, - total_cost, + initial_renter_funds, delete_spending, fund_account_spending, list_spending, @@ -104,7 +99,7 @@ INSERT INTO contracts_temp ( window_start, window_end, contract_price, - total_cost, + initial_renter_funds, delete_spending, fund_account_spending, list_spending, diff --git a/stores/sql/mysql/migrations/main/schema.sql b/stores/sql/mysql/migrations/main/schema.sql index 3b193cd0e..edcb79977 100644 --- a/stores/sql/mysql/migrations/main/schema.sql +++ b/stores/sql/mysql/migrations/main/schema.sql @@ -90,7 +90,7 @@ CREATE TABLE `contracts` ( `window_end` bigint unsigned NOT NULL DEFAULT '0', `contract_price` longtext, - `total_cost` longtext, + `initial_renter_funds` longtext, `delete_spending` longtext, `fund_account_spending` longtext, diff --git a/stores/sql/rows.go b/stores/sql/rows.go index 52deeabb5..535729454 100644 --- a/stores/sql/rows.go +++ b/stores/sql/rows.go @@ -31,8 +31,8 @@ type ContractRow struct { WindowEnd uint64 // cost fields - ContractPrice Currency - TotalCost Currency + ContractPrice Currency + InitialRenterFunds Currency // spending fields DeleteSpending Currency @@ -50,7 +50,7 @@ func (r *ContractRow) Scan(s Scanner) error { return s.Scan( &r.CreatedAt, &r.FCID, &r.HostKey, &r.ArchivalReason, &r.ProofHeight, &r.RenewedFrom, &r.RenewedTo, &r.RevisionHeight, &r.RevisionNumber, &r.Size, &r.StartHeight, &r.State, &r.WindowStart, &r.WindowEnd, - &r.ContractPrice, &r.TotalCost, + &r.ContractPrice, &r.InitialRenterFunds, &r.DeleteSpending, &r.FundAccountSpending, &r.ListSpending, &r.UploadSpending, &r.ContractSet, &r.NetAddress, &r.SiamuxPort, ) @@ -88,8 +88,8 @@ func (r *ContractRow) ContractMetadata() api.ContractMetadata { WindowStart: r.WindowStart, WindowEnd: r.WindowEnd, - ContractPrice: types.Currency(r.ContractPrice), - TotalCost: types.Currency(r.TotalCost), + ContractPrice: types.Currency(r.ContractPrice), + InitialRenterFunds: types.Currency(r.InitialRenterFunds), Spending: api.ContractSpending{ Uploads: types.Currency(r.UploadSpending), diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index 2fafc3ba8..2018bc985 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -348,8 +348,8 @@ func (tx *MainDatabaseTx) InsertBufferedSlab(ctx context.Context, fileName strin return ssql.InsertBufferedSlab(ctx, tx, fileName, contractSetID, ec, minShards, totalShards) } -func (tx *MainDatabaseTx) InsertContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { - return ssql.InsertContract(ctx, tx, rev, contractPrice, totalCost, startHeight, state) +func (tx *MainDatabaseTx) InsertContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { + return ssql.InsertContract(ctx, tx, rev, contractPrice, initialRenterFunds, startHeight, state) } func (tx *MainDatabaseTx) InsertMultipartUpload(ctx context.Context, bucket, key string, ec object.EncryptionKey, mimeType string, metadata api.ObjectUserMetadata) (string, error) { @@ -771,8 +771,8 @@ func (tx *MainDatabaseTx) RenameObjects(ctx context.Context, bucket, prefixOld, return nil } -func (tx *MainDatabaseTx) RenewContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (api.ContractMetadata, error) { - return ssql.RenewContract(ctx, tx, rev, contractPrice, totalCost, startHeight, renewedFrom, state) +func (tx *MainDatabaseTx) RenewContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (api.ContractMetadata, error) { + return ssql.RenewContract(ctx, tx, rev, contractPrice, initialRenterFunds, startHeight, renewedFrom, state) } func (tx *MainDatabaseTx) RenewedContract(ctx context.Context, renwedFrom types.FileContractID) (api.ContractMetadata, error) { diff --git a/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql b/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql index 1d72befd8..45584b4d7 100644 --- a/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql +++ b/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql @@ -19,7 +19,7 @@ CREATE TABLE contracts_temp ( `window_end` integer NOT NULL DEFAULT 0, `contract_price` text, - `total_cost` text, + `initial_renter_funds` text, `delete_spending` text, `list_spending` text, @@ -54,7 +54,7 @@ INSERT INTO contracts_temp ( window_start, window_end, contract_price, - total_cost, + initial_renter_funds, delete_spending, fund_account_spending, list_spending, @@ -98,7 +98,7 @@ INSERT INTO contracts_temp ( window_start, window_end, contract_price, - total_cost, + initial_renter_funds, delete_spending, fund_account_spending, list_spending, diff --git a/stores/sql/sqlite/migrations/main/schema.sql b/stores/sql/sqlite/migrations/main/schema.sql index 860e3e2c2..9e57cc184 100644 --- a/stores/sql/sqlite/migrations/main/schema.sql +++ b/stores/sql/sqlite/migrations/main/schema.sql @@ -8,7 +8,7 @@ CREATE INDEX `idx_hosts_public_key` ON `hosts`(`public_key`); CREATE INDEX `idx_hosts_net_address` ON `hosts`(`net_address`); -- dbContract -CREATE TABLE contracts (`id` integer PRIMARY KEY AUTOINCREMENT, `created_at` datetime, `fcid` blob NOT NULL UNIQUE, `host_key` blob NOT NULL, `archival_reason` text NOT NULL DEFAULT "", `proof_height` integer DEFAULT 0, `renewed_from` blob, `renewed_to` blob, `revision_height` integer DEFAULT 0, `revision_number` text NOT NULL DEFAULT "0", `size` integer, `start_height` integer NOT NULL, `state` integer NOT NULL DEFAULT 0, `window_start` integer NOT NULL DEFAULT 0, `window_end` integer NOT NULL DEFAULT 0, `contract_price` text, `total_cost` text, `delete_spending` text, `fund_account_spending` text, `list_spending` text, `upload_spending` text); +CREATE TABLE contracts (`id` integer PRIMARY KEY AUTOINCREMENT, `created_at` datetime, `fcid` blob NOT NULL UNIQUE, `host_key` blob NOT NULL, `archival_reason` text NOT NULL DEFAULT "", `proof_height` integer DEFAULT 0, `renewed_from` blob, `renewed_to` blob, `revision_height` integer DEFAULT 0, `revision_number` text NOT NULL DEFAULT "0", `size` integer, `start_height` integer NOT NULL, `state` integer NOT NULL DEFAULT 0, `window_start` integer NOT NULL DEFAULT 0, `window_end` integer NOT NULL DEFAULT 0, `contract_price` text, `initial_renter_funds` text, `delete_spending` text, `fund_account_spending` text, `list_spending` text, `upload_spending` text); CREATE INDEX `idx_contracts_archival_reason` ON `contracts`(`archival_reason`); CREATE INDEX `idx_contracts_fcid` ON `contracts`(`fcid`); CREATE INDEX `idx_contracts_host_key` ON `contracts`(`host_key`); From 85a6c800997eea225f434026e89e85198bc9824d Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 5 Sep 2024 15:20:28 +0200 Subject: [PATCH 055/708] stores: rename list to sector roots --- api/metrics.go | 6 +++--- internal/sql/migrations.go | 4 ++-- internal/test/e2e/cluster_test.go | 4 ++-- stores/metadata.go | 4 ++-- stores/metrics_test.go | 4 ++-- stores/sql/main.go | 16 ++++++++-------- stores/sql/metrics.go | 10 +++++----- .../main/migration_00017_archived_contracts.sql | 6 +++--- stores/sql/mysql/migrations/main/schema.sql | 2 +- .../migration_00003_contract_spending.sql | 3 +++ .../migration_00003_drop_download_spending.sql | 1 - stores/sql/mysql/migrations/metrics/schema.sql | 6 +++--- stores/sql/rows.go | 6 +++--- .../main/migration_00017_archived_contracts.sql | 6 +++--- stores/sql/sqlite/migrations/main/schema.sql | 2 +- .../migration_00003_contract_spending.sql | 4 ++++ .../migration_00003_drop_download_spending.sql | 1 - stores/sql/sqlite/migrations/metrics/schema.sql | 4 ++-- 18 files changed, 47 insertions(+), 42 deletions(-) create mode 100644 stores/sql/mysql/migrations/metrics/migration_00003_contract_spending.sql delete mode 100644 stores/sql/mysql/migrations/metrics/migration_00003_drop_download_spending.sql create mode 100644 stores/sql/sqlite/migrations/metrics/migration_00003_contract_spending.sql delete mode 100644 stores/sql/sqlite/migrations/metrics/migration_00003_drop_download_spending.sql diff --git a/api/metrics.go b/api/metrics.go index 599386afc..38d6c0aff 100644 --- a/api/metrics.go +++ b/api/metrics.go @@ -74,10 +74,10 @@ type ( RemainingFunds types.Currency `json:"remainingFunds"` RevisionNumber uint64 `json:"revisionNumber"` - UploadSpending types.Currency `json:"uploadSpending"` - FundAccountSpending types.Currency `json:"fundAccountSpending"` DeleteSpending types.Currency `json:"deleteSpending"` - ListSpending types.Currency `json:"listSpending"` + FundAccountSpending types.Currency `json:"fundAccountSpending"` + SectorRootsSpending types.Currency `json:"sectorRootsSpending"` + UploadSpending types.Currency `json:"uploadSpending"` } ContractMetricsQueryOpts struct { diff --git a/internal/sql/migrations.go b/internal/sql/migrations.go index d44f487e3..7409e97ba 100644 --- a/internal/sql/migrations.go +++ b/internal/sql/migrations.go @@ -239,9 +239,9 @@ var ( }, }, { - ID: "00003_drop_download_spending", + ID: "00003_contract_spending", Migrate: func(tx Tx) error { - return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00003_drop_download_spending", log) + return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00003_contract_spending", log) }, }, } diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index ca3cfc5e0..1ffd34752 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -2454,8 +2454,8 @@ func TestBusRecordedMetrics(t *testing.T) { t.Fatal("expected non-zero FundAccountSpending") } else if !m.DeleteSpending.IsZero() { t.Fatal("expected zero DeleteSpending") - } else if !m.ListSpending.IsZero() { - t.Fatal("expected zero ListSpending") + } else if !m.SectorRootsSpending.IsZero() { + t.Fatal("expected zero SectorRootsSpending") } // prune one of the metrics diff --git a/stores/metadata.go b/stores/metadata.go index 781d55013..2507f30ec 100644 --- a/stores/metadata.go +++ b/stores/metadata.go @@ -384,7 +384,7 @@ func (s *SQLStore) RecordContractSpending(ctx context.Context, records []api.Con UploadSpending: contract.Spending.Uploads.Add(newSpending.Uploads), FundAccountSpending: contract.Spending.FundAccount.Add(newSpending.FundAccount), DeleteSpending: contract.Spending.Deletions.Add(newSpending.Deletions), - ListSpending: contract.Spending.SectorRoots.Add(newSpending.SectorRoots), + SectorRootsSpending: contract.Spending.SectorRoots.Add(newSpending.SectorRoots), } metrics = append(metrics, m) @@ -399,7 +399,7 @@ func (s *SQLStore) RecordContractSpending(ctx context.Context, records []api.Con updates.Deletions = m.DeleteSpending } if !newSpending.SectorRoots.IsZero() { - updates.SectorRoots = m.ListSpending + updates.SectorRoots = m.SectorRootsSpending } return tx.RecordContractSpending(ctx, fcid, latestValues[fcid].revision, latestValues[fcid].size, updates) }) diff --git a/stores/metrics_test.go b/stores/metrics_test.go index d6453dd3a..e1edba937 100644 --- a/stores/metrics_test.go +++ b/stores/metrics_test.go @@ -120,7 +120,7 @@ func TestContractMetrics(t *testing.T) { UploadSpending: types.NewCurrency(frand.Uint64n(math.MaxUint64), frand.Uint64n(math.MaxUint64)), FundAccountSpending: types.NewCurrency(frand.Uint64n(math.MaxUint64), frand.Uint64n(math.MaxUint64)), DeleteSpending: types.NewCurrency(frand.Uint64n(math.MaxUint64), frand.Uint64n(math.MaxUint64)), - ListSpending: types.NewCurrency64(1), + SectorRootsSpending: types.NewCurrency64(1), } fcid2Metric[metric.ContractID] = metric metricsTimeAsc = append(metricsTimeAsc, metric) @@ -190,7 +190,7 @@ func TestContractMetrics(t *testing.T) { expectedMetric.UploadSpending, _ = metricsTimeAsc[2*i].UploadSpending.AddWithOverflow(metricsTimeAsc[2*i+1].UploadSpending) expectedMetric.FundAccountSpending, _ = metricsTimeAsc[2*i].FundAccountSpending.AddWithOverflow(metricsTimeAsc[2*i+1].FundAccountSpending) expectedMetric.DeleteSpending, _ = metricsTimeAsc[2*i].DeleteSpending.AddWithOverflow(metricsTimeAsc[2*i+1].DeleteSpending) - expectedMetric.ListSpending, _ = metricsTimeAsc[2*i].ListSpending.AddWithOverflow(metricsTimeAsc[2*i+1].ListSpending) + expectedMetric.SectorRootsSpending, _ = metricsTimeAsc[2*i].SectorRootsSpending.AddWithOverflow(metricsTimeAsc[2*i+1].SectorRootsSpending) if !cmp.Equal(m, expectedMetric, cmp.Comparer(api.CompareTimeRFC3339)) { t.Fatal(i, "unexpected metric", cmp.Diff(m, expectedMetric, cmp.Comparer(api.CompareTimeRFC3339))) } diff --git a/stores/sql/main.go b/stores/sql/main.go index 85af65983..0b8df4ea7 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -138,7 +138,7 @@ func AncestorContracts(ctx context.Context, tx sql.Tx, fcid types.FileContractID c.created_at, c.fcid, c.host_key, c.archival_reason, c.proof_height, c.renewed_from, c.renewed_to, c.revision_height, c.revision_number, c.size, c.start_height, c.state, c.window_start, c.window_end, c.contract_price, c.initial_renter_funds, - c.delete_spending, c.fund_account_spending, c.list_spending, c.upload_spending, + c.delete_spending, c.fund_account_spending, c.sector_roots_spending, c.upload_spending, "", COALESCE(h.net_address, ""), COALESCE(h.settings->>'$.siamuxport', "") FROM contracts AS c LEFT JOIN hosts h ON h.public_key = c.host_key @@ -727,7 +727,7 @@ INSERT INTO contracts ( created_at, fcid, host_key, proof_height, revision_height, revision_number, size, start_height, state, window_start, window_end, contract_price, initial_renter_funds, - delete_spending, fund_account_spending, list_spending, upload_spending + delete_spending, fund_account_spending, sector_roots_spending, upload_spending ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, time.Now(), FileContractID(rev.ID()), PublicKey(rev.HostKey()), 0, 0, "0", rev.Revision.Filesize, startHeight, contractState, rev.Revision.WindowStart, rev.Revision.WindowEnd, @@ -1874,7 +1874,7 @@ SELECT c.created_at, c.fcid, c.host_key, c.archival_reason, c.proof_height, c.renewed_from, c.renewed_to, c.revision_height, c.revision_number, c.size, c.start_height, c.state, c.window_start, c.window_end, c.contract_price, c.initial_renter_funds, - c.delete_spending, c.fund_account_spending, c.list_spending, c.upload_spending, + c.delete_spending, c.fund_account_spending, c.sector_roots_spending, c.upload_spending, "", "", "" FROM contracts AS c WHERE fcid = ?`, FileContractID(renewedFrom))) @@ -1890,7 +1890,7 @@ UPDATE contracts SET created_at = ?, fcid = ?, proof_height = ?, renewed_from = ?, renewed_to = ?, revision_height = ?, revision_number = ?, size = ?, start_height = ?, state = ?, window_start = ?, window_end = ?, contract_price = ?, initial_renter_funds = ?, - delete_spending = ?, fund_account_spending = ?, list_spending = ?, upload_spending = ? + delete_spending = ?, fund_account_spending = ?, sector_roots_spending = ?, upload_spending = ? WHERE fcid = ?`, time.Now(), FileContractID(rev.ID()), 0, FileContractID(renewedFrom), FileContractID(types.FileContractID{}), 0, fmt.Sprint(rev.Revision.RevisionNumber), rev.Revision.Filesize, startHeight, contractState, rev.Revision.WindowStart, rev.Revision.WindowEnd, @@ -1908,12 +1908,12 @@ INSERT INTO contracts ( created_at, fcid, host_key, archival_reason, proof_height, renewed_from, renewed_to, revision_height, revision_number, size, start_height, state, window_start, window_end, contract_price, initial_renter_funds, - delete_spending, fund_account_spending, list_spending, upload_spending + delete_spending, fund_account_spending, sector_roots_spending, upload_spending ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, r.CreatedAt, r.FCID, r.HostKey, api.ContractArchivalReasonRenewed, r.ProofHeight, r.RenewedFrom, FileContractID(rev.ID()), r.RevisionHeight, r.RevisionNumber, r.Size, r.StartHeight, r.State, r.WindowStart, r.WindowEnd, r.ContractPrice, r.InitialRenterFunds, - r.DeleteSpending, r.FundAccountSpending, r.ListSpending, r.UploadSpending) + r.DeleteSpending, r.FundAccountSpending, r.SectorRootsSpending, r.UploadSpending) if err != nil { return api.ContractMetadata{}, fmt.Errorf("failed to insert archived contract: %w", err) } else if n, err := res.RowsAffected(); err != nil { @@ -1936,7 +1936,7 @@ SELECT c.created_at, c.fcid, c.host_key, c.archival_reason, c.proof_height, c.renewed_from, c.renewed_to, c.revision_height, c.revision_number, c.size, c.start_height, c.state, c.window_start, c.window_end, c.contract_price, c.initial_renter_funds, - c.delete_spending, c.fund_account_spending, c.list_spending, c.upload_spending, + c.delete_spending, c.fund_account_spending, c.sector_roots_spending, c.upload_spending, COALESCE(cs.name, ""), COALESCE(h.net_address, ""), COALESCE(h.settings->>'$.siamuxport', "") AS siamux_port FROM contracts AS c LEFT JOIN hosts h ON h.public_key = c.host_key @@ -2775,7 +2775,7 @@ func RecordContractSpending(ctx context.Context, tx Tx, fcid types.FileContractI updateValues = append(updateValues, Currency(newSpending.Deletions)) } if !newSpending.SectorRoots.IsZero() { - updateKeys = append(updateKeys, "list_spending = ?") + updateKeys = append(updateKeys, "sector_roots_spending = ?") updateValues = append(updateValues, Currency(newSpending.SectorRoots)) } updateKeys = append(updateKeys, "revision_number = ?", "size = ?") diff --git a/stores/sql/metrics.go b/stores/sql/metrics.go index 89f76c53b..1765c229a 100644 --- a/stores/sql/metrics.go +++ b/stores/sql/metrics.go @@ -45,7 +45,7 @@ func ContractMetrics(ctx context.Context, tx sql.Tx, start time.Time, n uint64, (*Unsigned64)(&cm.UploadSpending.Lo), (*Unsigned64)(&cm.UploadSpending.Hi), (*Unsigned64)(&cm.FundAccountSpending.Lo), (*Unsigned64)(&cm.FundAccountSpending.Hi), (*Unsigned64)(&cm.DeleteSpending.Lo), (*Unsigned64)(&cm.DeleteSpending.Hi), - (*Unsigned64)(&cm.ListSpending.Lo), (*Unsigned64)(&cm.ListSpending.Hi), + (*Unsigned64)(&cm.SectorRootsSpending.Lo), (*Unsigned64)(&cm.SectorRootsSpending.Hi), ) if err != nil { err = fmt.Errorf("failed to scan contract metric: %w", err) @@ -195,7 +195,7 @@ func PruneMetrics(ctx context.Context, tx sql.Tx, metric string, cutoff time.Tim } func RecordContractMetric(ctx context.Context, tx sql.Tx, metrics ...api.ContractMetric) error { - insertStmt, err := tx.Prepare(ctx, "INSERT INTO contracts (created_at, timestamp, fcid, host, remaining_collateral_lo, remaining_collateral_hi, remaining_funds_lo, remaining_funds_hi, revision_number, upload_spending_lo, upload_spending_hi, fund_account_spending_lo, fund_account_spending_hi, delete_spending_lo, delete_spending_hi, list_spending_lo, list_spending_hi) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)") + insertStmt, err := tx.Prepare(ctx, "INSERT INTO contracts (created_at, timestamp, fcid, host, remaining_collateral_lo, remaining_collateral_hi, remaining_funds_lo, remaining_funds_hi, revision_number, upload_spending_lo, upload_spending_hi, fund_account_spending_lo, fund_account_spending_hi, delete_spending_lo, delete_spending_hi, sector_roots_spending_lo, sector_roots_spending_hi) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)") if err != nil { return fmt.Errorf("failed to prepare statement to insert contract metric: %w", err) } @@ -235,8 +235,8 @@ func RecordContractMetric(ctx context.Context, tx sql.Tx, metrics ...api.Contrac Unsigned64(metric.FundAccountSpending.Hi), Unsigned64(metric.DeleteSpending.Lo), Unsigned64(metric.DeleteSpending.Hi), - Unsigned64(metric.ListSpending.Lo), - Unsigned64(metric.ListSpending.Hi), + Unsigned64(metric.SectorRootsSpending.Lo), + Unsigned64(metric.SectorRootsSpending.Hi), ) if err != nil { return fmt.Errorf("failed to insert contract metric: %w", err) @@ -605,7 +605,7 @@ func aggregateMetrics(x, y api.ContractMetric) (out api.ContractMetric) { out.UploadSpending, _ = out.UploadSpending.AddWithOverflow(y.UploadSpending) out.FundAccountSpending, _ = out.FundAccountSpending.AddWithOverflow(y.FundAccountSpending) out.DeleteSpending, _ = out.DeleteSpending.AddWithOverflow(y.DeleteSpending) - out.ListSpending, _ = out.ListSpending.AddWithOverflow(y.ListSpending) + out.SectorRootsSpending, _ = out.SectorRootsSpending.AddWithOverflow(y.SectorRootsSpending) return } diff --git a/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql b/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql index 129263ab5..ce49dc69f 100644 --- a/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql +++ b/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql @@ -23,7 +23,7 @@ CREATE TABLE contracts_temp ( `delete_spending` longtext, `fund_account_spending` longtext, - `list_spending` longtext, + `sector_roots_spending` longtext, `upload_spending` longtext, PRIMARY KEY (`id`), UNIQUE KEY `fcid` (`fcid`), @@ -58,7 +58,7 @@ INSERT INTO contracts_temp ( initial_renter_funds, delete_spending, fund_account_spending, - list_spending, + sector_roots_spending, upload_spending ) SELECT c.id, @@ -102,7 +102,7 @@ INSERT INTO contracts_temp ( initial_renter_funds, delete_spending, fund_account_spending, - list_spending, + sector_roots_spending, upload_spending ) SELECT ac.created_at, diff --git a/stores/sql/mysql/migrations/main/schema.sql b/stores/sql/mysql/migrations/main/schema.sql index edcb79977..73bfbcf32 100644 --- a/stores/sql/mysql/migrations/main/schema.sql +++ b/stores/sql/mysql/migrations/main/schema.sql @@ -94,7 +94,7 @@ CREATE TABLE `contracts` ( `delete_spending` longtext, `fund_account_spending` longtext, - `list_spending` longtext, + `sector_roots_spending` longtext, `upload_spending` longtext, PRIMARY KEY (`id`), UNIQUE KEY `fcid` (`fcid`), diff --git a/stores/sql/mysql/migrations/metrics/migration_00003_contract_spending.sql b/stores/sql/mysql/migrations/metrics/migration_00003_contract_spending.sql new file mode 100644 index 000000000..04a1f2bf7 --- /dev/null +++ b/stores/sql/mysql/migrations/metrics/migration_00003_contract_spending.sql @@ -0,0 +1,3 @@ +ALTER TABLE contracts DROP COLUMN download_spending_lo, download_spending_hi; +ALTER TABLE contracts RENAME COLUMN list_spending_lo TO sector_roots_spending_lo; +ALTER TABLE contracts RENAME COLUMN list_spending_hi TO sector_roots_spending_hi; \ No newline at end of file diff --git a/stores/sql/mysql/migrations/metrics/migration_00003_drop_download_spending.sql b/stores/sql/mysql/migrations/metrics/migration_00003_drop_download_spending.sql deleted file mode 100644 index 121283c38..000000000 --- a/stores/sql/mysql/migrations/metrics/migration_00003_drop_download_spending.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE contracts DROP COLUMN download_spending_lo, download_spending_hi; \ No newline at end of file diff --git a/stores/sql/mysql/migrations/metrics/schema.sql b/stores/sql/mysql/migrations/metrics/schema.sql index b4bca9d35..96c03371d 100644 --- a/stores/sql/mysql/migrations/metrics/schema.sql +++ b/stores/sql/mysql/migrations/metrics/schema.sql @@ -67,8 +67,8 @@ CREATE TABLE `contracts` ( `fund_account_spending_hi` bigint NOT NULL, `delete_spending_lo` bigint NOT NULL, `delete_spending_hi` bigint NOT NULL, - `list_spending_lo` bigint NOT NULL, - `list_spending_hi` bigint NOT NULL, + `sector_roots_spending_lo` bigint NOT NULL, + `sector_roots_spending_hi` bigint NOT NULL, PRIMARY KEY (`id`), KEY `idx_contracts_fc_id` (`fcid`), KEY `idx_contracts_host` (`host`), @@ -79,7 +79,7 @@ CREATE TABLE `contracts` ( KEY `idx_contracts_timestamp` (`timestamp`), KEY `idx_remaining_funds` (`remaining_funds_lo`,`remaining_funds_hi`), KEY `idx_delete_spending` (`delete_spending_lo`,`delete_spending_hi`), - KEY `idx_list_spending` (`list_spending_lo`,`list_spending_hi`), + KEY `idx_sector_roots_spending` (`sector_roots_spending_lo`,`sector_roots_spending_hi`), KEY `idx_contracts_fcid_timestamp` (`fcid`,`timestamp`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; diff --git a/stores/sql/rows.go b/stores/sql/rows.go index 535729454..29cdd3c7d 100644 --- a/stores/sql/rows.go +++ b/stores/sql/rows.go @@ -37,7 +37,7 @@ type ContractRow struct { // spending fields DeleteSpending Currency FundAccountSpending Currency - ListSpending Currency + SectorRootsSpending Currency UploadSpending Currency // decorated fields @@ -51,7 +51,7 @@ func (r *ContractRow) Scan(s Scanner) error { &r.CreatedAt, &r.FCID, &r.HostKey, &r.ArchivalReason, &r.ProofHeight, &r.RenewedFrom, &r.RenewedTo, &r.RevisionHeight, &r.RevisionNumber, &r.Size, &r.StartHeight, &r.State, &r.WindowStart, &r.WindowEnd, &r.ContractPrice, &r.InitialRenterFunds, - &r.DeleteSpending, &r.FundAccountSpending, &r.ListSpending, &r.UploadSpending, + &r.DeleteSpending, &r.FundAccountSpending, &r.SectorRootsSpending, &r.UploadSpending, &r.ContractSet, &r.NetAddress, &r.SiamuxPort, ) } @@ -95,7 +95,7 @@ func (r *ContractRow) ContractMetadata() api.ContractMetadata { Uploads: types.Currency(r.UploadSpending), FundAccount: types.Currency(r.FundAccountSpending), Deletions: types.Currency(r.DeleteSpending), - SectorRoots: types.Currency(r.ListSpending), + SectorRoots: types.Currency(r.SectorRootsSpending), }, ContractSets: sets, diff --git a/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql b/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql index 45584b4d7..4537c35eb 100644 --- a/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql +++ b/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql @@ -22,7 +22,7 @@ CREATE TABLE contracts_temp ( `initial_renter_funds` text, `delete_spending` text, - `list_spending` text, + `sector_roots_spending` text, `fund_account_spending` text, `upload_spending` text ); @@ -57,7 +57,7 @@ INSERT INTO contracts_temp ( initial_renter_funds, delete_spending, fund_account_spending, - list_spending, + sector_roots_spending, upload_spending ) SELECT c.id, @@ -101,7 +101,7 @@ INSERT INTO contracts_temp ( initial_renter_funds, delete_spending, fund_account_spending, - list_spending, + sector_roots_spending, upload_spending ) SELECT ac.created_at, diff --git a/stores/sql/sqlite/migrations/main/schema.sql b/stores/sql/sqlite/migrations/main/schema.sql index 9e57cc184..b66c72aa4 100644 --- a/stores/sql/sqlite/migrations/main/schema.sql +++ b/stores/sql/sqlite/migrations/main/schema.sql @@ -8,7 +8,7 @@ CREATE INDEX `idx_hosts_public_key` ON `hosts`(`public_key`); CREATE INDEX `idx_hosts_net_address` ON `hosts`(`net_address`); -- dbContract -CREATE TABLE contracts (`id` integer PRIMARY KEY AUTOINCREMENT, `created_at` datetime, `fcid` blob NOT NULL UNIQUE, `host_key` blob NOT NULL, `archival_reason` text NOT NULL DEFAULT "", `proof_height` integer DEFAULT 0, `renewed_from` blob, `renewed_to` blob, `revision_height` integer DEFAULT 0, `revision_number` text NOT NULL DEFAULT "0", `size` integer, `start_height` integer NOT NULL, `state` integer NOT NULL DEFAULT 0, `window_start` integer NOT NULL DEFAULT 0, `window_end` integer NOT NULL DEFAULT 0, `contract_price` text, `initial_renter_funds` text, `delete_spending` text, `fund_account_spending` text, `list_spending` text, `upload_spending` text); +CREATE TABLE contracts (`id` integer PRIMARY KEY AUTOINCREMENT, `created_at` datetime, `fcid` blob NOT NULL UNIQUE, `host_key` blob NOT NULL, `archival_reason` text NOT NULL DEFAULT "", `proof_height` integer DEFAULT 0, `renewed_from` blob, `renewed_to` blob, `revision_height` integer DEFAULT 0, `revision_number` text NOT NULL DEFAULT "0", `size` integer, `start_height` integer NOT NULL, `state` integer NOT NULL DEFAULT 0, `window_start` integer NOT NULL DEFAULT 0, `window_end` integer NOT NULL DEFAULT 0, `contract_price` text, `initial_renter_funds` text, `delete_spending` text, `fund_account_spending` text, `sector_roots_spending` text, `upload_spending` text); CREATE INDEX `idx_contracts_archival_reason` ON `contracts`(`archival_reason`); CREATE INDEX `idx_contracts_fcid` ON `contracts`(`fcid`); CREATE INDEX `idx_contracts_host_key` ON `contracts`(`host_key`); diff --git a/stores/sql/sqlite/migrations/metrics/migration_00003_contract_spending.sql b/stores/sql/sqlite/migrations/metrics/migration_00003_contract_spending.sql new file mode 100644 index 000000000..4763b16a1 --- /dev/null +++ b/stores/sql/sqlite/migrations/metrics/migration_00003_contract_spending.sql @@ -0,0 +1,4 @@ +ALTER TABLE contracts DROP COLUMN download_spending_lo; +ALTER TABLE contracts DROP COLUMN download_spending_hi; +ALTER TABLE contracts RENAME COLUMN list_spending_lo TO sector_roots_spending_lo; +ALTER TABLE contracts RENAME COLUMN list_spending_hi TO sector_roots_spending_hi; \ No newline at end of file diff --git a/stores/sql/sqlite/migrations/metrics/migration_00003_drop_download_spending.sql b/stores/sql/sqlite/migrations/metrics/migration_00003_drop_download_spending.sql deleted file mode 100644 index 121283c38..000000000 --- a/stores/sql/sqlite/migrations/metrics/migration_00003_drop_download_spending.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE contracts DROP COLUMN download_spending_lo, download_spending_hi; \ No newline at end of file diff --git a/stores/sql/sqlite/migrations/metrics/schema.sql b/stores/sql/sqlite/migrations/metrics/schema.sql index 289862930..882a9aee4 100644 --- a/stores/sql/sqlite/migrations/metrics/schema.sql +++ b/stores/sql/sqlite/migrations/metrics/schema.sql @@ -1,6 +1,6 @@ -- dbContractMetric -CREATE TABLE `contracts` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at` datetime,`timestamp` BIGINT NOT NULL,`fcid` blob NOT NULL,`host` blob NOT NULL,`remaining_collateral_lo` BIGINT NOT NULL,`remaining_collateral_hi` BIGINT NOT NULL,`remaining_funds_lo` BIGINT NOT NULL,`remaining_funds_hi` BIGINT NOT NULL,`revision_number` BIGINT NOT NULL,`upload_spending_lo` BIGINT NOT NULL,`upload_spending_hi` BIGINT NOT NULL,`fund_account_spending_lo` BIGINT NOT NULL,`fund_account_spending_hi` BIGINT NOT NULL,`delete_spending_lo` BIGINT NOT NULL,`delete_spending_hi` BIGINT NOT NULL,`list_spending_lo` BIGINT NOT NULL,`list_spending_hi` BIGINT NOT NULL); -CREATE INDEX `idx_list_spending` ON `contracts`(`list_spending_lo`,`list_spending_hi`); +CREATE TABLE `contracts` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at` datetime,`timestamp` BIGINT NOT NULL,`fcid` blob NOT NULL,`host` blob NOT NULL,`remaining_collateral_lo` BIGINT NOT NULL,`remaining_collateral_hi` BIGINT NOT NULL,`remaining_funds_lo` BIGINT NOT NULL,`remaining_funds_hi` BIGINT NOT NULL,`revision_number` BIGINT NOT NULL,`upload_spending_lo` BIGINT NOT NULL,`upload_spending_hi` BIGINT NOT NULL,`fund_account_spending_lo` BIGINT NOT NULL,`fund_account_spending_hi` BIGINT NOT NULL,`delete_spending_lo` BIGINT NOT NULL,`delete_spending_hi` BIGINT NOT NULL,`sector_roots_spending_lo` BIGINT NOT NULL,`sector_roots_spending_hi` BIGINT NOT NULL); +CREATE INDEX `idx_sector_roots_spending` ON `contracts`(`sector_roots_spending_lo`,`sector_roots_spending_hi`); CREATE INDEX `idx_fund_account_spending` ON `contracts`(`fund_account_spending_lo`,`fund_account_spending_hi`); CREATE INDEX `idx_contracts_fc_id` ON `contracts`(`fcid`); CREATE INDEX `idx_remaining_collateral` ON `contracts`(`remaining_collateral_lo`,`remaining_collateral_hi`); From 08deaf3be517fb2c793906630800e553c6a8ea1c Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 5 Sep 2024 15:33:50 +0200 Subject: [PATCH 056/708] all: cleanup PR --- api/contract.go | 22 ++++++++++------------ stores/sql/main.go | 4 ++-- stores/sql/rows.go | 32 ++++++++++++++++---------------- 3 files changed, 28 insertions(+), 30 deletions(-) diff --git a/api/contract.go b/api/contract.go index 0dab5f24e..080d56ea2 100644 --- a/api/contract.go +++ b/api/contract.go @@ -50,29 +50,27 @@ type ( // ContractMetadata contains all metadata for a contract. ContractMetadata struct { - ID types.FileContractID `json:"id"` - HostIP string `json:"hostIP"` - HostKey types.PublicKey `json:"hostKey"` - SiamuxAddr string `json:"siamuxAddr,omitempty"` + ID types.FileContractID `json:"id"` + HostIP string `json:"hostIP"` + HostKey types.PublicKey `json:"hostKey"` + + ContractPrice types.Currency `json:"contractPrice"` + InitialRenterFunds types.Currency `json:"initialRenterFunds"` ArchivalReason string `json:"archivalReason,omitempty"` + ContractSets []string `json:"contractSets,omitempty"` ProofHeight uint64 `json:"proofHeight"` RenewedFrom types.FileContractID `json:"renewedFrom"` RenewedTo types.FileContractID `json:"renewedTo,omitempty"` RevisionHeight uint64 `json:"revisionHeight"` RevisionNumber uint64 `json:"revisionNumber"` + SiamuxAddr string `json:"siamuxAddr,omitempty"` Size uint64 `json:"size"` + Spending ContractSpending `json:"spending"` StartHeight uint64 `json:"startHeight"` State string `json:"state"` WindowStart uint64 `json:"windowStart"` WindowEnd uint64 `json:"windowEnd"` - - ContractPrice types.Currency `json:"contractPrice"` - InitialRenterFunds types.Currency `json:"initialRenterFunds"` - - Spending ContractSpending `json:"spending"` - - ContractSets []string `json:"contractSets,omitempty"` } // ContractPrunableData wraps a contract's size information with its id. @@ -83,10 +81,10 @@ type ( // ContractSpending contains all spending details for a contract. ContractSpending struct { - Uploads types.Currency `json:"uploads"` Deletions types.Currency `json:"deletions"` FundAccount types.Currency `json:"fundAccount"` SectorRoots types.Currency `json:"sectorRoots"` + Uploads types.Currency `json:"uploads"` } ContractSpendingRecord struct { diff --git a/stores/sql/main.go b/stores/sql/main.go index 0b8df4ea7..b2794cff5 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -1888,12 +1888,12 @@ WHERE fcid = ?`, FileContractID(renewedFrom))) _, err = tx.Exec(ctx, ` UPDATE contracts SET created_at = ?, fcid = ?, - proof_height = ?, renewed_from = ?, renewed_to = ?, revision_height = ?, revision_number = ?, size = ?, start_height = ?, state = ?, window_start = ?, window_end = ?, + proof_height = ?, renewed_from = ?, revision_height = ?, revision_number = ?, size = ?, start_height = ?, state = ?, window_start = ?, window_end = ?, contract_price = ?, initial_renter_funds = ?, delete_spending = ?, fund_account_spending = ?, sector_roots_spending = ?, upload_spending = ? WHERE fcid = ?`, time.Now(), FileContractID(rev.ID()), - 0, FileContractID(renewedFrom), FileContractID(types.FileContractID{}), 0, fmt.Sprint(rev.Revision.RevisionNumber), rev.Revision.Filesize, startHeight, contractState, rev.Revision.WindowStart, rev.Revision.WindowEnd, + 0, FileContractID(renewedFrom), 0, fmt.Sprint(rev.Revision.RevisionNumber), rev.Revision.Filesize, startHeight, contractState, rev.Revision.WindowStart, rev.Revision.WindowEnd, Currency(contractPrice), Currency(initialRenterFunds), ZeroCurrency, ZeroCurrency, ZeroCurrency, ZeroCurrency, FileContractID(renewedFrom), diff --git a/stores/sql/rows.go b/stores/sql/rows.go index 29cdd3c7d..d7f37d02f 100644 --- a/stores/sql/rows.go +++ b/stores/sql/rows.go @@ -70,34 +70,34 @@ func (r *ContractRow) ContractMetadata() api.ContractMetadata { }.SiamuxAddr() } + spending := api.ContractSpending{ + Uploads: types.Currency(r.UploadSpending), + FundAccount: types.Currency(r.FundAccountSpending), + Deletions: types.Currency(r.DeleteSpending), + SectorRoots: types.Currency(r.SectorRootsSpending), + } + return api.ContractMetadata{ - ID: types.FileContractID(r.FCID), - HostIP: r.NetAddress, - HostKey: types.PublicKey(r.HostKey), - SiamuxAddr: siamuxAddr, + ID: types.FileContractID(r.FCID), + HostIP: r.NetAddress, + HostKey: types.PublicKey(r.HostKey), + + ContractPrice: types.Currency(r.ContractPrice), + InitialRenterFunds: types.Currency(r.InitialRenterFunds), ArchivalReason: r.ArchivalReason, + ContractSets: sets, ProofHeight: r.ProofHeight, RenewedFrom: types.FileContractID(r.RenewedFrom), RenewedTo: types.FileContractID(r.RenewedTo), RevisionHeight: r.RevisionHeight, RevisionNumber: r.RevisionNumber, + SiamuxAddr: siamuxAddr, Size: r.Size, + Spending: spending, StartHeight: r.StartHeight, State: r.State.String(), WindowStart: r.WindowStart, WindowEnd: r.WindowEnd, - - ContractPrice: types.Currency(r.ContractPrice), - InitialRenterFunds: types.Currency(r.InitialRenterFunds), - - Spending: api.ContractSpending{ - Uploads: types.Currency(r.UploadSpending), - FundAccount: types.Currency(r.FundAccountSpending), - Deletions: types.Currency(r.DeleteSpending), - SectorRoots: types.Currency(r.SectorRootsSpending), - }, - - ContractSets: sets, } } From b4a4e25522ac415764e16a36c81089cb37c06af9 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 5 Sep 2024 15:59:47 +0200 Subject: [PATCH 057/708] stores: update migrations --- .../migration_00017_archived_contracts.sql | 5 ++ .../migration_00003_contract_spending.sql | 3 +- .../migration_00017_archived_contracts.sql | 5 ++ .../migration_00003_contract_spending.sql | 78 ++++++++++++++++++- 4 files changed, 86 insertions(+), 5 deletions(-) diff --git a/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql b/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql index ce49dc69f..689cdb432 100644 --- a/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql +++ b/stores/sql/mysql/migrations/main/migration_00017_archived_contracts.sql @@ -128,7 +128,12 @@ INSERT INTO contracts_temp ( FROM `archived_contracts` ac LEFT JOIN hosts h ON ac.host = h.public_key; +ALTER TABLE contract_sectors DROP FOREIGN KEY fk_contract_sectors_db_contract; +ALTER TABLE contract_set_contracts DROP FOREIGN KEY fk_contract_set_contracts_db_contract; + DROP TABLE `contracts`; DROP TABLE `archived_contracts`; ALTER TABLE contracts_temp RENAME TO contracts; +ALTER TABLE contract_sectors ADD CONSTRAINT fk_contract_sectors_db_contract FOREIGN KEY (db_contract_id) REFERENCES contracts(id) ON DELETE CASCADE; +ALTER TABLE contract_set_contracts ADD CONSTRAINT fk_contract_set_contracts_db_contract FOREIGN KEY (db_contract_id) REFERENCES contracts(id) ON DELETE CASCADE; diff --git a/stores/sql/mysql/migrations/metrics/migration_00003_contract_spending.sql b/stores/sql/mysql/migrations/metrics/migration_00003_contract_spending.sql index 04a1f2bf7..4763b16a1 100644 --- a/stores/sql/mysql/migrations/metrics/migration_00003_contract_spending.sql +++ b/stores/sql/mysql/migrations/metrics/migration_00003_contract_spending.sql @@ -1,3 +1,4 @@ -ALTER TABLE contracts DROP COLUMN download_spending_lo, download_spending_hi; +ALTER TABLE contracts DROP COLUMN download_spending_lo; +ALTER TABLE contracts DROP COLUMN download_spending_hi; ALTER TABLE contracts RENAME COLUMN list_spending_lo TO sector_roots_spending_lo; ALTER TABLE contracts RENAME COLUMN list_spending_hi TO sector_roots_spending_hi; \ No newline at end of file diff --git a/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql b/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql index 4537c35eb..032184230 100644 --- a/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql +++ b/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql @@ -127,7 +127,12 @@ INSERT INTO contracts_temp ( FROM `archived_contracts` ac LEFT JOIN hosts h ON ac.host = h.public_key; +ALTER TABLE contract_sectors DROP FOREIGN KEY fk_contract_sectors_db_contract; +ALTER TABLE contract_set_contracts DROP FOREIGN KEY fk_contract_set_contracts_db_contract; + DROP TABLE `contracts`; DROP TABLE `archived_contracts`; ALTER TABLE contracts_temp RENAME TO contracts; +ALTER TABLE contract_sectors ADD CONSTRAINT fk_contract_sectors_db_contract FOREIGN KEY (db_contract_id) REFERENCES contracts(id) ON DELETE CASCADE; +ALTER TABLE contract_set_contracts ADD CONSTRAINT fk_contract_set_contracts_db_contract FOREIGN KEY (db_contract_id) REFERENCES contracts(id) ON DELETE CASCADE; \ No newline at end of file diff --git a/stores/sql/sqlite/migrations/metrics/migration_00003_contract_spending.sql b/stores/sql/sqlite/migrations/metrics/migration_00003_contract_spending.sql index 4763b16a1..b19194cbd 100644 --- a/stores/sql/sqlite/migrations/metrics/migration_00003_contract_spending.sql +++ b/stores/sql/sqlite/migrations/metrics/migration_00003_contract_spending.sql @@ -1,4 +1,74 @@ -ALTER TABLE contracts DROP COLUMN download_spending_lo; -ALTER TABLE contracts DROP COLUMN download_spending_hi; -ALTER TABLE contracts RENAME COLUMN list_spending_lo TO sector_roots_spending_lo; -ALTER TABLE contracts RENAME COLUMN list_spending_hi TO sector_roots_spending_hi; \ No newline at end of file +CREATE TABLE `contracts_temp` ( + `id` integer PRIMARY KEY AUTOINCREMENT, + `created_at` datetime, + `timestamp` BIGINT NOT NULL, + `fcid` blob NOT NULL, + `host` blob NOT NULL, + `remaining_collateral_lo` BIGINT NOT NULL, + `remaining_collateral_hi` BIGINT NOT NULL, + `remaining_funds_lo` BIGINT NOT NULL, + `remaining_funds_hi` BIGINT NOT NULL, + `revision_number` BIGINT NOT NULL, + `upload_spending_lo` BIGINT NOT NULL, + `upload_spending_hi` BIGINT NOT NULL, + `fund_account_spending_lo` BIGINT NOT NULL, + `fund_account_spending_hi` BIGINT NOT NULL, + `delete_spending_lo` BIGINT NOT NULL, + `delete_spending_hi` BIGINT NOT NULL, + `sector_roots_spending_lo` BIGINT NOT NULL, + `sector_roots_spending_hi` BIGINT NOT NULL +); +CREATE INDEX `idx_sector_roots_spending` ON `contracts_temp`(`sector_roots_spending_lo`,`sector_roots_spending_hi`); +CREATE INDEX `idx_fund_account_spending` ON `contracts_temp`(`fund_account_spending_lo`,`fund_account_spending_hi`); +CREATE INDEX `idx_contracts_fc_id` ON `contracts_temp`(`fcid`); +CREATE INDEX `idx_remaining_collateral` ON `contracts_temp`(`remaining_collateral_lo`,`remaining_collateral_hi`); +CREATE INDEX `idx_contracts_host` ON `contracts_temp`(`host`); +CREATE INDEX `idx_contracts_timestamp` ON `contracts_temp`(`timestamp`); +CREATE INDEX `idx_delete_spending` ON `contracts_temp`(`delete_spending_lo`,`delete_spending_hi`); +CREATE INDEX `idx_upload_spending` ON `contracts_temp`(`upload_spending_lo`,`upload_spending_hi`); +CREATE INDEX `idx_contracts_revision_number` ON `contracts_temp`(`revision_number`); +CREATE INDEX `idx_remaining_funds` ON `contracts_temp`(`remaining_funds_lo`,`remaining_funds_hi`); +CREATE INDEX `idx_contracts_fcid_timestamp` ON `contracts_temp`(`fcid`,`timestamp`); + +INSERT INTO contracts_temp ( + id, + created_at, + timestamp, + fcid, + host, + remaining_collateral_lo, + remaining_collateral_hi, + remaining_funds_lo, + remaining_funds_hi, + revision_number, + upload_spending_lo, + upload_spending_hi, + fund_account_spending_lo, + fund_account_spending_hi, + delete_spending_lo, + delete_spending_hi, + sector_roots_spending_lo, + sector_roots_spending_hi +) SELECT + id, + created_at, + timestamp, + fcid, + host, + remaining_collateral_lo, + remaining_collateral_hi, + remaining_funds_lo, + remaining_funds_hi, + revision_number, + upload_spending_lo, + upload_spending_hi, + fund_account_spending_lo, + fund_account_spending_hi, + delete_spending_lo, + delete_spending_hi, + list_spending_lo, + list_spending_hi +FROM contracts; + +DROP TABLE `contracts`; +ALTER TABLE contracts_temp RENAME TO contracts; From 0e1a2ecd2f8699aade08b5f9721954cc79659b10 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 5 Sep 2024 16:14:19 +0200 Subject: [PATCH 058/708] stores: update SQLite migration --- .../main/migration_00017_archived_contracts.sql | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql b/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql index 032184230..ec2dd1bcd 100644 --- a/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql +++ b/stores/sql/sqlite/migrations/main/migration_00017_archived_contracts.sql @@ -127,12 +127,9 @@ INSERT INTO contracts_temp ( FROM `archived_contracts` ac LEFT JOIN hosts h ON ac.host = h.public_key; -ALTER TABLE contract_sectors DROP FOREIGN KEY fk_contract_sectors_db_contract; -ALTER TABLE contract_set_contracts DROP FOREIGN KEY fk_contract_set_contracts_db_contract; - -DROP TABLE `contracts`; DROP TABLE `archived_contracts`; +PRAGMA foreign_keys = OFF; +DROP TABLE `contracts`; ALTER TABLE contracts_temp RENAME TO contracts; -ALTER TABLE contract_sectors ADD CONSTRAINT fk_contract_sectors_db_contract FOREIGN KEY (db_contract_id) REFERENCES contracts(id) ON DELETE CASCADE; -ALTER TABLE contract_set_contracts ADD CONSTRAINT fk_contract_set_contracts_db_contract FOREIGN KEY (db_contract_id) REFERENCES contracts(id) ON DELETE CASCADE; \ No newline at end of file +PRAGMA foreign_keys = ON; \ No newline at end of file From 2cab31c631e8121021710b810f2e2b9dbaf99296 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 5 Sep 2024 17:21:29 +0200 Subject: [PATCH 059/708] all: rename pin setting --- api/events.go | 2 +- api/setting.go | 10 +++++----- bus/bus.go | 31 +++++++------------------------ bus/client/settings.go | 6 +++--- bus/routes.go | 15 ++++++++------- internal/bus/pinmanager.go | 10 +++++----- internal/bus/pinmanager_test.go | 26 +++++++++++++------------- internal/test/e2e/cluster.go | 2 +- stores/settings.go | 32 ++++++++++++++++---------------- 9 files changed, 59 insertions(+), 75 deletions(-) diff --git a/api/events.go b/api/events.go index bd6dcd776..43620eda7 100644 --- a/api/events.go +++ b/api/events.go @@ -64,7 +64,7 @@ type ( EventSettingUpdate struct { GougingSettings *GougingSettings `json:"gougingSettings,omitempty"` - PinnedSettings *PinnedSettings `json:"pinnedSettings,omitempty"` + PinnedSettings *PinningSettings `json:"pinnedSettings,omitempty"` S3Settings *S3Settings `json:"s3Settings,omitempty"` UploadSettings *UploadSettings `json:"uploadSettings,omitempty"` Timestamp time.Time `json:"timestamp"` diff --git a/api/setting.go b/api/setting.go index a9443d6be..668acb243 100644 --- a/api/setting.go +++ b/api/setting.go @@ -40,7 +40,7 @@ var ( // DefaultPinnedSettings define the default pin settings the bus is // configured with on startup. - DefaultPinnedSettings = PinnedSettings{ + DefaultPinnedSettings = PinningSettings{ Enabled: false, Currency: "usd", ForexEndpointURL: "https://api.siascan.com/exchange-rate/siacoin", @@ -120,10 +120,10 @@ type ( MigrationSurchargeMultiplier uint64 `json:"migrationSurchargeMultiplier"` } - // PinnedSettings holds the configuration for pinning certain settings to a + // PinningSettings holds the configuration for pinning certain settings to a // specific currency (e.g., USD). It uses a Forex API to fetch the current // exchange rate, allowing users to set prices in USD instead of SC. - PinnedSettings struct { + PinningSettings struct { // Enabled can be used to either enable or temporarily disable price // pinning. If enabled, both the currency and the Forex endpoint URL // must be valid. @@ -137,7 +137,7 @@ type ( ForexEndpointURL string `json:"forexEndpointURL"` // Threshold is a percentage between 0 and 1 that determines when the - // pinned settings are updated based on the exchange rate at the time. + // pinning settings are updated based on the exchange rate at the time. Threshold float64 `json:"threshold"` // Autopilots contains the pinned settings for every autopilot. @@ -202,7 +202,7 @@ func (p Pin) IsPinned() bool { } // Validate returns an error if the price pin settings are not considered valid. -func (pps PinnedSettings) Validate() error { +func (pps PinningSettings) Validate() error { if pps.ForexEndpointURL == "" { return fmt.Errorf("price pin settings must have a forex endpoint URL") } diff --git a/bus/bus.go b/bus/bus.go index e26842664..a5e575d44 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -34,7 +34,6 @@ import ( "go.sia.tech/renterd/stores/sql" "go.sia.tech/renterd/webhooks" "go.uber.org/zap" - "golang.org/x/crypto/blake2b" ) const ( @@ -292,8 +291,8 @@ type ( GougingSettings(ctx context.Context) (api.GougingSettings, error) UpdateGougingSettings(ctx context.Context, gs api.GougingSettings) error - PinnedSettings(ctx context.Context) (api.PinnedSettings, error) - UpdatePinnedSettings(ctx context.Context, ps api.PinnedSettings) error + PinningSettings(ctx context.Context) (api.PinningSettings, error) + UpdatePinningSettings(ctx context.Context, ps api.PinningSettings) error UploadSettings(ctx context.Context) (api.UploadSettings, error) UpdateUploadSettings(ctx context.Context, us api.UploadSettings) error @@ -578,24 +577,6 @@ func (b *Bus) addRenewedContract(ctx context.Context, renewedFrom types.FileCont return r, nil } -func (b *Bus) deriveRenterKey(hostKey types.PublicKey) types.PrivateKey { - seed := blake2b.Sum256(append(b.deriveSubKey("renterkey"), hostKey[:]...)) - pk := types.NewPrivateKeyFromSeed(seed[:]) - for i := range seed { - seed[i] = 0 - } - return pk -} - -func (b *Bus) deriveSubKey(purpose string) types.PrivateKey { - seed := blake2b.Sum256(append(b.masterKey[:], []byte(purpose)...)) - pk := types.NewPrivateKeyFromSeed(seed[:]) - for i := range seed { - seed[i] = 0 - } - return pk -} - func (b *Bus) broadcastContract(ctx context.Context, fcid types.FileContractID) (txnID types.TransactionID, _ error) { // acquire contract lock indefinitely and defer the release lockID, err := b.contractLocker.Acquire(ctx, lockingPriorityRenew, fcid, time.Duration(math.MaxInt64)) @@ -615,7 +596,7 @@ func (b *Bus) broadcastContract(ctx context.Context, fcid types.FileContractID) } // derive the renter key - renterKey := b.deriveRenterKey(c.HostKey) + renterKey := b.masterKey.DeriveContractKey(c.HostKey) // fetch revision rev, err := b.rhp2.SignedRevision(ctx, c.HostIP, c.HostKey, renterKey, fcid, time.Minute) @@ -659,7 +640,7 @@ func (b *Bus) broadcastContract(ctx context.Context, fcid types.FileContractID) func (b *Bus) formContract(ctx context.Context, hostSettings rhpv2.HostSettings, renterAddress types.Address, renterFunds, hostCollateral types.Currency, hostKey types.PublicKey, hostIP string, endHeight uint64) (rhpv2.ContractRevision, error) { // derive the renter key - renterKey := b.deriveRenterKey(hostKey) + renterKey := b.masterKey.DeriveContractKey(hostKey) // prepare the transaction cs := b.cm.TipState() @@ -753,6 +734,9 @@ func (b *Bus) prepareRenew(cs consensus.State, revision types.FileContractRevisi } func (b *Bus) renewContract(ctx context.Context, cs consensus.State, gp api.GougingParams, c api.ContractMetadata, hs rhpv2.HostSettings, renterFunds, minNewCollateral, maxFundAmount types.Currency, endHeight, expectedNewStorage uint64) (rhpv2.ContractRevision, types.Currency, types.Currency, error) { + // derive the renter key + renterKey := b.masterKey.DeriveContractKey(c.HostKey) + // acquire contract lock indefinitely and defer the release lockID, err := b.contractLocker.Acquire(ctx, lockingPriorityRenew, c.ID, time.Duration(math.MaxInt64)) if err != nil { @@ -772,7 +756,6 @@ func (b *Bus) renewContract(ctx context.Context, cs consensus.State, gp api.Goug // renew contract gc := gouging.NewChecker(gp.GougingSettings, gp.ConsensusState, gp.TransactionFee, nil, nil) - renterKey := b.deriveRenterKey(c.HostKey) prepareRenew := b.prepareRenew(cs, rev, hs.Address, b.w.Address(), renterFunds, minNewCollateral, maxFundAmount, endHeight, expectedNewStorage) newRevision, txnSet, contractPrice, fundAmount, err := b.rhp3.Renew(ctx, gc, rev, renterKey, c.HostKey, c.SiamuxAddr, prepareRenew, b.w.SignTransaction) if err != nil { diff --git a/bus/client/settings.go b/bus/client/settings.go index 46d3e8708..25f9ae4bb 100644 --- a/bus/client/settings.go +++ b/bus/client/settings.go @@ -18,13 +18,13 @@ func (c *Client) UpdateGougingSettings(ctx context.Context, gs api.GougingSettin } // PricePinningSettings returns the contract set settings. -func (c *Client) PricePinningSettings(ctx context.Context) (ps api.PinnedSettings, err error) { +func (c *Client) PricePinningSettings(ctx context.Context) (ps api.PinningSettings, err error) { err = c.c.WithContext(ctx).GET("/settings/pinned", &ps) return } -// UpdatePinnedSettings updates the given setting. -func (c *Client) UpdatePinnedSettings(ctx context.Context, ps api.PinnedSettings) error { +// UpdatePinningSettings updates the given setting. +func (c *Client) UpdatePinningSettings(ctx context.Context, ps api.PinningSettings) error { return c.c.WithContext(ctx).PUT("/settings/pinned", ps) } diff --git a/bus/routes.go b/bus/routes.go index 6334c24c1..188664e85 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -912,7 +912,8 @@ func (b *Bus) contractPruneHandlerPOST(jc jape.Context) { } // prune the contract - rev, spending, pruned, remaining, err := b.rhp2.PruneContract(pruneCtx, b.deriveRenterKey(c.HostKey), gc, c.HostIP, c.HostKey, fcid, c.RevisionNumber, func(fcid types.FileContractID, roots []types.Hash256) ([]uint64, error) { + rk := b.masterKey.DeriveContractKey(c.HostKey) + rev, spending, pruned, remaining, err := b.rhp2.PruneContract(pruneCtx, rk, gc, c.HostIP, c.HostKey, fcid, c.RevisionNumber, func(fcid types.FileContractID, roots []types.Hash256) ([]uint64, error) { indices, err := b.ms.PrunableContractRoots(ctx, fcid, roots) if err != nil { return nil, err @@ -1487,8 +1488,8 @@ func (b *Bus) settingsGougingHandlerPUT(jc jape.Context) { } func (b *Bus) settingsPinnedHandlerGET(jc jape.Context) { - pps, err := b.ss.PinnedSettings(jc.Request.Context()) - if jc.Check("failed to get pinned settings", err) == nil { + pps, err := b.ss.PinningSettings(jc.Request.Context()) + if jc.Check("failed to get pinning settings", err) == nil { // populate the Autopilots map with the current autopilots aps, err := b.as.Autopilots(jc.Request.Context()) if jc.Check("failed to fetch autopilots", err) != nil { @@ -1507,19 +1508,19 @@ func (b *Bus) settingsPinnedHandlerGET(jc jape.Context) { } func (b *Bus) settingsPinnedHandlerPUT(jc jape.Context) { - var ps api.PinnedSettings + var ps api.PinningSettings if jc.Decode(&ps) != nil { return } else if err := ps.Validate(); err != nil { - jc.Error(fmt.Errorf("couldn't update pinned settings, error: %v", err), http.StatusBadRequest) + jc.Error(fmt.Errorf("couldn't update pinning settings, error: %v", err), http.StatusBadRequest) return } else if ps.Enabled { if _, err := ibus.NewForexClient(ps.ForexEndpointURL).SiacoinExchangeRate(jc.Request.Context(), ps.Currency); err != nil { - jc.Error(fmt.Errorf("couldn't update pinned settings, forex API unreachable,error: %v", err), http.StatusBadRequest) + jc.Error(fmt.Errorf("couldn't update pinning settings, forex API unreachable,error: %v", err), http.StatusBadRequest) return } } - if jc.Check("could not update pinned settings", b.ss.UpdatePinnedSettings(jc.Request.Context(), ps)) == nil { + if jc.Check("could not update pinning settings", b.ss.UpdatePinningSettings(jc.Request.Context(), ps)) == nil { b.broadcastAction(webhooks.Event{ Module: api.ModuleSetting, Event: api.EventUpdate, diff --git a/internal/bus/pinmanager.go b/internal/bus/pinmanager.go index 8929b9064..a02f65dc3 100644 --- a/internal/bus/pinmanager.go +++ b/internal/bus/pinmanager.go @@ -24,8 +24,8 @@ type ( GougingSettings(ctx context.Context) (api.GougingSettings, error) UpdateGougingSettings(ctx context.Context, gs api.GougingSettings) error - PinnedSettings(ctx context.Context) (api.PinnedSettings, error) - UpdatePinnedSettings(ctx context.Context, ps api.PinnedSettings) error + PinningSettings(ctx context.Context) (api.PinningSettings, error) + UpdatePinningSettings(ctx context.Context, ps api.PinningSettings) error } ) @@ -309,10 +309,10 @@ func (pm *pinManager) updateGougingSettings(ctx context.Context, pins api.Gougin func (pm *pinManager) updatePrices(ctx context.Context, forced bool) error { pm.logger.Debugw("updating prices", zap.Bool("forced", forced)) - // fetch pinned settings - settings, err := pm.s.PinnedSettings(ctx) + // fetch pinning settings + settings, err := pm.s.PinningSettings(ctx) if err != nil { - return fmt.Errorf("failed to fetch pinned settings: %w", err) + return fmt.Errorf("failed to fetch pinning settings: %w", err) } else if !settings.Enabled { pm.logger.Debug("price pinning is disabled, skipping price update") return nil diff --git a/internal/bus/pinmanager_test.go b/internal/bus/pinmanager_test.go index 8716197ee..85272610c 100644 --- a/internal/bus/pinmanager_test.go +++ b/internal/bus/pinmanager_test.go @@ -112,7 +112,7 @@ func (api *mockForexAPI) setUnreachable(unreachable bool) { type mockPinStore struct { mu sync.Mutex gs api.GougingSettings - ps api.PinnedSettings + ps api.PinningSettings autopilots map[string]api.Autopilot } @@ -149,18 +149,18 @@ func (ms *mockPinStore) UpdateGougingSettings(ctx context.Context, gs api.Gougin return nil } -func (ms *mockPinStore) PinnedSettings(ctx context.Context) (api.PinnedSettings, error) { +func (ms *mockPinStore) PinningSettings(ctx context.Context) (api.PinningSettings, error) { ms.mu.Lock() defer ms.mu.Unlock() return ms.ps, nil } -func (ms *mockPinStore) UpdatePinnedSettings(ctx context.Context, ps api.PinnedSettings) error { +func (ms *mockPinStore) UpdatePinningSettings(ctx context.Context, ps api.PinningSettings) error { b, err := json.Marshal(ps) if err != nil { return err } - var cloned api.PinnedSettings + var cloned api.PinningSettings if err := json.Unmarshal(b, &cloned); err != nil { return err } @@ -221,7 +221,7 @@ func TestPinManager(t *testing.T) { pps.Currency = "usd" pps.Threshold = 0.5 pps.ForexEndpointURL = forex.s.URL - ms.UpdatePinnedSettings(context.Background(), pps) + ms.UpdatePinningSettings(context.Background(), pps) // assert price manager is running now if cnt := len(rates()); cnt < 1 { @@ -236,7 +236,7 @@ func TestPinManager(t *testing.T) { pps.GougingSettingsPins.MaxDownload = api.Pin{Value: 3, Pinned: false} pps.GougingSettingsPins.MaxStorage = api.Pin{Value: 3, Pinned: false} pps.GougingSettingsPins.MaxUpload = api.Pin{Value: 3, Pinned: false} - ms.UpdatePinnedSettings(context.Background(), pps) + ms.UpdatePinningSettings(context.Background(), pps) // assert gouging settings are unchanged if gss, _ := ms.GougingSettings(context.Background()); !reflect.DeepEqual(gs, gss) { @@ -245,14 +245,14 @@ func TestPinManager(t *testing.T) { // enable the max download pin, with the threshold at 0.5 it should remain unchanged pps.GougingSettingsPins.MaxDownload.Pinned = true - ms.UpdatePinnedSettings(context.Background(), pps) + ms.UpdatePinningSettings(context.Background(), pps) if gss, _ := ms.GougingSettings(context.Background()); !reflect.DeepEqual(gs, gss) { t.Fatalf("expected gouging settings to be the same, got %v", gss) } // lower the threshold, gouging settings should be updated pps.Threshold = 0.05 - ms.UpdatePinnedSettings(context.Background(), pps) + ms.UpdatePinningSettings(context.Background(), pps) if gss, _ := ms.GougingSettings(context.Background()); gss.MaxContractPrice.Equals(gs.MaxDownloadPrice) { t.Fatalf("expected gouging settings to be updated, got %v = %v", gss.MaxDownloadPrice, gs.MaxDownloadPrice) } @@ -261,7 +261,7 @@ func TestPinManager(t *testing.T) { pps.GougingSettingsPins.MaxDownload.Pinned = true pps.GougingSettingsPins.MaxStorage.Pinned = true pps.GougingSettingsPins.MaxUpload.Pinned = true - ms.UpdatePinnedSettings(context.Background(), pps) + ms.UpdatePinningSettings(context.Background(), pps) // assert they're all updated if gss, _ := ms.GougingSettings(context.Background()); gss.MaxDownloadPrice.Equals(gs.MaxDownloadPrice) || @@ -284,7 +284,7 @@ func TestPinManager(t *testing.T) { }, } pps.Autopilots = map[string]api.AutopilotPins{testAutopilotID: pins} - ms.UpdatePinnedSettings(context.Background(), pps) + ms.UpdatePinningSettings(context.Background(), pps) // assert autopilot was not updated if app, _ := ms.Autopilot(context.Background(), testAutopilotID); !app.Config.Contracts.Allowance.Equals(ap.Config.Contracts.Allowance) { @@ -294,7 +294,7 @@ func TestPinManager(t *testing.T) { // enable the pin pins.Allowance.Pinned = true pps.Autopilots[testAutopilotID] = pins - ms.UpdatePinnedSettings(context.Background(), pps) + ms.UpdatePinningSettings(context.Background(), pps) // assert autopilot was updated if app, _ := ms.Autopilot(context.Background(), testAutopilotID); app.Config.Contracts.Allowance.Equals(ap.Config.Contracts.Allowance) { @@ -305,7 +305,7 @@ func TestPinManager(t *testing.T) { forex.setUnreachable(true) // assert alert was registered - ms.UpdatePinnedSettings(context.Background(), pps) + ms.UpdatePinningSettings(context.Background(), pps) res, _ := a.Alerts(context.Background(), alerts.AlertsOpts{}) if len(res.Alerts) == 0 { t.Fatalf("expected 1 alert, got %d", len(a.alerts)) @@ -315,7 +315,7 @@ func TestPinManager(t *testing.T) { forex.setUnreachable(false) // assert alert was dismissed - ms.UpdatePinnedSettings(context.Background(), pps) + ms.UpdatePinningSettings(context.Background(), pps) res, _ = a.Alerts(context.Background(), alerts.AlertsOpts{}) if len(res.Alerts) != 0 { t.Fatalf("expected 0 alerts, got %d", len(a.alerts)) diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index c1afeed35..9f2b2c0ac 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -502,7 +502,7 @@ func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { // Update the bus settings. tt.OK(busClient.UpdateGougingSettings(ctx, test.GougingSettings)) - tt.OK(busClient.UpdatePinnedSettings(ctx, test.PricePinSettings)) + tt.OK(busClient.UpdatePinningSettings(ctx, test.PricePinSettings)) tt.OK(busClient.UpdateUploadSettings(ctx, us)) tt.OK(busClient.UpdateS3Settings(ctx, s3)) diff --git a/stores/settings.go b/stores/settings.go index 2c9fc9a6b..843d8e986 100644 --- a/stores/settings.go +++ b/stores/settings.go @@ -12,10 +12,10 @@ import ( ) const ( - SettingGouging = "gouging" - SettingPinned = "pinned" - SettingS3 = "s3" - SettingUpload = "upload" + SettingGouging = "gouging" + SettingPricePinning = "pricepinning" + SettingS3 = "s3" + SettingUpload = "upload" ) func (s *SQLStore) GougingSettings(ctx context.Context) (gs api.GougingSettings, err error) { @@ -27,13 +27,13 @@ func (s *SQLStore) UpdateGougingSettings(ctx context.Context, gs api.GougingSett return s.updateSetting(ctx, SettingGouging, gs) } -func (s *SQLStore) PinnedSettings(ctx context.Context) (ps api.PinnedSettings, err error) { - err = s.fetchSetting(ctx, SettingPinned, &ps) +func (s *SQLStore) PinningSettings(ctx context.Context) (ps api.PinningSettings, err error) { + err = s.fetchSetting(ctx, SettingPricePinning, &ps) return } -func (s *SQLStore) UpdatePinnedSettings(ctx context.Context, ps api.PinnedSettings) error { - return s.updateSetting(ctx, SettingPinned, ps) +func (s *SQLStore) UpdatePinningSettings(ctx context.Context, ps api.PinningSettings) error { + return s.updateSetting(ctx, SettingPricePinning, ps) } func (s *SQLStore) UploadSettings(ctx context.Context) (us api.UploadSettings, err error) { @@ -93,22 +93,22 @@ func (s *SQLStore) MigrateV2Settings(ctx context.Context) error { } } - // migrate pinned settings + // migrate pinning settings value, err = tx.Setting(ctx, "pricepinning") if err != nil && !errors.Is(err, sql.ErrSettingNotFound) { return err } else if err == nil { - var ps api.PinnedSettings + var ps api.PinningSettings if err := json.Unmarshal([]byte(value), &ps); err != nil { - s.logger.Warnw("failed to unmarshal pinned settings, using default", zap.Error(err)) - value = s.defaultSetting(SettingPinned) + s.logger.Warnw("failed to unmarshal pinning settings, using default", zap.Error(err)) + value = s.defaultSetting(SettingPricePinning) } else if err := ps.Validate(); err != nil { - s.logger.Warnw("failed to migrate pinned settings, using default", zap.Error(err)) - value = s.defaultSetting(SettingPinned) + s.logger.Warnw("failed to migrate pinning settings, using default", zap.Error(err)) + value = s.defaultSetting(SettingPricePinning) } // update setting and delete old value - if err := tx.UpdateSetting(ctx, SettingPinned, value); err != nil { + if err := tx.UpdateSetting(ctx, SettingPricePinning, value); err != nil { return err } else if err := tx.DeleteSetting(ctx, "pricepinning"); err != nil { return err @@ -266,7 +266,7 @@ func (s *SQLStore) defaultSetting(key string) string { case SettingGouging: b, _ := json.Marshal(api.DefaultGougingSettings) return string(b) - case SettingPinned: + case SettingPricePinning: b, _ := json.Marshal(api.DefaultPinnedSettings) return string(b) case SettingS3: From 3f82d0bb89b3e930d5acafd776171cbdbcbe66c3 Mon Sep 17 00:00:00 2001 From: PJ Date: Fri, 6 Sep 2024 10:40:07 +0200 Subject: [PATCH 060/708] stores: move migration --- api/setting.go | 15 +- bus/bus.go | 7 - cmd/renterd/node.go | 8 +- internal/sql/migrations.go | 149 ++++++++++++++++ internal/test/e2e/cluster.go | 15 +- stores/bench_test.go | 2 +- stores/settings.go | 159 +----------------- stores/sql/mysql/main.go | 10 +- stores/sql/mysql/metrics.go | 2 +- .../main/migration_00017_settings.sql | 1 + stores/sql/sqlite/main.go | 10 +- stores/sql/sqlite/metrics.go | 2 +- .../main/migration_00017_settings.sql | 1 + stores/sql_test.go | 13 +- 14 files changed, 201 insertions(+), 193 deletions(-) create mode 100644 stores/sql/mysql/migrations/main/migration_00017_settings.sql create mode 100644 stores/sql/sqlite/migrations/main/migration_00017_settings.sql diff --git a/api/setting.go b/api/setting.go index 668acb243..bf97581b4 100644 --- a/api/setting.go +++ b/api/setting.go @@ -5,7 +5,6 @@ import ( "fmt" "time" - "go.sia.tech/core/consensus" rhpv2 "go.sia.tech/core/rhp/v2" "go.sia.tech/core/types" ) @@ -66,16 +65,20 @@ var ( // DefaultUploadSettings define the default upload settings the bus is // configured with on startup. -func DefaultUploadSettings(network *consensus.Network) UploadSettings { +func DefaultUploadSettings(network string) UploadSettings { + rs := RedundancySettings{ + MinShards: 10, + TotalShards: 30, + } + if network != "mainnet" { + rs = DefaultRedundancySettingsTestnet + } return UploadSettings{ Packing: UploadPackingSettings{ Enabled: true, SlabBufferMaxSizeSoft: 1 << 32, // 4 GiB }, - Redundancy: RedundancySettings{ - MinShards: 10, - TotalShards: 30, - }, + Redundancy: rs, } } diff --git a/bus/bus.go b/bus/bus.go index a5e575d44..d1d7b6dbd 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -299,8 +299,6 @@ type ( S3Settings(ctx context.Context) (api.S3Settings, error) UpdateS3Settings(ctx context.Context, s3as api.S3Settings) error - - MigrateV2Settings(ctx context.Context) error } WalletMetricsRecorder interface { @@ -365,11 +363,6 @@ func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksMa rhp3: rhp3.New(rhp.NewFallbackDialer(store, net.Dialer{}, l), l), } - // migrate settings store - if err := store.MigrateV2Settings(ctx); err != nil { - return nil, err - } - // create contract locker b.contractLocker = ibus.NewContractLocker() diff --git a/cmd/renterd/node.go b/cmd/renterd/node.go index 6721408ca..9af925bf9 100644 --- a/cmd/renterd/node.go +++ b/cmd/renterd/node.go @@ -491,11 +491,11 @@ func buildStoreConfig(am alerts.Alerter, cfg config.Config, pk types.PrivateKey, if err != nil { return stores.Config{}, fmt.Errorf("failed to open MySQL metrics database: %w", err) } - dbMain, err = mysql.NewMainDatabase(connMain, logger, cfg.Log.Database.SlowThreshold, cfg.Log.Database.SlowThreshold) + dbMain, err = mysql.NewMainDatabase(connMain, cfg.Log.Database.SlowThreshold, cfg.Log.Database.SlowThreshold, cfg.Network, logger) if err != nil { return stores.Config{}, fmt.Errorf("failed to create MySQL main database: %w", err) } - dbMetrics, err = mysql.NewMetricsDatabase(connMetrics, logger, cfg.Log.Database.SlowThreshold, cfg.Log.Database.SlowThreshold) + dbMetrics, err = mysql.NewMetricsDatabase(connMetrics, cfg.Log.Database.SlowThreshold, cfg.Log.Database.SlowThreshold, logger) if err != nil { return stores.Config{}, fmt.Errorf("failed to create MySQL metrics database: %w", err) } @@ -511,7 +511,7 @@ func buildStoreConfig(am alerts.Alerter, cfg config.Config, pk types.PrivateKey, if err != nil { return stores.Config{}, fmt.Errorf("failed to open SQLite main database: %w", err) } - dbMain, err = sqlite.NewMainDatabase(db, logger, cfg.Log.Database.SlowThreshold, cfg.Log.Database.SlowThreshold) + dbMain, err = sqlite.NewMainDatabase(db, cfg.Log.Database.SlowThreshold, cfg.Log.Database.SlowThreshold, cfg.Network, logger) if err != nil { return stores.Config{}, fmt.Errorf("failed to create SQLite main database: %w", err) } @@ -520,7 +520,7 @@ func buildStoreConfig(am alerts.Alerter, cfg config.Config, pk types.PrivateKey, if err != nil { return stores.Config{}, fmt.Errorf("failed to open SQLite metrics database: %w", err) } - dbMetrics, err = sqlite.NewMetricsDatabase(dbm, logger, cfg.Log.Database.SlowThreshold, cfg.Log.Database.SlowThreshold) + dbMetrics, err = sqlite.NewMetricsDatabase(dbm, cfg.Log.Database.SlowThreshold, cfg.Log.Database.SlowThreshold, logger) if err != nil { return stores.Config{}, fmt.Errorf("failed to create SQLite metrics database: %w", err) } diff --git a/internal/sql/migrations.go b/internal/sql/migrations.go index 9b98be300..a7368ba72 100644 --- a/internal/sql/migrations.go +++ b/internal/sql/migrations.go @@ -3,10 +3,13 @@ package sql import ( "context" "embed" + "encoding/json" "fmt" "strings" + "time" "unicode/utf8" + "go.sia.tech/renterd/api" "go.sia.tech/renterd/internal/utils" "go.uber.org/zap" ) @@ -28,6 +31,7 @@ type ( MainMigrator interface { Migrator MakeDirsForPath(ctx context.Context, tx Tx, path string) (int64, error) + Network() string } ) @@ -211,6 +215,151 @@ var ( return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00016_account_owner", log) }, }, + { + ID: "00017_settings", + Migrate: func(tx Tx) error { + log.Infof("performing %s migration '00017_settings'", dbIdentifier) + + // fetch all settings + rows, err := tx.Query(ctx, "SELECT key, value FROM settings") + if err != nil { + return fmt.Errorf("failed to fetch settings: %v", err) + } + defer rows.Close() + + settings := make(map[string]string) + for rows.Next() { + var k, v string + if err := rows.Scan(&k, &v); err != nil { + _ = rows.Close() + return fmt.Errorf("failed to scan setting: %v", err) + } + settings[k] = v + } + + // migrate gouging settings + if v, ok := settings["gouging"]; ok { + var gs api.GougingSettings + err := json.Unmarshal([]byte(v), &gs) + if err == nil { + err = gs.Validate() + } + if err != nil { + log.Warnf("gouging settings are not being migrated, err: %v", err) + if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", "gouging"); err != nil { + return fmt.Errorf("failed to delete gouging settings: %v", err) + } + } + } else { + log.Warn("no pricepinning settings found") + } + + // migrate pinning settings + if v, ok := settings["pricepinning"]; ok { + var ps api.PinningSettings + err := json.Unmarshal([]byte(v), &ps) + if err == nil { + err = ps.Validate() + } + if err != nil { + log.Warnf("pricepinning settings are not being migrated, err: %v", err) + if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", "pricepinning"); err != nil { + return fmt.Errorf("failed to delete pricepinning settings: %v", err) + } + } else { + b, _ := json.Marshal(ps) + if _, err := tx.Exec(ctx, "UPDATE settings SET value = ? WHERE `key` = ?", string(b), "pricepinning"); err != nil { + return fmt.Errorf("failed to update pricepinning settings: %v", err) + } + } + } else { + log.Warn("no pricepinning settings found") + } + + // migrate S3 authentication settings + if v, ok := settings["s3authentication"]; ok { + var s3s api.S3Settings + err := json.Unmarshal([]byte(v), &s3s.Authentication) + if err == nil { + err = s3s.Validate() + } + if err == nil { + b, _ := json.Marshal(s3s) + if _, err := tx.Exec(ctx, "INSERT INTO settings (created_at, `key`, value) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE value = VALUES(value)", + time.Now(), "s3", string(b)); err != nil { + return fmt.Errorf("failed to insert s3 settings: %v", err) + } + } else { + log.Warnf("s3authentication settings are not being migrated, err: %v", err) + if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", "s3authentication"); err != nil { + log.Warnf("failed to delete s3authentication settings: %v", err) + } + } + } else { + log.Warn("no s3authentication setting found") + } + + // migrate upload settings + us := api.DefaultUploadSettings(m.Network()) + + if v, ok := settings["contractset"]; ok { + var css struct { + Default string `json:"default"` + } + if err := json.Unmarshal([]byte(v), &css); err != nil { + log.Warnf("contractset settings are not being migrated, err: %v", err) + } else { + us.DefaultContractSet = css.Default + } + if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", "contractset"); err != nil { + return err + } + } + + if v, ok := settings["uploadpacking"]; ok { + var ups api.UploadPackingSettings + if err := json.Unmarshal([]byte(v), &ups); err != nil { + log.Warnf("uploadpacking settings are not being migrated, err: %v", err) + } else { + us.Packing = ups + } + if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", "uploadpacking"); err != nil { + return err + } + } + + if v, ok := settings["redundancy"]; ok { + var rs api.RedundancySettings + err := json.Unmarshal([]byte(v), &rs) + if err == nil { + err = rs.Validate() + } + if err != nil { + log.Warnf("redundancy settings are not being migrated, err: %v", err) + } else { + us.Redundancy = rs + } + if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", "redundancy"); err != nil { + return err + } + } + + // update upload settings + if err := us.Validate(); err != nil { + log.Warnf("upload settings are not being migrated, err: %v", err) + return err // developer error + } else { + b, _ := json.Marshal(us) + if _, err := tx.Exec(ctx, "INSERT INTO settings (created_at, `key`, value) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE value = VALUES(value)", + time.Now(), "upload", string(b)); err != nil { + return fmt.Errorf("failed to insert s3 settings: %v", err) + } + } + + log.Info("migration '00017_settings' complete") + return nil + }, + }, } } MetricsMigrations = func(ctx context.Context, migrationsFs embed.FS, log *zap.SugaredLogger) []Migration { diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index 9f2b2c0ac..2af725d02 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -545,14 +545,15 @@ func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { } func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, pk types.PrivateKey, logger *zap.Logger) (*bus.Bus, func(ctx context.Context) error, *chain.Manager, bus.Store, error) { + network, genesis := testNetwork() + // create store alertsMgr := alerts.NewManager() - storeCfg, err := buildStoreConfig(alertsMgr, dir, cfg.SlabBufferCompletionThreshold, cfgDb, pk, logger) + storeCfg, err := buildStoreConfig(alertsMgr, dir, network.Name, cfg.SlabBufferCompletionThreshold, cfgDb, pk, logger) if err != nil { return nil, nil, nil, nil, err } - network, genesis := testNetwork() sqlStore, err := stores.NewSQLStore(storeCfg, network) if err != nil { return nil, nil, nil, nil, err @@ -1119,7 +1120,7 @@ func testApCfg() config.Autopilot { } } -func buildStoreConfig(am alerts.Alerter, dir string, slabBufferCompletionThreshold int64, cfg dbConfig, pk types.PrivateKey, logger *zap.Logger) (stores.Config, error) { +func buildStoreConfig(am alerts.Alerter, dir, network string, slabBufferCompletionThreshold int64, cfg dbConfig, pk types.PrivateKey, logger *zap.Logger) (stores.Config, error) { // create database connections var dbMain sql.Database var dbMetrics sql.MetricsDatabase @@ -1143,11 +1144,11 @@ func buildStoreConfig(am alerts.Alerter, dir string, slabBufferCompletionThresho if err != nil { return stores.Config{}, fmt.Errorf("failed to open MySQL metrics database: %w", err) } - dbMain, err = mysql.NewMainDatabase(connMain, logger, cfg.DatabaseLog.SlowThreshold, cfg.DatabaseLog.SlowThreshold) + dbMain, err = mysql.NewMainDatabase(connMain, cfg.DatabaseLog.SlowThreshold, cfg.DatabaseLog.SlowThreshold, network, logger) if err != nil { return stores.Config{}, fmt.Errorf("failed to create MySQL main database: %w", err) } - dbMetrics, err = mysql.NewMetricsDatabase(connMetrics, logger, cfg.DatabaseLog.SlowThreshold, cfg.DatabaseLog.SlowThreshold) + dbMetrics, err = mysql.NewMetricsDatabase(connMetrics, cfg.DatabaseLog.SlowThreshold, cfg.DatabaseLog.SlowThreshold, logger) if err != nil { return stores.Config{}, fmt.Errorf("failed to create MySQL metrics database: %w", err) } @@ -1163,7 +1164,7 @@ func buildStoreConfig(am alerts.Alerter, dir string, slabBufferCompletionThresho if err != nil { return stores.Config{}, fmt.Errorf("failed to open SQLite main database: %w", err) } - dbMain, err = sqlite.NewMainDatabase(db, logger, cfg.DatabaseLog.SlowThreshold, cfg.DatabaseLog.SlowThreshold) + dbMain, err = sqlite.NewMainDatabase(db, cfg.DatabaseLog.SlowThreshold, cfg.DatabaseLog.SlowThreshold, network, logger) if err != nil { return stores.Config{}, fmt.Errorf("failed to create SQLite main database: %w", err) } @@ -1172,7 +1173,7 @@ func buildStoreConfig(am alerts.Alerter, dir string, slabBufferCompletionThresho if err != nil { return stores.Config{}, fmt.Errorf("failed to open SQLite metrics database: %w", err) } - dbMetrics, err = sqlite.NewMetricsDatabase(dbm, logger, cfg.DatabaseLog.SlowThreshold, cfg.DatabaseLog.SlowThreshold) + dbMetrics, err = sqlite.NewMetricsDatabase(dbm, cfg.DatabaseLog.SlowThreshold, cfg.DatabaseLog.SlowThreshold, logger) if err != nil { return stores.Config{}, fmt.Errorf("failed to create SQLite metrics database: %w", err) } diff --git a/stores/bench_test.go b/stores/bench_test.go index 60f75b52f..65e58caa5 100644 --- a/stores/bench_test.go +++ b/stores/bench_test.go @@ -153,7 +153,7 @@ func newTestDB(ctx context.Context, dir string) (*sqlite.MainDatabase, error) { return nil, err } - dbMain, err := sqlite.NewMainDatabase(db, zap.NewNop(), 100*time.Millisecond, 100*time.Millisecond) + dbMain, err := sqlite.NewMainDatabase(db, 100*time.Millisecond, 100*time.Millisecond, "mainnet", zap.NewNop()) if err != nil { return nil, err } diff --git a/stores/settings.go b/stores/settings.go index 843d8e986..ac3c4d312 100644 --- a/stores/settings.go +++ b/stores/settings.go @@ -8,7 +8,6 @@ import ( "go.sia.tech/renterd/api" sql "go.sia.tech/renterd/stores/sql" - "go.uber.org/zap" ) const ( @@ -54,162 +53,6 @@ func (s *SQLStore) UpdateS3Settings(ctx context.Context, ss api.S3Settings) erro return s.updateSetting(ctx, SettingS3, ss) } -// MigrateV2Settings migrates the settings from the old format to the new, -// migrating the existing settings over to the new types and removing the old -// settings. If a setting is not present in the database it will be set to its -// default setting. If an existing setting is not valid, the default will be -// used and a warning will get logged. -func (s *SQLStore) MigrateV2Settings(ctx context.Context) error { - return s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - // escape early if none of the old settings are present - var found bool - for _, key := range []string{ - "pricepinning", - "s3authentication", - "contractset", - "redundancy", - "uploadpacking", - } { - if _, err := tx.Setting(ctx, key); err != nil && !errors.Is(err, sql.ErrSettingNotFound) { - return err - } else if err == nil { - found = true - break - } - } - if !found { - return nil - } - - s.logger.Info("migrating settings...") - - // migrate gouging settings - value, err := tx.Setting(ctx, "gouging") - if err != nil && !errors.Is(err, sql.ErrSettingNotFound) { - return err - } else if errors.Is(err, sql.ErrSettingNotFound) { - if err := tx.UpdateSetting(ctx, SettingGouging, s.defaultSetting(SettingGouging)); err != nil { - return err - } - } - - // migrate pinning settings - value, err = tx.Setting(ctx, "pricepinning") - if err != nil && !errors.Is(err, sql.ErrSettingNotFound) { - return err - } else if err == nil { - var ps api.PinningSettings - if err := json.Unmarshal([]byte(value), &ps); err != nil { - s.logger.Warnw("failed to unmarshal pinning settings, using default", zap.Error(err)) - value = s.defaultSetting(SettingPricePinning) - } else if err := ps.Validate(); err != nil { - s.logger.Warnw("failed to migrate pinning settings, using default", zap.Error(err)) - value = s.defaultSetting(SettingPricePinning) - } - - // update setting and delete old value - if err := tx.UpdateSetting(ctx, SettingPricePinning, value); err != nil { - return err - } else if err := tx.DeleteSetting(ctx, "pricepinning"); err != nil { - return err - } - } - - // migrate s3 settings - value, err = tx.Setting(ctx, "s3authentication") - if err != nil && !errors.Is(err, sql.ErrSettingNotFound) { - return err - } else if err == nil { - var s3s api.S3Settings - if err := json.Unmarshal([]byte(value), &s3s.Authentication); err != nil { - s.logger.Warnw("failed to unmarshal S3 authentication settings, using default", zap.Error(err)) - s3s = api.DefaultS3Settings - } else if err := s3s.Validate(); err != nil { - s.logger.Warnw("failed to migrate S3 settings, using default", zap.Error(err)) - s3s = api.DefaultS3Settings - } - - // update setting and delete old value - update, _ := json.Marshal(s3s) - if err := tx.UpdateSetting(ctx, SettingS3, string(update)); err != nil { - return err - } else if err := tx.DeleteSetting(ctx, "s3authentication"); err != nil { - return err - } - } - - us := api.DefaultUploadSettings(s.network) - - // migrate contractset settings - value, err = tx.Setting(ctx, "contractset") - if err != nil && !errors.Is(err, sql.ErrSettingNotFound) { - return err - } else if err == nil { - var css struct { - Default string `json:"default"` - } - if err := json.Unmarshal([]byte(value), &css); err != nil { - s.logger.Warnw("failed to unmarshal contractset setting, using default", zap.Error(err)) - } else { - us.DefaultContractSet = css.Default - } - - // delete old value - if err := tx.DeleteSetting(ctx, "contractset"); err != nil { - return err - } - } - - // migrate redundancy settings - value, err = tx.Setting(ctx, "redundancy") - if err != nil && !errors.Is(err, sql.ErrSettingNotFound) { - return err - } else if err == nil { - var rs api.RedundancySettings - if err := json.Unmarshal([]byte(value), &rs); err != nil { - s.logger.Warnw("failed to unmarshal redundancy settings, using default", zap.Error(err)) - } else if err := rs.Validate(); err != nil { - s.logger.Warnw("failed to migrate redundancy settings, using default", zap.Error(err)) - } else { - us.Redundancy = rs - } - - // delete old value - if err := tx.DeleteSetting(ctx, "redundancy"); err != nil { - return err - } - } - - // migrate uploadpacking settings - value, err = tx.Setting(ctx, "uploadpacking") - if err != nil && !errors.Is(err, sql.ErrSettingNotFound) { - return err - } else if err == nil { - var ups api.UploadPackingSettings - if err := json.Unmarshal([]byte(value), &ups); err != nil { - s.logger.Warnw("failed to unmarshal uploadpacking settings, using default", zap.Error(err)) - } else { - us.Packing = ups - } - - // delete old value - if err := tx.DeleteSetting(ctx, "uploadpacking"); err != nil { - return err - } - } - - // update upload settings - if update, err := json.Marshal(us); err != nil { - return fmt.Errorf("failed to marshal upload settings: %w", err) - } else if err := tx.UpdateSetting(ctx, SettingUpload, string(update)); err != nil { - return err - } - - s.logger.Info("successfully migrated settings") - return nil - }) -} - func (s *SQLStore) fetchSetting(ctx context.Context, key string, out interface{}) error { s.settingsMu.Lock() defer s.settingsMu.Unlock() @@ -273,7 +116,7 @@ func (s *SQLStore) defaultSetting(key string) string { b, _ := json.Marshal(api.DefaultS3Settings) return string(b) case SettingUpload: - b, _ := json.Marshal(api.DefaultUploadSettings(s.network)) + b, _ := json.Marshal(api.DefaultUploadSettings(s.network.Name)) return string(b) default: panic("unknown setting") // developer error diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index af47d7a22..12e3fba14 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -32,6 +32,8 @@ const ( type ( MainDatabase struct { + network string + db *sql.DB log *zap.SugaredLogger } @@ -43,10 +45,12 @@ type ( ) // NewMainDatabase creates a new MySQL backend. -func NewMainDatabase(db *dsql.DB, log *zap.Logger, lqd, ltd time.Duration) (*MainDatabase, error) { +func NewMainDatabase(db *dsql.DB, lqd, ltd time.Duration, network string, log *zap.Logger) (*MainDatabase, error) { log = log.Named("main") store, err := sql.NewDB(db, log, deadlockMsgs, lqd, ltd) return &MainDatabase{ + network: network, + db: store, log: log.Sugar(), }, err @@ -81,6 +85,10 @@ func (b *MainDatabase) Migrate(ctx context.Context) error { return sql.PerformMigrations(ctx, b, migrationsFs, "main", sql.MainMigrations(ctx, b, migrationsFs, b.log)) } +func (b *MainDatabase) Network() string { + return b.network +} + func (b *MainDatabase) Transaction(ctx context.Context, fn func(tx ssql.DatabaseTx) error) error { return b.db.Transaction(ctx, func(tx sql.Tx) error { return fn(b.wrapTxn(tx)) diff --git a/stores/sql/mysql/metrics.go b/stores/sql/mysql/metrics.go index e7ef23813..3f642d878 100644 --- a/stores/sql/mysql/metrics.go +++ b/stores/sql/mysql/metrics.go @@ -30,7 +30,7 @@ type ( var _ ssql.MetricsDatabaseTx = (*MetricsDatabaseTx)(nil) // NewMetricsDatabase creates a new MySQL backend. -func NewMetricsDatabase(db *dsql.DB, log *zap.Logger, lqd, ltd time.Duration) (*MetricsDatabase, error) { +func NewMetricsDatabase(db *dsql.DB, lqd, ltd time.Duration, log *zap.Logger) (*MetricsDatabase, error) { log = log.Named("metrics") store, err := sql.NewDB(db, log, deadlockMsgs, lqd, ltd) return &MetricsDatabase{ diff --git a/stores/sql/mysql/migrations/main/migration_00017_settings.sql b/stores/sql/mysql/migrations/main/migration_00017_settings.sql new file mode 100644 index 000000000..09a7b0592 --- /dev/null +++ b/stores/sql/mysql/migrations/main/migration_00017_settings.sql @@ -0,0 +1 @@ +-- placeholder diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index b8bfe2771..d6ceafe6d 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -31,6 +31,8 @@ const ( type ( MainDatabase struct { + network string + db *sql.DB log *zap.SugaredLogger } @@ -42,10 +44,12 @@ type ( ) // NewMainDatabase creates a new SQLite backend. -func NewMainDatabase(db *dsql.DB, log *zap.Logger, lqd, ltd time.Duration) (*MainDatabase, error) { +func NewMainDatabase(db *dsql.DB, lqd, ltd time.Duration, network string, log *zap.Logger) (*MainDatabase, error) { log = log.Named("main") store, err := sql.NewDB(db, log, deadlockMsgs, lqd, ltd) return &MainDatabase{ + network: network, + db: store, log: log.Sugar(), }, err @@ -80,6 +84,10 @@ func (b *MainDatabase) Migrate(ctx context.Context) error { return sql.PerformMigrations(ctx, b, migrationsFs, "main", sql.MainMigrations(ctx, b, migrationsFs, b.log)) } +func (b *MainDatabase) Network() string { + return b.network +} + func (b *MainDatabase) Transaction(ctx context.Context, fn func(tx ssql.DatabaseTx) error) error { return b.db.Transaction(ctx, func(tx sql.Tx) error { return fn(b.wrapTxn(tx)) diff --git a/stores/sql/sqlite/metrics.go b/stores/sql/sqlite/metrics.go index df912d7c7..fd46c1222 100644 --- a/stores/sql/sqlite/metrics.go +++ b/stores/sql/sqlite/metrics.go @@ -29,7 +29,7 @@ type ( var _ ssql.MetricsDatabaseTx = (*MetricsDatabaseTx)(nil) // NewSQLiteDatabase creates a new SQLite backend. -func NewMetricsDatabase(db *dsql.DB, log *zap.Logger, lqd, ltd time.Duration) (*MetricsDatabase, error) { +func NewMetricsDatabase(db *dsql.DB, lqd, ltd time.Duration, log *zap.Logger) (*MetricsDatabase, error) { log = log.Named("metrics") store, err := sql.NewDB(db, log, deadlockMsgs, lqd, ltd) return &MetricsDatabase{ diff --git a/stores/sql/sqlite/migrations/main/migration_00017_settings.sql b/stores/sql/sqlite/migrations/main/migration_00017_settings.sql new file mode 100644 index 000000000..09a7b0592 --- /dev/null +++ b/stores/sql/sqlite/migrations/main/migration_00017_settings.sql @@ -0,0 +1 @@ +-- placeholder diff --git a/stores/sql_test.go b/stores/sql_test.go index 48fb7a6a9..fba4b8327 100644 --- a/stores/sql_test.go +++ b/stores/sql_test.go @@ -25,6 +25,7 @@ import ( ) const ( + testNetwork = "zen" testContractSet = "test" testMimeType = "application/octet-stream" testETag = "d34db33f" @@ -97,11 +98,11 @@ func (cfg *testSQLStoreConfig) dbConnections() (sql.Database, sql.MetricsDatabas if err != nil { return nil, nil, fmt.Errorf("failed to open MySQL metrics database: %w", err) } - dbMain, err = mysql.NewMainDatabase(connMain, zap.NewNop(), 100*time.Millisecond, 100*time.Millisecond) + dbMain, err = mysql.NewMainDatabase(connMain, 100*time.Millisecond, 100*time.Millisecond, testNetwork, zap.NewNop()) if err != nil { return nil, nil, fmt.Errorf("failed to create MySQL main database: %w", err) } - dbMetrics, err = mysql.NewMetricsDatabase(connMetrics, zap.NewNop(), 100*time.Millisecond, 100*time.Millisecond) + dbMetrics, err = mysql.NewMetricsDatabase(connMetrics, 100*time.Millisecond, 100*time.Millisecond, zap.NewNop()) if err != nil { return nil, nil, fmt.Errorf("failed to create MySQL metrics database: %w", err) } @@ -115,11 +116,11 @@ func (cfg *testSQLStoreConfig) dbConnections() (sql.Database, sql.MetricsDatabas if err != nil { return nil, nil, fmt.Errorf("failed to open SQLite metrics database: %w", err) } - dbMain, err = sqlite.NewMainDatabase(connMain, zap.NewNop(), 100*time.Millisecond, 100*time.Millisecond) + dbMain, err = sqlite.NewMainDatabase(connMain, 100*time.Millisecond, 100*time.Millisecond, testNetwork, zap.NewNop()) if err != nil { return nil, nil, fmt.Errorf("failed to create SQLite main database: %w", err) } - dbMetrics, err = sqlite.NewMetricsDatabase(connMetrics, zap.NewNop(), 100*time.Millisecond, 100*time.Millisecond) + dbMetrics, err = sqlite.NewMetricsDatabase(connMetrics, 100*time.Millisecond, 100*time.Millisecond, zap.NewNop()) if err != nil { return nil, nil, fmt.Errorf("failed to create SQLite metrics database: %w", err) } @@ -133,11 +134,11 @@ func (cfg *testSQLStoreConfig) dbConnections() (sql.Database, sql.MetricsDatabas if err != nil { return nil, nil, fmt.Errorf("failed to open ephemeral SQLite metrics database: %w", err) } - dbMain, err = sqlite.NewMainDatabase(connMain, zap.NewNop(), 100*time.Millisecond, 100*time.Millisecond) + dbMain, err = sqlite.NewMainDatabase(connMain, 100*time.Millisecond, 100*time.Millisecond, testNetwork, zap.NewNop()) if err != nil { return nil, nil, fmt.Errorf("failed to create ephemeral SQLite main database: %w", err) } - dbMetrics, err = sqlite.NewMetricsDatabase(connMetrics, zap.NewNop(), 100*time.Millisecond, 100*time.Millisecond) + dbMetrics, err = sqlite.NewMetricsDatabase(connMetrics, 100*time.Millisecond, 100*time.Millisecond, zap.NewNop()) if err != nil { return nil, nil, fmt.Errorf("failed to create ephemeral SQLite metrics database: %w", err) } From f2ba95a373ab5e2c8c2a2c181ef746cc91f17751 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 6 Sep 2024 10:04:05 +0200 Subject: [PATCH 061/708] sql: add index for db_directory_id column in SQLite --- internal/sql/migrations.go | 6 ++++++ internal/worker/accounts.go | 18 +++++++++--------- .../main/migration_00018_idx_db_directory.sql | 1 + .../main/migration_00018_idx_db_directory.sql | 1 + stores/sql/sqlite/migrations/main/schema.sql | 1 + 5 files changed, 18 insertions(+), 9 deletions(-) create mode 100644 stores/sql/mysql/migrations/main/migration_00018_idx_db_directory.sql create mode 100644 stores/sql/sqlite/migrations/main/migration_00018_idx_db_directory.sql diff --git a/internal/sql/migrations.go b/internal/sql/migrations.go index c17473542..5f886fe1a 100644 --- a/internal/sql/migrations.go +++ b/internal/sql/migrations.go @@ -217,6 +217,12 @@ var ( return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00017_unix_ms", log) }, }, + { + ID: "00018_idx_db_directory", + Migrate: func(tx Tx) error { + return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00018_idx_db_directory", log) + }, + }, } } MetricsMigrations = func(ctx context.Context, migrationsFs embed.FS, log *zap.SugaredLogger) []Migration { diff --git a/internal/worker/accounts.go b/internal/worker/accounts.go index 1022075f1..f73c9f529 100644 --- a/internal/worker/accounts.go +++ b/internal/worker/accounts.go @@ -336,7 +336,7 @@ func (a *AccountMgr) refillAccounts() { defer cancel() // refill - err := a.refillAccount(rCtx, c, cs.BlockHeight, a.revisionSubmissionBuffer) + refilled, err := a.refillAccount(rCtx, c, cs.BlockHeight, a.revisionSubmissionBuffer) // determine whether to log something shouldLog := true @@ -351,7 +351,7 @@ func (a *AccountMgr) refillAccounts() { if err != nil && shouldLog { a.logger.Error("failed to refill account for host", zap.Stringer("hostKey", contract.HostKey), zap.Error(err)) - } else { + } else if refilled { a.logger.Infow("successfully refilled account for host", zap.Stringer("hostKey", contract.HostKey), zap.Error(err)) } }(c) @@ -359,7 +359,7 @@ func (a *AccountMgr) refillAccounts() { } } -func (a *AccountMgr) refillAccount(ctx context.Context, contract api.ContractMetadata, bh, revisionSubmissionBuffer uint64) error { +func (a *AccountMgr) refillAccount(ctx context.Context, contract api.ContractMetadata, bh, revisionSubmissionBuffer uint64) (bool, error) { // fetch the account account := a.Account(contract.HostKey) @@ -367,7 +367,7 @@ func (a *AccountMgr) refillAccount(ctx context.Context, contract api.ContractMet // trying to refill the account would result in the host not returning the // revision and returning an obfuscated error if (bh + revisionSubmissionBuffer) > contract.WindowStart { - return fmt.Errorf("contract %v is too close to the proof window to be revised", contract.ID) + return false, fmt.Errorf("contract %v is too close to the proof window to be revised", contract.ID) } // check if a host is potentially cheating before refilling. @@ -382,7 +382,7 @@ func (a *AccountMgr) refillAccount(ctx context.Context, contract api.ContractMet "drift", account.Drift.String(), ) _ = a.alerts.RegisterAlert(a.shutdownCtx, alert) - return fmt.Errorf("not refilling account since host is potentially cheating: %w", errMaxDriftExceeded) + return false, fmt.Errorf("not refilling account since host is potentially cheating: %w", errMaxDriftExceeded) } else { _ = a.alerts.DismissAlerts(a.shutdownCtx, alerts.IDForAccount(alertAccountRefillID, account.ID)) } @@ -392,7 +392,7 @@ func (a *AccountMgr) refillAccount(ctx context.Context, contract api.ContractMet // sync the account err := a.syncer.SyncAccount(ctx, contract.ID, contract.HostKey, contract.SiamuxAddr) if err != nil { - return fmt.Errorf("failed to sync account's balance: %w", err) + return false, fmt.Errorf("failed to sync account's balance: %w", err) } // refetch the account after syncing @@ -401,15 +401,15 @@ func (a *AccountMgr) refillAccount(ctx context.Context, contract api.ContractMet // check if refill is needed if account.Balance.Cmp(minBalance) >= 0 { - return nil + return false, nil } // fund the account err := a.funder.FundAccount(ctx, contract.ID, contract.HostKey, maxBalance) if err != nil { - return fmt.Errorf("failed to fund account: %w", err) + return false, fmt.Errorf("failed to fund account: %w", err) } - return nil + return true, nil } // WithSync syncs an accounts balance with the bus. To do so, the account is diff --git a/stores/sql/mysql/migrations/main/migration_00018_idx_db_directory.sql b/stores/sql/mysql/migrations/main/migration_00018_idx_db_directory.sql new file mode 100644 index 000000000..5757fd280 --- /dev/null +++ b/stores/sql/mysql/migrations/main/migration_00018_idx_db_directory.sql @@ -0,0 +1 @@ +CREATE INDEX IF NOT EXISTS `idx_objects_db_directory_id` ON `objects`(`db_directory_id`); diff --git a/stores/sql/sqlite/migrations/main/migration_00018_idx_db_directory.sql b/stores/sql/sqlite/migrations/main/migration_00018_idx_db_directory.sql new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/stores/sql/sqlite/migrations/main/migration_00018_idx_db_directory.sql @@ -0,0 +1 @@ + diff --git a/stores/sql/sqlite/migrations/main/schema.sql b/stores/sql/sqlite/migrations/main/schema.sql index 6d8d0ee6c..af4c59654 100644 --- a/stores/sql/sqlite/migrations/main/schema.sql +++ b/stores/sql/sqlite/migrations/main/schema.sql @@ -58,6 +58,7 @@ CREATE INDEX `idx_objects_object_id` ON `objects`(`object_id`); CREATE INDEX `idx_objects_size` ON `objects`(`size`); CREATE UNIQUE INDEX `idx_object_bucket` ON `objects`(`db_bucket_id`,`object_id`); CREATE INDEX `idx_objects_created_at` ON `objects`(`created_at`); +CREATE INDEX `idx_objects_db_directory_id` ON `objects`(`db_directory_id`); -- dbMultipartUpload CREATE TABLE `multipart_uploads` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at` datetime,`key` blob,`upload_id` text NOT NULL,`object_id` text NOT NULL,`db_bucket_id` integer NOT NULL,`mime_type` text,CONSTRAINT `fk_multipart_uploads_db_bucket` FOREIGN KEY (`db_bucket_id`) REFERENCES `buckets`(`id`) ON DELETE CASCADE); From 7fd0986df007c715876cad7848f93a475da59422 Mon Sep 17 00:00:00 2001 From: PJ Date: Fri, 6 Sep 2024 10:58:15 +0200 Subject: [PATCH 062/708] bus: add explorer section to config --- README.md | 2 + api/bus.go | 8 +++ api/setting.go | 25 +++----- bus/bus.go | 20 +++--- bus/explorer.go | 81 ++++++++++++++++++++++++ bus/routes.go | 9 +-- cmd/renterd/config.go | 7 +++ cmd/renterd/node.go | 5 +- config/config.go | 9 ++- internal/bus/forex.go | 51 --------------- internal/bus/pinmanager.go | 24 ++++--- internal/bus/pinmanager_test.go | 100 +++++++++++++----------------- internal/test/e2e/cluster.go | 22 +++++-- internal/test/e2e/cluster_test.go | 4 +- 14 files changed, 215 insertions(+), 152 deletions(-) create mode 100644 bus/explorer.go delete mode 100644 internal/bus/forex.go diff --git a/README.md b/README.md index c20749935..d5b2ae3ad 100644 --- a/README.md +++ b/README.md @@ -103,6 +103,8 @@ overview of all settings configurable through the CLI. | `S3.HostBucketBases` | Enables bucket rewriting in the router for the provided bases | - | `--s3.hostBucketBases` | `RENTERD_S3_HOST_BUCKET_BASES` | `s3.hostBucketBases` | | `S3.HostBucketEnabled` | Enables bucket rewriting in the router | - | `--s3.hostBucketEnabled` | `RENTERD_S3_HOST_BUCKET_ENABLED` | `s3.hostBucketEnabled` | | `S3.KeypairsV4 (DEPRECATED)` | V4 keypairs for S3 | - | - | - | `s3.keypairsV4` | +| `Explorer.Disable` | Disables explorer service | `false` | `--explorer.disable` | `RENTERD_EXPLORER_DISABLE` | `explorer.disable` | +| `Explorer.URL` | URL of service to retrieve data about the Sia network | `https://api.siascan.com` | `--explorer.url` | `RENTERD_EXPLORER_URL` | `explorer.url` | ### Single-Node Setup diff --git a/api/bus.go b/api/bus.go index 3b73469e3..bf417d3b4 100644 --- a/api/bus.go +++ b/api/bus.go @@ -10,6 +10,7 @@ import ( var ( ErrMarkerNotFound = errors.New("marker not found") ErrMaxFundAmountExceeded = errors.New("renewal exceeds max fund amount") + ErrExplorerDisabled = errors.New("explorer is disabled") ) type ( @@ -65,6 +66,13 @@ type ( StartTime TimeRFC3339 `json:"startTime"` Network string `json:"network"` BuildState + Explorer ExplorerState `json:"explorer"` + } + + // ExplorerState contains static information about explorer data sources. + ExplorerState struct { + Enabled bool `json:"enabled"` + URL string `json:"url,omitempty"` } ContractSetUpdateRequest struct { diff --git a/api/setting.go b/api/setting.go index 5976b00b2..cb82eeafb 100644 --- a/api/setting.go +++ b/api/setting.go @@ -54,10 +54,9 @@ var ( // configured with on startup. These values can be adjusted using the // settings API. DefaultPricePinSettings = PricePinSettings{ - Enabled: false, - Currency: "usd", - ForexEndpointURL: "https://api.siascan.com/exchange-rate/siacoin", - Threshold: 0.05, + Enabled: false, + Currency: "usd", + Threshold: 0.05, } // DefaultUploadPackingSettings define the default upload packing settings @@ -132,22 +131,18 @@ type ( MigrationSurchargeMultiplier uint64 `json:"migrationSurchargeMultiplier"` } - // PricePinSettings holds the configuration for pinning certain settings to - // a specific currency (e.g., USD). It uses a Forex API to fetch the current - // exchange rate, allowing users to set prices in USD instead of SC. + // PricePinSettings holds the configuration for pinning certain settings to a + // specific currency (e.g., USD). It uses the configured explorer to fetch + // the current exchange rate, allowing users to set prices in USD instead of + // SC. PricePinSettings struct { // Enabled can be used to either enable or temporarily disable price - // pinning. If enabled, both the currency and the Forex endpoint URL - // must be valid. + // pinning. If enabled, the currency and threshold must be valid. Enabled bool `json:"enabled"` // Currency is the external three-letter currency code. Currency string `json:"currency"` - // ForexEndpointURL is the endpoint that returns the exchange rate for - // Siacoin against the underlying currency. - ForexEndpointURL string `json:"forexEndpointURL"` - // Threshold is a percentage between 0 and 1 that determines when the // pinned settings are updated based on the exchange rate at the time. Threshold float64 `json:"threshold"` @@ -205,8 +200,8 @@ func (p Pin) IsPinned() bool { // Validate returns an error if the price pin settings are not considered valid. func (pps PricePinSettings) Validate() error { - if pps.ForexEndpointURL == "" { - return fmt.Errorf("price pin settings must have a forex endpoint URL") + if !pps.Enabled { + return nil } if pps.Currency == "" { return fmt.Errorf("price pin settings must have a currency") diff --git a/bus/bus.go b/bus/bus.go index 832b603b0..418c9eae0 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -311,6 +311,7 @@ type Bus struct { pinMgr PinManager webhooksMgr WebhooksManager cm ChainManager + e Explorer cs ChainSubscriber s Syncer w Wallet @@ -333,7 +334,7 @@ type Bus struct { } // New returns a new Bus -func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksManager, cm ChainManager, s Syncer, w Wallet, store Store, announcementMaxAge time.Duration, l *zap.Logger) (_ *Bus, err error) { +func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksManager, cm ChainManager, e Explorer, s Syncer, w Wallet, store Store, announcementMaxAge time.Duration, l *zap.Logger) (_ *Bus, err error) { l = l.Named("bus") b := &Bus{ @@ -343,6 +344,7 @@ func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksMa accounts: store, s: s, cm: cm, + e: e, w: w, hs: store, as: store, @@ -371,7 +373,7 @@ func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksMa b.sectors = ibus.NewSectorsCache() // create pin manager - b.pinMgr = ibus.NewPinManager(b.alerts, wm, store, defaultPinUpdateInterval, defaultPinRateWindow, l) + b.pinMgr = ibus.NewPinManager(b.alerts, wm, e, store, defaultPinUpdateInterval, defaultPinRateWindow, l) // create chain subscriber b.cs = ibus.NewChainSubscriber(wm, cm, store, w, announcementMaxAge, l) @@ -753,10 +755,6 @@ func (b *Bus) initSettings(ctx context.Context) error { } else if err := pps.Validate(); err != nil { // overwrite values with defaults var updates []string - if pps.ForexEndpointURL == "" { - pps.ForexEndpointURL = api.DefaultPricePinSettings.ForexEndpointURL - updates = append(updates, fmt.Sprintf("set PricePinSettings.ForexEndpointURL to %v", pps.ForexEndpointURL)) - } if pps.Currency == "" { pps.Currency = api.DefaultPricePinSettings.Currency updates = append(updates, fmt.Sprintf("set PricePinSettings.Currency to %v", pps.Currency)) @@ -774,9 +772,15 @@ func (b *Bus) initSettings(ctx context.Context) error { b.logger.Warn(fmt.Sprintf("updated price pinning settings are invalid (%v), they have been overwritten with the default settings", err)) updated, _ = json.Marshal(api.DefaultPricePinSettings) } - if err := b.ss.UpdateSetting(ctx, api.SettingPricePinning, string(updated)); err != nil { - return err + return fmt.Errorf("failed to update setting '%v': %w", api.SettingPricePinning, err) + } + } else if pps.Enabled && !b.e.Enabled() { + b.logger.Warn("pinning can not be enabled, explorer is disabled, pinning will be disabled") + pps.Enabled = false + updated, _ := json.Marshal(pps) + if err := b.ss.UpdateSetting(ctx, api.SettingPricePinning, string(updated)); err != nil { + return fmt.Errorf("failed to update setting '%v': %w", api.SettingPricePinning, err) } } diff --git a/bus/explorer.go b/bus/explorer.go new file mode 100644 index 000000000..2040403b1 --- /dev/null +++ b/bus/explorer.go @@ -0,0 +1,81 @@ +package bus + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "io" + "net/http" + + "go.sia.tech/renterd/api" +) + +type ( + // An explorer retrieves data about the Sia network from an external source. + Explorer interface { + Enabled() bool + BaseURL() string + SiacoinExchangeRate(ctx context.Context, currency string) (rate float64, err error) + } + + explorer struct { + enabled bool + url string + } +) + +// NewExplorer returns a new Explorer. +func NewExplorer(url string, enabled bool) Explorer { + return &explorer{ + enabled: enabled, + url: url, + } +} + +// BaseURL returns the base URL of the Explorer. +func (e *explorer) BaseURL() string { + return e.url +} + +// Enabled returns true if the explorer is enabled. +func (e *explorer) Enabled() bool { + return e.enabled +} + +// SiacoinExchangeRate returns the exchange rate for the given currency. +func (e *explorer) SiacoinExchangeRate(ctx context.Context, currency string) (rate float64, err error) { + // return early if the explorer is disabled + if !e.enabled { + return 0, api.ErrExplorerDisabled + } + + // create request + req, err := http.NewRequestWithContext(ctx, http.MethodGet, fmt.Sprintf("%s/exchange-rate/siacoin/%s", e.url, currency), http.NoBody) + if err != nil { + return 0, fmt.Errorf("failed to create request: %w", err) + } + req.Header.Set("Accept", "application/json") + + // create http client + resp, err := http.DefaultClient.Do(req) + if err != nil { + return 0, fmt.Errorf("failed to send request: %w", err) + } + defer resp.Body.Close() + + // check status code + if resp.StatusCode < 200 || resp.StatusCode >= 300 { + var errorMessage string + if err := json.NewDecoder(io.LimitReader(resp.Body, 1024)).Decode(&errorMessage); err != nil { + return 0, fmt.Errorf("unexpected status code: %d", resp.StatusCode) + } + return 0, errors.New(errorMessage) + } + + // decode exchange rate + if err := json.NewDecoder(resp.Body).Decode(&rate); err != nil { + return 0, fmt.Errorf("failed to decode response: %w", err) + } + return +} diff --git a/bus/routes.go b/bus/routes.go index d8ffd2997..4df4193a3 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -17,7 +17,6 @@ import ( rhp3 "go.sia.tech/renterd/internal/rhp/v3" - ibus "go.sia.tech/renterd/internal/bus" "go.sia.tech/renterd/internal/gouging" rhp2 "go.sia.tech/renterd/internal/rhp/v2" @@ -1722,11 +1721,9 @@ func (b *Bus) settingKeyHandlerPUT(jc jape.Context) { } else if err := pps.Validate(); err != nil { jc.Error(fmt.Errorf("couldn't update price pinning settings, invalid settings, error: %v", err), http.StatusBadRequest) return - } else if pps.Enabled { - if _, err := ibus.NewForexClient(pps.ForexEndpointURL).SiacoinExchangeRate(jc.Request.Context(), pps.Currency); err != nil { - jc.Error(fmt.Errorf("couldn't update price pinning settings, forex API unreachable,error: %v", err), http.StatusBadRequest) - return - } + } else if pps.Enabled && !b.e.Enabled() { + jc.Error(fmt.Errorf("pinning can not be enabled, %w", api.ErrExplorerDisabled), http.StatusBadRequest) + return } b.pinMgr.TriggerUpdate() } diff --git a/cmd/renterd/config.go b/cmd/renterd/config.go index e1200f121..608c2a62a 100644 --- a/cmd/renterd/config.go +++ b/cmd/renterd/config.go @@ -68,6 +68,9 @@ func defaultConfig() config.Config { MetricsDatabase: "renterd_metrics", }, }, + Explorer: config.ExplorerData{ + URL: "https://api.siascan.com", + }, Log: config.Log{ Path: "", // deprecated. included for compatibility. Level: "", @@ -340,6 +343,10 @@ func parseCLIFlags(cfg *config.Config) { flag.StringVar(&hostBasesStr, "s3.hostBases", "", "Enables bucket rewriting in the router for specific hosts provided via comma-separated list (overrides with RENTERD_S3_HOST_BUCKET_BASES)") flag.BoolVar(&cfg.S3.HostBucketEnabled, "s3.hostBucketEnabled", cfg.S3.HostBucketEnabled, "Enables bucket rewriting in the router for all hosts (overrides with RENTERD_S3_HOST_BUCKET_ENABLED)") + // explorer + flag.StringVar(&cfg.Explorer.URL, "explorer.url", cfg.Explorer.URL, "URL of service to retrieve data about the Sia network (overrides with RENTERD_EXPLORER_URL)") + flag.BoolVar(&cfg.Explorer.Disable, "explorer.disable", cfg.Explorer.Disable, "Disables explorer service (overrides with RENTERD_EXPLORER_DISABLE)") + // custom usage flag.Usage = func() { log.Print(usageHeader) diff --git a/cmd/renterd/node.go b/cmd/renterd/node.go index a9758439c..11968ff52 100644 --- a/cmd/renterd/node.go +++ b/cmd/renterd/node.go @@ -311,6 +311,9 @@ func newBus(ctx context.Context, cfg config.Config, pk types.PrivateKey, network } cm := chain.NewManager(store, state) + // create explorer + e := bus.NewExplorer(cfg.Explorer.URL, !cfg.Explorer.Disable) + // create wallet w, err := wallet.NewSingleAddressWallet(pk, cm, sqlStore, wallet.WithReservationDuration(cfg.Bus.UsedUTXOExpiry)) if err != nil { @@ -382,7 +385,7 @@ func newBus(ctx context.Context, cfg config.Config, pk types.PrivateKey, network // create bus announcementMaxAgeHours := time.Duration(cfg.Bus.AnnouncementMaxAgeHours) * time.Hour - b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, s, w, sqlStore, announcementMaxAgeHours, logger) + b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, e, s, w, sqlStore, announcementMaxAgeHours, logger) if err != nil { return nil, nil, fmt.Errorf("failed to create bus: %w", err) } diff --git a/config/config.go b/config/config.go index 6755d3869..82828c85e 100644 --- a/config/config.go +++ b/config/config.go @@ -24,7 +24,14 @@ type ( Worker Worker `yaml:"worker,omitempty"` S3 S3 `yaml:"s3,omitempty"` - Database Database `yaml:"database,omitempty"` + Database Database `yaml:"database,omitempty"` + Explorer ExplorerData `yaml:"explorer,omitempty"` + } + + // ExplorerData contains the configuration for using an external explorer. + ExplorerData struct { + Disable bool `yaml:"disable,omitempty"` + URL string `yaml:"url,omitempty"` } // HTTP contains the configuration for the HTTP server. diff --git a/internal/bus/forex.go b/internal/bus/forex.go deleted file mode 100644 index b6544b911..000000000 --- a/internal/bus/forex.go +++ /dev/null @@ -1,51 +0,0 @@ -package bus - -import ( - "context" - "encoding/json" - "errors" - "fmt" - "io" - "net/http" -) - -type ( - client struct { - url string - } -) - -func NewForexClient(url string) *client { - return &client{url: url} -} - -func (f *client) SiacoinExchangeRate(ctx context.Context, currency string) (rate float64, err error) { - // create request - req, err := http.NewRequestWithContext(ctx, http.MethodGet, fmt.Sprintf("%s/%s", f.url, currency), http.NoBody) - if err != nil { - return 0, fmt.Errorf("failed to create request: %w", err) - } - req.Header.Set("Accept", "application/json") - - // create http client - resp, err := http.DefaultClient.Do(req) - if err != nil { - return 0, fmt.Errorf("failed to send request: %w", err) - } - defer resp.Body.Close() - - // check status code - if resp.StatusCode < 200 || resp.StatusCode >= 300 { - var errorMessage string - if err := json.NewDecoder(io.LimitReader(resp.Body, 1024)).Decode(&errorMessage); err != nil { - return 0, fmt.Errorf("unexpected status code: %d", resp.StatusCode) - } - return 0, errors.New(errorMessage) - } - - // decode exchange rate - if err := json.NewDecoder(resp.Body).Decode(&rate); err != nil { - return 0, fmt.Errorf("failed to decode response: %w", err) - } - return -} diff --git a/internal/bus/pinmanager.go b/internal/bus/pinmanager.go index 32e283812..38056b39d 100644 --- a/internal/bus/pinmanager.go +++ b/internal/bus/pinmanager.go @@ -24,11 +24,17 @@ type ( UpdateAutopilot(ctx context.Context, ap api.Autopilot) error UpdateSetting(ctx context.Context, key, value string) error } + + Explorer interface { + Enabled() bool + SiacoinExchangeRate(ctx context.Context, currency string) (rate float64, err error) + } ) type ( pinManager struct { a alerts.Alerter + e Explorer s Store broadcaster webhooks.Broadcaster @@ -50,9 +56,10 @@ type ( // NewPinManager returns a new PinManager, responsible for pinning prices to a // fixed value in an underlying currency. The returned pin manager is already // running and can be stopped by calling Shutdown. -func NewPinManager(alerts alerts.Alerter, broadcaster webhooks.Broadcaster, s Store, updateInterval, rateWindow time.Duration, l *zap.Logger) *pinManager { +func NewPinManager(alerts alerts.Alerter, broadcaster webhooks.Broadcaster, e Explorer, s Store, updateInterval, rateWindow time.Duration, l *zap.Logger) *pinManager { pm := &pinManager{ a: alerts, + e: e, s: s, broadcaster: broadcaster, @@ -66,11 +73,14 @@ func NewPinManager(alerts alerts.Alerter, broadcaster webhooks.Broadcaster, s St } // start the pin manager - pm.wg.Add(1) - go func() { - pm.run() - pm.wg.Done() - }() + if e.Enabled() { + pm.wg.Add(1) + go func() { + pm.run() + pm.wg.Done() + }() + } + return pm } @@ -334,7 +344,7 @@ func (pm *pinManager) updatePrices(ctx context.Context, forced bool) error { } // fetch exchange rate - rate, err := NewForexClient(settings.ForexEndpointURL).SiacoinExchangeRate(ctx, settings.Currency) + rate, err := pm.e.SiacoinExchangeRate(ctx, settings.Currency) if err != nil { return fmt.Errorf("failed to fetch exchange rate for '%s': %w", settings.Currency, err) } else if rate <= 0 { diff --git a/internal/bus/pinmanager_test.go b/internal/bus/pinmanager_test.go index e5158836d..77d74c55e 100644 --- a/internal/bus/pinmanager_test.go +++ b/internal/bus/pinmanager_test.go @@ -4,8 +4,6 @@ import ( "context" "encoding/json" "errors" - "net/http" - "net/http/httptest" "reflect" "sync" "testing" @@ -71,42 +69,36 @@ func (meb *mockBroadcaster) BroadcastAction(ctx context.Context, e webhooks.Even return nil } -type mockForexAPI struct { - s *httptest.Server - +type mockExplorer struct { mu sync.Mutex rate float64 unreachable bool } -func newTestForexAPI() *mockForexAPI { - api := &mockForexAPI{rate: 1} - api.s = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - api.mu.Lock() - defer api.mu.Unlock() - if api.unreachable { - w.WriteHeader(http.StatusInternalServerError) - return - } - json.NewEncoder(w).Encode(api.rate) - })) - return api +func (e *mockExplorer) Enabled() bool { + return true } -func (api *mockForexAPI) Close() { - api.s.Close() +func (e *mockExplorer) SiacoinExchangeRate(ctx context.Context, currency string) (rate float64, err error) { + e.mu.Lock() + defer e.mu.Unlock() + + if e.unreachable { + return 0, errors.New("unreachable") + } + return e.rate, nil } -func (api *mockForexAPI) setRate(rate float64) { - api.mu.Lock() - defer api.mu.Unlock() - api.rate = rate +func (e *mockExplorer) setRate(rate float64) { + e.mu.Lock() + defer e.mu.Unlock() + e.rate = rate } -func (api *mockForexAPI) setUnreachable(unreachable bool) { - api.mu.Lock() - defer api.mu.Unlock() - api.unreachable = unreachable +func (e *mockExplorer) setUnreachable(unreachable bool) { + e.mu.Lock() + defer e.mu.Unlock() + e.unreachable = unreachable } type mockPinStore struct { @@ -186,16 +178,13 @@ func (ms *mockPinStore) UpdateAutopilot(ctx context.Context, autopilot api.Autop func TestPinManager(t *testing.T) { // mock dependencies - ms := newTestStore() - eb := &mockBroadcaster{} a := &mockAlerter{} - - // mock forex api - forex := newTestForexAPI() - defer forex.Close() + b := &mockBroadcaster{} + e := &mockExplorer{rate: 1} + s := newTestStore() // create a pinmanager - pm := NewPinManager(a, eb, ms, testUpdateInterval, time.Minute, zap.NewNop()) + pm := NewPinManager(a, b, e, s, testUpdateInterval, time.Minute, zap.NewNop()) defer func() { if err := pm.Shutdown(context.Background()); err != nil { t.Fatal(err) @@ -220,8 +209,7 @@ func TestPinManager(t *testing.T) { pps.Enabled = true pps.Currency = "usd" pps.Threshold = 0.5 - pps.ForexEndpointURL = forex.s.URL - ms.updatPinnedSettings(pps) + s.updatPinnedSettings(pps) // assert price manager is running now if cnt := len(rates()); cnt < 1 { @@ -229,31 +217,31 @@ func TestPinManager(t *testing.T) { } // update exchange rate and fetch current gouging settings - forex.setRate(2.5) - gs := ms.gougingSettings() + e.setRate(2.5) + gs := s.gougingSettings() // configure all pins but disable them for now pps.GougingSettingsPins.MaxDownload = api.Pin{Value: 3, Pinned: false} pps.GougingSettingsPins.MaxStorage = api.Pin{Value: 3, Pinned: false} pps.GougingSettingsPins.MaxUpload = api.Pin{Value: 3, Pinned: false} - ms.updatPinnedSettings(pps) + s.updatPinnedSettings(pps) // assert gouging settings are unchanged - if gss := ms.gougingSettings(); !reflect.DeepEqual(gs, gss) { + if gss := s.gougingSettings(); !reflect.DeepEqual(gs, gss) { t.Fatalf("expected gouging settings to be the same, got %v", gss) } // enable the max download pin, with the threshold at 0.5 it should remain unchanged pps.GougingSettingsPins.MaxDownload.Pinned = true - ms.updatPinnedSettings(pps) - if gss := ms.gougingSettings(); !reflect.DeepEqual(gs, gss) { + s.updatPinnedSettings(pps) + if gss := s.gougingSettings(); !reflect.DeepEqual(gs, gss) { t.Fatalf("expected gouging settings to be the same, got %v", gss) } // lower the threshold, gouging settings should be updated pps.Threshold = 0.05 - ms.updatPinnedSettings(pps) - if gss := ms.gougingSettings(); gss.MaxContractPrice.Equals(gs.MaxDownloadPrice) { + s.updatPinnedSettings(pps) + if gss := s.gougingSettings(); gss.MaxContractPrice.Equals(gs.MaxDownloadPrice) { t.Fatalf("expected gouging settings to be updated, got %v = %v", gss.MaxDownloadPrice, gs.MaxDownloadPrice) } @@ -261,20 +249,20 @@ func TestPinManager(t *testing.T) { pps.GougingSettingsPins.MaxDownload.Pinned = true pps.GougingSettingsPins.MaxStorage.Pinned = true pps.GougingSettingsPins.MaxUpload.Pinned = true - ms.updatPinnedSettings(pps) + s.updatPinnedSettings(pps) // assert they're all updated - if gss := ms.gougingSettings(); gss.MaxDownloadPrice.Equals(gs.MaxDownloadPrice) || + if gss := s.gougingSettings(); gss.MaxDownloadPrice.Equals(gs.MaxDownloadPrice) || gss.MaxStoragePrice.Equals(gs.MaxStoragePrice) || gss.MaxUploadPrice.Equals(gs.MaxUploadPrice) { t.Fatalf("expected gouging settings to be updated, got %v = %v", gss, gs) } // increase rate so average isn't catching up to us - forex.setRate(3) + e.setRate(3) // fetch autopilot - ap, _ := ms.Autopilot(context.Background(), testAutopilotID) + ap, _ := s.Autopilot(context.Background(), testAutopilotID) // add autopilot pin, but disable it pins := api.AutopilotPins{ @@ -284,38 +272,38 @@ func TestPinManager(t *testing.T) { }, } pps.Autopilots = map[string]api.AutopilotPins{testAutopilotID: pins} - ms.updatPinnedSettings(pps) + s.updatPinnedSettings(pps) // assert autopilot was not updated - if app, _ := ms.Autopilot(context.Background(), testAutopilotID); !app.Config.Contracts.Allowance.Equals(ap.Config.Contracts.Allowance) { + if app, _ := s.Autopilot(context.Background(), testAutopilotID); !app.Config.Contracts.Allowance.Equals(ap.Config.Contracts.Allowance) { t.Fatalf("expected autopilot to not be updated, got %v = %v", app.Config.Contracts.Allowance, ap.Config.Contracts.Allowance) } // enable the pin pins.Allowance.Pinned = true pps.Autopilots[testAutopilotID] = pins - ms.updatPinnedSettings(pps) + s.updatPinnedSettings(pps) // assert autopilot was updated - if app, _ := ms.Autopilot(context.Background(), testAutopilotID); app.Config.Contracts.Allowance.Equals(ap.Config.Contracts.Allowance) { + if app, _ := s.Autopilot(context.Background(), testAutopilotID); app.Config.Contracts.Allowance.Equals(ap.Config.Contracts.Allowance) { t.Fatalf("expected autopilot to be updated, got %v = %v", app.Config.Contracts.Allowance, ap.Config.Contracts.Allowance) } // make forex API return an error - forex.setUnreachable(true) + e.setUnreachable(true) // assert alert was registered - ms.updatPinnedSettings(pps) + s.updatPinnedSettings(pps) res, _ := a.Alerts(context.Background(), alerts.AlertsOpts{}) if len(res.Alerts) == 0 { t.Fatalf("expected 1 alert, got %d", len(a.alerts)) } // make forex API return a valid response - forex.setUnreachable(false) + e.setUnreachable(false) // assert alert was dismissed - ms.updatPinnedSettings(pps) + s.updatPinnedSettings(pps) res, _ = a.Alerts(context.Background(), alerts.AlertsOpts{}) if len(res.Alerts) != 0 { t.Fatalf("expected 0 alerts, got %d", len(a.alerts)) diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index 133868029..b7f554550 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -93,6 +93,11 @@ type dbConfig struct { RetryTxIntervals []time.Duration } +type explorerConfig struct { + URL string + Disable bool +} + func (tc *TestCluster) Accounts() []api.Account { tc.tt.Helper() accounts, err := tc.Worker.Accounts(context.Background()) @@ -264,7 +269,7 @@ func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { if opts.walletKey != nil { wk = *opts.walletKey } - busCfg, workerCfg, apCfg, dbCfg := testBusCfg(), testWorkerCfg(), testApCfg(), testDBCfg() + busCfg, workerCfg, apCfg, dbCfg, explorerCfg := testBusCfg(), testWorkerCfg(), testApCfg(), testDBCfg(), testExplorerCfg() if opts.busCfg != nil { busCfg = *opts.busCfg } @@ -364,7 +369,7 @@ func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { // Create bus. busDir := filepath.Join(dir, "bus") - b, bShutdownFn, cm, bs, err := newTestBus(ctx, busDir, busCfg, dbCfg, wk, logger) + b, bShutdownFn, cm, bs, err := newTestBus(ctx, busDir, busCfg, dbCfg, explorerCfg, wk, logger) tt.OK(err) busAuth := jape.BasicAuth(busPassword) @@ -537,7 +542,7 @@ func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { return cluster } -func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, pk types.PrivateKey, logger *zap.Logger) (*bus.Bus, func(ctx context.Context) error, *chain.Manager, bus.Store, error) { +func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, cfgExplorer explorerConfig, pk types.PrivateKey, logger *zap.Logger) (*bus.Bus, func(ctx context.Context) error, *chain.Manager, bus.Store, error) { // create store alertsMgr := alerts.NewManager() storeCfg, err := buildStoreConfig(alertsMgr, dir, cfg.SlabBufferCompletionThreshold, cfgDb, pk, logger) @@ -580,6 +585,9 @@ func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, } cm := chain.NewManager(store, state) + // create explorer + e := bus.NewExplorer(cfgExplorer.URL, !cfgExplorer.Disable) + // create wallet w, err := wallet.NewSingleAddressWallet(pk, cm, sqlStore, wallet.WithReservationDuration(cfg.UsedUTXOExpiry)) if err != nil { @@ -631,7 +639,7 @@ func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, // create bus announcementMaxAgeHours := time.Duration(cfg.AnnouncementMaxAgeHours) * time.Hour - b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, s, w, sqlStore, announcementMaxAgeHours, logger) + b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, e, s, w, sqlStore, announcementMaxAgeHours, logger) if err != nil { return nil, nil, nil, nil, err } @@ -1084,6 +1092,12 @@ func testDBCfg() dbConfig { } } +func testExplorerCfg() explorerConfig { + return explorerConfig{ + Disable: true, + } +} + func testWorkerCfg() config.Worker { return config.Worker{ AccountsRefillInterval: time.Second, diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 12c839a82..7cb589ad4 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -189,9 +189,7 @@ func TestNewTestCluster(t *testing.T) { // PricePinningSettings should have default values pps, err := b.PricePinningSettings(context.Background()) tt.OK(err) - if pps.ForexEndpointURL == "" { - t.Fatal("expected default value for ForexEndpointURL") - } else if pps.Currency == "" { + if pps.Currency == "" { t.Fatal("expected default value for Currency") } else if pps.Threshold == 0 { t.Fatal("expected default value for Threshold") From 829e6bf4fd3d51c688547373ebf23dbf674cf4d3 Mon Sep 17 00:00:00 2001 From: PJ Date: Fri, 6 Sep 2024 12:04:12 +0200 Subject: [PATCH 063/708] sql: fix migration --- internal/sql/migrations.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/sql/migrations.go b/internal/sql/migrations.go index aeedc3d54..b6bc8b435 100644 --- a/internal/sql/migrations.go +++ b/internal/sql/migrations.go @@ -226,7 +226,7 @@ var ( log.Infof("performing %s migration '00018_settings'", dbIdentifier) // fetch all settings - rows, err := tx.Query(ctx, "SELECT key, value FROM settings") + rows, err := tx.Query(ctx, "SELECT `key`, value FROM settings") if err != nil { return fmt.Errorf("failed to fetch settings: %v", err) } @@ -297,9 +297,9 @@ var ( } } else { log.Warnf("s3authentication settings are not being migrated, err: %v", err) - if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", "s3authentication"); err != nil { - log.Warnf("failed to delete s3authentication settings: %v", err) - } + } + if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", "s3authentication"); err != nil { + log.Warnf("failed to delete s3authentication settings: %v", err) } } else { log.Warn("no s3authentication setting found") From 8aa18a03b504b9d3cdc899b61a83f1f5b51fbf9d Mon Sep 17 00:00:00 2001 From: PJ Date: Fri, 6 Sep 2024 12:30:38 +0200 Subject: [PATCH 064/708] db: update migration --- internal/sql/migrations.go | 42 ++++++++++++++++++++++---------------- stores/sql/mysql/main.go | 5 +++++ stores/sql/sqlite/main.go | 5 +++++ 3 files changed, 34 insertions(+), 18 deletions(-) diff --git a/internal/sql/migrations.go b/internal/sql/migrations.go index b6bc8b435..12e21cb4b 100644 --- a/internal/sql/migrations.go +++ b/internal/sql/migrations.go @@ -6,7 +6,6 @@ import ( "encoding/json" "fmt" "strings" - "time" "unicode/utf8" "go.sia.tech/renterd/api" @@ -31,6 +30,7 @@ type ( MainMigrator interface { Migrator MakeDirsForPath(ctx context.Context, tx Tx, path string) (int64, error) + UpdateSetting(ctx context.Context, tx Tx, key, value string) error } ) @@ -236,7 +236,6 @@ var ( for rows.Next() { var k, v string if err := rows.Scan(&k, &v); err != nil { - _ = rows.Close() return fmt.Errorf("failed to scan setting: %v", err) } settings[k] = v @@ -266,17 +265,18 @@ var ( if err == nil { err = ps.Validate() } - if err != nil { - log.Warnf("pricepinning settings are not being migrated, err: %v", err) - if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", "pricepinning"); err != nil { - return fmt.Errorf("failed to delete pricepinning settings: %v", err) - } - } else { - b, _ := json.Marshal(ps) - if _, err := tx.Exec(ctx, "INSERT INTO settings (created_at, `key`, value) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE value = VALUES(value)", - time.Now(), "pinned", string(b)); err != nil { + if err == nil { + updated, _ := json.Marshal(ps) + if err := m.UpdateSetting(ctx, tx, "pinned", string(updated)); err != nil { return fmt.Errorf("failed to insert pinned settings: %v", err) } + } else { + log.Warnf("pricepinning settings are not being migrated, err: %v", err) + } + + // always delete because it got renamed + if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", "pricepinning"); err != nil { + log.Warnf("failed to delete pricepinning settings: %v", err) } } else { log.Warn("no pricepinning settings found") @@ -290,14 +290,15 @@ var ( err = s3s.Validate() } if err == nil { - b, _ := json.Marshal(s3s) - if _, err := tx.Exec(ctx, "INSERT INTO settings (created_at, `key`, value) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE value = VALUES(value)", - time.Now(), "s3", string(b)); err != nil { + updated, _ := json.Marshal(s3s) + if err := m.UpdateSetting(ctx, tx, "s3", string(updated)); err != nil { return fmt.Errorf("failed to insert s3 settings: %v", err) } } else { log.Warnf("s3authentication settings are not being migrated, err: %v", err) } + + // always delete because it got renamed if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", "s3authentication"); err != nil { log.Warnf("failed to delete s3authentication settings: %v", err) } @@ -317,6 +318,8 @@ var ( } else { us.DefaultContractSet = css.Default } + + // always delete because it got replaced if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", "contractset"); err != nil { return err } @@ -329,6 +332,8 @@ var ( } else { us.Packing = ups } + + // always delete because it got replaced if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", "uploadpacking"); err != nil { return err } @@ -345,6 +350,8 @@ var ( } else { us.Redundancy = rs } + + // always delete because it got replaced if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", "redundancy"); err != nil { return err } @@ -355,10 +362,9 @@ var ( log.Warnf("upload settings are not being migrated, err: %v", err) return err // developer error } else { - b, _ := json.Marshal(us) - if _, err := tx.Exec(ctx, "INSERT INTO settings (created_at, `key`, value) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE value = VALUES(value)", - time.Now(), "upload", string(b)); err != nil { - return fmt.Errorf("failed to insert s3 settings: %v", err) + updated, _ := json.Marshal(us) + if err := m.UpdateSetting(ctx, tx, "upload", string(updated)); err != nil { + return fmt.Errorf("failed to insert upload settings: %v", err) } } diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index 457db78b7..71625a343 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -87,6 +87,11 @@ func (b *MainDatabase) Transaction(ctx context.Context, fn func(tx ssql.Database }) } +func (b *MainDatabase) UpdateSetting(ctx context.Context, tx sql.Tx, key, value string) error { + mtx := b.wrapTxn(tx) + return mtx.UpdateSetting(ctx, key, value) +} + func (b *MainDatabase) Version(ctx context.Context) (string, string, error) { return version(ctx, b.db) } diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index 7adaaaeab..f7e839a4a 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -86,6 +86,11 @@ func (b *MainDatabase) Transaction(ctx context.Context, fn func(tx ssql.Database }) } +func (b *MainDatabase) UpdateSetting(ctx context.Context, tx sql.Tx, key, value string) error { + mtx := b.wrapTxn(tx) + return mtx.UpdateSetting(ctx, key, value) +} + func (b *MainDatabase) Version(ctx context.Context) (string, string, error) { return version(ctx, b.db) } From b47b078a9f964bb1008fbca7b65205e30052af09 Mon Sep 17 00:00:00 2001 From: PJ Date: Fri, 6 Sep 2024 13:29:24 +0200 Subject: [PATCH 065/708] bus: remove Enabled from pinned settings --- api/setting.go | 24 +++++++++++++++----- bus/bus.go | 9 ++------ bus/routes.go | 6 ++++- internal/bus/pinmanager.go | 4 ++-- internal/bus/pinmanager_test.go | 39 +++++++++++++++++++++++---------- 5 files changed, 54 insertions(+), 28 deletions(-) diff --git a/api/setting.go b/api/setting.go index cb82eeafb..7e472cb66 100644 --- a/api/setting.go +++ b/api/setting.go @@ -54,7 +54,6 @@ var ( // configured with on startup. These values can be adjusted using the // settings API. DefaultPricePinSettings = PricePinSettings{ - Enabled: false, Currency: "usd", Threshold: 0.05, } @@ -136,10 +135,6 @@ type ( // the current exchange rate, allowing users to set prices in USD instead of // SC. PricePinSettings struct { - // Enabled can be used to either enable or temporarily disable price - // pinning. If enabled, the currency and threshold must be valid. - Enabled bool `json:"enabled"` - // Currency is the external three-letter currency code. Currency string `json:"currency"` @@ -198,9 +193,26 @@ func (p Pin) IsPinned() bool { return p.Pinned && p.Value > 0 } +// Enabled returns true if any pins are enabled. +func (pps PricePinSettings) Enabled() bool { + if pps.GougingSettingsPins.MaxDownload.Pinned || + pps.GougingSettingsPins.MaxStorage.Pinned || + pps.GougingSettingsPins.MaxUpload.Pinned { + return true + } + + for _, pin := range pps.Autopilots { + if pin.Allowance.Pinned { + return true + } + } + + return false +} + // Validate returns an error if the price pin settings are not considered valid. func (pps PricePinSettings) Validate() error { - if !pps.Enabled { + if !pps.Enabled() { return nil } if pps.Currency == "" { diff --git a/bus/bus.go b/bus/bus.go index 418c9eae0..45627408e 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -775,13 +775,8 @@ func (b *Bus) initSettings(ctx context.Context) error { if err := b.ss.UpdateSetting(ctx, api.SettingPricePinning, string(updated)); err != nil { return fmt.Errorf("failed to update setting '%v': %w", api.SettingPricePinning, err) } - } else if pps.Enabled && !b.e.Enabled() { - b.logger.Warn("pinning can not be enabled, explorer is disabled, pinning will be disabled") - pps.Enabled = false - updated, _ := json.Marshal(pps) - if err := b.ss.UpdateSetting(ctx, api.SettingPricePinning, string(updated)); err != nil { - return fmt.Errorf("failed to update setting '%v': %w", api.SettingPricePinning, err) - } + } else if pps.Enabled() && !b.e.Enabled() { + return fmt.Errorf("price pinning can not be enabled, %w", api.ErrExplorerDisabled) } return nil diff --git a/bus/routes.go b/bus/routes.go index 4df4193a3..15dee0850 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1721,7 +1721,7 @@ func (b *Bus) settingKeyHandlerPUT(jc jape.Context) { } else if err := pps.Validate(); err != nil { jc.Error(fmt.Errorf("couldn't update price pinning settings, invalid settings, error: %v", err), http.StatusBadRequest) return - } else if pps.Enabled && !b.e.Enabled() { + } else if pps.Enabled() && !b.e.Enabled() { jc.Error(fmt.Errorf("pinning can not be enabled, %w", api.ErrExplorerDisabled), http.StatusBadRequest) return } @@ -2051,6 +2051,10 @@ func (b *Bus) stateHandlerGET(jc jape.Context) { OS: runtime.GOOS, BuildTime: api.TimeRFC3339(build.BuildTime()), }, + Explorer: api.ExplorerState{ + Enabled: b.e.Enabled(), + URL: b.e.BaseURL(), + }, Network: b.cm.TipState().Network.Name, }) } diff --git a/internal/bus/pinmanager.go b/internal/bus/pinmanager.go index 38056b39d..97e139bd5 100644 --- a/internal/bus/pinmanager.go +++ b/internal/bus/pinmanager.go @@ -338,8 +338,8 @@ func (pm *pinManager) updatePrices(ctx context.Context, forced bool) error { return nil } else if err != nil { return fmt.Errorf("failed to fetch pinned settings: %w", err) - } else if !settings.Enabled { - pm.logger.Debug("price pinning is disabled, skipping price update") + } else if !settings.Enabled() { + pm.logger.Debug("no pinned settings, skipping price update") return nil } diff --git a/internal/bus/pinmanager_test.go b/internal/bus/pinmanager_test.go index 77d74c55e..4154f64a9 100644 --- a/internal/bus/pinmanager_test.go +++ b/internal/bus/pinmanager_test.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "errors" + "os" "reflect" "sync" "testing" @@ -16,6 +17,7 @@ import ( "go.sia.tech/renterd/api" "go.sia.tech/renterd/webhooks" "go.uber.org/zap" + "go.uber.org/zap/zapcore" ) const ( @@ -176,6 +178,19 @@ func (ms *mockPinStore) UpdateAutopilot(ctx context.Context, autopilot api.Autop return nil } +func newTestLoggerCustom(level zapcore.Level) *zap.Logger { + config := zap.NewProductionEncoderConfig() + config.EncodeTime = zapcore.RFC3339TimeEncoder + config.EncodeLevel = zapcore.CapitalColorLevelEncoder + config.StacktraceKey = "" + consoleEncoder := zapcore.NewConsoleEncoder(config) + + return zap.New( + zapcore.NewCore(consoleEncoder, zapcore.AddSync(os.Stdout), level), + zap.AddCaller(), + zap.AddStacktrace(level), + ) +} func TestPinManager(t *testing.T) { // mock dependencies a := &mockAlerter{} @@ -184,7 +199,8 @@ func TestPinManager(t *testing.T) { s := newTestStore() // create a pinmanager - pm := NewPinManager(a, b, e, s, testUpdateInterval, time.Minute, zap.NewNop()) + + pm := NewPinManager(a, b, e, s, testUpdateInterval, time.Minute, newTestLoggerCustom(zap.DebugLevel)) defer func() { if err := pm.Shutdown(context.Background()); err != nil { t.Fatal(err) @@ -206,18 +222,11 @@ func TestPinManager(t *testing.T) { // enable price pinning pps := api.DefaultPricePinSettings - pps.Enabled = true pps.Currency = "usd" pps.Threshold = 0.5 s.updatPinnedSettings(pps) - // assert price manager is running now - if cnt := len(rates()); cnt < 1 { - t.Fatal("expected at least one rate") - } - // update exchange rate and fetch current gouging settings - e.setRate(2.5) gs := s.gougingSettings() // configure all pins but disable them for now @@ -231,9 +240,15 @@ func TestPinManager(t *testing.T) { t.Fatalf("expected gouging settings to be the same, got %v", gss) } - // enable the max download pin, with the threshold at 0.5 it should remain unchanged + // enable the max download pin pps.GougingSettingsPins.MaxDownload.Pinned = true s.updatPinnedSettings(pps) + + // adjust the rate + e.setRate(1.5) + time.Sleep(2 * testUpdateInterval) + + // at threshold of .5 the prices should not be updated if gss := s.gougingSettings(); !reflect.DeepEqual(gs, gss) { t.Fatalf("expected gouging settings to be the same, got %v", gss) } @@ -241,7 +256,7 @@ func TestPinManager(t *testing.T) { // lower the threshold, gouging settings should be updated pps.Threshold = 0.05 s.updatPinnedSettings(pps) - if gss := s.gougingSettings(); gss.MaxContractPrice.Equals(gs.MaxDownloadPrice) { + if gss := s.gougingSettings(); gss.MaxDownloadPrice.Equals(gs.MaxDownloadPrice) { t.Fatalf("expected gouging settings to be updated, got %v = %v", gss.MaxDownloadPrice, gs.MaxDownloadPrice) } @@ -289,7 +304,7 @@ func TestPinManager(t *testing.T) { t.Fatalf("expected autopilot to be updated, got %v = %v", app.Config.Contracts.Allowance, ap.Config.Contracts.Allowance) } - // make forex API return an error + // make explorer return an error e.setUnreachable(true) // assert alert was registered @@ -299,7 +314,7 @@ func TestPinManager(t *testing.T) { t.Fatalf("expected 1 alert, got %d", len(a.alerts)) } - // make forex API return a valid response + // make explorer return a valid response e.setUnreachable(false) // assert alert was dismissed From 8de033dd9cff4d52db4f2ab71d4519f8ea5d72c0 Mon Sep 17 00:00:00 2001 From: PJ Date: Fri, 6 Sep 2024 13:46:03 +0200 Subject: [PATCH 066/708] bus: move explorer to internal --- bus/bus.go | 16 ++++++++++++---- bus/routes.go | 6 +++--- cmd/renterd/config.go | 9 +++++++++ cmd/renterd/node.go | 9 +++++---- {bus => internal/bus}/explorer.go | 12 +++++------- internal/bus/pinmanager.go | 5 ----- internal/bus/pinmanager_test.go | 4 ++++ internal/test/e2e/cluster.go | 9 +++++---- 8 files changed, 43 insertions(+), 27 deletions(-) rename {bus => internal/bus}/explorer.go (92%) diff --git a/bus/bus.go b/bus/bus.go index 45627408e..92b629bfd 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -101,6 +101,11 @@ type ( Shutdown(context.Context) error } + Explorer interface { + Enabled() bool + BaseURL() string + } + // A TransactionPool can validate and relay unconfirmed transactions. TransactionPool interface { AcceptTransactionSet(txns []types.Transaction) error @@ -311,7 +316,6 @@ type Bus struct { pinMgr PinManager webhooksMgr WebhooksManager cm ChainManager - e Explorer cs ChainSubscriber s Syncer w Wallet @@ -327,6 +331,7 @@ type Bus struct { rhp3 *rhp3.Client contractLocker ContractLocker + explorer Explorer sectors UploadingSectorsCache walletMetricsRecorder WalletMetricsRecorder @@ -334,7 +339,7 @@ type Bus struct { } // New returns a new Bus -func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksManager, cm ChainManager, e Explorer, s Syncer, w Wallet, store Store, announcementMaxAge time.Duration, l *zap.Logger) (_ *Bus, err error) { +func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksManager, cm ChainManager, s Syncer, w Wallet, store Store, announcementMaxAge time.Duration, explorerURL string, l *zap.Logger) (_ *Bus, err error) { l = l.Named("bus") b := &Bus{ @@ -344,7 +349,6 @@ func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksMa accounts: store, s: s, cm: cm, - e: e, w: w, hs: store, as: store, @@ -369,6 +373,10 @@ func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksMa // create contract locker b.contractLocker = ibus.NewContractLocker() + // create explorer + e := ibus.NewExplorer(explorerURL) + b.explorer = e + // create sectors cache b.sectors = ibus.NewSectorsCache() @@ -775,7 +783,7 @@ func (b *Bus) initSettings(ctx context.Context) error { if err := b.ss.UpdateSetting(ctx, api.SettingPricePinning, string(updated)); err != nil { return fmt.Errorf("failed to update setting '%v': %w", api.SettingPricePinning, err) } - } else if pps.Enabled() && !b.e.Enabled() { + } else if pps.Enabled() && !b.explorer.Enabled() { return fmt.Errorf("price pinning can not be enabled, %w", api.ErrExplorerDisabled) } diff --git a/bus/routes.go b/bus/routes.go index 15dee0850..0db0e49c0 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1721,7 +1721,7 @@ func (b *Bus) settingKeyHandlerPUT(jc jape.Context) { } else if err := pps.Validate(); err != nil { jc.Error(fmt.Errorf("couldn't update price pinning settings, invalid settings, error: %v", err), http.StatusBadRequest) return - } else if pps.Enabled() && !b.e.Enabled() { + } else if pps.Enabled() && !b.explorer.Enabled() { jc.Error(fmt.Errorf("pinning can not be enabled, %w", api.ErrExplorerDisabled), http.StatusBadRequest) return } @@ -2052,8 +2052,8 @@ func (b *Bus) stateHandlerGET(jc jape.Context) { BuildTime: api.TimeRFC3339(build.BuildTime()), }, Explorer: api.ExplorerState{ - Enabled: b.e.Enabled(), - URL: b.e.BaseURL(), + Enabled: b.explorer.Enabled(), + URL: b.explorer.BaseURL(), }, Network: b.cm.TipState().Network.Name, }) diff --git a/cmd/renterd/config.go b/cmd/renterd/config.go index 608c2a62a..3db4edd24 100644 --- a/cmd/renterd/config.go +++ b/cmd/renterd/config.go @@ -171,6 +171,12 @@ func loadConfig() (cfg config.Config, network *consensus.Network, genesis types. return } + // check explorer + if !cfg.Explorer.Disable && cfg.Explorer.URL == "" { + err = fmt.Errorf("explorer is disabled but no URL is set") + return + } + return } @@ -419,6 +425,9 @@ func parseEnvironmentVariables(cfg *config.Config) { parseEnvVar("RENTERD_WORKER_API_PASSWORD", &workerRemotePassStr) parseEnvVar("RENTERD_S3_KEYPAIRS_V4", &keyPairsV4) + + parseEnvVar("RENTERD_EXPLORER_DISABLE", &cfg.Explorer.Disable) + parseEnvVar("RENTERD_EXPLORER_URL", &cfg.Explorer.URL) } // readPasswordInput reads a password from stdin. diff --git a/cmd/renterd/node.go b/cmd/renterd/node.go index 11968ff52..d1dda7e17 100644 --- a/cmd/renterd/node.go +++ b/cmd/renterd/node.go @@ -311,9 +311,6 @@ func newBus(ctx context.Context, cfg config.Config, pk types.PrivateKey, network } cm := chain.NewManager(store, state) - // create explorer - e := bus.NewExplorer(cfg.Explorer.URL, !cfg.Explorer.Disable) - // create wallet w, err := wallet.NewSingleAddressWallet(pk, cm, sqlStore, wallet.WithReservationDuration(cfg.Bus.UsedUTXOExpiry)) if err != nil { @@ -384,8 +381,12 @@ func newBus(ctx context.Context, cfg config.Config, pk types.PrivateKey, network masterKey := blake2b.Sum256(append([]byte("worker"), pk...)) // create bus + var explorerURL string + if !cfg.Explorer.Disable { + explorerURL = cfg.Explorer.URL + } announcementMaxAgeHours := time.Duration(cfg.Bus.AnnouncementMaxAgeHours) * time.Hour - b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, e, s, w, sqlStore, announcementMaxAgeHours, logger) + b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, s, w, sqlStore, announcementMaxAgeHours, explorerURL, logger) if err != nil { return nil, nil, fmt.Errorf("failed to create bus: %w", err) } diff --git a/bus/explorer.go b/internal/bus/explorer.go similarity index 92% rename from bus/explorer.go rename to internal/bus/explorer.go index 2040403b1..fcd213870 100644 --- a/bus/explorer.go +++ b/internal/bus/explorer.go @@ -20,16 +20,14 @@ type ( } explorer struct { - enabled bool - url string + url string } ) // NewExplorer returns a new Explorer. -func NewExplorer(url string, enabled bool) Explorer { +func NewExplorer(url string) Explorer { return &explorer{ - enabled: enabled, - url: url, + url: url, } } @@ -40,13 +38,13 @@ func (e *explorer) BaseURL() string { // Enabled returns true if the explorer is enabled. func (e *explorer) Enabled() bool { - return e.enabled + return e.url != "" } // SiacoinExchangeRate returns the exchange rate for the given currency. func (e *explorer) SiacoinExchangeRate(ctx context.Context, currency string) (rate float64, err error) { // return early if the explorer is disabled - if !e.enabled { + if !e.Enabled() { return 0, api.ErrExplorerDisabled } diff --git a/internal/bus/pinmanager.go b/internal/bus/pinmanager.go index 97e139bd5..1db2fd9a7 100644 --- a/internal/bus/pinmanager.go +++ b/internal/bus/pinmanager.go @@ -24,11 +24,6 @@ type ( UpdateAutopilot(ctx context.Context, ap api.Autopilot) error UpdateSetting(ctx context.Context, key, value string) error } - - Explorer interface { - Enabled() bool - SiacoinExchangeRate(ctx context.Context, currency string) (rate float64, err error) - } ) type ( diff --git a/internal/bus/pinmanager_test.go b/internal/bus/pinmanager_test.go index 4154f64a9..b2c7964cc 100644 --- a/internal/bus/pinmanager_test.go +++ b/internal/bus/pinmanager_test.go @@ -81,6 +81,10 @@ func (e *mockExplorer) Enabled() bool { return true } +func (e *mockExplorer) BaseURL() string { + return "" +} + func (e *mockExplorer) SiacoinExchangeRate(ctx context.Context, currency string) (rate float64, err error) { e.mu.Lock() defer e.mu.Unlock() diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index b7f554550..9df48ff11 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -585,9 +585,6 @@ func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, } cm := chain.NewManager(store, state) - // create explorer - e := bus.NewExplorer(cfgExplorer.URL, !cfgExplorer.Disable) - // create wallet w, err := wallet.NewSingleAddressWallet(pk, cm, sqlStore, wallet.WithReservationDuration(cfg.UsedUTXOExpiry)) if err != nil { @@ -639,7 +636,11 @@ func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, // create bus announcementMaxAgeHours := time.Duration(cfg.AnnouncementMaxAgeHours) * time.Hour - b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, e, s, w, sqlStore, announcementMaxAgeHours, logger) + var explorerURL string + if cfgExplorer.URL != "" { + explorerURL = cfgExplorer.URL + } + b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, s, w, sqlStore, announcementMaxAgeHours, explorerURL, logger) if err != nil { return nil, nil, nil, nil, err } From 6b8d2690e265bae5e5e091f39337eba3a13b49e1 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 6 Sep 2024 14:38:18 +0200 Subject: [PATCH 067/708] bus: remove Explorer interface --- bus/bus.go | 7 +------ internal/bus/explorer.go | 19 ++++++------------- internal/bus/pinmanager.go | 12 ++++++++++-- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/bus/bus.go b/bus/bus.go index 92b629bfd..1371ea067 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -101,11 +101,6 @@ type ( Shutdown(context.Context) error } - Explorer interface { - Enabled() bool - BaseURL() string - } - // A TransactionPool can validate and relay unconfirmed transactions. TransactionPool interface { AcceptTransactionSet(txns []types.Transaction) error @@ -331,7 +326,7 @@ type Bus struct { rhp3 *rhp3.Client contractLocker ContractLocker - explorer Explorer + explorer *ibus.Explorer sectors UploadingSectorsCache walletMetricsRecorder WalletMetricsRecorder diff --git a/internal/bus/explorer.go b/internal/bus/explorer.go index fcd213870..5b31910c6 100644 --- a/internal/bus/explorer.go +++ b/internal/bus/explorer.go @@ -12,37 +12,30 @@ import ( ) type ( - // An explorer retrieves data about the Sia network from an external source. - Explorer interface { - Enabled() bool - BaseURL() string - SiacoinExchangeRate(ctx context.Context, currency string) (rate float64, err error) - } - - explorer struct { + Explorer struct { url string } ) // NewExplorer returns a new Explorer. -func NewExplorer(url string) Explorer { - return &explorer{ +func NewExplorer(url string) *Explorer { + return &Explorer{ url: url, } } // BaseURL returns the base URL of the Explorer. -func (e *explorer) BaseURL() string { +func (e *Explorer) BaseURL() string { return e.url } // Enabled returns true if the explorer is enabled. -func (e *explorer) Enabled() bool { +func (e *Explorer) Enabled() bool { return e.url != "" } // SiacoinExchangeRate returns the exchange rate for the given currency. -func (e *explorer) SiacoinExchangeRate(ctx context.Context, currency string) (rate float64, err error) { +func (e *Explorer) SiacoinExchangeRate(ctx context.Context, currency string) (rate float64, err error) { // return early if the explorer is disabled if !e.Enabled() { return 0, api.ErrExplorerDisabled diff --git a/internal/bus/pinmanager.go b/internal/bus/pinmanager.go index 1db2fd9a7..400758c63 100644 --- a/internal/bus/pinmanager.go +++ b/internal/bus/pinmanager.go @@ -18,6 +18,14 @@ import ( ) type ( + // An ExchangeRateExplorer retrieves exchange rate data about + // the SC token. + ExchangeRateExplorer interface { + Enabled() bool + BaseURL() string + SiacoinExchangeRate(ctx context.Context, currency string) (rate float64, err error) + } + Store interface { Autopilot(ctx context.Context, id string) (api.Autopilot, error) Setting(ctx context.Context, key string) (string, error) @@ -29,7 +37,7 @@ type ( type ( pinManager struct { a alerts.Alerter - e Explorer + e ExchangeRateExplorer s Store broadcaster webhooks.Broadcaster @@ -51,7 +59,7 @@ type ( // NewPinManager returns a new PinManager, responsible for pinning prices to a // fixed value in an underlying currency. The returned pin manager is already // running and can be stopped by calling Shutdown. -func NewPinManager(alerts alerts.Alerter, broadcaster webhooks.Broadcaster, e Explorer, s Store, updateInterval, rateWindow time.Duration, l *zap.Logger) *pinManager { +func NewPinManager(alerts alerts.Alerter, broadcaster webhooks.Broadcaster, e ExchangeRateExplorer, s Store, updateInterval, rateWindow time.Duration, l *zap.Logger) *pinManager { pm := &pinManager{ a: alerts, e: e, From 8c27676cdf812ccab54563c92080fa7bfb68d358 Mon Sep 17 00:00:00 2001 From: PJ Date: Fri, 6 Sep 2024 14:56:43 +0200 Subject: [PATCH 068/708] testing: remove test logger --- internal/bus/pinmanager_test.go | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/internal/bus/pinmanager_test.go b/internal/bus/pinmanager_test.go index b2c7964cc..a6e81c28e 100644 --- a/internal/bus/pinmanager_test.go +++ b/internal/bus/pinmanager_test.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" "errors" - "os" "reflect" "sync" "testing" @@ -17,7 +16,6 @@ import ( "go.sia.tech/renterd/api" "go.sia.tech/renterd/webhooks" "go.uber.org/zap" - "go.uber.org/zap/zapcore" ) const ( @@ -182,19 +180,6 @@ func (ms *mockPinStore) UpdateAutopilot(ctx context.Context, autopilot api.Autop return nil } -func newTestLoggerCustom(level zapcore.Level) *zap.Logger { - config := zap.NewProductionEncoderConfig() - config.EncodeTime = zapcore.RFC3339TimeEncoder - config.EncodeLevel = zapcore.CapitalColorLevelEncoder - config.StacktraceKey = "" - consoleEncoder := zapcore.NewConsoleEncoder(config) - - return zap.New( - zapcore.NewCore(consoleEncoder, zapcore.AddSync(os.Stdout), level), - zap.AddCaller(), - zap.AddStacktrace(level), - ) -} func TestPinManager(t *testing.T) { // mock dependencies a := &mockAlerter{} @@ -203,8 +188,7 @@ func TestPinManager(t *testing.T) { s := newTestStore() // create a pinmanager - - pm := NewPinManager(a, b, e, s, testUpdateInterval, time.Minute, newTestLoggerCustom(zap.DebugLevel)) + pm := NewPinManager(a, b, e, s, testUpdateInterval, time.Minute, zap.NewNop()) defer func() { if err := pm.Shutdown(context.Background()); err != nil { t.Fatal(err) From ca1c0776c729f3b8ddd5912f7bbcdfdf83db650a Mon Sep 17 00:00:00 2001 From: PJ Date: Fri, 6 Sep 2024 15:13:56 +0200 Subject: [PATCH 069/708] stores: use bool --- cmd/renterd/node.go | 14 +++++++------- internal/test/e2e/cluster.go | 2 +- stores/settings.go | 2 +- stores/sql.go | 16 ++++++++-------- stores/sql_test.go | 2 +- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/cmd/renterd/node.go b/cmd/renterd/node.go index 5787bae7f..58e96c9c8 100644 --- a/cmd/renterd/node.go +++ b/cmd/renterd/node.go @@ -258,19 +258,13 @@ func newNode(cfg config.Config, network *consensus.Network, genesis types.Block) } func newBus(ctx context.Context, cfg config.Config, pk types.PrivateKey, network *consensus.Network, genesis types.Block, logger *zap.Logger) (*bus.Bus, func(ctx context.Context) error, error) { - // get explorer URL - var explorerURL string - if !cfg.Explorer.Disable { - explorerURL = cfg.Explorer.URL - } - // create store alertsMgr := alerts.NewManager() storeCfg, err := buildStoreConfig(alertsMgr, cfg, pk, logger) if err != nil { return nil, nil, err } - sqlStore, err := stores.NewSQLStore(storeCfg, explorerURL, network) + sqlStore, err := stores.NewSQLStore(storeCfg, cfg.Explorer.Disable, network) if err != nil { return nil, nil, err } @@ -384,6 +378,12 @@ func newBus(ctx context.Context, cfg config.Config, pk types.PrivateKey, network // to ensure contracts formed by the bus can be renewed by the autopilot masterKey := blake2b.Sum256(append([]byte("worker"), pk...)) + // get explorer URL + var explorerURL string + if !cfg.Explorer.Disable { + explorerURL = cfg.Explorer.URL + } + // create bus announcementMaxAgeHours := time.Duration(cfg.Bus.AnnouncementMaxAgeHours) * time.Hour b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, s, w, sqlStore, announcementMaxAgeHours, explorerURL, logger) diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index 3a75a7ee7..13c66520b 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -554,7 +554,7 @@ func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, // create store network, genesis := testNetwork() - sqlStore, err := stores.NewSQLStore(storeCfg, "", network) + sqlStore, err := stores.NewSQLStore(storeCfg, true, network) if err != nil { return nil, nil, nil, nil, err } diff --git a/stores/settings.go b/stores/settings.go index 3a24cb5bc..fab149a11 100644 --- a/stores/settings.go +++ b/stores/settings.go @@ -76,7 +76,7 @@ func (s *SQLStore) fetchSetting(ctx context.Context, key string, out interface{} return fmt.Errorf("failed to fetch setting from db: %w", err) } else if err != nil { value = s.defaultSetting(key) - } else if key == SettingPinned && s.explorerURL == "" { + } else if key == SettingPinned && !s.explorerDisabled { var ps api.PinnedSettings if err := json.Unmarshal([]byte(value), &ps); err == nil && ps.Enabled() { s.logger.Warn("pinned settings are enabled but explorer is disabled, using default settings") diff --git a/stores/sql.go b/stores/sql.go index 5a3c188fb..dee0a416f 100644 --- a/stores/sql.go +++ b/stores/sql.go @@ -43,9 +43,9 @@ type ( dbMetrics sql.MetricsDatabase logger *zap.SugaredLogger - explorerURL string - network *consensus.Network - walletAddress types.Address + explorerDisabled bool + network *consensus.Network + walletAddress types.Address // ObjectDB related fields slabBufferMgr *SlabBufferManager @@ -71,7 +71,7 @@ type ( // NewSQLStore uses a given Dialector to connect to a SQL database. NOTE: Only // pass migrate=true for the first instance of SQLHostDB if you connect via the // same Dialector multiple times. -func NewSQLStore(cfg Config, explorerURL string, network *consensus.Network) (*SQLStore, error) { +func NewSQLStore(cfg Config, explorerDisabled bool, network *consensus.Network) (*SQLStore, error) { if err := os.MkdirAll(cfg.PartialSlabDir, 0700); err != nil { return nil, fmt.Errorf("failed to create partial slab dir '%s': %v", cfg.PartialSlabDir, err) } @@ -102,10 +102,10 @@ func NewSQLStore(cfg Config, explorerURL string, network *consensus.Network) (*S dbMetrics: dbMetrics, logger: l.Sugar(), - settings: make(map[string]string), - walletAddress: cfg.WalletAddress, - explorerURL: explorerURL, - network: network, + settings: make(map[string]string), + walletAddress: cfg.WalletAddress, + explorerDisabled: explorerDisabled, + network: network, slabPruneSigChan: make(chan struct{}, 1), lastPrunedAt: time.Now(), diff --git a/stores/sql_test.go b/stores/sql_test.go index 1b2689f03..7a676a5b3 100644 --- a/stores/sql_test.go +++ b/stores/sql_test.go @@ -180,7 +180,7 @@ func newTestSQLStore(t *testing.T, cfg testSQLStoreConfig) *testSQLStore { LongQueryDuration: 100 * time.Millisecond, LongTxDuration: 100 * time.Millisecond, RetryTransactionIntervals: []time.Duration{50 * time.Millisecond, 100 * time.Millisecond, 200 * time.Millisecond}, - }, "", &consensus.Network{}) + }, false, &consensus.Network{}) if err != nil { t.Fatal("failed to create SQLStore", err) } From 4f4a9c44001726f7de9c259dc8eafd41cd6ca4b6 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 6 Sep 2024 16:15:54 +0200 Subject: [PATCH 070/708] sql: add support for filtering by price table and settings fields --- api/host.go | 71 +++++++++++++++++++++++++++ api/object.go | 4 +- bus/client/hosts.go | 2 + bus/routes.go | 14 ++++++ internal/test/e2e/cluster_test.go | 12 ++--- stores/hostdb_test.go | 81 +++++++++++++++++++++++++++++++ stores/sql/main.go | 55 ++++++++++++++++----- 7 files changed, 220 insertions(+), 19 deletions(-) diff --git a/api/host.go b/api/host.go index a8d7a40e4..0ac29c228 100644 --- a/api/host.go +++ b/api/host.go @@ -22,10 +22,77 @@ const ( UsabilityFilterModeUnusable = "unusable" ) +var ValidHostSortBy = map[string]any{ + // price table + "price_table.uid": nil, + "price_table.validity": nil, + "price_table.hostblockheight": nil, + "price_table.updatepricetablecost": nil, + "price_table.accountbalancecost": nil, + "price_table.fundaccountcost": nil, + "price_table.latestrevisioncost": nil, + "price_table.subscriptionmemorycost": nil, + "price_table.subscriptionnotificationcost": nil, + "price_table.initbasecost": nil, + "price_table.memorytimecost": nil, + "price_table.downloadbandwidthcost": nil, + "price_table.uploadbandwidthcost": nil, + "price_table.dropsectorsbasecost": nil, + "price_table.dropsectorsunitcost": nil, + "price_table.hassectorbasecost": nil, + "price_table.readbasecost": nil, + "price_table.readlengthcost": nil, + "price_table.renewcontractcost": nil, + "price_table.revisionbasecost": nil, + "price_table.swapsectorcost": nil, + "price_table.writebasecost": nil, + "price_table.writelengthcost": nil, + "price_table.writestorecost": nil, + "price_table.txnfeeminrecommended": nil, + "price_table.txnfeemaxrecommended": nil, + "price_table.contractprice": nil, + "price_table.collateralcost": nil, + "price_table.maxcollateral": nil, + "price_table.maxduration": nil, + "price_table.windowsize": nil, + "price_table.registryentriesleft": nil, + "price_table.registryentriestotal": nil, + + // settings + "settings.acceptingcontracts": nil, + "settings.maxdownloadbatchsize": nil, + "settings.maxduration": nil, + "settings.maxrevisebatchsize": nil, + "settings.netaddress": nil, + "settings.remainingstorage": nil, + "settings.sectorsize": nil, + "settings.totalstorage": nil, + "settings.unlockhash": nil, + "settings.windowsize": nil, + "settings.collateral": nil, + "settings.maxcollateral": nil, + "settings.baserpcprice": nil, + "settings.contractprice": nil, + "settings.downloadbandwidthprice": nil, + "settings.sectoraccessprice": nil, + "settings.storageprice": nil, + "settings.uploadbandwidthprice": nil, + "settings.ephemeralaccountexpiry": nil, + "settings.maxephemeralaccountbalance": nil, + "settings.revisionnumber": nil, + "settings.version": nil, + "settings.release": nil, + "settings.siamuxport": nil, +} + var ( // ErrHostNotFound is returned when a host can't be retrieved from the // database. ErrHostNotFound = errors.New("host doesn't exist in hostdb") + + // ErrInvalidHostSortBy is returned when the SortBy parameter used + // when querying hosts is invalid. + ErrInvalidHostSortBy = errors.New("invalid SortBy parameter") ) var ( @@ -66,6 +133,8 @@ type ( UsabilityMode string `json:"usabilityMode"` AddressContains string `json:"addressContains"` KeyIn []types.PublicKey `json:"keyIn"` + SortBy string `json:"sortBy"` + SortDir string `json:"sortDir"` } // HostResponse is the response type for the GET @@ -117,6 +186,8 @@ type ( KeyIn []types.PublicKey Limit int Offset int + SortBy string + SortDir string } ) diff --git a/api/object.go b/api/object.go index a5cef0422..006014839 100644 --- a/api/object.go +++ b/api/object.go @@ -23,8 +23,8 @@ const ( ObjectSortByName = "name" ObjectSortBySize = "size" - ObjectSortDirAsc = "asc" - ObjectSortDirDesc = "desc" + SortDirAsc = "asc" + SortDirDesc = "desc" ) var ( diff --git a/bus/client/hosts.go b/bus/client/hosts.go index d7aa5f6db..f9480b32b 100644 --- a/bus/client/hosts.go +++ b/bus/client/hosts.go @@ -26,6 +26,8 @@ func (c *Client) Hosts(ctx context.Context, opts api.HostOptions) (hosts []api.H UsabilityMode: opts.UsabilityMode, AddressContains: opts.AddressContains, KeyIn: opts.KeyIn, + SortBy: opts.SortBy, + SortDir: opts.SortDir, }, &hosts) return } diff --git a/bus/routes.go b/bus/routes.go index a49742724..881221077 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -625,6 +625,18 @@ func (b *Bus) hostsHandlerPOST(jc jape.Context) { return } + // validate sorting params + if _, valid := api.ValidHostSortBy[req.SortBy]; !valid { + jc.Error(fmt.Errorf("%w: %v", api.ErrInvalidHostSortBy, req.SortBy), http.StatusBadRequest) + return + } + switch req.SortDir { + case "", api.SortDirAsc, api.SortDirDesc: + default: + jc.Error(errors.New("invalid value for SortDir param, options are 'asc' and 'desc'"), http.StatusBadRequest) + return + } + // validate the offset and limit if req.Offset < 0 { jc.Error(errors.New("offset must be non-negative"), http.StatusBadRequest) @@ -645,6 +657,8 @@ func (b *Bus) hostsHandlerPOST(jc jape.Context) { KeyIn: req.KeyIn, Offset: req.Offset, Limit: req.Limit, + SortBy: req.SortBy, + SortDir: req.SortDir, }) if jc.Check(fmt.Sprintf("couldn't fetch hosts %d-%d", req.Offset, req.Offset+req.Limit), err) != nil { return diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 9c3383d83..66801afa2 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -105,15 +105,15 @@ func TestListObjects(t *testing.T) { want []api.ObjectMetadata }{ {"/", "", "", []api.ObjectMetadata{{Name: "/FOO/bar", Size: 6, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}, {Name: "/gab/guub", Size: 5, Health: 1}}}, - {"/", "", api.ObjectSortDirAsc, []api.ObjectMetadata{{Name: "/FOO/bar", Size: 6, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}, {Name: "/gab/guub", Size: 5, Health: 1}}}, - {"/", "", api.ObjectSortDirDesc, []api.ObjectMetadata{{Name: "/gab/guub", Size: 5, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/FOO/bar", Size: 6, Health: 1}}}, - {"/", api.ObjectSortByHealth, api.ObjectSortDirAsc, []api.ObjectMetadata{{Name: "/FOO/bar", Size: 6, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}, {Name: "/gab/guub", Size: 5, Health: 1}}}, - {"/", api.ObjectSortByHealth, api.ObjectSortDirDesc, []api.ObjectMetadata{{Name: "/FOO/bar", Size: 6, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}, {Name: "/gab/guub", Size: 5, Health: 1}}}, + {"/", "", api.SortDirAsc, []api.ObjectMetadata{{Name: "/FOO/bar", Size: 6, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}, {Name: "/gab/guub", Size: 5, Health: 1}}}, + {"/", "", api.SortDirDesc, []api.ObjectMetadata{{Name: "/gab/guub", Size: 5, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/FOO/bar", Size: 6, Health: 1}}}, + {"/", api.ObjectSortByHealth, api.SortDirAsc, []api.ObjectMetadata{{Name: "/FOO/bar", Size: 6, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}, {Name: "/gab/guub", Size: 5, Health: 1}}}, + {"/", api.ObjectSortByHealth, api.SortDirDesc, []api.ObjectMetadata{{Name: "/FOO/bar", Size: 6, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}, {Name: "/gab/guub", Size: 5, Health: 1}}}, {"/foo/b", "", "", []api.ObjectMetadata{{Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}}}, {"o/baz/quu", "", "", []api.ObjectMetadata{}}, {"/foo", "", "", []api.ObjectMetadata{{Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}}}, - {"/foo", api.ObjectSortBySize, api.ObjectSortDirAsc, []api.ObjectMetadata{{Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}}}, - {"/foo", api.ObjectSortBySize, api.ObjectSortDirDesc, []api.ObjectMetadata{{Name: "/foo/baz/quuz", Size: 4, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}}}, + {"/foo", api.ObjectSortBySize, api.SortDirAsc, []api.ObjectMetadata{{Name: "/foo/bar", Size: 1, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/baz/quuz", Size: 4, Health: 1}}}, + {"/foo", api.ObjectSortBySize, api.SortDirDesc, []api.ObjectMetadata{{Name: "/foo/baz/quuz", Size: 4, Health: 1}, {Name: "/foo/baz/quux", Size: 3, Health: 1}, {Name: "/foo/bat", Size: 2, Health: 1}, {Name: "/foo/bar", Size: 1, Health: 1}}}, } for _, test := range tests { // use the bus client diff --git a/stores/hostdb_test.go b/stores/hostdb_test.go index 82e73191e..526ae31d8 100644 --- a/stores/hostdb_test.go +++ b/stores/hostdb_test.go @@ -138,6 +138,34 @@ func TestHosts(t *testing.T) { } hk1, hk2, hk3 := hks[0], hks[1], hks[2] + err := ss.RecordHostScans(context.Background(), []api.HostScan{ + { + HostKey: hk1, + PriceTable: rhpv3.HostPriceTable{ + InitBaseCost: types.NewCurrency64(2), + }, + Settings: rhpv2.HostSettings{ + BaseRPCPrice: types.NewCurrency64(2), + }, + Success: true, + Timestamp: time.Now(), + }, + { + HostKey: hk3, + PriceTable: rhpv3.HostPriceTable{ + InitBaseCost: types.NewCurrency64(1), + }, + Settings: rhpv2.HostSettings{ + BaseRPCPrice: types.NewCurrency64(1), + }, + Success: true, + Timestamp: time.Now(), + }, + }) + if err != nil { + t.Fatal(err) + } + // search all hosts his, err := ss.Hosts(context.Background(), api.HostOptions{ AutopilotID: "", @@ -154,6 +182,59 @@ func TestHosts(t *testing.T) { t.Fatal("unexpected") } + // search all hosts sorted by initbasecost + his, err = ss.Hosts(context.Background(), api.HostOptions{ + FilterMode: api.HostFilterModeAll, + SortBy: "price_table.initbasecost", + Limit: -1, + }) + if err != nil { + t.Fatal(err) + } else if len(his) != 3 { + t.Fatal("unexpected", len(his)) + } else if his[0].PublicKey != hk2 || his[1].PublicKey != hk3 || his[2].PublicKey != hk1 { + t.Fatal("unexpected", his[0].PublicKey, his[1].PublicKey, his[2].PublicKey) + } + + // reverse order + his, err = ss.Hosts(context.Background(), api.HostOptions{ + FilterMode: api.HostFilterModeAll, + SortBy: "price_table.initbasecost", + SortDir: api.SortDirDesc, + Limit: -1, + }) + if err != nil { + t.Fatal(err) + } else if len(his) != 3 { + t.Fatal("unexpected", len(his)) + } else if his[0].PublicKey != hk1 || his[1].PublicKey != hk3 || his[2].PublicKey != hk2 { + t.Fatal("unexpected", his[0].PublicKey, his[1].PublicKey, his[2].PublicKey) + } + + // search all hosts sorted by baserpcprice + his, err = ss.Hosts(context.Background(), api.HostOptions{ + FilterMode: api.HostFilterModeAll, + SortBy: "settings.baserpcprice", + Limit: -1, + }) + if err != nil { + t.Fatal(err) + } else if len(his) != 3 { + t.Fatal("unexpected", len(his)) + } else if his[0].PublicKey != hk2 || his[1].PublicKey != hk3 || his[2].PublicKey != hk1 { + t.Fatal("unexpected", his[0].PublicKey, his[1].PublicKey, his[2].PublicKey) + } + + // search by invalid key + his, err = ss.Hosts(context.Background(), api.HostOptions{ + FilterMode: api.HostFilterModeAll, + SortBy: "price_table.invalid", + Limit: -1, + }) + if !errors.Is(err, api.ErrInvalidHostSortBy) { + t.Fatal(err) + } + // assert offset & limit are taken into account his, err = ss.Hosts(context.Background(), api.HostOptions{ AutopilotID: "", diff --git a/stores/sql/main.go b/stores/sql/main.go index 95d933fa9..f299d0e33 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -689,7 +689,7 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er } var whereExprs []string - var args []any + var whereArgs []any // fetch autopilot id var autopilotID int64 @@ -728,7 +728,7 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er // filter address if opts.AddressContains != "" { whereExprs = append(whereExprs, "h.net_address LIKE ?") - args = append(args, "%"+opts.AddressContains+"%") + whereArgs = append(whereArgs, "%"+opts.AddressContains+"%") } // filter public key @@ -739,7 +739,7 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er } placeholders := strings.Repeat("?, ", len(opts.KeyIn)-1) + "?" whereExprs = append(whereExprs, fmt.Sprintf("h.public_key IN (%s)", placeholders)) - args = append(args, pubKeys...) + whereArgs = append(whereArgs, pubKeys...) } // filter usability @@ -750,10 +750,10 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er switch opts.UsabilityMode { case api.UsabilityFilterModeUsable: whereExprs = append(whereExprs, fmt.Sprintf("EXISTS (SELECT 1 FROM hosts h2 INNER JOIN host_checks hc ON hc.db_host_id = h2.id AND h2.id = h.id WHERE (hc.usability_blocked = 0 AND hc.usability_offline = 0 AND hc.usability_low_score = 0 AND hc.usability_redundant_ip = 0 AND hc.usability_gouging = 0 AND hc.usability_not_accepting_contracts = 0 AND hc.usability_not_announced = 0 AND hc.usability_not_completing_scan = 0) %s)", whereApExpr)) - args = append(args, autopilotID) + whereArgs = append(whereArgs, autopilotID) case api.UsabilityFilterModeUnusable: whereExprs = append(whereExprs, fmt.Sprintf("EXISTS (SELECT 1 FROM hosts h2 INNER JOIN host_checks hc ON hc.db_host_id = h2.id AND h2.id = h.id WHERE (hc.usability_blocked = 1 OR hc.usability_offline = 1 OR hc.usability_low_score = 1 OR hc.usability_redundant_ip = 1 OR hc.usability_gouging = 1 OR hc.usability_not_accepting_contracts = 1 OR hc.usability_not_announced = 1 OR hc.usability_not_completing_scan = 1) %s)", whereApExpr)) - args = append(args, autopilotID) + whereArgs = append(whereArgs, autopilotID) } } @@ -788,6 +788,34 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er if hasBlocklist { blockedExprs = append(blockedExprs, "EXISTS (SELECT 1 FROM host_blocklist_entry_hosts hbeh WHERE hbeh.db_host_id = h.id)") } + + var orderByExpr string + var orderByArgs []any + if opts.SortBy != "" { + if opts.SortDir != "" && + opts.SortDir != api.SortDirAsc && + opts.SortDir != api.SortDirDesc { + return nil, fmt.Errorf("invalid sort order: %v", opts.SortDir) + } else if _, valid := api.ValidHostSortBy[opts.SortBy]; !valid { + return nil, fmt.Errorf("%w: invalid sortBy parameter: %v", api.ErrInvalidHostSortBy, opts.SortBy) + } + + var fieldExpr string + if strings.HasPrefix(opts.SortBy, "settings.") { + field := strings.TrimPrefix(opts.SortBy, "settings.") + fieldExpr = fmt.Sprintf("h.settings ->> '$.%s'", field) + } else if strings.HasPrefix(opts.SortBy, "price_table.") { + field := strings.TrimPrefix(opts.SortBy, "price_table.") + fieldExpr = fmt.Sprintf("h.price_table ->> '$.%s'", field) + } else { + return nil, fmt.Errorf("invalid sortBy parameter: %v", opts.SortBy) + } + orderByExpr = fmt.Sprintf("ORDER BY %s %s", fieldExpr, opts.SortDir) + orderByArgs = append(orderByArgs, fieldExpr) + whereExprs = append(whereExprs, "COALESCE(?, '') != ''") + whereArgs = append(whereArgs, fieldExpr) + } + var blockedExpr string if len(blockedExprs) > 0 { blockedExpr = strings.Join(blockedExprs, " OR ") @@ -798,6 +826,10 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er if len(whereExprs) > 0 { whereExpr = "WHERE " + strings.Join(whereExprs, " AND ") } + var args []any + args = append(args, whereArgs...) + args = append(args, orderByArgs...) + rows, err = tx.Query(ctx, fmt.Sprintf(` SELECT h.id, h.created_at, h.last_announcement, h.public_key, h.net_address, h.price_table, h.price_table_expiry, h.settings, h.total_scans, h.last_scan, h.last_scan_success, h.second_to_last_scan_success, @@ -806,7 +838,8 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er FROM hosts h %s %s - `, blockedExpr, whereExpr, offsetLimitStr), args...) + %s + `, blockedExpr, whereExpr, orderByExpr, offsetLimitStr), args...) if err != nil { return nil, fmt.Errorf("failed to fetch hosts: %w", err) } @@ -1178,7 +1211,7 @@ func whereObjectMarker(marker, sortBy, sortDir string, queryMarker func(dst any, return nil, nil, fmt.Errorf("sortBy and sortDir must be set") } - desc := strings.ToLower(sortDir) == api.ObjectSortDirDesc + desc := strings.ToLower(sortDir) == api.SortDirDesc switch strings.ToLower(sortBy) { case api.ObjectSortByName: if desc { @@ -1221,8 +1254,8 @@ func orderByObject(sortBy, sortDir string) (orderByExprs []string, _ error) { } dir2SQL := map[string]string{ - api.ObjectSortDirAsc: "ASC", - api.ObjectSortDirDesc: "DESC", + api.SortDirAsc: "ASC", + api.SortDirDesc: "DESC", } if _, ok := dir2SQL[strings.ToLower(sortDir)]; !ok { return nil, fmt.Errorf("invalid sortDir: %v", sortDir) @@ -1258,7 +1291,7 @@ func ListObjects(ctx context.Context, tx Tx, bucket, prefix, sortBy, sortDir, ma sortBy = api.ObjectSortByName } if sortDir == "" { - sortDir = api.ObjectSortDirAsc + sortDir = api.SortDirAsc } // filter by bucket @@ -1610,7 +1643,7 @@ func ObjectEntries(ctx context.Context, tx Tx, bucket, path, prefix, sortBy, sor sortBy = api.ObjectSortByName } if sortDir == "" { - sortDir = api.ObjectSortDirAsc + sortDir = api.SortDirAsc } // fetch directory id From 2f2d51592d17749ca0b4a1db14c9ee0bcd103da2 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 6 Sep 2024 17:56:42 +0200 Subject: [PATCH 071/708] sql: fix test in MySQL --- stores/sql/main.go | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/stores/sql/main.go b/stores/sql/main.go index f299d0e33..e0c41797e 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -689,7 +689,7 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er } var whereExprs []string - var whereArgs []any + var args []any // fetch autopilot id var autopilotID int64 @@ -728,7 +728,7 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er // filter address if opts.AddressContains != "" { whereExprs = append(whereExprs, "h.net_address LIKE ?") - whereArgs = append(whereArgs, "%"+opts.AddressContains+"%") + args = append(args, "%"+opts.AddressContains+"%") } // filter public key @@ -739,7 +739,7 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er } placeholders := strings.Repeat("?, ", len(opts.KeyIn)-1) + "?" whereExprs = append(whereExprs, fmt.Sprintf("h.public_key IN (%s)", placeholders)) - whereArgs = append(whereArgs, pubKeys...) + args = append(args, pubKeys...) } // filter usability @@ -750,10 +750,10 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er switch opts.UsabilityMode { case api.UsabilityFilterModeUsable: whereExprs = append(whereExprs, fmt.Sprintf("EXISTS (SELECT 1 FROM hosts h2 INNER JOIN host_checks hc ON hc.db_host_id = h2.id AND h2.id = h.id WHERE (hc.usability_blocked = 0 AND hc.usability_offline = 0 AND hc.usability_low_score = 0 AND hc.usability_redundant_ip = 0 AND hc.usability_gouging = 0 AND hc.usability_not_accepting_contracts = 0 AND hc.usability_not_announced = 0 AND hc.usability_not_completing_scan = 0) %s)", whereApExpr)) - whereArgs = append(whereArgs, autopilotID) + args = append(args, autopilotID) case api.UsabilityFilterModeUnusable: whereExprs = append(whereExprs, fmt.Sprintf("EXISTS (SELECT 1 FROM hosts h2 INNER JOIN host_checks hc ON hc.db_host_id = h2.id AND h2.id = h.id WHERE (hc.usability_blocked = 1 OR hc.usability_offline = 1 OR hc.usability_low_score = 1 OR hc.usability_redundant_ip = 1 OR hc.usability_gouging = 1 OR hc.usability_not_accepting_contracts = 1 OR hc.usability_not_announced = 1 OR hc.usability_not_completing_scan = 1) %s)", whereApExpr)) - whereArgs = append(whereArgs, autopilotID) + args = append(args, autopilotID) } } @@ -790,14 +790,14 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er } var orderByExpr string - var orderByArgs []any if opts.SortBy != "" { - if opts.SortDir != "" && - opts.SortDir != api.SortDirAsc && - opts.SortDir != api.SortDirDesc { + switch opts.SortDir { + case "", api.SortDirAsc, api.SortDirDesc: + default: return nil, fmt.Errorf("invalid sort order: %v", opts.SortDir) - } else if _, valid := api.ValidHostSortBy[opts.SortBy]; !valid { - return nil, fmt.Errorf("%w: invalid sortBy parameter: %v", api.ErrInvalidHostSortBy, opts.SortBy) + } + if _, valid := api.ValidHostSortBy[opts.SortBy]; !valid { + return nil, fmt.Errorf("%w: %s", api.ErrInvalidHostSortBy, opts.SortBy) } var fieldExpr string @@ -811,9 +811,7 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er return nil, fmt.Errorf("invalid sortBy parameter: %v", opts.SortBy) } orderByExpr = fmt.Sprintf("ORDER BY %s %s", fieldExpr, opts.SortDir) - orderByArgs = append(orderByArgs, fieldExpr) - whereExprs = append(whereExprs, "COALESCE(?, '') != ''") - whereArgs = append(whereArgs, fieldExpr) + whereExprs = append(whereExprs, fmt.Sprintf("COALESCE(%s, '') != ''", fieldExpr)) } var blockedExpr string @@ -826,9 +824,6 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er if len(whereExprs) > 0 { whereExpr = "WHERE " + strings.Join(whereExprs, " AND ") } - var args []any - args = append(args, whereArgs...) - args = append(args, orderByArgs...) rows, err = tx.Query(ctx, fmt.Sprintf(` SELECT h.id, h.created_at, h.last_announcement, h.public_key, h.net_address, h.price_table, h.price_table_expiry, From db4a7e4ddab203fbe27744726d4725a0c4f20d14 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 6 Sep 2024 18:28:49 +0200 Subject: [PATCH 072/708] bus: fix sortBy check --- bus/routes.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/bus/routes.go b/bus/routes.go index cb9e4b1cf..04b05b9ac 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -487,9 +487,11 @@ func (b *Bus) hostsHandlerPOST(jc jape.Context) { } // validate sorting params - if _, valid := api.ValidHostSortBy[req.SortBy]; !valid { - jc.Error(fmt.Errorf("%w: %v", api.ErrInvalidHostSortBy, req.SortBy), http.StatusBadRequest) - return + if req.SortBy != "" { + if _, valid := api.ValidHostSortBy[req.SortBy]; !valid { + jc.Error(fmt.Errorf("%w: %v", api.ErrInvalidHostSortBy, req.SortBy), http.StatusBadRequest) + return + } } switch req.SortDir { case "", api.SortDirAsc, api.SortDirDesc: From 43f9779397bc38989cccb1e82c62ec98d60e01c4 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 6 Sep 2024 18:30:39 +0200 Subject: [PATCH 073/708] e2e: fix TestListObjectsWithDelimiterSlash --- stores/sql/main.go | 90 +--------------------------------------------- 1 file changed, 1 insertion(+), 89 deletions(-) diff --git a/stores/sql/main.go b/stores/sql/main.go index a7453d026..c881e6304 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -1282,95 +1282,7 @@ func ListObjects(ctx context.Context, tx Tx, bucket, prefix, substring, delim, s default: err = fmt.Errorf("unsupported delimiter: '%s'", delim) } - - // establish sane defaults for sorting - if sortBy == "" { - sortBy = api.ObjectSortByName - } - if sortDir == "" { - sortDir = api.SortDirAsc - } - - // filter by bucket - whereExprs := []string{"o.db_bucket_id = (SELECT id FROM buckets b WHERE b.name = ?)"} - whereArgs := []any{bucket} - - // apply prefix - if prefix != "" { - whereExprs = append(whereExprs, "o.object_id LIKE ? AND SUBSTR(o.object_id, 1, ?) = ?") - whereArgs = append(whereArgs, prefix+"%", utf8.RuneCountInString(prefix), prefix) - } - - // apply sorting - orderByExprs, err := orderByObject(sortBy, sortDir) - if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to apply sorting: %w", err) - } - - // apply marker - markerExprs, markerArgs, err := whereObjectMarker(marker, sortBy, sortDir, func(dst any, marker, col string) error { - err := tx.QueryRow(ctx, fmt.Sprintf(` - SELECT o.%s - FROM objects o - INNER JOIN buckets b ON o.db_bucket_id = b.id - WHERE b.name = ? AND o.object_id = ? - `, col), bucket, marker).Scan(dst) - if errors.Is(err, dsql.ErrNoRows) { - return api.ErrMarkerNotFound - } else { - return err - } - }) - if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to get marker exprs: %w", err) - } - whereExprs = append(whereExprs, markerExprs...) - whereArgs = append(whereArgs, markerArgs...) - - // apply limit - whereArgs = append(whereArgs, limit) - - // run query - rows, err := tx.Query(ctx, fmt.Sprintf(` - SELECT %s - FROM objects o - WHERE %s - ORDER BY %s - LIMIT ? - `, - tx.SelectObjectMetadataExpr(), - strings.Join(whereExprs, " AND "), - strings.Join(orderByExprs, ", ")), - whereArgs...) - if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to fetch objects: %w", err) - } - defer rows.Close() - - var objects []api.ObjectMetadata - for rows.Next() { - om, err := tx.ScanObjectMetadata(rows) - if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to scan object metadata: %w", err) - } - objects = append(objects, om) - } - - var hasMore bool - var nextMarker string - if len(objects) == limit { - objects = objects[:len(objects)-1] - if len(objects) > 0 { - hasMore = true - nextMarker = objects[len(objects)-1].Key - } - } - - return api.ObjectsListResponse{ - HasMore: hasMore, - NextMarker: nextMarker, - Objects: objects, - }, nil + return } func MultipartUpload(ctx context.Context, tx sql.Tx, uploadID string) (api.MultipartUpload, error) { From 863f8764bad89cfc2613621efc159b309cd32a8d Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 6 Sep 2024 18:38:29 +0200 Subject: [PATCH 074/708] api: add IsValidHostSortBy helper --- api/host.go | 7 ++++++- bus/routes.go | 2 +- stores/sql/main.go | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/api/host.go b/api/host.go index 0ac29c228..0422c2bee 100644 --- a/api/host.go +++ b/api/host.go @@ -22,7 +22,7 @@ const ( UsabilityFilterModeUnusable = "unusable" ) -var ValidHostSortBy = map[string]any{ +var validHostSortBy = map[string]any{ // price table "price_table.uid": nil, "price_table.validity": nil, @@ -85,6 +85,11 @@ var ValidHostSortBy = map[string]any{ "settings.siamuxport": nil, } +func IsValidHostSortBy(sortBy string) bool { + _, ok := validHostSortBy[sortBy] + return ok +} + var ( // ErrHostNotFound is returned when a host can't be retrieved from the // database. diff --git a/bus/routes.go b/bus/routes.go index 04b05b9ac..80f8fb175 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -488,7 +488,7 @@ func (b *Bus) hostsHandlerPOST(jc jape.Context) { // validate sorting params if req.SortBy != "" { - if _, valid := api.ValidHostSortBy[req.SortBy]; !valid { + if !api.IsValidHostSortBy(req.SortBy) { jc.Error(fmt.Errorf("%w: %v", api.ErrInvalidHostSortBy, req.SortBy), http.StatusBadRequest) return } diff --git a/stores/sql/main.go b/stores/sql/main.go index c881e6304..16322934d 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -796,7 +796,7 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er default: return nil, fmt.Errorf("invalid sort order: %v", opts.SortDir) } - if _, valid := api.ValidHostSortBy[opts.SortBy]; !valid { + if !api.IsValidHostSortBy(opts.SortBy) { return nil, fmt.Errorf("%w: %s", api.ErrInvalidHostSortBy, opts.SortBy) } From fe695fad735c7bca38c75033a4007f4d690d83d9 Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 9 Sep 2024 09:28:00 +0200 Subject: [PATCH 075/708] stores: remove explorer enabled check --- cmd/renterd/node.go | 2 +- internal/test/e2e/cluster.go | 2 +- stores/settings.go | 6 ------ stores/sql.go | 14 ++++++-------- stores/sql_test.go | 2 +- 5 files changed, 9 insertions(+), 17 deletions(-) diff --git a/cmd/renterd/node.go b/cmd/renterd/node.go index 58e96c9c8..92c62ae9f 100644 --- a/cmd/renterd/node.go +++ b/cmd/renterd/node.go @@ -264,7 +264,7 @@ func newBus(ctx context.Context, cfg config.Config, pk types.PrivateKey, network if err != nil { return nil, nil, err } - sqlStore, err := stores.NewSQLStore(storeCfg, cfg.Explorer.Disable, network) + sqlStore, err := stores.NewSQLStore(storeCfg, network) if err != nil { return nil, nil, err } diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index 13c66520b..ec07a465a 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -554,7 +554,7 @@ func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, // create store network, genesis := testNetwork() - sqlStore, err := stores.NewSQLStore(storeCfg, true, network) + sqlStore, err := stores.NewSQLStore(storeCfg, network) if err != nil { return nil, nil, nil, nil, err } diff --git a/stores/settings.go b/stores/settings.go index fab149a11..5801de1a9 100644 --- a/stores/settings.go +++ b/stores/settings.go @@ -76,12 +76,6 @@ func (s *SQLStore) fetchSetting(ctx context.Context, key string, out interface{} return fmt.Errorf("failed to fetch setting from db: %w", err) } else if err != nil { value = s.defaultSetting(key) - } else if key == SettingPinned && !s.explorerDisabled { - var ps api.PinnedSettings - if err := json.Unmarshal([]byte(value), &ps); err == nil && ps.Enabled() { - s.logger.Warn("pinned settings are enabled but explorer is disabled, using default settings") - value = s.defaultSetting(key) - } } // unmarshal setting diff --git a/stores/sql.go b/stores/sql.go index dee0a416f..424016927 100644 --- a/stores/sql.go +++ b/stores/sql.go @@ -43,9 +43,8 @@ type ( dbMetrics sql.MetricsDatabase logger *zap.SugaredLogger - explorerDisabled bool - network *consensus.Network - walletAddress types.Address + network *consensus.Network + walletAddress types.Address // ObjectDB related fields slabBufferMgr *SlabBufferManager @@ -71,7 +70,7 @@ type ( // NewSQLStore uses a given Dialector to connect to a SQL database. NOTE: Only // pass migrate=true for the first instance of SQLHostDB if you connect via the // same Dialector multiple times. -func NewSQLStore(cfg Config, explorerDisabled bool, network *consensus.Network) (*SQLStore, error) { +func NewSQLStore(cfg Config, network *consensus.Network) (*SQLStore, error) { if err := os.MkdirAll(cfg.PartialSlabDir, 0700); err != nil { return nil, fmt.Errorf("failed to create partial slab dir '%s': %v", cfg.PartialSlabDir, err) } @@ -102,10 +101,9 @@ func NewSQLStore(cfg Config, explorerDisabled bool, network *consensus.Network) dbMetrics: dbMetrics, logger: l.Sugar(), - settings: make(map[string]string), - walletAddress: cfg.WalletAddress, - explorerDisabled: explorerDisabled, - network: network, + settings: make(map[string]string), + walletAddress: cfg.WalletAddress, + network: network, slabPruneSigChan: make(chan struct{}, 1), lastPrunedAt: time.Now(), diff --git a/stores/sql_test.go b/stores/sql_test.go index 7a676a5b3..0fd280873 100644 --- a/stores/sql_test.go +++ b/stores/sql_test.go @@ -180,7 +180,7 @@ func newTestSQLStore(t *testing.T, cfg testSQLStoreConfig) *testSQLStore { LongQueryDuration: 100 * time.Millisecond, LongTxDuration: 100 * time.Millisecond, RetryTransactionIntervals: []time.Duration{50 * time.Millisecond, 100 * time.Millisecond, 200 * time.Millisecond}, - }, false, &consensus.Network{}) + }, &consensus.Network{}) if err != nil { t.Fatal("failed to create SQLStore", err) } From e4ed9e6d820b71a97aba10f9160b961aeacaff09 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Mon, 9 Sep 2024 09:39:36 +0200 Subject: [PATCH 076/708] sql: swap migrations --- .../mysql/migrations/main/migration_00018_idx_db_directory.sql | 2 +- .../sqlite/migrations/main/migration_00018_idx_db_directory.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/stores/sql/mysql/migrations/main/migration_00018_idx_db_directory.sql b/stores/sql/mysql/migrations/main/migration_00018_idx_db_directory.sql index 5757fd280..8b1378917 100644 --- a/stores/sql/mysql/migrations/main/migration_00018_idx_db_directory.sql +++ b/stores/sql/mysql/migrations/main/migration_00018_idx_db_directory.sql @@ -1 +1 @@ -CREATE INDEX IF NOT EXISTS `idx_objects_db_directory_id` ON `objects`(`db_directory_id`); + diff --git a/stores/sql/sqlite/migrations/main/migration_00018_idx_db_directory.sql b/stores/sql/sqlite/migrations/main/migration_00018_idx_db_directory.sql index 8b1378917..5757fd280 100644 --- a/stores/sql/sqlite/migrations/main/migration_00018_idx_db_directory.sql +++ b/stores/sql/sqlite/migrations/main/migration_00018_idx_db_directory.sql @@ -1 +1 @@ - +CREATE INDEX IF NOT EXISTS `idx_objects_db_directory_id` ON `objects`(`db_directory_id`); From 1d576bc52d4a3b6747ec49a2aa8de15b62a10b82 Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 9 Sep 2024 10:53:11 +0200 Subject: [PATCH 077/708] testing: fix TestPinManager NDF --- internal/bus/pinmanager.go | 9 +++---- internal/bus/pinmanager_test.go | 44 ++++++++++++++++----------------- 2 files changed, 25 insertions(+), 28 deletions(-) diff --git a/internal/bus/pinmanager.go b/internal/bus/pinmanager.go index 4f38b8ba8..548e6b708 100644 --- a/internal/bus/pinmanager.go +++ b/internal/bus/pinmanager.go @@ -47,7 +47,7 @@ type ( updateInterval time.Duration rateWindow time.Duration - triggerChan chan struct{} + triggerChan chan bool closedChan chan struct{} wg sync.WaitGroup @@ -74,7 +74,7 @@ func NewPinManager(alerts alerts.Alerter, broadcaster webhooks.Broadcaster, e Ex updateInterval: updateInterval, rateWindow: rateWindow, - triggerChan: make(chan struct{}, 1), + triggerChan: make(chan bool, 1), closedChan: make(chan struct{}), } @@ -109,7 +109,7 @@ func (pm *pinManager) Shutdown(ctx context.Context) error { func (pm *pinManager) TriggerUpdate() { select { - case pm.triggerChan <- struct{}{}: + case pm.triggerChan <- true: default: } } @@ -174,8 +174,7 @@ func (pm *pinManager) run() { select { case <-pm.closedChan: return - case <-pm.triggerChan: - forced = true + case forced = <-pm.triggerChan: case <-t.C: } } diff --git a/internal/bus/pinmanager_test.go b/internal/bus/pinmanager_test.go index 8283144b7..d7800ed71 100644 --- a/internal/bus/pinmanager_test.go +++ b/internal/bus/pinmanager_test.go @@ -152,6 +152,9 @@ func (ms *mockPinStore) PinnedSettings(ctx context.Context) (api.PinnedSettings, } func (ms *mockPinStore) UpdatePinnedSettings(ctx context.Context, ps api.PinnedSettings) error { + ms.mu.Lock() + defer ms.mu.Unlock() + b, err := json.Marshal(ps) if err != nil { return err @@ -160,10 +163,7 @@ func (ms *mockPinStore) UpdatePinnedSettings(ctx context.Context, ps api.PinnedS if err := json.Unmarshal(b, &cloned); err != nil { return err } - ms.mu.Lock() ms.ps = cloned - ms.mu.Unlock() - time.Sleep(2 * testUpdateInterval) return nil } @@ -195,17 +195,11 @@ func TestPinManager(t *testing.T) { } }() - // define a small helper to fetch the price manager's rates - rates := func() []float64 { + // waitForUpdate waits for the price manager to update + waitForUpdate := func() { t.Helper() - pm.mu.Lock() - defer pm.mu.Unlock() - return pm.rates - } - - // assert price manager is disabled by default - if cnt := len(rates()); cnt != 0 { - t.Fatalf("expected no rates, got %d", cnt) + pm.triggerChan <- false + time.Sleep(testUpdateInterval) } // enable price pinning @@ -214,7 +208,7 @@ func TestPinManager(t *testing.T) { ps.Threshold = 0.5 s.UpdatePinnedSettings(context.Background(), ps) - // update exchange rate and fetch current gouging settings + // fetch current gouging settings gs, _ := s.GougingSettings(context.Background()) // configure all pins but disable them for now @@ -231,19 +225,20 @@ func TestPinManager(t *testing.T) { // enable the max download pin ps.GougingSettingsPins.MaxDownload.Pinned = true s.UpdatePinnedSettings(context.Background(), ps) + waitForUpdate() - // adjust the rate - e.setRate(1.5) - time.Sleep(2 * testUpdateInterval) - - // at threshold of .5 the prices should not be updated + // assert prices are not updated if gss, _ := s.GougingSettings(context.Background()); !reflect.DeepEqual(gs, gss) { - t.Fatalf("expected gouging settings to be the same, got %v", gss) + t.Fatalf("expected gouging settings to be the same, got %v expected %v", gss, gs) } - // lower the threshold, gouging settings should be updated + // adjust and lower the threshold + e.setRate(1.5) ps.Threshold = 0.05 s.UpdatePinnedSettings(context.Background(), ps) + waitForUpdate() + + // assert prices are updated if gss, _ := s.GougingSettings(context.Background()); gss.MaxDownloadPrice.Equals(gs.MaxDownloadPrice) { t.Fatalf("expected gouging settings to be updated, got %v = %v", gss.MaxDownloadPrice, gs.MaxDownloadPrice) } @@ -253,6 +248,7 @@ func TestPinManager(t *testing.T) { ps.GougingSettingsPins.MaxStorage.Pinned = true ps.GougingSettingsPins.MaxUpload.Pinned = true s.UpdatePinnedSettings(context.Background(), ps) + waitForUpdate() // assert they're all updated if gss, _ := s.GougingSettings(context.Background()); gss.MaxDownloadPrice.Equals(gs.MaxDownloadPrice) || @@ -276,6 +272,7 @@ func TestPinManager(t *testing.T) { } ps.Autopilots = map[string]api.AutopilotPins{testAutopilotID: pins} s.UpdatePinnedSettings(context.Background(), ps) + waitForUpdate() // assert autopilot was not updated if app, _ := s.Autopilot(context.Background(), testAutopilotID); !app.Config.Contracts.Allowance.Equals(ap.Config.Contracts.Allowance) { @@ -286,6 +283,7 @@ func TestPinManager(t *testing.T) { pins.Allowance.Pinned = true ps.Autopilots[testAutopilotID] = pins s.UpdatePinnedSettings(context.Background(), ps) + waitForUpdate() // assert autopilot was updated if app, _ := s.Autopilot(context.Background(), testAutopilotID); app.Config.Contracts.Allowance.Equals(ap.Config.Contracts.Allowance) { @@ -294,9 +292,9 @@ func TestPinManager(t *testing.T) { // make explorer return an error e.setUnreachable(true) + waitForUpdate() // assert alert was registered - s.UpdatePinnedSettings(context.Background(), ps) res, _ := a.Alerts(context.Background(), alerts.AlertsOpts{}) if len(res.Alerts) == 0 { t.Fatalf("expected 1 alert, got %d", len(a.alerts)) @@ -304,9 +302,9 @@ func TestPinManager(t *testing.T) { // make explorer return a valid response e.setUnreachable(false) + waitForUpdate() // assert alert was dismissed - s.UpdatePinnedSettings(context.Background(), ps) res, _ = a.Alerts(context.Background(), alerts.AlertsOpts{}) if len(res.Alerts) != 0 { t.Fatalf("expected 0 alerts, got %d", len(a.alerts)) From 51d35ee3d3ad13293c3617ebba89143e9228e3eb Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Mon, 9 Sep 2024 11:47:22 +0200 Subject: [PATCH 078/708] gouging: address review comments --- internal/gouging/gouging.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/gouging/gouging.go b/internal/gouging/gouging.go index e226e96f0..f2fc11dec 100644 --- a/internal/gouging/gouging.go +++ b/internal/gouging/gouging.go @@ -326,7 +326,7 @@ func checkUploadGougingRHPv3(gs api.GougingSettings, pt *rhpv3.HostPriceTable) e } uploadPrice := sectorUploadPricePerMonth.Div64(rhpv2.SectorSize) if !gs.MaxUploadPrice.IsZero() && uploadPrice.Cmp(gs.MaxUploadPrice) > 0 { - return fmt.Errorf("%w: cost per TiB exceeds max ul price: %v > %v", ErrPriceTableGouging, uploadPrice, gs.MaxUploadPrice) + return fmt.Errorf("%w: cost per byte exceeds max ul price: %v > %v", ErrPriceTableGouging, uploadPrice, gs.MaxUploadPrice) } return nil } From c439b8bc35169f2c038f799bf6d3ca578acc0dbf Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Mon, 9 Sep 2024 13:56:14 +0200 Subject: [PATCH 079/708] bus: handle updatePinnedSettings error --- internal/bus/pinmanager_test.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/internal/bus/pinmanager_test.go b/internal/bus/pinmanager_test.go index e5158836d..8103a07fe 100644 --- a/internal/bus/pinmanager_test.go +++ b/internal/bus/pinmanager_test.go @@ -154,7 +154,10 @@ func (ms *mockPinStore) gougingSettings() api.GougingSettings { func (ms *mockPinStore) updatPinnedSettings(pps api.PricePinSettings) { b, _ := json.Marshal(pps) - ms.UpdateSetting(context.Background(), api.SettingPricePinning, string(b)) + err := ms.UpdateSetting(context.Background(), api.SettingPricePinning, string(b)) + if err != nil { + panic(err) + } time.Sleep(2 * testUpdateInterval) } From d1fe47741671cba11b46bbaaf051b640d21f307b Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Mon, 9 Sep 2024 14:12:04 +0200 Subject: [PATCH 080/708] bus: increase sleep in updatPinnedSettings --- internal/bus/pinmanager_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/bus/pinmanager_test.go b/internal/bus/pinmanager_test.go index bc37a4d7e..6a4ae55dd 100644 --- a/internal/bus/pinmanager_test.go +++ b/internal/bus/pinmanager_test.go @@ -154,7 +154,7 @@ func (ms *mockPinStore) updatPinnedSettings(pps api.PricePinSettings) { if err != nil { panic(err) } - time.Sleep(2 * testUpdateInterval) + time.Sleep(10 * testUpdateInterval) } func (ms *mockPinStore) Setting(ctx context.Context, key string) (string, error) { From 197e691f5a33e930af76735b30a29e1222a08db2 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Mon, 9 Sep 2024 14:43:03 +0200 Subject: [PATCH 081/708] stores: don't filter --- stores/hostdb_test.go | 25 ++++++++++++++++--------- stores/sql/main.go | 1 - 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/stores/hostdb_test.go b/stores/hostdb_test.go index 601ae088e..bada7249e 100644 --- a/stores/hostdb_test.go +++ b/stores/hostdb_test.go @@ -150,6 +150,13 @@ func TestHosts(t *testing.T) { Success: true, Timestamp: time.Now(), }, + { + HostKey: hk2, + PriceTable: rhpv3.HostPriceTable{}, // empty price table + Settings: rhpv2.HostSettings{}, // empty settings + Success: true, + Timestamp: time.Now(), + }, { HostKey: hk3, PriceTable: rhpv3.HostPriceTable{ @@ -190,10 +197,10 @@ func TestHosts(t *testing.T) { }) if err != nil { t.Fatal(err) - } else if len(his) != 2 { + } else if len(his) != 3 { t.Fatal("unexpected", len(his)) - } else if his[0].PublicKey != hk3 || his[1].PublicKey != hk1 { - t.Fatal("unexpected", his[0].PublicKey, his[1].PublicKey) + } else if his[0].PublicKey != hk2 || his[1].PublicKey != hk3 || his[2].PublicKey != hk1 { + t.Fatal("unexpected", his[0].PublicKey, his[1].PublicKey, his[2].PublicKey) } // reverse order @@ -205,10 +212,10 @@ func TestHosts(t *testing.T) { }) if err != nil { t.Fatal(err) - } else if len(his) != 2 { + } else if len(his) != 3 { t.Fatal("unexpected", len(his)) - } else if his[0].PublicKey != hk1 || his[1].PublicKey != hk3 { - t.Fatal("unexpected", his[0].PublicKey, his[1].PublicKey) + } else if his[0].PublicKey != hk1 || his[1].PublicKey != hk3 || his[2].PublicKey != hk2 { + t.Fatal("unexpected", his[0].PublicKey, his[1].PublicKey, his[2].PublicKey) } // search all hosts sorted by baserpcprice @@ -219,10 +226,10 @@ func TestHosts(t *testing.T) { }) if err != nil { t.Fatal(err) - } else if len(his) != 2 { + } else if len(his) != 3 { t.Fatal("unexpected", len(his)) - } else if his[0].PublicKey != hk3 || his[1].PublicKey != hk1 { - t.Fatal("unexpected", his[0].PublicKey, his[1].PublicKey) + } else if his[0].PublicKey != hk2 || his[1].PublicKey != hk3 || his[2].PublicKey != hk1 { + t.Fatal("unexpected", his[0].PublicKey, his[1].PublicKey, his[2].PublicKey) } // search by invalid key diff --git a/stores/sql/main.go b/stores/sql/main.go index 16322934d..59188b17b 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -811,7 +811,6 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er return nil, fmt.Errorf("invalid sortBy parameter: %v", opts.SortBy) } orderByExpr = fmt.Sprintf("ORDER BY %s %s", fieldExpr, opts.SortDir) - whereExprs = append(whereExprs, fmt.Sprintf("COALESCE(%s, '') != ''", fieldExpr)) } var blockedExpr string From 90399de1e0378194a412d01bb1d0995e27be289a Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 10 Sep 2024 10:24:11 +0200 Subject: [PATCH 082/708] bus: rename key to encryptionkey for slabs --- internal/test/e2e/cluster_test.go | 2 +- object/slab.go | 24 +-- object/slab_test.go | 2 +- stores/metadata_test.go | 282 +++++++++++++++--------------- stores/sql/main.go | 4 +- stores/sql/mysql/main.go | 6 +- stores/sql/sqlite/main.go | 6 +- worker/download.go | 2 +- worker/mocks_test.go | 6 +- worker/upload_utils.go | 6 +- 10 files changed, 170 insertions(+), 170 deletions(-) diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index d41edffac..ae92b9809 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -1732,7 +1732,7 @@ func TestUploadPacking(t *testing.T) { // and file2 share the same slab. res, err := b.Object(context.Background(), api.DefaultBucketName, "file1", api.GetObjectOptions{}) tt.OK(err) - objs, err := b.ObjectsBySlabKey(context.Background(), api.DefaultBucketName, res.Object.Slabs[0].Key) + objs, err := b.ObjectsBySlabKey(context.Background(), api.DefaultBucketName, res.Object.Slabs[0].EncryptionKey) tt.OK(err) if len(objs) != 2 { t.Fatal("expected 2 objects", len(objs)) diff --git a/object/slab.go b/object/slab.go index e52e7bd7b..55d070142 100644 --- a/object/slab.go +++ b/object/slab.go @@ -23,10 +23,10 @@ type Sector struct { // be used for each Slab, and should not be the same key used for the parent // Object. type Slab struct { - Health float64 `json:"health"` - Key EncryptionKey `json:"key"` - MinShards uint8 `json:"minShards"` - Shards []Sector `json:"shards,omitempty"` + Health float64 `json:"health"` + EncryptionKey EncryptionKey `json:"encryptionKey"` + MinShards uint8 `json:"minShards"` + Shards []Sector `json:"shards,omitempty"` } func (s Slab) IsPartial() bool { @@ -36,18 +36,18 @@ func (s Slab) IsPartial() bool { // NewSlab returns a new slab for the shards. func NewSlab(minShards uint8) Slab { return Slab{ - Key: GenerateEncryptionKey(), - MinShards: minShards, + EncryptionKey: GenerateEncryptionKey(), + MinShards: minShards, } } // NewPartialSlab returns a new partial slab. func NewPartialSlab(ec EncryptionKey, minShards uint8) Slab { return Slab{ - Health: 1, - Key: ec, - MinShards: minShards, - Shards: nil, + Health: 1, + EncryptionKey: ec, + MinShards: minShards, + Shards: nil, } } @@ -98,7 +98,7 @@ func (s Slab) Encrypt(shards [][]byte) { wg.Add(1) go func(i int) { nonce := [24]byte{1: byte(i)} - c, _ := chacha20.NewUnauthenticatedCipher(s.Key.entropy[:], nonce[:]) + c, _ := chacha20.NewUnauthenticatedCipher(s.EncryptionKey.entropy[:], nonce[:]) c.XORKeyStream(shards[i], shards[i]) wg.Done() }(i) @@ -176,7 +176,7 @@ func (ss SlabSlice) Decrypt(shards [][]byte) { wg.Add(1) go func(i int) { nonce := [24]byte{1: byte(i)} - c, _ := chacha20.NewUnauthenticatedCipher(ss.Key.entropy[:], nonce[:]) + c, _ := chacha20.NewUnauthenticatedCipher(ss.EncryptionKey.entropy[:], nonce[:]) c.SetCounter(offset) c.XORKeyStream(shards[i], shards[i]) wg.Done() diff --git a/object/slab_test.go b/object/slab_test.go index 1138b7c8b..c4c4a2006 100644 --- a/object/slab_test.go +++ b/object/slab_test.go @@ -72,7 +72,7 @@ func TestReedSolomon(t *testing.T) { func BenchmarkReedSolomon(b *testing.B) { makeSlab := func(m, n uint8) (Slab, []byte, [][]byte) { - return Slab{Key: GenerateEncryptionKey(), MinShards: m, Shards: make([]Sector, n)}, + return Slab{EncryptionKey: GenerateEncryptionKey(), MinShards: m, Shards: make([]Sector, n)}, frand.Bytes(rhpv2.SectorSize * int(m)), make([][]byte, n) } diff --git a/stores/metadata_test.go b/stores/metadata_test.go index fb0f63f9f..0195b264f 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -148,9 +148,9 @@ func TestPrunableContractRoots(t *testing.T) { Slabs: []object.SlabSlice{ { Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: 1, - Shards: newTestShards(hks[0], fcids[0], types.Hash256{byte(i)}), + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, + Shards: newTestShards(hks[0], fcids[0], types.Hash256{byte(i)}), }, }, }, @@ -228,20 +228,20 @@ func TestObjectBasic(t *testing.T) { Slabs: []object.SlabSlice{ { Slab: object.Slab{ - Health: 1.0, - Key: object.GenerateEncryptionKey(), - MinShards: 1, - Shards: newTestShards(hk1, fcid1, types.Hash256{1}), + Health: 1.0, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, + Shards: newTestShards(hk1, fcid1, types.Hash256{1}), }, Offset: 10, Length: 100, }, { Slab: object.Slab{ - Health: 1.0, - Key: object.GenerateEncryptionKey(), - MinShards: 2, - Shards: newTestShards(hk2, fcid2, types.Hash256{2}), + Health: 1.0, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 2, + Shards: newTestShards(hk2, fcid2, types.Hash256{2}), }, Offset: 20, Length: 200, @@ -310,20 +310,20 @@ func TestObjectMetadata(t *testing.T) { Slabs: []object.SlabSlice{ { Slab: object.Slab{ - Health: 1.0, - Key: object.GenerateEncryptionKey(), - MinShards: 1, - Shards: newTestShards(hk1, fcid1, types.Hash256{1}), + Health: 1.0, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, + Shards: newTestShards(hk1, fcid1, types.Hash256{1}), }, Offset: 10, Length: 100, }, { Slab: object.Slab{ - Health: 1.0, - Key: object.GenerateEncryptionKey(), - MinShards: 2, - Shards: newTestShards(hk2, fcid2, types.Hash256{2}), + Health: 1.0, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 2, + Shards: newTestShards(hk2, fcid2, types.Hash256{2}), }, Offset: 20, Length: 200, @@ -575,9 +575,9 @@ func TestContractRoots(t *testing.T) { Slabs: []object.SlabSlice{ { Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: 1, - Shards: newTestShards(hks[0], fcids[0], types.Hash256{1}), + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, + Shards: newTestShards(hks[0], fcids[0], types.Hash256{1}), }, }, }, @@ -672,9 +672,9 @@ func TestRenewedContract(t *testing.T) { // good slab { Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: 1, - Shards: append(newTestShards(hk, fcid1, types.Hash256{1}), newTestShards(hk2, fcid2, types.Hash256{2})...), + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, + Shards: append(newTestShards(hk, fcid1, types.Hash256{1}), newTestShards(hk2, fcid2, types.Hash256{2})...), }, }, }, @@ -1079,20 +1079,20 @@ func TestSQLMetadataStore(t *testing.T) { Slabs: []object.SlabSlice{ { Slab: object.Slab{ - Health: 1, - Key: object.GenerateEncryptionKey(), - MinShards: 1, - Shards: newTestShards(hk1, fcid1, types.Hash256{1}), + Health: 1, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, + Shards: newTestShards(hk1, fcid1, types.Hash256{1}), }, Offset: 10, Length: 100, }, { Slab: object.Slab{ - Health: 1, - Key: object.GenerateEncryptionKey(), - MinShards: 2, - Shards: newTestShards(hk2, fcid2, types.Hash256{2}), + Health: 1, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 2, + Shards: newTestShards(hk2, fcid2, types.Hash256{2}), }, Offset: 20, Length: 200, @@ -1119,8 +1119,8 @@ func TestSQLMetadataStore(t *testing.T) { } obj.ModTime = api.TimeRFC3339{} - obj1Slab0Key := obj1.Slabs[0].Key - obj1Slab1Key := obj1.Slabs[1].Key + obj1Slab0Key := obj1.Slabs[0].EncryptionKey + obj1Slab1Key := obj1.Slabs[1].EncryptionKey expectedObj := api.Object{ ObjectMetadata: api.ObjectMetadata{ @@ -1139,9 +1139,9 @@ func TestSQLMetadataStore(t *testing.T) { Offset: 10, Length: 100, Slab: object.Slab{ - Health: 1, - Key: obj1Slab0Key, - MinShards: 1, + Health: 1, + EncryptionKey: obj1Slab0Key, + MinShards: 1, Shards: []object.Sector{ { LatestHost: hk1, @@ -1157,9 +1157,9 @@ func TestSQLMetadataStore(t *testing.T) { Offset: 20, Length: 200, Slab: object.Slab{ - Health: 1, - Key: obj1Slab1Key, - MinShards: 2, + Health: 1, + EncryptionKey: obj1Slab1Key, + MinShards: 2, Shards: []object.Sector{ { LatestHost: hk2, @@ -1210,9 +1210,9 @@ func TestSQLMetadataStore(t *testing.T) { } expectedObjSlab1 := object.Slab{ - Health: 1, - Key: obj1Slab0Key, - MinShards: 1, + Health: 1, + EncryptionKey: obj1Slab0Key, + MinShards: 1, Shards: []object.Sector{ { Contracts: map[types.PublicKey][]types.FileContractID{ @@ -1249,9 +1249,9 @@ func TestSQLMetadataStore(t *testing.T) { } expectedObjSlab2 := object.Slab{ - Health: 1, - Key: obj1Slab1Key, - MinShards: 2, + Health: 1, + EncryptionKey: obj1Slab1Key, + MinShards: 2, Shards: []object.Sector{ { Contracts: map[types.PublicKey][]types.FileContractID{ @@ -1395,8 +1395,8 @@ func TestObjectHealth(t *testing.T) { Slabs: []object.SlabSlice{ { Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: 1, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, Shards: []object.Sector{ newTestShard(hks[0], fcids[0], types.Hash256{1}), newTestShard(hks[1], fcids[1], types.Hash256{2}), @@ -1407,8 +1407,8 @@ func TestObjectHealth(t *testing.T) { }, { Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: 1, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, Shards: []object.Sector{ newTestShard(hks[1], fcids[1], types.Hash256{5}), newTestShard(hks[2], fcids[2], types.Hash256{6}), @@ -1832,8 +1832,8 @@ func TestUnhealthySlabs(t *testing.T) { // good slab { Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: 1, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, Shards: []object.Sector{ newTestShard(hk1, fcid1, types.Hash256{1}), newTestShard(hk2, fcid2, types.Hash256{2}), @@ -1844,8 +1844,8 @@ func TestUnhealthySlabs(t *testing.T) { // unhealthy slab - hk4 is bad (1/3) { Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: 1, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, Shards: []object.Sector{ newTestShard(hk1, fcid1, types.Hash256{4}), newTestShard(hk2, fcid2, types.Hash256{5}), @@ -1856,8 +1856,8 @@ func TestUnhealthySlabs(t *testing.T) { // unhealthy slab - hk4 is bad (2/3) { Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: 1, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, Shards: []object.Sector{ newTestShard(hk1, fcid1, types.Hash256{7}), newTestShard(hk4, fcid4, types.Hash256{8}), @@ -1868,8 +1868,8 @@ func TestUnhealthySlabs(t *testing.T) { // unhealthy slab - hk5 is deleted (1/3) { Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: 1, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, Shards: []object.Sector{ newTestShard(hk1, fcid1, types.Hash256{10}), newTestShard(hk2, fcid2, types.Hash256{11}), @@ -1880,8 +1880,8 @@ func TestUnhealthySlabs(t *testing.T) { // unhealthy slab - h1 is reused { Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: 1, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, Shards: []object.Sector{ newTestShard(hk1, fcid1, types.Hash256{13}), newTestShard(hk1, fcid4, types.Hash256{14}), @@ -1892,8 +1892,8 @@ func TestUnhealthySlabs(t *testing.T) { // lost slab - no good pieces (0/3) { Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: 1, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, Shards: []object.Sector{ newTestShard(hk1, fcid1, types.Hash256{16}), newTestShard(hk2, fcid2, types.Hash256{17}), @@ -1926,10 +1926,10 @@ func TestUnhealthySlabs(t *testing.T) { } expected := []api.UnhealthySlab{ - {EncryptionKey: obj.Slabs[2].Key, Health: 0}, - {EncryptionKey: obj.Slabs[4].Key, Health: 0}, - {EncryptionKey: obj.Slabs[1].Key, Health: 0.5}, - {EncryptionKey: obj.Slabs[3].Key, Health: 0.5}, + {EncryptionKey: obj.Slabs[2].EncryptionKey, Health: 0}, + {EncryptionKey: obj.Slabs[4].EncryptionKey, Health: 0}, + {EncryptionKey: obj.Slabs[1].EncryptionKey, Health: 0.5}, + {EncryptionKey: obj.Slabs[3].EncryptionKey, Health: 0.5}, } if !reflect.DeepEqual(slabs, expected) { t.Fatal("slabs are not returned in the correct order") @@ -1947,8 +1947,8 @@ func TestUnhealthySlabs(t *testing.T) { } expected = []api.UnhealthySlab{ - {EncryptionKey: obj.Slabs[2].Key, Health: 0}, - {EncryptionKey: obj.Slabs[4].Key, Health: 0}, + {EncryptionKey: obj.Slabs[2].EncryptionKey, Health: 0}, + {EncryptionKey: obj.Slabs[4].EncryptionKey, Health: 0}, } if !reflect.DeepEqual(slabs, expected) { t.Fatal("slabs are not returned in the correct order", slabs, expected) @@ -1997,8 +1997,8 @@ func TestUnhealthySlabsNegHealth(t *testing.T) { Slabs: []object.SlabSlice{ { Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: 2, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 2, Shards: []object.Sector{ newTestShard(hk1, fcid1, types.Hash256{1}), newTestShard(hk1, fcid1, types.Hash256{2}), @@ -2056,9 +2056,9 @@ func TestUnhealthySlabsNoContracts(t *testing.T) { Slabs: []object.SlabSlice{ { Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: 1, - Shards: newTestShards(hk1, fcid1, types.Hash256{1}), + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, + Shards: newTestShards(hk1, fcid1, types.Hash256{1}), }, }, }, @@ -2137,16 +2137,16 @@ func TestUnhealthySlabsNoRedundancy(t *testing.T) { // hk1 is good so this slab should have full health. { Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: 1, - Shards: newTestShards(hk1, fcid1, types.Hash256{1}), + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, + Shards: newTestShards(hk1, fcid1, types.Hash256{1}), }, }, // hk4 is bad so this slab should have no health. { Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: 2, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 2, Shards: []object.Sector{ newTestShard(hk2, fcid2, types.Hash256{2}), newTestShard(hk3, fcid3, types.Hash256{4}), @@ -2172,7 +2172,7 @@ func TestUnhealthySlabsNoRedundancy(t *testing.T) { } expected := []api.UnhealthySlab{ - {EncryptionKey: obj.Slabs[1].Slab.Key, Health: -1}, + {EncryptionKey: obj.Slabs[1].Slab.EncryptionKey, Health: -1}, } if !reflect.DeepEqual(slabs, expected) { t.Fatal("slabs are not returned in the correct order") @@ -2205,8 +2205,8 @@ func TestContractSectors(t *testing.T) { Slabs: []object.SlabSlice{ { Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: 1, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, Shards: []object.Sector{ sectorGood, }, @@ -2278,8 +2278,8 @@ func TestUpdateSlab(t *testing.T) { Slabs: []object.SlabSlice{ { Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: 1, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, Shards: []object.Sector{ newTestShard(hk1, fcid1, types.Hash256{1}), newTestShard(hk2, fcid2, types.Hash256{2}), @@ -2294,7 +2294,7 @@ func TestUpdateSlab(t *testing.T) { } // extract the slab key - key, err := obj.Slabs[0].Key.MarshalBinary() + key, err := obj.Slabs[0].EncryptionKey.MarshalBinary() if err != nil { t.Fatal(err) } @@ -2302,7 +2302,7 @@ func TestUpdateSlab(t *testing.T) { // helper to fetch a slab from the database fetchSlab := func() (slab object.Slab) { t.Helper() - if slab, err = ss.Slab(ctx, obj.Slabs[0].Key); err != nil { + if slab, err = ss.Slab(ctx, obj.Slabs[0].EncryptionKey); err != nil { t.Fatal(err) } return @@ -2416,8 +2416,8 @@ func TestUpdateSlab(t *testing.T) { t.Fatal(err) } else if len(obj.Slabs) != 1 { t.Fatalf("unexpected number of slabs, %v != 1", len(obj.Slabs)) - } else if obj.Slabs[0].Key.String() != updated.Key.String() { - t.Fatalf("unexpected slab, %v != %v", obj.Slabs[0].Key, updated.Key) + } else if obj.Slabs[0].EncryptionKey.String() != updated.EncryptionKey.String() { + t.Fatalf("unexpected slab, %v != %v", obj.Slabs[0].EncryptionKey, updated.EncryptionKey) } // update the slab to change its contract set. @@ -2448,9 +2448,9 @@ func newTestObject(slabs int) object.Object { length := offset + uint32(frand.Uint64n(1<<22)) obj.Slabs[i] = object.SlabSlice{ Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: n, - Shards: make([]object.Sector, n*2), + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: n, + Shards: make([]object.Sector, n*2), }, Offset: offset, Length: length, @@ -2885,7 +2885,7 @@ func TestPartialSlab(t *testing.T) { } else if bufferSize != rhpv2.SectorSize { t.Fatal("unexpected buffer size", bufferSize) } - data, err := ss.FetchPartialSlab(ctx, slabs[0].Key, slabs[0].Offset, slabs[0].Length) + data, err := ss.FetchPartialSlab(ctx, slabs[0].EncryptionKey, slabs[0].Offset, slabs[0].Length) if err != nil { t.Fatal(err) } else if !bytes.Equal(data, slab1Data) { @@ -2910,7 +2910,7 @@ func TestPartialSlab(t *testing.T) { return } - buffer := fetchBuffer(slabs[0].Key) + buffer := fetchBuffer(slabs[0].EncryptionKey) if buffer.Filename == "" { t.Fatal("empty filename") } @@ -2924,9 +2924,9 @@ func TestPartialSlab(t *testing.T) { Slabs: []object.SlabSlice{ { Slab: object.Slab{ - Health: 1.0, - Key: object.GenerateEncryptionKey(), - MinShards: 1, + Health: 1.0, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, Shards: []object.Sector{ newTestShard(hk1, fcid1, frand.Entropy256()), newTestShard(hk2, fcid2, frand.Entropy256()), @@ -2962,7 +2962,7 @@ func TestPartialSlab(t *testing.T) { } else if bufferSize != rhpv2.SectorSize { t.Fatal("unexpected buffer size", bufferSize) } - data, err = ss.FetchPartialSlab(ctx, slabs[0].Key, slabs[0].Offset, slabs[0].Length) + data, err = ss.FetchPartialSlab(ctx, slabs[0].EncryptionKey, slabs[0].Offset, slabs[0].Length) if err != nil { t.Fatal(err) } else if !bytes.Equal(data, slab2Data) { @@ -2997,16 +2997,16 @@ func TestPartialSlab(t *testing.T) { if bufferSize != 2*rhpv2.SectorSize { t.Fatal("unexpected buffer size", bufferSize) } - if data1, err := ss.FetchPartialSlab(ctx, slabs[0].Key, slabs[0].Offset, slabs[0].Length); err != nil { + if data1, err := ss.FetchPartialSlab(ctx, slabs[0].EncryptionKey, slabs[0].Offset, slabs[0].Length); err != nil { t.Fatal(err) - } else if data2, err := ss.FetchPartialSlab(ctx, slabs[1].Key, slabs[1].Offset, slabs[1].Length); err != nil { + } else if data2, err := ss.FetchPartialSlab(ctx, slabs[1].EncryptionKey, slabs[1].Offset, slabs[1].Length); err != nil { t.Fatal(err) } else if !bytes.Equal(slab3Data, append(data1, data2...)) { t.Fatal("wrong data") } assertBuffer(buffer1Name, rhpv2.SectorSize, true, false) - buffer = fetchBuffer(slabs[1].Key) + buffer = fetchBuffer(slabs[1].EncryptionKey) buffer2Name := buffer.Filename assertBuffer(buffer2Name, 1, false, false) @@ -3056,7 +3056,7 @@ func TestPartialSlab(t *testing.T) { } assertBuffer(buffer2Name, 1, false, false) - _, err = ss.FetchPartialSlab(ctx, slabs[0].Key, slabs[0].Offset, slabs[0].Length) + _, err = ss.FetchPartialSlab(ctx, slabs[0].EncryptionKey, slabs[0].Offset, slabs[0].Length) if !errors.Is(err, api.ErrObjectNotFound) { t.Fatal("expected ErrObjectNotFound", err) } @@ -3172,9 +3172,9 @@ func TestContractSizes(t *testing.T) { Slabs: []object.SlabSlice{ { Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: 1, - Shards: newTestShards(hks[i], fcids[i], types.Hash256{byte(i)}), + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, + Shards: newTestShards(hks[i], fcids[i], types.Hash256{byte(i)}), }, }, }, @@ -3275,10 +3275,10 @@ func TestObjectsBySlabKey(t *testing.T) { // create a slab. slab := object.Slab{ - Health: 1.0, - Key: object.GenerateEncryptionKey(), - MinShards: 1, - Shards: newTestShards(hk1, fcid1, types.Hash256{1}), + Health: 1.0, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, + Shards: newTestShards(hk1, fcid1, types.Hash256{1}), } // Add 3 objects that all reference the slab. @@ -3300,7 +3300,7 @@ func TestObjectsBySlabKey(t *testing.T) { } // Fetch the objects by slab. - objs, err := ss.ObjectsBySlabKey(context.Background(), api.DefaultBucketName, slab.Key) + objs, err := ss.ObjectsBySlabKey(context.Background(), api.DefaultBucketName, slab.EncryptionKey) if err != nil { t.Fatal(err) } @@ -3515,11 +3515,11 @@ func TestBucketObjects(t *testing.T) { // See if we can fetch the object by slab. if obj, err := ss.Object(context.Background(), b1, "/bar"); err != nil { t.Fatal(err) - } else if objects, err := ss.ObjectsBySlabKey(context.Background(), b1, obj.Slabs[0].Key); err != nil { + } else if objects, err := ss.ObjectsBySlabKey(context.Background(), b1, obj.Slabs[0].EncryptionKey); err != nil { t.Fatal(err) } else if len(objects) != 1 { t.Fatal("expected 1 object", len(objects)) - } else if objects, err := ss.ObjectsBySlabKey(context.Background(), b2, obj.Slabs[0].Key); err != nil { + } else if objects, err := ss.ObjectsBySlabKey(context.Background(), b2, obj.Slabs[0].EncryptionKey); err != nil { t.Fatal(err) } else if len(objects) != 0 { t.Fatal("expected 0 objects", len(objects)) @@ -3776,8 +3776,8 @@ func TestDeleteHostSector(t *testing.T) { // create a healthy slab with one sector that is uploaded to all contracts. root := types.Hash256{1, 2, 3} ss.InsertSlab(object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: 1, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, Shards: []object.Sector{ { Contracts: map[types.PublicKey][]types.FileContractID{ @@ -3943,9 +3943,9 @@ func TestUpdateSlabSanityChecks(t *testing.T) { shards = append(shards, newTestShard(hks[i], contracts[i].ID, types.Hash256{byte(i + 1)})) } slab := object.Slab{ - Key: object.GenerateEncryptionKey(), - Shards: shards, - Health: 1, + EncryptionKey: object.GenerateEncryptionKey(), + Shards: shards, + Health: 1, } // set slab. @@ -3958,7 +3958,7 @@ func TestUpdateSlabSanityChecks(t *testing.T) { } // verify slab. - rSlab, err := ss.Slab(context.Background(), slab.Key) + rSlab, err := ss.Slab(context.Background(), slab.EncryptionKey) if err != nil { t.Fatal(err) } else if !reflect.DeepEqual(slab, rSlab) { @@ -3967,8 +3967,8 @@ func TestUpdateSlabSanityChecks(t *testing.T) { // change the length to fail the update. if err := ss.UpdateSlab(context.Background(), object.Slab{ - Key: slab.Key, - Shards: shards[:len(shards)-1], + EncryptionKey: slab.EncryptionKey, + Shards: shards[:len(shards)-1], }, testContractSet); !errors.Is(err, isql.ErrInvalidNumberOfShards) { t.Fatal(err) } @@ -3980,8 +3980,8 @@ func TestUpdateSlabSanityChecks(t *testing.T) { reversedShards[i], reversedShards[j] = reversedShards[j], reversedShards[i] } reversedSlab := object.Slab{ - Key: slab.Key, - Shards: reversedShards, + EncryptionKey: slab.EncryptionKey, + Shards: reversedShards, } if err := ss.UpdateSlab(context.Background(), reversedSlab, testContractSet); !errors.Is(err, isql.ErrShardRootChanged) { t.Fatal(err) @@ -4035,7 +4035,7 @@ func TestSlabHealthInvalidation(t *testing.T) { _, err = ss.addTestObject("o1", object.Object{ Key: object.GenerateEncryptionKey(), Slabs: []object.SlabSlice{{Slab: object.Slab{ - Key: s1, + EncryptionKey: s1, Shards: []object.Sector{ newTestShard(hks[0], fcids[0], types.Hash256{0}), newTestShard(hks[1], fcids[1], types.Hash256{1}), @@ -4051,7 +4051,7 @@ func TestSlabHealthInvalidation(t *testing.T) { err = ss.UpdateObject(context.Background(), api.DefaultBucketName, "o2", testContractSet, testETag, testMimeType, testMetadata, object.Object{ Key: object.GenerateEncryptionKey(), Slabs: []object.SlabSlice{{Slab: object.Slab{ - Key: s2, + EncryptionKey: s2, Shards: []object.Sector{ newTestShard(hks[2], fcids[2], types.Hash256{2}), newTestShard(hks[3], fcids[3], types.Hash256{3}), @@ -4181,8 +4181,8 @@ func TestRefreshHealth(t *testing.T) { if added, err := ss.addTestObject(o1, object.Object{ Key: object.GenerateEncryptionKey(), Slabs: []object.SlabSlice{{Slab: object.Slab{ - MinShards: 2, - Key: object.GenerateEncryptionKey(), + MinShards: 2, + EncryptionKey: object.GenerateEncryptionKey(), Shards: []object.Sector{ newTestShard(hks[0], fcids[0], types.Hash256{0}), newTestShard(hks[1], fcids[1], types.Hash256{1}), @@ -4200,8 +4200,8 @@ func TestRefreshHealth(t *testing.T) { if added, err := ss.addTestObject(o2, object.Object{ Key: object.GenerateEncryptionKey(), Slabs: []object.SlabSlice{{Slab: object.Slab{ - MinShards: 2, - Key: object.GenerateEncryptionKey(), + MinShards: 2, + EncryptionKey: object.GenerateEncryptionKey(), Shards: []object.Sector{ newTestShard(hks[4], fcids[4], types.Hash256{4}), newTestShard(hks[5], fcids[5], types.Hash256{5}), @@ -4409,8 +4409,8 @@ func TestUpdateObjectReuseSlab(t *testing.T) { Offset: 0, Length: uint32(minShards) * rhpv2.SectorSize, Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: uint8(minShards), + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: uint8(minShards), }, }) } @@ -4561,7 +4561,7 @@ func TestUpdateObjectReuseSlab(t *testing.T) { t.Fatal("invalid minShards", slab.MinShards) } else if slab.TotalShards != uint8(totalShards) { t.Fatal("invalid totalShards", slab.TotalShards) - } else if slab.Key.String() != obj.Slabs[i].Key.String() { + } else if slab.Key.String() != obj.Slabs[i].EncryptionKey.String() { t.Fatal("wrong key") } @@ -4591,8 +4591,8 @@ func TestUpdateObjectReuseSlab(t *testing.T) { Offset: 0, Length: uint32(minShards) * rhpv2.SectorSize, Slab: object.Slab{ - Key: object.GenerateEncryptionKey(), - MinShards: uint8(minShards), + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: uint8(minShards), }, }) // 30 shards each @@ -4664,7 +4664,7 @@ func TestUpdateObjectReuseSlab(t *testing.T) { t.Fatal("invalid minShards", slab2.MinShards) } else if slab2.TotalShards != uint8(totalShards) { t.Fatal("invalid totalShards", slab2.TotalShards) - } else if slab2.Key.String() != obj2.Slabs[0].Key.String() { + } else if slab2.Key.String() != obj2.Slabs[0].EncryptionKey.String() { t.Fatal("wrong key") } @@ -4766,20 +4766,20 @@ func TestUpdateObjectParallel(t *testing.T) { Slabs: []object.SlabSlice{ { Slab: object.Slab{ - Health: 1.0, - Key: object.GenerateEncryptionKey(), - MinShards: 1, - Shards: newTestShards(hk1, fcid1, frand.Entropy256()), + Health: 1.0, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, + Shards: newTestShards(hk1, fcid1, frand.Entropy256()), }, Offset: 10, Length: 100, }, { Slab: object.Slab{ - Health: 1.0, - Key: object.GenerateEncryptionKey(), - MinShards: 2, - Shards: newTestShards(hk2, fcid2, frand.Entropy256()), + Health: 1.0, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 2, + Shards: newTestShards(hk2, fcid2, frand.Entropy256()), }, Offset: 20, Length: 200, diff --git a/stores/sql/main.go b/stores/sql/main.go index 9a94d6c47..94c0ec932 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -1992,7 +1992,7 @@ func Settings(ctx context.Context, tx sql.Tx) ([]string, error) { func Slab(ctx context.Context, tx sql.Tx, key object.EncryptionKey) (object.Slab, error) { // fetch slab var slabID int64 - slab := object.Slab{Key: key} + slab := object.Slab{EncryptionKey: key} err := tx.QueryRow(ctx, ` SELECT id, health, min_shards FROM slabs sla @@ -2579,7 +2579,7 @@ func Object(ctx context.Context, tx Tx, bucket, key string) (api.Object, error) var hk types.PublicKey if err := rows.Scan(&bufferedSlab, // whether the slab is buffered &objectIndex, &ss.Offset, &ss.Length, // slice info - &ss.Health, (*EncryptionKey)(&ss.Key), &ss.MinShards, // slab info + &ss.Health, (*EncryptionKey)(&ss.EncryptionKey), &ss.MinShards, // slab info &slabIndex, (*Hash256)(§or.Root), (*PublicKey)(§or.LatestHost), // sector info (*PublicKey)(&fcid), // contract info (*PublicKey)(&hk), // host info diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index 3da866d5b..a883b771f 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -1083,7 +1083,7 @@ func (tx *MainDatabaseTx) UpdateSlab(ctx context.Context, s object.Slab, contrac health_valid_until = ?, health = ? WHERE `+"`key`"+` = ? - `, contractSet, time.Now().Unix(), 1, ssql.EncryptionKey(s.Key)) + `, contractSet, time.Now().Unix(), 1, ssql.EncryptionKey(s.EncryptionKey)) if err != nil { return err } else if n, err := res.RowsAffected(); err != nil { @@ -1094,7 +1094,7 @@ func (tx *MainDatabaseTx) UpdateSlab(ctx context.Context, s object.Slab, contrac // fetch slab id and total shards var slabID, totalShards int64 - err = tx.QueryRow(ctx, "SELECT id, total_shards FROM slabs WHERE `key` = ?", ssql.EncryptionKey(s.Key)). + err = tx.QueryRow(ctx, "SELECT id, total_shards FROM slabs WHERE `key` = ?", ssql.EncryptionKey(s.EncryptionKey)). Scan(&slabID, &totalShards) if err != nil { return err @@ -1263,7 +1263,7 @@ func (tx *MainDatabaseTx) insertSlabs(ctx context.Context, objID, partID *int64, res, err := insertSlabStmt.Exec(ctx, time.Now(), contractSetID, - ssql.EncryptionKey(slices[i].Key), + ssql.EncryptionKey(slices[i].EncryptionKey), slices[i].MinShards, uint8(len(slices[i].Shards)), ) diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index 18565e41b..d2679eb29 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -1096,7 +1096,7 @@ func (tx *MainDatabaseTx) UpdateSlab(ctx context.Context, s object.Slab, contrac health = ? WHERE key = ? RETURNING id, total_shards - `, contractSet, time.Now().Unix(), 1, ssql.EncryptionKey(s.Key)). + `, contractSet, time.Now().Unix(), 1, ssql.EncryptionKey(s.EncryptionKey)). Scan(&slabID, &totalShards) if errors.Is(err, dsql.ErrNoRows) { return api.ErrSlabNotFound @@ -1263,12 +1263,12 @@ func (tx *MainDatabaseTx) insertSlabs(ctx context.Context, objID, partID *int64, err = insertSlabStmt.QueryRow(ctx, time.Now(), contractSetID, - ssql.EncryptionKey(slices[i].Key), + ssql.EncryptionKey(slices[i].EncryptionKey), slices[i].MinShards, uint8(len(slices[i].Shards)), ).Scan(&slabIDs[i]) if errors.Is(err, dsql.ErrNoRows) { - if err := querySlabIDStmt.QueryRow(ctx, ssql.EncryptionKey(slices[i].Key)).Scan(&slabIDs[i]); err != nil { + if err := querySlabIDStmt.QueryRow(ctx, ssql.EncryptionKey(slices[i].EncryptionKey)).Scan(&slabIDs[i]); err != nil { return fmt.Errorf("failed to fetch slab id: %w", err) } } else if err != nil { diff --git a/worker/download.go b/worker/download.go index e1c54771d..cedcd7a82 100644 --- a/worker/download.go +++ b/worker/download.go @@ -173,7 +173,7 @@ func (mgr *downloadManager) DownloadObject(ctx context.Context, w io.Writer, o o if !slabs[i].PartialSlab { continue } - data, slab, err := mgr.fetchPartialSlab(ctx, slabs[i].SlabSlice.Key, slabs[i].SlabSlice.Offset, slabs[i].SlabSlice.Length) + data, slab, err := mgr.fetchPartialSlab(ctx, slabs[i].SlabSlice.EncryptionKey, slabs[i].SlabSlice.Offset, slabs[i].SlabSlice.Length) if err != nil { return fmt.Errorf("failed to fetch partial slab data: %w", err) } diff --git a/worker/mocks_test.go b/worker/mocks_test.go index 20657940f..682f8178e 100644 --- a/worker/mocks_test.go +++ b/worker/mocks_test.go @@ -480,7 +480,7 @@ func (os *objectStoreMock) Slab(ctx context.Context, key object.EncryptionKey) ( os.forEachObject(func(bucket, objKey string, o object.Object) { for _, s := range o.Slabs { - if s.Slab.Key.String() == key.String() { + if s.Slab.EncryptionKey.String() == key.String() { slab = s.Slab return } @@ -496,7 +496,7 @@ func (os *objectStoreMock) UpdateSlab(ctx context.Context, s object.Slab, contra os.forEachObject(func(bucket, objKey string, o object.Object) { for i, slab := range o.Slabs { - if slab.Key.String() != s.Key.String() { + if slab.EncryptionKey.String() != s.EncryptionKey.String() { continue } // update slab @@ -566,7 +566,7 @@ func (os *objectStoreMock) MarkPackedSlabsUploaded(ctx context.Context, slabs [] slabKeyToSlab := make(map[string]*object.Slab) os.forEachObject(func(bucket, objKey string, o object.Object) { for i, slab := range o.Slabs { - slabKeyToSlab[slab.Slab.Key.String()] = &os.objects[bucket][objKey].Slabs[i].Slab + slabKeyToSlab[slab.Slab.EncryptionKey.String()] = &os.objects[bucket][objKey].Slabs[i].Slab } }) diff --git a/worker/upload_utils.go b/worker/upload_utils.go index 306e1774f..6dfc9b729 100644 --- a/worker/upload_utils.go +++ b/worker/upload_utils.go @@ -10,9 +10,9 @@ import ( func encryptPartialSlab(data []byte, key object.EncryptionKey, minShards, totalShards uint8) [][]byte { slab := object.Slab{ - Key: key, - MinShards: minShards, - Shards: make([]object.Sector, totalShards), + EncryptionKey: key, + MinShards: minShards, + Shards: make([]object.Sector, totalShards), } encodedShards := make([][]byte, totalShards) slab.Encode(data, encodedShards) From bcbeda8b2f5090f61ca85e6d5bd14fb9543113bd Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 10 Sep 2024 15:20:18 +0200 Subject: [PATCH 083/708] bus: fill in Relevant field of Event response --- bus/routes.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/bus/routes.go b/bus/routes.go index c1c5d9d70..170c84ab6 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -288,6 +288,15 @@ func (b *Bus) walletEventsHandler(jc jape.Context) { if jc.Check("couldn't load events", err) != nil { return } + addr := b.w.Address() + for i := range events { + // NOTE: add the wallet's address to every event. Theoretically, + // this information should be persisted next to the event but + // using a SingleAddress the address should always be set because + // only relevant events are persisted and because the wallet only + // has one address. + events[i].Relevant = []types.Address{addr} + } jc.Encode(events) } From 525a29860e77194cdd1c8dd5e9261ddfa37499ec Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 10 Sep 2024 15:25:42 +0200 Subject: [PATCH 084/708] e2e: extend TestWalletEvents --- bus/routes.go | 4 ++-- internal/test/e2e/cluster_test.go | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/bus/routes.go b/bus/routes.go index 170c84ab6..778034bb7 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -288,14 +288,14 @@ func (b *Bus) walletEventsHandler(jc jape.Context) { if jc.Check("couldn't load events", err) != nil { return } - addr := b.w.Address() + relevant := []types.Address{b.w.Address()} for i := range events { // NOTE: add the wallet's address to every event. Theoretically, // this information should be persisted next to the event but // using a SingleAddress the address should always be set because // only relevant events are persisted and because the wallet only // has one address. - events[i].Relevant = []types.Address{addr} + events[i].Relevant = relevant } jc.Encode(events) } diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index d41edffac..331b905fa 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -1572,6 +1572,15 @@ func TestWalletEvents(t *testing.T) { if len(txns) != 5 { t.Fatalf("expected exactly 5 events, got %v", len(txns)) } + + // Events should have 'Relevant' field set. + resp, err := b.Wallet(context.Background()) + tt.OK(err) + for _, txn := range txns { + if len(txn.Relevant) != 1 || txn.Relevant[0] != resp.Address { + t.Fatal("invalid 'Relevant' field in wallet event", txn.Relevant, resp.Address) + } + } } func TestUploadPacking(t *testing.T) { From 002a78eabe83b75071b0eac1a7e395022fac0e35 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 10 Sep 2024 16:41:21 +0200 Subject: [PATCH 085/708] stores: use metadata for insert/updating contracts --- api/contract.go | 29 +- api/host.go | 4 + bus/bus.go | 50 +- bus/client/contracts.go | 22 +- bus/routes.go | 98 +-- internal/bus/chainsubscriber.go | 4 +- internal/test/e2e/cluster_test.go | 30 +- stores/chain_test.go | 7 +- stores/hostdb_test.go | 23 +- stores/metadata.go | 74 ++- stores/metadata_test.go | 556 +++--------------- stores/sql/chain.go | 2 +- stores/sql/consts.go | 6 + stores/sql/database.go | 38 +- stores/sql/main.go | 202 +++---- stores/sql/mysql/chain.go | 8 +- stores/sql/mysql/main.go | 37 +- .../migration_00018_archived_contracts.sql | 106 +--- stores/sql/mysql/migrations/main/schema.sql | 9 +- stores/sql/rows.go | 7 +- stores/sql/sqlite/chain.go | 8 +- stores/sql/sqlite/main.go | 17 +- .../migration_00018_archived_contracts.sql | 13 +- stores/sql/sqlite/migrations/main/schema.sql | 3 +- stores/sql/types.go | 28 + stores/sql_test.go | 18 +- 26 files changed, 503 insertions(+), 896 deletions(-) diff --git a/api/contract.go b/api/contract.go index 080d56ea2..5606b1b35 100644 --- a/api/contract.go +++ b/api/contract.go @@ -51,26 +51,31 @@ type ( // ContractMetadata contains all metadata for a contract. ContractMetadata struct { ID types.FileContractID `json:"id"` - HostIP string `json:"hostIP"` HostKey types.PublicKey `json:"hostKey"` - ContractPrice types.Currency `json:"contractPrice"` - InitialRenterFunds types.Currency `json:"initialRenterFunds"` - - ArchivalReason string `json:"archivalReason,omitempty"` - ContractSets []string `json:"contractSets,omitempty"` ProofHeight uint64 `json:"proofHeight"` RenewedFrom types.FileContractID `json:"renewedFrom"` - RenewedTo types.FileContractID `json:"renewedTo,omitempty"` RevisionHeight uint64 `json:"revisionHeight"` RevisionNumber uint64 `json:"revisionNumber"` - SiamuxAddr string `json:"siamuxAddr,omitempty"` Size uint64 `json:"size"` - Spending ContractSpending `json:"spending"` StartHeight uint64 `json:"startHeight"` State string `json:"state"` WindowStart uint64 `json:"windowStart"` WindowEnd uint64 `json:"windowEnd"` + + // costs & spending + ContractPrice types.Currency `json:"contractPrice"` + InitialRenterFunds types.Currency `json:"initialRenterFunds"` + Spending ContractSpending `json:"spending"` + + // following fields are decorated + HostIP string `json:"hostIP"` + ContractSets []string `json:"contractSets,omitempty"` + SiamuxAddr string `json:"siamuxAddr,omitempty"` + + // following fields are only set on archived contracts + ArchivalReason string `json:"archivalReason,omitempty"` + RenewedTo types.FileContractID `json:"renewedTo,omitempty"` } // ContractPrunableData wraps a contract's size information with its id. @@ -114,7 +119,7 @@ type ( // ContractAddRequest is the request type for the /contract/:id endpoint. ContractAddRequest struct { - Contract rhpv2.ContractRevision `json:"contract"` + Revision rhpv2.ContractRevision `json:"revision"` ContractPrice types.Currency `json:"contractPrice"` InitialRenterFunds types.Currency `json:"initialRenterFunds"` StartHeight uint64 `json:"startHeight"` @@ -199,8 +204,8 @@ type ( } ContractsOpts struct { - ContractSet string `json:"contractset"` - IncludeArchived bool `json:"includeArchived"` + ContractSet string `json:"contractset"` + FilterMode string `json:"filterMode"` } ) diff --git a/api/host.go b/api/host.go index 0a6b506ff..fda7cc581 100644 --- a/api/host.go +++ b/api/host.go @@ -13,6 +13,10 @@ import ( ) const ( + ContractFilterModeAll = "all" + ContractFilterModeActive = "active" + ContractFilterModeArchived = "archived" + HostFilterModeAll = "all" HostFilterModeAllowed = "allowed" HostFilterModeBlocked = "blocked" diff --git a/bus/bus.go b/bus/bus.go index 1665947e2..420862d9e 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -210,8 +210,7 @@ type ( // A MetadataStore stores information about contracts and objects. MetadataStore interface { - AddContract(ctx context.Context, c rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) - AddRenewedContract(ctx context.Context, c rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (api.ContractMetadata, error) + AddContract(ctx context.Context, c api.ContractMetadata) error AncestorContracts(ctx context.Context, fcid types.FileContractID, minStartHeight uint64) ([]api.ContractMetadata, error) ArchiveContract(ctx context.Context, id types.FileContractID, reason string) error ArchiveContracts(ctx context.Context, toArchive map[types.FileContractID]string) error @@ -221,6 +220,7 @@ type ( ContractSets(ctx context.Context) ([]string, error) RecordContractSpending(ctx context.Context, records []api.ContractSpendingRecord) error RemoveContractSet(ctx context.Context, name string) error + RenewContract(ctx context.Context, c api.ContractMetadata) error RenewedContract(ctx context.Context, renewedFrom types.FileContractID) (api.ContractMetadata, error) UpdateContractSet(ctx context.Context, set string, toAdd, toRemove []types.FileContractID) error @@ -429,7 +429,6 @@ func (b *Bus) Handler() http.Handler { "POST /contract/:id/keepalive": b.contractKeepaliveHandlerPOST, "POST /contract/:id/prune": b.contractPruneHandlerPOST, "POST /contract/:id/renew": b.contractIDRenewHandlerPOST, - "POST /contract/:id/renewed": b.contractIDRenewedHandlerPOST, "POST /contract/:id/release": b.contractReleaseHandlerPOST, "GET /contract/:id/roots": b.contractIDRootsHandlerGET, "GET /contract/:id/size": b.contractSizeHandlerGET, @@ -533,7 +532,20 @@ func (b *Bus) Shutdown(ctx context.Context) error { } func (b *Bus) addContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { - c, err := b.ms.AddContract(ctx, rev, contractPrice, initialRenterFunds, startHeight, state) + if err := b.ms.AddContract(ctx, api.ContractMetadata{ + ID: rev.ID(), + HostKey: rev.HostKey(), + StartHeight: startHeight, + State: state, + WindowStart: rev.Revision.WindowStart, + WindowEnd: rev.Revision.WindowEnd, + ContractPrice: contractPrice, + InitialRenterFunds: initialRenterFunds, + }); err != nil { + return api.ContractMetadata{}, err + } + + added, err := b.ms.Contract(ctx, rev.ID()) if err != nil { return api.ContractMetadata{}, err } @@ -542,29 +554,45 @@ func (b *Bus) addContract(ctx context.Context, rev rhpv2.ContractRevision, contr Module: api.ModuleContract, Event: api.EventAdd, Payload: api.EventContractAdd{ - Added: c, + Added: added, Timestamp: time.Now().UTC(), }, }) - return c, nil + + return added, err } -func (b *Bus) addRenewedContract(ctx context.Context, renewedFrom types.FileContractID, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { - r, err := b.ms.AddRenewedContract(ctx, rev, contractPrice, initialRenterFunds, startHeight, renewedFrom, state) +func (b *Bus) addRenewal(ctx context.Context, renewedFrom types.FileContractID, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { + if err := b.ms.RenewContract(ctx, api.ContractMetadata{ + ID: rev.ID(), + HostKey: rev.HostKey(), + RenewedFrom: renewedFrom, + StartHeight: startHeight, + State: state, + WindowStart: rev.Revision.WindowStart, + WindowEnd: rev.Revision.WindowEnd, + ContractPrice: contractPrice, + InitialRenterFunds: initialRenterFunds, + }); err != nil { + return api.ContractMetadata{}, fmt.Errorf("couldn't add renewal: %w", err) + } + + renewal, err := b.ms.Contract(ctx, rev.ID()) if err != nil { return api.ContractMetadata{}, err } - b.sectors.HandleRenewal(r.ID, r.RenewedFrom) + b.sectors.HandleRenewal(renewal.ID, renewal.RenewedFrom) b.broadcastAction(webhooks.Event{ Module: api.ModuleContract, Event: api.EventRenew, Payload: api.EventContractRenew{ - Renewal: r, + Renewal: renewal, Timestamp: time.Now().UTC(), }, }) - return r, nil + + return renewal, err } func (b *Bus) broadcastContract(ctx context.Context, fcid types.FileContractID) (txnID types.TransactionID, _ error) { diff --git a/bus/client/contracts.go b/bus/client/contracts.go index 9ecdc7baa..5789eb035 100644 --- a/bus/client/contracts.go +++ b/bus/client/contracts.go @@ -12,9 +12,9 @@ import ( ) // AddContract adds the provided contract to the metadata store. -func (c *Client) AddContract(ctx context.Context, contract rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (added api.ContractMetadata, err error) { - err = c.c.WithContext(ctx).POST(fmt.Sprintf("/contract/%s", contract.ID()), api.ContractAddRequest{ - Contract: contract, +func (c *Client) AddContract(ctx context.Context, revision rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (added api.ContractMetadata, err error) { + err = c.c.WithContext(ctx).POST(fmt.Sprintf("/contract/%s", revision.ID()), api.ContractAddRequest{ + Revision: revision, ContractPrice: contractPrice, InitialRenterFunds: initialRenterFunds, StartHeight: startHeight, @@ -23,19 +23,6 @@ func (c *Client) AddContract(ctx context.Context, contract rhpv2.ContractRevisio return } -// AddRenewedContract adds the provided contract to the metadata store. -func (c *Client) AddRenewedContract(ctx context.Context, contract rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (renewed api.ContractMetadata, err error) { - err = c.c.WithContext(ctx).POST(fmt.Sprintf("/contract/%s/renewed", contract.ID()), api.ContractRenewedRequest{ - Contract: contract, - ContractPrice: contractPrice, - InitialRenterFunds: initialRenterFunds, - RenewedFrom: renewedFrom, - StartHeight: startHeight, - State: state, - }, &renewed) - return -} - // AncestorContracts returns any ancestors of a given contract. func (c *Client) AncestorContracts(ctx context.Context, contractID types.FileContractID, minStartHeight uint64) (contracts []api.ContractMetadata, err error) { values := url.Values{} @@ -103,6 +90,9 @@ func (c *Client) Contracts(ctx context.Context, opts api.ContractsOpts) (contrac if opts.ContractSet != "" { values.Set("contractset", opts.ContractSet) } + if opts.FilterMode != "" { + values.Set("filtermode", opts.FilterMode) + } err = c.c.WithContext(ctx).GET("/contracts?"+values.Encode(), &contracts) return } diff --git a/bus/routes.go b/bus/routes.go index b74323858..0f4efe725 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -753,8 +753,23 @@ func (b *Bus) contractsHandlerGET(jc jape.Context) { if jc.DecodeForm("contractset", &cs) != nil { return } + filterMode := api.ContractFilterModeActive + if jc.DecodeForm("filtermode", &filterMode) != nil { + return + } + + switch filterMode { + case api.ContractFilterModeAll: + case api.ContractFilterModeActive: + case api.ContractFilterModeArchived: + default: + jc.Error(fmt.Errorf("invalid filter mode: %v", filterMode), http.StatusBadRequest) + return + } + contracts, err := b.ms.Contracts(jc.Request.Context(), api.ContractsOpts{ ContractSet: cs, + FilterMode: filterMode, }) if jc.Check("couldn't load contracts", err) == nil { jc.Encode(contracts) @@ -1074,23 +1089,36 @@ func (b *Bus) contractIDHandlerGET(jc jape.Context) { } func (b *Bus) contractIDHandlerPOST(jc jape.Context) { + // decode parameters var id types.FileContractID - var req api.ContractAddRequest - if jc.DecodeParam("id", &id) != nil || jc.Decode(&req) != nil { + if jc.DecodeParam("id", &id) != nil { return - } else if req.Contract.ID() != id { - http.Error(jc.ResponseWriter, "contract ID mismatch", http.StatusBadRequest) + } + var req api.ContractAddRequest + if jc.Decode(&req) != nil { return - } else if req.InitialRenterFunds.IsZero() { + } + + // validate the request + if req.InitialRenterFunds.IsZero() { http.Error(jc.ResponseWriter, "InitialRenterFunds can not be zero", http.StatusBadRequest) return + } else if req.Revision.ID() != id { + http.Error(jc.ResponseWriter, "Contract ID missmatch", http.StatusBadRequest) + return + } else if req.Revision.ID() == (types.FileContractID{}) { + http.Error(jc.ResponseWriter, "Contract ID is required", http.StatusBadRequest) + return + } else if req.Revision.HostKey() == (types.PublicKey{}) { + http.Error(jc.ResponseWriter, "HostKey is required", http.StatusBadRequest) + return } - a, err := b.addContract(jc.Request.Context(), req.Contract, req.ContractPrice, req.InitialRenterFunds, req.StartHeight, req.State) - if jc.Check("couldn't store contract", err) != nil { - return + // add the contract + metadata, err := b.addContract(jc.Request.Context(), req.Revision, req.ContractPrice, req.InitialRenterFunds, req.StartHeight, req.State) + if jc.Check("couldn't add contract", err) == nil { + jc.Encode(metadata) } - jc.Encode(a) } func (b *Bus) contractIDRenewHandlerPOST(jc jape.Context) { @@ -1150,11 +1178,11 @@ func (b *Bus) contractIDRenewHandlerPOST(jc jape.Context) { // send V2 transaction if we're passed the V2 hardfork allow height var newRevision rhpv2.ContractRevision - var contractPrice, fundAmount types.Currency + var contractPrice, initialRenterFunds types.Currency if b.isPassedV2AllowHeight() { panic("not implemented") } else { - newRevision, contractPrice, fundAmount, err = b.renewContract(ctx, cs, gp, c, h.Settings, rrr.RenterFunds, rrr.MinNewCollateral, rrr.MaxFundAmount, rrr.EndHeight, rrr.ExpectedNewStorage) + newRevision, contractPrice, initialRenterFunds, err = b.renewContract(ctx, cs, gp, c, h.Settings, rrr.RenterFunds, rrr.MinNewCollateral, rrr.MaxFundAmount, rrr.EndHeight, rrr.ExpectedNewStorage) if errors.Is(err, api.ErrMaxFundAmountExceeded) { jc.Error(err, http.StatusBadRequest) return @@ -1163,39 +1191,11 @@ func (b *Bus) contractIDRenewHandlerPOST(jc jape.Context) { } } - // add renewal contract to store - metadata, err := b.addRenewedContract(ctx, fcid, newRevision, contractPrice, fundAmount, cs.Index.Height, api.ContractStatePending) - if jc.Check("couldn't store contract", err) != nil { - return - } - - // send the response - jc.Encode(metadata) -} - -func (b *Bus) contractIDRenewedHandlerPOST(jc jape.Context) { - var id types.FileContractID - var req api.ContractRenewedRequest - if jc.DecodeParam("id", &id) != nil || jc.Decode(&req) != nil { - return + // add the renewal + metadata, err := b.addRenewal(ctx, fcid, newRevision, contractPrice, initialRenterFunds, cs.Index.Height, api.ContractStatePending) + if jc.Check("couldn't add renewal", err) == nil { + jc.Encode(metadata) } - if req.Contract.ID() != id { - http.Error(jc.ResponseWriter, "contract ID mismatch", http.StatusBadRequest) - return - } - if req.InitialRenterFunds.IsZero() { - http.Error(jc.ResponseWriter, "InitialRenterFunds can not be zero", http.StatusBadRequest) - return - } - if req.State == "" { - req.State = api.ContractStatePending - } - r, err := b.addRenewedContract(jc.Request.Context(), req.RenewedFrom, req.Contract, req.ContractPrice, req.InitialRenterFunds, req.StartHeight, req.State) - if jc.Check("couldn't store contract", err) != nil { - return - } - - jc.Encode(r) } func (b *Bus) contractIDRootsHandlerGET(jc jape.Context) { @@ -2441,11 +2441,11 @@ func (b *Bus) contractsFormHandler(jc jape.Context) { } // send V2 transaction if we're passed the V2 hardfork allow height - var contract rhpv2.ContractRevision + var rev rhpv2.ContractRevision if b.isPassedV2AllowHeight() { panic("not implemented") } else { - contract, err = b.formContract( + rev, err = b.formContract( ctx, settings, rfr.RenterAddress, @@ -2460,16 +2460,16 @@ func (b *Bus) contractsFormHandler(jc jape.Context) { } } - // store the contract + // add the contract metadata, err := b.addContract( ctx, - contract, - contract.Revision.MissedHostPayout().Sub(rfr.HostCollateral), + rev, + rev.Revision.MissedHostPayout().Sub(rfr.HostCollateral), rfr.RenterFunds, b.cm.Tip().Height, api.ContractStatePending, ) - if jc.Check("couldn't store contract", err) != nil { + if jc.Check("couldn't add contract", err) != nil { return } diff --git a/internal/bus/chainsubscriber.go b/internal/bus/chainsubscriber.go index e1200c24b..c279a1188 100644 --- a/internal/bus/chainsubscriber.go +++ b/internal/bus/chainsubscriber.go @@ -407,7 +407,7 @@ func (s *chainSubscriber) updateContract(tx sql.ChainUpdateTx, index types.Chain // reverted renewal: 'complete' -> 'active' if curr != nil { - if err := tx.UpdateContract(fcid, index.Height, prev.revisionNumber, prev.fileSize); err != nil { + if err := tx.UpdateContractRevision(fcid, index.Height, prev.revisionNumber, prev.fileSize); err != nil { return fmt.Errorf("failed to revert contract: %w", err) } if state == api.ContractStateComplete { @@ -440,7 +440,7 @@ func (s *chainSubscriber) updateContract(tx sql.ChainUpdateTx, index types.Chain } // handle apply - if err := tx.UpdateContract(fcid, index.Height, curr.revisionNumber, curr.fileSize); err != nil { + if err := tx.UpdateContractRevision(fcid, index.Height, curr.revisionNumber, curr.fileSize); err != nil { return fmt.Errorf("failed to update contract %v: %w", fcid, err) } diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index c1b7faa49..5a424aa3c 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -1517,26 +1517,16 @@ func TestUnconfirmedContractArchival(t *testing.T) { c := contracts[0] // add a contract to the bus - _, err = cluster.bs.AddContract(context.Background(), rhpv2.ContractRevision{ - Revision: types.FileContractRevision{ - ParentID: types.FileContractID{1}, - UnlockConditions: types.UnlockConditions{ - PublicKeys: []types.UnlockKey{ - c.HostKey.UnlockKey(), - c.HostKey.UnlockKey(), - }, - }, - FileContract: types.FileContract{ - Filesize: 0, - FileMerkleRoot: types.Hash256{}, - WindowStart: math.MaxUint32, - WindowEnd: math.MaxUint32 + 10, - Payout: types.ZeroCurrency, - UnlockHash: types.Hash256{}, - RevisionNumber: 0, - }, - }, - }, types.NewCurrency64(1), types.Siacoins(1), cs.BlockHeight, api.ContractStatePending) + err = cluster.bs.AddContract(context.Background(), api.ContractMetadata{ + ID: types.FileContractID{1}, + HostKey: types.PublicKey{1}, + StartHeight: cs.BlockHeight, + State: api.ContractStatePending, + WindowStart: math.MaxUint32, + WindowEnd: math.MaxUint32 + 10, + ContractPrice: types.NewCurrency64(1), + InitialRenterFunds: types.NewCurrency64(2), + }) tt.OK(err) // should have 2 contracts now diff --git a/stores/chain_test.go b/stores/chain_test.go index e0bcc8480..ebf2c87c6 100644 --- a/stores/chain_test.go +++ b/stores/chain_test.go @@ -64,7 +64,7 @@ func TestProcessChainUpdate(t *testing.T) { // assert update contract is successful if err := ss.ProcessChainUpdate(context.Background(), func(tx sql.ChainUpdateTx) error { - if err := tx.UpdateContract(fcid, 1, 2, 3); err != nil { + if err := tx.UpdateContractRevision(fcid, 1, 2, 3); err != nil { return err } else if err := tx.UpdateContractState(fcid, api.ContractStateActive); err != nil { return err @@ -95,7 +95,7 @@ func TestProcessChainUpdate(t *testing.T) { // assert we only update revision height if the rev number doesn't increase if err := ss.ProcessChainUpdate(context.Background(), func(tx sql.ChainUpdateTx) error { - return tx.UpdateContract(fcid, 2, 2, 4) + return tx.UpdateContractRevision(fcid, 2, 2, 4) }); err != nil { t.Fatal("unexpected error", err) } @@ -122,8 +122,7 @@ func TestProcessChainUpdate(t *testing.T) { } // renew the contract - _, err = ss.addTestRenewedContract(types.FileContractID{2}, fcid, hks[0], 1) - if err != nil { + if err = ss.renewTestContract(hks[0], fcid, types.FileContractID{2}, 1); err != nil { t.Fatal(err) } diff --git a/stores/hostdb_test.go b/stores/hostdb_test.go index ba3b2c1ac..d59640d26 100644 --- a/stores/hostdb_test.go +++ b/stores/hostdb_test.go @@ -106,17 +106,6 @@ func TestSQLHostDB(t *testing.T) { } } -func (s *SQLStore) addTestScan(hk types.PublicKey, t time.Time, err error, settings rhpv2.HostSettings) error { - return s.RecordHostScans(context.Background(), []api.HostScan{ - { - HostKey: hk, - Settings: settings, - Success: err == nil, - Timestamp: t, - }, - }) -} - // TestSQLHosts tests the Hosts method of the SQLHostDB type. func TestSQLHosts(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) @@ -1187,6 +1176,18 @@ func (s *testSQLStore) addTestHosts(n int) (keys []types.PublicKey, err error) { return } +// addTestScan adds a host scan to the database. +func (s *SQLStore) addTestScan(hk types.PublicKey, t time.Time, err error, settings rhpv2.HostSettings) error { + return s.RecordHostScans(context.Background(), []api.HostScan{ + { + HostKey: hk, + Settings: settings, + Success: err == nil, + Timestamp: t, + }, + }) +} + // announceHost adds a host announcement to the database. func (s *testSQLStore) announceHost(hk types.PublicKey, na string) error { return s.db.Transaction(context.Background(), func(tx sql.DatabaseTx) error { diff --git a/stores/metadata.go b/stores/metadata.go index 2507f30ec..2832d9d1e 100644 --- a/stores/metadata.go +++ b/stores/metadata.go @@ -8,7 +8,6 @@ import ( "strings" "time" - rhpv2 "go.sia.tech/core/rhp/v2" "go.sia.tech/core/types" "go.sia.tech/renterd/alerts" "go.sia.tech/renterd/api" @@ -109,43 +108,6 @@ func (s *SQLStore) SlabBuffers(ctx context.Context) ([]api.SlabBuffer, error) { return buffers, nil } -func (s *SQLStore) AddContract(ctx context.Context, c rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (_ api.ContractMetadata, err error) { - var contract api.ContractMetadata - err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - contract, err = tx.InsertContract(ctx, c, contractPrice, initialRenterFunds, startHeight, state) - return err - }) - if err != nil { - return api.ContractMetadata{}, fmt.Errorf("failed to add contract: %w", err) - } - - return contract, nil -} - -func (s *SQLStore) Contracts(ctx context.Context, opts api.ContractsOpts) ([]api.ContractMetadata, error) { - var contracts []api.ContractMetadata - err := s.db.Transaction(ctx, func(tx sql.DatabaseTx) (err error) { - contracts, err = tx.Contracts(ctx, opts) - return - }) - return contracts, err -} - -// AddRenewedContract adds a new contract which was created as the result of a renewal to the store. -// The old contract specified as 'renewedFrom' will be deleted from the active -// contracts and moved to the archive. Both new and old contract will be linked -// to each other through the RenewedFrom and RenewedTo fields respectively. -func (s *SQLStore) AddRenewedContract(ctx context.Context, c rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (renewed api.ContractMetadata, err error) { - err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - renewed, err = tx.RenewContract(ctx, c, contractPrice, initialRenterFunds, startHeight, renewedFrom, state) - return err - }) - if err != nil { - return api.ContractMetadata{}, fmt.Errorf("failed to add renewed contract: %w", err) - } - return -} - func (s *SQLStore) AncestorContracts(ctx context.Context, id types.FileContractID, startHeight uint64) (ancestors []api.ContractMetadata, err error) { err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { ancestors, err = tx.AncestorContracts(ctx, id, startHeight) @@ -205,6 +167,15 @@ func (s *SQLStore) Contract(ctx context.Context, id types.FileContractID) (cm ap return } +func (s *SQLStore) Contracts(ctx context.Context, opts api.ContractsOpts) ([]api.ContractMetadata, error) { + var contracts []api.ContractMetadata + err := s.db.Transaction(ctx, func(tx sql.DatabaseTx) (err error) { + contracts, err = tx.Contracts(ctx, opts) + return + }) + return contracts, err +} + func (s *SQLStore) ContractRoots(ctx context.Context, id types.FileContractID) (roots []types.Hash256, err error) { err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { roots, err = tx.ContractRoots(ctx, id) @@ -237,6 +208,12 @@ func (s *SQLStore) ContractSize(ctx context.Context, id types.FileContractID) (c return cs, err } +func (s *SQLStore) AddContract(ctx context.Context, c api.ContractMetadata) error { + return s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { + return tx.InsertContract(ctx, c) + }) +} + func (s *SQLStore) UpdateContractSet(ctx context.Context, name string, toAdd, toRemove []types.FileContractID) error { toAddMap := make(map[types.FileContractID]struct{}) for _, fcid := range toAdd { @@ -579,6 +556,27 @@ func (s *SQLStore) RemoveObjects(ctx context.Context, bucket, prefix string) err return nil } +func (s *SQLStore) RenewContract(ctx context.Context, c api.ContractMetadata) error { + return s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { + // fetch renewed contract + renewed, err := tx.Contract(ctx, c.RenewedFrom) + if err != nil { + return err + } + + // insert renewal by updating the renewed contract + err = tx.UpdateContract(ctx, c.RenewedFrom, c) + if err != nil { + return err + } + + // reinsert renewed contract + renewed.ArchivalReason = api.ContractArchivalReasonRenewed + renewed.RenewedTo = c.ID + return tx.InsertContract(ctx, renewed) + }) +} + func (s *SQLStore) Slab(ctx context.Context, key object.EncryptionKey) (slab object.Slab, err error) { err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { slab, err = tx.Slab(ctx, key) diff --git a/stores/metadata_test.go b/stores/metadata_test.go index 042569d7f..3c7e93cfc 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -102,18 +102,6 @@ func (s *SQLStore) waitForPruneLoop(ts time.Time) error { }) } -func randomMultisigUC() types.UnlockConditions { - uc := types.UnlockConditions{ - PublicKeys: make([]types.UnlockKey, 2), - SignaturesRequired: 1, - } - for i := range uc.PublicKeys { - uc.PublicKeys[i].Algorithm = types.SpecifierEd25519 - uc.PublicKeys[i].Key = frand.Bytes(32) - } - return uc -} - func updateAllObjectsHealth(db *isql.DB) error { _, err := db.Exec(context.Background(), ` UPDATE objects @@ -368,147 +356,94 @@ func TestSQLContractStore(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() - // Create a host for the contract. + // add test host hk := types.GeneratePrivateKey().PublicKey() err := ss.addTestHost(hk) if err != nil { t.Fatal(err) } - // Add an announcement. + // announce a custom address if err := ss.announceHost(hk, "address"); err != nil { t.Fatal(err) } - // Create random unlock conditions for the host. - uc := randomMultisigUC() - uc.PublicKeys[1].Key = hk[:] - uc.Timelock = 192837 - - // Create a contract and set all fields. - fcid := types.FileContractID{1, 1, 1, 1, 1} - c := rhpv2.ContractRevision{ - Revision: types.FileContractRevision{ - ParentID: fcid, - UnlockConditions: uc, - FileContract: types.FileContract{ - RevisionNumber: 200, - Filesize: 4096, - FileMerkleRoot: types.Hash256{222}, - WindowStart: 400, - WindowEnd: 500, - ValidProofOutputs: []types.SiacoinOutput{ - { - Value: types.NewCurrency64(121), - Address: types.Address{2, 1, 2}, - }, - }, - MissedProofOutputs: []types.SiacoinOutput{ - { - Value: types.NewCurrency64(323), - Address: types.Address{2, 3, 2}, - }, - }, - UnlockHash: types.Hash256{6, 6, 6}, - }, - }, - Signatures: [2]types.TransactionSignature{ - { - ParentID: types.Hash256(fcid), - PublicKeyIndex: 0, - Timelock: 100000, - CoveredFields: types.CoveredFields{WholeTransaction: true}, - Signature: []byte("signature1"), - }, - { - ParentID: types.Hash256(fcid), - PublicKeyIndex: 1, - Timelock: 200000, - CoveredFields: types.CoveredFields{WholeTransaction: true}, - Signature: []byte("signature2"), - }, - }, - } - - // Look it up. Should fail. - ctx := context.Background() - _, err = ss.Contract(ctx, c.ID()) - if !errors.Is(err, api.ErrContractNotFound) { - t.Fatal(err) - } - contracts, err := ss.Contracts(ctx, api.ContractsOpts{}) - if err != nil { + // assert api.ErrContractNotFound is returned + fcid := types.FileContractID{1} + if _, err := ss.Contract(context.Background(), fcid); !errors.Is(err, api.ErrContractNotFound) { t.Fatal(err) } - if len(contracts) != 0 { - t.Fatalf("should have 0 contracts but got %v", len(contracts)) - } - // Insert it. - contractPrice := types.NewCurrency64(1) - initialRenterFunds := types.NewCurrency64(456) - startHeight := uint64(100) - returned, err := ss.AddContract(ctx, c, contractPrice, initialRenterFunds, startHeight, api.ContractStatePending) - if err != nil { - t.Fatal(err) - } - expected := api.ContractMetadata{ - ID: fcid, - HostIP: "address", - HostKey: hk, - StartHeight: 100, - State: api.ContractStatePending, - WindowStart: 400, - WindowEnd: 500, - RenewedFrom: types.FileContractID{}, - Spending: api.ContractSpending{}, + // add the contract + c := api.ContractMetadata{ + ID: fcid, + HostKey: hk, + + ProofHeight: 1, + RenewedFrom: types.FileContractID{1}, + RevisionHeight: 2, + RevisionNumber: 3, + Size: 4, + StartHeight: 5, + State: api.ContractStateActive, + WindowStart: 6, + WindowEnd: 7, + ContractPrice: types.NewCurrency64(1), - InitialRenterFunds: initialRenterFunds, - Size: c.Revision.Filesize, + InitialRenterFunds: types.NewCurrency64(2), + + Spending: api.ContractSpending{ + Deletions: types.NewCurrency64(3), + FundAccount: types.NewCurrency64(4), + SectorRoots: types.NewCurrency64(5), + Uploads: types.NewCurrency64(6), + }, } - if !reflect.DeepEqual(returned, expected) { - t.Fatal("contract mismatch", cmp.Diff(returned, expected)) + if err := ss.AddContract(context.Background(), c); err != nil { + t.Fatal(err) } - // Look it up again. - fetched, err := ss.Contract(ctx, c.ID()) + // decorate the host IP + c.HostIP = "address" + + // fetch the contract + inserted, err := ss.Contract(context.Background(), fcid) if err != nil { t.Fatal(err) + } else if !reflect.DeepEqual(inserted, c) { + t.Fatal("contract mismatch", cmp.Diff(inserted, c)) } - if !reflect.DeepEqual(fetched, expected) { - t.Fatal("contract mismatch") - } - contracts, err = ss.Contracts(ctx, api.ContractsOpts{}) - if err != nil { + + // fetch all contracts + if contracts, err := ss.Contracts(context.Background(), api.ContractsOpts{}); err != nil { t.Fatal(err) - } - if len(contracts) != 1 { + } else if len(contracts) != 1 { t.Fatalf("should have 1 contracts but got %v", len(contracts)) - } - if !reflect.DeepEqual(contracts[0], expected) { + } else if !reflect.DeepEqual(contracts[0], c) { t.Fatal("contract mismatch") } - // Add a contract set with our contract and assert we can fetch it using the set name - if err := ss.UpdateContractSet(ctx, "foo", []types.FileContractID{contracts[0].ID}, nil); err != nil { + // add a contract set, assert we can fetch it and it holds our contract + if err := ss.UpdateContractSet(context.Background(), "foo", []types.FileContractID{fcid}, nil); err != nil { t.Fatal(err) - } - if contracts, err := ss.Contracts(ctx, api.ContractsOpts{ContractSet: "foo"}); err != nil { + } else if contracts, err := ss.Contracts(context.Background(), api.ContractsOpts{ContractSet: "foo"}); err != nil { t.Fatal(err) } else if len(contracts) != 1 { t.Fatalf("should have 1 contracts but got %v", len(contracts)) } - if _, err := ss.Contracts(ctx, api.ContractsOpts{ContractSet: "bar"}); !errors.Is(err, api.ErrContractSetNotFound) { + + // assert api.ErrContractSetNotFound is returned + if _, err := ss.Contracts(context.Background(), api.ContractsOpts{ContractSet: "bar"}); !errors.Is(err, api.ErrContractSetNotFound) { t.Fatal(err) } - // Add another contract set. - if err := ss.UpdateContractSet(ctx, "foo2", []types.FileContractID{contracts[0].ID}, nil); err != nil { + // add another contract set + if err := ss.UpdateContractSet(context.Background(), "foo2", []types.FileContractID{fcid}, nil); err != nil { t.Fatal(err) } - // Fetch contract sets. - sets, err := ss.ContractSets(ctx) + // fetch all sets + sets, err := ss.ContractSets(context.Background()) if err != nil { t.Fatal(err) } @@ -519,17 +454,17 @@ func TestSQLContractStore(t *testing.T) { t.Fatal("wrong sets returned", sets) } - // Archive the contract. - if err := ss.ArchiveContract(ctx, c.ID(), api.ContractArchivalReasonRemoved); err != nil { + // archive the contract + if err := ss.ArchiveContract(context.Background(), fcid, api.ContractArchivalReasonRemoved); err != nil { t.Fatal(err) } - // Look it up. Should fail. - _, err = ss.Contract(ctx, c.ID()) + // assert archived contracts are not returned + _, err = ss.Contract(context.Background(), fcid) if !errors.Is(err, api.ErrContractNotFound) { t.Fatal(err) } - contracts, err = ss.Contracts(ctx, api.ContractsOpts{}) + contracts, err := ss.Contracts(context.Background(), api.ContractsOpts{}) if err != nil { t.Fatal(err) } @@ -537,7 +472,7 @@ func TestSQLContractStore(t *testing.T) { t.Fatalf("should have 0 contracts but got %v", len(contracts)) } - // Make sure the sectors were removed + // assert sectors got removed if count := ss.Count("contract_sectors"); count != 0 { t.Fatalf("expected %v objects in contract_sectors but got %v", 0, count) } @@ -590,226 +525,14 @@ func TestContractRoots(t *testing.T) { } } -// TestRenewContract is a test for AddRenewedContract. -func TestRenewedContract(t *testing.T) { - ss := newTestSQLStore(t, defaultTestSQLStoreConfig) - defer ss.Close() - - // create a host - hk := types.PublicKey{1} - err := ss.addTestHost(hk) - if err != nil { - t.Fatal(err) - } - - // announce the host so we can assert the net address - if err := ss.announceHost(hk, "address"); err != nil { - t.Fatal(err) - } - - // create a contract - fcid := types.FileContractID{1} - c := newTestContract(fcid, hk) - added, err := ss.AddContract(context.Background(), c, types.NewCurrency64(1), types.NewCurrency64(2), 1, api.ContractStatePending) - if err != nil { - t.Fatal(err) - } - - // add it to a set - err = ss.UpdateContractSet(context.Background(), testContractSet, []types.FileContractID{fcid}, nil) - if err != nil { - t.Fatal(err) - } - - // assert the contract is returned - if added.RenewedFrom != (types.FileContractID{}) { - t.Fatal("unexpected") - } - - // add an object - obj := newTestObject(1) - obj.Slabs[0].MinShards = 1 - obj.Slabs[0].Shards[0].Contracts = map[types.PublicKey][]types.FileContractID{hk: {fcid}} - obj.Slabs[0].Shards[0].LatestHost = hk - obj.Slabs[0].Shards = obj.Slabs[0].Shards[:1] - if _, err := ss.addTestObject(t.Name(), obj); err != nil { - t.Fatal(err) - } - - // record contract spending - s := api.ContractSpending{ - Uploads: types.Siacoins(1), - FundAccount: types.Siacoins(2), - Deletions: types.Siacoins(3), - SectorRoots: types.Siacoins(4), - } - if err := ss.RecordContractSpending(context.Background(), []api.ContractSpendingRecord{ - {ContractID: fcid, RevisionNumber: 1, Size: rhpv2.SectorSize, ContractSpending: s}, - }); err != nil { - t.Fatal(err) - } - - // no slabs should be unhealthy. - if err := ss.RefreshHealth(context.Background()); err != nil { - t.Fatal(err) - } - slabs, err := ss.UnhealthySlabs(context.Background(), 0.99, testContractSet, -1) - if err != nil { - t.Fatal(err) - } else if len(slabs) > 0 { - t.Fatal("shouldn't return any slabs", len(slabs), slabs[0].Health) - } - - // assert there's no renewal - _, err = ss.RenewedContract(context.Background(), fcid) - if !errors.Is(err, api.ErrContractNotFound) { - t.Fatal("unexpected", err) - } - - // renew it - fcidR := types.FileContractID{2} - rev := rhpv2.ContractRevision{ - Revision: types.FileContractRevision{ - ParentID: fcidR, - UnlockConditions: c.Revision.UnlockConditions, - FileContract: types.FileContract{ - Filesize: 2 * rhpv2.SectorSize, - MissedProofOutputs: []types.SiacoinOutput{}, - ValidProofOutputs: []types.SiacoinOutput{}, - }, - }, - } - if _, err := ss.AddRenewedContract(context.Background(), rev, types.NewCurrency64(3), types.NewCurrency64(4), 2, fcid, api.ContractStatePending); err != nil { - t.Fatal(err) - } - - // assert there's a renewal - renewed, err := ss.RenewedContract(context.Background(), fcid) - if err != nil { - t.Fatal("unexpected", err) - } else if renewed.ID != fcidR { - t.Fatal("unexpected") - } - - // make sure the contract set was updated. - contracts, err := ss.Contracts(context.Background(), api.ContractsOpts{ContractSet: testContractSet}) - if err != nil { - t.Fatal(err) - } else if len(contracts) != 1 { - t.Fatal("unexpected number of contracts", len(contracts)) - } else if contracts[0].ID != fcidR { - t.Fatal("unexpected contract ID", contracts[0].ID) - } - - // slab should still be in good shape. - if err := ss.RefreshHealth(context.Background()); err != nil { - t.Fatal(err) - } - slabs, err = ss.UnhealthySlabs(context.Background(), 0.99, "test", 10) - if err != nil { - t.Fatal(err) - } - if len(slabs) > 0 { - t.Fatal("shouldn't return any slabs", len(slabs)) - } - - // renewed contract should not be returned - _, err = ss.Contract(context.Background(), fcid) - if !errors.Is(err, api.ErrContractNotFound) { - t.Fatal(err) - } - - // renewal should be returned - renewal, err := ss.Contract(context.Background(), fcidR) - if err != nil { - t.Fatal(err) - } - expected := api.ContractMetadata{ - ID: fcidR, - HostIP: "address", - HostKey: hk, - StartHeight: 2, - RenewedFrom: fcid, - Size: 2 * rhpv2.SectorSize, - State: api.ContractStatePending, - Spending: api.ContractSpending{ - Uploads: types.ZeroCurrency, - FundAccount: types.ZeroCurrency, - }, - ContractPrice: types.NewCurrency64(3), - ContractSets: []string{"test"}, - InitialRenterFunds: types.NewCurrency64(4), - } - if !reflect.DeepEqual(renewal, expected) { - t.Fatal("mismatch") - } - - // ancestor should be returned - ancestors, err := ss.AncestorContracts(context.Background(), fcidR, 0) - if err != nil { - t.Fatal(err) - } else if len(ancestors) != 1 { - t.Fatalf("expected 1 ancestor but got %v", len(ancestors)) - } - - expectedContract := api.ContractMetadata{ - ID: fcid, - HostIP: "address", - HostKey: c.HostKey(), - RenewedTo: fcidR, - Spending: s, - - ArchivalReason: api.ContractArchivalReasonRenewed, - ContractPrice: types.NewCurrency64(1), - ProofHeight: 0, - RenewedFrom: types.FileContractID{}, - RevisionHeight: 0, - RevisionNumber: 1, - Size: rhpv2.SectorSize, - StartHeight: 1, - State: api.ContractStatePending, - InitialRenterFunds: types.NewCurrency64(2), - WindowStart: 400, - WindowEnd: 500, - } - if !reflect.DeepEqual(ancestors[0], expectedContract) { - t.Fatal("mismatch", cmp.Diff(ancestors[0], expectedContract)) - } - - // renew it again - fcidRR := types.FileContractID{3} - rev = rhpv2.ContractRevision{ - Revision: types.FileContractRevision{ - ParentID: fcidRR, - UnlockConditions: c.Revision.UnlockConditions, - FileContract: types.FileContract{ - MissedProofOutputs: []types.SiacoinOutput{}, - ValidProofOutputs: []types.SiacoinOutput{}, - }, - }, - } - - // assert the renewed contract is returned - renewedContract, err := ss.AddRenewedContract(context.Background(), rev, types.NewCurrency64(5), types.NewCurrency64(6), 3, fcidR, api.ContractStatePending) - if err != nil { - t.Fatal(err) - } else if renewedContract.RenewedFrom != fcidR { - t.Fatal("unexpected") - } - - // ancestor should be returned - ancestors, err = ss.AncestorContracts(context.Background(), fcidRR, 0) - if err != nil { - t.Fatal(err) - } else if len(ancestors) != 2 { - t.Fatalf("expected 2 ancestor but got %v", len(ancestors)) - } -} - // TestAncestorsContracts verifies that AncestorContracts returns the right // ancestors in the correct order. func TestAncestorsContracts(t *testing.T) { - ss := newTestSQLStore(t, defaultTestSQLStoreConfig) + cfg := defaultTestSQLStoreConfig + cfg.persistent = true + cfg.dir = "/Users/peterjan/testing3" + os.RemoveAll(cfg.dir) + ss := newTestSQLStore(t, cfg) defer ss.Close() hk := types.PublicKey{1, 2, 3} @@ -824,7 +547,7 @@ func TestAncestorsContracts(t *testing.T) { t.Fatal(err) } for i := 1; i < len(fcids); i++ { - if _, err := ss.addTestRenewedContract(fcids[i], fcids[i-1], hk, uint64(i)); err != nil { + if err := ss.renewTestContract(hk, fcids[i-1], fcids[i], uint64(i)); err != nil { t.Fatal(err) } } @@ -847,19 +570,13 @@ func TestAncestorsContracts(t *testing.T) { if j := len(fcids) - 1 - i; j >= 0 { renewedTo = fcids[j] } - expected := api.ContractMetadata{ - ArchivalReason: api.ContractArchivalReasonRenewed, - ID: fcids[len(fcids)-2-i], - HostKey: hk, - RenewedFrom: renewedFrom, - RenewedTo: renewedTo, - RevisionNumber: 200, - StartHeight: uint64(len(fcids) - 2 - i), - Size: 4096, - State: api.ContractStatePending, - WindowStart: 400, - WindowEnd: 500, - } + + expected := newTestContract(fcids[len(fcids)-2-i], hk) + expected.RenewedFrom = renewedFrom + expected.RenewedTo = renewedTo + expected.ArchivalReason = api.ContractArchivalReasonRenewed + expected.StartHeight = uint64(len(fcids) - 2 - i) + expected.Spending = api.ContractSpending{} if !reflect.DeepEqual(contracts[i], expected) { t.Log(cmp.Diff(contracts[i], expected)) t.Fatal("wrong contract", i, contracts[i]) @@ -937,51 +654,13 @@ func TestArchiveContracts(t *testing.T) { } } -func newTestContract(fcid types.FileContractID, hk types.PublicKey) rhpv2.ContractRevision { - uc := randomMultisigUC() - uc.PublicKeys[1].Key = hk[:] - uc.Timelock = 192837 - return rhpv2.ContractRevision{ - Revision: types.FileContractRevision{ - ParentID: fcid, - UnlockConditions: uc, - FileContract: types.FileContract{ - RevisionNumber: 200, - Filesize: 4096, - FileMerkleRoot: types.Hash256{222}, - WindowStart: 400, - WindowEnd: 500, - ValidProofOutputs: []types.SiacoinOutput{ - { - Value: types.NewCurrency64(121), - Address: types.Address{2, 1, 2}, - }, - }, - MissedProofOutputs: []types.SiacoinOutput{ - { - Value: types.NewCurrency64(323), - Address: types.Address{2, 3, 2}, - }, - }, - UnlockHash: types.Hash256{6, 6, 6}, - }, - }, - Signatures: [2]types.TransactionSignature{ - { - ParentID: types.Hash256(fcid), - PublicKeyIndex: 0, - Timelock: 100000, - CoveredFields: types.CoveredFields{WholeTransaction: true}, - Signature: []byte("signature1"), - }, - { - ParentID: types.Hash256(fcid), - PublicKeyIndex: 1, - Timelock: 200000, - CoveredFields: types.CoveredFields{WholeTransaction: true}, - Signature: []byte("signature2"), - }, - }, +func newTestContract(fcid types.FileContractID, hk types.PublicKey) api.ContractMetadata { + return api.ContractMetadata{ + ID: fcid, + HostKey: hk, + State: api.ContractStatePending, + ContractPrice: types.NewCurrency64(1), + InitialRenterFunds: types.NewCurrency64(2), } } @@ -990,25 +669,21 @@ func TestSQLMetadataStore(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() - // Create 2 hosts + // add 2 hosts hks, err := ss.addTestHosts(2) if err != nil { t.Fatal(err) } hk1, hk2 := hks[0], hks[1] - // Create 2 contracts - fcids, contracts, err := ss.addTestContracts(hks) + // add 2 contracts + fcids, _, err := ss.addTestContracts(hks) if err != nil { t.Fatal(err) } fcid1, fcid2 := fcids[0], fcids[1] - // Extract start height and total cost - startHeight1, initialRenterFunds1 := contracts[0].StartHeight, contracts[0].InitialRenterFunds - startHeight2, initialRenterFunds2 := contracts[1].StartHeight, contracts[1].InitialRenterFunds - - // Create an object with 2 slabs pointing to 2 different sectors. + // create an object with 2 slabs pointing to 2 different sectors. obj1 := object.Object{ Key: object.GenerateEncryptionKey(), Slabs: []object.SlabSlice{ @@ -1035,14 +710,14 @@ func TestSQLMetadataStore(t *testing.T) { }, } - // Store it. + // add it ctx := context.Background() objID := "key1" if _, err := ss.addTestObject(objID, obj1); err != nil { t.Fatal(err) } - // Fetch it using get and verify every field. + // fetch it obj, err := ss.Object(context.Background(), api.DefaultBucketName, objID) if err != nil { t.Fatal(err) @@ -1113,12 +788,12 @@ func TestSQLMetadataStore(t *testing.T) { t.Fatal("object mismatch", cmp.Diff(obj, expectedObj, cmp.AllowUnexported(object.EncryptionKey{}), cmp.Comparer(api.CompareTimeRFC3339))) } - // Try to store it again. Should work. + // try to add it again, should work if _, err := ss.addTestObject(objID, obj1); err != nil { t.Fatal(err) } - // Fetch it again and verify. + // fetch it again and verify obj, err = ss.Object(context.Background(), api.DefaultBucketName, objID) if err != nil { t.Fatal(err) @@ -1130,12 +805,12 @@ func TestSQLMetadataStore(t *testing.T) { } obj.ModTime = api.TimeRFC3339{} - // The expected object is the same. + // the expected object is the same if !reflect.DeepEqual(obj, expectedObj) { t.Fatal("object mismatch", cmp.Diff(obj, expectedObj, cmp.AllowUnexported(object.EncryptionKey{}), cmp.Comparer(api.CompareTimeRFC3339))) } - // Fetch it and verify again. + // fetch it and verify again fullObj, err := ss.Object(ctx, api.DefaultBucketName, objID) if err != nil { t.Fatal(err) @@ -1161,22 +836,10 @@ func TestSQLMetadataStore(t *testing.T) { expectedContract1 := api.ContractMetadata{ ID: fcid1, - HostIP: "", HostKey: hk1, - SiamuxAddr: "", - ProofHeight: 0, - RevisionHeight: 0, - RevisionNumber: 0, - Size: 4096, - StartHeight: startHeight1, State: api.ContractStatePending, - WindowStart: 400, - WindowEnd: 500, - ContractPrice: types.ZeroCurrency, - RenewedFrom: types.FileContractID{}, - Spending: api.ContractSpending{}, - InitialRenterFunds: initialRenterFunds1, - ContractSets: nil, + ContractPrice: types.NewCurrency64(1), + InitialRenterFunds: types.NewCurrency64(2), } expectedObjSlab2 := object.Slab{ @@ -1196,25 +859,13 @@ func TestSQLMetadataStore(t *testing.T) { expectedContract2 := api.ContractMetadata{ ID: fcid2, - HostIP: "", HostKey: hk2, - SiamuxAddr: "", - ProofHeight: 0, - RevisionHeight: 0, - RevisionNumber: 0, - Size: 4096, - StartHeight: startHeight2, State: api.ContractStatePending, - WindowStart: 400, - WindowEnd: 500, - ContractPrice: types.ZeroCurrency, - RenewedFrom: types.FileContractID{}, - Spending: api.ContractSpending{}, - InitialRenterFunds: initialRenterFunds2, - ContractSets: nil, + ContractPrice: types.NewCurrency64(1), + InitialRenterFunds: types.NewCurrency64(2), } - // Compare slabs. + // compare slabs slab1, err := ss.Slab(context.Background(), obj1Slab0Key) if err != nil { t.Fatal(err) @@ -1244,7 +895,7 @@ func TestSQLMetadataStore(t *testing.T) { t.Fatal("mismatch", cmp.Diff(contract2, expectedContract2)) } - // Remove the first slab of the object. + // remove the first slab of the object obj1.Slabs = obj1.Slabs[1:] fullObj, err = ss.addTestObject(objID, obj1) if err != nil { @@ -1253,7 +904,7 @@ func TestSQLMetadataStore(t *testing.T) { t.Fatal("object mismatch") } - // Sanity check the db at the end of the test. We expect: + // sanity check the db at the end of the test. We expect: // - 1 element in the object table since we only stored and overwrote a single object // - 1 element in the slabs table since we updated the object to only have 1 slab // - 1 element in the slices table for the same reason @@ -1284,8 +935,8 @@ func TestSQLMetadataStore(t *testing.T) { t.Fatal(err) } - // Delete the object. Due to the cascade this should delete everything - // but the sectors. + // delete the object, due to the cascade this should delete everything but + // the sectors if err := ss.RemoveObjectBlocking(ctx, api.DefaultBucketName, objID); err != nil { t.Fatal(err) } @@ -3517,18 +3168,7 @@ func TestMarkSlabUploadedAfterRenew(t *testing.T) { // renew the contract. fcidRenewed := types.FileContractID{2, 2, 2, 2, 2} - uc := randomMultisigUC() - rev := rhpv2.ContractRevision{ - Revision: types.FileContractRevision{ - ParentID: fcidRenewed, - UnlockConditions: uc, - FileContract: types.FileContract{ - MissedProofOutputs: []types.SiacoinOutput{}, - ValidProofOutputs: []types.SiacoinOutput{}, - }, - }, - } - _, err = ss.AddRenewedContract(context.Background(), rev, types.NewCurrency64(1), types.NewCurrency64(1), 100, fcid, api.ContractStatePending) + err = ss.renewTestContract(hk, fcid, fcidRenewed, 1) if err != nil { t.Fatal(err) } diff --git a/stores/sql/chain.go b/stores/sql/chain.go index 7247e23ee..bb0ed4ed7 100644 --- a/stores/sql/chain.go +++ b/stores/sql/chain.go @@ -44,7 +44,7 @@ func UpdateChainIndex(ctx context.Context, tx sql.Tx, index types.ChainIndex, l return nil } -func UpdateContract(ctx context.Context, tx sql.Tx, fcid types.FileContractID, revisionHeight, revisionNumber, size uint64, l *zap.SugaredLogger) error { +func UpdateContractRevision(ctx context.Context, tx sql.Tx, fcid types.FileContractID, revisionHeight, revisionNumber, size uint64, l *zap.SugaredLogger) error { // fetch current contract, in SQLite we could use a single query to // perform the conditional update, however we have to compare the // revision number which are stored as strings so we need to fetch the diff --git a/stores/sql/consts.go b/stores/sql/consts.go index 64558343d..2132dfee5 100644 --- a/stores/sql/consts.go +++ b/stores/sql/consts.go @@ -1,11 +1,16 @@ package sql import ( + "errors" "strings" "go.sia.tech/renterd/api" ) +var ( + ErrInvalidContractState = errors.New("invalid contract state") +) + type ContractState uint8 const ( @@ -47,6 +52,7 @@ func (s *ContractState) LoadString(state string) error { *s = contractStateFailed default: *s = contractStateInvalid + return ErrInvalidContractState } return nil } diff --git a/stores/sql/database.go b/stores/sql/database.go index 6c26879c7..c4b9fa4a1 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -5,7 +5,6 @@ import ( "io" "time" - rhpv2 "go.sia.tech/core/rhp/v2" "go.sia.tech/core/types" "go.sia.tech/coreutils/chain" "go.sia.tech/coreutils/syncer" @@ -21,9 +20,9 @@ type ( ChainUpdateTx interface { ContractState(fcid types.FileContractID) (api.ContractState, error) UpdateChainIndex(index types.ChainIndex) error - UpdateContract(fcid types.FileContractID, revisionHeight, revisionNumber, size uint64) error - UpdateContractState(fcid types.FileContractID, state api.ContractState) error UpdateContractProofHeight(fcid types.FileContractID, proofHeight uint64) error + UpdateContractRevision(fcid types.FileContractID, revisionHeight, revisionNumber, size uint64) error + UpdateContractState(fcid types.FileContractID, state api.ContractState) error UpdateFailedContracts(blockHeight uint64) error UpdateHost(hk types.PublicKey, ha chain.HostAnnouncement, bh uint64, blockID types.BlockID, ts time.Time) error @@ -158,33 +157,33 @@ type ( // webhooks.ErrWebhookNotFound is returned. DeleteWebhook(ctx context.Context, wh webhooks.Webhook) error + // HostAllowlist returns the list of public keys of hosts on the + // allowlist. + HostAllowlist(ctx context.Context) ([]types.PublicKey, error) + + // HostBlocklist returns the list of host addresses on the blocklist. + HostBlocklist(ctx context.Context) ([]string, error) + // InsertBufferedSlab inserts a buffered slab into the database. This // includes the creation of a buffered slab as well as the corresponding // regular slab it is linked to. It returns the ID of the buffered slab // that was created. InsertBufferedSlab(ctx context.Context, fileName string, contractSetID int64, ec object.EncryptionKey, minShards, totalShards uint8) (int64, error) - // InsertContract inserts a new contract into the database. - InsertContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) + // InsertContract creates a new contract with the given metadata. + InsertContract(ctx context.Context, c api.ContractMetadata) error // InsertMultipartUpload creates a new multipart upload and returns a // unique upload ID. InsertMultipartUpload(ctx context.Context, bucket, path string, ec object.EncryptionKey, mimeType string, metadata api.ObjectUserMetadata) (string, error) + // InsertObject inserts a new object into the database. + InsertObject(ctx context.Context, bucket, key, contractSet string, dirID int64, o object.Object, mimeType, eTag string, md api.ObjectUserMetadata) error + // InvalidateSlabHealthByFCID invalidates the health of all slabs that // are associated with any of the provided contracts. InvalidateSlabHealthByFCID(ctx context.Context, fcids []types.FileContractID, limit int64) (int64, error) - // HostAllowlist returns the list of public keys of hosts on the - // allowlist. - HostAllowlist(ctx context.Context) ([]types.PublicKey, error) - - // HostBlocklist returns the list of host addresses on the blocklist. - HostBlocklist(ctx context.Context) ([]string, error) - - // InsertObject inserts a new object into the database. - InsertObject(ctx context.Context, bucket, key, contractSet string, dirID int64, o object.Object, mimeType, eTag string, md api.ObjectUserMetadata) error - // HostsForScanning returns a list of hosts to scan which haven't been // scanned since at least maxLastScan. HostsForScanning(ctx context.Context, maxLastScan time.Time, offset, limit int) ([]api.HostAddress, error) @@ -294,12 +293,6 @@ type ( // returned. RenameObjects(ctx context.Context, bucket, prefixOld, prefixNew string, dirID int64, force bool) error - // RenewContract renews the contract in the database. That means the - // contract with the ID of 'renewedFrom' will be moved to the archived - // contracts and the new contract will overwrite the existing one, - // inheriting its sectors. - RenewContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (api.ContractMetadata, error) - // RenewedContract returns the metadata of the contract that was renewed // from the specified contract or ErrContractNotFound otherwise. RenewedContract(ctx context.Context, renewedFrom types.FileContractID) (api.ContractMetadata, error) @@ -357,6 +350,9 @@ type ( // one, fully overwriting the existing policy. UpdateBucketPolicy(ctx context.Context, bucket string, policy api.BucketPolicy) error + // UpdateContract sets the given metadata on the contract with given fcid. + UpdateContract(ctx context.Context, fcid types.FileContractID, c api.ContractMetadata) error + // UpdateHostAllowlistEntries updates the allowlist in the database UpdateHostAllowlistEntries(ctx context.Context, add, remove []types.PublicKey, clear bool) error diff --git a/stores/sql/main.go b/stores/sql/main.go index 3fd31c241..37ca0255e 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -28,7 +28,9 @@ import ( "lukechampine.com/frand" ) -var ErrNegativeOffset = errors.New("offset can not be negative") +var ( + ErrNegativeOffset = errors.New("offset can not be negative") +) // helper types type ( @@ -135,14 +137,14 @@ func AncestorContracts(ctx context.Context, tx sql.Tx, fcid types.FileContractID WHERE contracts.renewed_to = c.fcid ) SELECT - c.created_at, c.fcid, c.host_key, + c.created_at, c.fcid, c.host_id, c.host_key, c.archival_reason, c.proof_height, c.renewed_from, c.renewed_to, c.revision_height, c.revision_number, c.size, c.start_height, c.state, c.window_start, c.window_end, c.contract_price, c.initial_renter_funds, c.delete_spending, c.fund_account_spending, c.sector_roots_spending, c.upload_spending, "", COALESCE(h.net_address, ""), COALESCE(h.settings->>'$.siamuxport', "") FROM contracts AS c LEFT JOIN hosts h ON h.public_key = c.host_key - WHERE start_height >= ? AND archival_reason != '' + WHERE start_height >= ? AND archival_reason IS NOT NULL ORDER BY start_height DESC `, FileContractID(fcid), startHeight) if err != nil { @@ -162,6 +164,11 @@ func AncestorContracts(ctx context.Context, tx sql.Tx, fcid types.FileContractID } func ArchiveContract(ctx context.Context, tx sql.Tx, fcid types.FileContractID, reason string) error { + // validate reason + if reason == "" { + return fmt.Errorf("archival reason cannot be empty") + } + // archive contract res, err := tx.Exec(ctx, "UPDATE contracts SET archival_reason = ? WHERE fcid = ?", reason, FileContractID(fcid)) if err != nil { @@ -218,7 +225,7 @@ func Bucket(ctx context.Context, tx sql.Tx, bucket string) (api.Bucket, error) { } func Contract(ctx context.Context, tx sql.Tx, fcid types.FileContractID) (api.ContractMetadata, error) { - contracts, err := QueryContracts(ctx, tx, []string{"c.fcid = ?", "c.archival_reason = ''"}, []any{FileContractID(fcid)}) + contracts, err := QueryContracts(ctx, tx, []string{"c.fcid = ?", "c.archival_reason IS NULL"}, []any{FileContractID(fcid)}) if err != nil { return api.ContractMetadata{}, fmt.Errorf("failed to fetch contract: %w", err) } else if len(contracts) == 0 { @@ -264,9 +271,23 @@ func Contracts(ctx context.Context, tx sql.Tx, opts api.ContractsOpts) ([]api.Co whereExprs = append(whereExprs, "cs.id = ?") whereArgs = append(whereArgs, contractSetID) } - if !opts.IncludeArchived { - whereExprs = append(whereExprs, "c.archival_reason = ''") + + if opts.FilterMode != "" { + // validate filter mode + switch opts.FilterMode { + case api.ContractFilterModeActive: + whereExprs = append(whereExprs, "c.archival_reason IS NULL") + case api.ContractFilterModeArchived: + whereExprs = append(whereExprs, "c.archival_reason IS NOT NULL") + case api.ContractFilterModeAll: + default: + return nil, fmt.Errorf("invalid filter mode: %v", opts.FilterMode) + } + } else { + // default to active contracts + whereExprs = append(whereExprs, "c.archival_reason IS NULL") } + return QueryContracts(ctx, tx, whereExprs, whereArgs) } @@ -301,7 +322,7 @@ func ContractSets(ctx context.Context, tx sql.Tx) ([]string, error) { func ContractSize(ctx context.Context, tx sql.Tx, id types.FileContractID) (api.ContractSize, error) { var contractID, size uint64 - if err := tx.QueryRow(ctx, "SELECT id, size FROM contracts WHERE fcid = ? AND archival_reason = ''", FileContractID(id)). + if err := tx.QueryRow(ctx, "SELECT id, size FROM contracts WHERE fcid = ? AND archival_reason IS NULL", FileContractID(id)). Scan(&contractID, &size); errors.Is(err, dsql.ErrNoRows) { return api.ContractSize{}, api.ErrContractNotFound } else if err != nil { @@ -334,7 +355,7 @@ func ContractSizes(ctx context.Context, tx sql.Tx) (map[types.FileContractID]api rows, err := tx.Query(ctx, ` SELECT c.fcid, c.size, c.size FROM contracts c - WHERE archival_reason = '' AND NOT EXISTS ( + WHERE archival_reason IS NULL AND NOT EXISTS ( SELECT 1 FROM contract_sectors cs WHERE cs.db_contract_id = c.id @@ -345,7 +366,7 @@ func ContractSizes(ctx context.Context, tx sql.Tx) (map[types.FileContractID]api SELECT c.fcid, c.size, MAX(c.size) as contract_size, COUNT(*) * ? as sector_size FROM contracts c INNER JOIN contract_sectors cs ON cs.db_contract_id = c.id - WHERE archival_reason = '' + WHERE archival_reason IS NULL GROUP BY c.fcid ) i `, rhpv2.SectorSize) @@ -486,7 +507,7 @@ func DeleteHostSector(ctx context.Context, tx sql.Tx, hk types.PublicKey, root t FROM contracts c INNER JOIN contract_sectors cs ON cs.db_contract_id = c.id INNER JOIN sectors s ON s.id = cs.db_sector_id - WHERE s.root = ? AND c.host_key != ? AND c.archival_reason = '' + WHERE s.root = ? AND c.host_key != ? AND c.archival_reason IS NULL LIMIT 1 ) AS _ ), ?) @@ -711,43 +732,41 @@ func InsertBufferedSlab(ctx context.Context, tx sql.Tx, fileName string, contrac return bufferedSlabID, nil } -func InsertContract(ctx context.Context, tx sql.Tx, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { - var contractState ContractState - if err := contractState.LoadString(state); err != nil { - return api.ContractMetadata{}, fmt.Errorf("failed to load contract state: %w", err) +func InsertContract(ctx context.Context, tx sql.Tx, c api.ContractMetadata) error { + // validate metadata + var state ContractState + if err := state.LoadString(c.State); err != nil { + return err + } else if c.ID == (types.FileContractID{}) { + return errors.New("contract id is required") + } else if c.HostKey == (types.PublicKey{}) { + return errors.New("host key is required") } + var hostID int64 - if err := tx.QueryRow(ctx, "SELECT id FROM hosts WHERE public_key = ?", - PublicKey(rev.HostKey())).Scan(&hostID); err != nil { - return api.ContractMetadata{}, api.ErrHostNotFound + err := tx.QueryRow(ctx, `SELECT id FROM hosts WHERE public_key = ?`, PublicKey(c.HostKey)).Scan(&hostID) + if errors.Is(err, dsql.ErrNoRows) { + return api.ErrHostNotFound + } else if err != nil { + return err } - res, err := tx.Exec(ctx, ` + // insert contract + _, err = tx.Exec(ctx, ` INSERT INTO contracts ( - created_at, fcid, host_key, - proof_height, revision_height, revision_number, size, start_height, state, window_start, window_end, - contract_price, initial_renter_funds, - delete_spending, fund_account_spending, sector_roots_spending, upload_spending -) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, - time.Now(), FileContractID(rev.ID()), PublicKey(rev.HostKey()), - 0, 0, "0", rev.Revision.Filesize, startHeight, contractState, rev.Revision.WindowStart, rev.Revision.WindowEnd, - Currency(contractPrice), Currency(initialRenterFunds), - ZeroCurrency, ZeroCurrency, ZeroCurrency, ZeroCurrency) - if err != nil { - return api.ContractMetadata{}, fmt.Errorf("failed to insert contract: %w", err) - } - cid, err := res.LastInsertId() - if err != nil { - return api.ContractMetadata{}, fmt.Errorf("failed to fetch contract id: %w", err) +created_at, fcid, host_id, host_key, +archival_reason, proof_height, renewed_from, renewed_to, revision_height, revision_number, size, start_height, state, window_start, window_end, +contract_price, initial_renter_funds, +delete_spending, fund_account_spending, sector_roots_spending, upload_spending +) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, + time.Now(), FileContractID(c.ID), hostID, PublicKey(c.HostKey), + NullableString(c.ArchivalReason), c.ProofHeight, FileContractID(c.RenewedFrom), FileContractID(c.RenewedTo), c.RevisionHeight, c.RevisionNumber, c.Size, c.StartHeight, state, c.WindowStart, c.WindowEnd, + Currency(c.ContractPrice), Currency(c.InitialRenterFunds), + Currency(c.Spending.Deletions), Currency(c.Spending.FundAccount), Currency(c.Spending.SectorRoots), Currency(c.Spending.Uploads)) + if err != nil { + return fmt.Errorf("failed to insert contract: %w", err) } - - contracts, err := QueryContracts(ctx, tx, []string{"c.id = ?"}, []any{cid}) - if err != nil { - return api.ContractMetadata{}, fmt.Errorf("failed to fetch contract: %w", err) - } else if len(contracts) == 0 { - return api.ContractMetadata{}, api.ErrContractNotFound - } - return contracts[0], nil + return nil } func InsertMetadata(ctx context.Context, tx sql.Tx, objID, muID *int64, md api.ObjectUserMetadata) error { @@ -1634,7 +1653,7 @@ func ObjectsStats(ctx context.Context, tx sql.Tx, opts api.ObjectsStatsOpts) (ap } var totalUploaded uint64 - err = tx.QueryRow(ctx, "SELECT COALESCE(SUM(size), 0) FROM contracts WHERE archival_reason = ''"). + err = tx.QueryRow(ctx, "SELECT COALESCE(SUM(size), 0) FROM contracts WHERE archival_reason IS NULL"). Scan(&totalUploaded) if err != nil { return api.ObjectsStatsResponse{}, fmt.Errorf("failed to fetch contract stats: %w", err) @@ -1861,70 +1880,6 @@ WHERE h.recent_downtime >= ? AND h.recent_scan_failures >= ?`, DurationMS(maxDow return res.RowsAffected() } -func RenewContract(ctx context.Context, tx sql.Tx, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (api.ContractMetadata, error) { - var contractState ContractState - if err := contractState.LoadString(state); err != nil { - return api.ContractMetadata{}, fmt.Errorf("failed to load contract state: %w", err) - } - - // fetch existing contract - var r ContractRow - err := r.Scan(tx.QueryRow(ctx, ` -SELECT - c.created_at, c.fcid, c.host_key, - c.archival_reason, c.proof_height, c.renewed_from, c.renewed_to, c.revision_height, c.revision_number, c.size, c.start_height, c.state, c.window_start, c.window_end, - c.contract_price, c.initial_renter_funds, - c.delete_spending, c.fund_account_spending, c.sector_roots_spending, c.upload_spending, - "", "", "" -FROM contracts AS c -WHERE fcid = ?`, FileContractID(renewedFrom))) - if errors.Is(err, dsql.ErrNoRows) { - return api.ContractMetadata{}, contractNotFoundErr(renewedFrom) - } else if err != nil { - return api.ContractMetadata{}, fmt.Errorf("failed to fetch contract: %w", err) - } - - // overwrite existing contract - _, err = tx.Exec(ctx, ` -UPDATE contracts SET - created_at = ?, fcid = ?, - proof_height = ?, renewed_from = ?, revision_height = ?, revision_number = ?, size = ?, start_height = ?, state = ?, window_start = ?, window_end = ?, - contract_price = ?, initial_renter_funds = ?, - delete_spending = ?, fund_account_spending = ?, sector_roots_spending = ?, upload_spending = ? -WHERE fcid = ?`, - time.Now(), FileContractID(rev.ID()), - 0, FileContractID(renewedFrom), 0, fmt.Sprint(rev.Revision.RevisionNumber), rev.Revision.Filesize, startHeight, contractState, rev.Revision.WindowStart, rev.Revision.WindowEnd, - Currency(contractPrice), Currency(initialRenterFunds), - ZeroCurrency, ZeroCurrency, ZeroCurrency, ZeroCurrency, - FileContractID(renewedFrom), - ) - if err != nil { - return api.ContractMetadata{}, fmt.Errorf("failed to update contract: %w", err) - } - - // insert archived contract - res, err := tx.Exec(ctx, ` -INSERT INTO contracts ( - created_at, fcid, host_key, - archival_reason, proof_height, renewed_from, renewed_to, revision_height, revision_number, size, start_height, state, window_start, window_end, - contract_price, initial_renter_funds, - delete_spending, fund_account_spending, sector_roots_spending, upload_spending -) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, - r.CreatedAt, r.FCID, r.HostKey, - api.ContractArchivalReasonRenewed, r.ProofHeight, r.RenewedFrom, FileContractID(rev.ID()), r.RevisionHeight, r.RevisionNumber, r.Size, r.StartHeight, r.State, r.WindowStart, r.WindowEnd, - r.ContractPrice, r.InitialRenterFunds, - r.DeleteSpending, r.FundAccountSpending, r.SectorRootsSpending, r.UploadSpending) - if err != nil { - return api.ContractMetadata{}, fmt.Errorf("failed to insert archived contract: %w", err) - } else if n, err := res.RowsAffected(); err != nil { - return api.ContractMetadata{}, fmt.Errorf("failed to insert archived contract: %w", err) - } else if n != 1 { - return api.ContractMetadata{}, fmt.Errorf("failed to insert archived contract: no rows affected") - } - - return Contract(ctx, tx, rev.ID()) -} - func QueryContracts(ctx context.Context, tx sql.Tx, whereExprs []string, whereArgs []any) ([]api.ContractMetadata, error) { var whereExpr string if len(whereExprs) > 0 { @@ -1933,7 +1888,7 @@ func QueryContracts(ctx context.Context, tx sql.Tx, whereExprs []string, whereAr rows, err := tx.Query(ctx, fmt.Sprintf(` SELECT - c.created_at, c.fcid, c.host_key, + c.created_at, c.fcid, c.host_id, c.host_key, c.archival_reason, c.proof_height, c.renewed_from, c.renewed_to, c.revision_height, c.revision_number, c.size, c.start_height, c.state, c.window_start, c.window_end, c.contract_price, c.initial_renter_funds, c.delete_spending, c.fund_account_spending, c.sector_roots_spending, c.upload_spending, @@ -2104,7 +2059,7 @@ func SearchHosts(ctx context.Context, tx sql.Tx, autopilot, filterMode, usabilit offsetLimitStr := fmt.Sprintf("LIMIT %d OFFSET %d", limit, offset) // fetch stored data for each host - rows, err := tx.Query(ctx, "SELECT host_key, SUM(size) FROM contracts WHERE archival_reason = '' GROUP BY host_key") + rows, err := tx.Query(ctx, "SELECT host_key, SUM(size) FROM contracts WHERE archival_reason IS NULL GROUP BY host_key") if err != nil { return nil, fmt.Errorf("failed to fetch stored data: %w", err) } @@ -2421,6 +2376,37 @@ func UpdateBucketPolicy(ctx context.Context, tx sql.Tx, bucket string, bp api.Bu return nil } +func UpdateContract(ctx context.Context, tx sql.Tx, fcid types.FileContractID, c api.ContractMetadata) error { + // validate metadata + var state ContractState + if err := state.LoadString(c.State); err != nil { + return err + } else if c.ID == (types.FileContractID{}) { + return errors.New("contract id is required") + } else if c.HostKey == (types.PublicKey{}) { + return errors.New("host key is required") + } + + // update contract + _, err := tx.Exec(ctx, ` +UPDATE contracts SET + created_at = ?, fcid = ?, + proof_height = ?, renewed_from = ?, revision_height = ?, revision_number = ?, size = ?, start_height = ?, state = ?, window_start = ?, window_end = ?, + contract_price = ?, initial_renter_funds = ?, + delete_spending = ?, fund_account_spending = ?, sector_roots_spending = ?, upload_spending = ? +WHERE fcid = ?`, + time.Now(), FileContractID(c.ID), + 0, FileContractID(c.RenewedFrom), 0, fmt.Sprint(c.RevisionNumber), c.Size, c.StartHeight, state, c.WindowStart, c.WindowEnd, + Currency(c.ContractPrice), Currency(c.InitialRenterFunds), + ZeroCurrency, ZeroCurrency, ZeroCurrency, ZeroCurrency, + FileContractID(c.RenewedFrom), + ) + if err != nil { + return fmt.Errorf("failed to update contract: %w", err) + } + return nil +} + func UpdatePeerInfo(ctx context.Context, tx sql.Tx, addr string, fn func(*syncer.PeerInfo)) error { info, err := PeerInfo(ctx, tx, addr) if err != nil { diff --git a/stores/sql/mysql/chain.go b/stores/sql/mysql/chain.go index 4e5720c9e..fbb3fb549 100644 --- a/stores/sql/mysql/chain.go +++ b/stores/sql/mysql/chain.go @@ -180,14 +180,14 @@ func (c chainUpdateTx) UpdateChainIndex(index types.ChainIndex) error { return ssql.UpdateChainIndex(c.ctx, c.tx, index, c.l) } -func (c chainUpdateTx) UpdateContract(fcid types.FileContractID, revisionHeight, revisionNumber, size uint64) error { - return ssql.UpdateContract(c.ctx, c.tx, fcid, revisionHeight, revisionNumber, size, c.l) -} - func (c chainUpdateTx) UpdateContractProofHeight(fcid types.FileContractID, proofHeight uint64) error { return ssql.UpdateContractProofHeight(c.ctx, c.tx, fcid, proofHeight, c.l) } +func (c chainUpdateTx) UpdateContractRevision(fcid types.FileContractID, revisionHeight, revisionNumber, size uint64) error { + return ssql.UpdateContractRevision(c.ctx, c.tx, fcid, revisionHeight, revisionNumber, size, c.l) +} + func (c chainUpdateTx) UpdateContractState(fcid types.FileContractID, state api.ContractState) error { return ssql.UpdateContractState(c.ctx, c.tx, fcid, state, c.l) } diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index f126d2170..f4fd0d5ff 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -11,7 +11,6 @@ import ( "time" "unicode/utf8" - rhpv2 "go.sia.tech/core/rhp/v2" "go.sia.tech/core/types" "go.sia.tech/coreutils/syncer" "go.sia.tech/coreutils/wallet" @@ -332,18 +331,6 @@ func (tx *MainDatabaseTx) DeleteHostSector(ctx context.Context, hk types.PublicK return ssql.DeleteHostSector(ctx, tx, hk, root) } -func (tx *MainDatabaseTx) InsertBufferedSlab(ctx context.Context, fileName string, contractSetID int64, ec object.EncryptionKey, minShards, totalShards uint8) (int64, error) { - return ssql.InsertBufferedSlab(ctx, tx, fileName, contractSetID, ec, minShards, totalShards) -} - -func (tx *MainDatabaseTx) InsertContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { - return ssql.InsertContract(ctx, tx, rev, contractPrice, initialRenterFunds, startHeight, state) -} - -func (tx *MainDatabaseTx) InsertMultipartUpload(ctx context.Context, bucket, key string, ec object.EncryptionKey, mimeType string, metadata api.ObjectUserMetadata) (string, error) { - return ssql.InsertMultipartUpload(ctx, tx, bucket, key, ec, mimeType, metadata) -} - func (tx *MainDatabaseTx) DeleteSettings(ctx context.Context, key string) error { return ssql.DeleteSettings(ctx, tx, key) } @@ -411,6 +398,18 @@ func (tx *MainDatabaseTx) HostsForScanning(ctx context.Context, maxLastScan time return ssql.HostsForScanning(ctx, tx, maxLastScan, offset, limit) } +func (tx *MainDatabaseTx) InsertBufferedSlab(ctx context.Context, fileName string, contractSetID int64, ec object.EncryptionKey, minShards, totalShards uint8) (int64, error) { + return ssql.InsertBufferedSlab(ctx, tx, fileName, contractSetID, ec, minShards, totalShards) +} + +func (tx *MainDatabaseTx) InsertContract(ctx context.Context, c api.ContractMetadata) error { + return ssql.InsertContract(ctx, tx, c) +} + +func (tx *MainDatabaseTx) InsertMultipartUpload(ctx context.Context, bucket, key string, ec object.EncryptionKey, mimeType string, metadata api.ObjectUserMetadata) (string, error) { + return ssql.InsertMultipartUpload(ctx, tx, bucket, key, ec, mimeType, metadata) +} + func (tx *MainDatabaseTx) InsertObject(ctx context.Context, bucket, key, contractSet string, dirID int64, o object.Object, mimeType, eTag string, md api.ObjectUserMetadata) error { // get bucket id var bucketID int64 @@ -760,12 +759,8 @@ func (tx *MainDatabaseTx) RenameObjects(ctx context.Context, bucket, prefixOld, return nil } -func (tx *MainDatabaseTx) RenewContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (api.ContractMetadata, error) { - return ssql.RenewContract(ctx, tx, rev, contractPrice, initialRenterFunds, startHeight, renewedFrom, state) -} - -func (tx *MainDatabaseTx) RenewedContract(ctx context.Context, renwedFrom types.FileContractID) (api.ContractMetadata, error) { - return ssql.RenewedContract(ctx, tx, renwedFrom) +func (tx *MainDatabaseTx) RenewedContract(ctx context.Context, renewedFrom types.FileContractID) (api.ContractMetadata, error) { + return ssql.RenewedContract(ctx, tx, renewedFrom) } func (tx *MainDatabaseTx) ResetChainState(ctx context.Context) error { @@ -871,6 +866,10 @@ func (tx *MainDatabaseTx) UpdateBucketPolicy(ctx context.Context, bucket string, return ssql.UpdateBucketPolicy(ctx, tx, bucket, bp) } +func (tx *MainDatabaseTx) UpdateContract(ctx context.Context, fcid types.FileContractID, c api.ContractMetadata) error { + return ssql.UpdateContract(ctx, tx, fcid, c) +} + func (tx *MainDatabaseTx) UpdateContractSet(ctx context.Context, name string, toAdd, toRemove []types.FileContractID) error { res, err := tx.Exec(ctx, "INSERT INTO contract_sets (name) VALUES (?) ON DUPLICATE KEY UPDATE id = last_insert_id(id)", name) if err != nil { diff --git a/stores/sql/mysql/migrations/main/migration_00018_archived_contracts.sql b/stores/sql/mysql/migrations/main/migration_00018_archived_contracts.sql index 689cdb432..99e3bd7ec 100644 --- a/stores/sql/mysql/migrations/main/migration_00018_archived_contracts.sql +++ b/stores/sql/mysql/migrations/main/migration_00018_archived_contracts.sql @@ -1,91 +1,24 @@ -DROP TABLE IF EXISTS contracts_temp; +ALTER TABLE contracts + RENAME COLUMN total_cost TO initial_renter_funds, + RENAME COLUMN list_spending TO sector_roots_spending; -CREATE TABLE contracts_temp ( - `id` bigint unsigned NOT NULL AUTO_INCREMENT, - `created_at` datetime(3) DEFAULT NULL, +ALTER TABLE contracts + ADD COLUMN host_key varbinary(32) NOT NULL DEFAULT UNHEX('0000000000000000000000000000000000000000000000000000000000000000'), + ADD COLUMN archival_reason VARCHAR(191) DEFAULT NULL, + ADD COLUMN renewed_to VARBINARY(32) DEFAULT NULL; - `archival_reason` varchar(191) NOT NULL DEFAULT '', - `fcid` varbinary(32) NOT NULL, - `host_key` varbinary(32) NOT NULL, - `proof_height` bigint unsigned DEFAULT '0', - `renewed_from` varbinary(32) DEFAULT NULL, - `renewed_to` varbinary(32) DEFAULT NULL, - `revision_height` bigint unsigned DEFAULT '0', - `revision_number` varchar(191) NOT NULL DEFAULT '0', - `size` bigint unsigned DEFAULT NULL, - `start_height` bigint unsigned NOT NULL, - `state` tinyint unsigned NOT NULL DEFAULT '0', - `window_start` bigint unsigned NOT NULL DEFAULT '0', - `window_end` bigint unsigned NOT NULL DEFAULT '0', +CREATE INDEX `idx_contracts_archival_reason` ON `contracts`(`archival_reason`); +CREATE INDEX `idx_contracts_host_key` ON `contracts`(`host_key`); +CREATE INDEX `idx_contracts_renewed_to` ON `contracts`(`renewed_to`); - `contract_price` longtext, - `initial_renter_funds` longtext, - - `delete_spending` longtext, - `fund_account_spending` longtext, - `sector_roots_spending` longtext, - `upload_spending` longtext, - PRIMARY KEY (`id`), - UNIQUE KEY `fcid` (`fcid`), - KEY `idx_contracts_archival_reason` (`archival_reason`), - KEY `idx_contracts_fcid` (`fcid`), - KEY `idx_contracts_host_key` (`host_key`), - KEY `idx_contracts_proof_height` (`proof_height`), - KEY `idx_contracts_renewed_from` (`renewed_from`), - KEY `idx_contracts_renewed_to` (`renewed_to`), - KEY `idx_contracts_revision_height` (`revision_height`), - KEY `idx_contracts_start_height` (`start_height`), - KEY `idx_contracts_state` (`state`), - KEY `idx_contracts_window_start` (`window_start`), - KEY `idx_contracts_window_end` (`window_end`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - -INSERT INTO contracts_temp ( - id, - created_at, - fcid, - host_key, - proof_height, - renewed_from, - revision_height, - revision_number, - size, - start_height, - state, - window_start, - window_end, - contract_price, - initial_renter_funds, - delete_spending, - fund_account_spending, - sector_roots_spending, - upload_spending -) SELECT - c.id, - c.created_at, - c.fcid, - h.public_key, - c.proof_height, - c.renewed_from, - c.revision_height, - c.revision_number, - c.size, - c.start_height, - c.state, - c.window_start, - c.window_end, - c.contract_price, - c.total_cost, - c.delete_spending, - c.fund_account_spending, - c.list_spending, - c.upload_spending -FROM contracts c -INNER JOIN hosts h ON c.host_id = h.id; +UPDATE contracts c +INNER JOIN hosts h ON c.host_id = h.id +SET c.host_key = h.public_key; INSERT INTO contracts_temp ( created_at, fcid, + host_id, host_key, archival_reason, proof_height, @@ -107,6 +40,7 @@ INSERT INTO contracts_temp ( ) SELECT ac.created_at, ac.fcid, + h.id, COALESCE(h.public_key, UNHEX('0000000000000000000000000000000000000000000000000000000000000000')), ac.reason, ac.proof_height, @@ -128,12 +62,4 @@ INSERT INTO contracts_temp ( FROM `archived_contracts` ac LEFT JOIN hosts h ON ac.host = h.public_key; -ALTER TABLE contract_sectors DROP FOREIGN KEY fk_contract_sectors_db_contract; -ALTER TABLE contract_set_contracts DROP FOREIGN KEY fk_contract_set_contracts_db_contract; - -DROP TABLE `contracts`; -DROP TABLE `archived_contracts`; - -ALTER TABLE contracts_temp RENAME TO contracts; -ALTER TABLE contract_sectors ADD CONSTRAINT fk_contract_sectors_db_contract FOREIGN KEY (db_contract_id) REFERENCES contracts(id) ON DELETE CASCADE; -ALTER TABLE contract_set_contracts ADD CONSTRAINT fk_contract_set_contracts_db_contract FOREIGN KEY (db_contract_id) REFERENCES contracts(id) ON DELETE CASCADE; +DROP TABLE `archived_contracts`; \ No newline at end of file diff --git a/stores/sql/mysql/migrations/main/schema.sql b/stores/sql/mysql/migrations/main/schema.sql index 73bfbcf32..0933383a3 100644 --- a/stores/sql/mysql/migrations/main/schema.sql +++ b/stores/sql/mysql/migrations/main/schema.sql @@ -75,9 +75,10 @@ CREATE TABLE `contracts` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT, `created_at` datetime(3) DEFAULT NULL, `fcid` varbinary(32) NOT NULL, - `host_key` varbinary(32) NOT NULL, + `host_id` bigint unsigned DEFAULT NULL, + `host_key` varbinary(32), - `archival_reason` varchar(191) NOT NULL DEFAULT '', + `archival_reason` varchar(191) DEFAULT NULL, `proof_height` bigint unsigned DEFAULT '0', `renewed_from` varbinary(32) DEFAULT NULL, `renewed_to` varbinary(32) DEFAULT NULL, @@ -100,6 +101,7 @@ CREATE TABLE `contracts` ( UNIQUE KEY `fcid` (`fcid`), KEY `idx_contracts_archival_reason` (`archival_reason`), KEY `idx_contracts_fcid` (`fcid`), + KEY `idx_contracts_host_id` (`host_id`), KEY `idx_contracts_host_key` (`host_key`), KEY `idx_contracts_proof_height` (`proof_height`), KEY `idx_contracts_renewed_from` (`renewed_from`), @@ -108,7 +110,8 @@ CREATE TABLE `contracts` ( KEY `idx_contracts_start_height` (`start_height`), KEY `idx_contracts_state` (`state`), KEY `idx_contracts_window_start` (`window_start`), - KEY `idx_contracts_window_end` (`window_end`) + KEY `idx_contracts_window_end` (`window_end`), + CONSTRAINT `fk_contracts_host` FOREIGN KEY (`host_id`) REFERENCES `hosts` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- dbContractSet diff --git a/stores/sql/rows.go b/stores/sql/rows.go index d7f37d02f..6bc968af2 100644 --- a/stores/sql/rows.go +++ b/stores/sql/rows.go @@ -15,10 +15,11 @@ type Scanner interface { type ContractRow struct { CreatedAt time.Time FCID FileContractID + HostID int64 HostKey PublicKey // state fields - ArchivalReason string + ArchivalReason NullableString ProofHeight uint64 RenewedFrom FileContractID RenewedTo FileContractID @@ -48,7 +49,7 @@ type ContractRow struct { func (r *ContractRow) Scan(s Scanner) error { return s.Scan( - &r.CreatedAt, &r.FCID, &r.HostKey, + &r.CreatedAt, &r.FCID, &r.HostID, &r.HostKey, &r.ArchivalReason, &r.ProofHeight, &r.RenewedFrom, &r.RenewedTo, &r.RevisionHeight, &r.RevisionNumber, &r.Size, &r.StartHeight, &r.State, &r.WindowStart, &r.WindowEnd, &r.ContractPrice, &r.InitialRenterFunds, &r.DeleteSpending, &r.FundAccountSpending, &r.SectorRootsSpending, &r.UploadSpending, @@ -85,7 +86,7 @@ func (r *ContractRow) ContractMetadata() api.ContractMetadata { ContractPrice: types.Currency(r.ContractPrice), InitialRenterFunds: types.Currency(r.InitialRenterFunds), - ArchivalReason: r.ArchivalReason, + ArchivalReason: string(r.ArchivalReason), ContractSets: sets, ProofHeight: r.ProofHeight, RenewedFrom: types.FileContractID(r.RenewedFrom), diff --git a/stores/sql/sqlite/chain.go b/stores/sql/sqlite/chain.go index 0a80e1a98..d4d04c162 100644 --- a/stores/sql/sqlite/chain.go +++ b/stores/sql/sqlite/chain.go @@ -183,14 +183,14 @@ func (c chainUpdateTx) UpdateChainIndex(index types.ChainIndex) error { return ssql.UpdateChainIndex(c.ctx, c.tx, index, c.l) } -func (c chainUpdateTx) UpdateContract(fcid types.FileContractID, revisionHeight, revisionNumber, size uint64) error { - return ssql.UpdateContract(c.ctx, c.tx, fcid, revisionHeight, revisionNumber, size, c.l) -} - func (c chainUpdateTx) UpdateContractProofHeight(fcid types.FileContractID, proofHeight uint64) error { return ssql.UpdateContractProofHeight(c.ctx, c.tx, fcid, proofHeight, c.l) } +func (c chainUpdateTx) UpdateContractRevision(fcid types.FileContractID, revisionHeight, revisionNumber, size uint64) error { + return ssql.UpdateContractRevision(c.ctx, c.tx, fcid, revisionHeight, revisionNumber, size, c.l) +} + func (c chainUpdateTx) UpdateContractState(fcid types.FileContractID, state api.ContractState) error { return ssql.UpdateContractState(c.ctx, c.tx, fcid, state, c.l) } diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index 2018bc985..ba80e0ef4 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -11,7 +11,6 @@ import ( "time" "unicode/utf8" - rhpv2 "go.sia.tech/core/rhp/v2" "go.sia.tech/core/types" "go.sia.tech/coreutils/syncer" "go.sia.tech/coreutils/wallet" @@ -348,10 +347,6 @@ func (tx *MainDatabaseTx) InsertBufferedSlab(ctx context.Context, fileName strin return ssql.InsertBufferedSlab(ctx, tx, fileName, contractSetID, ec, minShards, totalShards) } -func (tx *MainDatabaseTx) InsertContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { - return ssql.InsertContract(ctx, tx, rev, contractPrice, initialRenterFunds, startHeight, state) -} - func (tx *MainDatabaseTx) InsertMultipartUpload(ctx context.Context, bucket, key string, ec object.EncryptionKey, mimeType string, metadata api.ObjectUserMetadata) (string, error) { return ssql.InsertMultipartUpload(ctx, tx, bucket, key, ec, mimeType, metadata) } @@ -400,6 +395,10 @@ func (tx *MainDatabaseTx) HostsForScanning(ctx context.Context, maxLastScan time return ssql.HostsForScanning(ctx, tx, maxLastScan, offset, limit) } +func (tx *MainDatabaseTx) InsertContract(ctx context.Context, c api.ContractMetadata) error { + return ssql.InsertContract(ctx, tx, c) +} + func (tx *MainDatabaseTx) InsertObject(ctx context.Context, bucket, key, contractSet string, dirID int64, o object.Object, mimeType, eTag string, md api.ObjectUserMetadata) error { // get bucket id var bucketID int64 @@ -771,10 +770,6 @@ func (tx *MainDatabaseTx) RenameObjects(ctx context.Context, bucket, prefixOld, return nil } -func (tx *MainDatabaseTx) RenewContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (api.ContractMetadata, error) { - return ssql.RenewContract(ctx, tx, rev, contractPrice, initialRenterFunds, startHeight, renewedFrom, state) -} - func (tx *MainDatabaseTx) RenewedContract(ctx context.Context, renwedFrom types.FileContractID) (api.ContractMetadata, error) { return ssql.RenewedContract(ctx, tx, renwedFrom) } @@ -939,6 +934,10 @@ func (tx *MainDatabaseTx) UpdateBucketPolicy(ctx context.Context, bucket string, return ssql.UpdateBucketPolicy(ctx, tx, bucket, policy) } +func (tx *MainDatabaseTx) UpdateContract(ctx context.Context, fcid types.FileContractID, c api.ContractMetadata) error { + return ssql.UpdateContract(ctx, tx, fcid, c) +} + func (tx *MainDatabaseTx) UpdateHostAllowlistEntries(ctx context.Context, add, remove []types.PublicKey, clear bool) error { if clear { if _, err := tx.Exec(ctx, "DELETE FROM host_allowlist_entries"); err != nil { diff --git a/stores/sql/sqlite/migrations/main/migration_00018_archived_contracts.sql b/stores/sql/sqlite/migrations/main/migration_00018_archived_contracts.sql index ec2dd1bcd..a9c0635a3 100644 --- a/stores/sql/sqlite/migrations/main/migration_00018_archived_contracts.sql +++ b/stores/sql/sqlite/migrations/main/migration_00018_archived_contracts.sql @@ -4,9 +4,10 @@ CREATE TABLE contracts_temp ( `id` integer PRIMARY KEY AUTOINCREMENT, `created_at` datetime, `fcid` blob NOT NULL UNIQUE, + `host_id` integer, `host_key` blob NOT NULL, - `archival_reason` text NOT NULL DEFAULT "", + `archival_reason` text DEFAULT NULL, `proof_height` integer DEFAULT 0, `renewed_from` blob, `renewed_to` blob, @@ -43,6 +44,7 @@ INSERT INTO contracts_temp ( id, created_at, fcid, + host_id, host_key, proof_height, renewed_from, @@ -63,6 +65,7 @@ INSERT INTO contracts_temp ( c.id, c.created_at, c.fcid, + h.id, h.public_key, c.proof_height, c.renewed_from, @@ -86,6 +89,7 @@ INSERT INTO contracts_temp ( created_at, archival_reason, fcid, + host_id, host_key, proof_height, renewed_from, @@ -107,6 +111,7 @@ INSERT INTO contracts_temp ( ac.created_at, ac.reason, ac.fcid, + h.id, COALESCE(h.public_key, X'0000000000000000000000000000000000000000000000000000000000000000'), ac.proof_height, ac.renewed_from, @@ -128,8 +133,6 @@ FROM `archived_contracts` ac LEFT JOIN hosts h ON ac.host = h.public_key; DROP TABLE `archived_contracts`; - -PRAGMA foreign_keys = OFF; DROP TABLE `contracts`; -ALTER TABLE contracts_temp RENAME TO contracts; -PRAGMA foreign_keys = ON; \ No newline at end of file + +ALTER TABLE contracts_temp RENAME TO contracts; \ No newline at end of file diff --git a/stores/sql/sqlite/migrations/main/schema.sql b/stores/sql/sqlite/migrations/main/schema.sql index b66c72aa4..b1c64b696 100644 --- a/stores/sql/sqlite/migrations/main/schema.sql +++ b/stores/sql/sqlite/migrations/main/schema.sql @@ -8,9 +8,10 @@ CREATE INDEX `idx_hosts_public_key` ON `hosts`(`public_key`); CREATE INDEX `idx_hosts_net_address` ON `hosts`(`net_address`); -- dbContract -CREATE TABLE contracts (`id` integer PRIMARY KEY AUTOINCREMENT, `created_at` datetime, `fcid` blob NOT NULL UNIQUE, `host_key` blob NOT NULL, `archival_reason` text NOT NULL DEFAULT "", `proof_height` integer DEFAULT 0, `renewed_from` blob, `renewed_to` blob, `revision_height` integer DEFAULT 0, `revision_number` text NOT NULL DEFAULT "0", `size` integer, `start_height` integer NOT NULL, `state` integer NOT NULL DEFAULT 0, `window_start` integer NOT NULL DEFAULT 0, `window_end` integer NOT NULL DEFAULT 0, `contract_price` text, `initial_renter_funds` text, `delete_spending` text, `fund_account_spending` text, `sector_roots_spending` text, `upload_spending` text); +CREATE TABLE contracts (`id` integer PRIMARY KEY AUTOINCREMENT, `created_at` datetime, `fcid` blob NOT NULL UNIQUE, `host_id` integer, `host_key` blob NOT NULL, `archival_reason` text DEFAULT NULL, `proof_height` integer DEFAULT 0, `renewed_from` blob, `renewed_to` blob, `revision_height` integer DEFAULT 0, `revision_number` text NOT NULL DEFAULT "0", `size` integer, `start_height` integer NOT NULL, `state` integer NOT NULL DEFAULT 0, `window_start` integer NOT NULL DEFAULT 0, `window_end` integer NOT NULL DEFAULT 0, `contract_price` text, `initial_renter_funds` text, `delete_spending` text, `fund_account_spending` text, `sector_roots_spending` text, `upload_spending` text, CONSTRAINT `fk_contracts_host` FOREIGN KEY (`host_id`) REFERENCES `hosts`(`id`)); CREATE INDEX `idx_contracts_archival_reason` ON `contracts`(`archival_reason`); CREATE INDEX `idx_contracts_fcid` ON `contracts`(`fcid`); +CREATE INDEX `idx_contracts_host_id` ON `contracts`(`host_id`); CREATE INDEX `idx_contracts_host_key` ON `contracts`(`host_key`); CREATE INDEX `idx_contracts_proof_height` ON `contracts`(`proof_height`); CREATE INDEX `idx_contracts_renewed_from` ON `contracts`(`renewed_from`); diff --git a/stores/sql/types.go b/stores/sql/types.go index 3d92fd79c..66127c3ce 100644 --- a/stores/sql/types.go +++ b/stores/sql/types.go @@ -37,6 +37,7 @@ type ( FileContractID types.FileContractID Hash256 types.Hash256 MerkleProof struct{ Hashes []types.Hash256 } + NullableString string HostSettings rhpv2.HostSettings PriceTable rhpv3.HostPriceTable PublicKey types.PublicKey @@ -61,6 +62,7 @@ var ( _ scannerValuer = (*FileContractID)(nil) _ scannerValuer = (*Hash256)(nil) _ scannerValuer = (*MerkleProof)(nil) + _ scannerValuer = (*NullableString)(nil) _ scannerValuer = (*HostSettings)(nil) _ scannerValuer = (*PriceTable)(nil) _ scannerValuer = (*PublicKey)(nil) @@ -459,3 +461,29 @@ func (u *Unsigned64) Scan(value interface{}) error { func (u Unsigned64) Value() (driver.Value, error) { return int64(u), nil } + +// Scan scan value into NullableString, implements sql.Scanner interface. +func (s *NullableString) Scan(value interface{}) error { + if value == nil { + *s = "" + return nil + } + + switch value := value.(type) { + case string: + *s = NullableString(value) + case []byte: + *s = NullableString(value) + default: + return fmt.Errorf("failed to unmarshal NullableString value: %v %T", value, value) + } + return nil +} + +// Value returns a NullableString value, implements driver.Valuer interface. +func (s NullableString) Value() (driver.Value, error) { + if s == "" { + return nil, nil + } + return []byte(s), nil +} diff --git a/stores/sql_test.go b/stores/sql_test.go index e50d16382..5dcbe1236 100644 --- a/stores/sql_test.go +++ b/stores/sql_test.go @@ -314,13 +314,10 @@ func (s *testSQLStore) addTestContracts(keys []types.PublicKey) (fcids []types.F } func (s *SQLStore) addTestContract(fcid types.FileContractID, hk types.PublicKey) (api.ContractMetadata, error) { - rev := newTestContract(fcid, hk) - return s.AddContract(context.Background(), rev, types.ZeroCurrency, types.ZeroCurrency, 0, api.ContractStatePending) -} - -func (s *SQLStore) addTestRenewedContract(fcid, renewedFrom types.FileContractID, hk types.PublicKey, startHeight uint64) (api.ContractMetadata, error) { - rev := newTestContract(fcid, hk) - return s.AddRenewedContract(context.Background(), rev, types.ZeroCurrency, types.ZeroCurrency, startHeight, renewedFrom, api.ContractStatePending) + if err := s.AddContract(context.Background(), newTestContract(fcid, hk)); err != nil { + return api.ContractMetadata{}, err + } + return s.Contract(context.Background(), fcid) } func (s *testSQLStore) overrideSlabHealth(objectID string, health float64) (err error) { @@ -336,3 +333,10 @@ func (s *testSQLStore) overrideSlabHealth(objectID string, health float64) (err )`, health, objectID)) return } + +func (s *testSQLStore) renewTestContract(hk types.PublicKey, renewedFrom, renewedTo types.FileContractID, startHeight uint64) error { + renewal := newTestContract(renewedTo, hk) + renewal.StartHeight = startHeight + renewal.RenewedFrom = renewedFrom + return s.RenewContract(context.Background(), renewal) +} From d1ea9793ce2cdc096278558f8460da27c9b36dba Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 10 Sep 2024 18:31:14 +0200 Subject: [PATCH 086/708] stores: add PutContract --- api/contract.go | 19 ++--- bus/bus.go | 13 ++-- bus/client/contracts.go | 17 ++--- bus/routes.go | 43 ++++-------- internal/test/e2e/cluster_test.go | 2 +- stores/metadata.go | 50 +++++++------ stores/metadata_test.go | 113 +++++++++++++++++++++++++++--- stores/sql/database.go | 9 ++- stores/sql/mysql/main.go | 56 +++++++++++++++ stores/sql/rows.go | 7 +- stores/sql/sqlite/main.go | 47 +++++++++++++ stores/sql_test.go | 4 +- 12 files changed, 279 insertions(+), 101 deletions(-) diff --git a/api/contract.go b/api/contract.go index 5606b1b35..4e8f74099 100644 --- a/api/contract.go +++ b/api/contract.go @@ -2,6 +2,7 @@ package api import ( "errors" + "time" rhpv2 "go.sia.tech/core/rhp/v2" "go.sia.tech/core/types" @@ -50,8 +51,9 @@ type ( // ContractMetadata contains all metadata for a contract. ContractMetadata struct { - ID types.FileContractID `json:"id"` - HostKey types.PublicKey `json:"hostKey"` + CreatedAt time.Time `json:"createdAt"` + ID types.FileContractID `json:"id"` + HostKey types.PublicKey `json:"hostKey"` ProofHeight uint64 `json:"proofHeight"` RenewedFrom types.FileContractID `json:"renewedFrom"` @@ -119,9 +121,9 @@ type ( // ContractAddRequest is the request type for the /contract/:id endpoint. ContractAddRequest struct { - Revision rhpv2.ContractRevision `json:"revision"` ContractPrice types.Currency `json:"contractPrice"` InitialRenterFunds types.Currency `json:"initialRenterFunds"` + Revision rhpv2.ContractRevision `json:"revision"` StartHeight uint64 `json:"startHeight"` State string `json:"state,omitempty"` } @@ -174,17 +176,6 @@ type ( RenterFunds types.Currency `json:"renterFunds"` } - // ContractRenewedRequest is the request type for the /contract/:id/renewed - // endpoint. - ContractRenewedRequest struct { - Contract rhpv2.ContractRevision `json:"contract"` - ContractPrice types.Currency `json:"contractPrice"` - InitialRenterFunds types.Currency `json:"initialRenterFunds"` - RenewedFrom types.FileContractID `json:"renewedFrom"` - StartHeight uint64 `json:"startHeight"` - State string `json:"state,omitempty"` - } - // ContractRootsResponse is the response type for the /contract/:id/roots // endpoint. ContractRootsResponse struct { diff --git a/bus/bus.go b/bus/bus.go index 420862d9e..6c4b3dc0c 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -210,7 +210,7 @@ type ( // A MetadataStore stores information about contracts and objects. MetadataStore interface { - AddContract(ctx context.Context, c api.ContractMetadata) error + AddRenewal(ctx context.Context, c api.ContractMetadata) error AncestorContracts(ctx context.Context, fcid types.FileContractID, minStartHeight uint64) ([]api.ContractMetadata, error) ArchiveContract(ctx context.Context, id types.FileContractID, reason string) error ArchiveContracts(ctx context.Context, toArchive map[types.FileContractID]string) error @@ -218,9 +218,10 @@ type ( Contract(ctx context.Context, id types.FileContractID) (api.ContractMetadata, error) Contracts(ctx context.Context, opts api.ContractsOpts) ([]api.ContractMetadata, error) ContractSets(ctx context.Context) ([]string, error) + InsertContract(ctx context.Context, c api.ContractMetadata) error RecordContractSpending(ctx context.Context, records []api.ContractSpendingRecord) error RemoveContractSet(ctx context.Context, name string) error - RenewContract(ctx context.Context, c api.ContractMetadata) error + PutContract(ctx context.Context, c api.ContractMetadata) error RenewedContract(ctx context.Context, renewedFrom types.FileContractID) (api.ContractMetadata, error) UpdateContractSet(ctx context.Context, set string, toAdd, toRemove []types.FileContractID) error @@ -410,10 +411,11 @@ func (b *Bus) Handler() http.Handler { "GET /consensus/siafundfee/:payout": b.contractTaxHandlerGET, "GET /consensus/state": b.consensusStateHandler, - "POST /contracts": b.contractsFormHandler, + "PUT /contracts": b.contractsHandlerPUT, "GET /contracts": b.contractsHandlerGET, "DELETE /contracts/all": b.contractsAllHandlerDELETE, "POST /contracts/archive": b.contractsArchiveHandlerPOST, + "POST /contracts/form": b.contractsFormHandler, "GET /contracts/prunable": b.contractsPrunableDataHandlerGET, "GET /contracts/renewed/:id": b.contractsRenewedIDHandlerGET, "GET /contracts/sets": b.contractsSetsHandlerGET, @@ -421,7 +423,6 @@ func (b *Bus) Handler() http.Handler { "DELETE /contracts/set/:set": b.contractsSetHandlerDELETE, "POST /contracts/spending": b.contractsSpendingHandlerPOST, "GET /contract/:id": b.contractIDHandlerGET, - "POST /contract/:id": b.contractIDHandlerPOST, "DELETE /contract/:id": b.contractIDHandlerDELETE, "POST /contract/:id/acquire": b.contractAcquireHandlerPOST, "GET /contract/:id/ancestors": b.contractIDAncestorsHandler, @@ -532,7 +533,7 @@ func (b *Bus) Shutdown(ctx context.Context) error { } func (b *Bus) addContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { - if err := b.ms.AddContract(ctx, api.ContractMetadata{ + if err := b.ms.InsertContract(ctx, api.ContractMetadata{ ID: rev.ID(), HostKey: rev.HostKey(), StartHeight: startHeight, @@ -563,7 +564,7 @@ func (b *Bus) addContract(ctx context.Context, rev rhpv2.ContractRevision, contr } func (b *Bus) addRenewal(ctx context.Context, renewedFrom types.FileContractID, rev rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { - if err := b.ms.RenewContract(ctx, api.ContractMetadata{ + if err := b.ms.AddRenewal(ctx, api.ContractMetadata{ ID: rev.ID(), HostKey: rev.HostKey(), RenewedFrom: renewedFrom, diff --git a/bus/client/contracts.go b/bus/client/contracts.go index 5789eb035..e29eaaf71 100644 --- a/bus/client/contracts.go +++ b/bus/client/contracts.go @@ -6,21 +6,14 @@ import ( "net/url" "time" - rhpv2 "go.sia.tech/core/rhp/v2" "go.sia.tech/core/types" "go.sia.tech/renterd/api" ) -// AddContract adds the provided contract to the metadata store. -func (c *Client) AddContract(ctx context.Context, revision rhpv2.ContractRevision, contractPrice, initialRenterFunds types.Currency, startHeight uint64, state string) (added api.ContractMetadata, err error) { - err = c.c.WithContext(ctx).POST(fmt.Sprintf("/contract/%s", revision.ID()), api.ContractAddRequest{ - Revision: revision, - ContractPrice: contractPrice, - InitialRenterFunds: initialRenterFunds, - StartHeight: startHeight, - State: state, - }, &added) - return +// AddContract adds the provided contract to the metadata store, if the contract +// already exists it will be replaced. +func (c *Client) AddContract(ctx context.Context, contract api.ContractMetadata) error { + return c.c.WithContext(ctx).PUT("/contracts", contract) } // AncestorContracts returns any ancestors of a given contract. @@ -128,7 +121,7 @@ func (c *Client) DeleteContractSet(ctx context.Context, set string) (err error) // FormContract forms a contract with a host and adds it to the bus. func (c *Client) FormContract(ctx context.Context, renterAddress types.Address, renterFunds types.Currency, hostKey types.PublicKey, hostIP string, hostCollateral types.Currency, endHeight uint64) (contract api.ContractMetadata, err error) { - err = c.c.WithContext(ctx).POST("/contracts", api.ContractFormRequest{ + err = c.c.WithContext(ctx).POST("/contracts/form", api.ContractFormRequest{ EndHeight: endHeight, HostCollateral: hostCollateral, HostKey: hostKey, diff --git a/bus/routes.go b/bus/routes.go index 0f4efe725..a3f89cbbb 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -763,7 +763,7 @@ func (b *Bus) contractsHandlerGET(jc jape.Context) { case api.ContractFilterModeActive: case api.ContractFilterModeArchived: default: - jc.Error(fmt.Errorf("invalid filter mode: %v", filterMode), http.StatusBadRequest) + jc.Error(fmt.Errorf("invalid filter mode: '%v'", filterMode), http.StatusBadRequest) return } @@ -1088,36 +1088,23 @@ func (b *Bus) contractIDHandlerGET(jc jape.Context) { } } -func (b *Bus) contractIDHandlerPOST(jc jape.Context) { - // decode parameters - var id types.FileContractID - if jc.DecodeParam("id", &id) != nil { - return - } - var req api.ContractAddRequest - if jc.Decode(&req) != nil { - return - } - - // validate the request - if req.InitialRenterFunds.IsZero() { - http.Error(jc.ResponseWriter, "InitialRenterFunds can not be zero", http.StatusBadRequest) - return - } else if req.Revision.ID() != id { - http.Error(jc.ResponseWriter, "Contract ID missmatch", http.StatusBadRequest) - return - } else if req.Revision.ID() == (types.FileContractID{}) { - http.Error(jc.ResponseWriter, "Contract ID is required", http.StatusBadRequest) - return - } else if req.Revision.HostKey() == (types.PublicKey{}) { - http.Error(jc.ResponseWriter, "HostKey is required", http.StatusBadRequest) +func (b *Bus) contractsHandlerPUT(jc jape.Context) { + // decode request + var c api.ContractMetadata + if jc.Decode(&c) != nil { return } - // add the contract - metadata, err := b.addContract(jc.Request.Context(), req.Revision, req.ContractPrice, req.InitialRenterFunds, req.StartHeight, req.State) - if jc.Check("couldn't add contract", err) == nil { - jc.Encode(metadata) + // upsert the contract + if jc.Check("failed to add contract", b.ms.PutContract(jc.Request.Context(), c)) == nil { + b.broadcastAction(webhooks.Event{ + Module: api.ModuleContract, + Event: api.EventAdd, + Payload: api.EventContractAdd{ + Added: c, + Timestamp: time.Now().UTC(), + }, + }) } } diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 5a424aa3c..8648c716e 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -1517,7 +1517,7 @@ func TestUnconfirmedContractArchival(t *testing.T) { c := contracts[0] // add a contract to the bus - err = cluster.bs.AddContract(context.Background(), api.ContractMetadata{ + err = cluster.bs.InsertContract(context.Background(), api.ContractMetadata{ ID: types.FileContractID{1}, HostKey: types.PublicKey{1}, StartHeight: cs.BlockHeight, diff --git a/stores/metadata.go b/stores/metadata.go index 2832d9d1e..d1c5ab557 100644 --- a/stores/metadata.go +++ b/stores/metadata.go @@ -108,6 +108,27 @@ func (s *SQLStore) SlabBuffers(ctx context.Context) ([]api.SlabBuffer, error) { return buffers, nil } +func (s *SQLStore) AddRenewal(ctx context.Context, c api.ContractMetadata) error { + return s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { + // fetch renewed contract + renewed, err := tx.Contract(ctx, c.RenewedFrom) + if err != nil { + return err + } + + // insert renewal by updating the renewed contract + err = tx.UpdateContract(ctx, c.RenewedFrom, c) + if err != nil { + return err + } + + // reinsert renewed contract + renewed.ArchivalReason = api.ContractArchivalReasonRenewed + renewed.RenewedTo = c.ID + return tx.InsertContract(ctx, renewed) + }) +} + func (s *SQLStore) AncestorContracts(ctx context.Context, id types.FileContractID, startHeight uint64) (ancestors []api.ContractMetadata, err error) { err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { ancestors, err = tx.AncestorContracts(ctx, id, startHeight) @@ -208,12 +229,18 @@ func (s *SQLStore) ContractSize(ctx context.Context, id types.FileContractID) (c return cs, err } -func (s *SQLStore) AddContract(ctx context.Context, c api.ContractMetadata) error { +func (s *SQLStore) InsertContract(ctx context.Context, c api.ContractMetadata) error { return s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { return tx.InsertContract(ctx, c) }) } +func (s *SQLStore) PutContract(ctx context.Context, c api.ContractMetadata) error { + return s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { + return tx.PutContract(ctx, c) + }) +} + func (s *SQLStore) UpdateContractSet(ctx context.Context, name string, toAdd, toRemove []types.FileContractID) error { toAddMap := make(map[types.FileContractID]struct{}) for _, fcid := range toAdd { @@ -556,27 +583,6 @@ func (s *SQLStore) RemoveObjects(ctx context.Context, bucket, prefix string) err return nil } -func (s *SQLStore) RenewContract(ctx context.Context, c api.ContractMetadata) error { - return s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - // fetch renewed contract - renewed, err := tx.Contract(ctx, c.RenewedFrom) - if err != nil { - return err - } - - // insert renewal by updating the renewed contract - err = tx.UpdateContract(ctx, c.RenewedFrom, c) - if err != nil { - return err - } - - // reinsert renewed contract - renewed.ArchivalReason = api.ContractArchivalReasonRenewed - renewed.RenewedTo = c.ID - return tx.InsertContract(ctx, renewed) - }) -} - func (s *SQLStore) Slab(ctx context.Context, key object.EncryptionKey) (slab object.Slab, err error) { err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { slab, err = tx.Slab(ctx, key) diff --git a/stores/metadata_test.go b/stores/metadata_test.go index 3c7e93cfc..d4653e300 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -399,18 +399,20 @@ func TestSQLContractStore(t *testing.T) { Uploads: types.NewCurrency64(6), }, } - if err := ss.AddContract(context.Background(), c); err != nil { + if err := ss.InsertContract(context.Background(), c); err != nil { t.Fatal(err) } - // decorate the host IP - c.HostIP = "address" - // fetch the contract inserted, err := ss.Contract(context.Background(), fcid) if err != nil { t.Fatal(err) - } else if !reflect.DeepEqual(inserted, c) { + } + + // assert it's equal + c.CreatedAt = inserted.CreatedAt + c.HostIP = inserted.HostIP + if !reflect.DeepEqual(inserted, c) { t.Fatal("contract mismatch", cmp.Diff(inserted, c)) } @@ -528,11 +530,7 @@ func TestContractRoots(t *testing.T) { // TestAncestorsContracts verifies that AncestorContracts returns the right // ancestors in the correct order. func TestAncestorsContracts(t *testing.T) { - cfg := defaultTestSQLStoreConfig - cfg.persistent = true - cfg.dir = "/Users/peterjan/testing3" - os.RemoveAll(cfg.dir) - ss := newTestSQLStore(t, cfg) + ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() hk := types.PublicKey{1, 2, 3} @@ -576,7 +574,7 @@ func TestAncestorsContracts(t *testing.T) { expected.RenewedTo = renewedTo expected.ArchivalReason = api.ContractArchivalReasonRenewed expected.StartHeight = uint64(len(fcids) - 2 - i) - expected.Spending = api.ContractSpending{} + expected.CreatedAt = contracts[i].CreatedAt if !reflect.DeepEqual(contracts[i], expected) { t.Log(cmp.Diff(contracts[i], expected)) t.Fatal("wrong contract", i, contracts[i]) @@ -888,9 +886,11 @@ func TestSQLMetadataStore(t *testing.T) { if !reflect.DeepEqual(slab2, expectedObjSlab2) { t.Fatal("mismatch", cmp.Diff(slab2, expectedObjSlab2)) } + expectedContract1.CreatedAt = contract1.CreatedAt if !reflect.DeepEqual(contract1, expectedContract1) { t.Fatal("mismatch", cmp.Diff(contract1, expectedContract1)) } + expectedContract2.CreatedAt = contract2.CreatedAt if !reflect.DeepEqual(contract2, expectedContract2) { t.Fatal("mismatch", cmp.Diff(contract2, expectedContract2)) } @@ -3447,6 +3447,7 @@ func TestDeleteHostSector(t *testing.T) { t.Fatalf("expected slab id to be %v, got %v", slabID, sectors[0].SlabID) } } + func newTestShards(hk types.PublicKey, fcid types.FileContractID, root types.Hash256) []object.Sector { return []object.Sector{ newTestShard(hk, fcid, root), @@ -4454,3 +4455,93 @@ func TestDirectories(t *testing.T) { t.Fatal("expected 1 dir, got", n) } } + +func TestPutContract(t *testing.T) { + ss := newTestSQLStore(t, defaultTestSQLStoreConfig) + defer ss.Close() + + hk := types.PublicKey{1} + if err := ss.addTestHost(hk); err != nil { + t.Fatal(err) + } + + c := api.ContractMetadata{ + CreatedAt: time.Now(), + ID: types.FileContractID{1}, + HostKey: hk, + + ProofHeight: 2, + RenewedFrom: types.FileContractID{3}, + RevisionHeight: 4, + RevisionNumber: 5, + Size: 6, + StartHeight: 7, + State: api.ContractStateComplete, + WindowStart: 8, + WindowEnd: 9, + + ContractPrice: types.NewCurrency64(10), + InitialRenterFunds: types.NewCurrency64(11), + Spending: api.ContractSpending{ + Deletions: types.NewCurrency64(12), + FundAccount: types.NewCurrency64(13), + SectorRoots: types.NewCurrency64(14), + Uploads: types.NewCurrency64(15), + }, + + ArchivalReason: api.ContractArchivalReasonHostPruned, + RenewedTo: types.FileContractID{16}, + } + if err := ss.PutContract(context.Background(), c); err != nil { + t.Fatal(err) + } + + // insert and assert the returned metadata is equal to the inserted metadata + if contracts, err := ss.Contracts(context.Background(), api.ContractsOpts{FilterMode: api.ContractFilterModeAll}); err != nil { + t.Fatal(err) + } else if len(contracts) != 1 { + t.Fatalf("expected 1 contract, instead got %d", len(contracts)) + } else if contracts[0].CreatedAt = c.CreatedAt; !reflect.DeepEqual(contracts[0], c) { + t.Fatalf("contracts are not equal, diff: %s", cmp.Diff(contracts[0], c)) + } + + u := api.ContractMetadata{ + CreatedAt: time.Now(), + ID: types.FileContractID{1}, + HostKey: hk, + + ProofHeight: 17, + RenewedFrom: types.FileContractID{18}, + RevisionHeight: 19, + RevisionNumber: 20, + Size: 21, + StartHeight: 22, + State: api.ContractStateFailed, + WindowStart: 23, + WindowEnd: 24, + + ContractPrice: types.NewCurrency64(25), + InitialRenterFunds: types.NewCurrency64(26), + Spending: api.ContractSpending{ + Deletions: types.NewCurrency64(27), + FundAccount: types.NewCurrency64(28), + SectorRoots: types.NewCurrency64(29), + Uploads: types.NewCurrency64(30), + }, + + ArchivalReason: api.ContractArchivalReasonRemoved, + RenewedTo: types.FileContractID{31}, + } + if err := ss.PutContract(context.Background(), u); err != nil { + t.Fatal(err) + } + + // update and assert the returned metadata is equal to the metadata + if contracts, err := ss.Contracts(context.Background(), api.ContractsOpts{FilterMode: api.ContractFilterModeAll}); err != nil { + t.Fatal(err) + } else if len(contracts) != 1 { + t.Fatalf("expected 1 contract, instead got %d", len(contracts)) + } else if contracts[0].CreatedAt = u.CreatedAt; !reflect.DeepEqual(contracts[0], u) { + t.Fatalf("contracts are not equal, diff: %s", cmp.Diff(contracts[0], u)) + } +} diff --git a/stores/sql/database.go b/stores/sql/database.go index c4b9fa4a1..c23089120 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -93,8 +93,9 @@ type ( // duplicates but can contain gaps. CompleteMultipartUpload(ctx context.Context, bucket, key, uploadID string, parts []api.MultipartCompletedPart, opts api.CompleteMultipartOptions) (string, error) - // Contract returns the metadata of the contract with the given ID or - // ErrContractNotFound. + // Contract returns the metadata of the contract with the given id, if + // the requested contract does not exist, or if it is archived, + // ErrContractNotFound is returned. Contract(ctx context.Context, id types.FileContractID) (cm api.ContractMetadata, err error) // ContractRoots returns the roots of the contract with the given ID. @@ -253,6 +254,10 @@ type ( // or slab buffer. PruneSlabs(ctx context.Context, limit int64) (int64, error) + // PutContract inserts the contract if it does not exist, otherwise it + // will overwrite all fields. + PutContract(ctx context.Context, c api.ContractMetadata) error + // RecordContractSpending records new spending for a contract RecordContractSpending(ctx context.Context, fcid types.FileContractID, revisionNumber, size uint64, newSpending api.ContractSpending) error diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index f4fd0d5ff..1c650ac8c 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -670,6 +670,62 @@ func (tx *MainDatabaseTx) PruneSlabs(ctx context.Context, limit int64) (int64, e return res.RowsAffected() } +func (tx *MainDatabaseTx) PutContract(ctx context.Context, c api.ContractMetadata) error { + // assert decorated fields are unset + if c.HostIP != "" { + return errors.New("host IP should not be set") + } else if c.ContractSets != nil { + return errors.New("contract sets should not be set") + } else if c.SiamuxAddr != "" { + return errors.New("siamux address should not be set") + } + + // validate metadata + var state ssql.ContractState + if err := state.LoadString(c.State); err != nil { + return err + } else if c.ID == (types.FileContractID{}) { + return errors.New("contract id is required") + } else if c.HostKey == (types.PublicKey{}) { + return errors.New("host key is required") + } + + // fetch host id + var hostID int64 + err := tx.QueryRow(ctx, `SELECT id FROM hosts WHERE public_key = ?`, ssql.PublicKey(c.HostKey)).Scan(&hostID) + if errors.Is(err, dsql.ErrNoRows) { + return api.ErrHostNotFound + } + + // set created at if it's not set + if c.CreatedAt.IsZero() { + c.CreatedAt = time.Now().UTC() + } + + // update contract + _, err = tx.Exec(ctx, ` +INSERT INTO contracts ( + created_at, fcid, host_id, host_key, + archival_reason, proof_height, renewed_from, renewed_to, revision_height, revision_number, size, start_height, state, window_start, window_end, + contract_price, initial_renter_funds, + delete_spending, fund_account_spending, sector_roots_spending, upload_spending +) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) +ON DUPLICATE KEY UPDATE + created_at = VALUES(created_at), fcid = VALUES(fcid), host_id = VALUES(host_id), host_key = VALUES(host_key), + archival_reason = VALUES(archival_reason), proof_height = VALUES(proof_height), renewed_from = VALUES(renewed_from), renewed_to = VALUES(renewed_to), revision_height = VALUES(revision_height), revision_number = VALUES(revision_number), size = VALUES(size), start_height = VALUES(start_height), state = VALUES(state), window_start = VALUES(window_start), window_end = VALUES(window_end), + contract_price = VALUES(contract_price), initial_renter_funds = VALUES(initial_renter_funds), + delete_spending = VALUES(delete_spending), fund_account_spending = VALUES(fund_account_spending), sector_roots_spending = VALUES(sector_roots_spending), upload_spending = VALUES(upload_spending)`, + c.CreatedAt, ssql.FileContractID(c.ID), hostID, ssql.PublicKey(c.HostKey), + ssql.NullableString(c.ArchivalReason), c.ProofHeight, ssql.FileContractID(c.RenewedFrom), ssql.FileContractID(c.RenewedTo), c.RevisionHeight, c.RevisionNumber, c.Size, c.StartHeight, state, c.WindowStart, c.WindowEnd, + ssql.Currency(c.ContractPrice), ssql.Currency(c.InitialRenterFunds), + ssql.Currency(c.Spending.Deletions), ssql.Currency(c.Spending.FundAccount), ssql.Currency(c.Spending.SectorRoots), ssql.Currency(c.Spending.Uploads), + ) + if err != nil { + return fmt.Errorf("failed to update contract: %w", err) + } + return nil +} + func (tx *MainDatabaseTx) RecordContractSpending(ctx context.Context, fcid types.FileContractID, revisionNumber, size uint64, newSpending api.ContractSpending) error { return ssql.RecordContractSpending(ctx, tx, fcid, revisionNumber, size, newSpending) } diff --git a/stores/sql/rows.go b/stores/sql/rows.go index 6bc968af2..364e61dd3 100644 --- a/stores/sql/rows.go +++ b/stores/sql/rows.go @@ -79,9 +79,10 @@ func (r *ContractRow) ContractMetadata() api.ContractMetadata { } return api.ContractMetadata{ - ID: types.FileContractID(r.FCID), - HostIP: r.NetAddress, - HostKey: types.PublicKey(r.HostKey), + CreatedAt: r.CreatedAt, + ID: types.FileContractID(r.FCID), + HostIP: r.NetAddress, + HostKey: types.PublicKey(r.HostKey), ContractPrice: types.Currency(r.ContractPrice), InitialRenterFunds: types.Currency(r.InitialRenterFunds), diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index ba80e0ef4..1f683ef13 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -680,6 +680,53 @@ func (tx *MainDatabaseTx) PruneSlabs(ctx context.Context, limit int64) (int64, e return res.RowsAffected() } +func (tx *MainDatabaseTx) PutContract(ctx context.Context, c api.ContractMetadata) error { + // validate metadata + var state ssql.ContractState + if err := state.LoadString(c.State); err != nil { + return err + } else if c.ID == (types.FileContractID{}) { + return errors.New("contract id is required") + } else if c.HostKey == (types.PublicKey{}) { + return errors.New("host key is required") + } + + // fetch host id + var hostID int64 + err := tx.QueryRow(ctx, `SELECT id FROM hosts WHERE public_key = ?`, ssql.PublicKey(c.HostKey)).Scan(&hostID) + if errors.Is(err, dsql.ErrNoRows) { + return api.ErrHostNotFound + } + + // set created at if it's not set + if c.CreatedAt.IsZero() { + c.CreatedAt = time.Now() + } + + // update contract + _, err = tx.Exec(ctx, ` +INSERT INTO contracts ( + created_at, fcid, host_id, host_key, + archival_reason, proof_height, renewed_from, renewed_to, revision_height, revision_number, size, start_height, state, window_start, window_end, + contract_price, initial_renter_funds, + delete_spending, fund_account_spending, sector_roots_spending, upload_spending +) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) +ON CONFLICT(fcid) DO UPDATE SET + created_at = EXCLUDED.created_at, fcid = EXCLUDED.fcid, host_id = EXCLUDED.host_id, host_key = EXCLUDED.host_key, + archival_reason = EXCLUDED.archival_reason, proof_height = EXCLUDED.proof_height, renewed_from = EXCLUDED.renewed_from, renewed_to = EXCLUDED.renewed_to, revision_height = EXCLUDED.revision_height, revision_number = EXCLUDED.revision_number, size = EXCLUDED.size, start_height = EXCLUDED.start_height, state = EXCLUDED.state, window_start = EXCLUDED.window_start, window_end = EXCLUDED.window_end, + contract_price = EXCLUDED.contract_price, initial_renter_funds = EXCLUDED.initial_renter_funds, + delete_spending = EXCLUDED.delete_spending, fund_account_spending = EXCLUDED.fund_account_spending, sector_roots_spending = EXCLUDED.sector_roots_spending, upload_spending = EXCLUDED.upload_spending`, + c.CreatedAt, ssql.FileContractID(c.ID), hostID, ssql.PublicKey(c.HostKey), + ssql.NullableString(c.ArchivalReason), c.ProofHeight, ssql.FileContractID(c.RenewedFrom), ssql.FileContractID(c.RenewedTo), c.RevisionHeight, c.RevisionNumber, c.Size, c.StartHeight, state, c.WindowStart, c.WindowEnd, + ssql.Currency(c.ContractPrice), ssql.Currency(c.InitialRenterFunds), + ssql.Currency(c.Spending.Deletions), ssql.Currency(c.Spending.FundAccount), ssql.Currency(c.Spending.SectorRoots), ssql.Currency(c.Spending.Uploads), + ) + if err != nil { + return fmt.Errorf("failed to update contract: %w", err) + } + return nil +} + func (tx *MainDatabaseTx) RecordContractSpending(ctx context.Context, fcid types.FileContractID, revisionNumber, size uint64, newSpending api.ContractSpending) error { return ssql.RecordContractSpending(ctx, tx, fcid, revisionNumber, size, newSpending) } diff --git a/stores/sql_test.go b/stores/sql_test.go index 5dcbe1236..ae130bedd 100644 --- a/stores/sql_test.go +++ b/stores/sql_test.go @@ -314,7 +314,7 @@ func (s *testSQLStore) addTestContracts(keys []types.PublicKey) (fcids []types.F } func (s *SQLStore) addTestContract(fcid types.FileContractID, hk types.PublicKey) (api.ContractMetadata, error) { - if err := s.AddContract(context.Background(), newTestContract(fcid, hk)); err != nil { + if err := s.InsertContract(context.Background(), newTestContract(fcid, hk)); err != nil { return api.ContractMetadata{}, err } return s.Contract(context.Background(), fcid) @@ -338,5 +338,5 @@ func (s *testSQLStore) renewTestContract(hk types.PublicKey, renewedFrom, renewe renewal := newTestContract(renewedTo, hk) renewal.StartHeight = startHeight renewal.RenewedFrom = renewedFrom - return s.RenewContract(context.Background(), renewal) + return s.AddRenewal(context.Background(), renewal) } From d8d8d4c6b766fa68b436535f64d5a801036f9d78 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 10 Sep 2024 18:35:24 +0200 Subject: [PATCH 087/708] stores: update migration --- .../migrations/main/migration_00018_archived_contracts.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/stores/sql/mysql/migrations/main/migration_00018_archived_contracts.sql b/stores/sql/mysql/migrations/main/migration_00018_archived_contracts.sql index 99e3bd7ec..d107649ee 100644 --- a/stores/sql/mysql/migrations/main/migration_00018_archived_contracts.sql +++ b/stores/sql/mysql/migrations/main/migration_00018_archived_contracts.sql @@ -11,6 +11,9 @@ CREATE INDEX `idx_contracts_archival_reason` ON `contracts`(`archival_reason`); CREATE INDEX `idx_contracts_host_key` ON `contracts`(`host_key`); CREATE INDEX `idx_contracts_renewed_to` ON `contracts`(`renewed_to`); +DROP INDEX `idx_contracts_fc_id` ON table_name; +CREATE INDEX `idx_contracts_fc_id` ON `contracts`(`fcid`); + UPDATE contracts c INNER JOIN hosts h ON c.host_id = h.id SET c.host_key = h.public_key; From bd1c08328328ba40082857354fd0a90dd4faa5e4 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 10 Sep 2024 19:55:17 +0200 Subject: [PATCH 088/708] testing: fix TestUnconfirmedContractArchival --- internal/test/e2e/cluster_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 8648c716e..aa0951d99 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -1508,7 +1508,7 @@ func TestUnconfirmedContractArchival(t *testing.T) { cs, err := cluster.Bus.ConsensusState(context.Background()) tt.OK(err) - // we should have a contract with the host + // assert we have a contract contracts, err := cluster.Bus.Contracts(context.Background(), api.ContractsOpts{}) tt.OK(err) if len(contracts) != 1 { @@ -1516,10 +1516,10 @@ func TestUnconfirmedContractArchival(t *testing.T) { } c := contracts[0] - // add a contract to the bus + // manually insert a contract err = cluster.bs.InsertContract(context.Background(), api.ContractMetadata{ ID: types.FileContractID{1}, - HostKey: types.PublicKey{1}, + HostKey: c.HostKey, StartHeight: cs.BlockHeight, State: api.ContractStatePending, WindowStart: math.MaxUint32, From 8964f7f6da02b8ce3334579e32b12bd454f825f8 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 10 Sep 2024 20:49:10 +0200 Subject: [PATCH 089/708] testing: fix TestHostPruning --- stores/sql/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stores/sql/main.go b/stores/sql/main.go index 37ca0255e..37b7663dd 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -170,7 +170,7 @@ func ArchiveContract(ctx context.Context, tx sql.Tx, fcid types.FileContractID, } // archive contract - res, err := tx.Exec(ctx, "UPDATE contracts SET archival_reason = ? WHERE fcid = ?", reason, FileContractID(fcid)) + res, err := tx.Exec(ctx, "UPDATE contracts SET host_id = NULL, archival_reason = ? WHERE fcid = ?", reason, FileContractID(fcid)) if err != nil { return fmt.Errorf("failed to archive contract: %w", err) } else if n, err := res.RowsAffected(); err != nil { From e082fdfd92cc32e02dfc5aad7f2346ec94da1ebd Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 10 Sep 2024 23:17:38 +0200 Subject: [PATCH 090/708] stores: use raw SQL in the migration --- internal/sql/migrations.go | 150 +----------------- .../main/migration_00018_settings.sql | 84 +++++++++- .../main/migration_00018_settings.sql | 46 +++++- 3 files changed, 129 insertions(+), 151 deletions(-) diff --git a/internal/sql/migrations.go b/internal/sql/migrations.go index 12e21cb4b..029aba4ea 100644 --- a/internal/sql/migrations.go +++ b/internal/sql/migrations.go @@ -3,12 +3,10 @@ package sql import ( "context" "embed" - "encoding/json" "fmt" "strings" "unicode/utf8" - "go.sia.tech/renterd/api" "go.sia.tech/renterd/internal/utils" "go.uber.org/zap" ) @@ -223,153 +221,7 @@ var ( { ID: "00018_settings", Migrate: func(tx Tx) error { - log.Infof("performing %s migration '00018_settings'", dbIdentifier) - - // fetch all settings - rows, err := tx.Query(ctx, "SELECT `key`, value FROM settings") - if err != nil { - return fmt.Errorf("failed to fetch settings: %v", err) - } - defer rows.Close() - - settings := make(map[string]string) - for rows.Next() { - var k, v string - if err := rows.Scan(&k, &v); err != nil { - return fmt.Errorf("failed to scan setting: %v", err) - } - settings[k] = v - } - - // migrate gouging settings - if v, ok := settings["gouging"]; ok { - var gs api.GougingSettings - err := json.Unmarshal([]byte(v), &gs) - if err == nil { - err = gs.Validate() - } - if err != nil { - log.Warnf("gouging settings are not being migrated, err: %v", err) - if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", "gouging"); err != nil { - return fmt.Errorf("failed to delete gouging settings: %v", err) - } - } - } else { - log.Warn("no gouging settings found") - } - - // migrate pinning settings - if v, ok := settings["pricepinning"]; ok { - var ps api.PinnedSettings - err := json.Unmarshal([]byte(v), &ps) - if err == nil { - err = ps.Validate() - } - if err == nil { - updated, _ := json.Marshal(ps) - if err := m.UpdateSetting(ctx, tx, "pinned", string(updated)); err != nil { - return fmt.Errorf("failed to insert pinned settings: %v", err) - } - } else { - log.Warnf("pricepinning settings are not being migrated, err: %v", err) - } - - // always delete because it got renamed - if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", "pricepinning"); err != nil { - log.Warnf("failed to delete pricepinning settings: %v", err) - } - } else { - log.Warn("no pricepinning settings found") - } - - // migrate S3 authentication settings - if v, ok := settings["s3authentication"]; ok { - var s3s api.S3Settings - err := json.Unmarshal([]byte(v), &s3s.Authentication) - if err == nil { - err = s3s.Validate() - } - if err == nil { - updated, _ := json.Marshal(s3s) - if err := m.UpdateSetting(ctx, tx, "s3", string(updated)); err != nil { - return fmt.Errorf("failed to insert s3 settings: %v", err) - } - } else { - log.Warnf("s3authentication settings are not being migrated, err: %v", err) - } - - // always delete because it got renamed - if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", "s3authentication"); err != nil { - log.Warnf("failed to delete s3authentication settings: %v", err) - } - } else { - log.Warn("no s3authentication setting found") - } - - // migrate upload settings - us := api.DefaultUploadSettings("mainnet") - - if v, ok := settings["contractset"]; ok { - var css struct { - Default string `json:"default"` - } - if err := json.Unmarshal([]byte(v), &css); err != nil { - log.Warnf("contractset settings are not being migrated, err: %v", err) - } else { - us.DefaultContractSet = css.Default - } - - // always delete because it got replaced - if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", "contractset"); err != nil { - return err - } - } - - if v, ok := settings["uploadpacking"]; ok { - var ups api.UploadPackingSettings - if err := json.Unmarshal([]byte(v), &ups); err != nil { - log.Warnf("uploadpacking settings are not being migrated, err: %v", err) - } else { - us.Packing = ups - } - - // always delete because it got replaced - if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", "uploadpacking"); err != nil { - return err - } - } - - if v, ok := settings["redundancy"]; ok { - var rs api.RedundancySettings - err := json.Unmarshal([]byte(v), &rs) - if err == nil { - err = rs.Validate() - } - if err != nil { - log.Warnf("redundancy settings are not being migrated, err: %v", err) - } else { - us.Redundancy = rs - } - - // always delete because it got replaced - if _, err := tx.Exec(ctx, "DELETE FROM settings WHERE `key` = ?", "redundancy"); err != nil { - return err - } - } - - // update upload settings - if err := us.Validate(); err != nil { - log.Warnf("upload settings are not being migrated, err: %v", err) - return err // developer error - } else { - updated, _ := json.Marshal(us) - if err := m.UpdateSetting(ctx, tx, "upload", string(updated)); err != nil { - return fmt.Errorf("failed to insert upload settings: %v", err) - } - } - - log.Info("migration '00018_settings' complete") - return nil + return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00018_settings", log) }, }, } diff --git a/stores/sql/mysql/migrations/main/migration_00018_settings.sql b/stores/sql/mysql/migrations/main/migration_00018_settings.sql index 09a7b0592..0ac46b266 100644 --- a/stores/sql/mysql/migrations/main/migration_00018_settings.sql +++ b/stores/sql/mysql/migrations/main/migration_00018_settings.sql @@ -1 +1,83 @@ --- placeholder +-- avoid duplicate key errors +DELETE FROM settings WHERE `key` IN ("s3", "upload", "pinned"); + +-- migrate settings +INSERT INTO settings (created_at, `key`, value) +SELECT NOW(), k, v +FROM ( + -- upload is a combination of uploadpacking, redundancy, and contractset + SELECT + "upload" as k, + JSON_MERGE_PATCH( + JSON_OBJECT("packing", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "uploadpacking")), + JSON_MERGE_PATCH( + JSON_OBJECT("redundancy", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "redundancy")), + JSON_OBJECT("defaultContractSet", (SELECT JSON_EXTRACT(value, "$.default") FROM settings WHERE `key` = "contractset")) + ) + ) as v + WHERE JSON_EXTRACT( + JSON_MERGE_PATCH( + JSON_OBJECT("packing", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "uploadpacking")), + JSON_MERGE_PATCH( + JSON_OBJECT("redundancy", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "redundancy")), + JSON_OBJECT("defaultContractSet", (SELECT JSON_EXTRACT(value, "$.default") FROM settings WHERE `key` = "contractset")) + ) + ), "$.packing" + ) IS NOT NULL + AND JSON_EXTRACT( + JSON_MERGE_PATCH( + JSON_OBJECT("packing", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "uploadpacking")), + JSON_MERGE_PATCH( + JSON_OBJECT("redundancy", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "redundancy")), + JSON_OBJECT("defaultContractSet", (SELECT JSON_EXTRACT(value, "$.default") FROM settings WHERE `key` = "contractset")) + ) + ), "$.redundancy" + ) IS NOT NULL + + UNION ALL + + -- s3 wraps the s3authentication setting + SELECT + "s3" as k, + JSON_OBJECT("authentication", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "s3authentication")) as v + WHERE JSON_EXTRACT( + JSON_OBJECT("authentication", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "s3authentication")), + "$.authentication" + ) IS NOT NULL + + UNION ALL + + -- pinning renames pricepinning and removes the 'enabled' and 'forexEndpointURL' fields + SELECT + "pinned" as k, + JSON_REMOVE( + JSON_REMOVE( + (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "pricepinning"), + "$.enabled" + ), + "$.forexEndpointURL" + ) as v + WHERE JSON_EXTRACT( + JSON_REMOVE( + JSON_REMOVE( + (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "pricepinning"), + "$.enabled" + ), + "$.forexEndpointURL" + ), + "$.currency" + ) IS NOT NULL + AND JSON_EXTRACT( + JSON_REMOVE( + JSON_REMOVE( + (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "pricepinning"), + "$.enabled" + ), + "$.forexEndpointURL" + ), + "$.threshold" + ) IS NOT NULL +) as migration; + +-- delete old settings (TODO: should we?) +DELETE FROM settings WHERE `key` IN ("uploadpacking", "redundancy", "contractset", "s3authentication", "pricepinning"); diff --git a/stores/sql/sqlite/migrations/main/migration_00018_settings.sql b/stores/sql/sqlite/migrations/main/migration_00018_settings.sql index 09a7b0592..aef6d775a 100644 --- a/stores/sql/sqlite/migrations/main/migration_00018_settings.sql +++ b/stores/sql/sqlite/migrations/main/migration_00018_settings.sql @@ -1 +1,45 @@ --- placeholder +-- avoid duplicate key errors +DELETE FROM settings WHERE `key` IN ("s3", "upload", "pinned"); + +-- migrate settings +INSERT INTO settings (created_at, `key`, value) +SELECT DATETIME('now'), k, v +FROM ( + -- upload is a combination of uploadpacking, redundancy, and contractset + SELECT + "upload" as k, + json_patch( + json_object("packing", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE key = "uploadpacking")), + json_patch( + json_object("redundancy", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE key = "redundancy")), + json_object("defaultContractSet", (SELECT JSON_EXTRACT(value, "$.default") FROM settings WHERE key = "contractset")) + ) + ) as v + WHERE json_extract(v, "$.packing") IS NOT NULL + AND json_extract(v, "$.redundancy") IS NOT NULL + + UNION ALL + + -- s3 wraps the s3authentication setting + SELECT + "s3" as k, + json_object("authentication", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE key = "s3authentication")) as v + WHERE json_extract(v, "$.authentication") IS NOT NULL + + UNION ALL + + -- pinning renames pricepinning and removes the 'enabled' and 'forexEndpointURL' fields + SELECT + "pinned" as k, + json_remove( + json_remove( + (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE key = "pricepinning"), + "$.enabled" + ), + "$.forexEndpointURL" + ) as v + WHERE json_extract(v, "$.currency") IS NOT NULL AND json_extract(v, "$.threshold") IS NOT NULL +) + +-- delete old settings +DELETE FROM settings WHERE `key` IN ("uploadpacking", "redundancy", "contractset", "s3authentication", "pricepinning"); \ No newline at end of file From dafe545d655b5b7dd5fce781b8492e96cd90d416 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 10 Sep 2024 23:19:40 +0200 Subject: [PATCH 091/708] stores: cleanup migration --- .../main/migration_00018_settings.sql | 62 +++++++++---------- .../main/migration_00018_settings.sql | 10 +-- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/stores/sql/mysql/migrations/main/migration_00018_settings.sql b/stores/sql/mysql/migrations/main/migration_00018_settings.sql index 0ac46b266..006e97784 100644 --- a/stores/sql/mysql/migrations/main/migration_00018_settings.sql +++ b/stores/sql/mysql/migrations/main/migration_00018_settings.sql @@ -8,28 +8,28 @@ FROM ( -- upload is a combination of uploadpacking, redundancy, and contractset SELECT "upload" as k, - JSON_MERGE_PATCH( - JSON_OBJECT("packing", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "uploadpacking")), - JSON_MERGE_PATCH( - JSON_OBJECT("redundancy", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "redundancy")), - JSON_OBJECT("defaultContractSet", (SELECT JSON_EXTRACT(value, "$.default") FROM settings WHERE `key` = "contractset")) + json_merge_patch( + json_object("packing", (SELECT json_extract(value, "$") FROM settings WHERE `key` = "uploadpacking")), + json_merge_patch( + json_object("redundancy", (SELECT json_extract(value, "$") FROM settings WHERE `key` = "redundancy")), + json_object("defaultContractSet", (SELECT json_extract(value, "$.default") FROM settings WHERE `key` = "contractset")) ) ) as v - WHERE JSON_EXTRACT( - JSON_MERGE_PATCH( - JSON_OBJECT("packing", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "uploadpacking")), - JSON_MERGE_PATCH( - JSON_OBJECT("redundancy", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "redundancy")), - JSON_OBJECT("defaultContractSet", (SELECT JSON_EXTRACT(value, "$.default") FROM settings WHERE `key` = "contractset")) + WHERE json_extract( + json_merge_patch( + json_object("packing", (SELECT json_extract(value, "$") FROM settings WHERE `key` = "uploadpacking")), + json_merge_patch( + json_object("redundancy", (SELECT json_extract(value, "$") FROM settings WHERE `key` = "redundancy")), + json_object("defaultContractSet", (SELECT json_extract(value, "$.default") FROM settings WHERE `key` = "contractset")) ) ), "$.packing" ) IS NOT NULL - AND JSON_EXTRACT( - JSON_MERGE_PATCH( - JSON_OBJECT("packing", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "uploadpacking")), - JSON_MERGE_PATCH( - JSON_OBJECT("redundancy", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "redundancy")), - JSON_OBJECT("defaultContractSet", (SELECT JSON_EXTRACT(value, "$.default") FROM settings WHERE `key` = "contractset")) + AND json_extract( + json_merge_patch( + json_object("packing", (SELECT json_extract(value, "$") FROM settings WHERE `key` = "uploadpacking")), + json_merge_patch( + json_object("redundancy", (SELECT json_extract(value, "$") FROM settings WHERE `key` = "redundancy")), + json_object("defaultContractSet", (SELECT json_extract(value, "$.default") FROM settings WHERE `key` = "contractset")) ) ), "$.redundancy" ) IS NOT NULL @@ -39,9 +39,9 @@ FROM ( -- s3 wraps the s3authentication setting SELECT "s3" as k, - JSON_OBJECT("authentication", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "s3authentication")) as v - WHERE JSON_EXTRACT( - JSON_OBJECT("authentication", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "s3authentication")), + json_object("authentication", (SELECT json_extract(value, "$") FROM settings WHERE `key` = "s3authentication")) as v + WHERE json_extract( + json_object("authentication", (SELECT json_extract(value, "$") FROM settings WHERE `key` = "s3authentication")), "$.authentication" ) IS NOT NULL @@ -50,27 +50,27 @@ FROM ( -- pinning renames pricepinning and removes the 'enabled' and 'forexEndpointURL' fields SELECT "pinned" as k, - JSON_REMOVE( - JSON_REMOVE( - (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "pricepinning"), + json_remove( + json_remove( + (SELECT json_extract(value, "$") FROM settings WHERE `key` = "pricepinning"), "$.enabled" ), "$.forexEndpointURL" ) as v - WHERE JSON_EXTRACT( - JSON_REMOVE( - JSON_REMOVE( - (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "pricepinning"), + WHERE json_extract( + json_remove( + json_remove( + (SELECT json_extract(value, "$") FROM settings WHERE `key` = "pricepinning"), "$.enabled" ), "$.forexEndpointURL" ), "$.currency" ) IS NOT NULL - AND JSON_EXTRACT( - JSON_REMOVE( - JSON_REMOVE( - (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE `key` = "pricepinning"), + AND json_extract( + json_remove( + json_remove( + (SELECT json_extract(value, "$") FROM settings WHERE `key` = "pricepinning"), "$.enabled" ), "$.forexEndpointURL" diff --git a/stores/sql/sqlite/migrations/main/migration_00018_settings.sql b/stores/sql/sqlite/migrations/main/migration_00018_settings.sql index aef6d775a..91d3b2aa0 100644 --- a/stores/sql/sqlite/migrations/main/migration_00018_settings.sql +++ b/stores/sql/sqlite/migrations/main/migration_00018_settings.sql @@ -9,10 +9,10 @@ FROM ( SELECT "upload" as k, json_patch( - json_object("packing", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE key = "uploadpacking")), + json_object("packing", (SELECT json_extract(value, "$") FROM settings WHERE key = "uploadpacking")), json_patch( - json_object("redundancy", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE key = "redundancy")), - json_object("defaultContractSet", (SELECT JSON_EXTRACT(value, "$.default") FROM settings WHERE key = "contractset")) + json_object("redundancy", (SELECT json_extract(value, "$") FROM settings WHERE key = "redundancy")), + json_object("defaultContractSet", (SELECT json_extract(value, "$.default") FROM settings WHERE key = "contractset")) ) ) as v WHERE json_extract(v, "$.packing") IS NOT NULL @@ -23,7 +23,7 @@ FROM ( -- s3 wraps the s3authentication setting SELECT "s3" as k, - json_object("authentication", (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE key = "s3authentication")) as v + json_object("authentication", (SELECT json_extract(value, "$") FROM settings WHERE key = "s3authentication")) as v WHERE json_extract(v, "$.authentication") IS NOT NULL UNION ALL @@ -33,7 +33,7 @@ FROM ( "pinned" as k, json_remove( json_remove( - (SELECT JSON_EXTRACT(value, "$") FROM settings WHERE key = "pricepinning"), + (SELECT json_extract(value, "$") FROM settings WHERE key = "pricepinning"), "$.enabled" ), "$.forexEndpointURL" From 1ff7805246cf42b9833f98218a160215b7add4a8 Mon Sep 17 00:00:00 2001 From: PJ Date: Wed, 11 Sep 2024 09:06:14 +0200 Subject: [PATCH 092/708] api: remove created at on api.ContractMetadata --- api/contract.go | 6 ++---- stores/metadata_test.go | 18 ++++++------------ stores/sql/main.go | 4 ++-- stores/sql/mysql/main.go | 7 +------ stores/sql/rows.go | 18 +++++++----------- stores/sql/sqlite/main.go | 9 ++------- 6 files changed, 20 insertions(+), 42 deletions(-) diff --git a/api/contract.go b/api/contract.go index 4e8f74099..e0d98bcb9 100644 --- a/api/contract.go +++ b/api/contract.go @@ -2,7 +2,6 @@ package api import ( "errors" - "time" rhpv2 "go.sia.tech/core/rhp/v2" "go.sia.tech/core/types" @@ -51,9 +50,8 @@ type ( // ContractMetadata contains all metadata for a contract. ContractMetadata struct { - CreatedAt time.Time `json:"createdAt"` - ID types.FileContractID `json:"id"` - HostKey types.PublicKey `json:"hostKey"` + ID types.FileContractID `json:"id"` + HostKey types.PublicKey `json:"hostKey"` ProofHeight uint64 `json:"proofHeight"` RenewedFrom types.FileContractID `json:"renewedFrom"` diff --git a/stores/metadata_test.go b/stores/metadata_test.go index d4653e300..bc67f5e0b 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -410,7 +410,6 @@ func TestSQLContractStore(t *testing.T) { } // assert it's equal - c.CreatedAt = inserted.CreatedAt c.HostIP = inserted.HostIP if !reflect.DeepEqual(inserted, c) { t.Fatal("contract mismatch", cmp.Diff(inserted, c)) @@ -574,7 +573,6 @@ func TestAncestorsContracts(t *testing.T) { expected.RenewedTo = renewedTo expected.ArchivalReason = api.ContractArchivalReasonRenewed expected.StartHeight = uint64(len(fcids) - 2 - i) - expected.CreatedAt = contracts[i].CreatedAt if !reflect.DeepEqual(contracts[i], expected) { t.Log(cmp.Diff(contracts[i], expected)) t.Fatal("wrong contract", i, contracts[i]) @@ -886,11 +884,9 @@ func TestSQLMetadataStore(t *testing.T) { if !reflect.DeepEqual(slab2, expectedObjSlab2) { t.Fatal("mismatch", cmp.Diff(slab2, expectedObjSlab2)) } - expectedContract1.CreatedAt = contract1.CreatedAt if !reflect.DeepEqual(contract1, expectedContract1) { t.Fatal("mismatch", cmp.Diff(contract1, expectedContract1)) } - expectedContract2.CreatedAt = contract2.CreatedAt if !reflect.DeepEqual(contract2, expectedContract2) { t.Fatal("mismatch", cmp.Diff(contract2, expectedContract2)) } @@ -4466,9 +4462,8 @@ func TestPutContract(t *testing.T) { } c := api.ContractMetadata{ - CreatedAt: time.Now(), - ID: types.FileContractID{1}, - HostKey: hk, + ID: types.FileContractID{1}, + HostKey: hk, ProofHeight: 2, RenewedFrom: types.FileContractID{3}, @@ -4501,14 +4496,13 @@ func TestPutContract(t *testing.T) { t.Fatal(err) } else if len(contracts) != 1 { t.Fatalf("expected 1 contract, instead got %d", len(contracts)) - } else if contracts[0].CreatedAt = c.CreatedAt; !reflect.DeepEqual(contracts[0], c) { + } else if !reflect.DeepEqual(contracts[0], c) { t.Fatalf("contracts are not equal, diff: %s", cmp.Diff(contracts[0], c)) } u := api.ContractMetadata{ - CreatedAt: time.Now(), - ID: types.FileContractID{1}, - HostKey: hk, + ID: types.FileContractID{1}, + HostKey: hk, ProofHeight: 17, RenewedFrom: types.FileContractID{18}, @@ -4541,7 +4535,7 @@ func TestPutContract(t *testing.T) { t.Fatal(err) } else if len(contracts) != 1 { t.Fatalf("expected 1 contract, instead got %d", len(contracts)) - } else if contracts[0].CreatedAt = u.CreatedAt; !reflect.DeepEqual(contracts[0], u) { + } else if !reflect.DeepEqual(contracts[0], u) { t.Fatalf("contracts are not equal, diff: %s", cmp.Diff(contracts[0], u)) } } diff --git a/stores/sql/main.go b/stores/sql/main.go index 37b7663dd..d2305f1f3 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -137,7 +137,7 @@ func AncestorContracts(ctx context.Context, tx sql.Tx, fcid types.FileContractID WHERE contracts.renewed_to = c.fcid ) SELECT - c.created_at, c.fcid, c.host_id, c.host_key, + c.fcid, c.host_id, c.host_key, c.archival_reason, c.proof_height, c.renewed_from, c.renewed_to, c.revision_height, c.revision_number, c.size, c.start_height, c.state, c.window_start, c.window_end, c.contract_price, c.initial_renter_funds, c.delete_spending, c.fund_account_spending, c.sector_roots_spending, c.upload_spending, @@ -1888,7 +1888,7 @@ func QueryContracts(ctx context.Context, tx sql.Tx, whereExprs []string, whereAr rows, err := tx.Query(ctx, fmt.Sprintf(` SELECT - c.created_at, c.fcid, c.host_id, c.host_key, + c.fcid, c.host_id, c.host_key, c.archival_reason, c.proof_height, c.renewed_from, c.renewed_to, c.revision_height, c.revision_number, c.size, c.start_height, c.state, c.window_start, c.window_end, c.contract_price, c.initial_renter_funds, c.delete_spending, c.fund_account_spending, c.sector_roots_spending, c.upload_spending, diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index 1c650ac8c..4728774f5 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -697,11 +697,6 @@ func (tx *MainDatabaseTx) PutContract(ctx context.Context, c api.ContractMetadat return api.ErrHostNotFound } - // set created at if it's not set - if c.CreatedAt.IsZero() { - c.CreatedAt = time.Now().UTC() - } - // update contract _, err = tx.Exec(ctx, ` INSERT INTO contracts ( @@ -715,7 +710,7 @@ ON DUPLICATE KEY UPDATE archival_reason = VALUES(archival_reason), proof_height = VALUES(proof_height), renewed_from = VALUES(renewed_from), renewed_to = VALUES(renewed_to), revision_height = VALUES(revision_height), revision_number = VALUES(revision_number), size = VALUES(size), start_height = VALUES(start_height), state = VALUES(state), window_start = VALUES(window_start), window_end = VALUES(window_end), contract_price = VALUES(contract_price), initial_renter_funds = VALUES(initial_renter_funds), delete_spending = VALUES(delete_spending), fund_account_spending = VALUES(fund_account_spending), sector_roots_spending = VALUES(sector_roots_spending), upload_spending = VALUES(upload_spending)`, - c.CreatedAt, ssql.FileContractID(c.ID), hostID, ssql.PublicKey(c.HostKey), + time.Now(), ssql.FileContractID(c.ID), hostID, ssql.PublicKey(c.HostKey), ssql.NullableString(c.ArchivalReason), c.ProofHeight, ssql.FileContractID(c.RenewedFrom), ssql.FileContractID(c.RenewedTo), c.RevisionHeight, c.RevisionNumber, c.Size, c.StartHeight, state, c.WindowStart, c.WindowEnd, ssql.Currency(c.ContractPrice), ssql.Currency(c.InitialRenterFunds), ssql.Currency(c.Spending.Deletions), ssql.Currency(c.Spending.FundAccount), ssql.Currency(c.Spending.SectorRoots), ssql.Currency(c.Spending.Uploads), diff --git a/stores/sql/rows.go b/stores/sql/rows.go index 364e61dd3..69b5aa8d9 100644 --- a/stores/sql/rows.go +++ b/stores/sql/rows.go @@ -1,8 +1,6 @@ package sql import ( - "time" - rhpv2 "go.sia.tech/core/rhp/v2" "go.sia.tech/core/types" "go.sia.tech/renterd/api" @@ -13,10 +11,9 @@ type Scanner interface { } type ContractRow struct { - CreatedAt time.Time - FCID FileContractID - HostID int64 - HostKey PublicKey + FCID FileContractID + HostID int64 + HostKey PublicKey // state fields ArchivalReason NullableString @@ -49,7 +46,7 @@ type ContractRow struct { func (r *ContractRow) Scan(s Scanner) error { return s.Scan( - &r.CreatedAt, &r.FCID, &r.HostID, &r.HostKey, + &r.FCID, &r.HostID, &r.HostKey, &r.ArchivalReason, &r.ProofHeight, &r.RenewedFrom, &r.RenewedTo, &r.RevisionHeight, &r.RevisionNumber, &r.Size, &r.StartHeight, &r.State, &r.WindowStart, &r.WindowEnd, &r.ContractPrice, &r.InitialRenterFunds, &r.DeleteSpending, &r.FundAccountSpending, &r.SectorRootsSpending, &r.UploadSpending, @@ -79,10 +76,9 @@ func (r *ContractRow) ContractMetadata() api.ContractMetadata { } return api.ContractMetadata{ - CreatedAt: r.CreatedAt, - ID: types.FileContractID(r.FCID), - HostIP: r.NetAddress, - HostKey: types.PublicKey(r.HostKey), + ID: types.FileContractID(r.FCID), + HostIP: r.NetAddress, + HostKey: types.PublicKey(r.HostKey), ContractPrice: types.Currency(r.ContractPrice), InitialRenterFunds: types.Currency(r.InitialRenterFunds), diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index 1f683ef13..50aca9e13 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -698,11 +698,6 @@ func (tx *MainDatabaseTx) PutContract(ctx context.Context, c api.ContractMetadat return api.ErrHostNotFound } - // set created at if it's not set - if c.CreatedAt.IsZero() { - c.CreatedAt = time.Now() - } - // update contract _, err = tx.Exec(ctx, ` INSERT INTO contracts ( @@ -712,11 +707,11 @@ INSERT INTO contracts ( delete_spending, fund_account_spending, sector_roots_spending, upload_spending ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(fcid) DO UPDATE SET - created_at = EXCLUDED.created_at, fcid = EXCLUDED.fcid, host_id = EXCLUDED.host_id, host_key = EXCLUDED.host_key, + fcid = EXCLUDED.fcid, host_id = EXCLUDED.host_id, host_key = EXCLUDED.host_key, archival_reason = EXCLUDED.archival_reason, proof_height = EXCLUDED.proof_height, renewed_from = EXCLUDED.renewed_from, renewed_to = EXCLUDED.renewed_to, revision_height = EXCLUDED.revision_height, revision_number = EXCLUDED.revision_number, size = EXCLUDED.size, start_height = EXCLUDED.start_height, state = EXCLUDED.state, window_start = EXCLUDED.window_start, window_end = EXCLUDED.window_end, contract_price = EXCLUDED.contract_price, initial_renter_funds = EXCLUDED.initial_renter_funds, delete_spending = EXCLUDED.delete_spending, fund_account_spending = EXCLUDED.fund_account_spending, sector_roots_spending = EXCLUDED.sector_roots_spending, upload_spending = EXCLUDED.upload_spending`, - c.CreatedAt, ssql.FileContractID(c.ID), hostID, ssql.PublicKey(c.HostKey), + time.Now(), ssql.FileContractID(c.ID), hostID, ssql.PublicKey(c.HostKey), ssql.NullableString(c.ArchivalReason), c.ProofHeight, ssql.FileContractID(c.RenewedFrom), ssql.FileContractID(c.RenewedTo), c.RevisionHeight, c.RevisionNumber, c.Size, c.StartHeight, state, c.WindowStart, c.WindowEnd, ssql.Currency(c.ContractPrice), ssql.Currency(c.InitialRenterFunds), ssql.Currency(c.Spending.Deletions), ssql.Currency(c.Spending.FundAccount), ssql.Currency(c.Spending.SectorRoots), ssql.Currency(c.Spending.Uploads), From 030b0753352ed0849ed2191315aa35f83f71c083 Mon Sep 17 00:00:00 2001 From: PJ Date: Wed, 11 Sep 2024 09:09:43 +0200 Subject: [PATCH 093/708] db: fix migration --- internal/sql/migrations.go | 10 ++++++++-- ...nding.sql => migration_00004_contract_spending.sql} | 0 ...nding.sql => migration_00004_contract_spending.sql} | 0 3 files changed, 8 insertions(+), 2 deletions(-) rename stores/sql/mysql/migrations/metrics/{migration_00003_contract_spending.sql => migration_00004_contract_spending.sql} (100%) rename stores/sql/sqlite/migrations/metrics/{migration_00003_contract_spending.sql => migration_00004_contract_spending.sql} (100%) diff --git a/internal/sql/migrations.go b/internal/sql/migrations.go index 1c0d57a42..441297c34 100644 --- a/internal/sql/migrations.go +++ b/internal/sql/migrations.go @@ -245,9 +245,15 @@ var ( }, }, { - ID: "00003_contract_spending", + ID: "00003_unix_ms", Migrate: func(tx Tx) error { - return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00003_contract_spending", log) + return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00003_unix_ms", log) + }, + }, + { + ID: "00004_contract_spending", + Migrate: func(tx Tx) error { + return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00004_contract_spending", log) }, }, } diff --git a/stores/sql/mysql/migrations/metrics/migration_00003_contract_spending.sql b/stores/sql/mysql/migrations/metrics/migration_00004_contract_spending.sql similarity index 100% rename from stores/sql/mysql/migrations/metrics/migration_00003_contract_spending.sql rename to stores/sql/mysql/migrations/metrics/migration_00004_contract_spending.sql diff --git a/stores/sql/sqlite/migrations/metrics/migration_00003_contract_spending.sql b/stores/sql/sqlite/migrations/metrics/migration_00004_contract_spending.sql similarity index 100% rename from stores/sql/sqlite/migrations/metrics/migration_00003_contract_spending.sql rename to stores/sql/sqlite/migrations/metrics/migration_00004_contract_spending.sql From ac8a663ad22f3c029ecb866924ce95f248c7b5a2 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 11 Sep 2024 10:25:50 +0200 Subject: [PATCH 094/708] stores: fix SQLite migratiton --- bus/bus.go | 7 ++----- .../migrations/main/migration_00018_gouging_units.sql | 4 ++-- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/bus/bus.go b/bus/bus.go index fa9e02cf8..79623615c 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -340,6 +340,7 @@ func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksMa masterKey: masterKey, accounts: store, + explorer: ibus.NewExplorer(explorerURL), s: s, cm: cm, w: w, @@ -366,15 +367,11 @@ func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksMa // create contract locker b.contractLocker = ibus.NewContractLocker() - // create explorer - e := ibus.NewExplorer(explorerURL) - b.explorer = e - // create sectors cache b.sectors = ibus.NewSectorsCache() // create pin manager - b.pinMgr = ibus.NewPinManager(b.alerts, wm, e, store, defaultPinUpdateInterval, defaultPinRateWindow, l) + b.pinMgr = ibus.NewPinManager(b.alerts, wm, b.explorer, store, defaultPinUpdateInterval, defaultPinRateWindow, l) // create chain subscriber b.cs = ibus.NewChainSubscriber(wm, cm, store, w, announcementMaxAge, l) diff --git a/stores/sql/sqlite/migrations/main/migration_00018_gouging_units.sql b/stores/sql/sqlite/migrations/main/migration_00018_gouging_units.sql index 77982c509..c5be99f11 100644 --- a/stores/sql/sqlite/migrations/main/migration_00018_gouging_units.sql +++ b/stores/sql/sqlite/migrations/main/migration_00018_gouging_units.sql @@ -10,8 +10,8 @@ SET value = ( FROM ( -- SELECT previous settings SELECT - JSON_UNQUOTE(JSON_EXTRACT(value, '$.maxDownloadPrice')) AS maxDownloadPrice, - JSON_UNQUOTE(JSON_EXTRACT(value, '$.maxUploadPrice')) AS maxUploadPrice + JSON_EXTRACT(value, '$.maxDownloadPrice') AS maxDownloadPrice, + JSON_EXTRACT(value, '$.maxUploadPrice') AS maxUploadPrice ) AS _ ) AS _ ) From a60225bf0c4924e55396aedba665054a70daff4a Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 11 Sep 2024 11:20:54 +0200 Subject: [PATCH 095/708] stores: address comments --- api/host.go | 4 + stores/hostdb_test.go | 8 +- stores/sql/main.go | 167 +----------------------------------------- 3 files changed, 12 insertions(+), 167 deletions(-) diff --git a/api/host.go b/api/host.go index 0422c2bee..7a9e3904b 100644 --- a/api/host.go +++ b/api/host.go @@ -98,6 +98,10 @@ var ( // ErrInvalidHostSortBy is returned when the SortBy parameter used // when querying hosts is invalid. ErrInvalidHostSortBy = errors.New("invalid SortBy parameter") + + // ErrInvalidHostSortDir is returned when the SortDir parameter used + // when querying hosts is invalid. + ErrInvalidHostSortDir = errors.New("invalid SortDir parameter") ) var ( diff --git a/stores/hostdb_test.go b/stores/hostdb_test.go index bada7249e..90de32196 100644 --- a/stores/hostdb_test.go +++ b/stores/hostdb_test.go @@ -142,10 +142,10 @@ func TestHosts(t *testing.T) { { HostKey: hk1, PriceTable: rhpv3.HostPriceTable{ - InitBaseCost: types.NewCurrency64(2), + InitBaseCost: types.NewCurrency64(230), }, Settings: rhpv2.HostSettings{ - BaseRPCPrice: types.NewCurrency64(2), + BaseRPCPrice: types.NewCurrency64(230), }, Success: true, Timestamp: time.Now(), @@ -160,10 +160,10 @@ func TestHosts(t *testing.T) { { HostKey: hk3, PriceTable: rhpv3.HostPriceTable{ - InitBaseCost: types.NewCurrency64(1), + InitBaseCost: types.NewCurrency64(15), }, Settings: rhpv2.HostSettings{ - BaseRPCPrice: types.NewCurrency64(1), + BaseRPCPrice: types.NewCurrency64(15), }, Success: true, Timestamp: time.Now(), diff --git a/stores/sql/main.go b/stores/sql/main.go index 59188b17b..4fe847391 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -792,9 +792,11 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er var orderByExpr string if opts.SortBy != "" { switch opts.SortDir { - case "", api.SortDirAsc, api.SortDirDesc: + case "": + opts.SortDir = api.SortDirAsc + case api.SortDirAsc, api.SortDirDesc: default: - return nil, fmt.Errorf("invalid sort order: %v", opts.SortDir) + return nil, fmt.Errorf("%w: %v", api.ErrInvalidHostSortDir, opts.SortDir) } if !api.IsValidHostSortBy(opts.SortBy) { return nil, fmt.Errorf("%w: %s", api.ErrInvalidHostSortBy, opts.SortBy) @@ -1526,167 +1528,6 @@ func dirID(ctx context.Context, tx sql.Tx, dirPath string) (int64, error) { return id, nil } -func ObjectEntries(ctx context.Context, tx Tx, bucket, key, prefix, sortBy, sortDir, marker string, offset, limit int) ([]api.ObjectMetadata, bool, error) { - // sanity check we are passing a directory - if !strings.HasSuffix(key, "/") { - panic("path must end in /") - } - - // sanity check we are passing sane paging parameters - usingMarker := marker != "" - usingOffset := offset > 0 - if usingMarker && usingOffset { - return nil, false, errors.New("fetching entries using a marker and an offset is not supported at the same time") - } - - // fetch one more to see if there are more entries - if limit <= -1 { - limit = math.MaxInt - } else if limit != math.MaxInt { - limit++ - } - - // establish sane defaults for sorting - if sortBy == "" { - sortBy = api.ObjectSortByName - } - if sortDir == "" { - sortDir = api.SortDirAsc - } - - // fetch directory id - dirID, err := dirID(ctx, tx, key) - if errors.Is(err, dsql.ErrNoRows) { - return []api.ObjectMetadata{}, false, nil - } else if err != nil { - return nil, false, fmt.Errorf("failed to fetch directory id: %w", err) - } - - args := []any{ - key, - dirID, bucket, - } - - // apply prefix - var prefixExpr string - if prefix != "" { - prefixExpr = "AND SUBSTR(o.object_id, 1, ?) = ?" - args = append(args, - utf8.RuneCountInString(key+prefix), key+prefix, - utf8.RuneCountInString(key+prefix), key+prefix, - ) - } - - args = append(args, - bucket, - key+"%", - utf8.RuneCountInString(key), key, - dirID, - ) - - // apply marker - var whereExpr string - markerExprs, markerArgs, err := whereObjectMarker(marker, sortBy, sortDir, func(dst any, marker, col string) error { - var groupFn string - switch col { - case "size": - groupFn = "SUM" - case "health": - groupFn = "MIN" - default: - return fmt.Errorf("unknown column: %v", col) - } - err := tx.QueryRow(ctx, fmt.Sprintf(` - SELECT o.%s - FROM objects o - INNER JOIN buckets b ON o.db_bucket_id = b.id - WHERE b.name = ? AND o.object_id = ? - UNION ALL - SELECT %s(o.%s) - FROM objects o - INNER JOIN buckets b ON o.db_bucket_id = b.id - INNER JOIN directories d ON SUBSTR(o.object_id, 1, %s(d.name)) = d.name - WHERE b.name = ? AND d.name = ? - GROUP BY d.id - `, col, groupFn, col, tx.CharLengthExpr()), bucket, marker, bucket, marker).Scan(dst) - if errors.Is(err, dsql.ErrNoRows) { - return api.ErrMarkerNotFound - } else { - return err - } - }) - if err != nil { - return nil, false, fmt.Errorf("failed to query marker: %w", err) - } else if len(markerExprs) > 0 { - whereExpr = "WHERE " + strings.Join(markerExprs, " AND ") - } - args = append(args, markerArgs...) - - // apply sorting - orderByExprs, err := orderByObject(sortBy, sortDir) - if err != nil { - return nil, false, fmt.Errorf("failed to apply sorting: %w", err) - } - - // apply offset and limit - args = append(args, limit, offset) - - // objectsQuery consists of 2 parts - // 1. fetch all objects in requested directory - // 2. fetch all sub-directories - rows, err := tx.Query(ctx, fmt.Sprintf(` - SELECT %s - FROM ( - SELECT o.object_id, o.size, o.health, o.mime_type, o.created_at, o.etag - FROM objects o - LEFT JOIN directories d ON d.name = o.object_id - WHERE o.object_id != ? AND o.db_directory_id = ? AND o.db_bucket_id = (SELECT id FROM buckets b WHERE b.name = ?) %s - AND d.id IS NULL - UNION ALL - SELECT d.name as object_id, SUM(o.size), MIN(o.health), '' as mime_type, MAX(o.created_at) as created_at, '' as etag - FROM objects o - INNER JOIN directories d ON SUBSTR(o.object_id, 1, %s(d.name)) = d.name %s - WHERE o.db_bucket_id = (SELECT id FROM buckets b WHERE b.name = ?) - AND o.object_id LIKE ? - AND SUBSTR(o.object_id, 1, ?) = ? - AND d.db_parent_id = ? - GROUP BY d.id - ) AS o - %s - ORDER BY %s - LIMIT ? OFFSET ? - `, - tx.SelectObjectMetadataExpr(), - prefixExpr, - tx.CharLengthExpr(), - prefixExpr, - whereExpr, - strings.Join(orderByExprs, ", "), - ), args...) - if err != nil { - return nil, false, fmt.Errorf("failed to fetch objects: %w", err) - } - defer rows.Close() - - var objects []api.ObjectMetadata - for rows.Next() { - om, err := tx.ScanObjectMetadata(rows) - if err != nil { - return nil, false, fmt.Errorf("failed to scan object metadata: %w", err) - } - objects = append(objects, om) - } - - // trim last element if we have more - var hasMore bool - if len(objects) == limit { - hasMore = true - objects = objects[:len(objects)-1] - } - - return objects, hasMore, nil -} - func ObjectMetadata(ctx context.Context, tx Tx, bucket, key string) (api.Object, error) { // fetch object id var objID int64 From be0102e38f9021416c0e12ca257c036077d3b9fc Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 11 Sep 2024 11:31:31 +0200 Subject: [PATCH 096/708] stores: remove some sorting options on pricetables --- api/host.go | 50 +++++++++++++++++--------------------------------- 1 file changed, 17 insertions(+), 33 deletions(-) diff --git a/api/host.go b/api/host.go index 7a9e3904b..bab76ce21 100644 --- a/api/host.go +++ b/api/host.go @@ -24,39 +24,23 @@ const ( var validHostSortBy = map[string]any{ // price table - "price_table.uid": nil, - "price_table.validity": nil, - "price_table.hostblockheight": nil, - "price_table.updatepricetablecost": nil, - "price_table.accountbalancecost": nil, - "price_table.fundaccountcost": nil, - "price_table.latestrevisioncost": nil, - "price_table.subscriptionmemorycost": nil, - "price_table.subscriptionnotificationcost": nil, - "price_table.initbasecost": nil, - "price_table.memorytimecost": nil, - "price_table.downloadbandwidthcost": nil, - "price_table.uploadbandwidthcost": nil, - "price_table.dropsectorsbasecost": nil, - "price_table.dropsectorsunitcost": nil, - "price_table.hassectorbasecost": nil, - "price_table.readbasecost": nil, - "price_table.readlengthcost": nil, - "price_table.renewcontractcost": nil, - "price_table.revisionbasecost": nil, - "price_table.swapsectorcost": nil, - "price_table.writebasecost": nil, - "price_table.writelengthcost": nil, - "price_table.writestorecost": nil, - "price_table.txnfeeminrecommended": nil, - "price_table.txnfeemaxrecommended": nil, - "price_table.contractprice": nil, - "price_table.collateralcost": nil, - "price_table.maxcollateral": nil, - "price_table.maxduration": nil, - "price_table.windowsize": nil, - "price_table.registryentriesleft": nil, - "price_table.registryentriestotal": nil, + "price_table.uid": nil, + "price_table.validity": nil, + "price_table.hostblockheight": nil, + "price_table.latestrevisioncost": nil, + "price_table.initbasecost": nil, + "price_table.downloadbandwidthcost": nil, + "price_table.uploadbandwidthcost": nil, + "price_table.readbasecost": nil, + "price_table.writebasecost": nil, + "price_table.writestorecost": nil, + "price_table.txnfeeminrecommended": nil, + "price_table.txnfeemaxrecommended": nil, + "price_table.contractprice": nil, + "price_table.collateralcost": nil, + "price_table.maxcollateral": nil, + "price_table.maxduration": nil, + "price_table.windowsize": nil, // settings "settings.acceptingcontracts": nil, From 7dc4831313603428362cd19fb3224337492d1970 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 11 Sep 2024 12:16:13 +0200 Subject: [PATCH 097/708] stores: add decimal cast --- stores/sql/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stores/sql/main.go b/stores/sql/main.go index 4fe847391..ffc2449c6 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -812,7 +812,7 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er } else { return nil, fmt.Errorf("invalid sortBy parameter: %v", opts.SortBy) } - orderByExpr = fmt.Sprintf("ORDER BY %s %s", fieldExpr, opts.SortDir) + orderByExpr = fmt.Sprintf("ORDER BY CAST(%s AS DECIMAL(65, 0)) %s", fieldExpr, opts.SortDir) } var blockedExpr string From 360d6657ca518fd43814e17fe027cd036d830670 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 11 Sep 2024 12:27:25 +0200 Subject: [PATCH 098/708] stores: remove sorting --- api/host.go | 64 ------------------------------- bus/client/hosts.go | 2 - bus/routes.go | 16 -------- stores/hostdb_test.go | 88 ------------------------------------------- stores/sql/main.go | 25 ------------ 5 files changed, 195 deletions(-) diff --git a/api/host.go b/api/host.go index bab76ce21..a8d7a40e4 100644 --- a/api/host.go +++ b/api/host.go @@ -22,70 +22,10 @@ const ( UsabilityFilterModeUnusable = "unusable" ) -var validHostSortBy = map[string]any{ - // price table - "price_table.uid": nil, - "price_table.validity": nil, - "price_table.hostblockheight": nil, - "price_table.latestrevisioncost": nil, - "price_table.initbasecost": nil, - "price_table.downloadbandwidthcost": nil, - "price_table.uploadbandwidthcost": nil, - "price_table.readbasecost": nil, - "price_table.writebasecost": nil, - "price_table.writestorecost": nil, - "price_table.txnfeeminrecommended": nil, - "price_table.txnfeemaxrecommended": nil, - "price_table.contractprice": nil, - "price_table.collateralcost": nil, - "price_table.maxcollateral": nil, - "price_table.maxduration": nil, - "price_table.windowsize": nil, - - // settings - "settings.acceptingcontracts": nil, - "settings.maxdownloadbatchsize": nil, - "settings.maxduration": nil, - "settings.maxrevisebatchsize": nil, - "settings.netaddress": nil, - "settings.remainingstorage": nil, - "settings.sectorsize": nil, - "settings.totalstorage": nil, - "settings.unlockhash": nil, - "settings.windowsize": nil, - "settings.collateral": nil, - "settings.maxcollateral": nil, - "settings.baserpcprice": nil, - "settings.contractprice": nil, - "settings.downloadbandwidthprice": nil, - "settings.sectoraccessprice": nil, - "settings.storageprice": nil, - "settings.uploadbandwidthprice": nil, - "settings.ephemeralaccountexpiry": nil, - "settings.maxephemeralaccountbalance": nil, - "settings.revisionnumber": nil, - "settings.version": nil, - "settings.release": nil, - "settings.siamuxport": nil, -} - -func IsValidHostSortBy(sortBy string) bool { - _, ok := validHostSortBy[sortBy] - return ok -} - var ( // ErrHostNotFound is returned when a host can't be retrieved from the // database. ErrHostNotFound = errors.New("host doesn't exist in hostdb") - - // ErrInvalidHostSortBy is returned when the SortBy parameter used - // when querying hosts is invalid. - ErrInvalidHostSortBy = errors.New("invalid SortBy parameter") - - // ErrInvalidHostSortDir is returned when the SortDir parameter used - // when querying hosts is invalid. - ErrInvalidHostSortDir = errors.New("invalid SortDir parameter") ) var ( @@ -126,8 +66,6 @@ type ( UsabilityMode string `json:"usabilityMode"` AddressContains string `json:"addressContains"` KeyIn []types.PublicKey `json:"keyIn"` - SortBy string `json:"sortBy"` - SortDir string `json:"sortDir"` } // HostResponse is the response type for the GET @@ -179,8 +117,6 @@ type ( KeyIn []types.PublicKey Limit int Offset int - SortBy string - SortDir string } ) diff --git a/bus/client/hosts.go b/bus/client/hosts.go index f9480b32b..d7aa5f6db 100644 --- a/bus/client/hosts.go +++ b/bus/client/hosts.go @@ -26,8 +26,6 @@ func (c *Client) Hosts(ctx context.Context, opts api.HostOptions) (hosts []api.H UsabilityMode: opts.UsabilityMode, AddressContains: opts.AddressContains, KeyIn: opts.KeyIn, - SortBy: opts.SortBy, - SortDir: opts.SortDir, }, &hosts) return } diff --git a/bus/routes.go b/bus/routes.go index 80f8fb175..96c18eacb 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -486,20 +486,6 @@ func (b *Bus) hostsHandlerPOST(jc jape.Context) { return } - // validate sorting params - if req.SortBy != "" { - if !api.IsValidHostSortBy(req.SortBy) { - jc.Error(fmt.Errorf("%w: %v", api.ErrInvalidHostSortBy, req.SortBy), http.StatusBadRequest) - return - } - } - switch req.SortDir { - case "", api.SortDirAsc, api.SortDirDesc: - default: - jc.Error(errors.New("invalid value for SortDir param, options are 'asc' and 'desc'"), http.StatusBadRequest) - return - } - // validate the offset and limit if req.Offset < 0 { jc.Error(errors.New("offset must be non-negative"), http.StatusBadRequest) @@ -520,8 +506,6 @@ func (b *Bus) hostsHandlerPOST(jc jape.Context) { KeyIn: req.KeyIn, Offset: req.Offset, Limit: req.Limit, - SortBy: req.SortBy, - SortDir: req.SortDir, }) if jc.Check(fmt.Sprintf("couldn't fetch hosts %d-%d", req.Offset, req.Offset+req.Limit), err) != nil { return diff --git a/stores/hostdb_test.go b/stores/hostdb_test.go index 90de32196..555fc2ac8 100644 --- a/stores/hostdb_test.go +++ b/stores/hostdb_test.go @@ -138,41 +138,6 @@ func TestHosts(t *testing.T) { } hk1, hk2, hk3 := hks[0], hks[1], hks[2] - err := ss.RecordHostScans(context.Background(), []api.HostScan{ - { - HostKey: hk1, - PriceTable: rhpv3.HostPriceTable{ - InitBaseCost: types.NewCurrency64(230), - }, - Settings: rhpv2.HostSettings{ - BaseRPCPrice: types.NewCurrency64(230), - }, - Success: true, - Timestamp: time.Now(), - }, - { - HostKey: hk2, - PriceTable: rhpv3.HostPriceTable{}, // empty price table - Settings: rhpv2.HostSettings{}, // empty settings - Success: true, - Timestamp: time.Now(), - }, - { - HostKey: hk3, - PriceTable: rhpv3.HostPriceTable{ - InitBaseCost: types.NewCurrency64(15), - }, - Settings: rhpv2.HostSettings{ - BaseRPCPrice: types.NewCurrency64(15), - }, - Success: true, - Timestamp: time.Now(), - }, - }) - if err != nil { - t.Fatal(err) - } - // search all hosts his, err := ss.Hosts(context.Background(), api.HostOptions{ AutopilotID: "", @@ -189,59 +154,6 @@ func TestHosts(t *testing.T) { t.Fatal("unexpected") } - // search all hosts sorted by initbasecost - his, err = ss.Hosts(context.Background(), api.HostOptions{ - FilterMode: api.HostFilterModeAll, - SortBy: "price_table.initbasecost", - Limit: -1, - }) - if err != nil { - t.Fatal(err) - } else if len(his) != 3 { - t.Fatal("unexpected", len(his)) - } else if his[0].PublicKey != hk2 || his[1].PublicKey != hk3 || his[2].PublicKey != hk1 { - t.Fatal("unexpected", his[0].PublicKey, his[1].PublicKey, his[2].PublicKey) - } - - // reverse order - his, err = ss.Hosts(context.Background(), api.HostOptions{ - FilterMode: api.HostFilterModeAll, - SortBy: "price_table.initbasecost", - SortDir: api.SortDirDesc, - Limit: -1, - }) - if err != nil { - t.Fatal(err) - } else if len(his) != 3 { - t.Fatal("unexpected", len(his)) - } else if his[0].PublicKey != hk1 || his[1].PublicKey != hk3 || his[2].PublicKey != hk2 { - t.Fatal("unexpected", his[0].PublicKey, his[1].PublicKey, his[2].PublicKey) - } - - // search all hosts sorted by baserpcprice - his, err = ss.Hosts(context.Background(), api.HostOptions{ - FilterMode: api.HostFilterModeAll, - SortBy: "settings.baserpcprice", - Limit: -1, - }) - if err != nil { - t.Fatal(err) - } else if len(his) != 3 { - t.Fatal("unexpected", len(his)) - } else if his[0].PublicKey != hk2 || his[1].PublicKey != hk3 || his[2].PublicKey != hk1 { - t.Fatal("unexpected", his[0].PublicKey, his[1].PublicKey, his[2].PublicKey) - } - - // search by invalid key - his, err = ss.Hosts(context.Background(), api.HostOptions{ - FilterMode: api.HostFilterModeAll, - SortBy: "price_table.invalid", - Limit: -1, - }) - if !errors.Is(err, api.ErrInvalidHostSortBy) { - t.Fatal(err) - } - // assert offset & limit are taken into account his, err = ss.Hosts(context.Background(), api.HostOptions{ AutopilotID: "", diff --git a/stores/sql/main.go b/stores/sql/main.go index ffc2449c6..b8c5c8759 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -790,31 +790,6 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er } var orderByExpr string - if opts.SortBy != "" { - switch opts.SortDir { - case "": - opts.SortDir = api.SortDirAsc - case api.SortDirAsc, api.SortDirDesc: - default: - return nil, fmt.Errorf("%w: %v", api.ErrInvalidHostSortDir, opts.SortDir) - } - if !api.IsValidHostSortBy(opts.SortBy) { - return nil, fmt.Errorf("%w: %s", api.ErrInvalidHostSortBy, opts.SortBy) - } - - var fieldExpr string - if strings.HasPrefix(opts.SortBy, "settings.") { - field := strings.TrimPrefix(opts.SortBy, "settings.") - fieldExpr = fmt.Sprintf("h.settings ->> '$.%s'", field) - } else if strings.HasPrefix(opts.SortBy, "price_table.") { - field := strings.TrimPrefix(opts.SortBy, "price_table.") - fieldExpr = fmt.Sprintf("h.price_table ->> '$.%s'", field) - } else { - return nil, fmt.Errorf("invalid sortBy parameter: %v", opts.SortBy) - } - orderByExpr = fmt.Sprintf("ORDER BY CAST(%s AS DECIMAL(65, 0)) %s", fieldExpr, opts.SortDir) - } - var blockedExpr string if len(blockedExprs) > 0 { blockedExpr = strings.Join(blockedExprs, " OR ") From b1ab76cd9b634c26d98943605dab477b6cffa46f Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 11 Sep 2024 12:37:57 +0200 Subject: [PATCH 099/708] Revert "stores: remove sorting" This reverts commit 360d6657ca518fd43814e17fe027cd036d830670. --- api/host.go | 64 +++++++++++++++++++++++++++++++ bus/client/hosts.go | 2 + bus/routes.go | 16 ++++++++ stores/hostdb_test.go | 88 +++++++++++++++++++++++++++++++++++++++++++ stores/sql/main.go | 25 ++++++++++++ 5 files changed, 195 insertions(+) diff --git a/api/host.go b/api/host.go index a8d7a40e4..bab76ce21 100644 --- a/api/host.go +++ b/api/host.go @@ -22,10 +22,70 @@ const ( UsabilityFilterModeUnusable = "unusable" ) +var validHostSortBy = map[string]any{ + // price table + "price_table.uid": nil, + "price_table.validity": nil, + "price_table.hostblockheight": nil, + "price_table.latestrevisioncost": nil, + "price_table.initbasecost": nil, + "price_table.downloadbandwidthcost": nil, + "price_table.uploadbandwidthcost": nil, + "price_table.readbasecost": nil, + "price_table.writebasecost": nil, + "price_table.writestorecost": nil, + "price_table.txnfeeminrecommended": nil, + "price_table.txnfeemaxrecommended": nil, + "price_table.contractprice": nil, + "price_table.collateralcost": nil, + "price_table.maxcollateral": nil, + "price_table.maxduration": nil, + "price_table.windowsize": nil, + + // settings + "settings.acceptingcontracts": nil, + "settings.maxdownloadbatchsize": nil, + "settings.maxduration": nil, + "settings.maxrevisebatchsize": nil, + "settings.netaddress": nil, + "settings.remainingstorage": nil, + "settings.sectorsize": nil, + "settings.totalstorage": nil, + "settings.unlockhash": nil, + "settings.windowsize": nil, + "settings.collateral": nil, + "settings.maxcollateral": nil, + "settings.baserpcprice": nil, + "settings.contractprice": nil, + "settings.downloadbandwidthprice": nil, + "settings.sectoraccessprice": nil, + "settings.storageprice": nil, + "settings.uploadbandwidthprice": nil, + "settings.ephemeralaccountexpiry": nil, + "settings.maxephemeralaccountbalance": nil, + "settings.revisionnumber": nil, + "settings.version": nil, + "settings.release": nil, + "settings.siamuxport": nil, +} + +func IsValidHostSortBy(sortBy string) bool { + _, ok := validHostSortBy[sortBy] + return ok +} + var ( // ErrHostNotFound is returned when a host can't be retrieved from the // database. ErrHostNotFound = errors.New("host doesn't exist in hostdb") + + // ErrInvalidHostSortBy is returned when the SortBy parameter used + // when querying hosts is invalid. + ErrInvalidHostSortBy = errors.New("invalid SortBy parameter") + + // ErrInvalidHostSortDir is returned when the SortDir parameter used + // when querying hosts is invalid. + ErrInvalidHostSortDir = errors.New("invalid SortDir parameter") ) var ( @@ -66,6 +126,8 @@ type ( UsabilityMode string `json:"usabilityMode"` AddressContains string `json:"addressContains"` KeyIn []types.PublicKey `json:"keyIn"` + SortBy string `json:"sortBy"` + SortDir string `json:"sortDir"` } // HostResponse is the response type for the GET @@ -117,6 +179,8 @@ type ( KeyIn []types.PublicKey Limit int Offset int + SortBy string + SortDir string } ) diff --git a/bus/client/hosts.go b/bus/client/hosts.go index d7aa5f6db..f9480b32b 100644 --- a/bus/client/hosts.go +++ b/bus/client/hosts.go @@ -26,6 +26,8 @@ func (c *Client) Hosts(ctx context.Context, opts api.HostOptions) (hosts []api.H UsabilityMode: opts.UsabilityMode, AddressContains: opts.AddressContains, KeyIn: opts.KeyIn, + SortBy: opts.SortBy, + SortDir: opts.SortDir, }, &hosts) return } diff --git a/bus/routes.go b/bus/routes.go index 96c18eacb..80f8fb175 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -486,6 +486,20 @@ func (b *Bus) hostsHandlerPOST(jc jape.Context) { return } + // validate sorting params + if req.SortBy != "" { + if !api.IsValidHostSortBy(req.SortBy) { + jc.Error(fmt.Errorf("%w: %v", api.ErrInvalidHostSortBy, req.SortBy), http.StatusBadRequest) + return + } + } + switch req.SortDir { + case "", api.SortDirAsc, api.SortDirDesc: + default: + jc.Error(errors.New("invalid value for SortDir param, options are 'asc' and 'desc'"), http.StatusBadRequest) + return + } + // validate the offset and limit if req.Offset < 0 { jc.Error(errors.New("offset must be non-negative"), http.StatusBadRequest) @@ -506,6 +520,8 @@ func (b *Bus) hostsHandlerPOST(jc jape.Context) { KeyIn: req.KeyIn, Offset: req.Offset, Limit: req.Limit, + SortBy: req.SortBy, + SortDir: req.SortDir, }) if jc.Check(fmt.Sprintf("couldn't fetch hosts %d-%d", req.Offset, req.Offset+req.Limit), err) != nil { return diff --git a/stores/hostdb_test.go b/stores/hostdb_test.go index 555fc2ac8..90de32196 100644 --- a/stores/hostdb_test.go +++ b/stores/hostdb_test.go @@ -138,6 +138,41 @@ func TestHosts(t *testing.T) { } hk1, hk2, hk3 := hks[0], hks[1], hks[2] + err := ss.RecordHostScans(context.Background(), []api.HostScan{ + { + HostKey: hk1, + PriceTable: rhpv3.HostPriceTable{ + InitBaseCost: types.NewCurrency64(230), + }, + Settings: rhpv2.HostSettings{ + BaseRPCPrice: types.NewCurrency64(230), + }, + Success: true, + Timestamp: time.Now(), + }, + { + HostKey: hk2, + PriceTable: rhpv3.HostPriceTable{}, // empty price table + Settings: rhpv2.HostSettings{}, // empty settings + Success: true, + Timestamp: time.Now(), + }, + { + HostKey: hk3, + PriceTable: rhpv3.HostPriceTable{ + InitBaseCost: types.NewCurrency64(15), + }, + Settings: rhpv2.HostSettings{ + BaseRPCPrice: types.NewCurrency64(15), + }, + Success: true, + Timestamp: time.Now(), + }, + }) + if err != nil { + t.Fatal(err) + } + // search all hosts his, err := ss.Hosts(context.Background(), api.HostOptions{ AutopilotID: "", @@ -154,6 +189,59 @@ func TestHosts(t *testing.T) { t.Fatal("unexpected") } + // search all hosts sorted by initbasecost + his, err = ss.Hosts(context.Background(), api.HostOptions{ + FilterMode: api.HostFilterModeAll, + SortBy: "price_table.initbasecost", + Limit: -1, + }) + if err != nil { + t.Fatal(err) + } else if len(his) != 3 { + t.Fatal("unexpected", len(his)) + } else if his[0].PublicKey != hk2 || his[1].PublicKey != hk3 || his[2].PublicKey != hk1 { + t.Fatal("unexpected", his[0].PublicKey, his[1].PublicKey, his[2].PublicKey) + } + + // reverse order + his, err = ss.Hosts(context.Background(), api.HostOptions{ + FilterMode: api.HostFilterModeAll, + SortBy: "price_table.initbasecost", + SortDir: api.SortDirDesc, + Limit: -1, + }) + if err != nil { + t.Fatal(err) + } else if len(his) != 3 { + t.Fatal("unexpected", len(his)) + } else if his[0].PublicKey != hk1 || his[1].PublicKey != hk3 || his[2].PublicKey != hk2 { + t.Fatal("unexpected", his[0].PublicKey, his[1].PublicKey, his[2].PublicKey) + } + + // search all hosts sorted by baserpcprice + his, err = ss.Hosts(context.Background(), api.HostOptions{ + FilterMode: api.HostFilterModeAll, + SortBy: "settings.baserpcprice", + Limit: -1, + }) + if err != nil { + t.Fatal(err) + } else if len(his) != 3 { + t.Fatal("unexpected", len(his)) + } else if his[0].PublicKey != hk2 || his[1].PublicKey != hk3 || his[2].PublicKey != hk1 { + t.Fatal("unexpected", his[0].PublicKey, his[1].PublicKey, his[2].PublicKey) + } + + // search by invalid key + his, err = ss.Hosts(context.Background(), api.HostOptions{ + FilterMode: api.HostFilterModeAll, + SortBy: "price_table.invalid", + Limit: -1, + }) + if !errors.Is(err, api.ErrInvalidHostSortBy) { + t.Fatal(err) + } + // assert offset & limit are taken into account his, err = ss.Hosts(context.Background(), api.HostOptions{ AutopilotID: "", diff --git a/stores/sql/main.go b/stores/sql/main.go index b8c5c8759..ffc2449c6 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -790,6 +790,31 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er } var orderByExpr string + if opts.SortBy != "" { + switch opts.SortDir { + case "": + opts.SortDir = api.SortDirAsc + case api.SortDirAsc, api.SortDirDesc: + default: + return nil, fmt.Errorf("%w: %v", api.ErrInvalidHostSortDir, opts.SortDir) + } + if !api.IsValidHostSortBy(opts.SortBy) { + return nil, fmt.Errorf("%w: %s", api.ErrInvalidHostSortBy, opts.SortBy) + } + + var fieldExpr string + if strings.HasPrefix(opts.SortBy, "settings.") { + field := strings.TrimPrefix(opts.SortBy, "settings.") + fieldExpr = fmt.Sprintf("h.settings ->> '$.%s'", field) + } else if strings.HasPrefix(opts.SortBy, "price_table.") { + field := strings.TrimPrefix(opts.SortBy, "price_table.") + fieldExpr = fmt.Sprintf("h.price_table ->> '$.%s'", field) + } else { + return nil, fmt.Errorf("invalid sortBy parameter: %v", opts.SortBy) + } + orderByExpr = fmt.Sprintf("ORDER BY CAST(%s AS DECIMAL(65, 0)) %s", fieldExpr, opts.SortDir) + } + var blockedExpr string if len(blockedExprs) > 0 { blockedExpr = strings.Join(blockedExprs, " OR ") From 1f4d42647b2912e744195436527db2b1a9dd2952 Mon Sep 17 00:00:00 2001 From: PJ Date: Wed, 11 Sep 2024 14:55:41 +0200 Subject: [PATCH 100/708] stores: remove default settings --- bus/bus.go | 4 ++- bus/routes.go | 33 ++++++++++++++---- cmd/renterd/node.go | 4 +-- internal/bus/pinmanager.go | 14 ++++++-- internal/test/e2e/cluster.go | 6 ++-- stores/settings.go | 34 +++---------------- stores/sql.go | 5 +-- .../main/migration_00018_settings.sql | 25 ++++++++------ stores/sql_test.go | 3 +- 9 files changed, 66 insertions(+), 62 deletions(-) diff --git a/bus/bus.go b/bus/bus.go index 148baae39..56fa946e7 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -309,6 +309,7 @@ type ( type Bus struct { startTime time.Time masterKey utils.MasterKey + network *consensus.Network alerts alerts.Alerter alertMgr AlertManager @@ -338,12 +339,13 @@ type Bus struct { } // New returns a new Bus -func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksManager, cm ChainManager, s Syncer, w Wallet, store Store, announcementMaxAge time.Duration, explorerURL string, l *zap.Logger) (_ *Bus, err error) { +func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksManager, cm ChainManager, s Syncer, w Wallet, store Store, announcementMaxAge time.Duration, explorerURL string, network *consensus.Network, l *zap.Logger) (_ *Bus, err error) { l = l.Named("bus") b := &Bus{ startTime: time.Now(), masterKey: masterKey, + network: network, accounts: store, s: s, diff --git a/bus/routes.go b/bus/routes.go index deee1410e..efcfbbfeb 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -16,6 +16,7 @@ import ( rhpv2 "go.sia.tech/core/rhp/v2" rhp3 "go.sia.tech/renterd/internal/rhp/v3" + "go.sia.tech/renterd/stores/sql" "go.sia.tech/renterd/internal/gouging" rhp2 "go.sia.tech/renterd/internal/rhp/v2" @@ -1341,7 +1342,11 @@ func (b *Bus) packedSlabsHandlerDonePOST(jc jape.Context) { func (b *Bus) settingsGougingHandlerGET(jc jape.Context) { gs, err := b.ss.GougingSettings(jc.Request.Context()) - if jc.Check("failed to get gouging settings", err) == nil { + if errors.Is(err, sql.ErrSettingNotFound) { + b.logger.Warn("gouging settings not found, returning defaults") + jc.Encode(api.DefaultGougingSettings) + return + } else if jc.Check("failed to get gouging settings", err) == nil { jc.Encode(gs) } } @@ -1368,7 +1373,11 @@ func (b *Bus) settingsGougingHandlerPUT(jc jape.Context) { func (b *Bus) settingsPinnedHandlerGET(jc jape.Context) { ps, err := b.ss.PinnedSettings(jc.Request.Context()) - if jc.Check("failed to get pinned settings", err) == nil { + if errors.Is(err, sql.ErrSettingNotFound) { + b.logger.Warn("pinned settings not found, returning defaults") + jc.Encode(api.DefaultPinnedSettings) + return + } else if jc.Check("failed to get pinned settings", err) == nil { // populate the Autopilots map with the current autopilots aps, err := b.as.Autopilots(jc.Request.Context()) if jc.Check("failed to fetch autopilots", err) != nil { @@ -1413,7 +1422,11 @@ func (b *Bus) settingsPinnedHandlerPUT(jc jape.Context) { func (b *Bus) settingsUploadHandlerGET(jc jape.Context) { us, err := b.ss.UploadSettings(jc.Request.Context()) - if jc.Check("failed to get upload settings", err) == nil { + if errors.Is(err, sql.ErrSettingNotFound) { + b.logger.Warn("upload settings not found, returning defaults") + jc.Encode(api.DefaultUploadSettings(b.network.Name)) + return + } else if jc.Check("failed to get upload settings", err) == nil { jc.Encode(us) } } @@ -1439,7 +1452,11 @@ func (b *Bus) settingsUploadHandlerPUT(jc jape.Context) { func (b *Bus) settingsS3HandlerGET(jc jape.Context) { s3s, err := b.ss.S3Settings(jc.Request.Context()) - if jc.Check("failed to get S3 settings", err) == nil { + if errors.Is(err, sql.ErrSettingNotFound) { + b.logger.Warn("S3 settings not found, returning defaults") + jc.Encode(api.DefaultS3Settings) + return + } else if jc.Check("failed to get S3 settings", err) == nil { jc.Encode(s3s) } } @@ -1686,12 +1703,16 @@ func (b *Bus) paramsHandlerGougingGET(jc jape.Context) { func (b *Bus) gougingParams(ctx context.Context) (api.GougingParams, error) { gs, err := b.ss.GougingSettings(ctx) - if err != nil { + if errors.Is(err, sql.ErrSettingNotFound) { + gs = api.DefaultGougingSettings + } else if err != nil { return api.GougingParams{}, err } us, err := b.ss.UploadSettings(ctx) - if err != nil { + if errors.Is(err, sql.ErrSettingNotFound) { + us = api.DefaultUploadSettings(b.network.Name) + } else if err != nil { return api.GougingParams{}, err } diff --git a/cmd/renterd/node.go b/cmd/renterd/node.go index 92c62ae9f..9fad6c05e 100644 --- a/cmd/renterd/node.go +++ b/cmd/renterd/node.go @@ -264,7 +264,7 @@ func newBus(ctx context.Context, cfg config.Config, pk types.PrivateKey, network if err != nil { return nil, nil, err } - sqlStore, err := stores.NewSQLStore(storeCfg, network) + sqlStore, err := stores.NewSQLStore(storeCfg) if err != nil { return nil, nil, err } @@ -386,7 +386,7 @@ func newBus(ctx context.Context, cfg config.Config, pk types.PrivateKey, network // create bus announcementMaxAgeHours := time.Duration(cfg.Bus.AnnouncementMaxAgeHours) * time.Hour - b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, s, w, sqlStore, announcementMaxAgeHours, explorerURL, logger) + b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, s, w, sqlStore, announcementMaxAgeHours, explorerURL, network, logger) if err != nil { return nil, nil, fmt.Errorf("failed to create bus: %w", err) } diff --git a/internal/bus/pinmanager.go b/internal/bus/pinmanager.go index 548e6b708..46372c8b9 100644 --- a/internal/bus/pinmanager.go +++ b/internal/bus/pinmanager.go @@ -12,6 +12,7 @@ import ( "go.sia.tech/core/types" "go.sia.tech/renterd/alerts" "go.sia.tech/renterd/api" + "go.sia.tech/renterd/stores/sql" "go.sia.tech/renterd/webhooks" "go.uber.org/zap" ) @@ -247,7 +248,9 @@ func (pm *pinManager) updateGougingSettings(ctx context.Context, pins api.Gougin // fetch gouging settings gs, err := pm.s.GougingSettings(ctx) - if err != nil { + if errors.Is(err, sql.ErrSettingNotFound) { + gs = api.DefaultGougingSettings + } else if err != nil { return err } @@ -323,9 +326,14 @@ func (pm *pinManager) updatePrices(ctx context.Context, forced bool) error { // fetch pinned settings settings, err := pm.s.PinnedSettings(ctx) - if err != nil { + if errors.Is(err, sql.ErrSettingNotFound) { + settings = api.DefaultPinnedSettings + } else if err != nil { return fmt.Errorf("failed to fetch pinned settings: %w", err) - } else if !settings.Enabled() { + } + + // check if pinning is enabled + if !settings.Enabled() { pm.logger.Debug("no pinned settings, skipping price update") return nil } diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index ec07a465a..4bbbecc80 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -553,8 +553,7 @@ func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, } // create store - network, genesis := testNetwork() - sqlStore, err := stores.NewSQLStore(storeCfg, network) + sqlStore, err := stores.NewSQLStore(storeCfg) if err != nil { return nil, nil, nil, nil, err } @@ -582,6 +581,7 @@ func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, } // create chain manager + network, genesis := testNetwork() store, state, err := chain.NewDBStore(bdb, network, genesis) if err != nil { return nil, nil, nil, nil, err @@ -639,7 +639,7 @@ func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, // create bus announcementMaxAgeHours := time.Duration(cfg.AnnouncementMaxAgeHours) * time.Hour - b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, s, w, sqlStore, announcementMaxAgeHours, "", logger) + b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, s, w, sqlStore, announcementMaxAgeHours, "", network, logger) if err != nil { return nil, nil, nil, nil, err } diff --git a/stores/settings.go b/stores/settings.go index 5801de1a9..471c013fb 100644 --- a/stores/settings.go +++ b/stores/settings.go @@ -3,7 +3,6 @@ package stores import ( "context" "encoding/json" - "errors" "fmt" "go.sia.tech/renterd/api" @@ -60,10 +59,7 @@ func (s *SQLStore) fetchSetting(ctx context.Context, key string, out interface{} // fetch setting from cache value, ok := s.settings[key] if ok { - if err := json.Unmarshal([]byte(value), &out); err != nil { - s.logger.Warnf("failed to unmarshal %s setting '%s': %v, using default", key, value, err) - return json.Unmarshal([]byte(s.defaultSetting(key)), &out) - } + _ = json.Unmarshal([]byte(value), &out) // cached values are always valid json return nil } @@ -72,16 +68,13 @@ func (s *SQLStore) fetchSetting(ctx context.Context, key string, out interface{} if err := s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { value, err = tx.Setting(ctx, key) return err - }); err != nil && !errors.Is(err, sql.ErrSettingNotFound) { - return fmt.Errorf("failed to fetch setting from db: %w", err) - } else if err != nil { - value = s.defaultSetting(key) + }); err != nil { + return err } // unmarshal setting if err := json.Unmarshal([]byte(value), &out); err != nil { - s.logger.Warnf("failed to unmarshal %s setting '%s': %v, using default", key, value, err) - return json.Unmarshal([]byte(s.defaultSetting(key)), &out) + return fmt.Errorf("failed to unmarshal setting '%s', err: %v", key, err) } // update cache @@ -112,22 +105,3 @@ func (s *SQLStore) updateSetting(ctx context.Context, key string, value any) err s.settings[key] = string(b) return nil } - -func (s *SQLStore) defaultSetting(key string) string { - switch key { - case SettingGouging: - b, _ := json.Marshal(api.DefaultGougingSettings) - return string(b) - case SettingPinned: - b, _ := json.Marshal(api.DefaultPinnedSettings) - return string(b) - case SettingS3: - b, _ := json.Marshal(api.DefaultS3Settings) - return string(b) - case SettingUpload: - b, _ := json.Marshal(api.DefaultUploadSettings(s.network.Name)) - return string(b) - default: - panic("unknown setting") // developer error - } -} diff --git a/stores/sql.go b/stores/sql.go index 424016927..14216ce32 100644 --- a/stores/sql.go +++ b/stores/sql.go @@ -8,7 +8,6 @@ import ( "sync" "time" - "go.sia.tech/core/consensus" "go.sia.tech/core/types" "go.sia.tech/renterd/alerts" "go.sia.tech/renterd/stores/sql" @@ -43,7 +42,6 @@ type ( dbMetrics sql.MetricsDatabase logger *zap.SugaredLogger - network *consensus.Network walletAddress types.Address // ObjectDB related fields @@ -70,7 +68,7 @@ type ( // NewSQLStore uses a given Dialector to connect to a SQL database. NOTE: Only // pass migrate=true for the first instance of SQLHostDB if you connect via the // same Dialector multiple times. -func NewSQLStore(cfg Config, network *consensus.Network) (*SQLStore, error) { +func NewSQLStore(cfg Config) (*SQLStore, error) { if err := os.MkdirAll(cfg.PartialSlabDir, 0700); err != nil { return nil, fmt.Errorf("failed to create partial slab dir '%s': %v", cfg.PartialSlabDir, err) } @@ -103,7 +101,6 @@ func NewSQLStore(cfg Config, network *consensus.Network) (*SQLStore, error) { settings: make(map[string]string), walletAddress: cfg.WalletAddress, - network: network, slabPruneSigChan: make(chan struct{}, 1), lastPrunedAt: time.Now(), diff --git a/stores/sql/sqlite/migrations/main/migration_00018_settings.sql b/stores/sql/sqlite/migrations/main/migration_00018_settings.sql index 91d3b2aa0..5a8b24739 100644 --- a/stores/sql/sqlite/migrations/main/migration_00018_settings.sql +++ b/stores/sql/sqlite/migrations/main/migration_00018_settings.sql @@ -7,16 +7,17 @@ SELECT DATETIME('now'), k, v FROM ( -- upload is a combination of uploadpacking, redundancy, and contractset SELECT - "upload" as k, - json_patch( - json_object("packing", (SELECT json_extract(value, "$") FROM settings WHERE key = "uploadpacking")), - json_patch( - json_object("redundancy", (SELECT json_extract(value, "$") FROM settings WHERE key = "redundancy")), - json_object("defaultContractSet", (SELECT json_extract(value, "$.default") FROM settings WHERE key = "contractset")) - ) - ) as v - WHERE json_extract(v, "$.packing") IS NOT NULL - AND json_extract(v, "$.redundancy") IS NOT NULL + "upload" as k, + json_patch( + json_object("packing", (SELECT json_extract(value, "$") FROM settings WHERE key = "uploadpacking")), + json_patch( + json_object("redundancy", (SELECT json_extract(value, "$") FROM settings WHERE key = "redundancy")), + json_object("defaultContractSet", (SELECT json_extract(value, "$.default") FROM settings WHERE key = "contractset")) + ) + ) as v + WHERE + json_extract(v, "$.packing") IS NOT NULL AND + json_extract(v, "$.redundancy") IS NOT NULL UNION ALL @@ -38,7 +39,9 @@ FROM ( ), "$.forexEndpointURL" ) as v - WHERE json_extract(v, "$.currency") IS NOT NULL AND json_extract(v, "$.threshold") IS NOT NULL + WHERE + json_extract(v, "$.currency") IS NOT NULL AND + json_extract(v, "$.threshold") IS NOT NULL ) -- delete old settings diff --git a/stores/sql_test.go b/stores/sql_test.go index 0fd280873..7eb33d07b 100644 --- a/stores/sql_test.go +++ b/stores/sql_test.go @@ -10,7 +10,6 @@ import ( "testing" "time" - "go.sia.tech/core/consensus" "go.sia.tech/core/types" "go.sia.tech/renterd/alerts" "go.sia.tech/renterd/api" @@ -180,7 +179,7 @@ func newTestSQLStore(t *testing.T, cfg testSQLStoreConfig) *testSQLStore { LongQueryDuration: 100 * time.Millisecond, LongTxDuration: 100 * time.Millisecond, RetryTransactionIntervals: []time.Duration{50 * time.Millisecond, 100 * time.Millisecond, 200 * time.Millisecond}, - }, &consensus.Network{}) + }) if err != nil { t.Fatal("failed to create SQLStore", err) } From 62dbcd69d1b6e1eb35c82e17dc3355fc0d6b10e6 Mon Sep 17 00:00:00 2001 From: PJ Date: Wed, 11 Sep 2024 15:10:53 +0200 Subject: [PATCH 101/708] stores: fix indentation --- .../migrations/main/migration_00019_settings.sql | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/stores/sql/sqlite/migrations/main/migration_00019_settings.sql b/stores/sql/sqlite/migrations/main/migration_00019_settings.sql index 5a8b24739..98d4aa36b 100644 --- a/stores/sql/sqlite/migrations/main/migration_00019_settings.sql +++ b/stores/sql/sqlite/migrations/main/migration_00019_settings.sql @@ -30,19 +30,19 @@ FROM ( UNION ALL -- pinning renames pricepinning and removes the 'enabled' and 'forexEndpointURL' fields - SELECT - "pinned" as k, - json_remove( + SELECT + "pinned" as k, + json_remove( json_remove( (SELECT json_extract(value, "$") FROM settings WHERE key = "pricepinning"), "$.enabled" ), "$.forexEndpointURL" ) as v - WHERE + WHERE json_extract(v, "$.currency") IS NOT NULL AND json_extract(v, "$.threshold") IS NOT NULL ) -- delete old settings -DELETE FROM settings WHERE `key` IN ("uploadpacking", "redundancy", "contractset", "s3authentication", "pricepinning"); \ No newline at end of file +DELETE FROM settings WHERE `key` IN ("uploadpacking", "redundancy", "contractset", "s3authentication", "pricepinning"); From b6224021fb857e6d469c4564bbf055894a9a3851 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 12 Sep 2024 11:49:32 +0200 Subject: [PATCH 102/708] api: add 'score' back to host check --- api/host.go | 12 ++++++++++++ api/host_test.go | 27 +++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 api/host_test.go diff --git a/api/host.go b/api/host.go index a8d7a40e4..97f53829a 100644 --- a/api/host.go +++ b/api/host.go @@ -1,6 +1,7 @@ package api import ( + "encoding/json" "errors" "fmt" "net/url" @@ -225,6 +226,17 @@ type ( } ) +func (hc HostCheck) MarshalJSON() ([]byte, error) { + type check HostCheck + return json.Marshal(struct { + check + Score float64 `json:"score"` + }{ + check: check(hc), + Score: hc.Score.Score(), + }) +} + // IsAnnounced returns whether the host has been announced. func (h Host) IsAnnounced() bool { return !h.LastAnnouncement.IsZero() diff --git a/api/host_test.go b/api/host_test.go new file mode 100644 index 000000000..94612f4f3 --- /dev/null +++ b/api/host_test.go @@ -0,0 +1,27 @@ +package api + +import ( + "encoding/json" + "strings" + "testing" +) + +func TestMarshalHostScoreBreakdownJSON(t *testing.T) { + hc := HostCheck{ + Score: HostScoreBreakdown{ + Age: 1.1, + Collateral: 1.1, + Interactions: 1.1, + StorageRemaining: 1.1, + Uptime: 1.1, + Version: 1.1, + Prices: 1.1, + }, + } + b, err := json.MarshalIndent(hc, " ", " ") + if err != nil { + t.Fatal(err) + } else if !strings.Contains(string(b), "\"score\": 1.9487171000000014") { + t.Fatal("expected a score field") + } +} From 4dd0b578c23b16cf9d2610e1c5ae3ec2c71b1050 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 12 Sep 2024 13:39:12 +0200 Subject: [PATCH 103/708] config: fix typo --- cmd/renterd/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/renterd/config.go b/cmd/renterd/config.go index 572b062a1..769875866 100644 --- a/cmd/renterd/config.go +++ b/cmd/renterd/config.go @@ -167,7 +167,7 @@ func loadConfig() (cfg config.Config, network *consensus.Network, genesis types. // check explorer if !cfg.Explorer.Disable && cfg.Explorer.URL == "" { - err = fmt.Errorf("explorer is disabled but no URL is set") + err = fmt.Errorf("explorer is enabled but no URL is set") return } From 87f0cc2316d7cc215c1496a8675b2c1d3d1e89d9 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 12 Sep 2024 13:51:27 +0200 Subject: [PATCH 104/708] bus: remove network --- bus/bus.go | 4 +--- bus/routes.go | 4 ++-- cmd/renterd/node.go | 2 +- internal/test/e2e/cluster.go | 2 +- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/bus/bus.go b/bus/bus.go index f180a7ee9..a1ff1034d 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -307,7 +307,6 @@ type ( type Bus struct { startTime time.Time masterKey utils.MasterKey - network *consensus.Network alerts alerts.Alerter alertMgr AlertManager @@ -337,13 +336,12 @@ type Bus struct { } // New returns a new Bus -func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksManager, cm ChainManager, s Syncer, w Wallet, store Store, announcementMaxAge time.Duration, explorerURL string, network *consensus.Network, l *zap.Logger) (_ *Bus, err error) { +func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksManager, cm ChainManager, s Syncer, w Wallet, store Store, announcementMaxAge time.Duration, explorerURL string, l *zap.Logger) (_ *Bus, err error) { l = l.Named("bus") b := &Bus{ startTime: time.Now(), masterKey: masterKey, - network: network, accounts: store, explorer: ibus.NewExplorer(explorerURL), diff --git a/bus/routes.go b/bus/routes.go index 646540bd8..7f10b03ac 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1373,7 +1373,7 @@ func (b *Bus) settingsUploadHandlerGET(jc jape.Context) { us, err := b.ss.UploadSettings(jc.Request.Context()) if errors.Is(err, sql.ErrSettingNotFound) { b.logger.Warn("upload settings not found, returning defaults") - jc.Encode(api.DefaultUploadSettings(b.network.Name)) + jc.Encode(api.DefaultUploadSettings(b.cm.TipState().Network.Name)) return } else if jc.Check("failed to get upload settings", err) == nil { jc.Encode(us) @@ -1660,7 +1660,7 @@ func (b *Bus) gougingParams(ctx context.Context) (api.GougingParams, error) { us, err := b.ss.UploadSettings(ctx) if errors.Is(err, sql.ErrSettingNotFound) { - us = api.DefaultUploadSettings(b.network.Name) + us = api.DefaultUploadSettings(b.cm.TipState().Network.Name) } else if err != nil { return api.GougingParams{}, err } diff --git a/cmd/renterd/node.go b/cmd/renterd/node.go index 9fad6c05e..aa36b9f24 100644 --- a/cmd/renterd/node.go +++ b/cmd/renterd/node.go @@ -386,7 +386,7 @@ func newBus(ctx context.Context, cfg config.Config, pk types.PrivateKey, network // create bus announcementMaxAgeHours := time.Duration(cfg.Bus.AnnouncementMaxAgeHours) * time.Hour - b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, s, w, sqlStore, announcementMaxAgeHours, explorerURL, network, logger) + b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, s, w, sqlStore, announcementMaxAgeHours, explorerURL, logger) if err != nil { return nil, nil, fmt.Errorf("failed to create bus: %w", err) } diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index 951f0f8d8..735085711 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -639,7 +639,7 @@ func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, // create bus announcementMaxAgeHours := time.Duration(cfg.AnnouncementMaxAgeHours) * time.Hour - b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, s, w, sqlStore, announcementMaxAgeHours, "", network, logger) + b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, s, w, sqlStore, announcementMaxAgeHours, "", logger) if err != nil { return nil, nil, nil, nil, err } From ceed2906aac73ccebb8cdc64bf01b6d7ee0ae18a Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 12 Sep 2024 14:05:30 +0200 Subject: [PATCH 105/708] api: remove unused types --- api/host.go | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/api/host.go b/api/host.go index bab76ce21..7b4d52eee 100644 --- a/api/host.go +++ b/api/host.go @@ -129,22 +129,6 @@ type ( SortBy string `json:"sortBy"` SortDir string `json:"sortDir"` } - - // HostResponse is the response type for the GET - // /api/autopilot/host/:hostkey endpoint. - HostResponse struct { - Host Host `json:"host"` - Checks *HostChecks `json:"checks,omitempty"` - } - - HostChecks struct { - Gouging bool `json:"gouging"` - GougingBreakdown HostGougingBreakdown `json:"gougingBreakdown"` - Score float64 `json:"score"` - ScoreBreakdown HostScoreBreakdown `json:"scoreBreakdown"` - Usable bool `json:"usable"` - UnusableReasons []string `json:"unusableReasons,omitempty"` - } ) type ( From a4d3cc63fce9491a2316a4caa8f3da5b3f31c700 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 12 Sep 2024 14:10:18 +0200 Subject: [PATCH 106/708] api: fix json field conflict --- api/host.go | 14 ++++++++------ api/host_test.go | 2 +- autopilot/autopilot.go | 24 ++++++++++++------------ autopilot/contractor/contractor.go | 14 +++++++------- autopilot/contractor/evaluate.go | 20 ++++++++++---------- autopilot/contractor/hostfilter.go | 6 +++--- stores/hostdb_test.go | 14 +++++++------- stores/sql/main.go | 10 +++++----- stores/sql/mysql/main.go | 8 ++++---- stores/sql/sqlite/main.go | 8 ++++---- 10 files changed, 61 insertions(+), 59 deletions(-) diff --git a/api/host.go b/api/host.go index 97f53829a..b39bff850 100644 --- a/api/host.go +++ b/api/host.go @@ -191,9 +191,9 @@ type ( } HostCheck struct { - Gouging HostGougingBreakdown `json:"gouging"` - Score HostScoreBreakdown `json:"score"` - Usability HostUsabilityBreakdown `json:"usability"` + GougingBreakdown HostGougingBreakdown `json:"gougingBreakdown"` + ScoreBreakdown HostScoreBreakdown `json:"scoreBreakdown"` + UsabilityBreakdown HostUsabilityBreakdown `json:"usabilityBreakdown"` } HostGougingBreakdown struct { @@ -230,10 +230,12 @@ func (hc HostCheck) MarshalJSON() ([]byte, error) { type check HostCheck return json.Marshal(struct { check - Score float64 `json:"score"` + Score float64 `json:"score"` + Usable bool `json:"usable"` }{ - check: check(hc), - Score: hc.Score.Score(), + check: check(hc), + Score: hc.ScoreBreakdown.Score(), + Usable: hc.UsabilityBreakdown.IsUsable(), }) } diff --git a/api/host_test.go b/api/host_test.go index 94612f4f3..e2711723e 100644 --- a/api/host_test.go +++ b/api/host_test.go @@ -8,7 +8,7 @@ import ( func TestMarshalHostScoreBreakdownJSON(t *testing.T) { hc := HostCheck{ - Score: HostScoreBreakdown{ + ScoreBreakdown: HostScoreBreakdown{ Age: 1.1, Collateral: 1.1, Interactions: 1.1, diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 2bf92f6f1..9493a1311 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -709,12 +709,12 @@ func (ap *Autopilot) hostHandlerGET(jc jape.Context) { jc.Encode(api.HostResponse{ Host: hi, Checks: &api.HostChecks{ - Gouging: check.Gouging.Gouging(), - GougingBreakdown: check.Gouging, - Score: check.Score.Score(), - ScoreBreakdown: check.Score, - Usable: check.Usability.IsUsable(), - UnusableReasons: check.Usability.UnusableReasons(), + Gouging: check.GougingBreakdown.Gouging(), + GougingBreakdown: check.GougingBreakdown, + Score: check.ScoreBreakdown.Score(), + ScoreBreakdown: check.ScoreBreakdown, + Usable: check.UsabilityBreakdown.IsUsable(), + UnusableReasons: check.UsabilityBreakdown.UnusableReasons(), }, }) return @@ -750,12 +750,12 @@ func (ap *Autopilot) hostsHandlerPOST(jc jape.Context) { resps[i] = api.HostResponse{ Host: host, Checks: &api.HostChecks{ - Gouging: check.Gouging.Gouging(), - GougingBreakdown: check.Gouging, - Score: check.Score.Score(), - ScoreBreakdown: check.Score, - Usable: check.Usability.IsUsable(), - UnusableReasons: check.Usability.UnusableReasons(), + Gouging: check.GougingBreakdown.Gouging(), + GougingBreakdown: check.GougingBreakdown, + Score: check.ScoreBreakdown.Score(), + ScoreBreakdown: check.ScoreBreakdown, + Usable: check.UsabilityBreakdown.IsUsable(), + UnusableReasons: check.UsabilityBreakdown.UnusableReasons(), }, } } else { diff --git a/autopilot/contractor/contractor.go b/autopilot/contractor/contractor.go index 4a22f9d81..6f9e646f6 100644 --- a/autopilot/contractor/contractor.go +++ b/autopilot/contractor/contractor.go @@ -964,8 +964,8 @@ func performContractChecks(ctx *mCtx, alerter alerts.Alerter, bus Bus, w Worker, } // check usability - if !check.Usability.IsUsable() { - reasons := strings.Join(check.Usability.UnusableReasons(), ",") + if !check.UsabilityBreakdown.IsUsable() { + reasons := strings.Join(check.UsabilityBreakdown.UnusableReasons(), ",") logger.With("reasons", reasons).Info("unusable host") churnReasons[c.ID] = reasons continue @@ -1112,11 +1112,11 @@ func performContractFormations(ctx *mCtx, bus Bus, w Worker, cr contractReviser, } else if _, used := usedHosts[host.PublicKey]; used { logger.Debug("host already used") continue - } else if score := hc.Score.Score(); score == 0 { + } else if score := hc.ScoreBreakdown.Score(); score == 0 { logger.Error("host has a score of 0") continue } - candidates = append(candidates, newScoredHost(host, hc.Score)) + candidates = append(candidates, newScoredHost(host, hc.ScoreBreakdown)) } logger = logger.With("candidates", len(candidates)) @@ -1225,11 +1225,11 @@ func performHostChecks(ctx *mCtx, bus Bus, logger *zap.SugaredLogger) error { if err := bus.UpdateHostCheck(ctx, ctx.ApID(), h.host.PublicKey, *hc); err != nil { return fmt.Errorf("failed to update host check for host %v: %w", h.host.PublicKey, err) } - usabilityBreakdown.track(hc.Usability) + usabilityBreakdown.track(hc.UsabilityBreakdown) - if !hc.Usability.IsUsable() { + if !hc.UsabilityBreakdown.IsUsable() { logger.With("hostKey", h.host.PublicKey). - With("reasons", strings.Join(hc.Usability.UnusableReasons(), ",")). + With("reasons", strings.Join(hc.UsabilityBreakdown.UnusableReasons(), ",")). Debug("host is not usable") } } diff --git a/autopilot/contractor/evaluate.go b/autopilot/contractor/evaluate.go index e947009cb..7bacc44c9 100644 --- a/autopilot/contractor/evaluate.go +++ b/autopilot/contractor/evaluate.go @@ -14,7 +14,7 @@ func countUsableHosts(cfg api.AutopilotConfig, cs api.ConsensusState, fee types. gc := gouging.NewChecker(gs, cs, fee, &period, &cfg.Contracts.RenewWindow) for _, host := range hosts { hc := checkHost(gc, scoreHost(host, cfg, rs.Redundancy()), minValidScore) - if hc.Usability.IsUsable() { + if hc.UsabilityBreakdown.IsUsable() { usables++ } } @@ -37,32 +37,32 @@ func EvaluateConfig(cfg api.AutopilotConfig, cs api.ConsensusState, fee types.Cu for i, host := range hosts { hosts[i].PriceTable.HostBlockHeight = cs.BlockHeight // ignore block height hc := checkHost(gc, scoreHost(host, cfg, rs.Redundancy()), minValidScore) - if hc.Usability.IsUsable() { + if hc.UsabilityBreakdown.IsUsable() { resp.Usable++ continue } - if hc.Usability.Blocked { + if hc.UsabilityBreakdown.Blocked { resp.Unusable.Blocked++ } - if hc.Usability.NotAcceptingContracts { + if hc.UsabilityBreakdown.NotAcceptingContracts { resp.Unusable.NotAcceptingContracts++ } - if hc.Usability.NotCompletingScan { + if hc.UsabilityBreakdown.NotCompletingScan { resp.Unusable.NotScanned++ } - if hc.Gouging.ContractErr != "" { + if hc.GougingBreakdown.ContractErr != "" { resp.Unusable.Gouging.Contract++ } - if hc.Gouging.DownloadErr != "" { + if hc.GougingBreakdown.DownloadErr != "" { resp.Unusable.Gouging.Download++ } - if hc.Gouging.GougingErr != "" { + if hc.GougingBreakdown.GougingErr != "" { resp.Unusable.Gouging.Gouging++ } - if hc.Gouging.PruneErr != "" { + if hc.GougingBreakdown.PruneErr != "" { resp.Unusable.Gouging.Pruning++ } - if hc.Gouging.UploadErr != "" { + if hc.GougingBreakdown.UploadErr != "" { resp.Unusable.Gouging.Upload++ } } diff --git a/autopilot/contractor/hostfilter.go b/autopilot/contractor/hostfilter.go index 3083976ed..87f60c367 100644 --- a/autopilot/contractor/hostfilter.go +++ b/autopilot/contractor/hostfilter.go @@ -258,9 +258,9 @@ func checkHost(gc gouging.Checker, sh scoredHost, minScore float64) *api.HostChe } return &api.HostCheck{ - Usability: ub, - Gouging: gb, - Score: sh.sb, + UsabilityBreakdown: ub, + GougingBreakdown: gb, + ScoreBreakdown: sh.sb, } } diff --git a/stores/hostdb_test.go b/stores/hostdb_test.go index ae2525688..115661652 100644 --- a/stores/hostdb_test.go +++ b/stores/hostdb_test.go @@ -204,19 +204,19 @@ func TestHosts(t *testing.T) { // add host checks, h1 gets ap1 and h2 gets both h1c := newTestHostCheck() - h1c.Score.Age = .1 + h1c.ScoreBreakdown.Age = .1 err = ss.UpdateHostCheck(context.Background(), ap1, hk1, h1c) if err != nil { t.Fatal(err) } h2c1 := newTestHostCheck() - h2c1.Score.Age = .21 + h2c1.ScoreBreakdown.Age = .21 err = ss.UpdateHostCheck(context.Background(), ap1, hk2, h2c1) if err != nil { t.Fatal(err) } h2c2 := newTestHostCheck() - h2c2.Score.Age = .22 + h2c2.ScoreBreakdown.Age = .22 err = ss.UpdateHostCheck(context.Background(), ap2, hk2, h2c2) if err != nil { t.Fatal(err) @@ -266,7 +266,7 @@ func TestHosts(t *testing.T) { } // assert usability filter is taken into account - h2c1.Usability.RedundantIP = true + h2c1.UsabilityBreakdown.RedundantIP = true err = ss.UpdateHostCheck(context.Background(), ap1, hk2, h2c1) if err != nil { t.Fatal(err) @@ -1039,14 +1039,14 @@ func newTestScan(hk types.PublicKey, scanTime time.Time, settings rhpv2.HostSett func newTestHostCheck() api.HostCheck { return api.HostCheck{ - Gouging: api.HostGougingBreakdown{ + GougingBreakdown: api.HostGougingBreakdown{ ContractErr: "foo", DownloadErr: "bar", GougingErr: "baz", PruneErr: "qux", UploadErr: "quuz", }, - Score: api.HostScoreBreakdown{ + ScoreBreakdown: api.HostScoreBreakdown{ Age: .1, Collateral: .2, Interactions: .3, @@ -1055,7 +1055,7 @@ func newTestHostCheck() api.HostCheck { Version: .6, Prices: .7, }, - Usability: api.HostUsabilityBreakdown{ + UsabilityBreakdown: api.HostUsabilityBreakdown{ Blocked: false, Offline: false, LowScore: false, diff --git a/stores/sql/main.go b/stores/sql/main.go index 94c0ec932..544255c2c 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -867,11 +867,11 @@ func Hosts(ctx context.Context, tx sql.Tx, autopilot, filterMode, usabilityMode, var ap string var pk PublicKey var hc api.HostCheck - err := rows.Scan(&pk, &ap, &hc.Usability.Blocked, &hc.Usability.Offline, &hc.Usability.LowScore, &hc.Usability.RedundantIP, - &hc.Usability.Gouging, &hc.Usability.NotAcceptingContracts, &hc.Usability.NotAnnounced, &hc.Usability.NotCompletingScan, - &hc.Score.Age, &hc.Score.Collateral, &hc.Score.Interactions, &hc.Score.StorageRemaining, &hc.Score.Uptime, - &hc.Score.Version, &hc.Score.Prices, &hc.Gouging.ContractErr, &hc.Gouging.DownloadErr, &hc.Gouging.GougingErr, - &hc.Gouging.PruneErr, &hc.Gouging.UploadErr) + err := rows.Scan(&pk, &ap, &hc.UsabilityBreakdown.Blocked, &hc.UsabilityBreakdown.Offline, &hc.UsabilityBreakdown.LowScore, &hc.UsabilityBreakdown.RedundantIP, + &hc.UsabilityBreakdown.Gouging, &hc.UsabilityBreakdown.NotAcceptingContracts, &hc.UsabilityBreakdown.NotAnnounced, &hc.UsabilityBreakdown.NotCompletingScan, + &hc.ScoreBreakdown.Age, &hc.ScoreBreakdown.Collateral, &hc.ScoreBreakdown.Interactions, &hc.ScoreBreakdown.StorageRemaining, &hc.ScoreBreakdown.Uptime, + &hc.ScoreBreakdown.Version, &hc.ScoreBreakdown.Prices, &hc.GougingBreakdown.ContractErr, &hc.GougingBreakdown.DownloadErr, &hc.GougingBreakdown.GougingErr, + &hc.GougingBreakdown.PruneErr, &hc.GougingBreakdown.UploadErr) if err != nil { return nil, fmt.Errorf("failed to scan host: %w", err) } diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index a883b771f..f417b1a3a 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -1045,10 +1045,10 @@ func (tx *MainDatabaseTx) UpdateHostCheck(ctx context.Context, autopilot string, score_storage_remaining = VALUES(score_storage_remaining), score_uptime = VALUES(score_uptime), score_version = VALUES(score_version), score_prices = VALUES(score_prices), gouging_contract_err = VALUES(gouging_contract_err), gouging_download_err = VALUES(gouging_download_err), gouging_gouging_err = VALUES(gouging_gouging_err), gouging_prune_err = VALUES(gouging_prune_err), gouging_upload_err = VALUES(gouging_upload_err) - `, time.Now(), autopilot, ssql.PublicKey(hk), hc.Usability.Blocked, hc.Usability.Offline, hc.Usability.LowScore, - hc.Usability.RedundantIP, hc.Usability.Gouging, hc.Usability.NotAcceptingContracts, hc.Usability.NotAnnounced, hc.Usability.NotCompletingScan, - hc.Score.Age, hc.Score.Collateral, hc.Score.Interactions, hc.Score.StorageRemaining, hc.Score.Uptime, hc.Score.Version, hc.Score.Prices, - hc.Gouging.ContractErr, hc.Gouging.DownloadErr, hc.Gouging.GougingErr, hc.Gouging.PruneErr, hc.Gouging.UploadErr, + `, time.Now(), autopilot, ssql.PublicKey(hk), hc.UsabilityBreakdown.Blocked, hc.UsabilityBreakdown.Offline, hc.UsabilityBreakdown.LowScore, + hc.UsabilityBreakdown.RedundantIP, hc.UsabilityBreakdown.Gouging, hc.UsabilityBreakdown.NotAcceptingContracts, hc.UsabilityBreakdown.NotAnnounced, hc.UsabilityBreakdown.NotCompletingScan, + hc.ScoreBreakdown.Age, hc.ScoreBreakdown.Collateral, hc.ScoreBreakdown.Interactions, hc.ScoreBreakdown.StorageRemaining, hc.ScoreBreakdown.Uptime, hc.ScoreBreakdown.Version, hc.ScoreBreakdown.Prices, + hc.GougingBreakdown.ContractErr, hc.GougingBreakdown.DownloadErr, hc.GougingBreakdown.GougingErr, hc.GougingBreakdown.PruneErr, hc.GougingBreakdown.UploadErr, ) if err != nil { return fmt.Errorf("failed to insert host check: %w", err) diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index d2679eb29..a4e0bc569 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -1056,10 +1056,10 @@ func (tx *MainDatabaseTx) UpdateHostCheck(ctx context.Context, autopilot string, score_storage_remaining = EXCLUDED.score_storage_remaining, score_uptime = EXCLUDED.score_uptime, score_version = EXCLUDED.score_version, score_prices = EXCLUDED.score_prices, gouging_contract_err = EXCLUDED.gouging_contract_err, gouging_download_err = EXCLUDED.gouging_download_err, gouging_gouging_err = EXCLUDED.gouging_gouging_err, gouging_prune_err = EXCLUDED.gouging_prune_err, gouging_upload_err = EXCLUDED.gouging_upload_err - `, time.Now(), autopilot, ssql.PublicKey(hk), hc.Usability.Blocked, hc.Usability.Offline, hc.Usability.LowScore, - hc.Usability.RedundantIP, hc.Usability.Gouging, hc.Usability.NotAcceptingContracts, hc.Usability.NotAnnounced, hc.Usability.NotCompletingScan, - hc.Score.Age, hc.Score.Collateral, hc.Score.Interactions, hc.Score.StorageRemaining, hc.Score.Uptime, hc.Score.Version, hc.Score.Prices, - hc.Gouging.ContractErr, hc.Gouging.DownloadErr, hc.Gouging.GougingErr, hc.Gouging.PruneErr, hc.Gouging.UploadErr, + `, time.Now(), autopilot, ssql.PublicKey(hk), hc.UsabilityBreakdown.Blocked, hc.UsabilityBreakdown.Offline, hc.UsabilityBreakdown.LowScore, + hc.UsabilityBreakdown.RedundantIP, hc.UsabilityBreakdown.Gouging, hc.UsabilityBreakdown.NotAcceptingContracts, hc.UsabilityBreakdown.NotAnnounced, hc.UsabilityBreakdown.NotCompletingScan, + hc.ScoreBreakdown.Age, hc.ScoreBreakdown.Collateral, hc.ScoreBreakdown.Interactions, hc.ScoreBreakdown.StorageRemaining, hc.ScoreBreakdown.Uptime, hc.ScoreBreakdown.Version, hc.ScoreBreakdown.Prices, + hc.GougingBreakdown.ContractErr, hc.GougingBreakdown.DownloadErr, hc.GougingBreakdown.GougingErr, hc.GougingBreakdown.PruneErr, hc.GougingBreakdown.UploadErr, ) if err != nil { return fmt.Errorf("failed to insert host check: %w", err) From f4d8788890ddcc0d21396cd551f16dd214bfcd94 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 12 Sep 2024 14:26:11 +0200 Subject: [PATCH 107/708] wallet: add scanheight to wallet response --- api/wallet.go | 3 ++- bus/routes.go | 5 +++-- internal/test/e2e/cluster.go | 7 +++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/api/wallet.go b/api/wallet.go index 6e9feaea6..ec22076c3 100644 --- a/api/wallet.go +++ b/api/wallet.go @@ -55,7 +55,8 @@ type ( WalletResponse struct { wallet.Balance - Address types.Address `json:"address"` + Address types.Address `json:"address"` + ScanHeight uint64 `json:"scanHeight"` } WalletSendRequest struct { diff --git a/bus/routes.go b/bus/routes.go index 778034bb7..3e2b21494 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -271,8 +271,9 @@ func (b *Bus) walletHandler(jc jape.Context) { } jc.Encode(api.WalletResponse{ - Balance: balance, - Address: address, + Balance: balance, + Address: address, + ScanHeight: b.w.Tip().Height, }) } diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index 2156c3244..c132cd65f 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -745,6 +745,13 @@ func (c *TestCluster) sync() { return fmt.Errorf("subscriber hasn't caught up, %d < %d", cs.BlockHeight, tip.Height) } + wallet, err := c.Bus.Wallet(context.Background()) + if err != nil { + return err + } else if wallet.ScanHeight < tip.Height { + return fmt.Errorf("wallet hasn't caught up, %d < %d", wallet.ScanHeight, tip.Height) + } + for _, h := range c.hosts { if hh := h.cm.Tip().Height; hh < tip.Height { return fmt.Errorf("host %v is not synced, %v < %v", h.PublicKey(), hh, cs.BlockHeight) From 0a2986653b518b5aca1af64d8b52e09d4f0ad722 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 12 Sep 2024 15:31:28 +0200 Subject: [PATCH 108/708] Revert "Revert "stores: remove sorting"" This reverts commit b1ab76cd9b634c26d98943605dab477b6cffa46f. --- api/host.go | 64 ------------------------------- bus/client/hosts.go | 2 - bus/routes.go | 16 -------- stores/hostdb_test.go | 88 ------------------------------------------- stores/sql/main.go | 25 ------------ 5 files changed, 195 deletions(-) diff --git a/api/host.go b/api/host.go index 7b4d52eee..19f28cb2f 100644 --- a/api/host.go +++ b/api/host.go @@ -22,70 +22,10 @@ const ( UsabilityFilterModeUnusable = "unusable" ) -var validHostSortBy = map[string]any{ - // price table - "price_table.uid": nil, - "price_table.validity": nil, - "price_table.hostblockheight": nil, - "price_table.latestrevisioncost": nil, - "price_table.initbasecost": nil, - "price_table.downloadbandwidthcost": nil, - "price_table.uploadbandwidthcost": nil, - "price_table.readbasecost": nil, - "price_table.writebasecost": nil, - "price_table.writestorecost": nil, - "price_table.txnfeeminrecommended": nil, - "price_table.txnfeemaxrecommended": nil, - "price_table.contractprice": nil, - "price_table.collateralcost": nil, - "price_table.maxcollateral": nil, - "price_table.maxduration": nil, - "price_table.windowsize": nil, - - // settings - "settings.acceptingcontracts": nil, - "settings.maxdownloadbatchsize": nil, - "settings.maxduration": nil, - "settings.maxrevisebatchsize": nil, - "settings.netaddress": nil, - "settings.remainingstorage": nil, - "settings.sectorsize": nil, - "settings.totalstorage": nil, - "settings.unlockhash": nil, - "settings.windowsize": nil, - "settings.collateral": nil, - "settings.maxcollateral": nil, - "settings.baserpcprice": nil, - "settings.contractprice": nil, - "settings.downloadbandwidthprice": nil, - "settings.sectoraccessprice": nil, - "settings.storageprice": nil, - "settings.uploadbandwidthprice": nil, - "settings.ephemeralaccountexpiry": nil, - "settings.maxephemeralaccountbalance": nil, - "settings.revisionnumber": nil, - "settings.version": nil, - "settings.release": nil, - "settings.siamuxport": nil, -} - -func IsValidHostSortBy(sortBy string) bool { - _, ok := validHostSortBy[sortBy] - return ok -} - var ( // ErrHostNotFound is returned when a host can't be retrieved from the // database. ErrHostNotFound = errors.New("host doesn't exist in hostdb") - - // ErrInvalidHostSortBy is returned when the SortBy parameter used - // when querying hosts is invalid. - ErrInvalidHostSortBy = errors.New("invalid SortBy parameter") - - // ErrInvalidHostSortDir is returned when the SortDir parameter used - // when querying hosts is invalid. - ErrInvalidHostSortDir = errors.New("invalid SortDir parameter") ) var ( @@ -126,8 +66,6 @@ type ( UsabilityMode string `json:"usabilityMode"` AddressContains string `json:"addressContains"` KeyIn []types.PublicKey `json:"keyIn"` - SortBy string `json:"sortBy"` - SortDir string `json:"sortDir"` } ) @@ -163,8 +101,6 @@ type ( KeyIn []types.PublicKey Limit int Offset int - SortBy string - SortDir string } ) diff --git a/bus/client/hosts.go b/bus/client/hosts.go index f9480b32b..d7aa5f6db 100644 --- a/bus/client/hosts.go +++ b/bus/client/hosts.go @@ -26,8 +26,6 @@ func (c *Client) Hosts(ctx context.Context, opts api.HostOptions) (hosts []api.H UsabilityMode: opts.UsabilityMode, AddressContains: opts.AddressContains, KeyIn: opts.KeyIn, - SortBy: opts.SortBy, - SortDir: opts.SortDir, }, &hosts) return } diff --git a/bus/routes.go b/bus/routes.go index 1c28747fe..7f7e0251d 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -487,20 +487,6 @@ func (b *Bus) hostsHandlerPOST(jc jape.Context) { return } - // validate sorting params - if req.SortBy != "" { - if !api.IsValidHostSortBy(req.SortBy) { - jc.Error(fmt.Errorf("%w: %v", api.ErrInvalidHostSortBy, req.SortBy), http.StatusBadRequest) - return - } - } - switch req.SortDir { - case "", api.SortDirAsc, api.SortDirDesc: - default: - jc.Error(errors.New("invalid value for SortDir param, options are 'asc' and 'desc'"), http.StatusBadRequest) - return - } - // validate the offset and limit if req.Offset < 0 { jc.Error(errors.New("offset must be non-negative"), http.StatusBadRequest) @@ -521,8 +507,6 @@ func (b *Bus) hostsHandlerPOST(jc jape.Context) { KeyIn: req.KeyIn, Offset: req.Offset, Limit: req.Limit, - SortBy: req.SortBy, - SortDir: req.SortDir, }) if jc.Check(fmt.Sprintf("couldn't fetch hosts %d-%d", req.Offset, req.Offset+req.Limit), err) != nil { return diff --git a/stores/hostdb_test.go b/stores/hostdb_test.go index 90de32196..555fc2ac8 100644 --- a/stores/hostdb_test.go +++ b/stores/hostdb_test.go @@ -138,41 +138,6 @@ func TestHosts(t *testing.T) { } hk1, hk2, hk3 := hks[0], hks[1], hks[2] - err := ss.RecordHostScans(context.Background(), []api.HostScan{ - { - HostKey: hk1, - PriceTable: rhpv3.HostPriceTable{ - InitBaseCost: types.NewCurrency64(230), - }, - Settings: rhpv2.HostSettings{ - BaseRPCPrice: types.NewCurrency64(230), - }, - Success: true, - Timestamp: time.Now(), - }, - { - HostKey: hk2, - PriceTable: rhpv3.HostPriceTable{}, // empty price table - Settings: rhpv2.HostSettings{}, // empty settings - Success: true, - Timestamp: time.Now(), - }, - { - HostKey: hk3, - PriceTable: rhpv3.HostPriceTable{ - InitBaseCost: types.NewCurrency64(15), - }, - Settings: rhpv2.HostSettings{ - BaseRPCPrice: types.NewCurrency64(15), - }, - Success: true, - Timestamp: time.Now(), - }, - }) - if err != nil { - t.Fatal(err) - } - // search all hosts his, err := ss.Hosts(context.Background(), api.HostOptions{ AutopilotID: "", @@ -189,59 +154,6 @@ func TestHosts(t *testing.T) { t.Fatal("unexpected") } - // search all hosts sorted by initbasecost - his, err = ss.Hosts(context.Background(), api.HostOptions{ - FilterMode: api.HostFilterModeAll, - SortBy: "price_table.initbasecost", - Limit: -1, - }) - if err != nil { - t.Fatal(err) - } else if len(his) != 3 { - t.Fatal("unexpected", len(his)) - } else if his[0].PublicKey != hk2 || his[1].PublicKey != hk3 || his[2].PublicKey != hk1 { - t.Fatal("unexpected", his[0].PublicKey, his[1].PublicKey, his[2].PublicKey) - } - - // reverse order - his, err = ss.Hosts(context.Background(), api.HostOptions{ - FilterMode: api.HostFilterModeAll, - SortBy: "price_table.initbasecost", - SortDir: api.SortDirDesc, - Limit: -1, - }) - if err != nil { - t.Fatal(err) - } else if len(his) != 3 { - t.Fatal("unexpected", len(his)) - } else if his[0].PublicKey != hk1 || his[1].PublicKey != hk3 || his[2].PublicKey != hk2 { - t.Fatal("unexpected", his[0].PublicKey, his[1].PublicKey, his[2].PublicKey) - } - - // search all hosts sorted by baserpcprice - his, err = ss.Hosts(context.Background(), api.HostOptions{ - FilterMode: api.HostFilterModeAll, - SortBy: "settings.baserpcprice", - Limit: -1, - }) - if err != nil { - t.Fatal(err) - } else if len(his) != 3 { - t.Fatal("unexpected", len(his)) - } else if his[0].PublicKey != hk2 || his[1].PublicKey != hk3 || his[2].PublicKey != hk1 { - t.Fatal("unexpected", his[0].PublicKey, his[1].PublicKey, his[2].PublicKey) - } - - // search by invalid key - his, err = ss.Hosts(context.Background(), api.HostOptions{ - FilterMode: api.HostFilterModeAll, - SortBy: "price_table.invalid", - Limit: -1, - }) - if !errors.Is(err, api.ErrInvalidHostSortBy) { - t.Fatal(err) - } - // assert offset & limit are taken into account his, err = ss.Hosts(context.Background(), api.HostOptions{ AutopilotID: "", diff --git a/stores/sql/main.go b/stores/sql/main.go index bf4779ff9..12b265587 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -791,31 +791,6 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er } var orderByExpr string - if opts.SortBy != "" { - switch opts.SortDir { - case "": - opts.SortDir = api.SortDirAsc - case api.SortDirAsc, api.SortDirDesc: - default: - return nil, fmt.Errorf("%w: %v", api.ErrInvalidHostSortDir, opts.SortDir) - } - if !api.IsValidHostSortBy(opts.SortBy) { - return nil, fmt.Errorf("%w: %s", api.ErrInvalidHostSortBy, opts.SortBy) - } - - var fieldExpr string - if strings.HasPrefix(opts.SortBy, "settings.") { - field := strings.TrimPrefix(opts.SortBy, "settings.") - fieldExpr = fmt.Sprintf("h.settings ->> '$.%s'", field) - } else if strings.HasPrefix(opts.SortBy, "price_table.") { - field := strings.TrimPrefix(opts.SortBy, "price_table.") - fieldExpr = fmt.Sprintf("h.price_table ->> '$.%s'", field) - } else { - return nil, fmt.Errorf("invalid sortBy parameter: %v", opts.SortBy) - } - orderByExpr = fmt.Sprintf("ORDER BY CAST(%s AS DECIMAL(65, 0)) %s", fieldExpr, opts.SortDir) - } - var blockedExpr string if len(blockedExprs) > 0 { blockedExpr = strings.Join(blockedExprs, " OR ") From 90b7a35592b653cf89280993388e6d63e630053b Mon Sep 17 00:00:00 2001 From: PJ Date: Sat, 14 Sep 2024 14:46:43 +0200 Subject: [PATCH 109/708] api: add bucket to object metadata --- api/object.go | 1 + internal/test/e2e/cluster_test.go | 14 +++++++++++++- stores/metadata_test.go | 19 +++++++++++++++++-- stores/sql/main.go | 7 +++++-- stores/sql/mysql/main.go | 4 ++-- stores/sql/sqlite/main.go | 4 ++-- 6 files changed, 40 insertions(+), 9 deletions(-) diff --git a/api/object.go b/api/object.go index 09e33dba1..e97ab9ddf 100644 --- a/api/object.go +++ b/api/object.go @@ -63,6 +63,7 @@ type ( // ObjectMetadata contains various metadata about an object. ObjectMetadata struct { + Bucket string `json:"bucket"` ETag string `json:"eTag,omitempty"` Health float64 `json:"health"` ModTime TimeRFC3339 `json:"modTime"` diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 1b51b2fc1..acc75089c 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -44,6 +44,12 @@ func TestListObjectsWithNoDelimiter(t *testing.T) { start := time.Now() assertMetadata := func(entries []api.ObjectMetadata) { for i := range entries { + // assert bucket + if entries[i].Bucket != api.DefaultBucketName { + t.Fatal("unexpected bucket", entries[i].Bucket) + } + entries[i].Bucket = "" + // assert mod time if !strings.HasSuffix(entries[i].Key, "/") && !entries[i].ModTime.Std().After(start.UTC()) { t.Fatal("mod time should be set") @@ -145,7 +151,7 @@ func TestListObjectsWithNoDelimiter(t *testing.T) { t.Fatal(err) } - // assert mod time & clear it afterwards so we can compare + // assert metadata & clear it afterwards so we can compare assertMetadata(res.Objects) got := res.Objects @@ -389,6 +395,12 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { start := time.Now() assertMetadata := func(entries []api.ObjectMetadata) { for i := range entries { + // assert bucket + if entries[i].Bucket != api.DefaultBucketName { + t.Fatal("unexpected bucket", entries[i].Bucket) + } + entries[i].Bucket = "" + // assert mod time if !strings.HasSuffix(entries[i].Key, "/") && !entries[i].ModTime.Std().After(start.UTC()) { t.Fatal("mod time should be set") diff --git a/stores/metadata_test.go b/stores/metadata_test.go index 0195b264f..ef0de556e 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -342,9 +342,10 @@ func TestObjectMetadata(t *testing.T) { t.Log(got.Object) t.Log(want) t.Fatal("object mismatch", cmp.Diff(got.Object, want, cmp.AllowUnexported(object.EncryptionKey{}))) - } - if !reflect.DeepEqual(got.Metadata, testMetadata) { + } else if !reflect.DeepEqual(got.Metadata, testMetadata) { t.Fatal("meta mismatch", cmp.Diff(got.Metadata, testMetadata)) + } else if got.Bucket != api.DefaultBucketName { + t.Fatal("unexpected bucket", got.Bucket) } // assert metadata CASCADE on object delete @@ -1124,6 +1125,7 @@ func TestSQLMetadataStore(t *testing.T) { expectedObj := api.Object{ ObjectMetadata: api.ObjectMetadata{ + Bucket: api.DefaultBucketName, ETag: testETag, Health: 1, ModTime: api.TimeRFC3339{}, @@ -1607,6 +1609,12 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { {"/", "", "size", "DESC", []api.ObjectMetadata{{Key: "/foo/", Size: 10, Health: .5}, {Key: "/FOO/", Size: 7, Health: 1}, {Key: "/fileÅ›/", Size: 6, Health: 1}, {Key: "/gab/", Size: 5, Health: 1}}}, {"/", "", "size", "ASC", []api.ObjectMetadata{{Key: "/gab/", Size: 5, Health: 1}, {Key: "/fileÅ›/", Size: 6, Health: 1}, {Key: "/FOO/", Size: 7, Health: 1}, {Key: "/foo/", Size: 10, Health: .5}}}, } + // set common fields + for i := range tests { + for j := range tests[i].want { + tests[i].want[j].Bucket = api.DefaultBucketName + } + } for _, test := range tests { resp, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, "", -1) if err != nil { @@ -1709,6 +1717,12 @@ func TestListObjectsExplicitDir(t *testing.T) { }}, {"/dir/", "", "", "", []api.ObjectMetadata{{ETag: "d34db33f", Key: "/dir/file", Size: 1, Health: 0.5, MimeType: testMimeType}}}, } + // set common fields + for i := range tests { + for j := range tests[i].want { + tests[i].want[j].Bucket = api.DefaultBucketName + } + } for _, test := range tests { got, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, "", -1) if err != nil { @@ -3716,6 +3730,7 @@ func TestListObjectsNoDelimiter(t *testing.T) { // set common fields for i := range tests { for j := range tests[i].want { + tests[i].want[j].Bucket = api.DefaultBucketName tests[i].want[j].ETag = testETag tests[i].want[j].MimeType = testMimeType } diff --git a/stores/sql/main.go b/stores/sql/main.go index 12b265587..2b3a7073b 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -1522,6 +1522,7 @@ func ObjectMetadata(ctx context.Context, tx Tx, bucket, key string) (api.Object, om, err := tx.ScanObjectMetadata(tx.QueryRow(ctx, fmt.Sprintf(` SELECT %s FROM objects o + INNER JOIN buckets b ON b.id = o.db_bucket_id WHERE o.id = ? `, tx.SelectObjectMetadataExpr()), objID)) if err != nil { @@ -2698,6 +2699,7 @@ func listObjectsNoDelim(ctx context.Context, tx Tx, bucket, prefix, substring, s rows, err := tx.Query(ctx, fmt.Sprintf(` SELECT %s FROM objects o + INNER JOIN buckets b ON b.id = o.db_bucket_id WHERE %s ORDER BY %s LIMIT ? @@ -2846,13 +2848,13 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s rows, err := tx.Query(ctx, fmt.Sprintf(` SELECT %s FROM ( - SELECT o.object_id, o.size, o.health, o.mime_type, o.created_at, o.etag + SELECT o.db_bucket_id, o.object_id, o.size, o.health, o.mime_type, o.created_at, o.etag FROM objects o LEFT JOIN directories d ON d.name = o.object_id WHERE o.object_id != ? AND o.db_directory_id = ? AND o.db_bucket_id = (SELECT id FROM buckets b WHERE b.name = ?) %s AND d.id IS NULL UNION ALL - SELECT d.name as object_id, SUM(o.size), MIN(o.health), '' as mime_type, MAX(o.created_at) as created_at, '' as etag + SELECT o.db_bucket_id, d.name as object_id, SUM(o.size), MIN(o.health), '' as mime_type, MAX(o.created_at) as created_at, '' as etag FROM objects o INNER JOIN directories d ON SUBSTR(o.object_id, 1, %s(d.name)) = d.name %s WHERE o.db_bucket_id = (SELECT id FROM buckets b WHERE b.name = ?) @@ -2861,6 +2863,7 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s AND d.db_parent_id = ? GROUP BY d.id ) AS o + INNER JOIN buckets b ON b.id = o.db_bucket_id %s ORDER BY %s LIMIT ? diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index 38f6bf97d..ac6a4c7bc 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -813,7 +813,7 @@ func (tx MainDatabaseTx) SaveAccounts(ctx context.Context, accounts []api.Accoun } func (tx *MainDatabaseTx) ScanObjectMetadata(s ssql.Scanner, others ...any) (md api.ObjectMetadata, err error) { - dst := []any{&md.Key, &md.Size, &md.Health, &md.MimeType, &md.ModTime, &md.ETag} + dst := []any{&md.Key, &md.Size, &md.Health, &md.MimeType, &md.ModTime, &md.ETag, &md.Bucket} dst = append(dst, others...) if err := s.Scan(dst...); err != nil { return api.ObjectMetadata{}, fmt.Errorf("failed to scan object metadata: %w", err) @@ -822,7 +822,7 @@ func (tx *MainDatabaseTx) ScanObjectMetadata(s ssql.Scanner, others ...any) (md } func (tx *MainDatabaseTx) SelectObjectMetadataExpr() string { - return "o.object_id, o.size, o.health, o.mime_type, o.created_at, o.etag" + return "o.object_id, o.size, o.health, o.mime_type, o.created_at, o.etag, b.name" } func (tx *MainDatabaseTx) Setting(ctx context.Context, key string) (string, error) { diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index 18c66fa28..a1e7385cc 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -825,7 +825,7 @@ func (tx *MainDatabaseTx) SaveAccounts(ctx context.Context, accounts []api.Accou func (tx *MainDatabaseTx) ScanObjectMetadata(s ssql.Scanner, others ...any) (md api.ObjectMetadata, err error) { var createdAt string - dst := []any{&md.Key, &md.Size, &md.Health, &md.MimeType, &createdAt, &md.ETag} + dst := []any{&md.Key, &md.Size, &md.Health, &md.MimeType, &createdAt, &md.ETag, &md.Bucket} dst = append(dst, others...) if err := s.Scan(dst...); err != nil { return api.ObjectMetadata{}, fmt.Errorf("failed to scan object metadata: %w", err) @@ -836,7 +836,7 @@ func (tx *MainDatabaseTx) ScanObjectMetadata(s ssql.Scanner, others ...any) (md } func (tx *MainDatabaseTx) SelectObjectMetadataExpr() string { - return "o.object_id, o.size, o.health, o.mime_type, DATETIME(o.created_at), o.etag" + return "o.object_id, o.size, o.health, o.mime_type, DATETIME(o.created_at), o.etag, b.name" } func (tx *MainDatabaseTx) UpdateContractSet(ctx context.Context, name string, toAdd, toRemove []types.FileContractID) error { From 371f3fc15bca5b97512d993b2e025abf6a6d115e Mon Sep 17 00:00:00 2001 From: PJ Date: Sat, 14 Sep 2024 14:50:05 +0200 Subject: [PATCH 110/708] bus: remove objects by slab key --- autopilot/autopilot.go | 1 - autopilot/migrator.go | 28 +++--- bus/bus.go | 2 - bus/client/objects.go | 8 -- bus/routes.go | 16 ---- internal/test/e2e/cluster_test.go | 31 ++++--- stores/metadata.go | 8 -- stores/metadata_test.go | 147 +++++++++++++++--------------- stores/sql/database.go | 4 - stores/sql/main.go | 29 ------ stores/sql/mysql/main.go | 4 - stores/sql/sqlite/main.go | 4 - 12 files changed, 107 insertions(+), 175 deletions(-) diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 12f4c809e..0cafa5fd0 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -67,7 +67,6 @@ type Bus interface { ListBuckets(ctx context.Context) ([]api.Bucket, error) // objects - ObjectsBySlabKey(ctx context.Context, bucket string, key object.EncryptionKey) (objects []api.ObjectMetadata, err error) RefreshHealth(ctx context.Context) error Slab(ctx context.Context, key object.EncryptionKey) (object.Slab, error) SlabsForMigration(ctx context.Context, healthCutoff float64, set string, limit int) ([]api.UnhealthySlab, error) diff --git a/autopilot/migrator.go b/autopilot/migrator.go index 251c5e893..a84669ec5 100644 --- a/autopilot/migrator.go +++ b/autopilot/migrator.go @@ -327,18 +327,22 @@ func (m *migrator) objectIDsForSlabKey(ctx context.Context, key object.Encryptio // fetch all objects per bucket idsPerBucket := make(map[string][]string) for _, bucket := range buckets { - objects, err := m.ap.bus.ObjectsBySlabKey(ctx, bucket.Name, key) - if err != nil { - m.logger.Errorf("failed to fetch objects for slab key in bucket %v; %w", bucket, err) - continue - } else if len(objects) == 0 { - continue - } - - idsPerBucket[bucket.Name] = make([]string, len(objects)) - for i, object := range objects { - idsPerBucket[bucket.Name][i] = object.Key - } + _ = bucket + _ = key + // TODO PJ: fetch objects by slab key + // + // objects, err := m.ap.bus.ObjectsBySlabKey(ctx, bucket.Name, key) + // if err != nil { + // m.logger.Errorf("failed to fetch objects for slab key in bucket %v; %w", bucket, err) + // continue + // } else if len(objects) == 0 { + // continue + // } + + // idsPerBucket[bucket.Name] = make([]string, len(objects)) + // for i, object := range objects { + // idsPerBucket[bucket.Name][i] = object.Key + // } } return idsPerBucket, nil diff --git a/bus/bus.go b/bus/bus.go index 90db3764d..8b80f50c3 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -238,7 +238,6 @@ type ( ListObjects(ctx context.Context, bucketName, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) Object(ctx context.Context, bucketName, key string) (api.Object, error) ObjectMetadata(ctx context.Context, bucketName, key string) (api.Object, error) - ObjectsBySlabKey(ctx context.Context, bucketName string, slabKey object.EncryptionKey) ([]api.ObjectMetadata, error) ObjectsStats(ctx context.Context, opts api.ObjectsStatsOpts) (api.ObjectsStatsResponse, error) RemoveObject(ctx context.Context, bucketName, key string) error RemoveObjects(ctx context.Context, bucketName, prefix string) error @@ -487,7 +486,6 @@ func (b *Bus) Handler() http.Handler { "POST /slabs/partial": b.slabsPartialHandlerPOST, "POST /slabs/refreshhealth": b.slabsRefreshHealthHandlerPOST, "GET /slab/:key": b.slabHandlerGET, - "GET /slab/:key/objects": b.slabObjectsHandlerGET, "PUT /slab": b.slabHandlerPUT, "GET /state": b.stateHandlerGET, diff --git a/bus/client/objects.go b/bus/client/objects.go index 1a1f7fc0b..1b8ec20cb 100644 --- a/bus/client/objects.go +++ b/bus/client/objects.go @@ -75,14 +75,6 @@ func (c *Client) Objects(ctx context.Context, bucket string, prefix string, opts return } -// ObjectsBySlabKey returns all objects that reference a given slab. -func (c *Client) ObjectsBySlabKey(ctx context.Context, bucket string, key object.EncryptionKey) (objects []api.ObjectMetadata, err error) { - values := url.Values{} - values.Set("bucket", bucket) - err = c.c.WithContext(ctx).GET(fmt.Sprintf("/slab/%v/objects?"+values.Encode(), key), &objects) - return -} - // ObjectsStats returns information about the number of objects and their size. func (c *Client) ObjectsStats(ctx context.Context, opts api.ObjectsStatsOpts) (osr api.ObjectsStatsResponse, err error) { values := url.Values{} diff --git a/bus/routes.go b/bus/routes.go index d1505af0d..55c3e7248 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1468,22 +1468,6 @@ func (b *Bus) sectorsHostRootHandlerDELETE(jc jape.Context) { } } -func (b *Bus) slabObjectsHandlerGET(jc jape.Context) { - var key object.EncryptionKey - if jc.DecodeParam("key", &key) != nil { - return - } - bucket := api.DefaultBucketName - if jc.DecodeForm("bucket", &bucket) != nil { - return - } - objects, err := b.ms.ObjectsBySlabKey(jc.Request.Context(), bucket, key) - if jc.Check("failed to retrieve objects by slab", err) != nil { - return - } - jc.Encode(objects) -} - func (b *Bus) slabHandlerGET(jc jape.Context) { var key object.EncryptionKey if jc.DecodeParam("key", &key) != nil { diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index acc75089c..0fea4014f 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -1755,23 +1755,24 @@ func TestUploadPacking(t *testing.T) { return nil }) + // TODO PJ: use Objects // ObjectsBySlabKey should return 2 objects for the slab of file1 since file1 // and file2 share the same slab. - res, err := b.Object(context.Background(), api.DefaultBucketName, "file1", api.GetObjectOptions{}) - tt.OK(err) - objs, err := b.ObjectsBySlabKey(context.Background(), api.DefaultBucketName, res.Object.Slabs[0].EncryptionKey) - tt.OK(err) - if len(objs) != 2 { - t.Fatal("expected 2 objects", len(objs)) - } - sort.Slice(objs, func(i, j int) bool { - return objs[i].Key < objs[j].Key // make result deterministic - }) - if objs[0].Key != "/file1" { - t.Fatal("expected file1", objs[0].Key) - } else if objs[1].Key != "/file2" { - t.Fatal("expected file2", objs[1].Key) - } + // res, err := b.Object(context.Background(), api.DefaultBucketName, "file1", api.GetObjectOptions{}) + // tt.OK(err) + // objs, err := b.ObjectsBySlabKey(context.Background(), api.DefaultBucketName, res.Object.Slabs[0].EncryptionKey) + // tt.OK(err) + // if len(objs) != 2 { + // t.Fatal("expected 2 objects", len(objs)) + // } + // sort.Slice(objs, func(i, j int) bool { + // return objs[i].Key < objs[j].Key // make result deterministic + // }) + // if objs[0].Key != "/file1" { + // t.Fatal("expected file1", objs[0].Key) + // } else if objs[1].Key != "/file2" { + // t.Fatal("expected file2", objs[1].Key) + // } } func TestWallet(t *testing.T) { diff --git a/stores/metadata.go b/stores/metadata.go index 64acb2ec8..5dbda1f80 100644 --- a/stores/metadata.go +++ b/stores/metadata.go @@ -649,14 +649,6 @@ func (s *SQLStore) PackedSlabsForUpload(ctx context.Context, lockingDuration tim return s.slabBufferMgr.SlabsForUpload(ctx, lockingDuration, minShards, totalShards, set, limit) } -func (s *SQLStore) ObjectsBySlabKey(ctx context.Context, bucket string, slabKey object.EncryptionKey) (metadata []api.ObjectMetadata, err error) { - err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - metadata, err = tx.ObjectsBySlabKey(ctx, bucket, slabKey) - return err - }) - return -} - func (s *SQLStore) PrunableContractRoots(ctx context.Context, fcid types.FileContractID, roots []types.Hash256) (indices []uint64, err error) { err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { indices, err = tx.PrunableContractRoots(ctx, fcid, roots) diff --git a/stores/metadata_test.go b/stores/metadata_test.go index ef0de556e..57b79f32e 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -3269,67 +3269,68 @@ func TestContractSizes(t *testing.T) { } } -func TestObjectsBySlabKey(t *testing.T) { - ss := newTestSQLStore(t, defaultTestSQLStoreConfig) - defer ss.Close() - - // create a host - hks, err := ss.addTestHosts(1) - if err != nil { - t.Fatal(err) - } - hk1 := hks[0] - - // create a contract - fcids, _, err := ss.addTestContracts(hks) - if err != nil { - t.Fatal(err) - } - fcid1 := fcids[0] - - // create a slab. - slab := object.Slab{ - Health: 1.0, - EncryptionKey: object.GenerateEncryptionKey(), - MinShards: 1, - Shards: newTestShards(hk1, fcid1, types.Hash256{1}), - } - - // Add 3 objects that all reference the slab. - obj := object.Object{ - Key: object.GenerateEncryptionKey(), - Slabs: []object.SlabSlice{ - { - Slab: slab, - Offset: 1, - Length: 0, // incremented later - }, - }, - } - for _, name := range []string{"obj1", "obj2", "obj3"} { - obj.Slabs[0].Length++ - if _, err := ss.addTestObject(name, obj); err != nil { - t.Fatal(err) - } - } - - // Fetch the objects by slab. - objs, err := ss.ObjectsBySlabKey(context.Background(), api.DefaultBucketName, slab.EncryptionKey) - if err != nil { - t.Fatal(err) - } - for i, name := range []string{"obj1", "obj2", "obj3"} { - if objs[i].Key != name { - t.Fatal("unexpected object name", objs[i].Key, name) - } - if objs[i].Size != int64(i)+1 { - t.Fatal("unexpected object size", objs[i].Size, i+1) - } - if objs[i].Health != 1.0 { - t.Fatal("unexpected object health", objs[i].Health) - } - } -} +// TODO PJ: use this as a list test +// func TestObjectsBySlabKey(t *testing.T) { +// ss := newTestSQLStore(t, defaultTestSQLStoreConfig) +// defer ss.Close() + +// // create a host +// hks, err := ss.addTestHosts(1) +// if err != nil { +// t.Fatal(err) +// } +// hk1 := hks[0] + +// // create a contract +// fcids, _, err := ss.addTestContracts(hks) +// if err != nil { +// t.Fatal(err) +// } +// fcid1 := fcids[0] + +// // create a slab. +// slab := object.Slab{ +// Health: 1.0, +// EncryptionKey: object.GenerateEncryptionKey(), +// MinShards: 1, +// Shards: newTestShards(hk1, fcid1, types.Hash256{1}), +// } + +// // Add 3 objects that all reference the slab. +// obj := object.Object{ +// Key: object.GenerateEncryptionKey(), +// Slabs: []object.SlabSlice{ +// { +// Slab: slab, +// Offset: 1, +// Length: 0, // incremented later +// }, +// }, +// } +// for _, name := range []string{"obj1", "obj2", "obj3"} { +// obj.Slabs[0].Length++ +// if _, err := ss.addTestObject(name, obj); err != nil { +// t.Fatal(err) +// } +// } + +// // Fetch the objects by slab. +// objs, err := ss.ObjectsBySlabKey(context.Background(), api.DefaultBucketName, slab.EncryptionKey) +// if err != nil { +// t.Fatal(err) +// } +// for i, name := range []string{"obj1", "obj2", "obj3"} { +// if objs[i].Key != name { +// t.Fatal("unexpected object name", objs[i].Key, name) +// } +// if objs[i].Size != int64(i)+1 { +// t.Fatal("unexpected object size", objs[i].Size, i+1) +// } +// if objs[i].Health != 1.0 { +// t.Fatal("unexpected object health", objs[i].Health) +// } +// } +// } func TestBuckets(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) @@ -3526,18 +3527,20 @@ func TestBucketObjects(t *testing.T) { t.Fatal(err) } + // TODO PJ: use Objects + // // See if we can fetch the object by slab. - if obj, err := ss.Object(context.Background(), b1, "/bar"); err != nil { - t.Fatal(err) - } else if objects, err := ss.ObjectsBySlabKey(context.Background(), b1, obj.Slabs[0].EncryptionKey); err != nil { - t.Fatal(err) - } else if len(objects) != 1 { - t.Fatal("expected 1 object", len(objects)) - } else if objects, err := ss.ObjectsBySlabKey(context.Background(), b2, obj.Slabs[0].EncryptionKey); err != nil { - t.Fatal(err) - } else if len(objects) != 0 { - t.Fatal("expected 0 objects", len(objects)) - } + // if obj, err := ss.Object(context.Background(), b1, "/bar"); err != nil { + // t.Fatal(err) + // } else if objects, err := ss.ObjectsBySlabKey(context.Background(), b1, obj.Slabs[0].EncryptionKey); err != nil { + // t.Fatal(err) + // } else if len(objects) != 1 { + // t.Fatal("expected 1 object", len(objects)) + // } else if objects, err := ss.ObjectsBySlabKey(context.Background(), b2, obj.Slabs[0].EncryptionKey); err != nil { + // t.Fatal(err) + // } else if len(objects) != 0 { + // t.Fatal("expected 0 objects", len(objects)) + // } } func TestCopyObject(t *testing.T) { diff --git a/stores/sql/database.go b/stores/sql/database.go index 651fe81f3..0e5cb21b1 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -223,10 +223,6 @@ type ( // ObjectMetadata returns an object's metadata. ObjectMetadata(ctx context.Context, bucket, key string) (api.Object, error) - // ObjectsBySlabKey returns all objects that contain a reference to the - // slab with the given slabKey. - ObjectsBySlabKey(ctx context.Context, bucket string, slabKey object.EncryptionKey) (metadata []api.ObjectMetadata, err error) - // ObjectsStats returns overall stats about stored objects ObjectsStats(ctx context.Context, opts api.ObjectsStatsOpts) (api.ObjectsStatsResponse, error) diff --git a/stores/sql/main.go b/stores/sql/main.go index 2b3a7073b..3bcbb033a 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -2365,35 +2365,6 @@ func scanStateElement(s Scanner) (types.StateElement, error) { }, nil } -func ObjectsBySlabKey(ctx context.Context, tx Tx, bucket string, slabKey object.EncryptionKey) ([]api.ObjectMetadata, error) { - rows, err := tx.Query(ctx, fmt.Sprintf(` - SELECT %s - FROM objects o - INNER JOIN buckets b ON o.db_bucket_id = b.id - WHERE b.name = ? AND EXISTS ( - SELECT 1 - FROM objects o2 - INNER JOIN slices sli ON sli.db_object_id = o2.id - INNER JOIN slabs sla ON sla.id = sli.db_slab_id - WHERE o2.id = o.id AND sla.key = ? - ) - `, tx.SelectObjectMetadataExpr()), bucket, EncryptionKey(slabKey)) - if err != nil { - return nil, fmt.Errorf("failed to query objects: %w", err) - } - defer rows.Close() - - var objects []api.ObjectMetadata - for rows.Next() { - om, err := tx.ScanObjectMetadata(rows) - if err != nil { - return nil, fmt.Errorf("failed to scan object metadata: %w", err) - } - objects = append(objects, om) - } - return objects, nil -} - func MarkPackedSlabUploaded(ctx context.Context, tx Tx, slab api.UploadedPackedSlab) (string, error) { // fetch relevant slab info var slabID, bufferedSlabID int64 diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index ac6a4c7bc..fb64eaf69 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -547,10 +547,6 @@ func (tx *MainDatabaseTx) ObjectMetadata(ctx context.Context, bucket, key string return ssql.ObjectMetadata(ctx, tx, bucket, key) } -func (tx *MainDatabaseTx) ObjectsBySlabKey(ctx context.Context, bucket string, slabKey object.EncryptionKey) (metadata []api.ObjectMetadata, err error) { - return ssql.ObjectsBySlabKey(ctx, tx, bucket, slabKey) -} - func (tx *MainDatabaseTx) ObjectsStats(ctx context.Context, opts api.ObjectsStatsOpts) (api.ObjectsStatsResponse, error) { return ssql.ObjectsStats(ctx, tx, opts) } diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index a1e7385cc..d80a8b3b7 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -543,10 +543,6 @@ func (tx *MainDatabaseTx) ObjectMetadata(ctx context.Context, bucket, key string return ssql.ObjectMetadata(ctx, tx, bucket, key) } -func (tx *MainDatabaseTx) ObjectsBySlabKey(ctx context.Context, bucket string, slabKey object.EncryptionKey) (metadata []api.ObjectMetadata, err error) { - return ssql.ObjectsBySlabKey(ctx, tx, bucket, slabKey) -} - func (tx *MainDatabaseTx) ObjectsStats(ctx context.Context, opts api.ObjectsStatsOpts) (api.ObjectsStatsResponse, error) { return ssql.ObjectsStats(ctx, tx, opts) } From 33f01c08154e24db7b7a7e8e827fa3902ffb6ef9 Mon Sep 17 00:00:00 2001 From: PJ Date: Sun, 15 Sep 2024 19:10:42 +0200 Subject: [PATCH 111/708] stores: make bucket optional --- api/object.go | 4 ++ bus/client/objects.go | 5 +- bus/routes.go | 3 +- internal/test/e2e/cluster_test.go | 49 +++++++++------- stores/metadata_test.go | 10 +++- stores/sql/main.go | 93 ++++++++++++++++++++++--------- worker/s3/backend.go | 3 +- worker/s3/s3.go | 2 +- 8 files changed, 115 insertions(+), 54 deletions(-) diff --git a/api/object.go b/api/object.go index e97ab9ddf..a27d39627 100644 --- a/api/object.go +++ b/api/object.go @@ -207,6 +207,7 @@ type ( } ListObjectOptions struct { + Bucket string Delimiter string Limit int Marker string @@ -311,6 +312,9 @@ func (opts GetObjectOptions) Apply(values url.Values) { } func (opts ListObjectOptions) Apply(values url.Values) { + if opts.Bucket != "" { + values.Set("bucket", opts.Bucket) + } if opts.Delimiter != "" { values.Set("delimiter", opts.Delimiter) } diff --git a/bus/client/objects.go b/bus/client/objects.go index 1b8ec20cb..ea44ce20f 100644 --- a/bus/client/objects.go +++ b/bus/client/objects.go @@ -62,10 +62,9 @@ func (c *Client) Object(ctx context.Context, bucket, key string, opts api.GetObj return } -// Objects lists objects in the given bucket. -func (c *Client) Objects(ctx context.Context, bucket string, prefix string, opts api.ListObjectOptions) (resp api.ObjectsListResponse, err error) { +// ListObjects lists objects in the given bucket. +func (c *Client) ListObjects(ctx context.Context, prefix string, opts api.ListObjectOptions) (resp api.ObjectsListResponse, err error) { values := url.Values{} - values.Set("bucket", bucket) opts.Apply(values) prefix = api.ObjectKeyEscape(prefix) diff --git a/bus/routes.go b/bus/routes.go index 55c3e7248..7c16061a5 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1148,8 +1148,7 @@ func (b *Bus) objectHandlerGET(jc jape.Context) { } func (b *Bus) objectsHandlerGET(jc jape.Context) { - var marker, delim, sortBy, sortDir, substring string - bucket := api.DefaultBucketName + var bucket, marker, delim, sortBy, sortDir, substring string if jc.DecodeForm("bucket", &bucket) != nil { return } diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 0fea4014f..c7e240afc 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -123,7 +123,8 @@ func TestListObjectsWithNoDelimiter(t *testing.T) { } for _, test := range tests { // use the bus client - res, err := b.Objects(context.Background(), api.DefaultBucketName, test.prefix, api.ListObjectOptions{ + res, err := b.ListObjects(context.Background(), test.prefix, api.ListObjectOptions{ + Bucket: api.DefaultBucketName, SortBy: test.sortBy, SortDir: test.sortDir, Limit: -1, @@ -141,7 +142,8 @@ func TestListObjectsWithNoDelimiter(t *testing.T) { if len(res.Objects) > 0 { marker := "" for offset := 0; offset < len(test.want); offset++ { - res, err := b.Objects(context.Background(), api.DefaultBucketName, test.prefix, api.ListObjectOptions{ + res, err := b.ListObjects(context.Background(), test.prefix, api.ListObjectOptions{ + Bucket: api.DefaultBucketName, SortBy: test.sortBy, SortDir: test.sortDir, Marker: marker, @@ -166,7 +168,8 @@ func TestListObjectsWithNoDelimiter(t *testing.T) { } // list invalid marker - _, err := b.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{ + _, err := b.ListObjects(context.Background(), "", api.ListObjectOptions{ + Bucket: api.DefaultBucketName, Marker: "invalid", SortBy: api.ObjectSortByHealth, }) @@ -490,7 +493,8 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { } for _, test := range tests { // use the bus client - res, err := b.Objects(context.Background(), api.DefaultBucketName, test.path+test.prefix, api.ListObjectOptions{ + res, err := b.ListObjects(context.Background(), test.path+test.prefix, api.ListObjectOptions{ + Bucket: api.DefaultBucketName, Delimiter: "/", SortBy: test.sortBy, SortDir: test.sortDir, @@ -505,7 +509,8 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { } var marker string for offset := 0; offset < len(test.want); offset++ { - res, err := b.Objects(context.Background(), api.DefaultBucketName, test.path+test.prefix, api.ListObjectOptions{ + res, err := b.ListObjects(context.Background(), test.path+test.prefix, api.ListObjectOptions{ + Bucket: api.DefaultBucketName, Delimiter: "/", SortBy: test.sortBy, SortDir: test.sortDir, @@ -531,7 +536,8 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { continue } - res, err = b.Objects(context.Background(), api.DefaultBucketName, test.path+test.prefix, api.ListObjectOptions{ + res, err = b.ListObjects(context.Background(), test.path+test.prefix, api.ListObjectOptions{ + Bucket: api.DefaultBucketName, Delimiter: "/", SortBy: test.sortBy, SortDir: test.sortDir, @@ -560,7 +566,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { } // assert root dir is empty - if resp, err := b.Objects(context.Background(), api.DefaultBucketName, "/", api.ListObjectOptions{}); err != nil { + if resp, err := b.ListObjects(context.Background(), "/", api.ListObjectOptions{Bucket: api.DefaultBucketName}); err != nil { t.Fatal(err) } else if len(resp.Objects) != 0 { t.Fatal("there should be no entries left", resp.Objects) @@ -774,7 +780,8 @@ func TestUploadDownloadExtended(t *testing.T) { tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(file2), api.DefaultBucketName, "fileÅ›/file2", api.UploadObjectOptions{})) // fetch all entries from the worker - resp, err := cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "fileÅ›/", api.ListObjectOptions{ + resp, err := cluster.Bus.ListObjects(context.Background(), "fileÅ›/", api.ListObjectOptions{ + Bucket: api.DefaultBucketName, Delimiter: "/", }) tt.OK(err) @@ -789,7 +796,8 @@ func TestUploadDownloadExtended(t *testing.T) { } // fetch entries in /fileÅ› starting with "file" - res, err := cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "fileÅ›/file", api.ListObjectOptions{ + res, err := cluster.Bus.ListObjects(context.Background(), "fileÅ›/file", api.ListObjectOptions{ + Bucket: api.DefaultBucketName, Delimiter: "/", }) tt.OK(err) @@ -798,7 +806,8 @@ func TestUploadDownloadExtended(t *testing.T) { } // fetch entries in /fileÅ› starting with "foo" - res, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "fileÅ›/foo", api.ListObjectOptions{ + res, err = cluster.Bus.ListObjects(context.Background(), "fileÅ›/foo", api.ListObjectOptions{ + Bucket: api.DefaultBucketName, Delimiter: "/", }) tt.OK(err) @@ -970,17 +979,17 @@ func TestUploadDownloadSpending(t *testing.T) { uploadDownload() // Fuzzy search for uploaded data in various ways. - resp, err := cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{}) + resp, err := cluster.Bus.ListObjects(context.Background(), "", api.ListObjectOptions{Bucket: api.DefaultBucketName}) tt.OK(err) if len(resp.Objects) != 2 { t.Fatalf("should have 2 objects but got %v", len(resp.Objects)) } - resp, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "ata"}) + resp, err = cluster.Bus.ListObjects(context.Background(), "", api.ListObjectOptions{Bucket: api.DefaultBucketName, Substring: "ata"}) tt.OK(err) if len(resp.Objects) != 2 { t.Fatalf("should have 2 objects but got %v", len(resp.Objects)) } - resp, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "1258"}) + resp, err = cluster.Bus.ListObjects(context.Background(), "", api.ListObjectOptions{Bucket: api.DefaultBucketName, Substring: "1258"}) tt.OK(err) if len(resp.Objects) != 1 { t.Fatalf("should have 1 objects but got %v", len(resp.Objects)) @@ -1214,7 +1223,7 @@ func TestParallelUpload(t *testing.T) { wg.Wait() // Check if objects exist. - resp, err := cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "/dir/", Limit: 100}) + resp, err := cluster.Bus.ListObjects(context.Background(), "", api.ListObjectOptions{Bucket: api.DefaultBucketName, Substring: "/dir/", Limit: 100}) tt.OK(err) if len(resp.Objects) != 3 { t.Fatal("wrong number of objects", len(resp.Objects)) @@ -1223,7 +1232,7 @@ func TestParallelUpload(t *testing.T) { // Upload one more object. tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader([]byte("data")), api.DefaultBucketName, "/foo", api.UploadObjectOptions{})) - resp, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "/", Limit: 100}) + resp, err = cluster.Bus.ListObjects(context.Background(), "", api.ListObjectOptions{Bucket: api.DefaultBucketName, Substring: "/", Limit: 100}) tt.OK(err) if len(resp.Objects) != 4 { t.Fatal("wrong number of objects", len(resp.Objects)) @@ -1233,8 +1242,8 @@ func TestParallelUpload(t *testing.T) { if err := cluster.Bus.DeleteObject(context.Background(), api.DefaultBucketName, "/dir/", api.DeleteObjectOptions{Batch: true}); err != nil { t.Fatal(err) } - resp, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "/", Limit: 100}) - cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "/", Limit: 100}) + resp, err = cluster.Bus.ListObjects(context.Background(), "", api.ListObjectOptions{Bucket: api.DefaultBucketName, Substring: "/", Limit: 100}) + cluster.Bus.ListObjects(context.Background(), "", api.ListObjectOptions{Bucket: api.DefaultBucketName, Substring: "/", Limit: 100}) tt.OK(err) if len(resp.Objects) != 1 { t.Fatal("objects weren't deleted") @@ -1244,8 +1253,8 @@ func TestParallelUpload(t *testing.T) { if err := cluster.Bus.DeleteObject(context.Background(), api.DefaultBucketName, "/", api.DeleteObjectOptions{Batch: true}); err != nil { t.Fatal(err) } - resp, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "/", Limit: 100}) - cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "/", Limit: 100}) + resp, err = cluster.Bus.ListObjects(context.Background(), "", api.ListObjectOptions{Bucket: api.DefaultBucketName, Substring: "/", Limit: 100}) + cluster.Bus.ListObjects(context.Background(), "", api.ListObjectOptions{Bucket: api.DefaultBucketName, Substring: "/", Limit: 100}) tt.OK(err) if len(resp.Objects) != 0 { t.Fatal("objects weren't deleted") @@ -1662,7 +1671,7 @@ func TestUploadPacking(t *testing.T) { if res.Size != int64(len(data)) { t.Fatal("unexpected size after upload", res.Size, len(data)) } - resp, err := b.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{}) + resp, err := b.ListObjects(context.Background(), "", api.ListObjectOptions{Bucket: api.DefaultBucketName}) if err != nil { t.Fatal(err) } diff --git a/stores/metadata_test.go b/stores/metadata_test.go index 57b79f32e..bf2e74a92 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -3269,7 +3269,7 @@ func TestContractSizes(t *testing.T) { } } -// TODO PJ: use this as a list test +//  : use this as a list test // func TestObjectsBySlabKey(t *testing.T) { // ss := newTestSQLStore(t, defaultTestSQLStoreConfig) // defer ss.Close() @@ -3435,6 +3435,10 @@ func TestBucketObjects(t *testing.T) { t.Fatal("expected 1 entry", len(entries)) } else if entries[0].Size != 2 { t.Fatal("unexpected size", entries[0].Size) + } else if resp, err := ss.ListObjects(context.Background(), "", "/foo/", "", "", "", "", "", -1); err != nil { + t.Fatal(err) + } else if entries := resp.Objects; len(entries) != 2 { + t.Fatal("expected 2 entries", len(entries)) } // Search the objects in the buckets. @@ -3450,6 +3454,10 @@ func TestBucketObjects(t *testing.T) { t.Fatal("expected 2 objects", len(objects)) } else if objects[0].Size != 4 || objects[1].Size != 2 { t.Fatal("unexpected size", objects[0].Size, objects[1].Size) + } else if resp, err := ss.ListObjects(context.Background(), "", "", "", "", "", "", "", -1); err != nil { + t.Fatal(err) + } else if objects := resp.Objects; len(objects) != 4 { + t.Fatal("expected 4 objects", len(objects)) } // Rename object foo/bar in bucket 1 to foo/baz but not in bucket 2. diff --git a/stores/sql/main.go b/stores/sql/main.go index 3bcbb033a..c080cc592 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -2621,9 +2621,14 @@ func listObjectsNoDelim(ctx context.Context, tx Tx, bucket, prefix, substring, s sortDir = api.SortDirAsc } - // filter by bucket - whereExprs := []string{"o.db_bucket_id = (SELECT id FROM buckets b WHERE b.name = ?)"} - whereArgs := []any{bucket} + var whereExprs []string + var whereArgs []any + + // apply bucket + if bucket != "" { + whereExprs = append(whereExprs, "b.name = ?") + whereArgs = append(whereArgs, bucket) + } // apply prefix if prefix != "" { @@ -2645,12 +2650,20 @@ func listObjectsNoDelim(ctx context.Context, tx Tx, bucket, prefix, substring, s // apply marker markerExprs, markerArgs, err := whereObjectMarker(marker, sortBy, sortDir, func(dst any, marker, col string) error { + markerExprs := []string{"o.object_id = ?"} + markerArgs := []any{marker} + + if bucket != "" { + markerExprs = append(markerExprs, "b.name = ?") + markerArgs = append(markerArgs, bucket) + } + err := tx.QueryRow(ctx, fmt.Sprintf(` SELECT o.%s FROM objects o INNER JOIN buckets b ON o.db_bucket_id = b.id - WHERE b.name = ? AND o.object_id = ? - `, col), bucket, marker).Scan(dst) + WHERE %s + `, col, strings.Join(markerExprs, " AND ")), markerArgs...).Scan(dst) if errors.Is(err, dsql.ErrNoRows) { return api.ErrMarkerNotFound } else { @@ -2666,17 +2679,23 @@ func listObjectsNoDelim(ctx context.Context, tx Tx, bucket, prefix, substring, s // apply limit whereArgs = append(whereArgs, limit) + // build where expression + var whereExpr string + if len(whereExprs) > 0 { + whereExpr = fmt.Sprintf("WHERE %s", strings.Join(whereExprs, " AND ")) + } + // run query rows, err := tx.Query(ctx, fmt.Sprintf(` - SELECT %s - FROM objects o - INNER JOIN buckets b ON b.id = o.db_bucket_id - WHERE %s - ORDER BY %s - LIMIT ? - `, + SELECT %s + FROM objects o + INNER JOIN buckets b ON b.id = o.db_bucket_id + %s + ORDER BY %s + LIMIT ? +`, tx.SelectObjectMetadataExpr(), - strings.Join(whereExprs, " AND "), + whereExpr, strings.Join(orderByExprs, ", ")), whereArgs...) if err != nil { @@ -2746,7 +2765,7 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s args := []any{ path, - dirID, bucket, + dirID, } // apply prefix @@ -2760,14 +2779,13 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s } args = append(args, - bucket, path+"%", utf8.RuneCountInString(path), path, dirID, ) // apply marker - var whereExpr string + var whereExprs []string markerExprs, markerArgs, err := whereObjectMarker(marker, sortBy, sortDir, func(dst any, marker, col string) error { var groupFn string switch col { @@ -2778,19 +2796,34 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s default: return fmt.Errorf("unknown column: %v", col) } + + markerExprsObj := []string{"o.object_id = ?"} + markerArgsObj := []any{marker} + if bucket != "" { + markerExprsObj = append(markerExprsObj, "b.name = ?") + markerArgsObj = append(markerArgsObj, bucket) + } + + markerExprsDir := []string{"d.name = ?"} + markerArgsDir := []any{marker} + if bucket != "" { + markerExprsDir = append(markerExprsDir, "b.name = ?") + markerArgsDir = append(markerArgsDir, bucket) + } + err := tx.QueryRow(ctx, fmt.Sprintf(` SELECT o.%s FROM objects o INNER JOIN buckets b ON o.db_bucket_id = b.id - WHERE b.name = ? AND o.object_id = ? + WHERE %s UNION ALL SELECT %s(o.%s) FROM objects o INNER JOIN buckets b ON o.db_bucket_id = b.id INNER JOIN directories d ON SUBSTR(o.object_id, 1, %s(d.name)) = d.name - WHERE b.name = ? AND d.name = ? + WHERE %s GROUP BY d.id - `, col, groupFn, col, tx.CharLengthExpr()), bucket, marker, bucket, marker).Scan(dst) + `, col, strings.Join(markerExprsObj, " AND "), groupFn, col, tx.CharLengthExpr(), strings.Join(markerExprsDir, " AND ")), append(markerArgsObj, markerArgsDir...)...).Scan(dst) if errors.Is(err, dsql.ErrNoRows) { return api.ErrMarkerNotFound } else { @@ -2800,7 +2833,7 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s if err != nil { return api.ObjectsListResponse{}, fmt.Errorf("failed to query marker: %w", err) } else if len(markerExprs) > 0 { - whereExpr = "WHERE " + strings.Join(markerExprs, " AND ") + whereExprs = append(whereExprs, markerExprs...) } args = append(args, markerArgs...) @@ -2810,9 +2843,21 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s return api.ObjectsListResponse{}, fmt.Errorf("failed to apply sorting: %w", err) } + // apply bucket + if bucket != "" { + whereExprs = append(whereExprs, "b.name = ?") + args = append(args, bucket) + } + // apply offset and limit args = append(args, limit) + // build where expression + var whereExpr string + if len(whereExprs) > 0 { + whereExpr = fmt.Sprintf("WHERE %s", strings.Join(whereExprs, " AND ")) + } + // objectsQuery consists of 2 parts // 1. fetch all objects in requested directory // 2. fetch all sub-directories @@ -2822,16 +2867,12 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s SELECT o.db_bucket_id, o.object_id, o.size, o.health, o.mime_type, o.created_at, o.etag FROM objects o LEFT JOIN directories d ON d.name = o.object_id - WHERE o.object_id != ? AND o.db_directory_id = ? AND o.db_bucket_id = (SELECT id FROM buckets b WHERE b.name = ?) %s - AND d.id IS NULL + WHERE o.object_id != ? AND o.db_directory_id = ? AND d.id IS NULL %s UNION ALL SELECT o.db_bucket_id, d.name as object_id, SUM(o.size), MIN(o.health), '' as mime_type, MAX(o.created_at) as created_at, '' as etag FROM objects o INNER JOIN directories d ON SUBSTR(o.object_id, 1, %s(d.name)) = d.name %s - WHERE o.db_bucket_id = (SELECT id FROM buckets b WHERE b.name = ?) - AND o.object_id LIKE ? - AND SUBSTR(o.object_id, 1, ?) = ? - AND d.db_parent_id = ? + WHERE o.object_id LIKE ? AND SUBSTR(o.object_id, 1, ?) = ? AND d.db_parent_id = ? GROUP BY d.id ) AS o INNER JOIN buckets b ON b.id = o.db_bucket_id diff --git a/worker/s3/backend.go b/worker/s3/backend.go index 28e1f7299..fc68b1cd0 100644 --- a/worker/s3/backend.go +++ b/worker/s3/backend.go @@ -91,7 +91,8 @@ func (s *s3) ListBucket(ctx context.Context, bucketName string, prefix *gofakes3 page.Marker = "/" + page.Marker } - resp, err := s.b.Objects(ctx, bucketName, prefix.Prefix, api.ListObjectOptions{ + resp, err := s.b.ListObjects(ctx, prefix.Prefix, api.ListObjectOptions{ + Bucket: bucketName, Delimiter: prefix.Delimiter, Limit: int(page.MaxKeys), Marker: page.Marker, diff --git a/worker/s3/s3.go b/worker/s3/s3.go index 10b074306..a80d49f90 100644 --- a/worker/s3/s3.go +++ b/worker/s3/s3.go @@ -33,7 +33,7 @@ type Bus interface { AddObject(ctx context.Context, bucket, key, contractSet string, o object.Object, opts api.AddObjectOptions) (err error) CopyObject(ctx context.Context, srcBucket, dstBucket, srcKey, dstKey string, opts api.CopyObjectOptions) (om api.ObjectMetadata, err error) DeleteObject(ctx context.Context, bucket, key string, opts api.DeleteObjectOptions) (err error) - Objects(ctx context.Context, bucket, prefix string, opts api.ListObjectOptions) (resp api.ObjectsListResponse, err error) + ListObjects(ctx context.Context, prefix string, opts api.ListObjectOptions) (resp api.ObjectsListResponse, err error) AbortMultipartUpload(ctx context.Context, bucket, key string, uploadID string) (err error) CompleteMultipartUpload(ctx context.Context, bucket, key, uploadID string, parts []api.MultipartCompletedPart, opts api.CompleteMultipartOptions) (_ api.MultipartCompleteResponse, err error) From 23646fbb3e423bfe4e34ecc1a4e592ed1146a045 Mon Sep 17 00:00:00 2001 From: PJ Date: Sun, 15 Sep 2024 19:56:38 +0200 Subject: [PATCH 112/708] bus: add slab encryption key to list object options --- api/object.go | 18 ++++--- autopilot/autopilot.go | 1 + autopilot/migrator.go | 28 +++++------ bus/bus.go | 2 +- bus/routes.go | 6 ++- internal/test/e2e/cluster_test.go | 35 +++++++------- stores/metadata.go | 4 +- stores/metadata_test.go | 80 +++++++++++++++---------------- stores/sql/database.go | 2 +- stores/sql/main.go | 26 +++++++--- stores/sql/mysql/main.go | 4 +- stores/sql/sqlite/main.go | 4 +- 12 files changed, 113 insertions(+), 97 deletions(-) diff --git a/api/object.go b/api/object.go index a27d39627..07df140ec 100644 --- a/api/object.go +++ b/api/object.go @@ -207,13 +207,14 @@ type ( } ListObjectOptions struct { - Bucket string - Delimiter string - Limit int - Marker string - SortBy string - SortDir string - Substring string + Bucket string + Delimiter string + Limit int + Marker string + SortBy string + SortDir string + Substring string + SlabEncryptionKey object.EncryptionKey } SearchObjectOptions struct { @@ -333,6 +334,9 @@ func (opts ListObjectOptions) Apply(values url.Values) { if opts.Substring != "" { values.Set("substring", opts.Substring) } + if opts.SlabEncryptionKey != (object.EncryptionKey{}) { + values.Set("slabEncryptionKey", opts.SlabEncryptionKey.String()) + } } func (opts SearchObjectOptions) Apply(values url.Values) { diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 0cafa5fd0..7b9cd98c1 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -67,6 +67,7 @@ type Bus interface { ListBuckets(ctx context.Context) ([]api.Bucket, error) // objects + ListObjects(ctx context.Context, prefix string, opts api.ListObjectOptions) (resp api.ObjectsListResponse, err error) RefreshHealth(ctx context.Context) error Slab(ctx context.Context, key object.EncryptionKey) (object.Slab, error) SlabsForMigration(ctx context.Context, healthCutoff float64, set string, limit int) ([]api.UnhealthySlab, error) diff --git a/autopilot/migrator.go b/autopilot/migrator.go index a84669ec5..0909d0137 100644 --- a/autopilot/migrator.go +++ b/autopilot/migrator.go @@ -327,22 +327,18 @@ func (m *migrator) objectIDsForSlabKey(ctx context.Context, key object.Encryptio // fetch all objects per bucket idsPerBucket := make(map[string][]string) for _, bucket := range buckets { - _ = bucket - _ = key - // TODO PJ: fetch objects by slab key - // - // objects, err := m.ap.bus.ObjectsBySlabKey(ctx, bucket.Name, key) - // if err != nil { - // m.logger.Errorf("failed to fetch objects for slab key in bucket %v; %w", bucket, err) - // continue - // } else if len(objects) == 0 { - // continue - // } - - // idsPerBucket[bucket.Name] = make([]string, len(objects)) - // for i, object := range objects { - // idsPerBucket[bucket.Name][i] = object.Key - // } + res, err := m.ap.bus.ListObjects(ctx, "", api.ListObjectOptions{Bucket: bucket.Name, SlabEncryptionKey: key}) + if err != nil { + m.logger.Errorf("failed to fetch objects for slab key in bucket %v; %w", bucket, err) + continue + } else if len(res.Objects) == 0 { + continue + } + + idsPerBucket[bucket.Name] = make([]string, len(res.Objects)) + for i, object := range res.Objects { + idsPerBucket[bucket.Name][i] = object.Key + } } return idsPerBucket, nil diff --git a/bus/bus.go b/bus/bus.go index 8b80f50c3..b9b660fc4 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -235,7 +235,7 @@ type ( UpdateBucketPolicy(ctx context.Context, bucketName string, policy api.BucketPolicy) error CopyObject(ctx context.Context, srcBucket, dstBucket, srcKey, dstKey, mimeType string, metadata api.ObjectUserMetadata) (api.ObjectMetadata, error) - ListObjects(ctx context.Context, bucketName, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) + ListObjects(ctx context.Context, bucketName, prefix, substring, delim, sortBy, sortDir, marker string, limit int, slabEncryptionKey object.EncryptionKey) (api.ObjectsListResponse, error) Object(ctx context.Context, bucketName, key string) (api.Object, error) ObjectMetadata(ctx context.Context, bucketName, key string) (api.Object, error) ObjectsStats(ctx context.Context, opts api.ObjectsStatsOpts) (api.ObjectsStatsResponse, error) diff --git a/bus/routes.go b/bus/routes.go index 7c16061a5..f69ab8394 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1171,8 +1171,12 @@ func (b *Bus) objectsHandlerGET(jc jape.Context) { if jc.DecodeForm("substring", &substring) != nil { return } + var slabEncryptionKey object.EncryptionKey + if jc.DecodeForm("slabEncryptionKey", &slabEncryptionKey) != nil { + return + } - resp, err := b.ms.ListObjects(jc.Request.Context(), bucket, jc.PathParam("prefix"), substring, delim, sortBy, sortDir, marker, limit) + resp, err := b.ms.ListObjects(jc.Request.Context(), bucket, jc.PathParam("prefix"), substring, delim, sortBy, sortDir, marker, limit, slabEncryptionKey) if errors.Is(err, api.ErrUnsupportedDelimiter) { jc.Error(err, http.StatusBadRequest) return diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index c7e240afc..bcea19b72 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -1764,24 +1764,23 @@ func TestUploadPacking(t *testing.T) { return nil }) - // TODO PJ: use Objects - // ObjectsBySlabKey should return 2 objects for the slab of file1 since file1 - // and file2 share the same slab. - // res, err := b.Object(context.Background(), api.DefaultBucketName, "file1", api.GetObjectOptions{}) - // tt.OK(err) - // objs, err := b.ObjectsBySlabKey(context.Background(), api.DefaultBucketName, res.Object.Slabs[0].EncryptionKey) - // tt.OK(err) - // if len(objs) != 2 { - // t.Fatal("expected 2 objects", len(objs)) - // } - // sort.Slice(objs, func(i, j int) bool { - // return objs[i].Key < objs[j].Key // make result deterministic - // }) - // if objs[0].Key != "/file1" { - // t.Fatal("expected file1", objs[0].Key) - // } else if objs[1].Key != "/file2" { - // t.Fatal("expected file2", objs[1].Key) - // } + // ListObjects should return 2 objects for the slab of file1 since file1 and + // file2 share the same slab. + o, err := b.Object(context.Background(), api.DefaultBucketName, "file1", api.GetObjectOptions{}) + tt.OK(err) + res, err := b.ListObjects(context.Background(), "", api.ListObjectOptions{Bucket: api.DefaultBucketName, SlabEncryptionKey: o.Object.Slabs[0].EncryptionKey}) + tt.OK(err) + if len(res.Objects) != 2 { + t.Fatal("expected 2 objects", len(res.Objects)) + } + sort.Slice(res.Objects, func(i, j int) bool { + return res.Objects[i].Key < res.Objects[j].Key // make result deterministic + }) + if res.Objects[0].Key != "/file1" { + t.Fatal("expected file1", res.Objects[0].Key) + } else if res.Objects[1].Key != "/file2" { + t.Fatal("expected file2", res.Objects[1].Key) + } } func TestWallet(t *testing.T) { diff --git a/stores/metadata.go b/stores/metadata.go index 5dbda1f80..947fab20e 100644 --- a/stores/metadata.go +++ b/stores/metadata.go @@ -782,9 +782,9 @@ func (s *SQLStore) invalidateSlabHealthByFCID(ctx context.Context, fcids []types } } -func (s *SQLStore) ListObjects(ctx context.Context, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (resp api.ObjectsListResponse, err error) { +func (s *SQLStore) ListObjects(ctx context.Context, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int, slabEncryptionKey object.EncryptionKey) (resp api.ObjectsListResponse, err error) { err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - resp, err = tx.ListObjects(ctx, bucket, prefix, substring, delim, sortBy, sortDir, marker, limit) + resp, err = tx.ListObjects(ctx, bucket, prefix, substring, delim, sortBy, sortDir, marker, limit, slabEncryptionKey) return err }) return diff --git a/stores/metadata_test.go b/stores/metadata_test.go index bf2e74a92..4c1e508e4 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -1457,7 +1457,7 @@ func TestObjectHealth(t *testing.T) { } // assert health is returned correctly by ObjectEntries - resp, err := ss.ListObjects(context.Background(), api.DefaultBucketName, "/", "", "", "", "", "", -1) + resp, err := ss.ListObjects(context.Background(), api.DefaultBucketName, "/", "", "", "", "", "", -1, object.EncryptionKey{}) entries := resp.Objects if err != nil { t.Fatal(err) @@ -1468,7 +1468,7 @@ func TestObjectHealth(t *testing.T) { } // assert health is returned correctly by SearchObject - resp, err = ss.ListObjects(context.Background(), api.DefaultBucketName, "/", "foo", "", "", "", "", -1) + resp, err = ss.ListObjects(context.Background(), api.DefaultBucketName, "/", "foo", "", "", "", "", -1, object.EncryptionKey{}) if err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { @@ -1616,7 +1616,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { } } for _, test := range tests { - resp, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, "", -1) + resp, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, "", -1, object.EncryptionKey{}) if err != nil { t.Fatal(err) } @@ -1629,7 +1629,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { var marker string for offset := 0; offset < len(test.want); offset++ { - resp, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, marker, 1) + resp, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, marker, 1, object.EncryptionKey{}) if err != nil { t.Fatal(err) } @@ -1651,7 +1651,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { continue } - resp, err = ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, test.want[offset].Key, 1) + resp, err = ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, test.want[offset].Key, 1, object.EncryptionKey{}) if err != nil { t.Fatal(err) } @@ -1724,7 +1724,7 @@ func TestListObjectsExplicitDir(t *testing.T) { } } for _, test := range tests { - got, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, "", -1) + got, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, "", -1, object.EncryptionKey{}) if err != nil { t.Fatal(err) } @@ -1792,7 +1792,7 @@ func TestListObjectsSubstring(t *testing.T) { {"uu", []api.ObjectMetadata{{Key: "/foo/baz/quux", Size: 3, Health: 1}, {Key: "/foo/baz/quuz", Size: 4, Health: 1}, {Key: "/gab/guub", Size: 5, Health: 1}}}, } for _, test := range tests { - resp, err := ss.ListObjects(ctx, api.DefaultBucketName, "", test.key, "", "", "", "", -1) + resp, err := ss.ListObjects(ctx, api.DefaultBucketName, "", test.key, "", "", "", "", -1, object.EncryptionKey{}) if err != nil { t.Fatal(err) } @@ -1800,7 +1800,7 @@ func TestListObjectsSubstring(t *testing.T) { assertEqual(got, test.want) var marker string for offset := 0; offset < len(test.want); offset++ { - if resp, err := ss.ListObjects(ctx, api.DefaultBucketName, "", test.key, "", "", "", marker, 1); err != nil { + if resp, err := ss.ListObjects(ctx, api.DefaultBucketName, "", test.key, "", "", "", marker, 1, object.EncryptionKey{}); err != nil { t.Fatal(err) } else if got := resp.Objects; len(got) != 1 { t.Errorf("\nkey: %v unexpected number of objects, %d != 1", test.key, len(got)) @@ -2645,7 +2645,7 @@ func TestRenameObjects(t *testing.T) { } // Assert that number of objects matches. - resp, err := ss.ListObjects(ctx, api.DefaultBucketName, "", "/", "", "", "", "", 100) + resp, err := ss.ListObjects(ctx, api.DefaultBucketName, "", "/", "", "", "", "", 100, object.EncryptionKey{}) if err != nil { t.Fatal(err) } @@ -3423,38 +3423,38 @@ func TestBucketObjects(t *testing.T) { } // List the objects in the buckets. - if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", "", -1); err != nil { + if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", "", -1, object.EncryptionKey{}); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 1 entry", len(entries)) } else if entries[0].Size != 1 { t.Fatal("unexpected size", entries[0].Size) - } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", "", -1, object.EncryptionKey{}); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 1 entry", len(entries)) } else if entries[0].Size != 2 { t.Fatal("unexpected size", entries[0].Size) - } else if resp, err := ss.ListObjects(context.Background(), "", "/foo/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), "", "/foo/", "", "", "", "", "", -1, object.EncryptionKey{}); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 2 { t.Fatal("expected 2 entries", len(entries)) } // Search the objects in the buckets. - if resp, err := ss.ListObjects(context.Background(), b1, "", "", "", "", "", "", -1); err != nil { + if resp, err := ss.ListObjects(context.Background(), b1, "", "", "", "", "", "", -1, object.EncryptionKey{}); err != nil { t.Fatal(err) } else if objects := resp.Objects; len(objects) != 2 { t.Fatal("expected 2 objects", len(objects)) } else if objects[0].Size != 3 || objects[1].Size != 1 { t.Fatal("unexpected size", objects[0].Size, objects[1].Size) - } else if resp, err := ss.ListObjects(context.Background(), b2, "", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b2, "", "", "", "", "", "", -1, object.EncryptionKey{}); err != nil { t.Fatal(err) } else if objects := resp.Objects; len(objects) != 2 { t.Fatal("expected 2 objects", len(objects)) } else if objects[0].Size != 4 || objects[1].Size != 2 { t.Fatal("unexpected size", objects[0].Size, objects[1].Size) - } else if resp, err := ss.ListObjects(context.Background(), "", "", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), "", "", "", "", "", "", "", -1, object.EncryptionKey{}); err != nil { t.Fatal(err) } else if objects := resp.Objects; len(objects) != 4 { t.Fatal("expected 4 objects", len(objects)) @@ -3463,13 +3463,13 @@ func TestBucketObjects(t *testing.T) { // Rename object foo/bar in bucket 1 to foo/baz but not in bucket 2. if err := ss.RenameObjectBlocking(context.Background(), b1, "/foo/bar", "/foo/baz", false); err != nil { t.Fatal(err) - } else if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", "", -1, object.EncryptionKey{}); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 2 entries", len(entries)) } else if entries[0].Key != "/foo/baz" { t.Fatal("unexpected name", entries[0].Key) - } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", "", -1, object.EncryptionKey{}); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 2 entries", len(entries)) @@ -3480,13 +3480,13 @@ func TestBucketObjects(t *testing.T) { // Rename foo/bar in bucket 2 using the batch rename. if err := ss.RenameObjectsBlocking(context.Background(), b2, "/foo/bar", "/foo/bam", false); err != nil { t.Fatal(err) - } else if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", "", -1, object.EncryptionKey{}); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 2 entries", len(entries)) } else if entries[0].Key != "/foo/baz" { t.Fatal("unexpected name", entries[0].Key) - } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", "", -1, object.EncryptionKey{}); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 2 entries", len(entries)) @@ -3499,28 +3499,28 @@ func TestBucketObjects(t *testing.T) { t.Fatal(err) } else if err := ss.RemoveObjectBlocking(context.Background(), b1, "/foo/baz"); err != nil { t.Fatal(err) - } else if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", "", -1, object.EncryptionKey{}); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) > 0 { t.Fatal("expected 0 entries", len(entries)) - } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", "", -1, object.EncryptionKey{}); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 1 entry", len(entries)) } // Delete all files in bucket 2. - if resp, err := ss.ListObjects(context.Background(), b2, "/", "", "", "", "", "", -1); err != nil { + if resp, err := ss.ListObjects(context.Background(), b2, "/", "", "", "", "", "", -1, object.EncryptionKey{}); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 2 { t.Fatal("expected 2 entries", len(entries)) } else if err := ss.RemoveObjectsBlocking(context.Background(), b2, "/"); err != nil { t.Fatal(err) - } else if resp, err := ss.ListObjects(context.Background(), b2, "/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b2, "/", "", "", "", "", "", -1, object.EncryptionKey{}); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 0 { t.Fatal("expected 0 entries", len(entries)) - } else if resp, err := ss.ListObjects(context.Background(), b1, "/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(context.Background(), b1, "/", "", "", "", "", "", -1, object.EncryptionKey{}); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 1 entry", len(entries)) @@ -3535,20 +3535,18 @@ func TestBucketObjects(t *testing.T) { t.Fatal(err) } - // TODO PJ: use Objects - // // See if we can fetch the object by slab. - // if obj, err := ss.Object(context.Background(), b1, "/bar"); err != nil { - // t.Fatal(err) - // } else if objects, err := ss.ObjectsBySlabKey(context.Background(), b1, obj.Slabs[0].EncryptionKey); err != nil { - // t.Fatal(err) - // } else if len(objects) != 1 { - // t.Fatal("expected 1 object", len(objects)) - // } else if objects, err := ss.ObjectsBySlabKey(context.Background(), b2, obj.Slabs[0].EncryptionKey); err != nil { - // t.Fatal(err) - // } else if len(objects) != 0 { - // t.Fatal("expected 0 objects", len(objects)) - // } + if obj, err := ss.Object(context.Background(), b1, "/bar"); err != nil { + t.Fatal(err) + } else if res, err := ss.ListObjects(context.Background(), b1, "", "", "", "", "", "", -1, obj.Slabs[0].EncryptionKey); err != nil { + t.Fatal(err) + } else if len(res.Objects) != 1 { + t.Fatal("expected 1 object", len(objects)) + } else if res, err := ss.ListObjects(context.Background(), b2, "", "", "", "", "", "", -1, obj.Slabs[0].EncryptionKey); err != nil { + t.Fatal(err) + } else if len(res.Objects) != 0 { + t.Fatal("expected 0 objects", len(objects)) + } } func TestCopyObject(t *testing.T) { @@ -3573,7 +3571,7 @@ func TestCopyObject(t *testing.T) { // Copy it within the same bucket. if om, err := ss.CopyObject(ctx, "src", "src", "/foo", "/bar", "", nil); err != nil { t.Fatal(err) - } else if resp, err := ss.ListObjects(ctx, "src", "/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(ctx, "src", "/", "", "", "", "", "", -1, object.EncryptionKey{}); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 2 { t.Fatal("expected 2 entries", len(entries)) @@ -3586,7 +3584,7 @@ func TestCopyObject(t *testing.T) { // Copy it cross buckets. if om, err := ss.CopyObject(ctx, "src", "dst", "/foo", "/bar", "", nil); err != nil { t.Fatal(err) - } else if resp, err := ss.ListObjects(ctx, "dst", "/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.ListObjects(ctx, "dst", "/", "", "", "", "", "", -1, object.EncryptionKey{}); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 1 entry", len(entries)) @@ -3747,7 +3745,7 @@ func TestListObjectsNoDelimiter(t *testing.T) { } } for _, test := range tests { - res, err := ss.ListObjects(ctx, api.DefaultBucketName, test.prefix, "", "", test.sortBy, test.sortDir, "", -1) + res, err := ss.ListObjects(ctx, api.DefaultBucketName, test.prefix, "", "", test.sortBy, test.sortDir, "", -1, object.EncryptionKey{}) if err != nil { t.Fatal(err) } @@ -3762,7 +3760,7 @@ func TestListObjectsNoDelimiter(t *testing.T) { if len(res.Objects) > 0 { marker := "" for offset := 0; offset < len(test.want); offset++ { - res, err := ss.ListObjects(ctx, api.DefaultBucketName, test.prefix, "", "", test.sortBy, test.sortDir, marker, 1) + res, err := ss.ListObjects(ctx, api.DefaultBucketName, test.prefix, "", "", test.sortBy, test.sortDir, marker, 1, object.EncryptionKey{}) if err != nil { t.Fatal(err) } diff --git a/stores/sql/database.go b/stores/sql/database.go index 0e5cb21b1..bbabcdcc1 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -196,7 +196,7 @@ type ( ListBuckets(ctx context.Context) ([]api.Bucket, error) // ListObjects returns a list of objects from the given bucket. - ListObjects(ctx context.Context, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (resp api.ObjectsListResponse, err error) + ListObjects(ctx context.Context, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int, slabEncryptionKey object.EncryptionKey) (resp api.ObjectsListResponse, err error) // MakeDirsForPath creates all directories for a given object's path. MakeDirsForPath(ctx context.Context, path string) (int64, error) diff --git a/stores/sql/main.go b/stores/sql/main.go index c080cc592..8df3e88c9 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -1250,12 +1250,12 @@ func orderByObject(sortBy, sortDir string) (orderByExprs []string, _ error) { return orderByExprs, nil } -func ListObjects(ctx context.Context, tx Tx, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (resp api.ObjectsListResponse, err error) { +func ListObjects(ctx context.Context, tx Tx, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int, slabEncryptionKey object.EncryptionKey) (resp api.ObjectsListResponse, err error) { switch delim { case "": - resp, err = listObjectsNoDelim(ctx, tx, bucket, prefix, substring, sortBy, sortDir, marker, limit) + resp, err = listObjectsNoDelim(ctx, tx, bucket, prefix, substring, sortBy, sortDir, marker, limit, slabEncryptionKey) case "/": - resp, err = listObjectsSlashDelim(ctx, tx, bucket, prefix, sortBy, sortDir, marker, limit) + resp, err = listObjectsSlashDelim(ctx, tx, bucket, prefix, sortBy, sortDir, marker, limit, slabEncryptionKey) default: err = fmt.Errorf("unsupported delimiter: '%s'", delim) } @@ -2605,7 +2605,7 @@ func Object(ctx context.Context, tx Tx, bucket, key string) (api.Object, error) }, nil } -func listObjectsNoDelim(ctx context.Context, tx Tx, bucket, prefix, substring, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { +func listObjectsNoDelim(ctx context.Context, tx Tx, bucket, prefix, substring, sortBy, sortDir, marker string, limit int, slabEncryptionKey object.EncryptionKey) (api.ObjectsListResponse, error) { // fetch one more to see if there are more entries if limit <= -1 { limit = math.MaxInt @@ -2676,6 +2676,12 @@ func listObjectsNoDelim(ctx context.Context, tx Tx, bucket, prefix, substring, s whereExprs = append(whereExprs, markerExprs...) whereArgs = append(whereArgs, markerArgs...) + // apply slab key + if slabEncryptionKey != (object.EncryptionKey{}) { + whereExprs = append(whereExprs, "EXISTS(SELECT 1 FROM objects o2 INNER JOIN slices sli ON sli.db_object_id = o2.id INNER JOIN slabs sla ON sla.id = sli.db_slab_id WHERE o2.id = o.id AND sla.key = ?)") + whereArgs = append(whereArgs, EncryptionKey(slabEncryptionKey)) + } + // apply limit whereArgs = append(whereArgs, limit) @@ -2729,7 +2735,7 @@ func listObjectsNoDelim(ctx context.Context, tx Tx, bucket, prefix, substring, s }, nil } -func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { +func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, sortDir, marker string, limit int, slabEncryptionKey object.EncryptionKey) (api.ObjectsListResponse, error) { // split prefix into path and object prefix path := "/" // root of bucket if idx := strings.LastIndex(prefix, "/"); idx != -1 { @@ -2778,6 +2784,13 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s ) } + // apply slab key + var slabKeyExpr string + if slabEncryptionKey != (object.EncryptionKey{}) { + slabKeyExpr = "AND EXISTS(SELECT 1 FROM objects o2 INNER JOIN slices sli ON sli.db_object_id = o2.id INNER JOIN slabs sla ON sla.id = sli.db_slab_id WHERE o2.id = o.id AND sla.key = ?)" + args = append(args, EncryptionKey(slabEncryptionKey)) + } + args = append(args, path+"%", utf8.RuneCountInString(path), path, @@ -2867,7 +2880,7 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s SELECT o.db_bucket_id, o.object_id, o.size, o.health, o.mime_type, o.created_at, o.etag FROM objects o LEFT JOIN directories d ON d.name = o.object_id - WHERE o.object_id != ? AND o.db_directory_id = ? AND d.id IS NULL %s + WHERE o.object_id != ? AND o.db_directory_id = ? AND d.id IS NULL %s %s UNION ALL SELECT o.db_bucket_id, d.name as object_id, SUM(o.size), MIN(o.health), '' as mime_type, MAX(o.created_at) as created_at, '' as etag FROM objects o @@ -2882,6 +2895,7 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s `, tx.SelectObjectMetadataExpr(), prefixExpr, + slabKeyExpr, tx.CharLengthExpr(), prefixExpr, whereExpr, diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index fb64eaf69..a4908d201 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -483,8 +483,8 @@ func (tx *MainDatabaseTx) ListBuckets(ctx context.Context) ([]api.Bucket, error) return ssql.ListBuckets(ctx, tx) } -func (tx *MainDatabaseTx) ListObjects(ctx context.Context, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { - return ssql.ListObjects(ctx, tx, bucket, prefix, substring, delim, sortBy, sortDir, marker, limit) +func (tx *MainDatabaseTx) ListObjects(ctx context.Context, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int, slabEncryptionKey object.EncryptionKey) (api.ObjectsListResponse, error) { + return ssql.ListObjects(ctx, tx, bucket, prefix, substring, delim, sortBy, sortDir, marker, limit, slabEncryptionKey) } func (tx *MainDatabaseTx) MakeDirsForPath(ctx context.Context, path string) (int64, error) { diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index d80a8b3b7..f1f159fb0 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -469,8 +469,8 @@ func (tx *MainDatabaseTx) ListBuckets(ctx context.Context) ([]api.Bucket, error) return ssql.ListBuckets(ctx, tx) } -func (tx *MainDatabaseTx) ListObjects(ctx context.Context, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { - return ssql.ListObjects(ctx, tx, bucket, prefix, substring, delim, sortBy, sortDir, marker, limit) +func (tx *MainDatabaseTx) ListObjects(ctx context.Context, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int, slabEncryptionKey object.EncryptionKey) (api.ObjectsListResponse, error) { + return ssql.ListObjects(ctx, tx, bucket, prefix, substring, delim, sortBy, sortDir, marker, limit, slabEncryptionKey) } func (tx *MainDatabaseTx) MakeDirsForPath(ctx context.Context, path string) (int64, error) { From ccd9250dbc2c9e5e6eb3ff4063a1928aebdbe538 Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 16 Sep 2024 09:49:23 +0200 Subject: [PATCH 113/708] worker: move migration alert --- api/worker.go | 7 --- autopilot/alerts.go | 71 ++-------------------------- autopilot/migrator.go | 102 ++++++++-------------------------------- autopilot/workerpool.go | 2 +- worker/alerts.go | 46 ++++++++++++++++++ worker/alerts_test.go | 4 +- worker/client/client.go | 5 +- worker/download.go | 55 +++++++++++----------- worker/migrations.go | 18 +++---- worker/mocks_test.go | 8 ++-- worker/upload_test.go | 4 +- worker/worker.go | 27 ++++++----- 12 files changed, 133 insertions(+), 216 deletions(-) diff --git a/api/worker.go b/api/worker.go index ee72ca73e..40264f895 100644 --- a/api/worker.go +++ b/api/worker.go @@ -70,13 +70,6 @@ type ( Total uint64 `json:"total"` } - // MigrateSlabResponse is the response type for the /slab/migrate endpoint. - MigrateSlabResponse struct { - NumShardsMigrated int `json:"numShardsMigrated"` - SurchargeApplied bool `json:"surchargeApplied,omitempty"` - Error string `json:"error,omitempty"` - } - // RHPFormResponse is the response type for the /rhp/form endpoint. RHPFormResponse struct { ContractID types.FileContractID `json:"contractID"` diff --git a/autopilot/alerts.go b/autopilot/alerts.go index 47a926ad5..24b7a8daf 100644 --- a/autopilot/alerts.go +++ b/autopilot/alerts.go @@ -7,14 +7,13 @@ import ( "go.sia.tech/core/types" "go.sia.tech/renterd/alerts" - "go.sia.tech/renterd/object" ) var ( - alertHealthRefreshID = alerts.RandomAlertID() // constant until restarted - alertLowBalanceID = alerts.RandomAlertID() // constant until restarted - alertMigrationID = alerts.RandomAlertID() // constant until restarted - alertPruningID = alerts.RandomAlertID() // constant until restarted + alertHealthRefreshID = alerts.RandomAlertID() // constant until restarted + alertLowBalanceID = alerts.RandomAlertID() // constant until restarted + alertOngoingMigrationsID = alerts.RandomAlertID() // constant until restarted + alertPruningID = alerts.RandomAlertID() // constant until restarted ) func (ap *Autopilot) RegisterAlert(ctx context.Context, a alerts.Alert) { @@ -74,7 +73,7 @@ func newOngoingMigrationsAlert(n int, estimate time.Duration) alerts.Alert { } return alerts.Alert{ - ID: alertMigrationID, + ID: alertOngoingMigrationsID, Severity: alerts.SeverityInfo, Message: fmt.Sprintf("Migrating %d slabs", n), Timestamp: time.Now(), @@ -82,66 +81,6 @@ func newOngoingMigrationsAlert(n int, estimate time.Duration) alerts.Alert { } } -func newCriticalMigrationSucceededAlert(slabKey object.EncryptionKey) alerts.Alert { - return alerts.Alert{ - ID: alerts.IDForSlab(alertMigrationID, slabKey), - Severity: alerts.SeverityInfo, - Message: "Critical migration succeeded", - Data: map[string]interface{}{ - "slabKey": slabKey.String(), - "hint": "This migration succeeded thanks to the MigrationSurchargeMultiplier in the gouging settings that allowed overpaying hosts on some critical sector downloads", - }, - Timestamp: time.Now(), - } -} - -func newCriticalMigrationFailedAlert(slabKey object.EncryptionKey, health float64, objectIds map[string][]string, err error) alerts.Alert { - data := map[string]interface{}{ - "error": err.Error(), - "health": health, - "slabKey": slabKey.String(), - "hint": "If migrations of low-health slabs fail, it might be necessary to increase the MigrationSurchargeMultiplier in the gouging settings to ensure it has every chance of succeeding.", - } - if objectIds != nil { - data["objectIDs"] = objectIds - } - - return alerts.Alert{ - ID: alerts.IDForSlab(alertMigrationID, slabKey), - Severity: alerts.SeverityCritical, - Message: "Critical migration failed", - Data: data, - Timestamp: time.Now(), - } -} - -func newMigrationFailedAlert(slabKey object.EncryptionKey, health float64, objectIds map[string][]string, err error) alerts.Alert { - data := map[string]interface{}{ - "error": err.Error(), - "health": health, - "slabKey": slabKey.String(), - "hint": "Migration failures can be temporary, but if they persist it can eventually lead to data loss and should therefor be taken very seriously.", - } - if objectIds != nil { - data["objectIDs"] = objectIds - } - - severity := alerts.SeverityError - if health < 0.25 { - severity = alerts.SeverityCritical - } else if health < 0.5 { - severity = alerts.SeverityWarning - } - - return alerts.Alert{ - ID: alerts.IDForSlab(alertMigrationID, slabKey), - Severity: severity, - Message: "Slab migration failed", - Data: data, - Timestamp: time.Now(), - } -} - func newRefreshHealthFailedAlert(err error) alerts.Alert { return alerts.Alert{ ID: alertHealthRefreshID, diff --git a/autopilot/migrator.go b/autopilot/migrator.go index 0909d0137..01e0c9f20 100644 --- a/autopilot/migrator.go +++ b/autopilot/migrator.go @@ -2,14 +2,12 @@ package autopilot import ( "context" - "errors" "fmt" "math" "sort" "sync" "time" - "go.sia.tech/renterd/alerts" "go.sia.tech/renterd/api" "go.sia.tech/renterd/internal/utils" "go.sia.tech/renterd/object" @@ -49,20 +47,15 @@ type ( } ) -func (j *job) execute(ctx context.Context, w Worker) (_ api.MigrateSlabResponse, err error) { +func (j *job) execute(ctx context.Context, w Worker) (time.Duration, error) { + start := time.Now() slab, err := j.b.Slab(ctx, j.EncryptionKey) if err != nil { - return api.MigrateSlabResponse{}, fmt.Errorf("failed to fetch slab; %w", err) + return 0, fmt.Errorf("failed to fetch slab; %w", err) } - res, err := w.MigrateSlab(ctx, slab, j.set) - if err != nil { - return api.MigrateSlabResponse{}, fmt.Errorf("failed to migrate slab; %w", err) - } else if res.Error != "" { - return res, fmt.Errorf("failed to migrate slab; %w", errors.New(res.Error)) - } - - return res, nil + err = w.MigrateSlab(ctx, slab, j.set) + return time.Since(start), err } func newMigrator(ap *Autopilot, healthCutoff float64, parallelSlabsPerWorker uint64) *migrator { @@ -157,44 +150,20 @@ func (m *migrator) performMigrations(p *workerPool) { // process jobs for j := range jobs { - start := time.Now() - res, err := j.execute(ctx, w) - m.statsSlabMigrationSpeedMS.Track(float64(time.Since(start).Milliseconds())) - if err != nil { - m.logger.Errorf("%v: migration %d/%d failed, key: %v, health: %v, overpaid: %v, err: %v", id, j.slabIdx+1, j.batchSize, j.EncryptionKey, j.Health, res.SurchargeApplied, err) - if utils.IsErr(err, api.ErrConsensusNotSynced) { - // interrupt migrations if consensus is not synced - select { - case m.signalConsensusNotSynced <- struct{}{}: - default: - } - return - } else if !utils.IsErr(err, api.ErrSlabNotFound) { - // fetch all object IDs for the slab we failed to migrate - var objectIds map[string][]string - if res, err := m.objectIDsForSlabKey(ctx, j.EncryptionKey); err != nil { - m.logger.Errorf("failed to fetch object ids for slab key; %w", err) - } else { - objectIds = res - } - - // register the alert - if res.SurchargeApplied { - m.ap.RegisterAlert(ctx, newCriticalMigrationFailedAlert(j.EncryptionKey, j.Health, objectIds, err)) - } else { - m.ap.RegisterAlert(ctx, newMigrationFailedAlert(j.EncryptionKey, j.Health, objectIds, err)) - } - } - } else { - m.logger.Infof("%v: migration %d/%d succeeded, key: %v, health: %v, overpaid: %v, shards migrated: %v", id, j.slabIdx+1, j.batchSize, j.EncryptionKey, j.Health, res.SurchargeApplied, res.NumShardsMigrated) - m.ap.DismissAlert(ctx, alerts.IDForSlab(alertMigrationID, j.EncryptionKey)) - if res.SurchargeApplied { - // this alert confirms the user his gouging - // settings are working, it will be dismissed - // automatically the next time this slab is - // successfully migrated - m.ap.RegisterAlert(ctx, newCriticalMigrationSucceededAlert(j.EncryptionKey)) + duration, err := j.execute(ctx, w) + m.statsSlabMigrationSpeedMS.Track(float64(duration.Milliseconds())) + if utils.IsErr(err, api.ErrConsensusNotSynced) { + // interrupt migrations if consensus is not synced + select { + case m.signalConsensusNotSynced <- struct{}{}: + default: } + return + } else if err != nil { + m.logger.Errorw("migration failed", + zap.Float64("health", j.Health), + zap.Stringer("slab", j.EncryptionKey), + zap.String("worker", id)) } } }(w) @@ -263,8 +232,8 @@ func (m *migrator) performMigrations(p *workerPool) { }) } - // unregister the migration alert when we're done - defer m.ap.alerts.DismissAlerts(m.ap.shutdownCtx, alertMigrationID) + // unregister the ongoing migrations alert when we're done + defer m.ap.alerts.DismissAlerts(m.ap.shutdownCtx, alertOngoingMigrationsID) OUTER: for { @@ -312,34 +281,3 @@ OUTER: return } } - -func (m *migrator) objectIDsForSlabKey(ctx context.Context, key object.EncryptionKey) (map[string][]string, error) { - // fetch all buckets - // - // NOTE:at the time of writing the bus does not support fetching objects by - // slab key across all buckets at once, therefor we have to list all buckets - // and loop over them, revisit on the next major release - buckets, err := m.ap.bus.ListBuckets(ctx) - if err != nil { - return nil, fmt.Errorf("%w; failed to list buckets", err) - } - - // fetch all objects per bucket - idsPerBucket := make(map[string][]string) - for _, bucket := range buckets { - res, err := m.ap.bus.ListObjects(ctx, "", api.ListObjectOptions{Bucket: bucket.Name, SlabEncryptionKey: key}) - if err != nil { - m.logger.Errorf("failed to fetch objects for slab key in bucket %v; %w", bucket, err) - continue - } else if len(res.Objects) == 0 { - continue - } - - idsPerBucket[bucket.Name] = make([]string, len(res.Objects)) - for i, object := range res.Objects { - idsPerBucket[bucket.Name][i] = object.Key - } - } - - return idsPerBucket, nil -} diff --git a/autopilot/workerpool.go b/autopilot/workerpool.go index 871f1babc..54617aee9 100644 --- a/autopilot/workerpool.go +++ b/autopilot/workerpool.go @@ -16,7 +16,7 @@ type Worker interface { Account(ctx context.Context, hostKey types.PublicKey) (rhpv3.Account, error) Contracts(ctx context.Context, hostTimeout time.Duration) (api.ContractsResponse, error) ID(ctx context.Context) (string, error) - MigrateSlab(ctx context.Context, s object.Slab, set string) (api.MigrateSlabResponse, error) + MigrateSlab(ctx context.Context, s object.Slab, set string) error RHPPriceTable(ctx context.Context, hostKey types.PublicKey, siamuxAddr string, timeout time.Duration) (api.HostPriceTable, error) RHPScan(ctx context.Context, hostKey types.PublicKey, hostIP string, timeout time.Duration) (api.RHPScanResponse, error) diff --git a/worker/alerts.go b/worker/alerts.go index 02598c770..894012c5b 100644 --- a/worker/alerts.go +++ b/worker/alerts.go @@ -6,9 +6,15 @@ import ( "go.sia.tech/core/types" "go.sia.tech/renterd/alerts" + "go.sia.tech/renterd/api" + "go.sia.tech/renterd/object" "lukechampine.com/frand" ) +var ( + alertMigrationID = alerts.RandomAlertID() // constant until restarted +) + func randomAlertID() types.Hash256 { return frand.Entropy256() } @@ -30,6 +36,46 @@ func newDownloadFailedAlert(bucket, key string, offset, length, contracts int64, } } +func newMigrationFailedAlert(slabKey object.EncryptionKey, health float64, objects []api.ObjectMetadata, err error) alerts.Alert { + data := map[string]interface{}{ + "error": err.Error(), + "health": health, + "slabKey": slabKey.String(), + "hint": "Migration failures can be temporary, but if they persist it can eventually lead to data loss and should therefor be taken very seriously. It might be necessary to increase the MigrationSurchargeMultiplier in the gouging settings to ensure it has every chance of succeeding.", + } + + if len(objects) > 0 { + data["objects"] = objects + } + + hostErr := err + for errors.Unwrap(hostErr) != nil { + hostErr = errors.Unwrap(hostErr) + } + if set, ok := hostErr.(HostErrorSet); ok { + hostErrors := make(map[string]string, len(set)) + for hk, err := range set { + hostErrors[hk.String()] = err.Error() + } + data["hosts"] = hostErrors + } + + severity := alerts.SeverityError + if health < 0.25 { + severity = alerts.SeverityCritical + } else if health < 0.5 { + severity = alerts.SeverityWarning + } + + return alerts.Alert{ + ID: alerts.IDForSlab(alertMigrationID, slabKey), + Severity: severity, + Message: "Slab migration failed", + Data: data, + Timestamp: time.Now(), + } +} + func newUploadFailedAlert(bucket, path, contractSet, mimeType string, minShards, totalShards, contracts int, packing, multipart bool, err error) alerts.Alert { data := map[string]any{ "bucket": bucket, diff --git a/worker/alerts_test.go b/worker/alerts_test.go index 137838a39..4be4c4247 100644 --- a/worker/alerts_test.go +++ b/worker/alerts_test.go @@ -11,7 +11,9 @@ import ( "go.sia.tech/renterd/alerts" ) -// TestUploadFailedAlertErrorSet is a test to verify that an upload failing with a HostErrorSet error registers an alert with all the individual errors of any host in the payload. +// TestUploadFailedAlertErrorSet is a test to verify that an upload failing with +// a HostErrorSet error registers an alert with all the individual errors of any +// host in the payload. func TestUploadFailedAlertErrorSet(t *testing.T) { hostErrSet := HostErrorSet{ types.PublicKey{1, 1, 1}: errors.New("test"), diff --git a/worker/client/client.go b/worker/client/client.go index ca5aee3c8..7fe60b7b7 100644 --- a/worker/client/client.go +++ b/worker/client/client.go @@ -164,11 +164,10 @@ func (c *Client) Memory(ctx context.Context) (resp api.MemoryResponse, err error } // MigrateSlab migrates the specified slab. -func (c *Client) MigrateSlab(ctx context.Context, slab object.Slab, set string) (res api.MigrateSlabResponse, err error) { +func (c *Client) MigrateSlab(ctx context.Context, slab object.Slab, set string) error { values := make(url.Values) values.Set("contractset", set) - err = c.c.WithContext(ctx).POST("/slab/migrate?"+values.Encode(), slab, &res) - return + return c.c.WithContext(ctx).POST("/slab/migrate?"+values.Encode(), slab, nil) } // State returns the current state of the worker. diff --git a/worker/download.go b/worker/download.go index cedcd7a82..147ae3957 100644 --- a/worker/download.go +++ b/worker/download.go @@ -81,11 +81,10 @@ type ( } slabDownloadResponse struct { - mem Memory - surchargeApplied bool - shards [][]byte - index int - err error + mem Memory + shards [][]byte + index int + err error } sectorDownloadReq struct { @@ -264,14 +263,13 @@ func (mgr *downloadManager) DownloadObject(ctx context.Context, w io.Writer, o o wg.Add(1) go func(index int) { defer wg.Done() - shards, surchargeApplied, err := mgr.downloadSlab(ctx, next.SlabSlice, false) + shards, err := mgr.downloadSlab(ctx, next.SlabSlice, false) select { case responseChan <- &slabDownloadResponse{ - mem: mem, - surchargeApplied: surchargeApplied, - shards: shards, - index: index, - err: err, + mem: mem, + shards: shards, + index: index, + err: err, }: case <-ctx.Done(): mem.Release() // relase memory if we're interrupted @@ -302,10 +300,11 @@ outer: } if resp.err != nil { - mgr.logger.Errorf("download slab %v failed, overpaid %v: %v", resp.index, resp.surchargeApplied, resp.err) + mgr.logger.Errorw("slab download failed", + zap.Int("index", resp.index), + zap.Error(err), + ) return resp.err - } else if resp.surchargeApplied { - mgr.logger.Warnf("download for slab %v had to overpay to succeed", resp.index) } responses[resp.index] = resp @@ -353,7 +352,7 @@ outer: return nil } -func (mgr *downloadManager) DownloadSlab(ctx context.Context, slab object.Slab, contracts []api.ContractMetadata) ([][]byte, bool, error) { +func (mgr *downloadManager) DownloadSlab(ctx context.Context, slab object.Slab, contracts []api.ContractMetadata) ([][]byte, error) { // refresh the downloaders mgr.refreshDownloaders(contracts) @@ -373,7 +372,7 @@ func (mgr *downloadManager) DownloadSlab(ctx context.Context, slab object.Slab, // check if we have enough shards if availableShards < slab.MinShards { - return nil, false, fmt.Errorf("not enough hosts available to download the slab: %v/%v", availableShards, slab.MinShards) + return nil, fmt.Errorf("not enough hosts available to download the slab: %v/%v", availableShards, slab.MinShards) } // NOTE: we don't acquire memory here since DownloadSlab is only used for @@ -385,19 +384,19 @@ func (mgr *downloadManager) DownloadSlab(ctx context.Context, slab object.Slab, Offset: 0, Length: uint32(slab.MinShards) * rhpv2.SectorSize, } - shards, surchargeApplied, err := mgr.downloadSlab(ctx, slice, true) + shards, err := mgr.downloadSlab(ctx, slice, true) if err != nil { - return nil, false, err + return nil, err } // decrypt and recover slice.Decrypt(shards) err = slice.Reconstruct(shards) if err != nil { - return nil, false, err + return nil, err } - return shards, surchargeApplied, err + return shards, err } func (mgr *downloadManager) Stats() downloadManagerStats { @@ -526,7 +525,7 @@ func (mgr *downloadManager) newSlabDownload(slice object.SlabSlice, migration bo } } -func (mgr *downloadManager) downloadSlab(ctx context.Context, slice object.SlabSlice, migration bool) ([][]byte, bool, error) { +func (mgr *downloadManager) downloadSlab(ctx context.Context, slice object.SlabSlice, migration bool) ([][]byte, error) { // prepare new download slab := mgr.newSlabDownload(slice, migration) @@ -694,7 +693,7 @@ func (s *slabDownload) nextRequest(ctx context.Context, resps *sectorResponses, } } -func (s *slabDownload) download(ctx context.Context) ([][]byte, bool, error) { +func (s *slabDownload) download(ctx context.Context) ([][]byte, error) { // cancel any sector downloads once the download is done ctx, cancel := context.WithCancel(ctx) defer cancel() @@ -712,7 +711,7 @@ func (s *slabDownload) download(ctx context.Context) ([][]byte, bool, error) { for i := 0; i < int(s.minShards); { req := s.nextRequest(ctx, resps, false) if req == nil { - return nil, false, fmt.Errorf("no host available for shard %d", i) + return nil, fmt.Errorf("no host available for shard %d", i) } s.launch(req) i++ @@ -728,9 +727,9 @@ loop: for s.inflight() > 0 && !done { select { case <-s.mgr.shutdownCtx.Done(): - return nil, false, errors.New("download stopped") + return nil, errors.New("download stopped") case <-ctx.Done(): - return nil, false, context.Cause(ctx) + return nil, context.Cause(ctx) case <-resps.c: resetOverdrive() } @@ -808,13 +807,13 @@ func (s *slabDownload) downloadSpeed() int64 { return int64(bytes) / ms } -func (s *slabDownload) finish() ([][]byte, bool, error) { +func (s *slabDownload) finish() ([][]byte, error) { s.mu.Lock() defer s.mu.Unlock() if s.numCompleted < s.minShards { - return nil, s.numOverpaid > 0, fmt.Errorf("failed to download slab: completed=%d inflight=%d launched=%d relaunched=%d overpaid=%d downloaders=%d unused=%d errors=%d %v", s.numCompleted, s.numInflight, s.numLaunched, s.numRelaunched, s.numOverpaid, s.mgr.numDownloaders(), len(s.unusedHostSectors), len(s.errs), s.errs) + return nil, fmt.Errorf("failed to download slab: completed=%d inflight=%d launched=%d relaunched=%d overpaid=%d downloaders=%d unused=%d errors=%d %v", s.numCompleted, s.numInflight, s.numLaunched, s.numRelaunched, s.numOverpaid, s.mgr.numDownloaders(), len(s.unusedHostSectors), len(s.errs), s.errs) } - return s.sectors, s.numOverpaid > 0, nil + return s.sectors, nil } func (s *slabDownload) missing() int { diff --git a/worker/migrations.go b/worker/migrations.go index d2d1c6474..03728a3b7 100644 --- a/worker/migrations.go +++ b/worker/migrations.go @@ -10,7 +10,7 @@ import ( "go.sia.tech/renterd/object" ) -func (w *Worker) migrate(ctx context.Context, s object.Slab, contractSet string, dlContracts, ulContracts []api.ContractMetadata, bh uint64) (int, bool, error) { +func (w *Worker) migrate(ctx context.Context, s object.Slab, contractSet string, dlContracts, ulContracts []api.ContractMetadata, bh uint64) error { // make a map of good hosts goodHosts := make(map[types.PublicKey]map[types.FileContractID]bool) for _, c := range ulContracts { @@ -57,7 +57,7 @@ SHARDS: // if all shards are on good hosts, we're done if len(shardIndices) == 0 { - return 0, false, nil + return nil } // calculate the number of missing shards and take into account hosts for @@ -72,23 +72,23 @@ SHARDS: // perform some sanity checks if len(ulContracts) < int(s.MinShards) { - return 0, false, fmt.Errorf("not enough hosts to repair unhealthy shard to minimum redundancy, %d<%d", len(ulContracts), int(s.MinShards)) + return fmt.Errorf("not enough hosts to repair unhealthy shard to minimum redundancy, %d<%d", len(ulContracts), int(s.MinShards)) } if len(s.Shards)-missingShards < int(s.MinShards) { - return 0, false, fmt.Errorf("not enough hosts to download unhealthy shard, %d<%d", len(s.Shards)-missingShards, int(s.MinShards)) + return fmt.Errorf("not enough hosts to download unhealthy shard, %d<%d", len(s.Shards)-missingShards, int(s.MinShards)) } // acquire memory for the migration mem := w.uploadManager.mm.AcquireMemory(ctx, uint64(len(shardIndices))*rhpv2.SectorSize) if mem == nil { - return 0, false, fmt.Errorf("failed to acquire memory for migration") + return fmt.Errorf("failed to acquire memory for migration") } defer mem.Release() // download the slab - shards, surchargeApplied, err := w.downloadManager.DownloadSlab(ctx, s, dlContracts) + shards, err := w.downloadManager.DownloadSlab(ctx, s, dlContracts) if err != nil { - return 0, false, fmt.Errorf("failed to download slab for migration: %w", err) + return fmt.Errorf("failed to download slab for migration: %w", err) } s.Encrypt(shards) @@ -110,8 +110,8 @@ SHARDS: // migrate the shards err = w.uploadManager.UploadShards(ctx, s, shardIndices, shards, contractSet, allowed, bh, lockingPriorityUpload, mem) if err != nil { - return 0, surchargeApplied, fmt.Errorf("failed to upload slab for migration: %w", err) + return fmt.Errorf("failed to upload slab for migration: %w", err) } - return len(shards), surchargeApplied, nil + return nil } diff --git a/worker/mocks_test.go b/worker/mocks_test.go index 24a70adcb..46ae4f1b4 100644 --- a/worker/mocks_test.go +++ b/worker/mocks_test.go @@ -554,6 +554,10 @@ func (os *objectStoreMock) PackedSlabsForUpload(ctx context.Context, lockingDura return } +func (os *objectStoreMock) ListObjects(ctx context.Context, prefix string, opts api.ListObjectOptions) (resp api.ObjectsListResponse, err error) { + return api.ObjectsListResponse{}, nil +} + func (os *objectStoreMock) MarkPackedSlabsUploaded(ctx context.Context, slabs []api.UploadedPackedSlab) error { os.mu.Lock() defer os.mu.Unlock() @@ -628,10 +632,6 @@ func (*s3Mock) CopyObject(context.Context, string, string, string, string, api.C return api.ObjectMetadata{}, nil } -func (*s3Mock) ListObjects(context.Context, string, api.ListObjectOptions) (resp api.ObjectsListResponse, err error) { - return api.ObjectsListResponse{}, nil -} - func (*s3Mock) AbortMultipartUpload(context.Context, string, string, string) (err error) { return nil } diff --git a/worker/upload_test.go b/worker/upload_test.go index d36c67a6e..4a2b73398 100644 --- a/worker/upload_test.go +++ b/worker/upload_test.go @@ -314,7 +314,7 @@ func TestMigrateLostSector(t *testing.T) { } // download the slab - shards, _, err := dl.DownloadSlab(context.Background(), slab.Slab, w.Contracts()) + shards, err := dl.DownloadSlab(context.Background(), slab.Slab, w.Contracts()) if err != nil { t.Fatal(err) } @@ -417,7 +417,7 @@ func TestUploadShards(t *testing.T) { } // download the slab - shards, _, err := dl.DownloadSlab(context.Background(), slab.Slab, w.Contracts()) + shards, err := dl.DownloadSlab(context.Background(), slab.Slab, w.Contracts()) if err != nil { t.Fatal(err) } diff --git a/worker/worker.go b/worker/worker.go index 3fffec52d..8322cb6f2 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -114,6 +114,7 @@ type ( AddPartialSlab(ctx context.Context, data []byte, minShards, totalShards uint8, contractSet string) (slabs []object.SlabSlice, slabBufferMaxSizeSoftReached bool, err error) AddUploadingSector(ctx context.Context, uID api.UploadID, id types.FileContractID, root types.Hash256) error FinishUpload(ctx context.Context, uID api.UploadID) error + ListObjects(ctx context.Context, prefix string, opts api.ListObjectOptions) (resp api.ObjectsListResponse, err error) MarkPackedSlabsUploaded(ctx context.Context, slabs []api.UploadedPackedSlab) error TrackUpload(ctx context.Context, uID api.UploadID) error UpdateSlab(ctx context.Context, s object.Slab, contractSet string) error @@ -405,21 +406,21 @@ func (w *Worker) slabMigrateHandler(jc jape.Context) { } } - // migrate the slab - numShardsMigrated, surchargeApplied, err := w.migrate(ctx, slab, up.ContractSet, dlContracts, ulContracts, up.CurrentHeight) - if err != nil { - jc.Encode(api.MigrateSlabResponse{ - NumShardsMigrated: numShardsMigrated, - SurchargeApplied: surchargeApplied, - Error: err.Error(), - }) - return + // migrate the slab and handle alerts + err = w.migrate(ctx, slab, up.ContractSet, dlContracts, ulContracts, up.CurrentHeight) + if err != nil && !utils.IsErr(err, api.ErrSlabNotFound) { + var objects []api.ObjectMetadata + if res, err := w.bus.ListObjects(ctx, "", api.ListObjectOptions{SlabEncryptionKey: slab.EncryptionKey}); err != nil { + w.logger.Errorf("failed to list objects for slab key; %w", err) + } else { + objects = res.Objects + } + w.alerts.RegisterAlert(ctx, newMigrationFailedAlert(slab.EncryptionKey, slab.Health, objects, err)) + } else if err == nil { + w.alerts.DismissAlerts(jc.Request.Context(), alerts.IDForSlab(alertMigrationID, slab.EncryptionKey)) } - jc.Encode(api.MigrateSlabResponse{ - NumShardsMigrated: numShardsMigrated, - SurchargeApplied: surchargeApplied, - }) + jc.Check("failed to migrate slab", err) } func (w *Worker) downloadsStatsHandlerGET(jc jape.Context) { From 2ad292bc8bc05a6509d4bf09ab0c1b55cd4d1e85 Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 16 Sep 2024 09:56:30 +0200 Subject: [PATCH 114/708] worker: debug log migration result --- worker/download.go | 48 ++++++++++++++++++++++--------------------- worker/migrations.go | 22 +++++++++++++++++++- worker/upload_test.go | 4 ++-- 3 files changed, 48 insertions(+), 26 deletions(-) diff --git a/worker/download.go b/worker/download.go index 147ae3957..8939acfc9 100644 --- a/worker/download.go +++ b/worker/download.go @@ -81,10 +81,11 @@ type ( } slabDownloadResponse struct { - mem Memory - shards [][]byte - index int - err error + mem Memory + surchargeApplied bool + shards [][]byte + index int + err error } sectorDownloadReq struct { @@ -263,13 +264,14 @@ func (mgr *downloadManager) DownloadObject(ctx context.Context, w io.Writer, o o wg.Add(1) go func(index int) { defer wg.Done() - shards, err := mgr.downloadSlab(ctx, next.SlabSlice, false) + shards, surchargeApplied, err := mgr.downloadSlab(ctx, next.SlabSlice, false) select { case responseChan <- &slabDownloadResponse{ - mem: mem, - shards: shards, - index: index, - err: err, + mem: mem, + surchargeApplied: surchargeApplied, + shards: shards, + index: index, + err: err, }: case <-ctx.Done(): mem.Release() // relase memory if we're interrupted @@ -352,7 +354,7 @@ outer: return nil } -func (mgr *downloadManager) DownloadSlab(ctx context.Context, slab object.Slab, contracts []api.ContractMetadata) ([][]byte, error) { +func (mgr *downloadManager) DownloadSlab(ctx context.Context, slab object.Slab, contracts []api.ContractMetadata) ([][]byte, bool, error) { // refresh the downloaders mgr.refreshDownloaders(contracts) @@ -372,7 +374,7 @@ func (mgr *downloadManager) DownloadSlab(ctx context.Context, slab object.Slab, // check if we have enough shards if availableShards < slab.MinShards { - return nil, fmt.Errorf("not enough hosts available to download the slab: %v/%v", availableShards, slab.MinShards) + return nil, false, fmt.Errorf("not enough hosts available to download the slab: %v/%v", availableShards, slab.MinShards) } // NOTE: we don't acquire memory here since DownloadSlab is only used for @@ -384,19 +386,19 @@ func (mgr *downloadManager) DownloadSlab(ctx context.Context, slab object.Slab, Offset: 0, Length: uint32(slab.MinShards) * rhpv2.SectorSize, } - shards, err := mgr.downloadSlab(ctx, slice, true) + shards, surchargeApplied, err := mgr.downloadSlab(ctx, slice, true) if err != nil { - return nil, err + return nil, false, err } // decrypt and recover slice.Decrypt(shards) err = slice.Reconstruct(shards) if err != nil { - return nil, err + return nil, false, err } - return shards, err + return shards, surchargeApplied, err } func (mgr *downloadManager) Stats() downloadManagerStats { @@ -525,7 +527,7 @@ func (mgr *downloadManager) newSlabDownload(slice object.SlabSlice, migration bo } } -func (mgr *downloadManager) downloadSlab(ctx context.Context, slice object.SlabSlice, migration bool) ([][]byte, error) { +func (mgr *downloadManager) downloadSlab(ctx context.Context, slice object.SlabSlice, migration bool) ([][]byte, bool, error) { // prepare new download slab := mgr.newSlabDownload(slice, migration) @@ -693,7 +695,7 @@ func (s *slabDownload) nextRequest(ctx context.Context, resps *sectorResponses, } } -func (s *slabDownload) download(ctx context.Context) ([][]byte, error) { +func (s *slabDownload) download(ctx context.Context) ([][]byte, bool, error) { // cancel any sector downloads once the download is done ctx, cancel := context.WithCancel(ctx) defer cancel() @@ -711,7 +713,7 @@ func (s *slabDownload) download(ctx context.Context) ([][]byte, error) { for i := 0; i < int(s.minShards); { req := s.nextRequest(ctx, resps, false) if req == nil { - return nil, fmt.Errorf("no host available for shard %d", i) + return nil, false, fmt.Errorf("no host available for shard %d", i) } s.launch(req) i++ @@ -727,9 +729,9 @@ loop: for s.inflight() > 0 && !done { select { case <-s.mgr.shutdownCtx.Done(): - return nil, errors.New("download stopped") + return nil, false, errors.New("download stopped") case <-ctx.Done(): - return nil, context.Cause(ctx) + return nil, false, context.Cause(ctx) case <-resps.c: resetOverdrive() } @@ -807,13 +809,13 @@ func (s *slabDownload) downloadSpeed() int64 { return int64(bytes) / ms } -func (s *slabDownload) finish() ([][]byte, error) { +func (s *slabDownload) finish() ([][]byte, bool, error) { s.mu.Lock() defer s.mu.Unlock() if s.numCompleted < s.minShards { - return nil, fmt.Errorf("failed to download slab: completed=%d inflight=%d launched=%d relaunched=%d overpaid=%d downloaders=%d unused=%d errors=%d %v", s.numCompleted, s.numInflight, s.numLaunched, s.numRelaunched, s.numOverpaid, s.mgr.numDownloaders(), len(s.unusedHostSectors), len(s.errs), s.errs) + return nil, s.numOverpaid > 0, fmt.Errorf("failed to download slab: completed=%d inflight=%d launched=%d relaunched=%d overpaid=%d downloaders=%d unused=%d errors=%d %v", s.numCompleted, s.numInflight, s.numLaunched, s.numRelaunched, s.numOverpaid, s.mgr.numDownloaders(), len(s.unusedHostSectors), len(s.errs), s.errs) } - return s.sectors, nil + return s.sectors, s.numOverpaid > 0, nil } func (s *slabDownload) missing() int { diff --git a/worker/migrations.go b/worker/migrations.go index 03728a3b7..13b31aa52 100644 --- a/worker/migrations.go +++ b/worker/migrations.go @@ -8,6 +8,7 @@ import ( "go.sia.tech/core/types" "go.sia.tech/renterd/api" "go.sia.tech/renterd/object" + "go.uber.org/zap" ) func (w *Worker) migrate(ctx context.Context, s object.Slab, contractSet string, dlContracts, ulContracts []api.ContractMetadata, bh uint64) error { @@ -86,8 +87,14 @@ SHARDS: defer mem.Release() // download the slab - shards, err := w.downloadManager.DownloadSlab(ctx, s, dlContracts) + shards, surchargeApplied, err := w.downloadManager.DownloadSlab(ctx, s, dlContracts) if err != nil { + w.logger.Debugw("slab migration failed", + zap.Error(err), + zap.Stringer("slab", s.EncryptionKey), + zap.Int("numShardsMigrated", len(shards)), + zap.Bool("surchargeApplied", surchargeApplied), + ) return fmt.Errorf("failed to download slab for migration: %w", err) } s.Encrypt(shards) @@ -110,8 +117,21 @@ SHARDS: // migrate the shards err = w.uploadManager.UploadShards(ctx, s, shardIndices, shards, contractSet, allowed, bh, lockingPriorityUpload, mem) if err != nil { + w.logger.Debugw("slab migration failed", + zap.Error(err), + zap.Stringer("slab", s.EncryptionKey), + zap.Int("numShardsMigrated", len(shards)), + zap.Bool("surchargeApplied", surchargeApplied), + ) return fmt.Errorf("failed to upload slab for migration: %w", err) } + // debug log migration result + w.logger.Debugw("slab migration succeeded", + zap.Stringer("slab", s.EncryptionKey), + zap.Int("numShardsMigrated", len(shards)), + zap.Bool("surchargeApplied", surchargeApplied), + ) + return nil } diff --git a/worker/upload_test.go b/worker/upload_test.go index 4a2b73398..d36c67a6e 100644 --- a/worker/upload_test.go +++ b/worker/upload_test.go @@ -314,7 +314,7 @@ func TestMigrateLostSector(t *testing.T) { } // download the slab - shards, err := dl.DownloadSlab(context.Background(), slab.Slab, w.Contracts()) + shards, _, err := dl.DownloadSlab(context.Background(), slab.Slab, w.Contracts()) if err != nil { t.Fatal(err) } @@ -417,7 +417,7 @@ func TestUploadShards(t *testing.T) { } // download the slab - shards, err := dl.DownloadSlab(context.Background(), slab.Slab, w.Contracts()) + shards, _, err := dl.DownloadSlab(context.Background(), slab.Slab, w.Contracts()) if err != nil { t.Fatal(err) } From dc8f9b9ebe09931b5b7c505b703ec37cc08090e2 Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 16 Sep 2024 13:42:33 +0200 Subject: [PATCH 115/708] stores: fix only_full_group_by --- stores/sql/main.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stores/sql/main.go b/stores/sql/main.go index 8df3e88c9..b1877fcf4 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -2835,7 +2835,7 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s INNER JOIN buckets b ON o.db_bucket_id = b.id INNER JOIN directories d ON SUBSTR(o.object_id, 1, %s(d.name)) = d.name WHERE %s - GROUP BY d.id + GROUP BY d.id, o.db_bucket_id `, col, strings.Join(markerExprsObj, " AND "), groupFn, col, tx.CharLengthExpr(), strings.Join(markerExprsDir, " AND ")), append(markerArgsObj, markerArgsDir...)...).Scan(dst) if errors.Is(err, dsql.ErrNoRows) { return api.ErrMarkerNotFound @@ -2886,7 +2886,7 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s FROM objects o INNER JOIN directories d ON SUBSTR(o.object_id, 1, %s(d.name)) = d.name %s WHERE o.object_id LIKE ? AND SUBSTR(o.object_id, 1, ?) = ? AND d.db_parent_id = ? - GROUP BY d.id + GROUP BY d.id, o.db_bucket_id ) AS o INNER JOIN buckets b ON b.id = o.db_bucket_id %s From ec194080f9332bf4c88db5c0df4459409747dbc4 Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 16 Sep 2024 13:44:56 +0200 Subject: [PATCH 116/708] stores: fix only_full_group_by --- stores/sql/main.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stores/sql/main.go b/stores/sql/main.go index 8df3e88c9..b1877fcf4 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -2835,7 +2835,7 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s INNER JOIN buckets b ON o.db_bucket_id = b.id INNER JOIN directories d ON SUBSTR(o.object_id, 1, %s(d.name)) = d.name WHERE %s - GROUP BY d.id + GROUP BY d.id, o.db_bucket_id `, col, strings.Join(markerExprsObj, " AND "), groupFn, col, tx.CharLengthExpr(), strings.Join(markerExprsDir, " AND ")), append(markerArgsObj, markerArgsDir...)...).Scan(dst) if errors.Is(err, dsql.ErrNoRows) { return api.ErrMarkerNotFound @@ -2886,7 +2886,7 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s FROM objects o INNER JOIN directories d ON SUBSTR(o.object_id, 1, %s(d.name)) = d.name %s WHERE o.object_id LIKE ? AND SUBSTR(o.object_id, 1, ?) = ? AND d.db_parent_id = ? - GROUP BY d.id + GROUP BY d.id, o.db_bucket_id ) AS o INNER JOIN buckets b ON b.id = o.db_bucket_id %s From 313ae88f57e79854be2ca947c22266f2f0928069 Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 16 Sep 2024 14:15:53 +0200 Subject: [PATCH 117/708] testing: fix TestMigrations --- internal/test/e2e/migrations_test.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/internal/test/e2e/migrations_test.go b/internal/test/e2e/migrations_test.go index ab03a3339..4bde1ee30 100644 --- a/internal/test/e2e/migrations_test.go +++ b/internal/test/e2e/migrations_test.go @@ -3,6 +3,7 @@ package e2e import ( "bytes" "context" + "encoding/json" "errors" "fmt" "reflect" @@ -138,18 +139,17 @@ func TestMigrations(t *testing.T) { tt.OK(err) for _, alert := range ress.Alerts { // skip if not a migration alert - data, ok := alert.Data["objectIDs"].(map[string]interface{}) + _, ok := alert.Data["objects"] if !ok { continue } // collect all object ids per bucket - for bucket, ids := range data { - if objectIDs, ok := ids.([]interface{}); ok { - for _, id := range objectIDs { - got[bucket] = append(got[bucket], id.(string)) - } - } + var objects []api.ObjectMetadata + b, _ := json.Marshal(alert.Data["objects"]) + _ = json.Unmarshal(b, &objects) + for _, object := range objects { + got[object.Bucket] = append(got[object.Bucket], object.Key) } } if len(got) != 2 { From b87198325751fdcb85674f9159cbf56bb0e7aa9f Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Mon, 16 Sep 2024 09:18:16 +0200 Subject: [PATCH 118/708] autopilot: add id to autopilot state response --- api/autopilot.go | 1 + autopilot/autopilot.go | 1 + internal/test/e2e/cluster_test.go | 16 +++++++--------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/api/autopilot.go b/api/autopilot.go index 7f2ee7b08..1dca769a1 100644 --- a/api/autopilot.go +++ b/api/autopilot.go @@ -86,6 +86,7 @@ type ( // AutopilotStateResponse is the response type for the /autopilot/state // endpoint. AutopilotStateResponse struct { + ID string `json:"id"` Configured bool `json:"configured"` Migrating bool `json:"migrating"` MigratingLastStart TimeRFC3339 `json:"migratingLastStart"` diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 12f4c809e..7dbfdd2da 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -703,6 +703,7 @@ func (ap *Autopilot) stateHandlerGET(jc jape.Context) { } jc.Encode(api.AutopilotStateResponse{ + ID: ap.id, Configured: err == nil, Migrating: migrating, MigratingLastStart: api.TimeRFC3339(mLastStart), diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 1b51b2fc1..b17dd7609 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -358,19 +358,17 @@ func TestNewTestCluster(t *testing.T) { // Fetch the autopilot state state, err := cluster.Autopilot.State() tt.OK(err) - if time.Time(state.StartTime).IsZero() { + if state.ID != api.DefaultAutopilotID { + t.Fatal("autopilot should have default id", state.ID) + } else if time.Time(state.StartTime).IsZero() { t.Fatal("autopilot should have start time") - } - if time.Time(state.MigratingLastStart).IsZero() { + } else if time.Time(state.MigratingLastStart).IsZero() { t.Fatal("autopilot should have completed a migration") - } - if time.Time(state.ScanningLastStart).IsZero() { + } else if time.Time(state.ScanningLastStart).IsZero() { t.Fatal("autopilot should have completed a scan") - } - if state.UptimeMS == 0 { + } else if state.UptimeMS == 0 { t.Fatal("uptime should be set") - } - if !state.Configured { + } else if !state.Configured { t.Fatal("autopilot should be configured") } } From f64f77983fb9777e24d110200870e50874f1d4d7 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 17 Sep 2024 09:04:25 +0200 Subject: [PATCH 119/708] stores: remove check --- stores/sql/mysql/main.go | 9 --------- 1 file changed, 9 deletions(-) diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index 844913225..27076e2e4 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -672,15 +672,6 @@ func (tx *MainDatabaseTx) PruneSlabs(ctx context.Context, limit int64) (int64, e } func (tx *MainDatabaseTx) PutContract(ctx context.Context, c api.ContractMetadata) error { - // assert decorated fields are unset - if c.HostIP != "" { - return errors.New("host IP should not be set") - } else if c.ContractSets != nil { - return errors.New("contract sets should not be set") - } else if c.SiamuxAddr != "" { - return errors.New("siamux address should not be set") - } - // validate metadata var state ssql.ContractState if err := state.LoadString(c.State); err != nil { From 898dc64bc52fa67c99a3c08df1b6e2c3309ccfde Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 17 Sep 2024 09:08:16 +0200 Subject: [PATCH 120/708] stores: fix migration --- .../migrations/main/migration_00021_archived_contracts.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stores/sql/mysql/migrations/main/migration_00021_archived_contracts.sql b/stores/sql/mysql/migrations/main/migration_00021_archived_contracts.sql index d107649ee..499a1a8e2 100644 --- a/stores/sql/mysql/migrations/main/migration_00021_archived_contracts.sql +++ b/stores/sql/mysql/migrations/main/migration_00021_archived_contracts.sql @@ -18,7 +18,7 @@ UPDATE contracts c INNER JOIN hosts h ON c.host_id = h.id SET c.host_key = h.public_key; -INSERT INTO contracts_temp ( +INSERT INTO contracts ( created_at, fcid, host_id, From c9a3e2bbd3ad4b110fd69b62e9c7dd22511225ee Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 17 Sep 2024 09:29:45 +0200 Subject: [PATCH 121/708] db: fix MySQL migration --- internal/sql/migrations.go | 3 +++ .../migrations/main/migration_00021_archived_contracts.sql | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/internal/sql/migrations.go b/internal/sql/migrations.go index 66611a528..f4f2b208c 100644 --- a/internal/sql/migrations.go +++ b/internal/sql/migrations.go @@ -1,6 +1,7 @@ package sql import ( + "bytes" "context" "embed" "fmt" @@ -328,6 +329,8 @@ func execSQLFile(ctx context.Context, tx Tx, fs embed.FS, folder, filename strin file, err := fs.ReadFile(path) if err != nil { return fmt.Errorf("failed to read %s: %w", path, err) + } else if len(bytes.TrimSpace(file)) == 0 { + return nil } // execute it diff --git a/stores/sql/mysql/migrations/main/migration_00021_archived_contracts.sql b/stores/sql/mysql/migrations/main/migration_00021_archived_contracts.sql index 499a1a8e2..8a3f20365 100644 --- a/stores/sql/mysql/migrations/main/migration_00021_archived_contracts.sql +++ b/stores/sql/mysql/migrations/main/migration_00021_archived_contracts.sql @@ -3,7 +3,7 @@ ALTER TABLE contracts RENAME COLUMN list_spending TO sector_roots_spending; ALTER TABLE contracts - ADD COLUMN host_key varbinary(32) NOT NULL DEFAULT UNHEX('0000000000000000000000000000000000000000000000000000000000000000'), + ADD COLUMN host_key varbinary(32) NOT NULL DEFAULT 0x0000000000000000000000000000000000000000000000000000000000000000, ADD COLUMN archival_reason VARCHAR(191) DEFAULT NULL, ADD COLUMN renewed_to VARBINARY(32) DEFAULT NULL; @@ -11,7 +11,7 @@ CREATE INDEX `idx_contracts_archival_reason` ON `contracts`(`archival_reason`); CREATE INDEX `idx_contracts_host_key` ON `contracts`(`host_key`); CREATE INDEX `idx_contracts_renewed_to` ON `contracts`(`renewed_to`); -DROP INDEX `idx_contracts_fc_id` ON table_name; +DROP INDEX `idx_contracts_fc_id` ON contracts; CREATE INDEX `idx_contracts_fc_id` ON `contracts`(`fcid`); UPDATE contracts c From e4109d2093c44cff2ce8d7a2a05cbbe105dbe643 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 17 Sep 2024 09:31:38 +0200 Subject: [PATCH 122/708] db: allow empty migration --- internal/sql/migrations.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/sql/migrations.go b/internal/sql/migrations.go index bf4853e39..2b929b92f 100644 --- a/internal/sql/migrations.go +++ b/internal/sql/migrations.go @@ -1,6 +1,7 @@ package sql import ( + "bytes" "context" "embed" "fmt" @@ -316,6 +317,8 @@ func execSQLFile(ctx context.Context, tx Tx, fs embed.FS, folder, filename strin file, err := fs.ReadFile(path) if err != nil { return fmt.Errorf("failed to read %s: %w", path, err) + } else if len(bytes.TrimSpace(file)) == 0 { + return nil } // execute it From ee2b63e3aff299838f8e0fc9db300b618c6dacfa Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 12 Sep 2024 16:29:25 +0200 Subject: [PATCH 123/708] bus: remove hosts for scanning endpoint --- api/host.go | 28 +++------------------------- api/object.go | 18 ------------------ autopilot/autopilot.go | 1 - autopilot/scanner/scanner.go | 4 ++-- autopilot/scanner/scanner_test.go | 11 ++--------- bus/bus.go | 2 -- bus/client/hosts.go | 11 +---------- bus/routes.go | 15 +-------------- internal/test/e2e/cluster_test.go | 4 ++-- stores/hostdb.go | 9 --------- stores/sql/database.go | 4 ---- stores/sql/main.go | 31 ++++++------------------------- stores/sql/mysql/main.go | 4 ---- stores/sql/sqlite/main.go | 4 ---- 14 files changed, 17 insertions(+), 129 deletions(-) diff --git a/api/host.go b/api/host.go index 04a28b13a..8ae9dcb92 100644 --- a/api/host.go +++ b/api/host.go @@ -4,7 +4,6 @@ import ( "encoding/json" "errors" "fmt" - "net/url" "strings" "time" @@ -52,7 +51,7 @@ type ( PriceTableUpdates []HostPriceTableUpdate `json:"priceTableUpdates"` } - // HostsRemoveRequest is the request type for the /hosts/remove endpoint. + // HostsRemoveRequest is the request type for the delete /hosts endpoint. HostsRemoveRequest struct { MaxDowntimeHours DurationH `json:"maxDowntimeHours"` MaxConsecutiveScanFailures uint64 `json:"maxConsecutiveScanFailures"` @@ -67,6 +66,7 @@ type ( UsabilityMode string `json:"usabilityMode"` AddressContains string `json:"addressContains"` KeyIn []types.PublicKey `json:"keyIn"` + MaxLastScan TimeRFC3339 `json:"maxLastScan"` } ) @@ -88,12 +88,6 @@ type ( // Option types. type ( - HostsForScanningOptions struct { - MaxLastScan TimeRFC3339 - Limit int - Offset int - } - HostOptions struct { AutopilotID string AddressContains string @@ -101,22 +95,11 @@ type ( UsabilityMode string KeyIn []types.PublicKey Limit int + MaxLastScan TimeRFC3339 Offset int } ) -func (opts HostsForScanningOptions) Apply(values url.Values) { - if opts.Offset != 0 { - values.Set("offset", fmt.Sprint(opts.Offset)) - } - if opts.Limit != 0 { - values.Set("limit", fmt.Sprint(opts.Limit)) - } - if !opts.MaxLastScan.IsZero() { - values.Set("lastScan", TimeRFC3339(opts.MaxLastScan).String()) - } -} - type ( Host struct { KnownSince time.Time `json:"knownSince"` @@ -134,11 +117,6 @@ type ( Subnets []string `json:"subnets"` } - HostAddress struct { - PublicKey types.PublicKey `json:"publicKey"` - NetAddress string `json:"netAddress"` - } - HostInteractions struct { TotalScans uint64 `json:"totalScans"` LastScan time.Time `json:"lastScan"` diff --git a/api/object.go b/api/object.go index 09e33dba1..dcfdb4bac 100644 --- a/api/object.go +++ b/api/object.go @@ -214,12 +214,6 @@ type ( Substring string } - SearchObjectOptions struct { - Key string - Offset int - Limit int - } - // UploadObjectOptions is the options type for the worker client. UploadObjectOptions struct { MinShards int @@ -330,18 +324,6 @@ func (opts ListObjectOptions) Apply(values url.Values) { } } -func (opts SearchObjectOptions) Apply(values url.Values) { - if opts.Key != "" { - values.Set("key", opts.Key) - } - if opts.Offset != 0 { - values.Set("offset", fmt.Sprint(opts.Offset)) - } - if opts.Limit != 0 { - values.Set("limit", fmt.Sprint(opts.Limit)) - } -} - func FormatETag(eTag string) string { return fmt.Sprintf("%q", eTag) } diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 7dbfdd2da..2e6cccdfe 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -55,7 +55,6 @@ type Bus interface { // hostdb Host(ctx context.Context, hostKey types.PublicKey) (api.Host, error) Hosts(ctx context.Context, opts api.HostOptions) ([]api.Host, error) - HostsForScanning(ctx context.Context, opts api.HostsForScanningOptions) ([]api.HostAddress, error) RemoveOfflineHosts(ctx context.Context, maxConsecutiveScanFailures uint64, maxDowntime time.Duration) (uint64, error) UpdateHostCheck(ctx context.Context, autopilotID string, hostKey types.PublicKey, hostCheck api.HostCheck) error diff --git a/autopilot/scanner/scanner.go b/autopilot/scanner/scanner.go index f79147a17..c696a918c 100644 --- a/autopilot/scanner/scanner.go +++ b/autopilot/scanner/scanner.go @@ -19,7 +19,7 @@ const ( type ( HostStore interface { - HostsForScanning(ctx context.Context, opts api.HostsForScanningOptions) ([]api.HostAddress, error) + Hosts(ctx context.Context, opts api.HostOptions) ([]api.Host, error) RemoveOfflineHosts(ctx context.Context, maxConsecutiveScanFailures uint64, maxDowntime time.Duration) (uint64, error) } @@ -164,7 +164,7 @@ func (s *scanner) fetchHosts(ctx context.Context, cutoff time.Time) chan scanJob var exhausted bool for offset := 0; !exhausted; offset += s.scanBatchSize { - hosts, err := s.hs.HostsForScanning(ctx, api.HostsForScanningOptions{ + hosts, err := s.hs.Hosts(ctx, api.HostOptions{ MaxLastScan: api.TimeRFC3339(cutoff), Offset: offset, Limit: s.scanBatchSize, diff --git a/autopilot/scanner/scanner_test.go b/autopilot/scanner/scanner_test.go index 665913ab0..020ca8932 100644 --- a/autopilot/scanner/scanner_test.go +++ b/autopilot/scanner/scanner_test.go @@ -26,7 +26,7 @@ type mockHostStore struct { removals []string } -func (hs *mockHostStore) HostsForScanning(ctx context.Context, opts api.HostsForScanningOptions) ([]api.HostAddress, error) { +func (hs *mockHostStore) Hosts(ctx context.Context, opts api.HostOptions) ([]api.Host, error) { hs.mu.Lock() defer hs.mu.Unlock() hs.scans = append(hs.scans, fmt.Sprintf("%d-%d", opts.Offset, opts.Offset+opts.Limit)) @@ -41,14 +41,7 @@ func (hs *mockHostStore) HostsForScanning(ctx context.Context, opts api.HostsFor end = len(hs.hosts) } - var hostAddresses []api.HostAddress - for _, h := range hs.hosts[start:end] { - hostAddresses = append(hostAddresses, api.HostAddress{ - NetAddress: h.NetAddress, - PublicKey: h.PublicKey, - }) - } - return hostAddresses, nil + return hs.hosts[start:end], nil } func (hs *mockHostStore) RemoveOfflineHosts(ctx context.Context, maxConsecutiveScanFailures uint64, maxDowntime time.Duration) (uint64, error) { diff --git a/bus/bus.go b/bus/bus.go index 90db3764d..8c966729d 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -195,7 +195,6 @@ type ( HostAllowlist(ctx context.Context) ([]types.PublicKey, error) HostBlocklist(ctx context.Context) ([]string, error) Hosts(ctx context.Context, opts api.HostOptions) ([]api.Host, error) - HostsForScanning(ctx context.Context, maxLastScan time.Time, offset, limit int) ([]api.HostAddress, error) RecordHostScans(ctx context.Context, scans []api.HostScan) error RecordPriceTables(ctx context.Context, priceTableUpdate []api.HostPriceTableUpdate) error RemoveOfflineHosts(ctx context.Context, maxConsecutiveScanFailures uint64, maxDowntime time.Duration) (uint64, error) @@ -441,7 +440,6 @@ func (b *Bus) Handler() http.Handler { "POST /hosts/pricetables": b.hostsPricetableHandlerPOST, "POST /hosts/remove": b.hostsRemoveHandlerPOST, "POST /hosts/scans": b.hostsScanHandlerPOST, - "GET /hosts/scanning": b.hostsScanningHandlerGET, "GET /host/:hostkey": b.hostsPubkeyHandlerGET, "POST /host/:hostkey/resetlostsectors": b.hostsResetLostSectorsPOST, diff --git a/bus/client/hosts.go b/bus/client/hosts.go index d7aa5f6db..086c6f5ad 100644 --- a/bus/client/hosts.go +++ b/bus/client/hosts.go @@ -3,7 +3,6 @@ package client import ( "context" "fmt" - "net/url" "time" "go.sia.tech/core/types" @@ -26,6 +25,7 @@ func (c *Client) Hosts(ctx context.Context, opts api.HostOptions) (hosts []api.H UsabilityMode: opts.UsabilityMode, AddressContains: opts.AddressContains, KeyIn: opts.KeyIn, + MaxLastScan: opts.MaxLastScan, }, &hosts) return } @@ -42,15 +42,6 @@ func (c *Client) HostBlocklist(ctx context.Context) (blocklist []string, err err return } -// HostsForScanning returns 'limit' host addresses at given 'offset' which -// haven't been scanned after lastScan. -func (c *Client) HostsForScanning(ctx context.Context, opts api.HostsForScanningOptions) (hosts []api.HostAddress, err error) { - values := url.Values{} - opts.Apply(values) - err = c.c.WithContext(ctx).GET("/hosts/scanning?"+values.Encode(), &hosts) - return -} - // RecordHostInteraction records an interaction for the supplied host. func (c *Client) RecordHostScans(ctx context.Context, scans []api.HostScan) (err error) { err = c.c.WithContext(ctx).POST("/hosts/scans", api.HostsScanRequest{ diff --git a/bus/routes.go b/bus/routes.go index d1505af0d..a7eb01a84 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -508,6 +508,7 @@ func (b *Bus) hostsHandlerPOST(jc jape.Context) { KeyIn: req.KeyIn, Offset: req.Offset, Limit: req.Limit, + MaxLastScan: req.MaxLastScan, }) if jc.Check(fmt.Sprintf("couldn't fetch hosts %d-%d", req.Offset, req.Offset+req.Limit), err) != nil { return @@ -535,20 +536,6 @@ func (b *Bus) hostsRemoveHandlerPOST(jc jape.Context) { jc.Encode(removed) } -func (b *Bus) hostsScanningHandlerGET(jc jape.Context) { - offset := 0 - limit := -1 - maxLastScan := time.Now() - if jc.DecodeForm("offset", &offset) != nil || jc.DecodeForm("limit", &limit) != nil || jc.DecodeForm("lastScan", (*api.TimeRFC3339)(&maxLastScan)) != nil { - return - } - hosts, err := b.hs.HostsForScanning(jc.Request.Context(), maxLastScan, offset, limit) - if jc.Check(fmt.Sprintf("couldn't fetch hosts %d-%d", offset, offset+limit), err) != nil { - return - } - jc.Encode(hosts) -} - func (b *Bus) hostsPubkeyHandlerGET(jc jape.Context) { var hostKey types.PublicKey if jc.DecodeParam("hostkey", &hostKey) != nil { diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index c6827297f..9eb1b1995 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -2643,7 +2643,7 @@ func TestHostScan(t *testing.T) { // fetch hosts for scanning with maxLastScan set to now which should return // all hosts tt.Retry(100, 100*time.Millisecond, func() error { - toScan, err := b.HostsForScanning(context.Background(), api.HostsForScanningOptions{ + toScan, err := b.Hosts(context.Background(), api.HostOptions{ MaxLastScan: api.TimeRFC3339(time.Now()), }) tt.OK(err) @@ -2655,7 +2655,7 @@ func TestHostScan(t *testing.T) { // fetch hosts again with the unix epoch timestamp which should only return // 1 host since that one hasn't been scanned yet - toScan, err := b.HostsForScanning(context.Background(), api.HostsForScanningOptions{ + toScan, err := b.Hosts(context.Background(), api.HostOptions{ MaxLastScan: api.TimeRFC3339(time.UnixMilli(1)), }) tt.OK(err) diff --git a/stores/hostdb.go b/stores/hostdb.go index 1df6a30d6..a80df54dd 100644 --- a/stores/hostdb.go +++ b/stores/hostdb.go @@ -41,15 +41,6 @@ func (s *SQLStore) UpdateHostCheck(ctx context.Context, autopilotID string, hk t }) } -// HostsForScanning returns the address of hosts for scanning. -func (s *SQLStore) HostsForScanning(ctx context.Context, maxLastScan time.Time, offset, limit int) (hosts []api.HostAddress, err error) { - err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - hosts, err = tx.HostsForScanning(ctx, maxLastScan, offset, limit) - return err - }) - return -} - func (s *SQLStore) ResetLostSectors(ctx context.Context, hk types.PublicKey) error { return s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { return tx.ResetLostSectors(ctx, hk) diff --git a/stores/sql/database.go b/stores/sql/database.go index 651fe81f3..7cf4d929d 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -188,10 +188,6 @@ type ( // Hosts returns a list of hosts that match the provided filters Hosts(ctx context.Context, opts api.HostOptions) ([]api.Host, error) - // HostsForScanning returns a list of hosts to scan which haven't been - // scanned since at least maxLastScan. - HostsForScanning(ctx context.Context, maxLastScan time.Time, offset, limit int) ([]api.HostAddress, error) - // ListBuckets returns a list of all buckets in the database. ListBuckets(ctx context.Context) ([]api.Bucket, error) diff --git a/stores/sql/main.go b/stores/sql/main.go index 7d66fcc00..149f73399 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -758,6 +758,12 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er } } + // filter max last scan + if !opts.MaxLastScan.IsZero() { + whereExprs = append(whereExprs, "last_scan < ?") + args = append(args, UnixTimeMS(opts.MaxLastScan)) + } + // offset + limit if opts.Limit == -1 { opts.Limit = math.MaxInt64 @@ -899,31 +905,6 @@ func Hosts(ctx context.Context, tx sql.Tx, opts api.HostOptions) ([]api.Host, er return hosts, nil } -func HostsForScanning(ctx context.Context, tx sql.Tx, maxLastScan time.Time, offset, limit int) ([]api.HostAddress, error) { - if offset < 0 { - return nil, ErrNegativeOffset - } else if limit == -1 { - limit = math.MaxInt64 - } - - rows, err := tx.Query(ctx, "SELECT public_key, net_address FROM hosts WHERE last_scan < ? LIMIT ? OFFSET ?", - UnixTimeMS(maxLastScan), limit, offset) - if err != nil { - return nil, fmt.Errorf("failed to fetch hosts for scanning: %w", err) - } - defer rows.Close() - - var hosts []api.HostAddress - for rows.Next() { - var ha api.HostAddress - if err := rows.Scan((*PublicKey)(&ha.PublicKey), &ha.NetAddress); err != nil { - return nil, fmt.Errorf("failed to scan host row: %w", err) - } - hosts = append(hosts, ha) - } - return hosts, nil -} - func InsertBufferedSlab(ctx context.Context, tx sql.Tx, fileName string, contractSetID int64, ec object.EncryptionKey, minShards, totalShards uint8) (int64, error) { // insert buffered slab res, err := tx.Exec(ctx, `INSERT INTO buffered_slabs (created_at, filename) VALUES (?, ?)`, diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index 632077492..586633ee0 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -416,10 +416,6 @@ func (tx *MainDatabaseTx) Hosts(ctx context.Context, opts api.HostOptions) ([]ap return ssql.Hosts(ctx, tx, opts) } -func (tx *MainDatabaseTx) HostsForScanning(ctx context.Context, maxLastScan time.Time, offset, limit int) ([]api.HostAddress, error) { - return ssql.HostsForScanning(ctx, tx, maxLastScan, offset, limit) -} - func (tx *MainDatabaseTx) InsertObject(ctx context.Context, bucket, key, contractSet string, dirID int64, o object.Object, mimeType, eTag string, md api.ObjectUserMetadata) error { // get bucket id var bucketID int64 diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index 8f903e053..e36698ee3 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -405,10 +405,6 @@ func (tx *MainDatabaseTx) Hosts(ctx context.Context, opts api.HostOptions) ([]ap return ssql.Hosts(ctx, tx, opts) } -func (tx *MainDatabaseTx) HostsForScanning(ctx context.Context, maxLastScan time.Time, offset, limit int) ([]api.HostAddress, error) { - return ssql.HostsForScanning(ctx, tx, maxLastScan, offset, limit) -} - func (tx *MainDatabaseTx) InsertObject(ctx context.Context, bucket, key, contractSet string, dirID int64, o object.Object, mimeType, eTag string, md api.ObjectUserMetadata) error { // get bucket id var bucketID int64 From 5af724bd9a2c765b456a688932ec821a33a6500a Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 17 Sep 2024 10:18:05 +0200 Subject: [PATCH 124/708] bus,worker: update object endpoints --- api/object.go | 16 +++++------- bus/bus.go | 13 +++++----- bus/client/objects.go | 21 ++++++++++------ bus/routes.go | 31 ++++++++++++++--------- internal/test/e2e/cluster_test.go | 10 ++++---- internal/test/e2e/metrics_test.go | 2 +- internal/test/e2e/pruning_test.go | 4 +-- internal/utils/web.go | 2 +- worker/client/client.go | 17 ++++++------- worker/mocks_test.go | 6 ++++- worker/s3/backend.go | 4 +-- worker/s3/s3.go | 2 +- worker/worker.go | 42 ++++++++++++++++++++----------- 13 files changed, 99 insertions(+), 71 deletions(-) diff --git a/api/object.go b/api/object.go index 09e33dba1..1ae4f455a 100644 --- a/api/object.go +++ b/api/object.go @@ -103,6 +103,12 @@ type ( Objects []ObjectMetadata `json:"objects"` } + // ObjectsRemoveRequest is the request type for the /bus/objects/remove endpoint. + ObjectsRemoveRequest struct { + Bucket string `json:"bucket"` + Prefix string `json:"prefix"` + } + // ObjectsRenameRequest is the request type for the /bus/objects/rename endpoint. ObjectsRenameRequest struct { Bucket string `json:"bucket"` @@ -189,10 +195,6 @@ type ( Metadata ObjectUserMetadata `json:"metadata"` } - DeleteObjectOptions struct { - Batch bool - } - HeadObjectOptions struct { Range *DownloadRange } @@ -284,12 +286,6 @@ func (opts DownloadObjectOptions) ApplyHeaders(h http.Header) { } } -func (opts DeleteObjectOptions) Apply(values url.Values) { - if opts.Batch { - values.Set("batch", "true") - } -} - func (opts HeadObjectOptions) Apply(values url.Values) { } diff --git a/bus/bus.go b/bus/bus.go index 90db3764d..3f92ef9bf 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -457,12 +457,13 @@ func (b *Bus) Handler() http.Handler { "POST /multipart/listuploads": b.multipartHandlerListUploadsPOST, "POST /multipart/listparts": b.multipartHandlerListPartsPOST, - "GET /listobjects/*prefix": b.objectsHandlerGET, - "GET /objects/*key": b.objectHandlerGET, - "PUT /objects/*key": b.objectsHandlerPUT, - "DELETE /objects/*key": b.objectsHandlerDELETE, - "POST /objects/copy": b.objectsCopyHandlerPOST, - "POST /objects/rename": b.objectsRenameHandlerPOST, + "GET /object/*key": b.objectHandlerGET, + "PUT /object/*key": b.objectHandlerPUT, + "DELETE /object/*key": b.objectHandlerDELETE, + "GET /objects/*prefix": b.objectsHandlerGET, + "POST /objects/copy": b.objectsCopyHandlerPOST, + "POST /objects/remove": b.objectsRemoveHandlerPOST, + "POST /objects/rename": b.objectsRenameHandlerPOST, "GET /params/gouging": b.paramsHandlerGougingGET, "GET /params/upload": b.paramsHandlerUploadGET, diff --git a/bus/client/objects.go b/bus/client/objects.go index 1a1f7fc0b..a6e06c15e 100644 --- a/bus/client/objects.go +++ b/bus/client/objects.go @@ -12,7 +12,7 @@ import ( // AddObject stores the provided object under the given path. func (c *Client) AddObject(ctx context.Context, bucket, path, contractSet string, o object.Object, opts api.AddObjectOptions) (err error) { path = api.ObjectKeyEscape(path) - err = c.c.WithContext(ctx).PUT(fmt.Sprintf("/objects/%s", path), api.AddObjectRequest{ + err = c.c.WithContext(ctx).PUT(fmt.Sprintf("/object/%s", path), api.AddObjectRequest{ Bucket: bucket, ContractSet: contractSet, Object: o, @@ -37,15 +37,22 @@ func (c *Client) CopyObject(ctx context.Context, srcBucket, dstBucket, srcKey, d return } -// DeleteObject either deletes the object at the given key or if batch=true -// deletes all objects that start with the given key. -func (c *Client) DeleteObject(ctx context.Context, bucket, key string, opts api.DeleteObjectOptions) (err error) { +// DeleteObject deletes the object with given key. +func (c *Client) DeleteObject(ctx context.Context, bucket, key string) (err error) { values := url.Values{} values.Set("bucket", bucket) - opts.Apply(values) key = api.ObjectKeyEscape(key) - err = c.c.WithContext(ctx).DELETE(fmt.Sprintf("/objects/%s?"+values.Encode(), key)) + err = c.c.WithContext(ctx).DELETE(fmt.Sprintf("/object/%s?"+values.Encode(), key)) + return +} + +// RemoveObjects removes objects with given prefix. +func (c *Client) RemoveObjects(ctx context.Context, bucket, prefix string) (err error) { + err = c.c.WithContext(ctx).POST("/objects/remove", api.ObjectsRemoveRequest{ + Bucket: bucket, + Prefix: prefix, + }, nil) return } @@ -58,7 +65,7 @@ func (c *Client) Object(ctx context.Context, bucket, key string, opts api.GetObj key = api.ObjectKeyEscape(key) key += "?" + values.Encode() - err = c.c.WithContext(ctx).GET(fmt.Sprintf("/objects/%s", key), &res) + err = c.c.WithContext(ctx).GET(fmt.Sprintf("/object/%s", key), &res) return } diff --git a/bus/routes.go b/bus/routes.go index d1505af0d..78de89558 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1183,7 +1183,7 @@ func (b *Bus) objectsHandlerGET(jc jape.Context) { jc.Encode(resp) } -func (b *Bus) objectsHandlerPUT(jc jape.Context) { +func (b *Bus) objectHandlerPUT(jc jape.Context) { var aor api.AddObjectRequest if jc.Decode(&aor) != nil { return @@ -1208,6 +1208,22 @@ func (b *Bus) objectsCopyHandlerPOST(jc jape.Context) { jc.Encode(om) } +func (b *Bus) objectsRemoveHandlerPOST(jc jape.Context) { + var orr api.ObjectsRemoveRequest + if jc.Decode(&orr) != nil { + return + } else if orr.Bucket == "" { + orr.Bucket = api.DefaultBucketName + } + + if orr.Prefix == "" { + jc.Error(errors.New("prefix cannot be empty"), http.StatusBadRequest) + return + } + + jc.Check("failed to remove objects", b.ms.RemoveObjects(jc.Request.Context(), orr.Bucket, orr.Prefix)) +} + func (b *Bus) objectsRenameHandlerPOST(jc jape.Context) { var orr api.ObjectsRenameRequest if jc.Decode(&orr) != nil { @@ -1238,21 +1254,12 @@ func (b *Bus) objectsRenameHandlerPOST(jc jape.Context) { } } -func (b *Bus) objectsHandlerDELETE(jc jape.Context) { - var batch bool - if jc.DecodeForm("batch", &batch) != nil { - return - } +func (b *Bus) objectHandlerDELETE(jc jape.Context) { bucket := api.DefaultBucketName if jc.DecodeForm("bucket", &bucket) != nil { return } - var err error - if batch { - err = b.ms.RemoveObjects(jc.Request.Context(), bucket, jc.PathParam("key")) - } else { - err = b.ms.RemoveObject(jc.Request.Context(), bucket, jc.PathParam("key")) - } + err := b.ms.RemoveObject(jc.Request.Context(), bucket, jc.PathParam("key")) if errors.Is(err, api.ErrObjectNotFound) { jc.Error(err, http.StatusNotFound) return diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index c6827297f..1136fc10c 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -542,7 +542,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { // delete all uploads for _, upload := range uploads { - tt.OK(w.DeleteObject(context.Background(), api.DefaultBucketName, upload.key, api.DeleteObjectOptions{})) + tt.OK(w.DeleteObject(context.Background(), api.DefaultBucketName, upload.key)) } // assert root dir is empty @@ -870,7 +870,7 @@ func TestUploadDownloadExtended(t *testing.T) { } // delete the object - tt.OK(w.DeleteObject(context.Background(), api.DefaultBucketName, path, api.DeleteObjectOptions{})) + tt.OK(w.DeleteObject(context.Background(), api.DefaultBucketName, path)) } } @@ -1216,7 +1216,7 @@ func TestParallelUpload(t *testing.T) { } // Delete all objects under /dir/. - if err := cluster.Bus.DeleteObject(context.Background(), api.DefaultBucketName, "/dir/", api.DeleteObjectOptions{Batch: true}); err != nil { + if err := cluster.Bus.RemoveObjects(context.Background(), api.DefaultBucketName, "/dir/"); err != nil { t.Fatal(err) } resp, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "/", Limit: 100}) @@ -1227,7 +1227,7 @@ func TestParallelUpload(t *testing.T) { } // Delete all objects under /. - if err := cluster.Bus.DeleteObject(context.Background(), api.DefaultBucketName, "/", api.DeleteObjectOptions{Batch: true}); err != nil { + if err := cluster.Bus.RemoveObjects(context.Background(), api.DefaultBucketName, "/"); err != nil { t.Fatal(err) } resp, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "/", Limit: 100}) @@ -1402,7 +1402,7 @@ func TestUploadDownloadSameHost(t *testing.T) { } // delete the object - tt.OK(b.DeleteObject(context.Background(), api.DefaultBucketName, fmt.Sprintf("foo_%d", i), api.DeleteObjectOptions{})) + tt.OK(b.DeleteObject(context.Background(), api.DefaultBucketName, fmt.Sprintf("foo_%d", i))) } // wait until the slabs and sectors were pruned before constructing the diff --git a/internal/test/e2e/metrics_test.go b/internal/test/e2e/metrics_test.go index fcec2d6c1..31dde6a81 100644 --- a/internal/test/e2e/metrics_test.go +++ b/internal/test/e2e/metrics_test.go @@ -42,7 +42,7 @@ func TestMetrics(t *testing.T) { data := frand.Bytes(rhpv2.SectorSize) tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, "foo", api.UploadObjectOptions{})) tt.OK(w.DownloadObject(context.Background(), io.Discard, api.DefaultBucketName, "foo", api.DownloadObjectOptions{})) - tt.OK(w.DeleteObject(context.Background(), api.DefaultBucketName, "foo", api.DeleteObjectOptions{})) + tt.OK(w.DeleteObject(context.Background(), api.DefaultBucketName, "foo")) tt.Retry(30, time.Second, func() (err error) { defer func() { diff --git a/internal/test/e2e/pruning_test.go b/internal/test/e2e/pruning_test.go index c612cbe32..c316f6ed6 100644 --- a/internal/test/e2e/pruning_test.go +++ b/internal/test/e2e/pruning_test.go @@ -181,7 +181,7 @@ func TestSectorPruning(t *testing.T) { // delete every other object for i := 0; i < numObjects; i += 2 { filename := fmt.Sprintf("obj_%d", i) - tt.OK(b.DeleteObject(context.Background(), api.DefaultBucketName, filename, api.DeleteObjectOptions{})) + tt.OK(b.DeleteObject(context.Background(), api.DefaultBucketName, filename)) } // assert amount of prunable data @@ -227,7 +227,7 @@ func TestSectorPruning(t *testing.T) { // delete other object for i := 1; i < numObjects; i += 2 { filename := fmt.Sprintf("obj_%d", i) - tt.OK(b.DeleteObject(context.Background(), api.DefaultBucketName, filename, api.DeleteObjectOptions{})) + tt.OK(b.DeleteObject(context.Background(), api.DefaultBucketName, filename)) } // assert amount of prunable data diff --git a/internal/utils/web.go b/internal/utils/web.go index 471270deb..d79ae0818 100644 --- a/internal/utils/web.go +++ b/internal/utils/web.go @@ -44,7 +44,7 @@ func (t TreeMux) ServeHTTP(w http.ResponseWriter, req *http.Request) { func Auth(password string, unauthenticatedDownloads bool) func(http.Handler) http.Handler { return func(h http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { - if unauthenticatedDownloads && req.Method == http.MethodGet && strings.HasPrefix(req.URL.Path, "/objects/") { + if unauthenticatedDownloads && req.Method == http.MethodGet && strings.HasPrefix(req.URL.Path, "/object/") { h.ServeHTTP(w, req) } else { jape.BasicAuth(password)(h).ServeHTTP(w, req) diff --git a/worker/client/client.go b/worker/client/client.go index ca5aee3c8..d60b1bb69 100644 --- a/worker/client/client.go +++ b/worker/client/client.go @@ -58,13 +58,12 @@ func (c *Client) Contracts(ctx context.Context, hostTimeout time.Duration) (resp } // DeleteObject deletes the object at the given path. -func (c *Client) DeleteObject(ctx context.Context, bucket, key string, opts api.DeleteObjectOptions) (err error) { +func (c *Client) DeleteObject(ctx context.Context, bucket, key string) (err error) { values := url.Values{} values.Set("bucket", bucket) - opts.Apply(values) key = api.ObjectKeyEscape(key) - err = c.c.WithContext(ctx).DELETE(fmt.Sprintf("/objects/%s?"+values.Encode(), key)) + err = c.c.WithContext(ctx).DELETE(fmt.Sprintf("/object/%s?"+values.Encode(), key)) return } @@ -92,7 +91,7 @@ func (c *Client) DownloadStats() (resp api.DownloadStatsResponse, err error) { // HeadObject returns the metadata of the object at the given key. func (c *Client) HeadObject(ctx context.Context, bucket, key string, opts api.HeadObjectOptions) (*api.HeadObjectResponse, error) { - c.c.Custom("HEAD", fmt.Sprintf("/objects/%s", key), nil, nil) + c.c.Custom("HEAD", fmt.Sprintf("/object/%s", key), nil, nil) values := url.Values{} values.Set("bucket", url.QueryEscape(bucket)) @@ -101,7 +100,7 @@ func (c *Client) HeadObject(ctx context.Context, bucket, key string, opts api.He key += "?" + values.Encode() // TODO: support HEAD in jape client - req, err := http.NewRequestWithContext(ctx, "HEAD", fmt.Sprintf("%s/objects/%s", c.c.BaseURL, key), http.NoBody) + req, err := http.NewRequestWithContext(ctx, "HEAD", fmt.Sprintf("%s/object/%s", c.c.BaseURL, key), http.NoBody) if err != nil { panic(err) } @@ -213,12 +212,12 @@ func (c *Client) UploadMultipartUploadPart(ctx context.Context, r io.Reader, buc // UploadObject uploads the data in r, creating an object at the given path. func (c *Client) UploadObject(ctx context.Context, r io.Reader, bucket, key string, opts api.UploadObjectOptions) (*api.UploadObjectResponse, error) { key = api.ObjectKeyEscape(key) - c.c.Custom("PUT", fmt.Sprintf("/objects/%s", key), []byte{}, nil) + c.c.Custom("PUT", fmt.Sprintf("/object/%s", key), []byte{}, nil) values := make(url.Values) values.Set("bucket", bucket) opts.ApplyValues(values) - u, err := url.Parse(fmt.Sprintf("%v/objects/%v", c.c.BaseURL, key)) + u, err := url.Parse(fmt.Sprintf("%v/object/%v", c.c.BaseURL, key)) if err != nil { panic(err) } @@ -258,8 +257,8 @@ func (c *Client) object(ctx context.Context, bucket, key string, opts api.Downlo values.Set("bucket", url.QueryEscape(bucket)) key += "?" + values.Encode() - c.c.Custom("GET", fmt.Sprintf("/objects/%s", key), nil, (*[]api.ObjectMetadata)(nil)) - req, err := http.NewRequestWithContext(ctx, "GET", fmt.Sprintf("%s/objects/%s", c.c.BaseURL, key), http.NoBody) + c.c.Custom("GET", fmt.Sprintf("/object/%s", key), nil, (*[]api.ObjectMetadata)(nil)) + req, err := http.NewRequestWithContext(ctx, "GET", fmt.Sprintf("%s/object/%s", c.c.BaseURL, key), http.NoBody) if err != nil { panic(err) } diff --git a/worker/mocks_test.go b/worker/mocks_test.go index 24a70adcb..93fcd9888 100644 --- a/worker/mocks_test.go +++ b/worker/mocks_test.go @@ -384,7 +384,7 @@ func (os *objectStoreMock) DeleteHostSector(ctx context.Context, hk types.Public return nil } -func (os *objectStoreMock) DeleteObject(ctx context.Context, bucket, key string, opts api.DeleteObjectOptions) error { +func (os *objectStoreMock) DeleteObject(ctx context.Context, bucket, key string) error { return nil } @@ -587,6 +587,10 @@ func (os *objectStoreMock) MultipartUpload(ctx context.Context, uploadID string) return api.MultipartUpload{}, nil } +func (os *objectStoreMock) RemoveObjects(ctx context.Context, bucket, prefix string) error { + return nil +} + func (os *objectStoreMock) totalSlabBufferSize() (total int) { for _, p := range os.partials { if time.Now().After(p.lockedUntil) { diff --git a/worker/s3/backend.go b/worker/s3/backend.go index 28e1f7299..c27add7cc 100644 --- a/worker/s3/backend.go +++ b/worker/s3/backend.go @@ -313,7 +313,7 @@ func (s *s3) HeadObject(ctx context.Context, bucketName, key string) (*gofakes3. // delete marker, which becomes the latest version of the object. If there // isn't a null version, Amazon S3 does not remove any objects. func (s *s3) DeleteObject(ctx context.Context, bucketName, key string) (gofakes3.ObjectDeleteResult, error) { - err := s.b.DeleteObject(ctx, bucketName, key, api.DeleteObjectOptions{}) + err := s.b.DeleteObject(ctx, bucketName, key) if utils.IsErr(err, api.ErrBucketNotFound) { return gofakes3.ObjectDeleteResult{}, gofakes3.BucketNotFound(bucketName) } else if utils.IsErr(err, api.ErrObjectNotFound) { @@ -354,7 +354,7 @@ func (s *s3) PutObject(ctx context.Context, bucketName, key string, meta map[str func (s *s3) DeleteMulti(ctx context.Context, bucketName string, objects ...string) (gofakes3.MultiDeleteResult, error) { var res gofakes3.MultiDeleteResult for _, key := range objects { - err := s.b.DeleteObject(ctx, bucketName, key, api.DeleteObjectOptions{}) + err := s.b.DeleteObject(ctx, bucketName, key) if err != nil && !utils.IsErr(err, api.ErrObjectNotFound) { res.Error = append(res.Error, gofakes3.ErrorResult{ Key: key, diff --git a/worker/s3/s3.go b/worker/s3/s3.go index 10b074306..c278bf37f 100644 --- a/worker/s3/s3.go +++ b/worker/s3/s3.go @@ -32,7 +32,7 @@ type Bus interface { AddObject(ctx context.Context, bucket, key, contractSet string, o object.Object, opts api.AddObjectOptions) (err error) CopyObject(ctx context.Context, srcBucket, dstBucket, srcKey, dstKey string, opts api.CopyObjectOptions) (om api.ObjectMetadata, err error) - DeleteObject(ctx context.Context, bucket, key string, opts api.DeleteObjectOptions) (err error) + DeleteObject(ctx context.Context, bucket, key string) (err error) Objects(ctx context.Context, bucket, prefix string, opts api.ListObjectOptions) (resp api.ObjectsListResponse, err error) AbortMultipartUpload(ctx context.Context, bucket, key string, uploadID string) (err error) diff --git a/worker/worker.go b/worker/worker.go index 3fffec52d..f10300be1 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -121,9 +121,10 @@ type ( // NOTE: used by worker Bucket(_ context.Context, bucket string) (api.Bucket, error) Object(ctx context.Context, bucket, key string, opts api.GetObjectOptions) (api.Object, error) - DeleteObject(ctx context.Context, bucket, key string, opts api.DeleteObjectOptions) error + DeleteObject(ctx context.Context, bucket, key string) error MultipartUpload(ctx context.Context, uploadID string) (resp api.MultipartUpload, err error) PackedSlabsForUpload(ctx context.Context, lockingDuration time.Duration, minShards, totalShards uint8, set string, limit int) ([]api.PackedSlab, error) + RemoveObjects(ctx context.Context, bucket, prefix string) error } SettingStore interface { @@ -477,7 +478,7 @@ func (w *Worker) uploadsStatsHandlerGET(jc jape.Context) { }) } -func (w *Worker) objectsHandlerHEAD(jc jape.Context) { +func (w *Worker) objectHandlerHEAD(jc jape.Context) { // parse bucket bucket := api.DefaultBucketName if jc.DecodeForm("bucket", &bucket) != nil { @@ -527,7 +528,7 @@ func (w *Worker) objectsHandlerHEAD(jc jape.Context) { serveContent(jc.ResponseWriter, jc.Request, path, bytes.NewReader(nil), *hor) } -func (w *Worker) objectsHandlerGET(jc jape.Context) { +func (w *Worker) objectHandlerGET(jc jape.Context) { jc.Custom(nil, []api.ObjectMetadata{}) ctx := jc.Request.Context() @@ -601,7 +602,7 @@ func (w *Worker) objectsHandlerGET(jc jape.Context) { serveContent(jc.ResponseWriter, jc.Request, key, gor.Content, gor.HeadObjectResponse) } -func (w *Worker) objectsHandlerPUT(jc jape.Context) { +func (w *Worker) objectHandlerPUT(jc jape.Context) { jc.Custom((*[]byte)(nil), nil) ctx := jc.Request.Context() @@ -760,16 +761,12 @@ func (w *Worker) multipartUploadHandlerPUT(jc jape.Context) { jc.ResponseWriter.Header().Set("ETag", api.FormatETag(resp.ETag)) } -func (w *Worker) objectsHandlerDELETE(jc jape.Context) { - var batch bool - if jc.DecodeForm("batch", &batch) != nil { - return - } +func (w *Worker) objectHandlerDELETE(jc jape.Context) { var bucket string if jc.DecodeForm("bucket", &bucket) != nil { return } - err := w.bus.DeleteObject(jc.Request.Context(), bucket, jc.PathParam("key"), api.DeleteObjectOptions{Batch: batch}) + err := w.bus.DeleteObject(jc.Request.Context(), bucket, jc.PathParam("key")) if utils.IsErr(err, api.ErrObjectNotFound) { jc.Error(err, http.StatusNotFound) return @@ -777,6 +774,22 @@ func (w *Worker) objectsHandlerDELETE(jc jape.Context) { jc.Check("couldn't delete object", err) } +func (w *Worker) objectsRemoveHandlerPOST(jc jape.Context) { + var orr api.ObjectsRemoveRequest + if jc.Decode(&orr) != nil { + return + } else if orr.Bucket == "" { + orr.Bucket = api.DefaultBucketName + } + + if orr.Prefix == "" { + jc.Error(errors.New("prefix cannot be empty"), http.StatusBadRequest) + return + } + + jc.Check("couldn't remove objects", w.bus.RemoveObjects(jc.Request.Context(), orr.Bucket, orr.Prefix)) +} + func (w *Worker) rhpContractsHandlerGET(jc jape.Context) { ctx := jc.Request.Context() @@ -957,10 +970,11 @@ func (w *Worker) Handler() http.Handler { "GET /stats/uploads": w.uploadsStatsHandlerGET, "POST /slab/migrate": w.slabMigrateHandler, - "HEAD /objects/*key": w.objectsHandlerHEAD, - "GET /objects/*key": w.objectsHandlerGET, - "PUT /objects/*key": w.objectsHandlerPUT, - "DELETE /objects/*key": w.objectsHandlerDELETE, + "HEAD /object/*key": w.objectHandlerHEAD, + "GET /object/*key": w.objectHandlerGET, + "PUT /object/*key": w.objectHandlerPUT, + "DELETE /object/*key": w.objectHandlerDELETE, + "POST /objects/remove": w.objectsRemoveHandlerPOST, "PUT /multipart/*key": w.multipartUploadHandlerPUT, From ba60fea320693868dc5315d6529189b4a9d0f935 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 17 Sep 2024 10:26:22 +0200 Subject: [PATCH 125/708] stores: remove list prefix --- api/object.go | 4 +- bus/bus.go | 4 +- bus/client/objects.go | 4 +- bus/routes.go | 4 +- stores/metadata.go | 20 ++++----- stores/metadata_test.go | 70 +++++++++++++++---------------- stores/sql/database.go | 12 +++--- stores/sql/main.go | 88 +++++++++++++++++++-------------------- stores/sql/mysql/main.go | 16 +++---- stores/sql/sqlite/main.go | 16 +++---- worker/mocks_test.go | 4 +- worker/s3/s3.go | 2 +- 12 files changed, 122 insertions(+), 122 deletions(-) diff --git a/api/object.go b/api/object.go index 1ae4f455a..4b79fddf3 100644 --- a/api/object.go +++ b/api/object.go @@ -96,8 +96,8 @@ type ( Metadata ObjectUserMetadata } - // ObjectsListResponse is the response type for the /bus/objects/list endpoint. - ObjectsListResponse struct { + // ObjectsResponse is the response type for the /bus/objects endpoint. + ObjectsResponse struct { HasMore bool `json:"hasMore"` NextMarker string `json:"nextMarker"` Objects []ObjectMetadata `json:"objects"` diff --git a/bus/bus.go b/bus/bus.go index 3f92ef9bf..be5ca227e 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -229,14 +229,14 @@ type ( DeleteHostSector(ctx context.Context, hk types.PublicKey, root types.Hash256) (int, error) Bucket(_ context.Context, bucketName string) (api.Bucket, error) + Buckets(_ context.Context) ([]api.Bucket, error) CreateBucket(_ context.Context, bucketName string, policy api.BucketPolicy) error DeleteBucket(_ context.Context, bucketName string) error - ListBuckets(_ context.Context) ([]api.Bucket, error) UpdateBucketPolicy(ctx context.Context, bucketName string, policy api.BucketPolicy) error CopyObject(ctx context.Context, srcBucket, dstBucket, srcKey, dstKey, mimeType string, metadata api.ObjectUserMetadata) (api.ObjectMetadata, error) - ListObjects(ctx context.Context, bucketName, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) Object(ctx context.Context, bucketName, key string) (api.Object, error) + Objects(ctx context.Context, bucketName, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (api.ObjectsResponse, error) ObjectMetadata(ctx context.Context, bucketName, key string) (api.Object, error) ObjectsBySlabKey(ctx context.Context, bucketName string, slabKey object.EncryptionKey) ([]api.ObjectMetadata, error) ObjectsStats(ctx context.Context, opts api.ObjectsStatsOpts) (api.ObjectsStatsResponse, error) diff --git a/bus/client/objects.go b/bus/client/objects.go index a6e06c15e..c55ac13bb 100644 --- a/bus/client/objects.go +++ b/bus/client/objects.go @@ -70,7 +70,7 @@ func (c *Client) Object(ctx context.Context, bucket, key string, opts api.GetObj } // Objects lists objects in the given bucket. -func (c *Client) Objects(ctx context.Context, bucket string, prefix string, opts api.ListObjectOptions) (resp api.ObjectsListResponse, err error) { +func (c *Client) Objects(ctx context.Context, bucket string, prefix string, opts api.ListObjectOptions) (resp api.ObjectsResponse, err error) { values := url.Values{} values.Set("bucket", bucket) opts.Apply(values) @@ -78,7 +78,7 @@ func (c *Client) Objects(ctx context.Context, bucket string, prefix string, opts prefix = api.ObjectKeyEscape(prefix) prefix += "?" + values.Encode() - err = c.c.WithContext(ctx).GET(fmt.Sprintf("/listobjects/%s", prefix), &resp) + err = c.c.WithContext(ctx).GET(fmt.Sprintf("/objects/%s", prefix), &resp) return } diff --git a/bus/routes.go b/bus/routes.go index 78de89558..773f764e2 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -194,7 +194,7 @@ func (b *Bus) txpoolBroadcastHandler(jc jape.Context) { } func (b *Bus) bucketsHandlerGET(jc jape.Context) { - resp, err := b.ms.ListBuckets(jc.Request.Context()) + resp, err := b.ms.Buckets(jc.Request.Context()) if jc.Check("couldn't list buckets", err) != nil { return } @@ -1173,7 +1173,7 @@ func (b *Bus) objectsHandlerGET(jc jape.Context) { return } - resp, err := b.ms.ListObjects(jc.Request.Context(), bucket, jc.PathParam("prefix"), substring, delim, sortBy, sortDir, marker, limit) + resp, err := b.ms.Objects(jc.Request.Context(), bucket, jc.PathParam("prefix"), substring, delim, sortBy, sortDir, marker, limit) if errors.Is(err, api.ErrUnsupportedDelimiter) { jc.Error(err, http.StatusBadRequest) return diff --git a/stores/metadata.go b/stores/metadata.go index 64acb2ec8..d6658a09c 100644 --- a/stores/metadata.go +++ b/stores/metadata.go @@ -53,6 +53,14 @@ func (s *SQLStore) Bucket(ctx context.Context, bucket string) (b api.Bucket, err return } +func (s *SQLStore) Buckets(ctx context.Context) (buckets []api.Bucket, err error) { + err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) (err error) { + buckets, err = tx.Buckets(ctx) + return + }) + return +} + func (s *SQLStore) CreateBucket(ctx context.Context, bucket string, policy api.BucketPolicy) error { return s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { return tx.CreateBucket(ctx, bucket, policy) @@ -71,14 +79,6 @@ func (s *SQLStore) DeleteBucket(ctx context.Context, bucket string) error { }) } -func (s *SQLStore) ListBuckets(ctx context.Context) (buckets []api.Bucket, err error) { - err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) (err error) { - buckets, err = tx.ListBuckets(ctx) - return - }) - return -} - // ObjectsStats returns some info related to the objects stored in the store. To // reduce locking and make sure all results are consistent, everything is done // within a single transaction. @@ -790,9 +790,9 @@ func (s *SQLStore) invalidateSlabHealthByFCID(ctx context.Context, fcids []types } } -func (s *SQLStore) ListObjects(ctx context.Context, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (resp api.ObjectsListResponse, err error) { +func (s *SQLStore) Objects(ctx context.Context, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (resp api.ObjectsResponse, err error) { err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - resp, err = tx.ListObjects(ctx, bucket, prefix, substring, delim, sortBy, sortDir, marker, limit) + resp, err = tx.Objects(ctx, bucket, prefix, substring, delim, sortBy, sortDir, marker, limit) return err }) return diff --git a/stores/metadata_test.go b/stores/metadata_test.go index 0195b264f..0fc8f4717 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -1455,7 +1455,7 @@ func TestObjectHealth(t *testing.T) { } // assert health is returned correctly by ObjectEntries - resp, err := ss.ListObjects(context.Background(), api.DefaultBucketName, "/", "", "", "", "", "", -1) + resp, err := ss.Objects(context.Background(), api.DefaultBucketName, "/", "", "", "", "", "", -1) entries := resp.Objects if err != nil { t.Fatal(err) @@ -1466,7 +1466,7 @@ func TestObjectHealth(t *testing.T) { } // assert health is returned correctly by SearchObject - resp, err = ss.ListObjects(context.Background(), api.DefaultBucketName, "/", "foo", "", "", "", "", -1) + resp, err = ss.Objects(context.Background(), api.DefaultBucketName, "/", "foo", "", "", "", "", -1) if err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { @@ -1507,9 +1507,9 @@ func TestObjectHealth(t *testing.T) { } } -// TestListObjectsWithDelimiterSlash is a test for the -// TestListObjects method with '/' as the prefix. -func TestListObjectsWithDelimiterSlash(t *testing.T) { +// TestObjectsWithDelimiterSlash is a test for the TestObjects method with '/' +// as the prefix. +func TestObjectsWithDelimiterSlash(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() @@ -1608,7 +1608,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { {"/", "", "size", "ASC", []api.ObjectMetadata{{Key: "/gab/", Size: 5, Health: 1}, {Key: "/fileÅ›/", Size: 6, Health: 1}, {Key: "/FOO/", Size: 7, Health: 1}, {Key: "/foo/", Size: 10, Health: .5}}}, } for _, test := range tests { - resp, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, "", -1) + resp, err := ss.Objects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, "", -1) if err != nil { t.Fatal(err) } @@ -1621,7 +1621,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { var marker string for offset := 0; offset < len(test.want); offset++ { - resp, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, marker, 1) + resp, err := ss.Objects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, marker, 1) if err != nil { t.Fatal(err) } @@ -1643,7 +1643,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { continue } - resp, err = ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, test.want[offset].Key, 1) + resp, err = ss.Objects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, test.want[offset].Key, 1) if err != nil { t.Fatal(err) } @@ -1662,7 +1662,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { } } -func TestListObjectsExplicitDir(t *testing.T) { +func TestObjectsExplicitDir(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() @@ -1710,7 +1710,7 @@ func TestListObjectsExplicitDir(t *testing.T) { {"/dir/", "", "", "", []api.ObjectMetadata{{ETag: "d34db33f", Key: "/dir/file", Size: 1, Health: 0.5, MimeType: testMimeType}}}, } for _, test := range tests { - got, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, "", -1) + got, err := ss.Objects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, "", -1) if err != nil { t.Fatal(err) } @@ -1723,9 +1723,9 @@ func TestListObjectsExplicitDir(t *testing.T) { } } -// TestListObjectsSubstring is a test for the ListObjects fuzzy +// TestObjectsSubstring is a test for the ListObjects fuzzy // search via the "substring" argument. -func TestListObjectsSubstring(t *testing.T) { +func TestObjectsSubstring(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() objects := []struct { @@ -1778,7 +1778,7 @@ func TestListObjectsSubstring(t *testing.T) { {"uu", []api.ObjectMetadata{{Key: "/foo/baz/quux", Size: 3, Health: 1}, {Key: "/foo/baz/quuz", Size: 4, Health: 1}, {Key: "/gab/guub", Size: 5, Health: 1}}}, } for _, test := range tests { - resp, err := ss.ListObjects(ctx, api.DefaultBucketName, "", test.key, "", "", "", "", -1) + resp, err := ss.Objects(ctx, api.DefaultBucketName, "", test.key, "", "", "", "", -1) if err != nil { t.Fatal(err) } @@ -1786,7 +1786,7 @@ func TestListObjectsSubstring(t *testing.T) { assertEqual(got, test.want) var marker string for offset := 0; offset < len(test.want); offset++ { - if resp, err := ss.ListObjects(ctx, api.DefaultBucketName, "", test.key, "", "", "", marker, 1); err != nil { + if resp, err := ss.Objects(ctx, api.DefaultBucketName, "", test.key, "", "", "", marker, 1); err != nil { t.Fatal(err) } else if got := resp.Objects; len(got) != 1 { t.Errorf("\nkey: %v unexpected number of objects, %d != 1", test.key, len(got)) @@ -2631,7 +2631,7 @@ func TestRenameObjects(t *testing.T) { } // Assert that number of objects matches. - resp, err := ss.ListObjects(ctx, api.DefaultBucketName, "", "/", "", "", "", "", 100) + resp, err := ss.Objects(ctx, api.DefaultBucketName, "", "/", "", "", "", "", 100) if err != nil { t.Fatal(err) } @@ -3322,7 +3322,7 @@ func TestBuckets(t *testing.T) { defer ss.Close() // List the buckets. Should be the default one. - buckets, err := ss.ListBuckets(context.Background()) + buckets, err := ss.Buckets(context.Background()) if err != nil { t.Fatal(err) } else if len(buckets) != 1 { @@ -3340,7 +3340,7 @@ func TestBuckets(t *testing.T) { t.Fatal(err) } else if err := ss.DeleteBucket(context.Background(), api.DefaultBucketName); err != nil { t.Fatal(err) - } else if buckets, err := ss.ListBuckets(context.Background()); err != nil { + } else if buckets, err := ss.Buckets(context.Background()); err != nil { t.Fatal(err) } else if len(buckets) != 2 { t.Fatal("expected 2 buckets", len(buckets)) @@ -3408,13 +3408,13 @@ func TestBucketObjects(t *testing.T) { } // List the objects in the buckets. - if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", "", -1); err != nil { + if resp, err := ss.Objects(context.Background(), b1, "/foo/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 1 entry", len(entries)) } else if entries[0].Size != 1 { t.Fatal("unexpected size", entries[0].Size) - } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.Objects(context.Background(), b2, "/foo/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 1 entry", len(entries)) @@ -3423,13 +3423,13 @@ func TestBucketObjects(t *testing.T) { } // Search the objects in the buckets. - if resp, err := ss.ListObjects(context.Background(), b1, "", "", "", "", "", "", -1); err != nil { + if resp, err := ss.Objects(context.Background(), b1, "", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if objects := resp.Objects; len(objects) != 2 { t.Fatal("expected 2 objects", len(objects)) } else if objects[0].Size != 3 || objects[1].Size != 1 { t.Fatal("unexpected size", objects[0].Size, objects[1].Size) - } else if resp, err := ss.ListObjects(context.Background(), b2, "", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.Objects(context.Background(), b2, "", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if objects := resp.Objects; len(objects) != 2 { t.Fatal("expected 2 objects", len(objects)) @@ -3440,13 +3440,13 @@ func TestBucketObjects(t *testing.T) { // Rename object foo/bar in bucket 1 to foo/baz but not in bucket 2. if err := ss.RenameObjectBlocking(context.Background(), b1, "/foo/bar", "/foo/baz", false); err != nil { t.Fatal(err) - } else if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.Objects(context.Background(), b1, "/foo/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 2 entries", len(entries)) } else if entries[0].Key != "/foo/baz" { t.Fatal("unexpected name", entries[0].Key) - } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.Objects(context.Background(), b2, "/foo/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 2 entries", len(entries)) @@ -3457,13 +3457,13 @@ func TestBucketObjects(t *testing.T) { // Rename foo/bar in bucket 2 using the batch rename. if err := ss.RenameObjectsBlocking(context.Background(), b2, "/foo/bar", "/foo/bam", false); err != nil { t.Fatal(err) - } else if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.Objects(context.Background(), b1, "/foo/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 2 entries", len(entries)) } else if entries[0].Key != "/foo/baz" { t.Fatal("unexpected name", entries[0].Key) - } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.Objects(context.Background(), b2, "/foo/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 2 entries", len(entries)) @@ -3476,28 +3476,28 @@ func TestBucketObjects(t *testing.T) { t.Fatal(err) } else if err := ss.RemoveObjectBlocking(context.Background(), b1, "/foo/baz"); err != nil { t.Fatal(err) - } else if resp, err := ss.ListObjects(context.Background(), b1, "/foo/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.Objects(context.Background(), b1, "/foo/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) > 0 { t.Fatal("expected 0 entries", len(entries)) - } else if resp, err := ss.ListObjects(context.Background(), b2, "/foo/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.Objects(context.Background(), b2, "/foo/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 1 entry", len(entries)) } // Delete all files in bucket 2. - if resp, err := ss.ListObjects(context.Background(), b2, "/", "", "", "", "", "", -1); err != nil { + if resp, err := ss.Objects(context.Background(), b2, "/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 2 { t.Fatal("expected 2 entries", len(entries)) } else if err := ss.RemoveObjectsBlocking(context.Background(), b2, "/"); err != nil { t.Fatal(err) - } else if resp, err := ss.ListObjects(context.Background(), b2, "/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.Objects(context.Background(), b2, "/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 0 { t.Fatal("expected 0 entries", len(entries)) - } else if resp, err := ss.ListObjects(context.Background(), b1, "/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.Objects(context.Background(), b1, "/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 1 entry", len(entries)) @@ -3548,7 +3548,7 @@ func TestCopyObject(t *testing.T) { // Copy it within the same bucket. if om, err := ss.CopyObject(ctx, "src", "src", "/foo", "/bar", "", nil); err != nil { t.Fatal(err) - } else if resp, err := ss.ListObjects(ctx, "src", "/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.Objects(ctx, "src", "/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 2 { t.Fatal("expected 2 entries", len(entries)) @@ -3561,7 +3561,7 @@ func TestCopyObject(t *testing.T) { // Copy it cross buckets. if om, err := ss.CopyObject(ctx, "src", "dst", "/foo", "/bar", "", nil); err != nil { t.Fatal(err) - } else if resp, err := ss.ListObjects(ctx, "dst", "/", "", "", "", "", "", -1); err != nil { + } else if resp, err := ss.Objects(ctx, "dst", "/", "", "", "", "", "", -1); err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { t.Fatal("expected 1 entry", len(entries)) @@ -3647,7 +3647,7 @@ func TestMarkSlabUploadedAfterRenew(t *testing.T) { } } -func TestListObjectsNoDelimiter(t *testing.T) { +func TestObjectsNoDelimiter(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() objects := []struct { @@ -3721,7 +3721,7 @@ func TestListObjectsNoDelimiter(t *testing.T) { } } for _, test := range tests { - res, err := ss.ListObjects(ctx, api.DefaultBucketName, test.prefix, "", "", test.sortBy, test.sortDir, "", -1) + res, err := ss.Objects(ctx, api.DefaultBucketName, test.prefix, "", "", test.sortBy, test.sortDir, "", -1) if err != nil { t.Fatal(err) } @@ -3736,7 +3736,7 @@ func TestListObjectsNoDelimiter(t *testing.T) { if len(res.Objects) > 0 { marker := "" for offset := 0; offset < len(test.want); offset++ { - res, err := ss.ListObjects(ctx, api.DefaultBucketName, test.prefix, "", "", test.sortBy, test.sortDir, marker, 1) + res, err := ss.Objects(ctx, api.DefaultBucketName, test.prefix, "", "", test.sortBy, test.sortDir, marker, 1) if err != nil { t.Fatal(err) } diff --git a/stores/sql/database.go b/stores/sql/database.go index 651fe81f3..a645fd3bb 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -88,6 +88,9 @@ type ( // exist, it returns api.ErrBucketNotFound. Bucket(ctx context.Context, bucket string) (api.Bucket, error) + // Buckets returns a list of all buckets in the database. + Buckets(ctx context.Context) ([]api.Bucket, error) + // CompleteMultipartUpload completes a multipart upload by combining the // provided parts into an object in bucket 'bucket' with key 'key'. The // parts need to be provided in ascending partNumber order without @@ -192,12 +195,6 @@ type ( // scanned since at least maxLastScan. HostsForScanning(ctx context.Context, maxLastScan time.Time, offset, limit int) ([]api.HostAddress, error) - // ListBuckets returns a list of all buckets in the database. - ListBuckets(ctx context.Context) ([]api.Bucket, error) - - // ListObjects returns a list of objects from the given bucket. - ListObjects(ctx context.Context, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (resp api.ObjectsListResponse, err error) - // MakeDirsForPath creates all directories for a given object's path. MakeDirsForPath(ctx context.Context, path string) (int64, error) @@ -220,6 +217,9 @@ type ( // Object returns an object from the database. Object(ctx context.Context, bucket, key string) (api.Object, error) + // Objects returns a list of objects from the given bucket. + Objects(ctx context.Context, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (resp api.ObjectsResponse, err error) + // ObjectMetadata returns an object's metadata. ObjectMetadata(ctx context.Context, bucket, key string) (api.Object, error) diff --git a/stores/sql/main.go b/stores/sql/main.go index 7d66fcc00..e17aecb0b 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -221,6 +221,24 @@ func Bucket(ctx context.Context, tx sql.Tx, bucket string) (api.Bucket, error) { return b, nil } +func Buckets(ctx context.Context, tx sql.Tx) ([]api.Bucket, error) { + rows, err := tx.Query(ctx, "SELECT created_at, name, COALESCE(policy, '{}') FROM buckets") + if err != nil { + return nil, fmt.Errorf("failed to fetch buckets: %w", err) + } + defer rows.Close() + + var buckets []api.Bucket + for rows.Next() { + bucket, err := scanBucket(rows) + if err != nil { + return nil, fmt.Errorf("failed to scan bucket: %w", err) + } + buckets = append(buckets, bucket) + } + return buckets, nil +} + func Contract(ctx context.Context, tx sql.Tx, fcid types.FileContractID) (api.ContractMetadata, error) { contracts, err := QueryContracts(ctx, tx, []string{"c.fcid = ?"}, []any{FileContractID(fcid)}) if err != nil { @@ -1158,24 +1176,6 @@ func PrepareSlabHealth(ctx context.Context, tx sql.Tx, limit int64, now time.Tim return err } -func ListBuckets(ctx context.Context, tx sql.Tx) ([]api.Bucket, error) { - rows, err := tx.Query(ctx, "SELECT created_at, name, COALESCE(policy, '{}') FROM buckets") - if err != nil { - return nil, fmt.Errorf("failed to fetch buckets: %w", err) - } - defer rows.Close() - - var buckets []api.Bucket - for rows.Next() { - bucket, err := scanBucket(rows) - if err != nil { - return nil, fmt.Errorf("failed to scan bucket: %w", err) - } - buckets = append(buckets, bucket) - } - return buckets, nil -} - func whereObjectMarker(marker, sortBy, sortDir string, queryMarker func(dst any, marker, col string) error) (whereExprs []string, whereArgs []any, _ error) { if marker == "" { return nil, nil, nil @@ -1250,18 +1250,6 @@ func orderByObject(sortBy, sortDir string) (orderByExprs []string, _ error) { return orderByExprs, nil } -func ListObjects(ctx context.Context, tx Tx, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (resp api.ObjectsListResponse, err error) { - switch delim { - case "": - resp, err = listObjectsNoDelim(ctx, tx, bucket, prefix, substring, sortBy, sortDir, marker, limit) - case "/": - resp, err = listObjectsSlashDelim(ctx, tx, bucket, prefix, sortBy, sortDir, marker, limit) - default: - err = fmt.Errorf("unsupported delimiter: '%s'", delim) - } - return -} - func MultipartUpload(ctx context.Context, tx sql.Tx, uploadID string) (api.MultipartUpload, error) { resp, err := scanMultipartUpload(tx.QueryRow(ctx, "SELECT b.name, mu.key, mu.object_id, mu.upload_id, mu.created_at FROM multipart_uploads mu INNER JOIN buckets b ON b.id = mu.db_bucket_id WHERE mu.upload_id = ?", uploadID)) if err != nil { @@ -1504,6 +1492,18 @@ func dirID(ctx context.Context, tx sql.Tx, dirPath string) (int64, error) { return id, nil } +func Objects(ctx context.Context, tx Tx, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (resp api.ObjectsResponse, err error) { + switch delim { + case "": + resp, err = listObjectsNoDelim(ctx, tx, bucket, prefix, substring, sortBy, sortDir, marker, limit) + case "/": + resp, err = listObjectsSlashDelim(ctx, tx, bucket, prefix, sortBy, sortDir, marker, limit) + default: + err = fmt.Errorf("unsupported delimiter: '%s'", delim) + } + return +} + func ObjectMetadata(ctx context.Context, tx Tx, bucket, key string) (api.Object, error) { // fetch object id var objID int64 @@ -2633,7 +2633,7 @@ func Object(ctx context.Context, tx Tx, bucket, key string) (api.Object, error) }, nil } -func listObjectsNoDelim(ctx context.Context, tx Tx, bucket, prefix, substring, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { +func listObjectsNoDelim(ctx context.Context, tx Tx, bucket, prefix, substring, sortBy, sortDir, marker string, limit int) (api.ObjectsResponse, error) { // fetch one more to see if there are more entries if limit <= -1 { limit = math.MaxInt @@ -2668,7 +2668,7 @@ func listObjectsNoDelim(ctx context.Context, tx Tx, bucket, prefix, substring, s // apply sorting orderByExprs, err := orderByObject(sortBy, sortDir) if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to apply sorting: %w", err) + return api.ObjectsResponse{}, fmt.Errorf("failed to apply sorting: %w", err) } // apply marker @@ -2686,7 +2686,7 @@ func listObjectsNoDelim(ctx context.Context, tx Tx, bucket, prefix, substring, s } }) if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to get marker exprs: %w", err) + return api.ObjectsResponse{}, fmt.Errorf("failed to get marker exprs: %w", err) } whereExprs = append(whereExprs, markerExprs...) whereArgs = append(whereArgs, markerArgs...) @@ -2707,7 +2707,7 @@ func listObjectsNoDelim(ctx context.Context, tx Tx, bucket, prefix, substring, s strings.Join(orderByExprs, ", ")), whereArgs...) if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to fetch objects: %w", err) + return api.ObjectsResponse{}, fmt.Errorf("failed to fetch objects: %w", err) } defer rows.Close() @@ -2715,7 +2715,7 @@ func listObjectsNoDelim(ctx context.Context, tx Tx, bucket, prefix, substring, s for rows.Next() { om, err := tx.ScanObjectMetadata(rows) if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to scan object metadata: %w", err) + return api.ObjectsResponse{}, fmt.Errorf("failed to scan object metadata: %w", err) } objects = append(objects, om) } @@ -2730,14 +2730,14 @@ func listObjectsNoDelim(ctx context.Context, tx Tx, bucket, prefix, substring, s } } - return api.ObjectsListResponse{ + return api.ObjectsResponse{ HasMore: hasMore, NextMarker: nextMarker, Objects: objects, }, nil } -func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { +func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, sortDir, marker string, limit int) (api.ObjectsResponse, error) { // split prefix into path and object prefix path := "/" // root of bucket if idx := strings.LastIndex(prefix, "/"); idx != -1 { @@ -2766,9 +2766,9 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s // fetch directory id dirID, err := dirID(ctx, tx, path) if errors.Is(err, dsql.ErrNoRows) { - return api.ObjectsListResponse{}, nil + return api.ObjectsResponse{}, nil } else if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to fetch directory id: %w", err) + return api.ObjectsResponse{}, fmt.Errorf("failed to fetch directory id: %w", err) } args := []any{ @@ -2825,7 +2825,7 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s } }) if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to query marker: %w", err) + return api.ObjectsResponse{}, fmt.Errorf("failed to query marker: %w", err) } else if len(markerExprs) > 0 { whereExpr = "WHERE " + strings.Join(markerExprs, " AND ") } @@ -2834,7 +2834,7 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s // apply sorting orderByExprs, err := orderByObject(sortBy, sortDir) if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to apply sorting: %w", err) + return api.ObjectsResponse{}, fmt.Errorf("failed to apply sorting: %w", err) } // apply offset and limit @@ -2873,7 +2873,7 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s strings.Join(orderByExprs, ", "), ), args...) if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to fetch objects: %w", err) + return api.ObjectsResponse{}, fmt.Errorf("failed to fetch objects: %w", err) } defer rows.Close() @@ -2881,7 +2881,7 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s for rows.Next() { om, err := tx.ScanObjectMetadata(rows) if err != nil { - return api.ObjectsListResponse{}, fmt.Errorf("failed to scan object metadata: %w", err) + return api.ObjectsResponse{}, fmt.Errorf("failed to scan object metadata: %w", err) } objects = append(objects, om) } @@ -2897,7 +2897,7 @@ func listObjectsSlashDelim(ctx context.Context, tx Tx, bucket, prefix, sortBy, s } } - return api.ObjectsListResponse{ + return api.ObjectsResponse{ HasMore: hasMore, NextMarker: nextMarker, Objects: objects, diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index 632077492..a83ac23ac 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -217,6 +217,10 @@ func (tx *MainDatabaseTx) Bucket(ctx context.Context, bucket string) (api.Bucket return ssql.Bucket(ctx, tx, bucket) } +func (tx *MainDatabaseTx) Buckets(ctx context.Context) ([]api.Bucket, error) { + return ssql.Buckets(ctx, tx) +} + func (tx *MainDatabaseTx) CharLengthExpr() string { return "CHAR_LENGTH" } @@ -479,14 +483,6 @@ func (tx *MainDatabaseTx) InvalidateSlabHealthByFCID(ctx context.Context, fcids return res.RowsAffected() } -func (tx *MainDatabaseTx) ListBuckets(ctx context.Context) ([]api.Bucket, error) { - return ssql.ListBuckets(ctx, tx) -} - -func (tx *MainDatabaseTx) ListObjects(ctx context.Context, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { - return ssql.ListObjects(ctx, tx, bucket, prefix, substring, delim, sortBy, sortDir, marker, limit) -} - func (tx *MainDatabaseTx) MakeDirsForPath(ctx context.Context, path string) (int64, error) { // Create root dir. dirID := int64(sql.DirectoriesRootID) @@ -543,6 +539,10 @@ func (tx *MainDatabaseTx) Object(ctx context.Context, bucket, key string) (api.O return ssql.Object(ctx, tx, bucket, key) } +func (tx *MainDatabaseTx) Objects(ctx context.Context, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (api.ObjectsResponse, error) { + return ssql.Objects(ctx, tx, bucket, prefix, substring, delim, sortBy, sortDir, marker, limit) +} + func (tx *MainDatabaseTx) ObjectMetadata(ctx context.Context, bucket, key string) (api.Object, error) { return ssql.ObjectMetadata(ctx, tx, bucket, key) } diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index 8f903e053..b1ffc8c20 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -216,6 +216,10 @@ func (tx *MainDatabaseTx) Bucket(ctx context.Context, bucket string) (api.Bucket return ssql.Bucket(ctx, tx, bucket) } +func (tx *MainDatabaseTx) Buckets(ctx context.Context) ([]api.Bucket, error) { + return ssql.Buckets(ctx, tx) +} + func (tx *MainDatabaseTx) CharLengthExpr() string { return "LENGTH" } @@ -465,14 +469,6 @@ func (tx *MainDatabaseTx) InvalidateSlabHealthByFCID(ctx context.Context, fcids return res.RowsAffected() } -func (tx *MainDatabaseTx) ListBuckets(ctx context.Context) ([]api.Bucket, error) { - return ssql.ListBuckets(ctx, tx) -} - -func (tx *MainDatabaseTx) ListObjects(ctx context.Context, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (api.ObjectsListResponse, error) { - return ssql.ListObjects(ctx, tx, bucket, prefix, substring, delim, sortBy, sortDir, marker, limit) -} - func (tx *MainDatabaseTx) MakeDirsForPath(ctx context.Context, path string) (int64, error) { insertDirStmt, err := tx.Prepare(ctx, "INSERT INTO directories (name, db_parent_id) VALUES (?, ?) ON CONFLICT(name) DO NOTHING") if err != nil { @@ -539,6 +535,10 @@ func (tx *MainDatabaseTx) Object(ctx context.Context, bucket, key string) (api.O return ssql.Object(ctx, tx, bucket, key) } +func (tx *MainDatabaseTx) Objects(ctx context.Context, bucket, prefix, substring, delim, sortBy, sortDir, marker string, limit int) (api.ObjectsResponse, error) { + return ssql.Objects(ctx, tx, bucket, prefix, substring, delim, sortBy, sortDir, marker, limit) +} + func (tx *MainDatabaseTx) ObjectMetadata(ctx context.Context, bucket, key string) (api.Object, error) { return ssql.ObjectMetadata(ctx, tx, bucket, key) } diff --git a/worker/mocks_test.go b/worker/mocks_test.go index 93fcd9888..194a30206 100644 --- a/worker/mocks_test.go +++ b/worker/mocks_test.go @@ -632,8 +632,8 @@ func (*s3Mock) CopyObject(context.Context, string, string, string, string, api.C return api.ObjectMetadata{}, nil } -func (*s3Mock) ListObjects(context.Context, string, api.ListObjectOptions) (resp api.ObjectsListResponse, err error) { - return api.ObjectsListResponse{}, nil +func (*s3Mock) ListObjects(context.Context, string, api.ListObjectOptions) (resp api.ObjectsResponse, err error) { + return api.ObjectsResponse{}, nil } func (*s3Mock) AbortMultipartUpload(context.Context, string, string, string) (err error) { diff --git a/worker/s3/s3.go b/worker/s3/s3.go index c278bf37f..fcf2680ae 100644 --- a/worker/s3/s3.go +++ b/worker/s3/s3.go @@ -33,7 +33,7 @@ type Bus interface { AddObject(ctx context.Context, bucket, key, contractSet string, o object.Object, opts api.AddObjectOptions) (err error) CopyObject(ctx context.Context, srcBucket, dstBucket, srcKey, dstKey string, opts api.CopyObjectOptions) (om api.ObjectMetadata, err error) DeleteObject(ctx context.Context, bucket, key string) (err error) - Objects(ctx context.Context, bucket, prefix string, opts api.ListObjectOptions) (resp api.ObjectsListResponse, err error) + Objects(ctx context.Context, bucket, prefix string, opts api.ListObjectOptions) (resp api.ObjectsResponse, err error) AbortMultipartUpload(ctx context.Context, bucket, key string, uploadID string) (err error) CompleteMultipartUpload(ctx context.Context, bucket, key, uploadID string, parts []api.MultipartCompletedPart, opts api.CompleteMultipartOptions) (_ api.MultipartCompleteResponse, err error) From ac978bc3bf10fe8e10c657de456f5690044bee7e Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 17 Sep 2024 10:27:02 +0200 Subject: [PATCH 126/708] testing: rename --- internal/test/e2e/cluster_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 1136fc10c..d7b5fc637 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -34,7 +34,7 @@ import ( "lukechampine.com/frand" ) -func TestListObjectsWithNoDelimiter(t *testing.T) { +func TestObjectsWithNoDelimiter(t *testing.T) { if testing.Short() { t.SkipNow() } @@ -373,11 +373,11 @@ func TestNewTestCluster(t *testing.T) { } } -// TestListObjectsWithDelimiterSlash is an integration test that verifies +// TestObjectsWithDelimiterSlash is an integration test that verifies // objects are uploaded, download and deleted from and to the paths we // would expect. It is similar to the TestObjectEntries unit test, but uses // the worker and bus client to verify paths are passed correctly. -func TestListObjectsWithDelimiterSlash(t *testing.T) { +func TestObjectsWithDelimiterSlash(t *testing.T) { if testing.Short() { t.SkipNow() } From 7055fece0a5663391baaacf3f8d5d151574c02ac Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 17 Sep 2024 10:37:01 +0200 Subject: [PATCH 127/708] worker: add RemoveObjects to client --- worker/client/client.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/worker/client/client.go b/worker/client/client.go index d60b1bb69..4fdcdffe4 100644 --- a/worker/client/client.go +++ b/worker/client/client.go @@ -170,6 +170,15 @@ func (c *Client) MigrateSlab(ctx context.Context, slab object.Slab, set string) return } +// RemoveObjects removes the object with given prefix. +func (c *Client) RemoveObjects(ctx context.Context, bucket, prefix string) (err error) { + err = c.c.WithContext(ctx).POST("/objects/remove", api.ObjectsRemoveRequest{ + Bucket: bucket, + Prefix: prefix, + }, nil) + return +} + // State returns the current state of the worker. func (c *Client) State() (state api.WorkerStateResponse, err error) { err = c.c.GET("/state", &state) From 6f099c456349d0babbf07ac48f4544aea9c6214d Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 17 Sep 2024 13:59:03 +0200 Subject: [PATCH 128/708] stores: add TestListObjectsSlabEncryptionKey --- stores/metadata_test.go | 128 ++++++++++++++++++++-------------------- 1 file changed, 65 insertions(+), 63 deletions(-) diff --git a/stores/metadata_test.go b/stores/metadata_test.go index 4c1e508e4..ed4664bfa 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -1737,6 +1737,68 @@ func TestListObjectsExplicitDir(t *testing.T) { } } +func TestListObjectsSlabEncryptionKey(t *testing.T) { + ss := newTestSQLStore(t, defaultTestSQLStoreConfig) + defer ss.Close() + + // create a host + hks, err := ss.addTestHosts(1) + if err != nil { + t.Fatal(err) + } + hk1 := hks[0] + + // create a contract + fcids, _, err := ss.addTestContracts(hks) + if err != nil { + t.Fatal(err) + } + fcid1 := fcids[0] + + // create a slab. + slab := object.Slab{ + Health: 1.0, + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, + Shards: newTestShards(hk1, fcid1, types.Hash256{1}), + } + + // add 3 objects that all reference the slab + obj := object.Object{ + Key: object.GenerateEncryptionKey(), + Slabs: []object.SlabSlice{ + { + Slab: slab, + Offset: 1, + Length: 0, // incremented later + }, + }, + } + for _, name := range []string{"obj1", "obj2", "obj3"} { + obj.Slabs[0].Length++ + if _, err := ss.addTestObject(name, obj); err != nil { + t.Fatal(err) + } + } + + // Fetch the objects by slab. + res, err := ss.ListObjects(context.Background(), "", "", "", "", "", "", "", -1, slab.EncryptionKey) + if err != nil { + t.Fatal(err) + } + for i, name := range []string{"obj1", "obj2", "obj3"} { + if res.Objects[i].Key != name { + t.Fatal("unexpected object name", res.Objects[i].Key, name) + } + if res.Objects[i].Size != int64(i)+1 { + t.Fatal("unexpected object size", res.Objects[i].Size, i+1) + } + if res.Objects[i].Health != 1.0 { + t.Fatal("unexpected object health", res.Objects[i].Health) + } + } +} + // TestListObjectsSubstring is a test for the ListObjects fuzzy // search via the "substring" argument. func TestListObjectsSubstring(t *testing.T) { @@ -3269,69 +3331,6 @@ func TestContractSizes(t *testing.T) { } } -//  : use this as a list test -// func TestObjectsBySlabKey(t *testing.T) { -// ss := newTestSQLStore(t, defaultTestSQLStoreConfig) -// defer ss.Close() - -// // create a host -// hks, err := ss.addTestHosts(1) -// if err != nil { -// t.Fatal(err) -// } -// hk1 := hks[0] - -// // create a contract -// fcids, _, err := ss.addTestContracts(hks) -// if err != nil { -// t.Fatal(err) -// } -// fcid1 := fcids[0] - -// // create a slab. -// slab := object.Slab{ -// Health: 1.0, -// EncryptionKey: object.GenerateEncryptionKey(), -// MinShards: 1, -// Shards: newTestShards(hk1, fcid1, types.Hash256{1}), -// } - -// // Add 3 objects that all reference the slab. -// obj := object.Object{ -// Key: object.GenerateEncryptionKey(), -// Slabs: []object.SlabSlice{ -// { -// Slab: slab, -// Offset: 1, -// Length: 0, // incremented later -// }, -// }, -// } -// for _, name := range []string{"obj1", "obj2", "obj3"} { -// obj.Slabs[0].Length++ -// if _, err := ss.addTestObject(name, obj); err != nil { -// t.Fatal(err) -// } -// } - -// // Fetch the objects by slab. -// objs, err := ss.ObjectsBySlabKey(context.Background(), api.DefaultBucketName, slab.EncryptionKey) -// if err != nil { -// t.Fatal(err) -// } -// for i, name := range []string{"obj1", "obj2", "obj3"} { -// if objs[i].Key != name { -// t.Fatal("unexpected object name", objs[i].Key, name) -// } -// if objs[i].Size != int64(i)+1 { -// t.Fatal("unexpected object size", objs[i].Size, i+1) -// } -// if objs[i].Health != 1.0 { -// t.Fatal("unexpected object health", objs[i].Health) -// } -// } -// } - func TestBuckets(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() @@ -3547,6 +3546,9 @@ func TestBucketObjects(t *testing.T) { } else if len(res.Objects) != 0 { t.Fatal("expected 0 objects", len(objects)) } + + // Check if we can fetch both objects by not specifying the bucket + } func TestCopyObject(t *testing.T) { From 73ca54ab95aba0ec75744ddcc9156e5a0f7003a4 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 17 Sep 2024 11:09:12 +0200 Subject: [PATCH 129/708] api: remove default bucket --- api/bucket.go | 4 - api/worker.go | 4 + bus/routes.go | 33 ++++-- internal/test/e2e/cluster.go | 1 + internal/test/e2e/cluster_test.go | 158 +++++++++++++-------------- internal/test/e2e/gouging_test.go | 10 +- internal/test/e2e/metadata_test.go | 12 +- internal/test/e2e/metrics_test.go | 6 +- internal/test/e2e/migrations_test.go | 10 +- internal/test/e2e/pruning_test.go | 6 +- internal/test/e2e/s3_test.go | 58 +++++----- internal/test/e2e/uploads_test.go | 2 +- stores/metadata_test.go | 100 ++++++++--------- stores/multipart_test.go | 36 +++--- stores/sql_test.go | 6 +- worker/worker.go | 21 +++- 16 files changed, 251 insertions(+), 216 deletions(-) diff --git a/api/bucket.go b/api/bucket.go index 5942723bb..7329b87ad 100644 --- a/api/bucket.go +++ b/api/bucket.go @@ -4,10 +4,6 @@ import ( "errors" ) -const ( - DefaultBucketName = "default" -) - var ( // ErrBucketExists is returned when trying to create a bucket that already // exists. diff --git a/api/worker.go b/api/worker.go index ee72ca73e..ff21a8497 100644 --- a/api/worker.go +++ b/api/worker.go @@ -15,6 +15,10 @@ import ( ) var ( + // ErrBucketMissing is returned by the worker API by endpoints that need a + // bucket when it wasn't specified. + ErrBucketMissing = errors.New("bucket parameter not specified") + // ErrConsensusNotSynced is returned by the worker API by endpoints that rely on // consensus and the consensus is not synced. ErrConsensusNotSynced = errors.New("consensus is not synced") diff --git a/bus/routes.go b/bus/routes.go index a7eb01a84..23117e5b8 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1108,10 +1108,14 @@ func (b *Bus) contractsAllHandlerDELETE(jc jape.Context) { func (b *Bus) objectHandlerGET(jc jape.Context) { key := jc.PathParam("key") - bucket := api.DefaultBucketName + var bucket string if jc.DecodeForm("bucket", &bucket) != nil { return + } else if bucket == "" { + jc.Error(api.ErrBucketMissing, http.StatusBadRequest) + return } + var onlymetadata bool if jc.DecodeForm("onlymetadata", &onlymetadata) != nil { return @@ -1136,10 +1140,14 @@ func (b *Bus) objectHandlerGET(jc jape.Context) { func (b *Bus) objectsHandlerGET(jc jape.Context) { var marker, delim, sortBy, sortDir, substring string - bucket := api.DefaultBucketName + var bucket string if jc.DecodeForm("bucket", &bucket) != nil { return + } else if bucket == "" { + jc.Error(api.ErrBucketMissing, http.StatusBadRequest) + return } + if jc.DecodeForm("delimiter", &delim) != nil { return } @@ -1175,7 +1183,8 @@ func (b *Bus) objectsHandlerPUT(jc jape.Context) { if jc.Decode(&aor) != nil { return } else if aor.Bucket == "" { - aor.Bucket = api.DefaultBucketName + jc.Error(api.ErrBucketMissing, http.StatusBadRequest) + return } jc.Check("couldn't store object", b.ms.UpdateObject(jc.Request.Context(), aor.Bucket, jc.PathParam("key"), aor.ContractSet, aor.ETag, aor.MimeType, aor.Metadata, aor.Object)) } @@ -1200,7 +1209,8 @@ func (b *Bus) objectsRenameHandlerPOST(jc jape.Context) { if jc.Decode(&orr) != nil { return } else if orr.Bucket == "" { - orr.Bucket = api.DefaultBucketName + jc.Error(api.ErrBucketMissing, http.StatusBadRequest) + return } if orr.Mode == api.ObjectsRenameModeSingle { // Single object rename. @@ -1230,10 +1240,14 @@ func (b *Bus) objectsHandlerDELETE(jc jape.Context) { if jc.DecodeForm("batch", &batch) != nil { return } - bucket := api.DefaultBucketName + var bucket string if jc.DecodeForm("bucket", &bucket) != nil { return + } else if bucket == "" { + jc.Error(api.ErrBucketMissing, http.StatusBadRequest) + return } + var err error if batch { err = b.ms.RemoveObjects(jc.Request.Context(), bucket, jc.PathParam("key")) @@ -1460,10 +1474,14 @@ func (b *Bus) slabObjectsHandlerGET(jc jape.Context) { if jc.DecodeParam("key", &key) != nil { return } - bucket := api.DefaultBucketName + var bucket string if jc.DecodeForm("bucket", &bucket) != nil { return + } else if bucket == "" { + jc.Error(api.ErrBucketMissing, http.StatusBadRequest) + return } + objects, err := b.ms.ObjectsBySlabKey(jc.Request.Context(), bucket, key) if jc.Check("failed to retrieve objects by slab", err) != nil { return @@ -2148,7 +2166,8 @@ func (b *Bus) multipartHandlerUploadPartPUT(jc jape.Context) { return } if req.Bucket == "" { - req.Bucket = api.DefaultBucketName + jc.Error(api.ErrBucketMissing, http.StatusBadRequest) + return } else if req.ContractSet == "" { jc.Error(errors.New("contract_set must be non-empty"), http.StatusBadRequest) return diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index 607dc7cd7..8972a76f8 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -49,6 +49,7 @@ import ( ) const ( + testBucket = "testbucket" testBusFlushInterval = 100 * time.Millisecond ) diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 9eb1b1995..5b0f2d0fb 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -90,11 +90,11 @@ func TestListObjectsWithNoDelimiter(t *testing.T) { for _, upload := range uploads { if upload.size == 0 { - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(nil), api.DefaultBucketName, upload.key, api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(nil), testBucket, upload.key, api.UploadObjectOptions{})) } else { data := make([]byte, upload.size) frand.Read(data) - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, upload.key, api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), testBucket, upload.key, api.UploadObjectOptions{})) } } @@ -117,7 +117,7 @@ func TestListObjectsWithNoDelimiter(t *testing.T) { } for _, test := range tests { // use the bus client - res, err := b.Objects(context.Background(), api.DefaultBucketName, test.prefix, api.ListObjectOptions{ + res, err := b.Objects(context.Background(), testBucket, test.prefix, api.ListObjectOptions{ SortBy: test.sortBy, SortDir: test.sortDir, Limit: -1, @@ -135,7 +135,7 @@ func TestListObjectsWithNoDelimiter(t *testing.T) { if len(res.Objects) > 0 { marker := "" for offset := 0; offset < len(test.want); offset++ { - res, err := b.Objects(context.Background(), api.DefaultBucketName, test.prefix, api.ListObjectOptions{ + res, err := b.Objects(context.Background(), testBucket, test.prefix, api.ListObjectOptions{ SortBy: test.sortBy, SortDir: test.sortDir, Marker: marker, @@ -160,7 +160,7 @@ func TestListObjectsWithNoDelimiter(t *testing.T) { } // list invalid marker - _, err := b.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{ + _, err := b.Objects(context.Background(), testBucket, "", api.ListObjectOptions{ Marker: "invalid", SortBy: api.ObjectSortByHealth, }) @@ -436,11 +436,11 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { for _, upload := range uploads { if upload.size == 0 { - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(nil), api.DefaultBucketName, upload.key, api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(nil), testBucket, upload.key, api.UploadObjectOptions{})) } else { data := make([]byte, upload.size) frand.Read(data) - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, upload.key, api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), testBucket, upload.key, api.UploadObjectOptions{})) } } @@ -476,7 +476,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { } for _, test := range tests { // use the bus client - res, err := b.Objects(context.Background(), api.DefaultBucketName, test.path+test.prefix, api.ListObjectOptions{ + res, err := b.Objects(context.Background(), testBucket, test.path+test.prefix, api.ListObjectOptions{ Delimiter: "/", SortBy: test.sortBy, SortDir: test.sortDir, @@ -491,7 +491,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { } var marker string for offset := 0; offset < len(test.want); offset++ { - res, err := b.Objects(context.Background(), api.DefaultBucketName, test.path+test.prefix, api.ListObjectOptions{ + res, err := b.Objects(context.Background(), testBucket, test.path+test.prefix, api.ListObjectOptions{ Delimiter: "/", SortBy: test.sortBy, SortDir: test.sortDir, @@ -517,7 +517,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { continue } - res, err = b.Objects(context.Background(), api.DefaultBucketName, test.path+test.prefix, api.ListObjectOptions{ + res, err = b.Objects(context.Background(), testBucket, test.path+test.prefix, api.ListObjectOptions{ Delimiter: "/", SortBy: test.sortBy, SortDir: test.sortDir, @@ -542,11 +542,11 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { // delete all uploads for _, upload := range uploads { - tt.OK(w.DeleteObject(context.Background(), api.DefaultBucketName, upload.key, api.DeleteObjectOptions{})) + tt.OK(w.DeleteObject(context.Background(), testBucket, upload.key, api.DeleteObjectOptions{})) } // assert root dir is empty - if resp, err := b.Objects(context.Background(), api.DefaultBucketName, "/", api.ListObjectOptions{}); err != nil { + if resp, err := b.Objects(context.Background(), testBucket, "/", api.ListObjectOptions{}); err != nil { t.Fatal(err) } else if len(resp.Objects) != 0 { t.Fatal("there should be no entries left", resp.Objects) @@ -578,19 +578,19 @@ func TestObjectsRename(t *testing.T) { "/bar2", } for _, path := range uploads { - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(nil), api.DefaultBucketName, path, api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(nil), testBucket, path, api.UploadObjectOptions{})) } // rename - if err := b.RenameObjects(context.Background(), api.DefaultBucketName, "/foo/", "/", false); err != nil { + if err := b.RenameObjects(context.Background(), testBucket, "/foo/", "/", false); err != nil { t.Fatal(err) } - if err := b.RenameObject(context.Background(), api.DefaultBucketName, "/baz/quuz", "/quuz", false); err != nil { + if err := b.RenameObject(context.Background(), testBucket, "/baz/quuz", "/quuz", false); err != nil { t.Fatal(err) } - if err := b.RenameObject(context.Background(), api.DefaultBucketName, "/bar2", "/bar", false); err == nil || !strings.Contains(err.Error(), api.ErrObjectExists.Error()) { + if err := b.RenameObject(context.Background(), testBucket, "/bar2", "/bar", false); err == nil || !strings.Contains(err.Error(), api.ErrObjectExists.Error()) { t.Fatal(err) - } else if err := b.RenameObject(context.Background(), api.DefaultBucketName, "/bar2", "/bar", true); err != nil { + } else if err := b.RenameObject(context.Background(), testBucket, "/bar2", "/bar", true); err != nil { t.Fatal(err) } @@ -602,7 +602,7 @@ func TestObjectsRename(t *testing.T) { "/quuz", } { buf := bytes.NewBuffer(nil) - if err := w.DownloadObject(context.Background(), buf, api.DefaultBucketName, path, api.DownloadObjectOptions{}); err != nil { + if err := w.DownloadObject(context.Background(), buf, testBucket, path, api.DownloadObjectOptions{}); err != nil { t.Fatal(err) } } @@ -625,11 +625,11 @@ func TestUploadDownloadEmpty(t *testing.T) { tt := cluster.tt // upload an empty file - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(nil), api.DefaultBucketName, "empty", api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(nil), testBucket, "empty", api.UploadObjectOptions{})) // download the empty file var buffer bytes.Buffer - tt.OK(w.DownloadObject(context.Background(), &buffer, api.DefaultBucketName, "empty", api.DownloadObjectOptions{})) + tt.OK(w.DownloadObject(context.Background(), &buffer, testBucket, "empty", api.DownloadObjectOptions{})) // assert it's empty if len(buffer.Bytes()) != 0 { @@ -664,10 +664,10 @@ func TestUploadDownloadBasic(t *testing.T) { // upload the data path := fmt.Sprintf("data_%v", len(data)) - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, path, api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), testBucket, path, api.UploadObjectOptions{})) // fetch object and check its slabs - resp, err := cluster.Bus.Object(context.Background(), api.DefaultBucketName, path, api.GetObjectOptions{}) + resp, err := cluster.Bus.Object(context.Background(), testBucket, path, api.GetObjectOptions{}) tt.OK(err) for _, slab := range resp.Object.Slabs { hosts := make(map[types.PublicKey]struct{}) @@ -697,7 +697,7 @@ func TestUploadDownloadBasic(t *testing.T) { // download data var buffer bytes.Buffer - tt.OK(w.DownloadObject(context.Background(), &buffer, api.DefaultBucketName, path, api.DownloadObjectOptions{})) + tt.OK(w.DownloadObject(context.Background(), &buffer, testBucket, path, api.DownloadObjectOptions{})) // assert it matches if !bytes.Equal(data, buffer.Bytes()) { @@ -708,7 +708,7 @@ func TestUploadDownloadBasic(t *testing.T) { for i := int64(0); i < 4; i++ { offset := i * 32 var buffer bytes.Buffer - tt.OK(w.DownloadObject(context.Background(), &buffer, api.DefaultBucketName, path, api.DownloadObjectOptions{Range: &api.DownloadRange{Offset: offset, Length: 32}})) + tt.OK(w.DownloadObject(context.Background(), &buffer, testBucket, path, api.DownloadObjectOptions{Range: &api.DownloadRange{Offset: offset, Length: 32}})) if !bytes.Equal(data[offset:offset+32], buffer.Bytes()) { fmt.Println(data[offset : offset+32]) fmt.Println(buffer.Bytes()) @@ -756,11 +756,11 @@ func TestUploadDownloadExtended(t *testing.T) { file2 := make([]byte, rhpv2.SectorSize/12) frand.Read(file1) frand.Read(file2) - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(file1), api.DefaultBucketName, "fileÅ›/file1", api.UploadObjectOptions{})) - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(file2), api.DefaultBucketName, "fileÅ›/file2", api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(file1), testBucket, "fileÅ›/file1", api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(file2), testBucket, "fileÅ›/file2", api.UploadObjectOptions{})) // fetch all entries from the worker - resp, err := cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "fileÅ›/", api.ListObjectOptions{ + resp, err := cluster.Bus.Objects(context.Background(), testBucket, "fileÅ›/", api.ListObjectOptions{ Delimiter: "/", }) tt.OK(err) @@ -775,7 +775,7 @@ func TestUploadDownloadExtended(t *testing.T) { } // fetch entries in /fileÅ› starting with "file" - res, err := cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "fileÅ›/file", api.ListObjectOptions{ + res, err := cluster.Bus.Objects(context.Background(), testBucket, "fileÅ›/file", api.ListObjectOptions{ Delimiter: "/", }) tt.OK(err) @@ -784,7 +784,7 @@ func TestUploadDownloadExtended(t *testing.T) { } // fetch entries in /fileÅ› starting with "foo" - res, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "fileÅ›/foo", api.ListObjectOptions{ + res, err = cluster.Bus.Objects(context.Background(), testBucket, "fileÅ›/foo", api.ListObjectOptions{ Delimiter: "/", }) tt.OK(err) @@ -800,14 +800,14 @@ func TestUploadDownloadExtended(t *testing.T) { for _, data := range [][]byte{small, large} { tt.OKAll(frand.Read(data)) path := fmt.Sprintf("data_%v", len(data)) - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, path, api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), testBucket, path, api.UploadObjectOptions{})) } // check objects stats. tt.Retry(100, 100*time.Millisecond, func() error { for _, opts := range []api.ObjectsStatsOpts{ - {}, // any bucket - {Bucket: api.DefaultBucketName}, // specific bucket + {}, // any bucket + {Bucket: testBucket}, // specific bucket } { info, err := cluster.Bus.ObjectsStats(context.Background(), opts) tt.OK(err) @@ -836,7 +836,7 @@ func TestUploadDownloadExtended(t *testing.T) { for _, data := range [][]byte{small, large} { name := fmt.Sprintf("data_%v", len(data)) var buffer bytes.Buffer - tt.OK(w.DownloadObject(context.Background(), &buffer, api.DefaultBucketName, name, api.DownloadObjectOptions{})) + tt.OK(w.DownloadObject(context.Background(), &buffer, testBucket, name, api.DownloadObjectOptions{})) // assert it matches if !bytes.Equal(data, buffer.Bytes()) { @@ -862,7 +862,7 @@ func TestUploadDownloadExtended(t *testing.T) { path := fmt.Sprintf("data_%v", len(data)) var buffer bytes.Buffer - tt.OK(w.DownloadObject(context.Background(), &buffer, api.DefaultBucketName, path, api.DownloadObjectOptions{})) + tt.OK(w.DownloadObject(context.Background(), &buffer, testBucket, path, api.DownloadObjectOptions{})) // assert it matches if !bytes.Equal(data, buffer.Bytes()) { @@ -870,7 +870,7 @@ func TestUploadDownloadExtended(t *testing.T) { } // delete the object - tt.OK(w.DeleteObject(context.Background(), api.DefaultBucketName, path, api.DeleteObjectOptions{})) + tt.OK(w.DeleteObject(context.Background(), testBucket, path, api.DeleteObjectOptions{})) } } @@ -935,15 +935,15 @@ func TestUploadDownloadSpending(t *testing.T) { // upload the data path := fmt.Sprintf("data_%v", len(data)) - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, path, api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), testBucket, path, api.UploadObjectOptions{})) // Should be registered in bus. - _, err := cluster.Bus.Object(context.Background(), api.DefaultBucketName, path, api.GetObjectOptions{}) + _, err := cluster.Bus.Object(context.Background(), testBucket, path, api.GetObjectOptions{}) tt.OK(err) // download the data var buffer bytes.Buffer - tt.OK(w.DownloadObject(context.Background(), &buffer, api.DefaultBucketName, path, api.DownloadObjectOptions{})) + tt.OK(w.DownloadObject(context.Background(), &buffer, testBucket, path, api.DownloadObjectOptions{})) // assert it matches if !bytes.Equal(data, buffer.Bytes()) { @@ -956,17 +956,17 @@ func TestUploadDownloadSpending(t *testing.T) { uploadDownload() // Fuzzy search for uploaded data in various ways. - resp, err := cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{}) + resp, err := cluster.Bus.Objects(context.Background(), testBucket, "", api.ListObjectOptions{}) tt.OK(err) if len(resp.Objects) != 2 { t.Fatalf("should have 2 objects but got %v", len(resp.Objects)) } - resp, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "ata"}) + resp, err = cluster.Bus.Objects(context.Background(), testBucket, "", api.ListObjectOptions{Substring: "ata"}) tt.OK(err) if len(resp.Objects) != 2 { t.Fatalf("should have 2 objects but got %v", len(resp.Objects)) } - resp, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "1258"}) + resp, err = cluster.Bus.Objects(context.Background(), testBucket, "", api.ListObjectOptions{Substring: "1258"}) tt.OK(err) if len(resp.Objects) != 1 { t.Fatalf("should have 1 objects but got %v", len(resp.Objects)) @@ -1185,7 +1185,7 @@ func TestParallelUpload(t *testing.T) { // upload the data path := fmt.Sprintf("/dir/data_%v", hex.EncodeToString(data[:16])) - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, path, api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), testBucket, path, api.UploadObjectOptions{})) } // Upload in parallel @@ -1200,38 +1200,38 @@ func TestParallelUpload(t *testing.T) { wg.Wait() // Check if objects exist. - resp, err := cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "/dir/", Limit: 100}) + resp, err := cluster.Bus.Objects(context.Background(), testBucket, "", api.ListObjectOptions{Substring: "/dir/", Limit: 100}) tt.OK(err) if len(resp.Objects) != 3 { t.Fatal("wrong number of objects", len(resp.Objects)) } // Upload one more object. - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader([]byte("data")), api.DefaultBucketName, "/foo", api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader([]byte("data")), testBucket, "/foo", api.UploadObjectOptions{})) - resp, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "/", Limit: 100}) + resp, err = cluster.Bus.Objects(context.Background(), testBucket, "", api.ListObjectOptions{Substring: "/", Limit: 100}) tt.OK(err) if len(resp.Objects) != 4 { t.Fatal("wrong number of objects", len(resp.Objects)) } // Delete all objects under /dir/. - if err := cluster.Bus.DeleteObject(context.Background(), api.DefaultBucketName, "/dir/", api.DeleteObjectOptions{Batch: true}); err != nil { + if err := cluster.Bus.DeleteObject(context.Background(), testBucket, "/dir/", api.DeleteObjectOptions{Batch: true}); err != nil { t.Fatal(err) } - resp, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "/", Limit: 100}) - cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "/", Limit: 100}) + resp, err = cluster.Bus.Objects(context.Background(), testBucket, "", api.ListObjectOptions{Substring: "/", Limit: 100}) + cluster.Bus.Objects(context.Background(), testBucket, "", api.ListObjectOptions{Substring: "/", Limit: 100}) tt.OK(err) if len(resp.Objects) != 1 { t.Fatal("objects weren't deleted") } // Delete all objects under /. - if err := cluster.Bus.DeleteObject(context.Background(), api.DefaultBucketName, "/", api.DeleteObjectOptions{Batch: true}); err != nil { + if err := cluster.Bus.DeleteObject(context.Background(), testBucket, "/", api.DeleteObjectOptions{Batch: true}); err != nil { t.Fatal(err) } - resp, err = cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "/", Limit: 100}) - cluster.Bus.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{Substring: "/", Limit: 100}) + resp, err = cluster.Bus.Objects(context.Background(), testBucket, "", api.ListObjectOptions{Substring: "/", Limit: 100}) + cluster.Bus.Objects(context.Background(), testBucket, "", api.ListObjectOptions{Substring: "/", Limit: 100}) tt.OK(err) if len(resp.Objects) != 0 { t.Fatal("objects weren't deleted") @@ -1255,12 +1255,12 @@ func TestParallelDownload(t *testing.T) { // upload the data data := frand.Bytes(rhpv2.SectorSize) - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, "foo", api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), testBucket, "foo", api.UploadObjectOptions{})) download := func() error { t.Helper() buf := bytes.NewBuffer(nil) - err := w.DownloadObject(context.Background(), buf, api.DefaultBucketName, "foo", api.DownloadObjectOptions{}) + err := w.DownloadObject(context.Background(), buf, testBucket, "foo", api.DownloadObjectOptions{}) if err != nil { return err } @@ -1392,17 +1392,17 @@ func TestUploadDownloadSameHost(t *testing.T) { shards := make(map[types.PublicKey][]object.Sector) for i := 0; i < 3; i++ { // upload object - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(frand.Bytes(rhpv2.SectorSize)), api.DefaultBucketName, fmt.Sprintf("foo_%d", i), api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(frand.Bytes(rhpv2.SectorSize)), testBucket, fmt.Sprintf("foo_%d", i), api.UploadObjectOptions{})) // download object from bus and keep track of its shards - res, err = b.Object(context.Background(), api.DefaultBucketName, fmt.Sprintf("foo_%d", i), api.GetObjectOptions{}) + res, err = b.Object(context.Background(), testBucket, fmt.Sprintf("foo_%d", i), api.GetObjectOptions{}) tt.OK(err) for _, shard := range res.Object.Slabs[0].Shards { shards[shard.LatestHost] = append(shards[shard.LatestHost], shard) } // delete the object - tt.OK(b.DeleteObject(context.Background(), api.DefaultBucketName, fmt.Sprintf("foo_%d", i), api.DeleteObjectOptions{})) + tt.OK(b.DeleteObject(context.Background(), testBucket, fmt.Sprintf("foo_%d", i), api.DeleteObjectOptions{})) } // wait until the slabs and sectors were pruned before constructing the @@ -1414,10 +1414,10 @@ func TestUploadDownloadSameHost(t *testing.T) { // build a frankenstein object constructed with all sectors on the same host res.Object.Slabs[0].Shards = shards[res.Object.Slabs[0].Shards[0].LatestHost] - tt.OK(b.AddObject(context.Background(), api.DefaultBucketName, "frankenstein", test.ContractSet, *res.Object, api.AddObjectOptions{})) + tt.OK(b.AddObject(context.Background(), testBucket, "frankenstein", test.ContractSet, *res.Object, api.AddObjectOptions{})) // assert we can download this object - tt.OK(w.DownloadObject(context.Background(), io.Discard, api.DefaultBucketName, "frankenstein", api.DownloadObjectOptions{})) + tt.OK(w.DownloadObject(context.Background(), io.Discard, testBucket, "frankenstein", api.DownloadObjectOptions{})) } func TestContractArchival(t *testing.T) { @@ -1627,7 +1627,7 @@ func TestUploadPacking(t *testing.T) { if err := w.DownloadObject( context.Background(), &buffer, - api.DefaultBucketName, + testBucket, key, api.DownloadObjectOptions{Range: &api.DownloadRange{Offset: offset, Length: length}}, ); err != nil { @@ -1639,16 +1639,16 @@ func TestUploadPacking(t *testing.T) { } uploadDownload := func(name string, data []byte) { t.Helper() - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, name, api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), testBucket, name, api.UploadObjectOptions{})) download(name, data, 0, int64(len(data))) - res, err := b.Object(context.Background(), api.DefaultBucketName, name, api.GetObjectOptions{}) + res, err := b.Object(context.Background(), testBucket, name, api.GetObjectOptions{}) if err != nil { t.Fatal(err) } if res.Size != int64(len(data)) { t.Fatal("unexpected size after upload", res.Size, len(data)) } - resp, err := b.Objects(context.Background(), api.DefaultBucketName, "", api.ListObjectOptions{}) + resp, err := b.Objects(context.Background(), testBucket, "", api.ListObjectOptions{}) if err != nil { t.Fatal(err) } @@ -1743,9 +1743,9 @@ func TestUploadPacking(t *testing.T) { // ObjectsBySlabKey should return 2 objects for the slab of file1 since file1 // and file2 share the same slab. - res, err := b.Object(context.Background(), api.DefaultBucketName, "file1", api.GetObjectOptions{}) + res, err := b.Object(context.Background(), testBucket, "file1", api.GetObjectOptions{}) tt.OK(err) - objs, err := b.ObjectsBySlabKey(context.Background(), api.DefaultBucketName, res.Object.Slabs[0].EncryptionKey) + objs, err := b.ObjectsBySlabKey(context.Background(), testBucket, res.Object.Slabs[0].EncryptionKey) tt.OK(err) if len(objs) != 2 { t.Fatal("expected 2 objects", len(objs)) @@ -1875,7 +1875,7 @@ func TestSlabBufferStats(t *testing.T) { frand.Read(data2) // upload the first file - buffer should still be incomplete after this - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data1), api.DefaultBucketName, "1", api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data1), testBucket, "1", api.UploadObjectOptions{})) // assert number of objects os, err := b.ObjectsStats(context.Background(), api.ObjectsStatsOpts{}) @@ -1932,7 +1932,7 @@ func TestSlabBufferStats(t *testing.T) { } // upload the second file - this should fill the buffer - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data2), api.DefaultBucketName, "2", api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data2), testBucket, "2", api.UploadObjectOptions{})) // assert number of objects os, err = b.ObjectsStats(context.Background(), api.ObjectsStatsOpts{}) @@ -2103,14 +2103,14 @@ func TestMultipartUploads(t *testing.T) { // Start a new multipart upload. objPath := "/foo" - mpr, err := b.CreateMultipartUpload(context.Background(), api.DefaultBucketName, objPath, api.CreateMultipartOptions{}) + mpr, err := b.CreateMultipartUpload(context.Background(), testBucket, objPath, api.CreateMultipartOptions{}) tt.OK(err) if mpr.UploadID == "" { t.Fatal("expected non-empty upload ID") } // List uploads - lmu, err := b.MultipartUploads(context.Background(), api.DefaultBucketName, "/f", "", "", 0) + lmu, err := b.MultipartUploads(context.Background(), testBucket, "/f", "", "", 0) tt.OK(err) if len(lmu.Uploads) != 1 { t.Fatal("expected 1 upload got", len(lmu.Uploads)) @@ -2122,7 +2122,7 @@ func TestMultipartUploads(t *testing.T) { // correctly. putPart := func(partNum int, offset int, data []byte) string { t.Helper() - res, err := w.UploadMultipartUploadPart(context.Background(), bytes.NewReader(data), api.DefaultBucketName, objPath, mpr.UploadID, partNum, api.UploadMultipartUploadPartOptions{EncryptionOffset: &offset}) + res, err := w.UploadMultipartUploadPart(context.Background(), bytes.NewReader(data), testBucket, objPath, mpr.UploadID, partNum, api.UploadMultipartUploadPartOptions{EncryptionOffset: &offset}) tt.OK(err) if res.ETag == "" { t.Fatal("expected non-empty ETag") @@ -2142,7 +2142,7 @@ func TestMultipartUploads(t *testing.T) { expectedData = append(expectedData, data3...) // List parts - mup, err := b.MultipartUploadParts(context.Background(), api.DefaultBucketName, objPath, mpr.UploadID, 0, 0) + mup, err := b.MultipartUploadParts(context.Background(), testBucket, objPath, mpr.UploadID, 0, 0) tt.OK(err) if len(mup.Parts) != 3 { t.Fatal("expected 3 parts got", len(mup.Parts)) @@ -2168,7 +2168,7 @@ func TestMultipartUploads(t *testing.T) { } // Complete upload - ui, err := b.CompleteMultipartUpload(context.Background(), api.DefaultBucketName, objPath, mpr.UploadID, []api.MultipartCompletedPart{ + ui, err := b.CompleteMultipartUpload(context.Background(), testBucket, objPath, mpr.UploadID, []api.MultipartCompletedPart{ { PartNumber: 1, ETag: etag1, @@ -2188,7 +2188,7 @@ func TestMultipartUploads(t *testing.T) { } // Download object - gor, err := w.GetObject(context.Background(), api.DefaultBucketName, objPath, api.DownloadObjectOptions{}) + gor, err := w.GetObject(context.Background(), testBucket, objPath, api.DownloadObjectOptions{}) tt.OK(err) if gor.Range != nil { t.Fatal("unexpected range:", gor.Range) @@ -2201,7 +2201,7 @@ func TestMultipartUploads(t *testing.T) { } // Download a range of the object - gor, err = w.GetObject(context.Background(), api.DefaultBucketName, objPath, api.DownloadObjectOptions{Range: &api.DownloadRange{Offset: 0, Length: 1}}) + gor, err = w.GetObject(context.Background(), testBucket, objPath, api.DownloadObjectOptions{Range: &api.DownloadRange{Offset: 0, Length: 1}}) tt.OK(err) if gor.Range == nil || gor.Range.Offset != 0 || gor.Range.Length != 1 { t.Fatal("unexpected range:", gor.Range) @@ -2439,7 +2439,7 @@ func TestMultipartUploadWrappedByPartialSlabs(t *testing.T) { // start a new multipart upload. We upload the parts in reverse order objPath := "/foo" - mpr, err := b.CreateMultipartUpload(context.Background(), api.DefaultBucketName, objPath, api.CreateMultipartOptions{}) + mpr, err := b.CreateMultipartUpload(context.Background(), testBucket, objPath, api.CreateMultipartOptions{}) tt.OK(err) if mpr.UploadID == "" { t.Fatal("expected non-empty upload ID") @@ -2448,7 +2448,7 @@ func TestMultipartUploadWrappedByPartialSlabs(t *testing.T) { // upload a part that is a partial slab part3Data := bytes.Repeat([]byte{3}, int(slabSize)/4) offset := int(slabSize + slabSize/4) - resp3, err := w.UploadMultipartUploadPart(context.Background(), bytes.NewReader(part3Data), api.DefaultBucketName, objPath, mpr.UploadID, 3, api.UploadMultipartUploadPartOptions{ + resp3, err := w.UploadMultipartUploadPart(context.Background(), bytes.NewReader(part3Data), testBucket, objPath, mpr.UploadID, 3, api.UploadMultipartUploadPartOptions{ EncryptionOffset: &offset, }) tt.OK(err) @@ -2456,7 +2456,7 @@ func TestMultipartUploadWrappedByPartialSlabs(t *testing.T) { // upload a part that is exactly a full slab part2Data := bytes.Repeat([]byte{2}, int(slabSize)) offset = int(slabSize / 4) - resp2, err := w.UploadMultipartUploadPart(context.Background(), bytes.NewReader(part2Data), api.DefaultBucketName, objPath, mpr.UploadID, 2, api.UploadMultipartUploadPartOptions{ + resp2, err := w.UploadMultipartUploadPart(context.Background(), bytes.NewReader(part2Data), testBucket, objPath, mpr.UploadID, 2, api.UploadMultipartUploadPartOptions{ EncryptionOffset: &offset, }) tt.OK(err) @@ -2464,7 +2464,7 @@ func TestMultipartUploadWrappedByPartialSlabs(t *testing.T) { // upload another part the same size as the first one part1Data := bytes.Repeat([]byte{1}, int(slabSize)/4) offset = 0 - resp1, err := w.UploadMultipartUploadPart(context.Background(), bytes.NewReader(part1Data), api.DefaultBucketName, objPath, mpr.UploadID, 1, api.UploadMultipartUploadPartOptions{ + resp1, err := w.UploadMultipartUploadPart(context.Background(), bytes.NewReader(part1Data), testBucket, objPath, mpr.UploadID, 1, api.UploadMultipartUploadPartOptions{ EncryptionOffset: &offset, }) tt.OK(err) @@ -2475,7 +2475,7 @@ func TestMultipartUploadWrappedByPartialSlabs(t *testing.T) { expectedData = append(expectedData, part3Data...) // finish the upload - tt.OKAll(b.CompleteMultipartUpload(context.Background(), api.DefaultBucketName, objPath, mpr.UploadID, []api.MultipartCompletedPart{ + tt.OKAll(b.CompleteMultipartUpload(context.Background(), testBucket, objPath, mpr.UploadID, []api.MultipartCompletedPart{ { PartNumber: 1, ETag: resp1.ETag, @@ -2492,7 +2492,7 @@ func TestMultipartUploadWrappedByPartialSlabs(t *testing.T) { // download the object and verify its integrity dst := new(bytes.Buffer) - tt.OK(w.DownloadObject(context.Background(), dst, api.DefaultBucketName, objPath, api.DownloadObjectOptions{})) + tt.OK(w.DownloadObject(context.Background(), dst, testBucket, objPath, api.DownloadObjectOptions{})) receivedData := dst.Bytes() if len(receivedData) != len(expectedData) { t.Fatalf("expected %v bytes, got %v", len(expectedData), len(receivedData)) diff --git a/internal/test/e2e/gouging_test.go b/internal/test/e2e/gouging_test.go index be24b7186..a450511bf 100644 --- a/internal/test/e2e/gouging_test.go +++ b/internal/test/e2e/gouging_test.go @@ -57,11 +57,11 @@ func TestGouging(t *testing.T) { // upload the data path := fmt.Sprintf("data_%v", len(data)) - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, path, api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), testBucket, path, api.UploadObjectOptions{})) // download the data var buffer bytes.Buffer - tt.OK(w.DownloadObject(context.Background(), &buffer, api.DefaultBucketName, path, api.DownloadObjectOptions{})) + tt.OK(w.DownloadObject(context.Background(), &buffer, testBucket, path, api.DownloadObjectOptions{})) if !bytes.Equal(data, buffer.Bytes()) { t.Fatal("unexpected data") } @@ -89,7 +89,7 @@ func TestGouging(t *testing.T) { time.Sleep(defaultHostSettings.PriceTableValidity) // upload some data - should fail - tt.FailAll(w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, path, api.UploadObjectOptions{})) + tt.FailAll(w.UploadObject(context.Background(), bytes.NewReader(data), testBucket, path, api.UploadObjectOptions{})) // update all host settings so they're gouging for _, h := range cluster.hosts { @@ -105,7 +105,7 @@ func TestGouging(t *testing.T) { time.Sleep(defaultHostSettings.PriceTableValidity) // download the data - should still work - tt.OKAll(w.DownloadObject(context.Background(), io.Discard, api.DefaultBucketName, path, api.DownloadObjectOptions{})) + tt.OKAll(w.DownloadObject(context.Background(), io.Discard, testBucket, path, api.DownloadObjectOptions{})) // try optimising gouging settings resp, err := cluster.Autopilot.EvaluateConfig(context.Background(), test.AutopilotConfig, gs, test.RedundancySettings) @@ -130,7 +130,7 @@ func TestGouging(t *testing.T) { // upload some data - should work now once contract maintenance is done tt.Retry(30, time.Second, func() error { - _, err := w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, path, api.UploadObjectOptions{}) + _, err := w.UploadObject(context.Background(), bytes.NewReader(data), testBucket, path, api.UploadObjectOptions{}) return err }) } diff --git a/internal/test/e2e/metadata_test.go b/internal/test/e2e/metadata_test.go index cbbabf053..842abd391 100644 --- a/internal/test/e2e/metadata_test.go +++ b/internal/test/e2e/metadata_test.go @@ -34,13 +34,13 @@ func TestObjectMetadata(t *testing.T) { // upload the object data := []byte(t.Name()) - _, err := w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, t.Name(), opts) + _, err := w.UploadObject(context.Background(), bytes.NewReader(data), testBucket, t.Name(), opts) if err != nil { t.Fatal(err) } // get the object from the bus and assert it has the metadata - or, err := b.Object(context.Background(), api.DefaultBucketName, t.Name(), api.GetObjectOptions{}) + or, err := b.Object(context.Background(), testBucket, t.Name(), api.GetObjectOptions{}) if err != nil { t.Fatal(err) } @@ -49,7 +49,7 @@ func TestObjectMetadata(t *testing.T) { } // get the object from the worker and assert it has the metadata - gor, err := w.GetObject(context.Background(), api.DefaultBucketName, t.Name(), api.DownloadObjectOptions{}) + gor, err := w.GetObject(context.Background(), testBucket, t.Name(), api.DownloadObjectOptions{}) if err != nil { t.Fatal(err) } @@ -68,7 +68,7 @@ func TestObjectMetadata(t *testing.T) { } // perform a HEAD request and assert the headers are all present - hor, err := w.HeadObject(context.Background(), api.DefaultBucketName, t.Name(), api.HeadObjectOptions{Range: &api.DownloadRange{Offset: 1, Length: 1}}) + hor, err := w.HeadObject(context.Background(), testBucket, t.Name(), api.HeadObjectOptions{Range: &api.DownloadRange{Offset: 1, Length: 1}}) if err != nil { t.Fatal(err) } else if !reflect.DeepEqual(hor, &api.HeadObjectResponse{ @@ -83,13 +83,13 @@ func TestObjectMetadata(t *testing.T) { } // re-upload the object - _, err = w.UploadObject(context.Background(), bytes.NewReader([]byte(t.Name())), api.DefaultBucketName, t.Name(), api.UploadObjectOptions{}) + _, err = w.UploadObject(context.Background(), bytes.NewReader([]byte(t.Name())), testBucket, t.Name(), api.UploadObjectOptions{}) if err != nil { t.Fatal(err) } // assert metadata was removed - gor, err = w.GetObject(context.Background(), api.DefaultBucketName, t.Name(), api.DownloadObjectOptions{}) + gor, err = w.GetObject(context.Background(), testBucket, t.Name(), api.DownloadObjectOptions{}) if err != nil { t.Fatal(err) } diff --git a/internal/test/e2e/metrics_test.go b/internal/test/e2e/metrics_test.go index fcec2d6c1..b2c8834c7 100644 --- a/internal/test/e2e/metrics_test.go +++ b/internal/test/e2e/metrics_test.go @@ -40,9 +40,9 @@ func TestMetrics(t *testing.T) { // upload, download, delete data := frand.Bytes(rhpv2.SectorSize) - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, "foo", api.UploadObjectOptions{})) - tt.OK(w.DownloadObject(context.Background(), io.Discard, api.DefaultBucketName, "foo", api.DownloadObjectOptions{})) - tt.OK(w.DeleteObject(context.Background(), api.DefaultBucketName, "foo", api.DeleteObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), testBucket, "foo", api.UploadObjectOptions{})) + tt.OK(w.DownloadObject(context.Background(), io.Discard, testBucket, "foo", api.DownloadObjectOptions{})) + tt.OK(w.DeleteObject(context.Background(), testBucket, "foo", api.DeleteObjectOptions{})) tt.Retry(30, time.Second, func() (err error) { defer func() { diff --git a/internal/test/e2e/migrations_test.go b/internal/test/e2e/migrations_test.go index ab03a3339..8e018c284 100644 --- a/internal/test/e2e/migrations_test.go +++ b/internal/test/e2e/migrations_test.go @@ -42,7 +42,7 @@ func TestMigrations(t *testing.T) { // create a helper to fetch used hosts usedHosts := func(key string) map[types.PublicKey]struct{} { - res, _ := b.Object(context.Background(), api.DefaultBucketName, key, api.GetObjectOptions{}) + res, _ := b.Object(context.Background(), testBucket, key, api.GetObjectOptions{}) if res.Object == nil { t.Fatal("object not found") } @@ -58,7 +58,7 @@ func TestMigrations(t *testing.T) { // add an object data := make([]byte, rhpv2.SectorSize) frand.Read(data) - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, t.Name(), api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), testBucket, t.Name(), api.UploadObjectOptions{})) // assert amount of hosts used used := usedHosts(t.Name()) @@ -83,7 +83,7 @@ func TestMigrations(t *testing.T) { } return nil }) - res, err := cluster.Bus.Object(context.Background(), api.DefaultBucketName, t.Name(), api.GetObjectOptions{}) + res, err := cluster.Bus.Object(context.Background(), testBucket, t.Name(), api.GetObjectOptions{}) tt.OK(err) // check slabs @@ -160,8 +160,8 @@ func TestMigrations(t *testing.T) { // assert we found our two objects across two buckets if want := map[string][]string{ - api.DefaultBucketName: {fmt.Sprintf("/%s", t.Name())}, - "newbucket": {fmt.Sprintf("/%s", t.Name())}, + testBucket: {fmt.Sprintf("/%s", t.Name())}, + "newbucket": {fmt.Sprintf("/%s", t.Name())}, }; !reflect.DeepEqual(want, got) { t.Fatal("unexpected", cmp.Diff(want, got)) } diff --git a/internal/test/e2e/pruning_test.go b/internal/test/e2e/pruning_test.go index c612cbe32..ab84b5687 100644 --- a/internal/test/e2e/pruning_test.go +++ b/internal/test/e2e/pruning_test.go @@ -136,7 +136,7 @@ func TestSectorPruning(t *testing.T) { // add several objects for i := 0; i < numObjects; i++ { filename := fmt.Sprintf("obj_%d", i) - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader([]byte(filename)), api.DefaultBucketName, filename, api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader([]byte(filename)), testBucket, filename, api.UploadObjectOptions{})) } // shut down the autopilot to prevent it from interfering @@ -181,7 +181,7 @@ func TestSectorPruning(t *testing.T) { // delete every other object for i := 0; i < numObjects; i += 2 { filename := fmt.Sprintf("obj_%d", i) - tt.OK(b.DeleteObject(context.Background(), api.DefaultBucketName, filename, api.DeleteObjectOptions{})) + tt.OK(b.DeleteObject(context.Background(), testBucket, filename, api.DeleteObjectOptions{})) } // assert amount of prunable data @@ -227,7 +227,7 @@ func TestSectorPruning(t *testing.T) { // delete other object for i := 1; i < numObjects; i += 2 { filename := fmt.Sprintf("obj_%d", i) - tt.OK(b.DeleteObject(context.Background(), api.DefaultBucketName, filename, api.DeleteObjectOptions{})) + tt.OK(b.DeleteObject(context.Background(), testBucket, filename, api.DeleteObjectOptions{})) } // assert amount of prunable data diff --git a/internal/test/e2e/s3_test.go b/internal/test/e2e/s3_test.go index 08e1fd8fa..9338af1be 100644 --- a/internal/test/e2e/s3_test.go +++ b/internal/test/e2e/s3_test.go @@ -40,7 +40,7 @@ func TestS3Basic(t *testing.T) { // delete default bucket before testing. s3 := cluster.S3Aws tt := cluster.tt - if err := cluster.Bus.DeleteBucket(context.Background(), api.DefaultBucketName); err != nil { + if err := cluster.Bus.DeleteBucket(context.Background(), testBucket); err != nil { t.Fatal(err) } @@ -230,7 +230,7 @@ func TestS3ObjectMetadata(t *testing.T) { } // add object to the bucket - _, err := s3.PutObject(context.Background(), api.DefaultBucketName, t.Name(), bytes.NewReader([]byte(t.Name())), int64(len([]byte(t.Name()))), minio.PutObjectOptions{UserMetadata: metadata}) + _, err := s3.PutObject(context.Background(), testBucket, t.Name(), bytes.NewReader([]byte(t.Name())), int64(len([]byte(t.Name()))), minio.PutObjectOptions{UserMetadata: metadata}) tt.OK(err) // create helper to assert metadata is present @@ -244,7 +244,7 @@ func TestS3ObjectMetadata(t *testing.T) { } // perform GET request - obj, err := s3.GetObject(context.Background(), api.DefaultBucketName, t.Name(), minio.GetObjectOptions{}) + obj, err := s3.GetObject(context.Background(), testBucket, t.Name(), minio.GetObjectOptions{}) tt.OK(err) // assert metadata is set @@ -253,7 +253,7 @@ func TestS3ObjectMetadata(t *testing.T) { assertMetadata(metadata, get.UserMetadata) // perform HEAD request - head, err := s3.StatObject(context.Background(), api.DefaultBucketName, t.Name(), minio.StatObjectOptions{}) + head, err := s3.StatObject(context.Background(), testBucket, t.Name(), minio.StatObjectOptions{}) tt.OK(err) assertMetadata(metadata, head.UserMetadata) @@ -261,13 +261,13 @@ func TestS3ObjectMetadata(t *testing.T) { metadata["Baz"] = "updated" _, err = s3.CopyObject( context.Background(), - minio.CopyDestOptions{Bucket: api.DefaultBucketName, Object: t.Name(), UserMetadata: metadata, ReplaceMetadata: true}, - minio.CopySrcOptions{Bucket: api.DefaultBucketName, Object: t.Name()}, + minio.CopyDestOptions{Bucket: testBucket, Object: t.Name(), UserMetadata: metadata, ReplaceMetadata: true}, + minio.CopySrcOptions{Bucket: testBucket, Object: t.Name()}, ) tt.OK(err) // perform HEAD request - head, err = s3.StatObject(context.Background(), api.DefaultBucketName, t.Name(), minio.StatObjectOptions{}) + head, err = s3.StatObject(context.Background(), testBucket, t.Name(), minio.StatObjectOptions{}) tt.OK(err) assertMetadata(metadata, head.UserMetadata) @@ -275,25 +275,25 @@ func TestS3ObjectMetadata(t *testing.T) { metadata["Baz"] = "copied" _, err = s3.CopyObject( context.Background(), - minio.CopyDestOptions{Bucket: api.DefaultBucketName, Object: t.Name() + "copied", UserMetadata: metadata, ReplaceMetadata: true}, - minio.CopySrcOptions{Bucket: api.DefaultBucketName, Object: t.Name()}, + minio.CopyDestOptions{Bucket: testBucket, Object: t.Name() + "copied", UserMetadata: metadata, ReplaceMetadata: true}, + minio.CopySrcOptions{Bucket: testBucket, Object: t.Name()}, ) tt.OK(err) // perform HEAD request - head, err = s3.StatObject(context.Background(), api.DefaultBucketName, t.Name()+"copied", minio.StatObjectOptions{}) + head, err = s3.StatObject(context.Background(), testBucket, t.Name()+"copied", minio.StatObjectOptions{}) tt.OK(err) assertMetadata(metadata, head.UserMetadata) // assert the original object's metadata is unchanged metadata["Baz"] = "updated" - head, err = s3.StatObject(context.Background(), api.DefaultBucketName, t.Name(), minio.StatObjectOptions{}) + head, err = s3.StatObject(context.Background(), testBucket, t.Name(), minio.StatObjectOptions{}) tt.OK(err) assertMetadata(metadata, head.UserMetadata) // upload a file using multipart upload core := cluster.S3Core - uid, err := core.NewMultipartUpload(context.Background(), api.DefaultBucketName, "multi", minio.PutObjectOptions{ + uid, err := core.NewMultipartUpload(context.Background(), testBucket, "multi", minio.PutObjectOptions{ UserMetadata: map[string]string{ "New": "1", }, @@ -301,9 +301,9 @@ func TestS3ObjectMetadata(t *testing.T) { tt.OK(err) data := frand.Bytes(3) - part, err := core.PutObjectPart(context.Background(), api.DefaultBucketName, "foo", uid, 1, bytes.NewReader(data), int64(len(data)), minio.PutObjectPartOptions{}) + part, err := core.PutObjectPart(context.Background(), testBucket, "foo", uid, 1, bytes.NewReader(data), int64(len(data)), minio.PutObjectPartOptions{}) tt.OK(err) - _, err = core.CompleteMultipartUpload(context.Background(), api.DefaultBucketName, "multi", uid, []minio.CompletePart{ + _, err = core.CompleteMultipartUpload(context.Background(), testBucket, "multi", uid, []minio.CompletePart{ { PartNumber: part.PartNumber, ETag: part.ETag, @@ -316,7 +316,7 @@ func TestS3ObjectMetadata(t *testing.T) { tt.OK(err) // check metadata - head, err = s3.StatObject(context.Background(), api.DefaultBucketName, "multi", minio.StatObjectOptions{}) + head, err = s3.StatObject(context.Background(), testBucket, "multi", minio.StatObjectOptions{}) tt.OK(err) assertMetadata(map[string]string{ "New": "1", @@ -335,7 +335,7 @@ func TestS3Authentication(t *testing.T) { assertAuth := func(c *minio.Core, shouldWork bool) { t.Helper() - _, err := c.ListObjectsV2(api.DefaultBucketName, "/", "", "", "", 100) + _, err := c.ListObjectsV2(testBucket, "/", "", "", "", 100) if shouldWork && err != nil { t.Fatal(err) } else if !shouldWork && err == nil { @@ -365,12 +365,12 @@ func TestS3Authentication(t *testing.T) { assertAuth(s3Authenticated, true) // Update the policy of the bucket to allow public read access. - tt.OK(cluster.Bus.UpdateBucketPolicy(context.Background(), api.DefaultBucketName, api.BucketPolicy{ + tt.OK(cluster.Bus.UpdateBucketPolicy(context.Background(), testBucket, api.BucketPolicy{ PublicReadAccess: true, })) // Check that the policy was updated. - b, err := cluster.Bus.Bucket(context.Background(), api.DefaultBucketName) + b, err := cluster.Bus.Bucket(context.Background(), testBucket) tt.OK(err) if b.Policy.PublicReadAccess != true { t.Fatal("expected public read access") @@ -380,12 +380,12 @@ func TestS3Authentication(t *testing.T) { assertAuth(s3Unauthenticated, true) // Update the policy again to disable access. - tt.OK(cluster.Bus.UpdateBucketPolicy(context.Background(), api.DefaultBucketName, api.BucketPolicy{ + tt.OK(cluster.Bus.UpdateBucketPolicy(context.Background(), testBucket, api.BucketPolicy{ PublicReadAccess: false, })) // Check that the policy was updated. - b, err = cluster.Bus.Bucket(context.Background(), api.DefaultBucketName) + b, err = cluster.Bus.Bucket(context.Background(), testBucket) tt.OK(err) if b.Policy.PublicReadAccess == true { t.Fatal("expected no public read access") @@ -576,7 +576,7 @@ func TestS3MultipartUploads(t *testing.T) { // Start another one in the default bucket. This should not show up when // listing the uploads in the 'multipart' bucket. - tt.OKAll(core.NewMultipartUpload(context.Background(), api.DefaultBucketName, "foo", minio.PutObjectOptions{})) + tt.OKAll(core.NewMultipartUpload(context.Background(), testBucket, "foo", minio.PutObjectOptions{})) // List uploads lmu, err := core.ListMultipartUploads(context.Background(), "multipart", "", "", "", "", 0) @@ -589,7 +589,7 @@ func TestS3MultipartUploads(t *testing.T) { // delete default bucket for the remainder of the test. This makes sure we // can delete the bucket even though it contains a multipart upload. - tt.OK(cluster.Bus.DeleteBucket(context.Background(), api.DefaultBucketName)) + tt.OK(cluster.Bus.DeleteBucket(context.Background(), testBucket)) // Add 3 parts out of order to make sure the object is reconstructed // correctly. @@ -714,7 +714,7 @@ func TestS3MultipartPruneSlabs(t *testing.T) { tt := cluster.tt // delete default bucket before testing. - tt.OK(cluster.Bus.DeleteBucket(context.Background(), api.DefaultBucketName)) + tt.OK(cluster.Bus.DeleteBucket(context.Background(), testBucket)) // Create bucket. tt.OK(s3.MakeBucket(context.Background(), bucket, minio.MakeBucketOptions{})) @@ -767,13 +767,13 @@ func TestS3SpecialChars(t *testing.T) { // manually create the 'a/' object as a directory. It should also be // possible to call StatObject on it without errors. objectKey := "foo/höst (1).log" - tt.OKAll(s3.PutObject(context.Background(), api.DefaultBucketName, objectKey, bytes.NewReader([]byte("bar")), 0, minio.PutObjectOptions{})) - so, err := s3.StatObject(context.Background(), api.DefaultBucketName, objectKey, minio.StatObjectOptions{}) + tt.OKAll(s3.PutObject(context.Background(), testBucket, objectKey, bytes.NewReader([]byte("bar")), 0, minio.PutObjectOptions{})) + so, err := s3.StatObject(context.Background(), testBucket, objectKey, minio.StatObjectOptions{}) tt.OK(err) if so.Key != objectKey { t.Fatal("unexpected key:", so.Key) } - for res := range s3.ListObjects(context.Background(), api.DefaultBucketName, minio.ListObjectsOptions{Prefix: "foo/"}) { + for res := range s3.ListObjects(context.Background(), testBucket, minio.ListObjectsOptions{Prefix: "foo/"}) { tt.OK(res.Err) if res.Key != objectKey { t.Fatal("unexpected key:", res.Key) @@ -781,12 +781,12 @@ func TestS3SpecialChars(t *testing.T) { } // delete it and verify its gone. - tt.OK(s3.RemoveObject(context.Background(), api.DefaultBucketName, objectKey, minio.RemoveObjectOptions{})) - so, err = s3.StatObject(context.Background(), api.DefaultBucketName, objectKey, minio.StatObjectOptions{}) + tt.OK(s3.RemoveObject(context.Background(), testBucket, objectKey, minio.RemoveObjectOptions{})) + so, err = s3.StatObject(context.Background(), testBucket, objectKey, minio.StatObjectOptions{}) if err == nil { t.Fatal("shouldn't exist", err) } - for res := range s3.ListObjects(context.Background(), api.DefaultBucketName, minio.ListObjectsOptions{Prefix: "foo/"}) { + for res := range s3.ListObjects(context.Background(), testBucket, minio.ListObjectsOptions{Prefix: "foo/"}) { tt.OK(res.Err) if res.Key == objectKey { t.Fatal("unexpected key:", res.Key) diff --git a/internal/test/e2e/uploads_test.go b/internal/test/e2e/uploads_test.go index c601becd6..360bf1866 100644 --- a/internal/test/e2e/uploads_test.go +++ b/internal/test/e2e/uploads_test.go @@ -65,7 +65,7 @@ func TestUploadingSectorsCache(t *testing.T) { // upload an object using our custom reader br := newBlockedReader(data) go func() { - _, err := w.UploadObject(context.Background(), br, api.DefaultBucketName, t.Name(), api.UploadObjectOptions{}) + _, err := w.UploadObject(context.Background(), br, testBucket, t.Name(), api.UploadObjectOptions{}) if err != nil { t.Error(err) } diff --git a/stores/metadata_test.go b/stores/metadata_test.go index 0195b264f..c98686c83 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -26,6 +26,8 @@ import ( "lukechampine.com/frand" ) +const testBucket = "testbucket" + func (s *testSQLStore) InsertSlab(slab object.Slab) { s.t.Helper() obj := object.Object{ @@ -36,7 +38,7 @@ func (s *testSQLStore) InsertSlab(slab object.Slab) { }, }, } - err := s.UpdateObject(context.Background(), api.DefaultBucketName, hex.EncodeToString(frand.Bytes(16)), testContractSet, "", "", api.ObjectUserMetadata{}, obj) + err := s.UpdateObject(context.Background(), testBucket, hex.EncodeToString(frand.Bytes(16)), testContractSet, "", "", api.ObjectUserMetadata{}, obj) if err != nil { s.t.Fatal(err) } @@ -176,10 +178,10 @@ func TestPrunableContractRoots(t *testing.T) { } // delete every other object - if err := ss.RemoveObjectBlocking(context.Background(), api.DefaultBucketName, fmt.Sprintf("%s_1", t.Name())); err != nil { + if err := ss.RemoveObjectBlocking(context.Background(), testBucket, fmt.Sprintf("%s_1", t.Name())); err != nil { t.Fatal(err) } - if err := ss.RemoveObjectBlocking(context.Background(), api.DefaultBucketName, fmt.Sprintf("%s_3", t.Name())); err != nil { + if err := ss.RemoveObjectBlocking(context.Background(), testBucket, fmt.Sprintf("%s_3", t.Name())); err != nil { t.Fatal(err) } @@ -265,7 +267,7 @@ func TestObjectBasic(t *testing.T) { } // fetch the object again and assert we receive an indication it was corrupted - _, err = ss.Object(context.Background(), api.DefaultBucketName, t.Name()) + _, err = ss.Object(context.Background(), testBucket, t.Name()) if !errors.Is(err, api.ErrObjectCorrupted) { t.Fatal("unexpected err", err) } @@ -353,7 +355,7 @@ func TestObjectMetadata(t *testing.T) { } // remove the object - if err := ss.RemoveObjectBlocking(context.Background(), api.DefaultBucketName, t.Name()); err != nil { + if err := ss.RemoveObjectBlocking(context.Background(), testBucket, t.Name()); err != nil { t.Fatal(err) } @@ -1108,7 +1110,7 @@ func TestSQLMetadataStore(t *testing.T) { } // Fetch it using get and verify every field. - obj, err := ss.Object(context.Background(), api.DefaultBucketName, objID) + obj, err := ss.Object(context.Background(), testBucket, objID) if err != nil { t.Fatal(err) } @@ -1184,7 +1186,7 @@ func TestSQLMetadataStore(t *testing.T) { } // Fetch it again and verify. - obj, err = ss.Object(context.Background(), api.DefaultBucketName, objID) + obj, err = ss.Object(context.Background(), testBucket, objID) if err != nil { t.Fatal(err) } @@ -1201,7 +1203,7 @@ func TestSQLMetadataStore(t *testing.T) { } // Fetch it and verify again. - fullObj, err := ss.Object(ctx, api.DefaultBucketName, objID) + fullObj, err := ss.Object(ctx, testBucket, objID) if err != nil { t.Fatal(err) } @@ -1359,7 +1361,7 @@ func TestSQLMetadataStore(t *testing.T) { // Delete the object. Due to the cascade this should delete everything // but the sectors. - if err := ss.RemoveObjectBlocking(ctx, api.DefaultBucketName, objID); err != nil { + if err := ss.RemoveObjectBlocking(ctx, testBucket, objID); err != nil { t.Fatal(err) } if err := countCheck(0, 0, 0, 0); err != nil { @@ -1430,7 +1432,7 @@ func TestObjectHealth(t *testing.T) { } // assert health - obj, err := ss.Object(context.Background(), api.DefaultBucketName, "/foo") + obj, err := ss.Object(context.Background(), testBucket, "/foo") if err != nil { t.Fatal(err) } else if obj.Health != 1 { @@ -1447,7 +1449,7 @@ func TestObjectHealth(t *testing.T) { expectedHealth := float64(2) / float64(3) // assert object method - obj, err = ss.Object(context.Background(), api.DefaultBucketName, "/foo") + obj, err = ss.Object(context.Background(), testBucket, "/foo") if err != nil { t.Fatal(err) } else if obj.Health != expectedHealth { @@ -1455,7 +1457,7 @@ func TestObjectHealth(t *testing.T) { } // assert health is returned correctly by ObjectEntries - resp, err := ss.ListObjects(context.Background(), api.DefaultBucketName, "/", "", "", "", "", "", -1) + resp, err := ss.ListObjects(context.Background(), testBucket, "/", "", "", "", "", "", -1) entries := resp.Objects if err != nil { t.Fatal(err) @@ -1466,7 +1468,7 @@ func TestObjectHealth(t *testing.T) { } // assert health is returned correctly by SearchObject - resp, err = ss.ListObjects(context.Background(), api.DefaultBucketName, "/", "foo", "", "", "", "", -1) + resp, err = ss.ListObjects(context.Background(), testBucket, "/", "foo", "", "", "", "", -1) if err != nil { t.Fatal(err) } else if entries := resp.Objects; len(entries) != 1 { @@ -1485,7 +1487,7 @@ func TestObjectHealth(t *testing.T) { expectedHealth = float64(1) / float64(3) // assert health is the min. health of the slabs - obj, err = ss.Object(context.Background(), api.DefaultBucketName, "/foo") + obj, err = ss.Object(context.Background(), testBucket, "/foo") if err != nil { t.Fatal(err) } else if obj.Health != expectedHealth { @@ -1608,7 +1610,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { {"/", "", "size", "ASC", []api.ObjectMetadata{{Key: "/gab/", Size: 5, Health: 1}, {Key: "/fileÅ›/", Size: 6, Health: 1}, {Key: "/FOO/", Size: 7, Health: 1}, {Key: "/foo/", Size: 10, Health: .5}}}, } for _, test := range tests { - resp, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, "", -1) + resp, err := ss.ListObjects(ctx, testBucket, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, "", -1) if err != nil { t.Fatal(err) } @@ -1621,7 +1623,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { var marker string for offset := 0; offset < len(test.want); offset++ { - resp, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, marker, 1) + resp, err := ss.ListObjects(ctx, testBucket, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, marker, 1) if err != nil { t.Fatal(err) } @@ -1643,7 +1645,7 @@ func TestListObjectsWithDelimiterSlash(t *testing.T) { continue } - resp, err = ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, test.want[offset].Key, 1) + resp, err = ss.ListObjects(ctx, testBucket, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, test.want[offset].Key, 1) if err != nil { t.Fatal(err) } @@ -1710,7 +1712,7 @@ func TestListObjectsExplicitDir(t *testing.T) { {"/dir/", "", "", "", []api.ObjectMetadata{{ETag: "d34db33f", Key: "/dir/file", Size: 1, Health: 0.5, MimeType: testMimeType}}}, } for _, test := range tests { - got, err := ss.ListObjects(ctx, api.DefaultBucketName, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, "", -1) + got, err := ss.ListObjects(ctx, testBucket, test.path+test.prefix, "", "/", test.sortBy, test.sortDir, "", -1) if err != nil { t.Fatal(err) } @@ -1778,7 +1780,7 @@ func TestListObjectsSubstring(t *testing.T) { {"uu", []api.ObjectMetadata{{Key: "/foo/baz/quux", Size: 3, Health: 1}, {Key: "/foo/baz/quuz", Size: 4, Health: 1}, {Key: "/gab/guub", Size: 5, Health: 1}}}, } for _, test := range tests { - resp, err := ss.ListObjects(ctx, api.DefaultBucketName, "", test.key, "", "", "", "", -1) + resp, err := ss.ListObjects(ctx, testBucket, "", test.key, "", "", "", "", -1) if err != nil { t.Fatal(err) } @@ -1786,7 +1788,7 @@ func TestListObjectsSubstring(t *testing.T) { assertEqual(got, test.want) var marker string for offset := 0; offset < len(test.want); offset++ { - if resp, err := ss.ListObjects(ctx, api.DefaultBucketName, "", test.key, "", "", "", marker, 1); err != nil { + if resp, err := ss.ListObjects(ctx, testBucket, "", test.key, "", "", "", marker, 1); err != nil { t.Fatal(err) } else if got := resp.Objects; len(got) != 1 { t.Errorf("\nkey: %v unexpected number of objects, %d != 1", test.key, len(got)) @@ -2241,7 +2243,7 @@ func TestContractSectors(t *testing.T) { } // Delete the object. - if err := ss.RemoveObjectBlocking(context.Background(), api.DefaultBucketName, t.Name()); err != nil { + if err := ss.RemoveObjectBlocking(context.Background(), testBucket, t.Name()); err != nil { t.Fatal(err) } @@ -2412,7 +2414,7 @@ func TestUpdateSlab(t *testing.T) { t.Fatal("unexpected number of slabs to migrate", len(toMigrate)) } - if obj, err := ss.Object(context.Background(), api.DefaultBucketName, t.Name()); err != nil { + if obj, err := ss.Object(context.Background(), testBucket, t.Name()); err != nil { t.Fatal(err) } else if len(obj.Slabs) != 1 { t.Fatalf("unexpected number of slabs, %v != 1", len(obj.Slabs)) @@ -2577,37 +2579,37 @@ func TestRenameObjects(t *testing.T) { } // Try renaming objects that don't exist. - if err := ss.RenameObjectBlocking(ctx, api.DefaultBucketName, "/fileÅ›", "/fileÅ›2", false); !errors.Is(err, api.ErrObjectNotFound) { + if err := ss.RenameObjectBlocking(ctx, testBucket, "/fileÅ›", "/fileÅ›2", false); !errors.Is(err, api.ErrObjectNotFound) { t.Fatal(err) } - if err := ss.RenameObjectsBlocking(ctx, api.DefaultBucketName, "/fileÅ›1", "/fileÅ›2", false); !errors.Is(err, api.ErrObjectNotFound) { + if err := ss.RenameObjectsBlocking(ctx, testBucket, "/fileÅ›1", "/fileÅ›2", false); !errors.Is(err, api.ErrObjectNotFound) { t.Fatal(err) } // Perform some renames. - if err := ss.RenameObjectsBlocking(ctx, api.DefaultBucketName, "/fileÅ›/dir/", "/fileÅ›/", false); err != nil { + if err := ss.RenameObjectsBlocking(ctx, testBucket, "/fileÅ›/dir/", "/fileÅ›/", false); err != nil { t.Fatal(err) } - if err := ss.RenameObjectBlocking(ctx, api.DefaultBucketName, "/foo", "/fileÅ›/foo", false); err != nil { + if err := ss.RenameObjectBlocking(ctx, testBucket, "/foo", "/fileÅ›/foo", false); err != nil { t.Fatal(err) } - if err := ss.RenameObjectBlocking(ctx, api.DefaultBucketName, "/bar", "/fileÅ›/bar", false); err != nil { + if err := ss.RenameObjectBlocking(ctx, testBucket, "/bar", "/fileÅ›/bar", false); err != nil { t.Fatal(err) } - if err := ss.RenameObjectBlocking(ctx, api.DefaultBucketName, "/baz", "/fileÅ›/baz", false); err != nil { + if err := ss.RenameObjectBlocking(ctx, testBucket, "/baz", "/fileÅ›/baz", false); err != nil { t.Fatal(err) } - if err := ss.RenameObjectsBlocking(ctx, api.DefaultBucketName, "/fileÅ›/case", "/fileÅ›/case1", false); err != nil { + if err := ss.RenameObjectsBlocking(ctx, testBucket, "/fileÅ›/case", "/fileÅ›/case1", false); err != nil { t.Fatal(err) } - if err := ss.RenameObjectsBlocking(ctx, api.DefaultBucketName, "/fileÅ›/CASE", "/fileÅ›/case2", false); err != nil { + if err := ss.RenameObjectsBlocking(ctx, testBucket, "/fileÅ›/CASE", "/fileÅ›/case2", false); err != nil { t.Fatal(err) } - if err := ss.RenameObjectsBlocking(ctx, api.DefaultBucketName, "/baz2", "/fileÅ›/baz", false); !errors.Is(err, api.ErrObjectExists) { + if err := ss.RenameObjectsBlocking(ctx, testBucket, "/baz2", "/fileÅ›/baz", false); !errors.Is(err, api.ErrObjectExists) { t.Fatal(err) - } else if err := ss.RenameObjectsBlocking(ctx, api.DefaultBucketName, "/baz2", "/fileÅ›/baz", true); err != nil { + } else if err := ss.RenameObjectsBlocking(ctx, testBucket, "/baz2", "/fileÅ›/baz", true); err != nil { t.Fatal(err) - } else if err := ss.RenameObjectBlocking(ctx, api.DefaultBucketName, "/baz3", "/fileÅ›/baz", true); err != nil { + } else if err := ss.RenameObjectBlocking(ctx, testBucket, "/baz3", "/fileÅ›/baz", true); err != nil { t.Fatal(err) } @@ -2631,7 +2633,7 @@ func TestRenameObjects(t *testing.T) { } // Assert that number of objects matches. - resp, err := ss.ListObjects(ctx, api.DefaultBucketName, "", "/", "", "", "", "", 100) + resp, err := ss.ListObjects(ctx, testBucket, "", "/", "", "", "", "", 100) if err != nil { t.Fatal(err) } @@ -2772,8 +2774,8 @@ func TestObjectsStats(t *testing.T) { // Check sizes. for _, opts := range []api.ObjectsStatsOpts{ - {}, // any bucket - {Bucket: api.DefaultBucketName}, // specific bucket + {}, // any bucket + {Bucket: testBucket}, // specific bucket } { info, err = ss.ObjectsStats(context.Background(), opts) if err != nil { @@ -3207,7 +3209,7 @@ func TestContractSizes(t *testing.T) { } // remove the first object - if err := ss.RemoveObjectBlocking(context.Background(), api.DefaultBucketName, "obj_1"); err != nil { + if err := ss.RemoveObjectBlocking(context.Background(), testBucket, "obj_1"); err != nil { t.Fatal(err) } @@ -3219,7 +3221,7 @@ func TestContractSizes(t *testing.T) { } // remove the second object - if err := ss.RemoveObjectBlocking(context.Background(), api.DefaultBucketName, "obj_2"); err != nil { + if err := ss.RemoveObjectBlocking(context.Background(), testBucket, "obj_2"); err != nil { t.Fatal(err) } @@ -3300,7 +3302,7 @@ func TestObjectsBySlabKey(t *testing.T) { } // Fetch the objects by slab. - objs, err := ss.ObjectsBySlabKey(context.Background(), api.DefaultBucketName, slab.EncryptionKey) + objs, err := ss.ObjectsBySlabKey(context.Background(), testBucket, slab.EncryptionKey) if err != nil { t.Fatal(err) } @@ -3327,7 +3329,7 @@ func TestBuckets(t *testing.T) { t.Fatal(err) } else if len(buckets) != 1 { t.Fatal("expected 1 bucket", len(buckets)) - } else if buckets[0].Name != api.DefaultBucketName { + } else if buckets[0].Name != testBucket { t.Fatal("expected default bucket") } @@ -3338,7 +3340,7 @@ func TestBuckets(t *testing.T) { t.Fatal(err) } else if err := ss.CreateBucket(context.Background(), b2, api.BucketPolicy{}); err != nil { t.Fatal(err) - } else if err := ss.DeleteBucket(context.Background(), api.DefaultBucketName); err != nil { + } else if err := ss.DeleteBucket(context.Background(), testBucket); err != nil { t.Fatal(err) } else if buckets, err := ss.ListBuckets(context.Background()); err != nil { t.Fatal(err) @@ -3721,7 +3723,7 @@ func TestListObjectsNoDelimiter(t *testing.T) { } } for _, test := range tests { - res, err := ss.ListObjects(ctx, api.DefaultBucketName, test.prefix, "", "", test.sortBy, test.sortDir, "", -1) + res, err := ss.ListObjects(ctx, testBucket, test.prefix, "", "", test.sortBy, test.sortDir, "", -1) if err != nil { t.Fatal(err) } @@ -3736,7 +3738,7 @@ func TestListObjectsNoDelimiter(t *testing.T) { if len(res.Objects) > 0 { marker := "" for offset := 0; offset < len(test.want); offset++ { - res, err := ss.ListObjects(ctx, api.DefaultBucketName, test.prefix, "", "", test.sortBy, test.sortDir, marker, 1) + res, err := ss.ListObjects(ctx, testBucket, test.prefix, "", "", test.sortBy, test.sortDir, marker, 1) if err != nil { t.Fatal(err) } @@ -4048,7 +4050,7 @@ func TestSlabHealthInvalidation(t *testing.T) { // prepare a slab with pieces on h3 and h4 s2 := object.GenerateEncryptionKey() - err = ss.UpdateObject(context.Background(), api.DefaultBucketName, "o2", testContractSet, testETag, testMimeType, testMetadata, object.Object{ + err = ss.UpdateObject(context.Background(), testBucket, "o2", testContractSet, testETag, testMimeType, testMetadata, object.Object{ Key: object.GenerateEncryptionKey(), Slabs: []object.SlabSlice{{Slab: object.Slab{ EncryptionKey: s2, @@ -4153,7 +4155,7 @@ func TestRefreshHealth(t *testing.T) { // define a helper function to return an object's health health := func(name string) float64 { t.Helper() - o, err := ss.Object(context.Background(), api.DefaultBucketName, name) + o, err := ss.Object(context.Background(), testBucket, name) if err != nil { t.Fatal(err) } @@ -4334,7 +4336,7 @@ func TestSlabCleanup(t *testing.T) { } // delete the object - err = ss.RemoveObjectBlocking(context.Background(), api.DefaultBucketName, "1") + err = ss.RemoveObjectBlocking(context.Background(), testBucket, "1") if err != nil { t.Fatal(err) } @@ -4345,7 +4347,7 @@ func TestSlabCleanup(t *testing.T) { } // delete second object - err = ss.RemoveObjectBlocking(context.Background(), api.DefaultBucketName, "2") + err = ss.RemoveObjectBlocking(context.Background(), testBucket, "2") if err != nil { t.Fatal(err) } else if slabCntr := ss.Count("slabs"); slabCntr != 0 { @@ -4373,7 +4375,7 @@ func TestSlabCleanup(t *testing.T) { } // delete third object - err = ss.RemoveObjectBlocking(context.Background(), api.DefaultBucketName, "3") + err = ss.RemoveObjectBlocking(context.Background(), testBucket, "3") if err != nil { t.Fatal(err) } else if slabCntr := ss.Count("slabs"); slabCntr != 1 { @@ -4788,7 +4790,7 @@ func TestUpdateObjectParallel(t *testing.T) { } // update the object - if err := ss.UpdateObject(context.Background(), api.DefaultBucketName, name, testContractSet, testETag, testMimeType, testMetadata, obj); err != nil { + if err := ss.UpdateObject(context.Background(), testBucket, name, testContractSet, testETag, testMimeType, testMetadata, obj); err != nil { t.Error(err) return } diff --git a/stores/multipart_test.go b/stores/multipart_test.go index 52dddb050..085dc41b1 100644 --- a/stores/multipart_test.go +++ b/stores/multipart_test.go @@ -50,7 +50,7 @@ func TestMultipartUploadWithUploadPackingRegression(t *testing.T) { totalSize := int64(nParts * partSize) // Upload parts until we have enough data for 2 buffers. - resp, err := ss.CreateMultipartUpload(ctx, api.DefaultBucketName, objName, object.NoOpKey, testMimeType, testMetadata) + resp, err := ss.CreateMultipartUpload(ctx, testBucket, objName, object.NoOpKey, testMimeType, testMetadata) if err != nil { t.Fatal(err) } @@ -61,7 +61,7 @@ func TestMultipartUploadWithUploadPackingRegression(t *testing.T) { t.Fatal(err) } etag := hex.EncodeToString(frand.Bytes(16)) - err = ss.AddMultipartPart(ctx, api.DefaultBucketName, objName, testContractSet, etag, resp.UploadID, i, partialSlabs) + err = ss.AddMultipartPart(ctx, testBucket, objName, testContractSet, etag, resp.UploadID, i, partialSlabs) if err != nil { t.Fatal(err) } @@ -105,14 +105,14 @@ func TestMultipartUploadWithUploadPackingRegression(t *testing.T) { // Complete the upload. Check that the number of slices stays the same. if nSlicesBefore := ss.Count("slices"); nSlicesBefore == 0 { t.Fatal("expected some slices") - } else if _, err = ss.CompleteMultipartUpload(ctx, api.DefaultBucketName, objName, resp.UploadID, parts, api.CompleteMultipartOptions{}); err != nil { + } else if _, err = ss.CompleteMultipartUpload(ctx, testBucket, objName, resp.UploadID, parts, api.CompleteMultipartOptions{}); err != nil { t.Fatal(err) } else if nSlicesAfter := ss.Count("slices"); nSlicesAfter != nSlicesBefore { t.Fatalf("expected number of slices to stay the same, but got %v before and %v after", nSlicesBefore, nSlicesAfter) } // Fetch the object. - obj, err := ss.Object(ctx, api.DefaultBucketName, objName) + obj, err := ss.Object(ctx, testBucket, objName) if err != nil { t.Fatal(err) } else if obj.Size != int64(totalSize) { @@ -169,7 +169,7 @@ func TestMultipartUploadWithUploadPackingRegression(t *testing.T) { } // Fetch the object again. - obj, err = ss.Object(ctx, api.DefaultBucketName, objName) + obj, err = ss.Object(ctx, testBucket, objName) if err != nil { t.Fatal(err) } else if obj.Size != int64(totalSize) { @@ -190,15 +190,15 @@ func TestMultipartUploads(t *testing.T) { defer ss.Close() // create 3 multipart uploads, the first 2 have the same path - resp1, err := ss.CreateMultipartUpload(context.Background(), api.DefaultBucketName, "/foo", object.NoOpKey, testMimeType, testMetadata) + resp1, err := ss.CreateMultipartUpload(context.Background(), testBucket, "/foo", object.NoOpKey, testMimeType, testMetadata) if err != nil { t.Fatal(err) } - resp2, err := ss.CreateMultipartUpload(context.Background(), api.DefaultBucketName, "/foo", object.NoOpKey, testMimeType, testMetadata) + resp2, err := ss.CreateMultipartUpload(context.Background(), testBucket, "/foo", object.NoOpKey, testMimeType, testMetadata) if err != nil { t.Fatal(err) } - resp3, err := ss.CreateMultipartUpload(context.Background(), api.DefaultBucketName, "/foo2", object.NoOpKey, testMimeType, testMetadata) + resp3, err := ss.CreateMultipartUpload(context.Background(), testBucket, "/foo2", object.NoOpKey, testMimeType, testMetadata) if err != nil { t.Fatal(err) } @@ -220,7 +220,7 @@ func TestMultipartUploads(t *testing.T) { }) // fetch uploads - mur, err := ss.MultipartUploads(context.Background(), api.DefaultBucketName, "", "", "", 3) + mur, err := ss.MultipartUploads(context.Background(), testBucket, "", "", "", 3) if err != nil { t.Fatal(err) } else if len(mur.Uploads) != 3 { @@ -234,7 +234,7 @@ func TestMultipartUploads(t *testing.T) { } // fetch uploads with prefix - mur, err = ss.MultipartUploads(context.Background(), api.DefaultBucketName, "/foo", "", "", 3) + mur, err = ss.MultipartUploads(context.Background(), testBucket, "/foo", "", "", 3) if err != nil { t.Fatal(err) } else if len(mur.Uploads) != 3 { @@ -246,7 +246,7 @@ func TestMultipartUploads(t *testing.T) { } else if mur.Uploads[2].UploadID != orderedUploads[2].uploadID { t.Fatal("unexpected upload id") } - mur, err = ss.MultipartUploads(context.Background(), api.DefaultBucketName, "/foo2", "", "", 3) + mur, err = ss.MultipartUploads(context.Background(), testBucket, "/foo2", "", "", 3) if err != nil { t.Fatal(err) } else if len(mur.Uploads) != 1 { @@ -260,7 +260,7 @@ func TestMultipartUploads(t *testing.T) { uploadIDMarker := "" hasMore := true for hasMore { - mur, err = ss.MultipartUploads(context.Background(), api.DefaultBucketName, "", keyMarker, uploadIDMarker, 1) + mur, err = ss.MultipartUploads(context.Background(), testBucket, "", keyMarker, uploadIDMarker, 1) if err != nil { t.Fatal(err) } else if len(mur.Uploads) != 1 { @@ -286,32 +286,32 @@ func TestMultipartUploadEmptyObjects(t *testing.T) { defer ss.Close() // create 2 multipart parts - resp1, err := ss.CreateMultipartUpload(context.Background(), api.DefaultBucketName, "/foo1", object.NoOpKey, testMimeType, testMetadata) + resp1, err := ss.CreateMultipartUpload(context.Background(), testBucket, "/foo1", object.NoOpKey, testMimeType, testMetadata) if err != nil { t.Fatal(err) } - resp2, err := ss.CreateMultipartUpload(context.Background(), api.DefaultBucketName, "/foo2", object.NoOpKey, testMimeType, testMetadata) + resp2, err := ss.CreateMultipartUpload(context.Background(), testBucket, "/foo2", object.NoOpKey, testMimeType, testMetadata) if err != nil { t.Fatal(err) } // complete uploads in reverse order - cmu1, err := ss.CompleteMultipartUpload(context.Background(), api.DefaultBucketName, "/foo2", resp2.UploadID, []api.MultipartCompletedPart{}, api.CompleteMultipartOptions{}) + cmu1, err := ss.CompleteMultipartUpload(context.Background(), testBucket, "/foo2", resp2.UploadID, []api.MultipartCompletedPart{}, api.CompleteMultipartOptions{}) if err != nil { t.Fatal(err) } - cmu2, err := ss.CompleteMultipartUpload(context.Background(), api.DefaultBucketName, "/foo1", resp1.UploadID, []api.MultipartCompletedPart{}, api.CompleteMultipartOptions{}) + cmu2, err := ss.CompleteMultipartUpload(context.Background(), testBucket, "/foo1", resp1.UploadID, []api.MultipartCompletedPart{}, api.CompleteMultipartOptions{}) if err != nil { t.Fatal(err) } - foo1, err := ss.ObjectMetadata(context.Background(), api.DefaultBucketName, "/foo1") + foo1, err := ss.ObjectMetadata(context.Background(), testBucket, "/foo1") if err != nil { t.Fatal(err) } else if foo1.ETag != cmu1.ETag { t.Fatal("unexpected etag") } - foo2, err := ss.ObjectMetadata(context.Background(), api.DefaultBucketName, "/foo2") + foo2, err := ss.ObjectMetadata(context.Background(), testBucket, "/foo2") if err != nil { t.Fatal(err) } else if foo2.ETag != cmu2.ETag { diff --git a/stores/sql_test.go b/stores/sql_test.go index 4269f1ab3..526500d4c 100644 --- a/stores/sql_test.go +++ b/stores/sql_test.go @@ -253,7 +253,7 @@ func (s *testSQLStore) Close() error { } func (s *testSQLStore) DefaultBucketID() (id int64) { - if err := s.DB().QueryRow(context.Background(), "SELECT id FROM buckets WHERE name = ?", api.DefaultBucketName). + if err := s.DB().QueryRow(context.Background(), "SELECT id FROM buckets WHERE name = ?", testBucket). Scan(&id); err != nil { s.t.Fatal(err) } @@ -283,9 +283,9 @@ func (s *testSQLStore) Retry(tries int, durationBetweenAttempts time.Duration, f } func (s *testSQLStore) addTestObject(key string, o object.Object) (api.Object, error) { - if err := s.UpdateObjectBlocking(context.Background(), api.DefaultBucketName, key, testContractSet, testETag, testMimeType, testMetadata, o); err != nil { + if err := s.UpdateObjectBlocking(context.Background(), testBucket, key, testContractSet, testETag, testMimeType, testMetadata, o); err != nil { return api.Object{}, err - } else if obj, err := s.Object(context.Background(), api.DefaultBucketName, key); err != nil { + } else if obj, err := s.Object(context.Background(), testBucket, key); err != nil { return api.Object{}, err } else { return obj, nil diff --git a/worker/worker.go b/worker/worker.go index 3fffec52d..55e9af754 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -479,9 +479,12 @@ func (w *Worker) uploadsStatsHandlerGET(jc jape.Context) { func (w *Worker) objectsHandlerHEAD(jc jape.Context) { // parse bucket - bucket := api.DefaultBucketName + var bucket string if jc.DecodeForm("bucket", &bucket) != nil { return + } else if bucket == "" { + jc.Error(api.ErrBucketMissing, http.StatusBadRequest) + return } // parse key @@ -532,10 +535,14 @@ func (w *Worker) objectsHandlerGET(jc jape.Context) { ctx := jc.Request.Context() - bucket := api.DefaultBucketName + var bucket string if jc.DecodeForm("bucket", &bucket) != nil { return + } else if bucket == "" { + jc.Error(api.ErrBucketMissing, http.StatusBadRequest) + return } + var prefix string if jc.DecodeForm("prefix", &prefix) != nil { return @@ -621,9 +628,12 @@ func (w *Worker) objectsHandlerPUT(jc jape.Context) { } // decode the bucket from the query string - bucket := api.DefaultBucketName + var bucket string if jc.DecodeForm("bucket", &bucket) != nil { return + } else if bucket == "" { + jc.Error(api.ErrBucketMissing, http.StatusBadRequest) + return } // allow overriding the redundancy settings @@ -686,9 +696,12 @@ func (w *Worker) multipartUploadHandlerPUT(jc jape.Context) { } // decode the bucket from the query string - bucket := api.DefaultBucketName + var bucket string if jc.DecodeForm("bucket", &bucket) != nil { return + } else if bucket == "" { + jc.Error(api.ErrBucketMissing, http.StatusBadRequest) + return } // decode the upload id From 3943575ab85dcd0c1b6529a1056238d30c703bf7 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 17 Sep 2024 11:18:49 +0200 Subject: [PATCH 130/708] stores: fix TestPrunableContractRoots --- stores/sql_test.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/stores/sql_test.go b/stores/sql_test.go index 526500d4c..fe63f85dd 100644 --- a/stores/sql_test.go +++ b/stores/sql_test.go @@ -184,6 +184,11 @@ func newTestSQLStore(t *testing.T, cfg testSQLStoreConfig) *testSQLStore { t.Fatal("failed to create SQLStore", err) } + err = sqlStore.CreateBucket(context.Background(), testBucket, api.BucketPolicy{}) + if err != nil { + t.Fatal("failed to create test bucket", err) + } + if !cfg.skipContractSet { err = sqlStore.UpdateContractSet(context.Background(), testContractSet, []types.FileContractID{}, nil) if err != nil { From 03c0c48863cce0e7616ea8453d9d81dcb4ecb4cf Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 17 Sep 2024 11:25:59 +0200 Subject: [PATCH 131/708] stores: fix TestBuckets --- stores/sql/mysql/migrations/main/schema.sql | 3 --- stores/sql/sqlite/migrations/main/schema.sql | 3 --- 2 files changed, 6 deletions(-) diff --git a/stores/sql/mysql/migrations/main/schema.sql b/stores/sql/mysql/migrations/main/schema.sql index 96008942a..e5329f24e 100644 --- a/stores/sql/mysql/migrations/main/schema.sql +++ b/stores/sql/mysql/migrations/main/schema.sql @@ -556,6 +556,3 @@ CREATE TABLE `wallet_outputs` ( UNIQUE KEY `output_id` (`output_id`), KEY `idx_wallet_outputs_maturity_height` (`maturity_height`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- create default bucket -INSERT INTO buckets (created_at, name) VALUES (CURRENT_TIMESTAMP, 'default'); diff --git a/stores/sql/sqlite/migrations/main/schema.sql b/stores/sql/sqlite/migrations/main/schema.sql index af4c59654..a42585ef6 100644 --- a/stores/sql/sqlite/migrations/main/schema.sql +++ b/stores/sql/sqlite/migrations/main/schema.sql @@ -224,6 +224,3 @@ CREATE INDEX `idx_wallet_events_block_id_height` ON `wallet_events`(`block_id`,` CREATE TABLE `wallet_outputs` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at` datetime,`output_id` blob NOT NULL,`leaf_index` integer,`merkle_proof` longblob NOT NULL,`value` text,`address` blob,`maturity_height` integer); CREATE UNIQUE INDEX `idx_wallet_outputs_output_id` ON `wallet_outputs`(`output_id`); CREATE INDEX `idx_wallet_outputs_maturity_height` ON `wallet_outputs`(`maturity_height`); - --- create default bucket -INSERT INTO buckets (created_at, name) VALUES (CURRENT_TIMESTAMP, 'default'); From ae0a80deb7712af008f39c5dcf390810b89ebb94 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 17 Sep 2024 11:29:45 +0200 Subject: [PATCH 132/708] stores: fix TestPartialSlab --- stores/sql_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stores/sql_test.go b/stores/sql_test.go index fe63f85dd..a3451c8a0 100644 --- a/stores/sql_test.go +++ b/stores/sql_test.go @@ -185,7 +185,7 @@ func newTestSQLStore(t *testing.T, cfg testSQLStoreConfig) *testSQLStore { } err = sqlStore.CreateBucket(context.Background(), testBucket, api.BucketPolicy{}) - if err != nil { + if err != nil && !errors.Is(err, api.ErrBucketExists) { t.Fatal("failed to create test bucket", err) } From b1e4147d6312478287ca916710c7b47581773984 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 17 Sep 2024 11:36:35 +0200 Subject: [PATCH 133/708] e2e: fix TestListObjectsWithNoDelimiter --- internal/test/e2e/cluster.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index 8972a76f8..d489043f9 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -527,6 +527,12 @@ func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { }) } + // Add test bucket + err = cluster.Bus.CreateBucket(ctx, testBucket, api.CreateBucketOptions{}) + if err != nil && !utils.IsErr(err, api.ErrBucketExists) { + tt.Fatalf("failed to create bucket: %v", err) + } + if nHosts > 0 { cluster.AddHostsBlocking(nHosts) cluster.WaitForPeers() From 8c7a0d1a3e7abc7cbe595d91367ed1c7e9a943c8 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 17 Sep 2024 14:58:22 +0200 Subject: [PATCH 134/708] api: address comment --- api/worker.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/worker.go b/api/worker.go index ff21a8497..02d86c171 100644 --- a/api/worker.go +++ b/api/worker.go @@ -17,7 +17,7 @@ import ( var ( // ErrBucketMissing is returned by the worker API by endpoints that need a // bucket when it wasn't specified. - ErrBucketMissing = errors.New("bucket parameter not specified") + ErrBucketMissing = errors.New("'bucket' parameter is required") // ErrConsensusNotSynced is returned by the worker API by endpoints that rely on // consensus and the consensus is not synced. From 00dff0b34456207eec5a37d8aa7b22608abf7c28 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 17 Sep 2024 16:47:32 +0200 Subject: [PATCH 135/708] bus: make 'bucket' optinoal in objectsHandlerGet --- bus/routes.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/bus/routes.go b/bus/routes.go index f7eb54929..3ce1750d7 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1142,9 +1142,6 @@ func (b *Bus) objectsHandlerGET(jc jape.Context) { var bucket, marker, delim, sortBy, sortDir, substring string if jc.DecodeForm("bucket", &bucket) != nil { return - } else if bucket == "" { - jc.Error(api.ErrBucketMissing, http.StatusBadRequest) - return } if jc.DecodeForm("delimiter", &delim) != nil { From 5f6d8a8cc7e33316acf4ef67d528b8cedade5d13 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 17 Sep 2024 17:17:48 +0200 Subject: [PATCH 136/708] stores: re-add TestRenewedContract --- stores/metadata_test.go | 149 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) diff --git a/stores/metadata_test.go b/stores/metadata_test.go index f30d06ec3..19c196bbf 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -3695,6 +3695,155 @@ func TestSlabHealthInvalidation(t *testing.T) { } } +func TestRenewedContract(t *testing.T) { + ss := newTestSQLStore(t, defaultTestSQLStoreConfig) + defer ss.Close() + + // add test host + hk := types.PublicKey{1} + if err := ss.addTestHost(hk); err != nil { + t.Fatal(err) + } + + // add test contract + fcid := types.FileContractID{1} + c, err := ss.addTestContract(fcid, hk) + if err != nil { + t.Fatal(err) + } + + // assert it's a freshly formed contract + if c.RenewedFrom != (types.FileContractID{}) { + t.Fatal("unexpected") + } + + // assert we can't fetch the renewed contract + _, err = ss.RenewedContract(context.Background(), fcid) + if !errors.Is(err, api.ErrContractNotFound) { + t.Fatal("unexpected", err) + } + + // assert it has no ancestors + ancestors, err := ss.AncestorContracts(context.Background(), fcid, 0) + if err != nil { + t.Fatal(err) + } else if len(ancestors) != 0 { + t.Fatal("unexpected", len(ancestors)) + } + + // create a contract set + if err := ss.UpdateContractSet(context.Background(), t.Name(), []types.FileContractID{fcid}, nil); err != nil { + t.Fatal(err) + } + + // create an object + obj := object.Object{ + Key: object.GenerateEncryptionKey(), + Slabs: []object.SlabSlice{ + { + Slab: object.Slab{ + EncryptionKey: object.GenerateEncryptionKey(), + MinShards: 1, + Shards: newTestShards(hk, fcid, types.Hash256{1}), + }, + }, + }, + } + + // add the object. + if _, err := ss.addTestObject(t.Name(), obj); err != nil { + t.Fatal(err) + } + + // no slabs should be unhealthy + if err := ss.RefreshHealth(context.Background()); err != nil { + t.Fatal(err) + } + if slabs, err := ss.UnhealthySlabs(context.Background(), 0.99, t.Name(), 10); err != nil { + t.Fatal(err) + } else if len(slabs) > 0 { + t.Fatal("shouldn't return any slabs", len(slabs)) + } + + // renew it + fcidR := types.FileContractID{2} + if err := ss.renewTestContract(hk, fcid, fcidR, 1); err != nil { + t.Fatal("unexpected") + } + + // assert we can now fetch the renewed contract + renewal, err := ss.RenewedContract(context.Background(), fcid) + if err != nil { + t.Fatal("unexpected", err) + } else if renewal.ID != fcidR { + t.Fatal("unexpected") + } + + // assert the original contract is now an ancestor + ancestors, err = ss.AncestorContracts(context.Background(), fcidR, 0) + if err != nil { + t.Fatal(err) + } else if len(ancestors) != 1 { + t.Fatal("unexpected", len(ancestors)) + } else if ancestors[0].ID != fcid { + t.Fatal("unexpected") + } + + // assert the contract set was updated. + csc, err := ss.Contracts(context.Background(), api.ContractsOpts{ContractSet: t.Name()}) + if err != nil { + t.Fatal(err) + } else if len(csc) != 1 { + t.Fatal("unexpected", len(csc)) + } else if csc[0].ID != fcidR { + t.Fatal("unexpected") + } + + // slab should still be in good shape. + if err := ss.RefreshHealth(context.Background()); err != nil { + t.Fatal(err) + } + if slabs, err := ss.UnhealthySlabs(context.Background(), 0.99, t.Name(), 10); err != nil { + t.Fatal(err) + } else if len(slabs) > 0 { + t.Fatal("shouldn't return any slabs", len(slabs)) + } + + // assert the contract is not being returned + _, err = ss.Contract(context.Background(), fcid) + if !errors.Is(err, api.ErrContractNotFound) { + t.Fatal("unexpected", err) + } + + // assert it's not returned when listing all contracts either + cs, err := ss.Contracts(context.Background(), api.ContractsOpts{}) + if err != nil { + t.Fatal(err) + } else if len(cs) != 1 { + t.Fatal("unexpected number of contracts", len(cs)) + } else if cs[0].ID != fcidR { + t.Fatal("unexpected") + } + + // assert it's returned if we change the filter mode + cs, err = ss.Contracts(context.Background(), api.ContractsOpts{FilterMode: api.ContractFilterModeAll}) + if err != nil { + t.Fatal(err) + } else if len(cs) != 2 { + t.Fatal("unexpected number of contracts", len(cs)) + } + + // assert the archived contract is not in the set + cs, err = ss.Contracts(context.Background(), api.ContractsOpts{ContractSet: t.Name(), FilterMode: api.ContractFilterModeAll}) + if err != nil { + t.Fatal(err) + } else if len(cs) != 1 { + t.Fatal("unexpected number of contracts", len(cs)) + } else if cs[0].ID != fcidR { + t.Fatal("unexpected contract", cs[0]) + } +} + func TestRefreshHealth(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() From 05269d69bca0024059d35b4589400298d4fe5fa0 Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 16 Sep 2024 13:59:04 +0200 Subject: [PATCH 137/708] bus: populate autopilots --- bus/routes.go | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/bus/routes.go b/bus/routes.go index 3ce1750d7..7c1966c2f 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1347,25 +1347,26 @@ func (b *Bus) settingsGougingHandlerPUT(jc jape.Context) { func (b *Bus) settingsPinnedHandlerGET(jc jape.Context) { ps, err := b.ss.PinnedSettings(jc.Request.Context()) if errors.Is(err, sql.ErrSettingNotFound) { - b.logger.Warn("pinned settings not found, returning defaults") - jc.Encode(api.DefaultPinnedSettings) + b.logger.Warn("pinned settings not found, using defaults") + ps = api.DefaultPinnedSettings + } else if jc.Check("failed to get pinned settings", err) != nil { return - } else if jc.Check("failed to get pinned settings", err) == nil { - // populate the Autopilots map with the current autopilots - aps, err := b.as.Autopilots(jc.Request.Context()) - if jc.Check("failed to fetch autopilots", err) != nil { - return - } - if ps.Autopilots == nil { - ps.Autopilots = make(map[string]api.AutopilotPins) - } - for _, ap := range aps { - if _, exists := ps.Autopilots[ap.ID]; !exists { - ps.Autopilots[ap.ID] = api.AutopilotPins{} - } + } + + // populate the Autopilots map with the current autopilots + aps, err := b.as.Autopilots(jc.Request.Context()) + if jc.Check("failed to fetch autopilots", err) != nil { + return + } + if ps.Autopilots == nil { + ps.Autopilots = make(map[string]api.AutopilotPins) + } + for _, ap := range aps { + if _, exists := ps.Autopilots[ap.ID]; !exists { + ps.Autopilots[ap.ID] = api.AutopilotPins{} } - jc.Encode(ps) } + jc.Encode(ps) } func (b *Bus) settingsPinnedHandlerPUT(jc jape.Context) { From 3fbabb975e6dbad54ae3fbad8bdcdb2e43c66077 Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 16 Sep 2024 14:06:54 +0200 Subject: [PATCH 138/708] stores: fix migration --- stores/sql/sqlite/migrations/main/migration_00019_settings.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stores/sql/sqlite/migrations/main/migration_00019_settings.sql b/stores/sql/sqlite/migrations/main/migration_00019_settings.sql index 98d4aa36b..e08ff13f5 100644 --- a/stores/sql/sqlite/migrations/main/migration_00019_settings.sql +++ b/stores/sql/sqlite/migrations/main/migration_00019_settings.sql @@ -42,7 +42,7 @@ FROM ( WHERE json_extract(v, "$.currency") IS NOT NULL AND json_extract(v, "$.threshold") IS NOT NULL -) +); -- delete old settings DELETE FROM settings WHERE `key` IN ("uploadpacking", "redundancy", "contractset", "s3authentication", "pricepinning"); From 4a6b5267cb6823d176174bd89ff72e7d6ae53a98 Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 16 Sep 2024 14:08:30 +0200 Subject: [PATCH 139/708] bus: remove warning logs --- bus/routes.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/bus/routes.go b/bus/routes.go index 7c1966c2f..5862af0a0 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1316,7 +1316,6 @@ func (b *Bus) packedSlabsHandlerDonePOST(jc jape.Context) { func (b *Bus) settingsGougingHandlerGET(jc jape.Context) { gs, err := b.ss.GougingSettings(jc.Request.Context()) if errors.Is(err, sql.ErrSettingNotFound) { - b.logger.Warn("gouging settings not found, returning defaults") jc.Encode(api.DefaultGougingSettings) return } else if jc.Check("failed to get gouging settings", err) == nil { @@ -1347,7 +1346,6 @@ func (b *Bus) settingsGougingHandlerPUT(jc jape.Context) { func (b *Bus) settingsPinnedHandlerGET(jc jape.Context) { ps, err := b.ss.PinnedSettings(jc.Request.Context()) if errors.Is(err, sql.ErrSettingNotFound) { - b.logger.Warn("pinned settings not found, using defaults") ps = api.DefaultPinnedSettings } else if jc.Check("failed to get pinned settings", err) != nil { return @@ -1397,7 +1395,6 @@ func (b *Bus) settingsPinnedHandlerPUT(jc jape.Context) { func (b *Bus) settingsUploadHandlerGET(jc jape.Context) { us, err := b.ss.UploadSettings(jc.Request.Context()) if errors.Is(err, sql.ErrSettingNotFound) { - b.logger.Warn("upload settings not found, returning defaults") jc.Encode(api.DefaultUploadSettings(b.cm.TipState().Network.Name)) return } else if jc.Check("failed to get upload settings", err) == nil { @@ -1427,7 +1424,6 @@ func (b *Bus) settingsUploadHandlerPUT(jc jape.Context) { func (b *Bus) settingsS3HandlerGET(jc jape.Context) { s3s, err := b.ss.S3Settings(jc.Request.Context()) if errors.Is(err, sql.ErrSettingNotFound) { - b.logger.Warn("S3 settings not found, returning defaults") jc.Encode(api.DefaultS3Settings) return } else if jc.Check("failed to get S3 settings", err) == nil { From c9f882df2aa8504c922f0698aad6edfe3ef3ad08 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 17 Sep 2024 16:53:45 +0200 Subject: [PATCH 140/708] testing: do not set pinned settings in newTestCluster --- internal/test/e2e/cluster.go | 1 - 1 file changed, 1 deletion(-) diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index d489043f9..9e0bcabf6 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -503,7 +503,6 @@ func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { // Update the bus settings. tt.OK(busClient.UpdateGougingSettings(ctx, test.GougingSettings)) - tt.OK(busClient.UpdatePinnedSettings(ctx, test.PricePinSettings)) tt.OK(busClient.UpdateUploadSettings(ctx, us)) tt.OK(busClient.UpdateS3Settings(ctx, s3)) From a037bfb2c2e5a3dedb6f737d13d60a2ab22a413b Mon Sep 17 00:00:00 2001 From: ChrisSchinnerl Date: Wed, 18 Sep 2024 02:59:17 +0000 Subject: [PATCH 141/708] ui: v0.62.0 --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 65913ed56..2145afa4e 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( go.sia.tech/hostd v1.1.3-0.20240903081107-6e044db95238 go.sia.tech/jape v0.12.1 go.sia.tech/mux v1.2.0 - go.sia.tech/web/renterd v0.61.0 + go.sia.tech/web/renterd v0.62.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.27.0 golang.org/x/sys v0.25.0 diff --git a/go.sum b/go.sum index 4dc769e87..0864fa5a4 100644 --- a/go.sum +++ b/go.sum @@ -71,8 +71,8 @@ go.sia.tech/mux v1.2.0 h1:ofa1Us9mdymBbGMY2XH/lSpY8itFsKIo/Aq8zwe+GHU= go.sia.tech/mux v1.2.0/go.mod h1:Yyo6wZelOYTyvrHmJZ6aQfRoer3o4xyKQ4NmQLJrBSo= go.sia.tech/web v0.0.0-20240610131903-5611d44a533e h1:oKDz6rUExM4a4o6n/EXDppsEka2y/+/PgFOZmHWQRSI= go.sia.tech/web v0.0.0-20240610131903-5611d44a533e/go.mod h1:4nyDlycPKxTlCqvOeRO0wUfXxyzWCEE7+2BRrdNqvWk= -go.sia.tech/web/renterd v0.61.0 h1:DmSGkpbaqodKvP4Mn79lLeZF2xqcWFQRrT2xPuLf8Uo= -go.sia.tech/web/renterd v0.61.0/go.mod h1:VWfvYtmdJGfrqSoNRO3NoOjUij+RB/xNO4M0HqIf1+M= +go.sia.tech/web/renterd v0.62.0 h1:oU6m0SOmaOTEq76yfekHhB4ol+u5W70sna7Jts0mjnU= +go.sia.tech/web/renterd v0.62.0/go.mod h1:VWfvYtmdJGfrqSoNRO3NoOjUij+RB/xNO4M0HqIf1+M= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= From 70fff9ba3e25c48d1599cede8c7f9622b8da9bc3 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 18 Sep 2024 15:42:44 +0200 Subject: [PATCH 142/708] autopilot: make sure scanner finishes one batch before starting the next one --- autopilot/scanner/scanner.go | 98 ++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 54 deletions(-) diff --git a/autopilot/scanner/scanner.go b/autopilot/scanner/scanner.go index c696a918c..5be0fefdf 100644 --- a/autopilot/scanner/scanner.go +++ b/autopilot/scanner/scanner.go @@ -110,8 +110,7 @@ func (s *scanner) Scan(ctx context.Context, w WorkerRHPScan, force bool) { go func() { defer s.wg.Done() - hosts := s.fetchHosts(ctx, cutoff) - scanned := s.scanHosts(ctx, w, hosts) + scanned := s.scanHosts(ctx, w, cutoff) removed := s.removeOfflineHosts(ctx) s.mu.Lock() @@ -157,48 +156,10 @@ func (s *scanner) UpdateHostsConfig(cfg api.HostsConfig) { s.hostsCfg = &cfg } -func (s *scanner) fetchHosts(ctx context.Context, cutoff time.Time) chan scanJob { - jobsChan := make(chan scanJob, s.scanBatchSize) - go func() { - defer close(jobsChan) - - var exhausted bool - for offset := 0; !exhausted; offset += s.scanBatchSize { - hosts, err := s.hs.Hosts(ctx, api.HostOptions{ - MaxLastScan: api.TimeRFC3339(cutoff), - Offset: offset, - Limit: s.scanBatchSize, - }) - if err != nil { - s.logger.Errorf("could not get hosts for scanning, err: %v", err) - return - } else if len(hosts) < s.scanBatchSize { - exhausted = true - } - - s.logger.Debugf("fetched %d hosts for scanning", len(hosts)) - for _, h := range hosts { - select { - case <-s.interruptChan: - return - case <-s.shutdownChan: - return - case jobsChan <- scanJob{ - hostKey: h.PublicKey, - hostIP: h.NetAddress, - }: - } - } - } - }() - - return jobsChan -} - -func (s *scanner) scanHosts(ctx context.Context, w WorkerRHPScan, hosts chan scanJob) (scanned uint64) { +func (s *scanner) scanHosts(ctx context.Context, w WorkerRHPScan, cutoff time.Time) (scanned uint64) { // define worker - worker := func() { - for h := range hosts { + worker := func(jobChan <-chan scanJob) { + for h := range jobChan { if s.isShutdown() || s.isInterrupted() { break // shutdown } @@ -216,18 +177,47 @@ func (s *scanner) scanHosts(ctx context.Context, w WorkerRHPScan, hosts chan sca } } - // launch all workers - var wg sync.WaitGroup - for t := 0; t < s.scanThreads; t++ { - wg.Add(1) - go func() { - worker() - wg.Done() - }() - } + var exhausted bool + for !exhausted { + jobs := make(chan scanJob) + var wg sync.WaitGroup + + joinWorkers := func() { + close(jobs) + wg.Wait() + } + + // launch all workers for this batch + for t := 0; t < s.scanThreads; t++ { + wg.Add(1) + go func() { + worker(jobs) + wg.Done() + }() + } - // wait until they're done - wg.Wait() + // fetch batch + hosts, err := s.hs.Hosts(ctx, api.HostOptions{ + MaxLastScan: api.TimeRFC3339(cutoff), + Offset: 0, + Limit: s.scanBatchSize, + }) + if err != nil { + s.logger.Errorf("could not get hosts for scanning, err: %v", err) + joinWorkers() + break + } + exhausted = len(hosts) < s.scanBatchSize + + // send batch to workers + for _, h := range hosts { + jobs <- scanJob{ + hostKey: h.PublicKey, + hostIP: h.NetAddress, + } + } + joinWorkers() + } s.statsHostPingMS.Recompute() return From b2bce27be20bb758a52ea5e78097e512dc855a90 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 18 Sep 2024 16:44:39 +0200 Subject: [PATCH 143/708] scanner: fix TestScanner --- autopilot/scanner/scanner_test.go | 38 ++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/autopilot/scanner/scanner_test.go b/autopilot/scanner/scanner_test.go index 020ca8932..7aa708ae6 100644 --- a/autopilot/scanner/scanner_test.go +++ b/autopilot/scanner/scanner_test.go @@ -31,17 +31,25 @@ func (hs *mockHostStore) Hosts(ctx context.Context, opts api.HostOptions) ([]api defer hs.mu.Unlock() hs.scans = append(hs.scans, fmt.Sprintf("%d-%d", opts.Offset, opts.Offset+opts.Limit)) + var hosts []api.Host + for _, host := range hs.hosts { + if !opts.MaxLastScan.IsZero() && opts.MaxLastScan.Std().Before(host.Interactions.LastScan) { + continue + } + hosts = append(hosts, host) + } + start := opts.Offset - if start > len(hs.hosts) { + if start > len(hosts) { return nil, nil } end := opts.Offset + opts.Limit - if end > len(hs.hosts) { - end = len(hs.hosts) + if end > len(hosts) { + end = len(hosts) } - return hs.hosts[start:end], nil + return hosts[start:end], nil } func (hs *mockHostStore) RemoveOfflineHosts(ctx context.Context, maxConsecutiveScanFailures uint64, maxDowntime time.Duration) (uint64, error) { @@ -51,6 +59,18 @@ func (hs *mockHostStore) RemoveOfflineHosts(ctx context.Context, maxConsecutiveS return 0, nil } +func (hs *mockHostStore) recordScan(hk types.PublicKey) { + hs.mu.Lock() + defer hs.mu.Unlock() + for i, host := range hs.hosts { + if host.PublicKey == hk { + hs.hosts[i].Interactions.LastScan = time.Now().UTC() + return + } + } + panic("unknown host") +} + func (hs *mockHostStore) state() ([]string, []string) { hs.mu.Lock() defer hs.mu.Unlock() @@ -59,6 +79,7 @@ func (hs *mockHostStore) state() ([]string, []string) { type mockWorker struct { blockChan chan struct{} + hs *mockHostStore mu sync.Mutex scanCount int @@ -69,6 +90,8 @@ func (w *mockWorker) RHPScan(ctx context.Context, hostKey types.PublicKey, hostI <-w.blockChan } + w.hs.recordScan(hostKey) + w.mu.Lock() defer w.mu.Unlock() w.scanCount++ @@ -94,7 +117,10 @@ func TestScanner(t *testing.T) { } // initiate a host scan using a worker that blocks - w := &mockWorker{blockChan: make(chan struct{})} + w := &mockWorker{ + blockChan: make(chan struct{}), + hs: hs, + } s.Scan(context.Background(), w, false) // assert it's scanning @@ -121,7 +147,7 @@ func TestScanner(t *testing.T) { // assert the scanner made 3 batch reqs if scans, _ := hs.state(); len(scans) != 3 { t.Fatalf("unexpected number of requests, %v != 3", len(scans)) - } else if scans[0] != "0-40" || scans[1] != "40-80" || scans[2] != "80-120" { + } else if scans[0] != "0-40" || scans[1] != "0-40" || scans[2] != "0-40" { t.Fatalf("unexpected requests, %v", scans) } From 8ce019e22ba04e60c2f6adf86d9a09c265cc467c Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 19 Sep 2024 13:51:20 +0200 Subject: [PATCH 144/708] scanner: abort on shutdown --- autopilot/scanner/scanner.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/autopilot/scanner/scanner.go b/autopilot/scanner/scanner.go index 5be0fefdf..38dc04370 100644 --- a/autopilot/scanner/scanner.go +++ b/autopilot/scanner/scanner.go @@ -165,9 +165,11 @@ func (s *scanner) scanHosts(ctx context.Context, w WorkerRHPScan, cutoff time.Ti } scan, err := w.RHPScan(ctx, h.hostKey, h.hostIP, DefaultScanTimeout) - if err != nil { + if errors.Is(err, context.Canceled) { + return + } else if err != nil { s.logger.Errorw("worker stopped", zap.Error(err), "hk", h.hostKey) - break // abort + return // abort } else if err := scan.Error(); err != nil { s.logger.Debugw("host scan failed", zap.Error(err), "hk", h.hostKey, "ip", h.hostIP) } else { @@ -178,7 +180,7 @@ func (s *scanner) scanHosts(ctx context.Context, w WorkerRHPScan, cutoff time.Ti } var exhausted bool - for !exhausted { + for !exhausted && !s.isShutdown() { jobs := make(chan scanJob) var wg sync.WaitGroup From e719cce870d837b08c7b016872bbcca765d09c3e Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 20 Sep 2024 09:04:02 +0200 Subject: [PATCH 145/708] autopilot: interrupt on ctx --- autopilot/scanner/scanner.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/autopilot/scanner/scanner.go b/autopilot/scanner/scanner.go index 38dc04370..fb6823713 100644 --- a/autopilot/scanner/scanner.go +++ b/autopilot/scanner/scanner.go @@ -180,7 +180,16 @@ func (s *scanner) scanHosts(ctx context.Context, w WorkerRHPScan, cutoff time.Ti } var exhausted bool - for !exhausted && !s.isShutdown() { +LOOP: + for !exhausted { + select { + case <-ctx.Done(): + break LOOP + case <-s.shutdownChan: + break LOOP + default: + } + jobs := make(chan scanJob) var wg sync.WaitGroup From 2a80c39c4cb6fbbbf984def4cc63785f7c331a4c Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 20 Sep 2024 09:05:17 +0200 Subject: [PATCH 146/708] autopilot: debug logging --- autopilot/scanner/scanner.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/autopilot/scanner/scanner.go b/autopilot/scanner/scanner.go index fb6823713..282f7037b 100644 --- a/autopilot/scanner/scanner.go +++ b/autopilot/scanner/scanner.go @@ -3,6 +3,7 @@ package scanner import ( "context" "errors" + "fmt" "sync" "sync/atomic" "time" @@ -166,11 +167,14 @@ func (s *scanner) scanHosts(ctx context.Context, w WorkerRHPScan, cutoff time.Ti scan, err := w.RHPScan(ctx, h.hostKey, h.hostIP, DefaultScanTimeout) if errors.Is(err, context.Canceled) { + fmt.Println("RHPScan", err) return } else if err != nil { + fmt.Println("RHPScan2", err) s.logger.Errorw("worker stopped", zap.Error(err), "hk", h.hostKey) return // abort } else if err := scan.Error(); err != nil { + fmt.Println("RHPScan3", err) s.logger.Debugw("host scan failed", zap.Error(err), "hk", h.hostKey, "ip", h.hostIP) } else { s.statsHostPingMS.Track(float64(time.Duration(scan.Ping).Milliseconds())) @@ -219,6 +223,7 @@ LOOP: break } exhausted = len(hosts) < s.scanBatchSize + fmt.Println("exhausted", exhausted, len(hosts), s.scanBatchSize) // send batch to workers for _, h := range hosts { From 42ff6ea5098013bc7bbdc217985e5ccb912d9b9b Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 20 Sep 2024 10:20:37 +0200 Subject: [PATCH 147/708] autopilot: more logging --- autopilot/scanner/scanner.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/autopilot/scanner/scanner.go b/autopilot/scanner/scanner.go index 282f7037b..2fabbd185 100644 --- a/autopilot/scanner/scanner.go +++ b/autopilot/scanner/scanner.go @@ -128,14 +128,14 @@ func (s *scanner) Scan(ctx context.Context, w WorkerRHPScan, force bool) { } func (s *scanner) Shutdown(ctx context.Context) error { - defer close(s.shutdownChan) - waitChan := make(chan struct{}) go func() { s.wg.Wait() close(waitChan) }() + close(s.shutdownChan) + select { case <-ctx.Done(): return ctx.Err() @@ -158,11 +158,13 @@ func (s *scanner) UpdateHostsConfig(cfg api.HostsConfig) { } func (s *scanner) scanHosts(ctx context.Context, w WorkerRHPScan, cutoff time.Time) (scanned uint64) { + fmt.Println("scanHosts start") + defer fmt.Println("scanHosts done") // define worker worker := func(jobChan <-chan scanJob) { for h := range jobChan { if s.isShutdown() || s.isInterrupted() { - break // shutdown + return // shutdown } scan, err := w.RHPScan(ctx, h.hostKey, h.hostIP, DefaultScanTimeout) @@ -203,7 +205,7 @@ LOOP: } // launch all workers for this batch - for t := 0; t < s.scanThreads; t++ { + for i := 0; i < s.scanThreads; i++ { wg.Add(1) go func() { worker(jobs) @@ -235,6 +237,7 @@ LOOP: joinWorkers() } + fmt.Println("scanHost done") s.statsHostPingMS.Recompute() return } From 0a5b2afb86194555a23d2bdf2f6450c507987b64 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 20 Sep 2024 11:28:50 +0200 Subject: [PATCH 148/708] debug: more logging --- .github/workflows/test.yml | 36 +++++++++++++++---------------- autopilot/scanner/scanner.go | 41 +++++++++++++++++++++++++++--------- 2 files changed, 49 insertions(+), 28 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6aee77227..a94a3b84a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -30,8 +30,8 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ ubuntu-latest , macos-latest, windows-latest ] - go-version: [ '1.22', '1.23' ] + os: [ubuntu-latest, macos-latest, windows-latest] + go-version: ["1.22", "1.23"] steps: - name: Checkout uses: actions/checkout@v4 @@ -47,27 +47,27 @@ jobs: uses: mirromutth/mysql-action@v1.1 with: host port: 3800 - mysql version: '8' + mysql version: "8" mysql root password: test - - name: Test Stores - uses: n8maninger/action-golang-test@v1 - with: - args: "-race;-short" - - name: Test Stores - MySQL - if: matrix.os == 'ubuntu-latest' - uses: n8maninger/action-golang-test@v1 - env: - RENTERD_DB_URI: 127.0.0.1:3800 - RENTERD_DB_USER: root - RENTERD_DB_PASSWORD: test - with: - package: "./stores" - args: "-race;-short" + # - name: Test Stores + # uses: n8maninger/action-golang-test@v1 + # with: + # args: "-race;-short" + # - name: Test Stores - MySQL + # if: matrix.os == 'ubuntu-latest' + # uses: n8maninger/action-golang-test@v1 + # env: + # RENTERD_DB_URI: 127.0.0.1:3800 + # RENTERD_DB_USER: root + # RENTERD_DB_PASSWORD: test + # with: + # package: "./stores" + # args: "-race;-short" - name: Test Integration uses: n8maninger/action-golang-test@v1 with: package: "./internal/test/e2e/..." - args: "-failfast;-race;-timeout=60m" + args: "-failfast;-race;-count=5;-timeout=5m;-run=TestObjectsWithNoDelimiter" - name: Test Integration - MySQL if: matrix.os == 'ubuntu-latest' uses: n8maninger/action-golang-test@v1 diff --git a/autopilot/scanner/scanner.go b/autopilot/scanner/scanner.go index 2fabbd185..34347b74e 100644 --- a/autopilot/scanner/scanner.go +++ b/autopilot/scanner/scanner.go @@ -158,42 +158,47 @@ func (s *scanner) UpdateHostsConfig(cfg api.HostsConfig) { } func (s *scanner) scanHosts(ctx context.Context, w WorkerRHPScan, cutoff time.Time) (scanned uint64) { - fmt.Println("scanHosts start") - defer fmt.Println("scanHosts done") + fmt.Println("DEBUG: scanHosts start") + defer fmt.Println("DEBUG: scanHosts done") // define worker worker := func(jobChan <-chan scanJob) { for h := range jobChan { + fmt.Println("DEBUG: worker loop start") if s.isShutdown() || s.isInterrupted() { + fmt.Println("DEBUG: worker exit") return // shutdown } scan, err := w.RHPScan(ctx, h.hostKey, h.hostIP, DefaultScanTimeout) if errors.Is(err, context.Canceled) { - fmt.Println("RHPScan", err) + fmt.Println("DEBUG: RHPScan", err) return } else if err != nil { - fmt.Println("RHPScan2", err) + fmt.Println("DEBUG: RHPScan2", err) s.logger.Errorw("worker stopped", zap.Error(err), "hk", h.hostKey) return // abort } else if err := scan.Error(); err != nil { - fmt.Println("RHPScan3", err) + fmt.Println("DEBUG: RHPScan3", err) s.logger.Debugw("host scan failed", zap.Error(err), "hk", h.hostKey, "ip", h.hostIP) } else { s.statsHostPingMS.Track(float64(time.Duration(scan.Ping).Milliseconds())) atomic.AddUint64(&scanned, 1) } + fmt.Println("DEBUG: worker loop end") } } var exhausted bool -LOOP: for !exhausted { select { case <-ctx.Done(): - break LOOP + fmt.Println("DEBUG: exist done") + return case <-s.shutdownChan: - break LOOP + fmt.Println("DEBUG: exist shutdown") + return default: + fmt.Println("DEBUG: default") } jobs := make(chan scanJob) @@ -206,38 +211,54 @@ LOOP: // launch all workers for this batch for i := 0; i < s.scanThreads; i++ { + fmt.Println("DEBUG: launch thread") wg.Add(1) go func() { worker(jobs) wg.Done() }() + fmt.Println("DEBUG: launch thread done") } // fetch batch + fmt.Println("DEBUG: fetch batch") hosts, err := s.hs.Hosts(ctx, api.HostOptions{ MaxLastScan: api.TimeRFC3339(cutoff), Offset: 0, Limit: s.scanBatchSize, }) + fmt.Println("DEBUG: fetch batch done", err) if err != nil { s.logger.Errorf("could not get hosts for scanning, err: %v", err) + fmt.Println("DEBUG: break err", err) joinWorkers() + fmt.Println("DEBUG: break err2", err) break } + fmt.Println("DEBUG: before exhausted", s == nil) exhausted = len(hosts) < s.scanBatchSize fmt.Println("exhausted", exhausted, len(hosts), s.scanBatchSize) // send batch to workers for _, h := range hosts { - jobs <- scanJob{ + select { + case jobs <- scanJob{ hostKey: h.PublicKey, hostIP: h.NetAddress, + }: + case <-ctx.Done(): + fmt.Println("DEBUG: continue1") + continue + case <-s.shutdownChan: + fmt.Println("DEBUG: continue2") + continue } } + fmt.Println("DEBUG: done iteration") joinWorkers() + fmt.Println("DEBUG: done iteration") } - fmt.Println("scanHost done") s.statsHostPingMS.Recompute() return } From b912be06d2b496778e543539be73c49945580d58 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 20 Sep 2024 15:03:20 +0200 Subject: [PATCH 149/708] autopilot: remove debug logging --- autopilot/scanner/scanner.go | 42 ++++++++++-------------------------- 1 file changed, 11 insertions(+), 31 deletions(-) diff --git a/autopilot/scanner/scanner.go b/autopilot/scanner/scanner.go index 34347b74e..eba0af92d 100644 --- a/autopilot/scanner/scanner.go +++ b/autopilot/scanner/scanner.go @@ -3,7 +3,6 @@ package scanner import ( "context" "errors" - "fmt" "sync" "sync/atomic" "time" @@ -158,33 +157,25 @@ func (s *scanner) UpdateHostsConfig(cfg api.HostsConfig) { } func (s *scanner) scanHosts(ctx context.Context, w WorkerRHPScan, cutoff time.Time) (scanned uint64) { - fmt.Println("DEBUG: scanHosts start") - defer fmt.Println("DEBUG: scanHosts done") // define worker - worker := func(jobChan <-chan scanJob) { - for h := range jobChan { - fmt.Println("DEBUG: worker loop start") + worker := func(jobs <-chan scanJob) { + for h := range jobs { if s.isShutdown() || s.isInterrupted() { - fmt.Println("DEBUG: worker exit") return // shutdown } scan, err := w.RHPScan(ctx, h.hostKey, h.hostIP, DefaultScanTimeout) if errors.Is(err, context.Canceled) { - fmt.Println("DEBUG: RHPScan", err) return } else if err != nil { - fmt.Println("DEBUG: RHPScan2", err) s.logger.Errorw("worker stopped", zap.Error(err), "hk", h.hostKey) return // abort } else if err := scan.Error(); err != nil { - fmt.Println("DEBUG: RHPScan3", err) s.logger.Debugw("host scan failed", zap.Error(err), "hk", h.hostKey, "ip", h.hostIP) } else { s.statsHostPingMS.Track(float64(time.Duration(scan.Ping).Milliseconds())) atomic.AddUint64(&scanned, 1) } - fmt.Println("DEBUG: worker loop end") } } @@ -192,52 +183,43 @@ func (s *scanner) scanHosts(ctx context.Context, w WorkerRHPScan, cutoff time.Ti for !exhausted { select { case <-ctx.Done(): - fmt.Println("DEBUG: exist done") return case <-s.shutdownChan: - fmt.Println("DEBUG: exist shutdown") return default: - fmt.Println("DEBUG: default") } + // synchronisation vars jobs := make(chan scanJob) - var wg sync.WaitGroup - + workersDone := make(chan struct{}) joinWorkers := func() { close(jobs) - wg.Wait() + <-workersDone } // launch all workers for this batch + activeWorkers := int32(s.scanThreads) for i := 0; i < s.scanThreads; i++ { - fmt.Println("DEBUG: launch thread") - wg.Add(1) go func() { worker(jobs) - wg.Done() + if atomic.AddInt32(&activeWorkers, -1) == 0 { + close(workersDone) // close when all workers are done + } }() - fmt.Println("DEBUG: launch thread done") } // fetch batch - fmt.Println("DEBUG: fetch batch") hosts, err := s.hs.Hosts(ctx, api.HostOptions{ MaxLastScan: api.TimeRFC3339(cutoff), Offset: 0, Limit: s.scanBatchSize, }) - fmt.Println("DEBUG: fetch batch done", err) if err != nil { s.logger.Errorf("could not get hosts for scanning, err: %v", err) - fmt.Println("DEBUG: break err", err) joinWorkers() - fmt.Println("DEBUG: break err2", err) break } - fmt.Println("DEBUG: before exhausted", s == nil) exhausted = len(hosts) < s.scanBatchSize - fmt.Println("exhausted", exhausted, len(hosts), s.scanBatchSize) // send batch to workers for _, h := range hosts { @@ -247,16 +229,14 @@ func (s *scanner) scanHosts(ctx context.Context, w WorkerRHPScan, cutoff time.Ti hostIP: h.NetAddress, }: case <-ctx.Done(): - fmt.Println("DEBUG: continue1") continue case <-s.shutdownChan: - fmt.Println("DEBUG: continue2") + continue + case <-workersDone: continue } } - fmt.Println("DEBUG: done iteration") joinWorkers() - fmt.Println("DEBUG: done iteration") } s.statsHostPingMS.Recompute() From dd316d2074a60ca56d9aa99e8721ff176408d978 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 20 Sep 2024 15:07:37 +0200 Subject: [PATCH 150/708] test.yml: run all tests again --- .github/workflows/test.yml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a94a3b84a..f81ff2d2d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -49,25 +49,25 @@ jobs: host port: 3800 mysql version: "8" mysql root password: test - # - name: Test Stores - # uses: n8maninger/action-golang-test@v1 - # with: - # args: "-race;-short" - # - name: Test Stores - MySQL - # if: matrix.os == 'ubuntu-latest' - # uses: n8maninger/action-golang-test@v1 - # env: - # RENTERD_DB_URI: 127.0.0.1:3800 - # RENTERD_DB_USER: root - # RENTERD_DB_PASSWORD: test - # with: - # package: "./stores" - # args: "-race;-short" + - name: Test Stores + uses: n8maninger/action-golang-test@v1 + with: + args: "-race;-short" + - name: Test Stores - MySQL + if: matrix.os == 'ubuntu-latest' + uses: n8maninger/action-golang-test@v1 + env: + RENTERD_DB_URI: 127.0.0.1:3800 + RENTERD_DB_USER: root + RENTERD_DB_PASSWORD: test + with: + package: "./stores" + args: "-race;-short" - name: Test Integration uses: n8maninger/action-golang-test@v1 with: package: "./internal/test/e2e/..." - args: "-failfast;-race;-count=5;-timeout=5m;-run=TestObjectsWithNoDelimiter" + args: "-failfast;-race;-timeout=60m" - name: Test Integration - MySQL if: matrix.os == 'ubuntu-latest' uses: n8maninger/action-golang-test@v1 From 1f853f9f8d9fcecfbc34564dddb5fbbb56d7e528 Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 23 Sep 2024 15:07:34 +0200 Subject: [PATCH 151/708] db: fix migration_00021_archived_contracts --- .../main/migration_00021_archived_contracts.sql | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/stores/sql/sqlite/migrations/main/migration_00021_archived_contracts.sql b/stores/sql/sqlite/migrations/main/migration_00021_archived_contracts.sql index a9c0635a3..f94e9a755 100644 --- a/stores/sql/sqlite/migrations/main/migration_00021_archived_contracts.sql +++ b/stores/sql/sqlite/migrations/main/migration_00021_archived_contracts.sql @@ -27,6 +27,19 @@ CREATE TABLE contracts_temp ( `fund_account_spending` text, `upload_spending` text ); + +DROP INDEX IF EXISTS `idx_contracts_archival_reason`; +DROP INDEX IF EXISTS `idx_contracts_fcid`; +DROP INDEX IF EXISTS `idx_contracts_host_key`; +DROP INDEX IF EXISTS `idx_contracts_proof_height`; +DROP INDEX IF EXISTS `idx_contracts_renewed_from`; +DROP INDEX IF EXISTS `idx_contracts_renewed_to`; +DROP INDEX IF EXISTS `idx_contracts_revision_height`; +DROP INDEX IF EXISTS `idx_contracts_start_height`; +DROP INDEX IF EXISTS `idx_contracts_state`; +DROP INDEX IF EXISTS `idx_contracts_window_end`; +DROP INDEX IF EXISTS `idx_contracts_window_start`; + CREATE INDEX `idx_contracts_archival_reason` ON `contracts_temp`(`archival_reason`); CREATE INDEX `idx_contracts_fcid` ON `contracts_temp`(`fcid`); CREATE INDEX `idx_contracts_host_key` ON `contracts_temp`(`host_key`); From ff7efa10aa94c93779a39520413e2e3a9ed05a99 Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 23 Sep 2024 15:23:42 +0200 Subject: [PATCH 152/708] db: fix migration_0004_contract_spending --- .../metrics/migration_00004_contract_spending.sql | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/stores/sql/sqlite/migrations/metrics/migration_00004_contract_spending.sql b/stores/sql/sqlite/migrations/metrics/migration_00004_contract_spending.sql index b19194cbd..4cf3b98a4 100644 --- a/stores/sql/sqlite/migrations/metrics/migration_00004_contract_spending.sql +++ b/stores/sql/sqlite/migrations/metrics/migration_00004_contract_spending.sql @@ -18,6 +18,19 @@ CREATE TABLE `contracts_temp` ( `sector_roots_spending_lo` BIGINT NOT NULL, `sector_roots_spending_hi` BIGINT NOT NULL ); + +DROP INDEX IF EXISTS `idx_sector_roots_spending`; +DROP INDEX IF EXISTS `idx_fund_account_spending`; +DROP INDEX IF EXISTS `idx_contracts_fc_id`; +DROP INDEX IF EXISTS `idx_remaining_collateral`; +DROP INDEX IF EXISTS `idx_contracts_host`; +DROP INDEX IF EXISTS `idx_contracts_timestamp`; +DROP INDEX IF EXISTS `idx_delete_spending`; +DROP INDEX IF EXISTS `idx_upload_spending`; +DROP INDEX IF EXISTS `idx_contracts_revision_number`; +DROP INDEX IF EXISTS `idx_remaining_funds`; +DROP INDEX IF EXISTS `idx_contracts_fcid_timestamp`; + CREATE INDEX `idx_sector_roots_spending` ON `contracts_temp`(`sector_roots_spending_lo`,`sector_roots_spending_hi`); CREATE INDEX `idx_fund_account_spending` ON `contracts_temp`(`fund_account_spending_lo`,`fund_account_spending_hi`); CREATE INDEX `idx_contracts_fc_id` ON `contracts_temp`(`fcid`); From 3ae4c7f2c36377e60c4d8a01f9781ff26a90eb3a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Sep 2024 01:20:37 +0000 Subject: [PATCH 153/708] build(deps): bump the all-dependencies group with 2 updates Bumps the all-dependencies group with 2 updates: [go.sia.tech/mux](https://github.com/SiaFoundation/mux) and [go.sia.tech/web/renterd](https://github.com/SiaFoundation/web). Updates `go.sia.tech/mux` from 1.2.0 to 1.3.0 - [Commits](https://github.com/SiaFoundation/mux/compare/v1.2.0...v1.3.0) Updates `go.sia.tech/web/renterd` from 0.61.0 to 0.62.0 - [Release notes](https://github.com/SiaFoundation/web/releases) - [Commits](https://github.com/SiaFoundation/web/compare/renterd@0.61.0...renterd@0.62.0) --- updated-dependencies: - dependency-name: go.sia.tech/mux dependency-type: direct:production update-type: version-update:semver-minor dependency-group: all-dependencies - dependency-name: go.sia.tech/web/renterd dependency-type: direct:production update-type: version-update:semver-minor dependency-group: all-dependencies ... Signed-off-by: dependabot[bot] --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 65913ed56..57bc15cae 100644 --- a/go.mod +++ b/go.mod @@ -17,8 +17,8 @@ require ( go.sia.tech/gofakes3 v0.0.5 go.sia.tech/hostd v1.1.3-0.20240903081107-6e044db95238 go.sia.tech/jape v0.12.1 - go.sia.tech/mux v1.2.0 - go.sia.tech/web/renterd v0.61.0 + go.sia.tech/mux v1.3.0 + go.sia.tech/web/renterd v0.62.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.27.0 golang.org/x/sys v0.25.0 diff --git a/go.sum b/go.sum index 4dc769e87..6432b61cd 100644 --- a/go.sum +++ b/go.sum @@ -67,12 +67,12 @@ go.sia.tech/hostd v1.1.3-0.20240903081107-6e044db95238 h1:DP9o+TnNeS34EmxZ/zqZ4p go.sia.tech/hostd v1.1.3-0.20240903081107-6e044db95238/go.mod h1:InmB5LdO6EP+ZW9uolUCO+zh+zVdbJF3iCgU7xokJxQ= go.sia.tech/jape v0.12.1 h1:xr+o9V8FO8ScRqbSaqYf9bjj1UJ2eipZuNcI1nYousU= go.sia.tech/jape v0.12.1/go.mod h1:wU+h6Wh5olDjkPXjF0tbZ1GDgoZ6VTi4naFw91yyWC4= -go.sia.tech/mux v1.2.0 h1:ofa1Us9mdymBbGMY2XH/lSpY8itFsKIo/Aq8zwe+GHU= -go.sia.tech/mux v1.2.0/go.mod h1:Yyo6wZelOYTyvrHmJZ6aQfRoer3o4xyKQ4NmQLJrBSo= +go.sia.tech/mux v1.3.0 h1:hgR34IEkqvfBKUJkAzGi31OADeW2y7D6Bmy/Jcbop9c= +go.sia.tech/mux v1.3.0/go.mod h1:I46++RD4beqA3cW9Xm9SwXbezwPqLvHhVs9HLpDtt58= go.sia.tech/web v0.0.0-20240610131903-5611d44a533e h1:oKDz6rUExM4a4o6n/EXDppsEka2y/+/PgFOZmHWQRSI= go.sia.tech/web v0.0.0-20240610131903-5611d44a533e/go.mod h1:4nyDlycPKxTlCqvOeRO0wUfXxyzWCEE7+2BRrdNqvWk= -go.sia.tech/web/renterd v0.61.0 h1:DmSGkpbaqodKvP4Mn79lLeZF2xqcWFQRrT2xPuLf8Uo= -go.sia.tech/web/renterd v0.61.0/go.mod h1:VWfvYtmdJGfrqSoNRO3NoOjUij+RB/xNO4M0HqIf1+M= +go.sia.tech/web/renterd v0.62.0 h1:oU6m0SOmaOTEq76yfekHhB4ol+u5W70sna7Jts0mjnU= +go.sia.tech/web/renterd v0.62.0/go.mod h1:VWfvYtmdJGfrqSoNRO3NoOjUij+RB/xNO4M0HqIf1+M= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= From ccf2c9e5723326037531233b238aaa55b337dc83 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Mon, 23 Sep 2024 13:55:07 +0200 Subject: [PATCH 154/708] go.mod: don't update UI --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 57bc15cae..bedae677d 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( go.sia.tech/hostd v1.1.3-0.20240903081107-6e044db95238 go.sia.tech/jape v0.12.1 go.sia.tech/mux v1.3.0 - go.sia.tech/web/renterd v0.62.0 + go.sia.tech/web/renterd v0.61.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.27.0 golang.org/x/sys v0.25.0 diff --git a/go.sum b/go.sum index 6432b61cd..88a4d94ec 100644 --- a/go.sum +++ b/go.sum @@ -71,8 +71,8 @@ go.sia.tech/mux v1.3.0 h1:hgR34IEkqvfBKUJkAzGi31OADeW2y7D6Bmy/Jcbop9c= go.sia.tech/mux v1.3.0/go.mod h1:I46++RD4beqA3cW9Xm9SwXbezwPqLvHhVs9HLpDtt58= go.sia.tech/web v0.0.0-20240610131903-5611d44a533e h1:oKDz6rUExM4a4o6n/EXDppsEka2y/+/PgFOZmHWQRSI= go.sia.tech/web v0.0.0-20240610131903-5611d44a533e/go.mod h1:4nyDlycPKxTlCqvOeRO0wUfXxyzWCEE7+2BRrdNqvWk= -go.sia.tech/web/renterd v0.62.0 h1:oU6m0SOmaOTEq76yfekHhB4ol+u5W70sna7Jts0mjnU= -go.sia.tech/web/renterd v0.62.0/go.mod h1:VWfvYtmdJGfrqSoNRO3NoOjUij+RB/xNO4M0HqIf1+M= +go.sia.tech/web/renterd v0.61.0 h1:DmSGkpbaqodKvP4Mn79lLeZF2xqcWFQRrT2xPuLf8Uo= +go.sia.tech/web/renterd v0.61.0/go.mod h1:VWfvYtmdJGfrqSoNRO3NoOjUij+RB/xNO4M0HqIf1+M= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= From 112f29771b2edd813359fbc29308a8ad399a27af Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 24 Sep 2024 13:29:37 +0200 Subject: [PATCH 155/708] stores: remove triggers --- .../main/migration_00022_remove_triggers.sql | 4 ++ stores/sql/mysql/migrations/main/schema.sql | 34 ----------------- .../main/migration_00022_remove_triggers.sql | 4 ++ stores/sql/sqlite/migrations/main/schema.sql | 38 ------------------- 4 files changed, 8 insertions(+), 72 deletions(-) create mode 100644 stores/sql/mysql/migrations/main/migration_00022_remove_triggers.sql create mode 100644 stores/sql/sqlite/migrations/main/migration_00022_remove_triggers.sql diff --git a/stores/sql/mysql/migrations/main/migration_00022_remove_triggers.sql b/stores/sql/mysql/migrations/main/migration_00022_remove_triggers.sql new file mode 100644 index 000000000..3187059a1 --- /dev/null +++ b/stores/sql/mysql/migrations/main/migration_00022_remove_triggers.sql @@ -0,0 +1,4 @@ +DROP TRIGGER IF EXISTS before_delete_on_objects_delete_slices; +DROP TRIGGER IF EXISTS before_delete_on_multipart_uploads_delete_multipart_parts; +DROP TRIGGER IF EXISTS before_delete_on_multipart_parts_delete_slices; +DROP TRIGGER IF EXISTS after_delete_on_slices_delete_slabs; diff --git a/stores/sql/mysql/migrations/main/schema.sql b/stores/sql/mysql/migrations/main/schema.sql index 0442d980a..777d81164 100644 --- a/stores/sql/mysql/migrations/main/schema.sql +++ b/stores/sql/mysql/migrations/main/schema.sql @@ -432,40 +432,6 @@ CREATE TABLE `host_checks` ( CONSTRAINT `fk_host_checks_host` FOREIGN KEY (`db_host_id`) REFERENCES `hosts` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; --- dbObject trigger to delete from slices -CREATE TRIGGER before_delete_on_objects_delete_slices -BEFORE DELETE -ON objects FOR EACH ROW -DELETE FROM slices -WHERE slices.db_object_id = OLD.id; - --- dbMultipartUpload trigger to delete from dbMultipartPart -CREATE TRIGGER before_delete_on_multipart_uploads_delete_multipart_parts -BEFORE DELETE -ON multipart_uploads FOR EACH ROW -DELETE FROM multipart_parts -WHERE multipart_parts.db_multipart_upload_id = OLD.id; - --- dbMultipartPart trigger to delete from slices -CREATE TRIGGER before_delete_on_multipart_parts_delete_slices -BEFORE DELETE -ON multipart_parts FOR EACH ROW -DELETE FROM slices -WHERE slices.db_multipart_part_id = OLD.id; - --- dbSlices trigger to prune slabs -CREATE TRIGGER after_delete_on_slices_delete_slabs -AFTER DELETE -ON slices FOR EACH ROW -DELETE FROM slabs -WHERE slabs.id = OLD.db_slab_id -AND slabs.db_buffered_slab_id IS NULL -AND NOT EXISTS ( - SELECT 1 - FROM slices - WHERE slices.db_slab_id = OLD.db_slab_id -); - -- dbSyncerPeer CREATE TABLE `syncer_peers` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT, diff --git a/stores/sql/sqlite/migrations/main/migration_00022_remove_triggers.sql b/stores/sql/sqlite/migrations/main/migration_00022_remove_triggers.sql new file mode 100644 index 000000000..3187059a1 --- /dev/null +++ b/stores/sql/sqlite/migrations/main/migration_00022_remove_triggers.sql @@ -0,0 +1,4 @@ +DROP TRIGGER IF EXISTS before_delete_on_objects_delete_slices; +DROP TRIGGER IF EXISTS before_delete_on_multipart_uploads_delete_multipart_parts; +DROP TRIGGER IF EXISTS before_delete_on_multipart_parts_delete_slices; +DROP TRIGGER IF EXISTS after_delete_on_slices_delete_slabs; diff --git a/stores/sql/sqlite/migrations/main/schema.sql b/stores/sql/sqlite/migrations/main/schema.sql index d6858bb3b..9bdbc71c2 100644 --- a/stores/sql/sqlite/migrations/main/schema.sql +++ b/stores/sql/sqlite/migrations/main/schema.sql @@ -155,44 +155,6 @@ CREATE INDEX `idx_host_checks_score_uptime` ON `host_checks` (`score_uptime`); CREATE INDEX `idx_host_checks_score_version` ON `host_checks` (`score_version`); CREATE INDEX `idx_host_checks_score_prices` ON `host_checks` (`score_prices`); --- dbObject trigger to delete from slices -CREATE TRIGGER before_delete_on_objects_delete_slices -BEFORE DELETE ON objects -BEGIN - DELETE FROM slices - WHERE slices.db_object_id = OLD.id; -END; - --- dbMultipartUpload trigger to delete from dbMultipartPart -CREATE TRIGGER before_delete_on_multipart_uploads_delete_multipart_parts -BEFORE DELETE ON multipart_uploads -BEGIN - DELETE FROM multipart_parts - WHERE multipart_parts.db_multipart_upload_id = OLD.id; -END; - --- dbMultipartPart trigger to delete from slices -CREATE TRIGGER before_delete_on_multipart_parts_delete_slices -BEFORE DELETE ON multipart_parts -BEGIN - DELETE FROM slices - WHERE slices.db_multipart_part_id = OLD.id; -END; - --- dbSlices trigger to prune slabs -CREATE TRIGGER after_delete_on_slices_delete_slabs -AFTER DELETE ON slices -BEGIN - DELETE FROM slabs - WHERE slabs.id = OLD.db_slab_id - AND slabs.db_buffered_slab_id IS NULL - AND NOT EXISTS ( - SELECT 1 - FROM slices - WHERE slices.db_slab_id = OLD.db_slab_id - ); -END; - -- dbSyncerPeer CREATE TABLE `syncer_peers` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at` datetime,`address` text NOT NULL,`first_seen` BIGINT NOT NULL,`last_connect` BIGINT,`synced_blocks` BIGINT,`sync_duration` BIGINT); CREATE UNIQUE INDEX `idx_syncer_peers_address` ON `syncer_peers`(`address`); From 9a4e6a3aab983296b822f5d800236f2ffc946557 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 24 Sep 2024 13:38:06 +0200 Subject: [PATCH 156/708] sql: add migration to migrations list --- internal/sql/migrations.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/internal/sql/migrations.go b/internal/sql/migrations.go index f4f2b208c..56cd91bf0 100644 --- a/internal/sql/migrations.go +++ b/internal/sql/migrations.go @@ -243,6 +243,12 @@ var ( return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00021_archived_contracts", log) }, }, + { + ID: "00022_remove_triggers", + Migrate: func(tx Tx) error { + return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00022_remove_triggers", log) + }, + }, } } MetricsMigrations = func(ctx context.Context, migrationsFs embed.FS, log *zap.SugaredLogger) []Migration { From 915b2a84e9e2d35511b54383839f5298dbb761d6 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 24 Sep 2024 15:32:19 +0200 Subject: [PATCH 157/708] bus: remove deprecated alerts logic --- bus/routes.go | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/bus/routes.go b/bus/routes.go index b3a402d84..9d83a792d 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1677,19 +1677,7 @@ func (b *Bus) gougingParams(ctx context.Context) (api.GougingParams, error) { }, nil } -func (b *Bus) handleGETAlertsDeprecated(jc jape.Context) { - ar, err := b.alertMgr.Alerts(jc.Request.Context(), alerts.AlertsOpts{Offset: 0, Limit: -1}) - if jc.Check("failed to fetch alerts", err) != nil { - return - } - jc.Encode(ar.Alerts) -} - func (b *Bus) handleGETAlerts(jc jape.Context) { - if jc.Request.FormValue("offset") == "" && jc.Request.FormValue("limit") == "" { - b.handleGETAlertsDeprecated(jc) - return - } offset, limit := 0, -1 var severity alerts.Severity if jc.DecodeForm("offset", &offset) != nil { From e18aad344796cd369c2e8b7bdf4c96798719bd87 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 24 Sep 2024 15:50:57 +0200 Subject: [PATCH 158/708] bus: use offset limit consistently --- api/bus.go | 3 +++ api/object.go | 2 +- bus/routes.go | 45 +++++++++++++++++++++++++++++---------------- worker/worker.go | 34 +++++++++------------------------- 4 files changed, 42 insertions(+), 42 deletions(-) diff --git a/api/bus.go b/api/bus.go index bf417d3b4..7e58e4509 100644 --- a/api/bus.go +++ b/api/bus.go @@ -8,6 +8,9 @@ import ( ) var ( + ErrInvalidOffset = errors.New("offset must be non-negative") + ErrInvalidLength = errors.New("length must be positive") + ErrInvalidLimit = errors.New("limit must be -1 or bigger") ErrMarkerNotFound = errors.New("marker not found") ErrMaxFundAmountExceeded = errors.New("renewal exceeds max fund amount") ErrExplorerDisabled = errors.New("explorer is disabled") diff --git a/api/object.go b/api/object.go index 5e87a4fa5..882ed5028 100644 --- a/api/object.go +++ b/api/object.go @@ -261,7 +261,7 @@ func (opts UploadObjectOptions) ApplyHeaders(h http.Header) { func (opts UploadMultipartUploadPartOptions) Apply(values url.Values) { if opts.EncryptionOffset != nil { - values.Set("offset", fmt.Sprint(*opts.EncryptionOffset)) + values.Set("encryptionoffset", fmt.Sprint(*opts.EncryptionOffset)) } if opts.MinShards != 0 { values.Set("minshards", fmt.Sprint(opts.MinShards)) diff --git a/bus/routes.go b/bus/routes.go index b3a402d84..fac237bc3 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -270,11 +270,18 @@ func (b *Bus) walletHandler(jc jape.Context) { } func (b *Bus) walletEventsHandler(jc jape.Context) { - offset := 0 + var offset int + if jc.DecodeForm("offset", &offset) != nil { + return + } else if offset < 0 { + jc.Error(api.ErrInvalidOffset, http.StatusBadRequest) + } + limit := -1 - if jc.DecodeForm("offset", &offset) != nil || - jc.DecodeForm("limit", &limit) != nil { + if jc.DecodeForm("limit", &limit) != nil { return + } else if limit < -1 { + jc.Error(api.ErrInvalidLimit, http.StatusBadRequest) } events, err := b.w.Events(offset, limit) @@ -1505,18 +1512,21 @@ func (b *Bus) slabsPartialHandlerGET(jc jape.Context) { if jc.DecodeParam("key", &key) != nil { return } + var offset int if jc.DecodeForm("offset", &offset) != nil { return + } else if offset < 0 { + jc.Error(api.ErrInvalidOffset, http.StatusBadRequest) } + var length int if jc.DecodeForm("length", &length) != nil { return + } else if length <= 0 { + jc.Error(api.ErrInvalidLength, http.StatusBadRequest) } - if length <= 0 || offset < 0 { - jc.Error(fmt.Errorf("length must be positive and offset must be non-negative"), http.StatusBadRequest) - return - } + data, err := b.ms.FetchPartialSlab(jc.Request.Context(), key, uint32(offset), uint32(length)) if errors.Is(err, api.ErrObjectNotFound) { jc.Error(err, http.StatusNotFound) @@ -1686,22 +1696,25 @@ func (b *Bus) handleGETAlertsDeprecated(jc jape.Context) { } func (b *Bus) handleGETAlerts(jc jape.Context) { - if jc.Request.FormValue("offset") == "" && jc.Request.FormValue("limit") == "" { - b.handleGETAlertsDeprecated(jc) + var severity alerts.Severity + if jc.DecodeForm("severity", &severity) != nil { return } - offset, limit := 0, -1 - var severity alerts.Severity + + var offset int if jc.DecodeForm("offset", &offset) != nil { return - } else if jc.DecodeForm("limit", &limit) != nil { - return } else if offset < 0 { - jc.Error(errors.New("offset must be non-negative"), http.StatusBadRequest) - return - } else if jc.DecodeForm("severity", &severity) != nil { + jc.Error(api.ErrInvalidOffset, http.StatusBadRequest) + } + + limit := -1 + if jc.DecodeForm("limit", &limit) != nil { return + } else if limit < -1 { + jc.Error(api.ErrInvalidLimit, http.StatusBadRequest) } + ar, err := b.alertMgr.Alerts(jc.Request.Context(), alerts.AlertsOpts{ Offset: offset, Limit: limit, diff --git a/worker/worker.go b/worker/worker.go index 3b7ff25fe..293aede4e 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -489,18 +489,7 @@ func (w *Worker) objectHandlerHEAD(jc jape.Context) { return } - // parse key - path := jc.PathParam("key") - - var off int - if jc.DecodeForm("offset", &off) != nil { - return - } - limit := -1 - if jc.DecodeForm("limit", &limit) != nil { - return - } - + // parse range dr, err := api.ParseDownloadRange(jc.Request) if errors.Is(err, http_range.ErrInvalid) || errors.Is(err, api.ErrMultiRangeNotSupported) { jc.Error(err, http.StatusBadRequest) @@ -513,6 +502,9 @@ func (w *Worker) objectHandlerHEAD(jc jape.Context) { return } + // parse key + path := jc.PathParam("key") + // fetch object metadata hor, err := w.HeadObject(jc.Request.Context(), bucket, path, api.HeadObjectOptions{ Range: &dr, @@ -561,14 +553,6 @@ func (w *Worker) objectHandlerGET(jc jape.Context) { if jc.DecodeForm("marker", &marker) != nil { return } - var off int - if jc.DecodeForm("offset", &off) != nil { - return - } - limit := -1 - if jc.DecodeForm("limit", &limit) != nil { - return - } var ignoreDelim bool if jc.DecodeForm("ignoreDelim", &ignoreDelim) != nil { return @@ -739,12 +723,12 @@ func (w *Worker) multipartUploadHandlerPUT(jc jape.Context) { ContentLength: jc.Request.ContentLength, } - // get the offset - var offset int - if jc.DecodeForm("offset", &offset) != nil { + // get the encryption offset + var encryptionOffset int + if jc.DecodeForm("encryptionoffset", &encryptionOffset) != nil { return - } else if jc.Request.FormValue("offset") != "" { - opts.EncryptionOffset = &offset + } else if jc.Request.FormValue("encryptionoffset") != "" { + opts.EncryptionOffset = &encryptionOffset } // upload the multipart From b426c0592b348a39cb081ab1f952559b5aa34384 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 24 Sep 2024 16:31:13 +0200 Subject: [PATCH 159/708] bus: remove handler --- bus/routes.go | 8 -------- 1 file changed, 8 deletions(-) diff --git a/bus/routes.go b/bus/routes.go index fac237bc3..371f4b899 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1687,14 +1687,6 @@ func (b *Bus) gougingParams(ctx context.Context) (api.GougingParams, error) { }, nil } -func (b *Bus) handleGETAlertsDeprecated(jc jape.Context) { - ar, err := b.alertMgr.Alerts(jc.Request.Context(), alerts.AlertsOpts{Offset: 0, Limit: -1}) - if jc.Check("failed to fetch alerts", err) != nil { - return - } - jc.Encode(ar.Alerts) -} - func (b *Bus) handleGETAlerts(jc jape.Context) { var severity alerts.Severity if jc.DecodeForm("severity", &severity) != nil { From 826e310932b46903693440d75d3dba9bcfbcfe5f Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 24 Sep 2024 16:35:46 +0200 Subject: [PATCH 160/708] bus: fix missing returns --- bus/routes.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bus/routes.go b/bus/routes.go index 371f4b899..f1491b195 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -275,6 +275,7 @@ func (b *Bus) walletEventsHandler(jc jape.Context) { return } else if offset < 0 { jc.Error(api.ErrInvalidOffset, http.StatusBadRequest) + return } limit := -1 @@ -282,6 +283,7 @@ func (b *Bus) walletEventsHandler(jc jape.Context) { return } else if limit < -1 { jc.Error(api.ErrInvalidLimit, http.StatusBadRequest) + return } events, err := b.w.Events(offset, limit) @@ -1518,6 +1520,7 @@ func (b *Bus) slabsPartialHandlerGET(jc jape.Context) { return } else if offset < 0 { jc.Error(api.ErrInvalidOffset, http.StatusBadRequest) + return } var length int @@ -1525,6 +1528,7 @@ func (b *Bus) slabsPartialHandlerGET(jc jape.Context) { return } else if length <= 0 { jc.Error(api.ErrInvalidLength, http.StatusBadRequest) + return } data, err := b.ms.FetchPartialSlab(jc.Request.Context(), key, uint32(offset), uint32(length)) @@ -1698,6 +1702,7 @@ func (b *Bus) handleGETAlerts(jc jape.Context) { return } else if offset < 0 { jc.Error(api.ErrInvalidOffset, http.StatusBadRequest) + return } limit := -1 @@ -1705,6 +1710,7 @@ func (b *Bus) handleGETAlerts(jc jape.Context) { return } else if limit < -1 { jc.Error(api.ErrInvalidLimit, http.StatusBadRequest) + return } ar, err := b.alertMgr.Alerts(jc.Request.Context(), alerts.AlertsOpts{ From 1338df248fedd9d627530fbe6b322a9a832b95b7 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 24 Sep 2024 15:32:19 +0200 Subject: [PATCH 161/708] bus: remove deprecated alerts logic --- bus/routes.go | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/bus/routes.go b/bus/routes.go index b3a402d84..9d83a792d 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1677,19 +1677,7 @@ func (b *Bus) gougingParams(ctx context.Context) (api.GougingParams, error) { }, nil } -func (b *Bus) handleGETAlertsDeprecated(jc jape.Context) { - ar, err := b.alertMgr.Alerts(jc.Request.Context(), alerts.AlertsOpts{Offset: 0, Limit: -1}) - if jc.Check("failed to fetch alerts", err) != nil { - return - } - jc.Encode(ar.Alerts) -} - func (b *Bus) handleGETAlerts(jc jape.Context) { - if jc.Request.FormValue("offset") == "" && jc.Request.FormValue("limit") == "" { - b.handleGETAlertsDeprecated(jc) - return - } offset, limit := 0, -1 var severity alerts.Severity if jc.DecodeForm("offset", &offset) != nil { From 37ae74f3d666e459d893afe5ae996dcfb8f3f37c Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 25 Sep 2024 15:48:02 +0200 Subject: [PATCH 162/708] stores: add Backup method --- api/bus.go | 7 ++ bus/bus.go | 55 +++++----- bus/client/client.go | 9 ++ bus/routes.go | 200 ++++++++++++++++++++---------------- internal/sql/sql.go | 4 + stores/backups.go | 29 ++++++ stores/sql/sqlite/backup.go | 134 ++++++++++++++++++++++++ stores/sql/sqlite/common.go | 2 +- 8 files changed, 320 insertions(+), 120 deletions(-) create mode 100644 stores/backups.go create mode 100644 stores/sql/sqlite/backup.go diff --git a/api/bus.go b/api/bus.go index 3b73469e3..cf2552b03 100644 --- a/api/bus.go +++ b/api/bus.go @@ -10,6 +10,8 @@ import ( var ( ErrMarkerNotFound = errors.New("marker not found") ErrMaxFundAmountExceeded = errors.New("renewal exceeds max fund amount") + ErrInvalidDatabase = errors.New("invalid database type") + ErrBackupNotSupported = errors.New("backups not supported for used database") ) type ( @@ -60,6 +62,11 @@ type ( Accounts []Account `json:"accounts"` } + BackupRequest struct { + Database string `json:"database"` + Path string `json:"path"` + } + // BusStateResponse is the response type for the /bus/state endpoint. BusStateResponse struct { StartTime TimeRFC3339 `json:"startTime"` diff --git a/bus/bus.go b/bus/bus.go index 832b603b0..a9faecf32 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -164,6 +164,7 @@ type ( Store interface { AccountStore AutopilotStore + BackupStore ChainStore HostStore MetadataStore @@ -186,6 +187,11 @@ type ( UpdateAutopilot(ctx context.Context, ap api.Autopilot) error } + // BackupStore is the interface of a store that can be backed up. + BackupStore interface { + Backup(ctx context.Context, dbID, destPath string) error + } + // A ChainStore stores information about the chain. ChainStore interface { ChainIndex(ctx context.Context) (types.ChainIndex, error) @@ -314,13 +320,7 @@ type Bus struct { cs ChainSubscriber s Syncer w Wallet - - accounts AccountStore - as AutopilotStore - hs HostStore - ms MetadataStore - mtrcs MetricsStore - ss SettingStore + store Store rhp2 *rhp2.Client rhp3 *rhp3.Client @@ -340,15 +340,10 @@ func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksMa startTime: time.Now(), masterKey: masterKey, - accounts: store, - s: s, - cm: cm, - w: w, - hs: store, - as: store, - ms: store, - mtrcs: store, - ss: store, + s: s, + cm: cm, + w: w, + store: store, alerts: alerts.WithOrigin(am, "bus"), alertMgr: am, @@ -497,6 +492,8 @@ func (b *Bus) Handler() http.Handler { "POST /syncer/connect": b.syncerConnectHandler, "GET /syncer/peers": b.syncerPeersHandler, + "POST /system/database/backup": b.postSystemSQLite3BackupHandler, + "GET /txpool/recommendedfee": b.txpoolFeeHandler, "GET /txpool/transactions": b.txpoolTransactionsHandler, "POST /txpool/broadcast": b.txpoolBroadcastHandler, @@ -533,7 +530,7 @@ func (b *Bus) Shutdown(ctx context.Context) error { } func (b *Bus) addContract(ctx context.Context, rev rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { - c, err := b.ms.AddContract(ctx, rev, contractPrice, totalCost, startHeight, state) + c, err := b.store.AddContract(ctx, rev, contractPrice, totalCost, startHeight, state) if err != nil { return api.ContractMetadata{}, err } @@ -550,7 +547,7 @@ func (b *Bus) addContract(ctx context.Context, rev rhpv2.ContractRevision, contr } func (b *Bus) addRenewedContract(ctx context.Context, renewedFrom types.FileContractID, rev rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, state string) (api.ContractMetadata, error) { - r, err := b.ms.AddRenewedContract(ctx, rev, contractPrice, totalCost, startHeight, renewedFrom, state) + r, err := b.store.AddRenewedContract(ctx, rev, contractPrice, totalCost, startHeight, renewedFrom, state) if err != nil { return api.ContractMetadata{}, err } @@ -580,7 +577,7 @@ func (b *Bus) broadcastContract(ctx context.Context, fcid types.FileContractID) }() // fetch contract - c, err := b.ms.Contract(ctx, fcid) + c, err := b.store.Contract(ctx, fcid) if err != nil { return types.TransactionID{}, fmt.Errorf("couldn't fetch contract; %w", err) } @@ -685,10 +682,10 @@ func (b *Bus) initSettings(ctx context.Context) error { api.SettingRedundancy: defaultRedundancySettings, api.SettingUploadPacking: api.DefaultUploadPackingSettings, } { - if _, err := b.ss.Setting(ctx, key); errors.Is(err, api.ErrSettingNotFound) { + if _, err := b.store.Setting(ctx, key); errors.Is(err, api.ErrSettingNotFound) { if bytes, err := json.Marshal(value); err != nil { panic("failed to marshal default settings") // should never happen - } else if err := b.ss.UpdateSetting(ctx, key, string(bytes)); err != nil { + } else if err := b.store.UpdateSetting(ctx, key, string(bytes)); err != nil { return err } } @@ -696,21 +693,21 @@ func (b *Bus) initSettings(ctx context.Context) error { // check redundancy settings for validity var rs api.RedundancySettings - if rss, err := b.ss.Setting(ctx, api.SettingRedundancy); err != nil { + if rss, err := b.store.Setting(ctx, api.SettingRedundancy); err != nil { return err } else if err := json.Unmarshal([]byte(rss), &rs); err != nil { return err } else if err := rs.Validate(); err != nil { b.logger.Warn(fmt.Sprintf("invalid redundancy setting found '%v', overwriting the redundancy settings with the default settings", rss)) bytes, _ := json.Marshal(defaultRedundancySettings) - if err := b.ss.UpdateSetting(ctx, api.SettingRedundancy, string(bytes)); err != nil { + if err := b.store.UpdateSetting(ctx, api.SettingRedundancy, string(bytes)); err != nil { return err } } // check gouging settings for validity var gs api.GougingSettings - if gss, err := b.ss.Setting(ctx, api.SettingGouging); err != nil { + if gss, err := b.store.Setting(ctx, api.SettingGouging); err != nil { return err } else if err := json.Unmarshal([]byte(gss), &gs); err != nil { return err @@ -722,7 +719,7 @@ func (b *Bus) initSettings(ctx context.Context) error { if err := gs.Validate(); err == nil { b.logger.Info(fmt.Sprintf("updating gouging settings with default EA settings: %+v", gs)) bytes, _ := json.Marshal(gs) - if err := b.ss.UpdateSetting(ctx, api.SettingGouging, string(bytes)); err != nil { + if err := b.store.UpdateSetting(ctx, api.SettingGouging, string(bytes)); err != nil { return err } } else { @@ -731,13 +728,13 @@ func (b *Bus) initSettings(ctx context.Context) error { if err := gs.Validate(); err == nil { b.logger.Info(fmt.Sprintf("updating gouging settings with default HostBlockHeightLeeway settings: %v", gs)) bytes, _ := json.Marshal(gs) - if err := b.ss.UpdateSetting(ctx, api.SettingGouging, string(bytes)); err != nil { + if err := b.store.UpdateSetting(ctx, api.SettingGouging, string(bytes)); err != nil { return err } } else { b.logger.Warn(fmt.Sprintf("invalid gouging setting found '%v', overwriting the gouging settings with the default settings", gss)) bytes, _ := json.Marshal(api.DefaultGougingSettings) - if err := b.ss.UpdateSetting(ctx, api.SettingGouging, string(bytes)); err != nil { + if err := b.store.UpdateSetting(ctx, api.SettingGouging, string(bytes)); err != nil { return err } } @@ -746,7 +743,7 @@ func (b *Bus) initSettings(ctx context.Context) error { // compat: default price pin settings var pps api.PricePinSettings - if pss, err := b.ss.Setting(ctx, api.SettingPricePinning); err != nil { + if pss, err := b.store.Setting(ctx, api.SettingPricePinning); err != nil { return err } else if err := json.Unmarshal([]byte(pss), &pps); err != nil { return err @@ -775,7 +772,7 @@ func (b *Bus) initSettings(ctx context.Context) error { updated, _ = json.Marshal(api.DefaultPricePinSettings) } - if err := b.ss.UpdateSetting(ctx, api.SettingPricePinning, string(updated)); err != nil { + if err := b.store.UpdateSetting(ctx, api.SettingPricePinning, string(updated)); err != nil { return err } } diff --git a/bus/client/client.go b/bus/client/client.go index c31b6d4a2..ee3dacc6c 100644 --- a/bus/client/client.go +++ b/bus/client/client.go @@ -1,6 +1,7 @@ package client import ( + "context" "net/http" "go.sia.tech/jape" @@ -21,6 +22,14 @@ func New(addr, password string) *Client { }} } +func (c *Client) Backup(ctx context.Context, database, dstPath string) (err error) { + err = c.c.WithContext(ctx).POST("/system/database/backup", api.BackupRequest{ + Database: database, + Path: dstPath, + }, nil) + return +} + // State returns the current state of the bus. func (c *Client) State() (state api.BusStateResponse, err error) { err = c.c.GET("/state", &state) diff --git a/bus/routes.go b/bus/routes.go index d8ffd2997..d521c01a7 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -36,7 +36,7 @@ import ( ) func (b *Bus) fetchSetting(ctx context.Context, key string, value interface{}) error { - if val, err := b.ss.Setting(ctx, key); err != nil { + if val, err := b.store.Setting(ctx, key); err != nil { return fmt.Errorf("could not get contract set settings: %w", err) } else if err := json.Unmarshal([]byte(val), &value); err != nil { b.logger.Panicf("failed to unmarshal %v settings '%s': %v", key, val, err) @@ -51,7 +51,7 @@ func (b *Bus) accountsFundHandler(jc jape.Context) { } // contract metadata - cm, err := b.ms.Contract(jc.Request.Context(), req.ContractID) + cm, err := b.store.Contract(jc.Request.Context(), req.ContractID) if jc.Check("failed to fetch contract metadata", err) != nil { return } @@ -104,7 +104,7 @@ func (b *Bus) accountsFundHandler(jc jape.Context) { } // record spending - err = b.ms.RecordContractSpending(jc.Request.Context(), []api.ContractSpendingRecord{ + err = b.store.RecordContractSpending(jc.Request.Context(), []api.ContractSpendingRecord{ { ContractSpending: api.ContractSpending{ FundAccount: deposit.Add(cost), @@ -181,6 +181,26 @@ func (b *Bus) consensusNetworkHandler(jc jape.Context) { }) } +func (b *Bus) postSystemSQLite3BackupHandler(jc jape.Context) { + var req api.BackupRequest + if jc.Decode(&req) != nil { + return + } + switch req.Database { + case "main", "metrics": + default: + jc.Error(api.ErrInvalidDatabase, http.StatusBadRequest) + return + } + err := b.store.Backup(jc.Request.Context(), req.Database, req.Path) + if errors.Is(err, api.ErrBackupNotSupported) { + jc.Error(err, http.StatusNotFound) + return + } else if jc.Check("failed to backup", err) != nil { + return + } +} + func (b *Bus) txpoolFeeHandler(jc jape.Context) { jc.Encode(b.cm.RecommendedFee()) } @@ -204,7 +224,7 @@ func (b *Bus) txpoolBroadcastHandler(jc jape.Context) { } func (b *Bus) bucketsHandlerGET(jc jape.Context) { - resp, err := b.ms.ListBuckets(jc.Request.Context()) + resp, err := b.store.ListBuckets(jc.Request.Context()) if jc.Check("couldn't list buckets", err) != nil { return } @@ -218,7 +238,7 @@ func (b *Bus) bucketsHandlerPOST(jc jape.Context) { } else if bucket.Name == "" { jc.Error(errors.New("no name provided"), http.StatusBadRequest) return - } else if jc.Check("failed to create bucket", b.ms.CreateBucket(jc.Request.Context(), bucket.Name, bucket.Policy)) != nil { + } else if jc.Check("failed to create bucket", b.store.CreateBucket(jc.Request.Context(), bucket.Name, bucket.Policy)) != nil { return } } @@ -230,7 +250,7 @@ func (b *Bus) bucketsHandlerPolicyPUT(jc jape.Context) { } else if bucket := jc.PathParam("name"); bucket == "" { jc.Error(errors.New("no bucket name provided"), http.StatusBadRequest) return - } else if jc.Check("failed to create bucket", b.ms.UpdateBucketPolicy(jc.Request.Context(), bucket, req.Policy)) != nil { + } else if jc.Check("failed to create bucket", b.store.UpdateBucketPolicy(jc.Request.Context(), bucket, req.Policy)) != nil { return } } @@ -242,7 +262,7 @@ func (b *Bus) bucketHandlerDELETE(jc jape.Context) { } else if name == "" { jc.Error(errors.New("no name provided"), http.StatusBadRequest) return - } else if jc.Check("failed to delete bucket", b.ms.DeleteBucket(jc.Request.Context(), name)) != nil { + } else if jc.Check("failed to delete bucket", b.store.DeleteBucket(jc.Request.Context(), name)) != nil { return } } @@ -255,7 +275,7 @@ func (b *Bus) bucketHandlerGET(jc jape.Context) { jc.Error(errors.New("parameter 'name' is required"), http.StatusBadRequest) return } - bucket, err := b.ms.Bucket(jc.Request.Context(), name) + bucket, err := b.store.Bucket(jc.Request.Context(), name) if errors.Is(err, api.ErrBucketNotFound) { jc.Error(err, http.StatusNotFound) return @@ -598,7 +618,7 @@ func (b *Bus) hostsHandlerGETDeprecated(jc jape.Context) { } // fetch hosts - hosts, err := b.hs.SearchHosts(jc.Request.Context(), "", api.HostFilterModeAllowed, api.UsabilityFilterModeAll, "", nil, offset, limit) + hosts, err := b.store.SearchHosts(jc.Request.Context(), "", api.HostFilterModeAllowed, api.UsabilityFilterModeAll, "", nil, offset, limit) if jc.Check(fmt.Sprintf("couldn't fetch hosts %d-%d", offset, offset+limit), err) != nil { return } @@ -615,7 +635,7 @@ func (b *Bus) searchHostsHandlerPOST(jc jape.Context) { // - properly default search params (currently no defaults are set) // - properly validate and return 400 (currently validation is done in autopilot and the store) - hosts, err := b.hs.SearchHosts(jc.Request.Context(), req.AutopilotID, req.FilterMode, req.UsabilityMode, req.AddressContains, req.KeyIn, req.Offset, req.Limit) + hosts, err := b.store.SearchHosts(jc.Request.Context(), req.AutopilotID, req.FilterMode, req.UsabilityMode, req.AddressContains, req.KeyIn, req.Offset, req.Limit) if jc.Check(fmt.Sprintf("couldn't fetch hosts %d-%d", req.Offset, req.Offset+req.Limit), err) != nil { return } @@ -635,7 +655,7 @@ func (b *Bus) hostsRemoveHandlerPOST(jc jape.Context) { jc.Error(errors.New("maxConsecutiveScanFailures must be non-zero"), http.StatusBadRequest) return } - removed, err := b.hs.RemoveOfflineHosts(jc.Request.Context(), hrr.MaxConsecutiveScanFailures, time.Duration(hrr.MaxDowntimeHours)) + removed, err := b.store.RemoveOfflineHosts(jc.Request.Context(), hrr.MaxConsecutiveScanFailures, time.Duration(hrr.MaxDowntimeHours)) if jc.Check("couldn't remove offline hosts", err) != nil { return } @@ -649,7 +669,7 @@ func (b *Bus) hostsScanningHandlerGET(jc jape.Context) { if jc.DecodeForm("offset", &offset) != nil || jc.DecodeForm("limit", &limit) != nil || jc.DecodeForm("lastScan", (*api.TimeRFC3339)(&maxLastScan)) != nil { return } - hosts, err := b.hs.HostsForScanning(jc.Request.Context(), maxLastScan, offset, limit) + hosts, err := b.store.HostsForScanning(jc.Request.Context(), maxLastScan, offset, limit) if jc.Check(fmt.Sprintf("couldn't fetch hosts %d-%d", offset, offset+limit), err) != nil { return } @@ -661,7 +681,7 @@ func (b *Bus) hostsPubkeyHandlerGET(jc jape.Context) { if jc.DecodeParam("hostkey", &hostKey) != nil { return } - host, err := b.hs.Host(jc.Request.Context(), hostKey) + host, err := b.store.Host(jc.Request.Context(), hostKey) if jc.Check("couldn't load host", err) == nil { jc.Encode(host) } @@ -672,7 +692,7 @@ func (b *Bus) hostsResetLostSectorsPOST(jc jape.Context) { if jc.DecodeParam("hostkey", &hostKey) != nil { return } - err := b.hs.ResetLostSectors(jc.Request.Context(), hostKey) + err := b.store.ResetLostSectors(jc.Request.Context(), hostKey) if jc.Check("couldn't reset lost sectors", err) != nil { return } @@ -683,7 +703,7 @@ func (b *Bus) hostsScanHandlerPOST(jc jape.Context) { if jc.Decode(&req) != nil { return } - if jc.Check("failed to record scans", b.hs.RecordHostScans(jc.Request.Context(), req.Scans)) != nil { + if jc.Check("failed to record scans", b.store.RecordHostScans(jc.Request.Context(), req.Scans)) != nil { return } } @@ -693,7 +713,7 @@ func (b *Bus) hostsPricetableHandlerPOST(jc jape.Context) { if jc.Decode(&req) != nil { return } - if jc.Check("failed to record interactions", b.hs.RecordPriceTables(jc.Request.Context(), req.PriceTableUpdates)) != nil { + if jc.Check("failed to record interactions", b.store.RecordPriceTables(jc.Request.Context(), req.PriceTableUpdates)) != nil { return } } @@ -703,13 +723,13 @@ func (b *Bus) contractsSpendingHandlerPOST(jc jape.Context) { if jc.Decode(&records) != nil { return } - if jc.Check("failed to record spending metrics for contract", b.ms.RecordContractSpending(jc.Request.Context(), records)) != nil { + if jc.Check("failed to record spending metrics for contract", b.store.RecordContractSpending(jc.Request.Context(), records)) != nil { return } } func (b *Bus) hostsAllowlistHandlerGET(jc jape.Context) { - allowlist, err := b.hs.HostAllowlist(jc.Request.Context()) + allowlist, err := b.store.HostAllowlist(jc.Request.Context()) if jc.Check("couldn't load allowlist", err) == nil { jc.Encode(allowlist) } @@ -722,14 +742,14 @@ func (b *Bus) hostsAllowlistHandlerPUT(jc jape.Context) { if len(req.Add)+len(req.Remove) > 0 && req.Clear { jc.Error(errors.New("cannot add or remove entries while clearing the allowlist"), http.StatusBadRequest) return - } else if jc.Check("couldn't update allowlist entries", b.hs.UpdateHostAllowlistEntries(ctx, req.Add, req.Remove, req.Clear)) != nil { + } else if jc.Check("couldn't update allowlist entries", b.store.UpdateHostAllowlistEntries(ctx, req.Add, req.Remove, req.Clear)) != nil { return } } } func (b *Bus) hostsBlocklistHandlerGET(jc jape.Context) { - blocklist, err := b.hs.HostBlocklist(jc.Request.Context()) + blocklist, err := b.store.HostBlocklist(jc.Request.Context()) if jc.Check("couldn't load blocklist", err) == nil { jc.Encode(blocklist) } @@ -742,7 +762,7 @@ func (b *Bus) hostsBlocklistHandlerPUT(jc jape.Context) { if len(req.Add)+len(req.Remove) > 0 && req.Clear { jc.Error(errors.New("cannot add or remove entries while clearing the blocklist"), http.StatusBadRequest) return - } else if jc.Check("couldn't update blocklist entries", b.hs.UpdateHostBlocklistEntries(ctx, req.Add, req.Remove, req.Clear)) != nil { + } else if jc.Check("couldn't update blocklist entries", b.store.UpdateHostBlocklistEntries(ctx, req.Add, req.Remove, req.Clear)) != nil { return } } @@ -753,7 +773,7 @@ func (b *Bus) contractsHandlerGET(jc jape.Context) { if jc.DecodeForm("contractset", &cs) != nil { return } - contracts, err := b.ms.Contracts(jc.Request.Context(), api.ContractsOpts{ + contracts, err := b.store.Contracts(jc.Request.Context(), api.ContractsOpts{ ContractSet: cs, }) if jc.Check("couldn't load contracts", err) == nil { @@ -767,7 +787,7 @@ func (b *Bus) contractsRenewedIDHandlerGET(jc jape.Context) { return } - md, err := b.ms.RenewedContract(jc.Request.Context(), id) + md, err := b.store.RenewedContract(jc.Request.Context(), id) if jc.Check("faild to fetch renewed contract", err) == nil { jc.Encode(md) } @@ -779,7 +799,7 @@ func (b *Bus) contractsArchiveHandlerPOST(jc jape.Context) { return } - if jc.Check("failed to archive contracts", b.ms.ArchiveContracts(jc.Request.Context(), toArchive)) == nil { + if jc.Check("failed to archive contracts", b.store.ArchiveContracts(jc.Request.Context(), toArchive)) == nil { for fcid, reason := range toArchive { b.broadcastAction(webhooks.Event{ Module: api.ModuleContract, @@ -795,7 +815,7 @@ func (b *Bus) contractsArchiveHandlerPOST(jc jape.Context) { } func (b *Bus) contractsSetsHandlerGET(jc jape.Context) { - sets, err := b.ms.ContractSets(jc.Request.Context()) + sets, err := b.store.ContractSets(jc.Request.Context()) if jc.Check("couldn't fetch contract sets", err) == nil { jc.Encode(sets) } @@ -808,7 +828,7 @@ func (b *Bus) contractsSetHandlerPUT(jc jape.Context) { return } else if jc.Decode(&req) != nil { return - } else if jc.Check("could not add contracts to set", b.ms.UpdateContractSet(jc.Request.Context(), set, req.ToAdd, req.ToRemove)) != nil { + } else if jc.Check("could not add contracts to set", b.store.UpdateContractSet(jc.Request.Context(), set, req.ToAdd, req.ToRemove)) != nil { return } else { b.broadcastAction(webhooks.Event{ @@ -826,7 +846,7 @@ func (b *Bus) contractsSetHandlerPUT(jc jape.Context) { func (b *Bus) contractsSetHandlerDELETE(jc jape.Context) { if set := jc.PathParam("set"); set != "" { - jc.Check("could not remove contract set", b.ms.RemoveContractSet(jc.Request.Context(), set)) + jc.Check("could not remove contract set", b.store.RemoveContractSet(jc.Request.Context(), set)) } } @@ -907,7 +927,7 @@ func (b *Bus) contractPruneHandlerPOST(jc jape.Context) { }() // fetch the contract from the bus - c, err := b.ms.Contract(ctx, fcid) + c, err := b.store.Contract(ctx, fcid) if errors.Is(err, api.ErrContractNotFound) { jc.Error(err, http.StatusNotFound) return @@ -923,7 +943,7 @@ func (b *Bus) contractPruneHandlerPOST(jc jape.Context) { // prune the contract rev, spending, pruned, remaining, err := b.rhp2.PruneContract(pruneCtx, b.deriveRenterKey(c.HostKey), gc, c.HostIP, c.HostKey, fcid, c.RevisionNumber, func(fcid types.FileContractID, roots []types.Hash256) ([]uint64, error) { - indices, err := b.ms.PrunableContractRoots(ctx, fcid, roots) + indices, err := b.store.PrunableContractRoots(ctx, fcid, roots) if err != nil { return nil, err } else if len(indices) > len(roots) { @@ -951,7 +971,7 @@ func (b *Bus) contractPruneHandlerPOST(jc jape.Context) { // record spending if !spending.Total().IsZero() { - b.ms.RecordContractSpending(jc.Request.Context(), []api.ContractSpendingRecord{ + b.store.RecordContractSpending(jc.Request.Context(), []api.ContractSpendingRecord{ { ContractSpending: spending, ContractID: fcid, @@ -977,7 +997,7 @@ func (b *Bus) contractPruneHandlerPOST(jc jape.Context) { } func (b *Bus) contractsPrunableDataHandlerGET(jc jape.Context) { - sizes, err := b.ms.ContractSizes(jc.Request.Context()) + sizes, err := b.store.ContractSizes(jc.Request.Context()) if jc.Check("failed to fetch contract sizes", err) != nil { return } @@ -1027,7 +1047,7 @@ func (b *Bus) contractSizeHandlerGET(jc jape.Context) { return } - size, err := b.ms.ContractSize(jc.Request.Context(), id) + size, err := b.store.ContractSize(jc.Request.Context(), id) if errors.Is(err, api.ErrContractNotFound) { jc.Error(err, http.StatusNotFound) return @@ -1067,7 +1087,7 @@ func (b *Bus) contractIDHandlerGET(jc jape.Context) { if jc.DecodeParam("id", &id) != nil { return } - c, err := b.ms.Contract(jc.Request.Context(), id) + c, err := b.store.Contract(jc.Request.Context(), id) if jc.Check("couldn't load contract", err) == nil { jc.Encode(c) } @@ -1125,7 +1145,7 @@ func (b *Bus) contractIDRenewHandlerPOST(jc jape.Context) { } // fetch the contract - c, err := b.ms.Contract(ctx, fcid) + c, err := b.store.Contract(ctx, fcid) if errors.Is(err, api.ErrContractNotFound) { jc.Error(err, http.StatusNotFound) return @@ -1134,7 +1154,7 @@ func (b *Bus) contractIDRenewHandlerPOST(jc jape.Context) { } // fetch the host - h, err := b.hs.Host(ctx, c.HostKey) + h, err := b.store.Host(ctx, c.HostKey) if jc.Check("couldn't fetch host", err) != nil { return } @@ -1204,7 +1224,7 @@ func (b *Bus) contractIDRootsHandlerGET(jc jape.Context) { return } - roots, err := b.ms.ContractRoots(jc.Request.Context(), id) + roots, err := b.store.ContractRoots(jc.Request.Context(), id) if jc.Check("couldn't fetch contract sectors", err) == nil { jc.Encode(api.ContractRootsResponse{ Roots: roots, @@ -1218,11 +1238,11 @@ func (b *Bus) contractIDHandlerDELETE(jc jape.Context) { if jc.DecodeParam("id", &id) != nil { return } - jc.Check("couldn't remove contract", b.ms.ArchiveContract(jc.Request.Context(), id, api.ContractArchivalReasonRemoved)) + jc.Check("couldn't remove contract", b.store.ArchiveContract(jc.Request.Context(), id, api.ContractArchivalReasonRemoved)) } func (b *Bus) contractsAllHandlerDELETE(jc jape.Context) { - jc.Check("couldn't remove contracts", b.ms.ArchiveAllContracts(jc.Request.Context(), api.ContractArchivalReasonRemoved)) + jc.Check("couldn't remove contracts", b.store.ArchiveAllContracts(jc.Request.Context(), api.ContractArchivalReasonRemoved)) } func (b *Bus) searchObjectsHandlerGET(jc jape.Context) { @@ -1236,7 +1256,7 @@ func (b *Bus) searchObjectsHandlerGET(jc jape.Context) { if jc.DecodeForm("bucket", &bucket) != nil { return } - keys, err := b.ms.SearchObjects(jc.Request.Context(), bucket, key, offset, limit) + keys, err := b.store.SearchObjects(jc.Request.Context(), bucket, key, offset, limit) if jc.Check("couldn't list objects", err) != nil { return } @@ -1265,9 +1285,9 @@ func (b *Bus) objectsHandlerGET(jc jape.Context) { var o api.Object var err error if onlymetadata { - o, err = b.ms.ObjectMetadata(jc.Request.Context(), bucket, path) + o, err = b.store.ObjectMetadata(jc.Request.Context(), bucket, path) } else { - o, err = b.ms.Object(jc.Request.Context(), bucket, path) + o, err = b.store.Object(jc.Request.Context(), bucket, path) } if errors.Is(err, api.ErrObjectNotFound) { jc.Error(err, http.StatusNotFound) @@ -1314,7 +1334,7 @@ func (b *Bus) objectEntriesHandlerGET(jc jape.Context, path string) { } // look for object entries - entries, hasMore, err := b.ms.ObjectEntries(jc.Request.Context(), bucket, path, prefix, sortBy, sortDir, marker, offset, limit) + entries, hasMore, err := b.store.ObjectEntries(jc.Request.Context(), bucket, path, prefix, sortBy, sortDir, marker, offset, limit) if jc.Check("couldn't list object entries", err) != nil { return } @@ -1329,7 +1349,7 @@ func (b *Bus) objectsHandlerPUT(jc jape.Context) { } else if aor.Bucket == "" { aor.Bucket = api.DefaultBucketName } - jc.Check("couldn't store object", b.ms.UpdateObject(jc.Request.Context(), aor.Bucket, jc.PathParam("path"), aor.ContractSet, aor.ETag, aor.MimeType, aor.Metadata, aor.Object)) + jc.Check("couldn't store object", b.store.UpdateObject(jc.Request.Context(), aor.Bucket, jc.PathParam("path"), aor.ContractSet, aor.ETag, aor.MimeType, aor.Metadata, aor.Object)) } func (b *Bus) objectsCopyHandlerPOST(jc jape.Context) { @@ -1337,7 +1357,7 @@ func (b *Bus) objectsCopyHandlerPOST(jc jape.Context) { if jc.Decode(&orr) != nil { return } - om, err := b.ms.CopyObject(jc.Request.Context(), orr.SourceBucket, orr.DestinationBucket, orr.SourcePath, orr.DestinationPath, orr.MimeType, orr.Metadata) + om, err := b.store.CopyObject(jc.Request.Context(), orr.SourceBucket, orr.DestinationBucket, orr.SourcePath, orr.DestinationPath, orr.MimeType, orr.Metadata) if jc.Check("couldn't copy object", err) != nil { return } @@ -1355,7 +1375,7 @@ func (b *Bus) objectsListHandlerPOST(jc jape.Context) { if req.Bucket == "" { req.Bucket = api.DefaultBucketName } - resp, err := b.ms.ListObjects(jc.Request.Context(), req.Bucket, req.Prefix, req.SortBy, req.SortDir, req.Marker, req.Limit) + resp, err := b.store.ListObjects(jc.Request.Context(), req.Bucket, req.Prefix, req.SortBy, req.SortDir, req.Marker, req.Limit) if errors.Is(err, api.ErrMarkerNotFound) { jc.Error(err, http.StatusBadRequest) return @@ -1378,7 +1398,7 @@ func (b *Bus) objectsRenameHandlerPOST(jc jape.Context) { jc.Error(fmt.Errorf("can't rename dirs with mode %v", orr.Mode), http.StatusBadRequest) return } - jc.Check("couldn't rename object", b.ms.RenameObject(jc.Request.Context(), orr.Bucket, orr.From, orr.To, orr.Force)) + jc.Check("couldn't rename object", b.store.RenameObject(jc.Request.Context(), orr.Bucket, orr.From, orr.To, orr.Force)) return } else if orr.Mode == api.ObjectsRenameModeMulti { // Multi object rename. @@ -1386,7 +1406,7 @@ func (b *Bus) objectsRenameHandlerPOST(jc jape.Context) { jc.Error(fmt.Errorf("can't rename file with mode %v", orr.Mode), http.StatusBadRequest) return } - jc.Check("couldn't rename objects", b.ms.RenameObjects(jc.Request.Context(), orr.Bucket, orr.From, orr.To, orr.Force)) + jc.Check("couldn't rename objects", b.store.RenameObjects(jc.Request.Context(), orr.Bucket, orr.From, orr.To, orr.Force)) return } else { // Invalid mode. @@ -1406,9 +1426,9 @@ func (b *Bus) objectsHandlerDELETE(jc jape.Context) { } var err error if batch { - err = b.ms.RemoveObjects(jc.Request.Context(), bucket, jc.PathParam("path")) + err = b.store.RemoveObjects(jc.Request.Context(), bucket, jc.PathParam("path")) } else { - err = b.ms.RemoveObject(jc.Request.Context(), bucket, jc.PathParam("path")) + err = b.store.RemoveObject(jc.Request.Context(), bucket, jc.PathParam("path")) } if errors.Is(err, api.ErrObjectNotFound) { jc.Error(err, http.StatusNotFound) @@ -1418,7 +1438,7 @@ func (b *Bus) objectsHandlerDELETE(jc jape.Context) { } func (b *Bus) slabbuffersHandlerGET(jc jape.Context) { - buffers, err := b.ms.SlabBuffers(jc.Request.Context()) + buffers, err := b.store.SlabBuffers(jc.Request.Context()) if jc.Check("couldn't get slab buffers info", err) != nil { return } @@ -1430,7 +1450,7 @@ func (b *Bus) objectsStatshandlerGET(jc jape.Context) { if jc.DecodeForm("bucket", &opts.Bucket) != nil { return } - info, err := b.ms.ObjectsStats(jc.Request.Context(), opts) + info, err := b.store.ObjectsStats(jc.Request.Context(), opts) if jc.Check("couldn't get objects stats", err) != nil { return } @@ -1454,7 +1474,7 @@ func (b *Bus) packedSlabsHandlerFetchPOST(jc jape.Context) { jc.Error(fmt.Errorf("contract_set must be non-empty"), http.StatusBadRequest) return } - slabs, err := b.ms.PackedSlabsForUpload(jc.Request.Context(), time.Duration(psrg.LockingDuration), psrg.MinShards, psrg.TotalShards, psrg.ContractSet, psrg.Limit) + slabs, err := b.store.PackedSlabsForUpload(jc.Request.Context(), time.Duration(psrg.LockingDuration), psrg.MinShards, psrg.TotalShards, psrg.ContractSet, psrg.Limit) if jc.Check("couldn't get packed slabs", err) != nil { return } @@ -1466,7 +1486,7 @@ func (b *Bus) packedSlabsHandlerDonePOST(jc jape.Context) { if jc.Decode(&psrp) != nil { return } - jc.Check("failed to mark packed slab(s) as uploaded", b.ms.MarkPackedSlabsUploaded(jc.Request.Context(), psrp.Slabs)) + jc.Check("failed to mark packed slab(s) as uploaded", b.store.MarkPackedSlabsUploaded(jc.Request.Context(), psrp.Slabs)) } func (b *Bus) sectorsHostRootHandlerDELETE(jc jape.Context) { @@ -1477,7 +1497,7 @@ func (b *Bus) sectorsHostRootHandlerDELETE(jc jape.Context) { } else if jc.DecodeParam("root", &root) != nil { return } - n, err := b.ms.DeleteHostSector(jc.Request.Context(), hk, root) + n, err := b.store.DeleteHostSector(jc.Request.Context(), hk, root) if jc.Check("failed to mark sector as lost", err) != nil { return } else if n > 0 { @@ -1494,7 +1514,7 @@ func (b *Bus) slabObjectsHandlerGET(jc jape.Context) { if jc.DecodeForm("bucket", &bucket) != nil { return } - objects, err := b.ms.ObjectsBySlabKey(jc.Request.Context(), bucket, key) + objects, err := b.store.ObjectsBySlabKey(jc.Request.Context(), bucket, key) if jc.Check("failed to retrieve objects by slab", err) != nil { return } @@ -1506,7 +1526,7 @@ func (b *Bus) slabHandlerGET(jc jape.Context) { if jc.DecodeParam("key", &key) != nil { return } - slab, err := b.ms.Slab(jc.Request.Context(), key) + slab, err := b.store.Slab(jc.Request.Context(), key) if errors.Is(err, api.ErrSlabNotFound) { jc.Error(err, http.StatusNotFound) return @@ -1520,18 +1540,18 @@ func (b *Bus) slabHandlerGET(jc jape.Context) { func (b *Bus) slabHandlerPUT(jc jape.Context) { var usr api.UpdateSlabRequest if jc.Decode(&usr) == nil { - jc.Check("couldn't update slab", b.ms.UpdateSlab(jc.Request.Context(), usr.Slab, usr.ContractSet)) + jc.Check("couldn't update slab", b.store.UpdateSlab(jc.Request.Context(), usr.Slab, usr.ContractSet)) } } func (b *Bus) slabsRefreshHealthHandlerPOST(jc jape.Context) { - jc.Check("failed to recompute health", b.ms.RefreshHealth(jc.Request.Context())) + jc.Check("failed to recompute health", b.store.RefreshHealth(jc.Request.Context())) } func (b *Bus) slabsMigrationHandlerPOST(jc jape.Context) { var msr api.MigrationSlabsRequest if jc.Decode(&msr) == nil { - if slabs, err := b.ms.UnhealthySlabs(jc.Request.Context(), msr.HealthCutoff, msr.ContractSet, msr.Limit); jc.Check("couldn't fetch slabs for migration", err) == nil { + if slabs, err := b.store.UnhealthySlabs(jc.Request.Context(), msr.HealthCutoff, msr.ContractSet, msr.Limit); jc.Check("couldn't fetch slabs for migration", err) == nil { jc.Encode(api.UnhealthySlabsResponse{ Slabs: slabs, }) @@ -1558,7 +1578,7 @@ func (b *Bus) slabsPartialHandlerGET(jc jape.Context) { jc.Error(fmt.Errorf("length must be positive and offset must be non-negative"), http.StatusBadRequest) return } - data, err := b.ms.FetchPartialSlab(jc.Request.Context(), key, uint32(offset), uint32(length)) + data, err := b.store.FetchPartialSlab(jc.Request.Context(), key, uint32(offset), uint32(length)) if errors.Is(err, api.ErrObjectNotFound) { jc.Error(err, http.StatusNotFound) return @@ -1598,7 +1618,7 @@ func (b *Bus) slabsPartialHandlerPOST(jc jape.Context) { if jc.Check("failed to read request body", err) != nil { return } - slabs, bufferSize, err := b.ms.AddPartialSlab(jc.Request.Context(), data, uint8(minShards), uint8(totalShards), contractSet) + slabs, bufferSize, err := b.store.AddPartialSlab(jc.Request.Context(), data, uint8(minShards), uint8(totalShards), contractSet) if jc.Check("failed to add partial slab", err) != nil { return } @@ -1614,7 +1634,7 @@ func (b *Bus) slabsPartialHandlerPOST(jc jape.Context) { } func (b *Bus) settingsHandlerGET(jc jape.Context) { - if settings, err := b.ss.Settings(jc.Request.Context()); jc.Check("couldn't load settings", err) == nil { + if settings, err := b.store.Settings(jc.Request.Context()); jc.Check("couldn't load settings", err) == nil { jc.Encode(settings) } } @@ -1628,7 +1648,7 @@ func (b *Bus) settingKeyHandlerGET(jc jape.Context) { return } - setting, err := b.ss.Setting(jc.Request.Context(), jc.PathParam("key")) + setting, err := b.store.Setting(jc.Request.Context(), jc.PathParam("key")) if errors.Is(err, api.ErrSettingNotFound) { jc.Error(err, http.StatusNotFound) return @@ -1648,7 +1668,7 @@ func (b *Bus) settingKeyHandlerGET(jc jape.Context) { pps.Autopilots = make(map[string]api.AutopilotPins) } // populate the Autopilots map with the current autopilots - aps, err := b.as.Autopilots(jc.Request.Context()) + aps, err := b.store.Autopilots(jc.Request.Context()) if jc.Check("failed to fetch autopilots", err) != nil { return } @@ -1731,7 +1751,7 @@ func (b *Bus) settingKeyHandlerPUT(jc jape.Context) { b.pinMgr.TriggerUpdate() } - if jc.Check("could not update setting", b.ss.UpdateSetting(jc.Request.Context(), key, string(data))) == nil { + if jc.Check("could not update setting", b.store.UpdateSetting(jc.Request.Context(), key, string(data))) == nil { b.broadcastAction(webhooks.Event{ Module: api.ModuleSetting, Event: api.EventUpdate, @@ -1751,7 +1771,7 @@ func (b *Bus) settingKeyHandlerDELETE(jc jape.Context) { return } - if jc.Check("could not delete setting", b.ss.DeleteSetting(jc.Request.Context(), key)) == nil { + if jc.Check("could not delete setting", b.store.DeleteSetting(jc.Request.Context(), key)) == nil { b.broadcastAction(webhooks.Event{ Module: api.ModuleSetting, Event: api.EventDelete, @@ -1772,7 +1792,7 @@ func (b *Bus) contractIDAncestorsHandler(jc jape.Context) { if jc.DecodeForm("minStartHeight", &minStartHeight) != nil { return } - ancestors, err := b.ms.AncestorContracts(jc.Request.Context(), fcid, uint64(minStartHeight)) + ancestors, err := b.store.AncestorContracts(jc.Request.Context(), fcid, uint64(minStartHeight)) if jc.Check("failed to fetch ancestor contracts", err) != nil { return } @@ -1852,14 +1872,14 @@ func (b *Bus) paramsHandlerGougingGET(jc jape.Context) { func (b *Bus) gougingParams(ctx context.Context) (api.GougingParams, error) { var gs api.GougingSettings - if gss, err := b.ss.Setting(ctx, api.SettingGouging); err != nil { + if gss, err := b.store.Setting(ctx, api.SettingGouging); err != nil { return api.GougingParams{}, err } else if err := json.Unmarshal([]byte(gss), &gs); err != nil { b.logger.Panicf("failed to unmarshal gouging settings '%s': %v", gss, err) } var rs api.RedundancySettings - if rss, err := b.ss.Setting(ctx, api.SettingRedundancy); err != nil { + if rss, err := b.store.Setting(ctx, api.SettingRedundancy); err != nil { return api.GougingParams{}, err } else if err := json.Unmarshal([]byte(rss), &rs); err != nil { b.logger.Panicf("failed to unmarshal redundancy settings '%s': %v", rss, err) @@ -1935,7 +1955,7 @@ func (b *Bus) accountsHandlerGET(jc jape.Context) { if jc.DecodeForm("owner", &owner) != nil { return } - accounts, err := b.accounts.Accounts(jc.Request.Context(), owner) + accounts, err := b.store.Accounts(jc.Request.Context(), owner) if err != nil { jc.Error(err, http.StatusInternalServerError) return @@ -1954,13 +1974,13 @@ func (b *Bus) accountsHandlerPOST(jc jape.Context) { return } } - if b.accounts.SaveAccounts(jc.Request.Context(), req.Accounts) != nil { + if b.store.SaveAccounts(jc.Request.Context(), req.Accounts) != nil { return } } func (b *Bus) autopilotsListHandlerGET(jc jape.Context) { - if autopilots, err := b.as.Autopilots(jc.Request.Context()); jc.Check("failed to fetch autopilots", err) == nil { + if autopilots, err := b.store.Autopilots(jc.Request.Context()); jc.Check("failed to fetch autopilots", err) == nil { jc.Encode(autopilots) } } @@ -1970,7 +1990,7 @@ func (b *Bus) autopilotsHandlerGET(jc jape.Context) { if jc.DecodeParam("id", &id) != nil { return } - ap, err := b.as.Autopilot(jc.Request.Context(), id) + ap, err := b.store.Autopilot(jc.Request.Context(), id) if errors.Is(err, api.ErrAutopilotNotFound) { jc.Error(err, http.StatusNotFound) return @@ -1998,7 +2018,7 @@ func (b *Bus) autopilotsHandlerPUT(jc jape.Context) { return } - if jc.Check("failed to update autopilot", b.as.UpdateAutopilot(jc.Request.Context(), ap)) == nil { + if jc.Check("failed to update autopilot", b.store.UpdateAutopilot(jc.Request.Context(), ap)) == nil { b.pinMgr.TriggerUpdate() } } @@ -2017,7 +2037,7 @@ func (b *Bus) autopilotHostCheckHandlerPUT(jc jape.Context) { return } - err := b.hs.UpdateHostCheck(jc.Request.Context(), id, hk, hc) + err := b.store.UpdateHostCheck(jc.Request.Context(), id, hk, hc) if errors.Is(err, api.ErrAutopilotNotFound) { jc.Error(err, http.StatusNotFound) return @@ -2147,7 +2167,7 @@ func (b *Bus) metricsHandlerDELETE(jc jape.Context) { return } - err := b.mtrcs.PruneMetrics(jc.Request.Context(), metric, cutoff) + err := b.store.PruneMetrics(jc.Request.Context(), metric, cutoff) if jc.Check("failed to prune metrics", err) != nil { return } @@ -2164,7 +2184,7 @@ func (b *Bus) metricsHandlerPUT(jc jape.Context) { if err := json.NewDecoder(jc.Request.Body).Decode(&req); err != nil { jc.Error(fmt.Errorf("couldn't decode request type (%T): %w", req, err), http.StatusBadRequest) return - } else if jc.Check("failed to record contract prune metric", b.mtrcs.RecordContractPruneMetric(jc.Request.Context(), req.Metrics...)) != nil { + } else if jc.Check("failed to record contract prune metric", b.store.RecordContractPruneMetric(jc.Request.Context(), req.Metrics...)) != nil { return } case api.MetricContractSetChurn: @@ -2173,7 +2193,7 @@ func (b *Bus) metricsHandlerPUT(jc jape.Context) { if err := json.NewDecoder(jc.Request.Body).Decode(&req); err != nil { jc.Error(fmt.Errorf("couldn't decode request type (%T): %w", req, err), http.StatusBadRequest) return - } else if jc.Check("failed to record contract churn metric", b.mtrcs.RecordContractSetChurnMetric(jc.Request.Context(), req.Metrics...)) != nil { + } else if jc.Check("failed to record contract churn metric", b.store.RecordContractSetChurnMetric(jc.Request.Context(), req.Metrics...)) != nil { return } default: @@ -2270,15 +2290,15 @@ func (b *Bus) metricsHandlerGET(jc jape.Context) { func (b *Bus) metrics(ctx context.Context, key string, start time.Time, n uint64, interval time.Duration, opts interface{}) (interface{}, error) { switch key { case api.MetricContract: - return b.mtrcs.ContractMetrics(ctx, start, n, interval, opts.(api.ContractMetricsQueryOpts)) + return b.store.ContractMetrics(ctx, start, n, interval, opts.(api.ContractMetricsQueryOpts)) case api.MetricContractPrune: - return b.mtrcs.ContractPruneMetrics(ctx, start, n, interval, opts.(api.ContractPruneMetricsQueryOpts)) + return b.store.ContractPruneMetrics(ctx, start, n, interval, opts.(api.ContractPruneMetricsQueryOpts)) case api.MetricContractSet: - return b.mtrcs.ContractSetMetrics(ctx, start, n, interval, opts.(api.ContractSetMetricsQueryOpts)) + return b.store.ContractSetMetrics(ctx, start, n, interval, opts.(api.ContractSetMetricsQueryOpts)) case api.MetricContractSetChurn: - return b.mtrcs.ContractSetChurnMetrics(ctx, start, n, interval, opts.(api.ContractSetChurnMetricsQueryOpts)) + return b.store.ContractSetChurnMetrics(ctx, start, n, interval, opts.(api.ContractSetChurnMetricsQueryOpts)) case api.MetricWallet: - return b.mtrcs.WalletMetrics(ctx, start, n, interval, opts.(api.WalletMetricsQueryOpts)) + return b.store.WalletMetrics(ctx, start, n, interval, opts.(api.WalletMetricsQueryOpts)) } return nil, fmt.Errorf("unknown metric '%s'", key) } @@ -2298,7 +2318,7 @@ func (b *Bus) multipartHandlerCreatePOST(jc jape.Context) { key = *req.Key } - resp, err := b.ms.CreateMultipartUpload(jc.Request.Context(), req.Bucket, req.Path, key, req.MimeType, req.Metadata) + resp, err := b.store.CreateMultipartUpload(jc.Request.Context(), req.Bucket, req.Path, key, req.MimeType, req.Metadata) if jc.Check("failed to create multipart upload", err) != nil { return } @@ -2310,7 +2330,7 @@ func (b *Bus) multipartHandlerAbortPOST(jc jape.Context) { if jc.Decode(&req) != nil { return } - err := b.ms.AbortMultipartUpload(jc.Request.Context(), req.Bucket, req.Path, req.UploadID) + err := b.store.AbortMultipartUpload(jc.Request.Context(), req.Bucket, req.Path, req.UploadID) if jc.Check("failed to abort multipart upload", err) != nil { return } @@ -2321,7 +2341,7 @@ func (b *Bus) multipartHandlerCompletePOST(jc jape.Context) { if jc.Decode(&req) != nil { return } - resp, err := b.ms.CompleteMultipartUpload(jc.Request.Context(), req.Bucket, req.Path, req.UploadID, req.Parts, api.CompleteMultipartOptions{ + resp, err := b.store.CompleteMultipartUpload(jc.Request.Context(), req.Bucket, req.Path, req.UploadID, req.Parts, api.CompleteMultipartOptions{ Metadata: req.Metadata, }) if jc.Check("failed to complete multipart upload", err) != nil { @@ -2350,14 +2370,14 @@ func (b *Bus) multipartHandlerUploadPartPUT(jc jape.Context) { jc.Error(errors.New("upload_id must be non-empty"), http.StatusBadRequest) return } - err := b.ms.AddMultipartPart(jc.Request.Context(), req.Bucket, req.Path, req.ContractSet, req.ETag, req.UploadID, req.PartNumber, req.Slices) + err := b.store.AddMultipartPart(jc.Request.Context(), req.Bucket, req.Path, req.ContractSet, req.ETag, req.UploadID, req.PartNumber, req.Slices) if jc.Check("failed to upload part", err) != nil { return } } func (b *Bus) multipartHandlerUploadGET(jc jape.Context) { - resp, err := b.ms.MultipartUpload(jc.Request.Context(), jc.PathParam("id")) + resp, err := b.store.MultipartUpload(jc.Request.Context(), jc.PathParam("id")) if jc.Check("failed to get multipart upload", err) != nil { return } @@ -2369,7 +2389,7 @@ func (b *Bus) multipartHandlerListUploadsPOST(jc jape.Context) { if jc.Decode(&req) != nil { return } - resp, err := b.ms.MultipartUploads(jc.Request.Context(), req.Bucket, req.Prefix, req.PathMarker, req.UploadIDMarker, req.Limit) + resp, err := b.store.MultipartUploads(jc.Request.Context(), req.Bucket, req.Prefix, req.PathMarker, req.UploadIDMarker, req.Limit) if jc.Check("failed to list multipart uploads", err) != nil { return } @@ -2381,7 +2401,7 @@ func (b *Bus) multipartHandlerListPartsPOST(jc jape.Context) { if jc.Decode(&req) != nil { return } - resp, err := b.ms.MultipartUploadParts(jc.Request.Context(), req.Bucket, req.Path, req.UploadID, req.PartNumberMarker, int64(req.Limit)) + resp, err := b.store.MultipartUploadParts(jc.Request.Context(), req.Bucket, req.Path, req.UploadID, req.PartNumberMarker, int64(req.Limit)) if jc.Check("failed to list multipart upload parts", err) != nil { return } diff --git a/internal/sql/sql.go b/internal/sql/sql.go index 2b5920f9d..8859f0a2f 100644 --- a/internal/sql/sql.go +++ b/internal/sql/sql.go @@ -78,6 +78,10 @@ func NewDB(db *sql.DB, log *zap.Logger, dbLockedMsgs []string, longQueryDuration }, nil } +func (s *DB) DB() *sql.DB { + return s.db +} + // exec executes a query without returning any rows. The args are for // any placeholder parameters in the query. func (s *DB) Exec(ctx context.Context, query string, args ...any) (sql.Result, error) { diff --git a/stores/backups.go b/stores/backups.go new file mode 100644 index 000000000..bf4c9a348 --- /dev/null +++ b/stores/backups.go @@ -0,0 +1,29 @@ +package stores + +import ( + "context" + + "go.sia.tech/renterd/api" + "go.sia.tech/renterd/stores/sql/sqlite" +) + +func (s *SQLStore) Backup(ctx context.Context, dbID, destPath string) error { + switch dbID { + case "main": + switch db := s.db.(type) { + case *sqlite.MainDatabase: + return db.Backup(ctx, dbID, destPath) + default: + return api.ErrBackupNotSupported + } + case "metrics": + switch db := s.dbMetrics.(type) { + case *sqlite.MetricsDatabase: + return db.Backup(ctx, dbID, destPath) + default: + return api.ErrBackupNotSupported + } + default: + return api.ErrInvalidDatabase + } +} diff --git a/stores/sql/sqlite/backup.go b/stores/sql/sqlite/backup.go new file mode 100644 index 000000000..37236b719 --- /dev/null +++ b/stores/sql/sqlite/backup.go @@ -0,0 +1,134 @@ +package sqlite + +import ( + "context" + dsql "database/sql" + "errors" + "fmt" + "os" + + "github.com/mattn/go-sqlite3" +) + +func sqlConn(ctx context.Context, db *dsql.DB) (c *sqlite3.SQLiteConn, err error) { + if err := db.PingContext(ctx); err != nil { + return nil, fmt.Errorf("failed to ping database: %w", err) + } + + raw, err := db.Conn(ctx) + if err != nil { + return nil, fmt.Errorf("failed to create connection: %w", err) + } + err = raw.Raw(func(driverConn any) error { + var ok bool + c, ok = driverConn.(*sqlite3.SQLiteConn) + if !ok { + return errors.New("connection is not a SQLiteConn") + } + return nil + }) + return +} + +// backupDB is a helper function that creates a backup of the source database at +// the specified path. The backup is created using the SQLite backup API, which +// is safe to use with a live database. +func backupDB(ctx context.Context, src *dsql.DB, destPath string) (err error) { + // create the destination database + dest, err := dsql.Open("sqlite3", destPath) + if err != nil { + return fmt.Errorf("failed to open destination database: %w", err) + } + defer func() { + // errors are ignored + dest.Close() + if err != nil { + // remove the destination file if an error occurred during backup + os.Remove(destPath) + } + }() + + // initialize the source conn + sc, err := sqlConn(ctx, src) + if err != nil { + return fmt.Errorf("failed to create source connection: %w", err) + } + defer sc.Close() + + // initialize the destination conn + dc, err := sqlConn(ctx, dest) + if err != nil { + return fmt.Errorf("failed to create destination connection: %w", err) + } + defer dc.Close() + + // start the backup + // NOTE: 'main' referes to the schema of the database + backup, err := dc.Backup("main", sc, "main") + if err != nil { + return fmt.Errorf("failed to create backup: %w", err) + } + // ensure the backup is closed + defer func() { + if err := backup.Finish(); err != nil { + panic(fmt.Errorf("failed to finish backup: %w", err)) + } + }() + + for step := 1; ; step++ { + select { + case <-ctx.Done(): + return ctx.Err() + default: + } + + if done, err := backup.Step(100); err != nil { + return fmt.Errorf("backup step %d failed: %w", step, err) + } else if done { + break + } + } + if _, err := dest.Exec("VACUUM"); err != nil { + return fmt.Errorf("failed to vacuum destination database: %w", err) + } + return nil +} + +func (s *MainDatabase) Backup(ctx context.Context, dbID, destPath string) error { + return backupDB(ctx, s.db.DB(), destPath) +} + +func (s *MetricsDatabase) Backup(ctx context.Context, dbID, destPath string) error { + return backupDB(ctx, s.db.DB(), destPath) +} + +// Backup creates a backup of the database at the specified path. The backup is +// created using the SQLite backup API, which is safe to use with a +// live database. +// +// This function should be used if the database is not already open in the +// current process. If the database is already open, use Store.Backup. +func Backup(ctx context.Context, srcPath, destPath string) (err error) { + // ensure the source file exists + if _, err := os.Stat(srcPath); err != nil { + return fmt.Errorf("source file does not exist: %w", err) + } + + // prevent overwriting the destination file + if _, err := os.Stat(destPath); !errors.Is(err, os.ErrNotExist) { + return errors.New("destination file already exists") + } else if destPath == "" { + return errors.New("empty destination path") + } + + // open a new connection to the source database. We don't want to run + // any migrations or other operations on the source database since it + // might be open in another process. + src, err := dsql.Open("sqlite3", srcPath) + if err != nil { + return fmt.Errorf("failed to open source database: %w", err) + } + defer src.Close() + + return backupDB(ctx, src, destPath) +} diff --git a/stores/sql/sqlite/common.go b/stores/sql/sqlite/common.go index fd46688b8..6a061e84f 100644 --- a/stores/sql/sqlite/common.go +++ b/stores/sql/sqlite/common.go @@ -22,7 +22,7 @@ var deadlockMsgs = []string{ var migrationsFs embed.FS func Open(path string) (*dsql.DB, error) { - return dsql.Open("sqlite3", fmt.Sprintf("file:%s?_busy_timeout=30000&_foreign_keys=1&_journal_mode=WAL&_secure_delete=false&_cache_size=65536", path)) + return dsql.Open("sqlite3", fmt.Sprintf("file:%s?_busy_timeout=30000&_foreign_keys=1&_journal_mode=WAL&_secure_delete=false&_auto_vacuum=INCREMENTAL&_cache_size=65536", path)) } func OpenEphemeral(name string) (*dsql.DB, error) { From 5a5c3802f603b8f76e473099bd4898da7e9afb16 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 25 Sep 2024 16:14:00 +0200 Subject: [PATCH 163/708] cmd: add cmd to cli for backing up a sqlite database --- cmd/renterd/commands.go | 11 +++++++++++ cmd/renterd/main.go | 8 +++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/cmd/renterd/commands.go b/cmd/renterd/commands.go index 819eb9de5..554dd0adb 100644 --- a/cmd/renterd/commands.go +++ b/cmd/renterd/commands.go @@ -1,16 +1,27 @@ package main import ( + "context" + "flag" "fmt" + "log" "os" "go.sia.tech/core/types" "go.sia.tech/coreutils/wallet" "go.sia.tech/renterd/build" "go.sia.tech/renterd/config" + "go.sia.tech/renterd/stores/sql/sqlite" "gopkg.in/yaml.v3" ) +func cmdBackup() { + err := sqlite.Backup(context.Background(), flag.Arg(2), flag.Arg(3)) + if err != nil { + log.Fatal("failed to create backup", err) + } +} + func cmdBuildConfig(cfg *config.Config) { if _, err := os.Stat("renterd.yml"); err == nil { if !promptYesNo("renterd.yml already exists. Would you like to overwrite it?") { diff --git a/cmd/renterd/main.go b/cmd/renterd/main.go index a32ecceed..b557512cb 100644 --- a/cmd/renterd/main.go +++ b/cmd/renterd/main.go @@ -23,10 +23,13 @@ Usage: ` // usageFooter is the footer for the CLI usage text. usageFooter = ` -There are 3 commands: +There are 4 commands: - version: prints the network as well as build information - config: builds a YAML config file through a series of prompts - seed: generates a new seed and prints the recovery phrase + - sqlite backup : backs up the sqlite database at a + specified source path to the specified destination path + (safe to use while renterd is running) See the documentation (https://docs.sia.tech/) for more information and examples on how to configure and use renterd. @@ -52,6 +55,9 @@ func main() { } else if flag.Arg(0) == "config" { cmdBuildConfig(&cfg) return + } else if flag.Arg(0) == "sqlite" && flag.Arg(1) == "backup" && + flag.Arg(2) != "" && flag.Arg(3) != "" { + cmdBackup() } else if flag.Arg(0) != "" { flag.Usage() return From dd500bf39a642ed07ea8abfc4f4b60d468d6ce88 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 25 Sep 2024 16:30:13 +0200 Subject: [PATCH 164/708] e2e: add TestBackup --- cmd/renterd/main.go | 1 + internal/test/e2e/cluster_test.go | 41 +++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/cmd/renterd/main.go b/cmd/renterd/main.go index b557512cb..4c172143a 100644 --- a/cmd/renterd/main.go +++ b/cmd/renterd/main.go @@ -58,6 +58,7 @@ func main() { } else if flag.Arg(0) == "sqlite" && flag.Arg(1) == "backup" && flag.Arg(2) != "" && flag.Arg(3) != "" { cmdBackup() + return } else if flag.Arg(0) != "" { flag.Usage() return diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index ef81e8d39..f13ec8149 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -30,6 +30,7 @@ import ( "go.sia.tech/renterd/internal/test" "go.sia.tech/renterd/internal/utils" "go.sia.tech/renterd/object" + "go.sia.tech/renterd/stores/sql/sqlite" "go.uber.org/zap" "lukechampine.com/frand" ) @@ -2707,3 +2708,43 @@ func TestHostScan(t *testing.T) { t.Fatalf("expected 1 hosts, got %v", len(toScan)) } } + +func TestBackup(t *testing.T) { + cluster := newTestCluster(t, clusterOptsDefault) + defer cluster.Shutdown() + bus := cluster.Bus + + // test that backup fails for MySQL + isSqlite := config.MySQLConfigFromEnv().URI == "" + if !isSqlite { + err := bus.Backup(context.Background(), "", "") + cluster.tt.AssertIs(err, api.ErrBackupNotSupported) + return + } + + // test creating a backup + tmpDir := t.TempDir() + mainDst := filepath.Join(tmpDir, "main.sqlite") + metricsDst := filepath.Join(tmpDir, "metrics.sqlite") + cluster.tt.OK(bus.Backup(context.Background(), "main", mainDst)) + cluster.tt.OK(bus.Backup(context.Background(), "metrics", metricsDst)) + cluster.tt.OKAll(os.Stat(mainDst)) + cluster.tt.OKAll(os.Stat(metricsDst)) + + // test creating backing up an invalid db + invalidDst := filepath.Join(tmpDir, "invalid.sqlite") + err := bus.Backup(context.Background(), "invalid", invalidDst) + cluster.tt.AssertIs(err, api.ErrInvalidDatabase) + _, err = os.Stat(invalidDst) + if !os.IsNotExist(err) { + t.Fatal("expected file to not exist") + } + + // ping backups + dbMain, err := sqlite.Open(mainDst) + cluster.tt.OK(err) + cluster.tt.OK(dbMain.Ping()) + dbMetrics, err := sqlite.Open(metricsDst) + cluster.tt.OK(err) + cluster.tt.OK(dbMetrics.Ping()) +} From 8a6e877e1522c4f826659621ef9c8ba54125eb60 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 25 Sep 2024 17:26:35 +0200 Subject: [PATCH 165/708] e2e: close db conns --- internal/test/e2e/cluster_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index f13ec8149..56130769b 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -2743,8 +2743,11 @@ func TestBackup(t *testing.T) { // ping backups dbMain, err := sqlite.Open(mainDst) cluster.tt.OK(err) + defer dbMain.Close() cluster.tt.OK(dbMain.Ping()) + dbMetrics, err := sqlite.Open(metricsDst) cluster.tt.OK(err) + defer dbMetrics.Close() cluster.tt.OK(dbMetrics.Ping()) } From 85b655e4d3c52f94e1dc40b19a2b82ebee7a06aa Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 24 Sep 2024 17:07:28 +0200 Subject: [PATCH 166/708] worker: do not escape bucket name --- internal/test/e2e/cluster_test.go | 36 +++++++++++++++++++++++++++++++ internal/utils/web.go | 4 ++-- worker/client/client.go | 4 ++-- 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 8749f7b6f..d6e9a2713 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -382,6 +382,42 @@ func TestNewTestCluster(t *testing.T) { } } +// TestObjectsBucket is a test that verifies whether we properly escape bucket +// names. +func TestObjectsBucket(t *testing.T) { + if testing.Short() { + t.SkipNow() + } + + // create a test cluster + cluster := newTestCluster(t, testClusterOptions{ + hosts: test.RedundancySettings.TotalShards, + }) + defer cluster.Shutdown() + + b := cluster.Bus + w := cluster.Worker + tt := cluster.tt + + // create a test bucket + bucket := "hello world" + tt.OK(b.CreateBucket(context.Background(), bucket, api.CreateBucketOptions{})) + + // upload an object to this bucket + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(nil), bucket, t.Name(), api.UploadObjectOptions{})) + + // assert we can fetch the object + tt.OKAll(b.Object(context.Background(), bucket, t.Name(), api.GetObjectOptions{})) + tt.OKAll(w.HeadObject(context.Background(), bucket, t.Name(), api.HeadObjectOptions{})) + + // assert delete object takes into account the bucket + err := w.DeleteObject(context.Background(), bucket+"notthesame", t.Name()) + if !utils.IsErr(err, api.ErrObjectNotFound) { + t.Fatal("expected object not found error", err) + } + tt.OK(w.DeleteObject(context.Background(), bucket, t.Name())) +} + // TestObjectsWithDelimiterSlash is an integration test that verifies // objects are uploaded, download and deleted from and to the paths we // would expect. It is similar to the TestObjectEntries unit test, but uses diff --git a/internal/utils/web.go b/internal/utils/web.go index d79ae0818..b3b9071a2 100644 --- a/internal/utils/web.go +++ b/internal/utils/web.go @@ -94,9 +94,9 @@ func DoRequest(req *http.Request, resp interface{}) (http.Header, int, error) { if r.StatusCode < 200 || r.StatusCode >= 300 { lr := io.LimitReader(r.Body, 1<<20) // 1MiB errMsg, _ := io.ReadAll(lr) - return http.Header{}, 0, fmt.Errorf("HTTP error: %s (status: %d)", string(errMsg), r.StatusCode) + return r.Header, r.StatusCode, fmt.Errorf("HTTP error: %s (status: %d)", string(errMsg), r.StatusCode) } else if resp != nil { - return http.Header{}, 0, json.NewDecoder(r.Body).Decode(resp) + return r.Header, r.StatusCode, json.NewDecoder(r.Body).Decode(resp) } return r.Header, r.StatusCode, nil } diff --git a/worker/client/client.go b/worker/client/client.go index 1ef4fd862..6a64fc31b 100644 --- a/worker/client/client.go +++ b/worker/client/client.go @@ -94,7 +94,7 @@ func (c *Client) HeadObject(ctx context.Context, bucket, key string, opts api.He c.c.Custom("HEAD", fmt.Sprintf("/object/%s", key), nil, nil) values := url.Values{} - values.Set("bucket", url.QueryEscape(bucket)) + values.Set("bucket", bucket) opts.Apply(values) key = api.ObjectKeyEscape(key) key += "?" + values.Encode() @@ -262,7 +262,7 @@ func (c *Client) NotifyEvent(ctx context.Context, e webhooks.Event) (err error) func (c *Client) object(ctx context.Context, bucket, key string, opts api.DownloadObjectOptions) (_ io.ReadCloser, _ http.Header, err error) { values := url.Values{} - values.Set("bucket", url.QueryEscape(bucket)) + values.Set("bucket", bucket) key += "?" + values.Encode() c.c.Custom("GET", fmt.Sprintf("/object/%s", key), nil, (*[]api.ObjectMetadata)(nil)) From 34a9cb5810ed4f2d9f7f72bede7a858383a1587b Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 24 Sep 2024 10:33:23 +0200 Subject: [PATCH 167/708] stores: extend TestProcessChainUpdate --- stores/chain_test.go | 165 +++++++++++++++++++++++++++++++------ stores/sql/chain.go | 4 + stores/sql/mysql/chain.go | 4 +- stores/sql/sqlite/chain.go | 10 ++- 4 files changed, 152 insertions(+), 31 deletions(-) diff --git a/stores/chain_test.go b/stores/chain_test.go index 615e27098..08b959ca9 100644 --- a/stores/chain_test.go +++ b/stores/chain_test.go @@ -3,6 +3,7 @@ package stores import ( "context" "errors" + "fmt" "strings" "testing" "time" @@ -31,7 +32,7 @@ func TestProcessChainUpdate(t *testing.T) { } fcid := fcids[0] - // assert contract state returns the correct state + // check current contract state var state api.ContractState if err := ss.ProcessChainUpdate(context.Background(), func(tx sql.ChainUpdateTx) (err error) { state, err = tx.ContractState(fcid) @@ -49,22 +50,14 @@ func TestProcessChainUpdate(t *testing.T) { t.Fatalf("unexpected height %v", curr.Height) } - // assert update chain index is successful + // run chain update if err := ss.ProcessChainUpdate(context.Background(), func(tx sql.ChainUpdateTx) error { - return tx.UpdateChainIndex(types.ChainIndex{Height: 1}) - }); err != nil { - t.Fatal("unexpected error", err) - } - - // check updated index - if curr, err := ss.ChainIndex(context.Background()); err != nil { - t.Fatal(err) - } else if curr.Height != 1 { - t.Fatalf("unexpected height %v", curr.Height) - } + // update chain index + if err := tx.UpdateChainIndex(types.ChainIndex{Height: 1}); err != nil { + return err + } - // assert update contract is successful - if err := ss.ProcessChainUpdate(context.Background(), func(tx sql.ChainUpdateTx) error { + // update contract if err := tx.UpdateContract(fcid, 1, 2, 3); err != nil { return err } else if err := tx.UpdateContractState(fcid, api.ContractStateActive); err != nil { @@ -78,7 +71,14 @@ func TestProcessChainUpdate(t *testing.T) { t.Fatal("unexpected error", err) } - // assert contract was updated successfully + // assert updated index + if curr, err := ss.ChainIndex(context.Background()); err != nil { + t.Fatal(err) + } else if curr.Height != 1 { + t.Fatalf("unexpected height %v", curr.Height) + } + + // assert updated contract var we uint64 if c, err := ss.Contract(context.Background(), fcid); err != nil { t.Fatal("unexpected error", err) @@ -210,31 +210,41 @@ func TestProcessChainUpdate(t *testing.T) { panic("oh no") } + // assert we can revert spent outputs + now := time.Now().Round(time.Millisecond) + var ses []types.StateElement if err := ss.ProcessChainUpdate(context.Background(), func(tx sql.ChainUpdateTx) error { index3 := types.ChainIndex{Height: 3} index4 := types.ChainIndex{Height: 4} created := []types.SiacoinElement{ { - StateElement: types.StateElement{}, - SiacoinOutput: types.SiacoinOutput{}, + StateElement: types.StateElement{ + ID: types.Hash256{1}, + LeafIndex: 1, + MerkleProof: []types.Hash256{{1}, {2}}, + }, + SiacoinOutput: types.SiacoinOutput{ + Address: types.Address{1}, + Value: types.NewCurrency64(1), + }, MaturityHeight: 100, }, } - events := []wallet.Event{ - { - Type: wallet.EventTypeV2Transaction, - Data: wallet.EventV2Transaction{}, - }, + + // try spending non-existent output + err = tx.WalletApplyIndex(index4, nil, created, nil, time.Now()) + if !errors.Is(err, sql.ErrOutputNotFound) { + return fmt.Errorf("expected ErrOutputNotFound, instead got: %w", err) } - // create some elements - err := tx.WalletApplyIndex(index3, created, nil, events, time.Now()) + // create the elements + err = tx.WalletApplyIndex(index3, created, nil, nil, time.Now()) if err != nil { return err } // spend them - err = tx.WalletApplyIndex(index4, nil, created, events, time.Now()) + err = tx.WalletApplyIndex(index4, nil, created, nil, time.Now()) if err != nil { return err } @@ -250,8 +260,109 @@ func TestProcessChainUpdate(t *testing.T) { if err != nil { return err } - return nil + + // prepare event + events := []wallet.Event{ + { + ID: types.Hash256{1}, + Index: types.ChainIndex{Height: 5}, + Type: wallet.EventTypeV2Transaction, + Data: wallet.EventV2Transaction{}, + Timestamp: now, + }, + } + + // add them + err = tx.WalletApplyIndex(types.ChainIndex{Height: 5}, nil, nil, events, time.Now()) + if err != nil { + return err + } + + // fetch elements + ses, err = tx.WalletStateElements() + return err + }); err != nil { + t.Fatal("unexpected error", err) + } + + // assert wallet state elements + if len(ses) != 1 { + t.Fatal("unexpected number of state elements", len(ses)) + } else if se := ses[0]; se.ID != (types.Hash256{1}) { + t.Fatal("unexpected state element id", se.ID) + } else if se.LeafIndex != 1 { + t.Fatal("unexpected state element leaf index", se.LeafIndex) + } else if len(se.MerkleProof) != 2 { + t.Fatal("unexpected state element merkle proof", len(se.MerkleProof)) + } else if se.MerkleProof[0] != (types.Hash256{1}) { + t.Fatal("unexpected state element merkle proof[0]", se.MerkleProof[0]) + } else if se.MerkleProof[1] != (types.Hash256{2}) { + t.Fatal("unexpected state element merkle proof[1]", se.MerkleProof[1]) + } + + // update state elements + if err := ss.ProcessChainUpdate(context.Background(), func(tx sql.ChainUpdateTx) error { + ses[0].LeafIndex = 2 + ses[0].MerkleProof = []types.Hash256{{3}, {4}} + err := tx.UpdateWalletStateElements(ses) + if err != nil { + return err + } + + ses, err = tx.WalletStateElements() + return err }); err != nil { t.Fatal("unexpected error", err) } + + // assert wallet state elements + if len(ses) != 1 { + t.Fatal("unexpected number of state elements", len(ses)) + } else if se := ses[0]; se.LeafIndex != 2 { + t.Fatal("unexpected state element leaf index", se.LeafIndex) + } else if len(se.MerkleProof) != 2 { + t.Fatal("unexpected state element merkle proof length", len(se.MerkleProof)) + } else if se.MerkleProof[0] != (types.Hash256{3}) { + t.Fatal("unexpected state element merkle proof[0]", se.MerkleProof[0]) + } else if se.MerkleProof[1] != (types.Hash256{4}) { + t.Fatal("unexpected state element merkle proof[1]", se.MerkleProof[1]) + } + + // assert events + events, err := ss.WalletEvents(0, -1) + if err != nil { + t.Fatal(err) + } else if len(events) != 1 { + t.Fatal("unexpected number of events", len(events)) + } else if events[0].Index.Height != 5 { + t.Fatal("unexpected event index height", events[0].Index.Height, events[0]) + } else if events[0].Timestamp != now { + t.Fatal("unexpected event timestamp", events[0].Timestamp, now) + } + + // revert the index and assert the event got removed + if err := ss.ProcessChainUpdate(context.Background(), func(tx sql.ChainUpdateTx) error { + return tx.WalletRevertIndex(types.ChainIndex{Height: 5}, nil, nil, time.Now()) + }); err != nil { + t.Fatal("expected error") + } + events, err = ss.WalletEvents(0, -1) + if err != nil { + t.Fatal(err) + } else if len(events) != 0 { + t.Fatal("unexpected number of events", len(events)) + } + + // assert we can't delete non-existing outputs when reverting + if err := ss.ProcessChainUpdate(context.Background(), func(tx sql.ChainUpdateTx) error { + return tx.WalletRevertIndex(types.ChainIndex{Height: 5}, []types.SiacoinElement{ + { + StateElement: types.StateElement{ID: types.Hash256{2}}, + SiacoinOutput: types.SiacoinOutput{}, + MaturityHeight: 100, + }, + }, nil, time.Now()) + }); !errors.Is(err, sql.ErrOutputNotFound) { + t.Fatal("expected ErrOutputNotFound", err) + } } diff --git a/stores/sql/chain.go b/stores/sql/chain.go index c9c991d4e..625ce5d7e 100644 --- a/stores/sql/chain.go +++ b/stores/sql/chain.go @@ -12,6 +12,10 @@ import ( "go.uber.org/zap" ) +var ( + ErrOutputNotFound = errors.New("output not found") +) + var contractTables = []string{ "contracts", "archived_contracts", diff --git a/stores/sql/mysql/chain.go b/stores/sql/mysql/chain.go index 4e5720c9e..73cd05482 100644 --- a/stores/sql/mysql/chain.go +++ b/stores/sql/mysql/chain.go @@ -46,7 +46,7 @@ func (c chainUpdateTx) WalletApplyIndex(index types.ChainIndex, created, spent [ } else if n, err := res.RowsAffected(); err != nil { return fmt.Errorf("failed to get rows affected: %w", err) } else if n != 1 { - return fmt.Errorf("failed to delete spent output: no rows affected") + return fmt.Errorf("failed to delete spent output: %w", ssql.ErrOutputNotFound) } } } @@ -134,7 +134,7 @@ func (c chainUpdateTx) WalletRevertIndex(index types.ChainIndex, removed, unspen } else if n, err := res.RowsAffected(); err != nil { return fmt.Errorf("failed to get rows affected: %w", err) } else if n != 1 { - return fmt.Errorf("failed to delete removed output: no rows affected") + return fmt.Errorf("failed to delete removed output: %w", ssql.ErrOutputNotFound) } } } diff --git a/stores/sql/sqlite/chain.go b/stores/sql/sqlite/chain.go index 0ec937b73..95d16434c 100644 --- a/stores/sql/sqlite/chain.go +++ b/stores/sql/sqlite/chain.go @@ -49,7 +49,7 @@ func (c chainUpdateTx) WalletApplyIndex(index types.ChainIndex, created, spent [ } else if n, err := res.RowsAffected(); err != nil { return fmt.Errorf("failed to get rows affected: %w", err) } else if n != 1 { - return fmt.Errorf("failed to delete spent output: no rows affected") + return fmt.Errorf("failed to delete spent output: %w", ssql.ErrOutputNotFound) } } } @@ -89,6 +89,12 @@ func (c chainUpdateTx) WalletApplyIndex(index types.ChainIndex, created, spent [ // insert new events for _, e := range events { + if e.Index != index { + return fmt.Errorf("event index %v doesn't match index being applied %v", e.Index, index) + } else if e.ID == (types.Hash256{}) { + return fmt.Errorf("event id is required") + } + c.l.Debugw(fmt.Sprintf("create event %v", e.ID), "height", index.Height, "block_id", index.ID) data, err := json.Marshal(e.Data) if err != nil { @@ -137,7 +143,7 @@ func (c chainUpdateTx) WalletRevertIndex(index types.ChainIndex, removed, unspen } else if n, err := res.RowsAffected(); err != nil { return fmt.Errorf("failed to get rows affected: %w", err) } else if n != 1 { - return fmt.Errorf("failed to delete removed output: no rows affected") + return fmt.Errorf("failed to delete removed output: %w", ssql.ErrOutputNotFound) } } } From ebfc6951da20e52615a7b1001b0470415f4c6fe3 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 24 Sep 2024 10:46:37 +0200 Subject: [PATCH 168/708] stores: update error messages --- stores/chain_test.go | 15 +++++++++++++++ stores/sql/chain.go | 1 + stores/sql/mysql/chain.go | 14 +++++++++++--- stores/sql/sqlite/chain.go | 10 ++++++---- 4 files changed, 33 insertions(+), 7 deletions(-) diff --git a/stores/chain_test.go b/stores/chain_test.go index 08b959ca9..377088773 100644 --- a/stores/chain_test.go +++ b/stores/chain_test.go @@ -365,4 +365,19 @@ func TestProcessChainUpdate(t *testing.T) { }); !errors.Is(err, sql.ErrOutputNotFound) { t.Fatal("expected ErrOutputNotFound", err) } + + // assert we can't apply an index and pass events with mismatching index + if err := ss.ProcessChainUpdate(context.Background(), func(tx sql.ChainUpdateTx) error { + return tx.WalletApplyIndex(types.ChainIndex{Height: 5}, nil, nil, []wallet.Event{ + { + ID: types.Hash256{1}, + Index: types.ChainIndex{Height: 6}, + Type: wallet.EventTypeV2Transaction, + Data: wallet.EventV2Transaction{}, + Timestamp: now, + }, + }, now) + }); !errors.Is(err, sql.ErrIndexMissmatch) { + t.Fatal("expected ErrIndexMissmatch", err) + } } diff --git a/stores/sql/chain.go b/stores/sql/chain.go index 625ce5d7e..bf697dce5 100644 --- a/stores/sql/chain.go +++ b/stores/sql/chain.go @@ -13,6 +13,7 @@ import ( ) var ( + ErrIndexMissmatch = errors.New("index missmatch") ErrOutputNotFound = errors.New("output not found") ) diff --git a/stores/sql/mysql/chain.go b/stores/sql/mysql/chain.go index 73cd05482..5cfe53606 100644 --- a/stores/sql/mysql/chain.go +++ b/stores/sql/mysql/chain.go @@ -44,7 +44,7 @@ func (c chainUpdateTx) WalletApplyIndex(index types.ChainIndex, created, spent [ if res, err := deleteSpentStmt.Exec(c.ctx, ssql.Hash256(e.ID)); err != nil { return fmt.Errorf("failed to delete spent output: %w", err) } else if n, err := res.RowsAffected(); err != nil { - return fmt.Errorf("failed to get rows affected: %w", err) + return fmt.Errorf("failed to delete spent output: %w", err) } else if n != 1 { return fmt.Errorf("failed to delete spent output: %w", ssql.ErrOutputNotFound) } @@ -86,6 +86,14 @@ func (c chainUpdateTx) WalletApplyIndex(index types.ChainIndex, created, spent [ // insert new events for _, e := range events { + if e.Index != index { + return fmt.Errorf("%w, event index %v != applied index %v", ssql.ErrIndexMissmatch, e.Index, index) + } else if e.ID == (types.Hash256{}) { + return fmt.Errorf("event id is required") + } else if e.Timestamp.IsZero() { + return fmt.Errorf("event timestamp is required") + } + c.l.Debugw(fmt.Sprintf("create event %v", e.ID), "height", index.Height, "block_id", index.ID) data, err := json.Marshal(e.Data) if err != nil { @@ -132,7 +140,7 @@ func (c chainUpdateTx) WalletRevertIndex(index types.ChainIndex, removed, unspen if res, err := deleteRemovedStmt.Exec(c.ctx, ssql.Hash256(e.ID)); err != nil { return fmt.Errorf("failed to delete removed output: %w", err) } else if n, err := res.RowsAffected(); err != nil { - return fmt.Errorf("failed to get rows affected: %w", err) + return fmt.Errorf("failed to delete removed output: %w", err) } else if n != 1 { return fmt.Errorf("failed to delete removed output: %w", ssql.ErrOutputNotFound) } @@ -169,7 +177,7 @@ func (c chainUpdateTx) WalletRevertIndex(index types.ChainIndex, removed, unspen if err != nil { return fmt.Errorf("failed to delete events: %w", err) } else if n, err := res.RowsAffected(); err != nil { - return fmt.Errorf("failed to get rows affected: %w", err) + return fmt.Errorf("failed to delete events: %w", err) } else if n > 0 { c.l.Debugw(fmt.Sprintf("removed %d events", n), "height", index.Height, "block_id", index.ID) } diff --git a/stores/sql/sqlite/chain.go b/stores/sql/sqlite/chain.go index 95d16434c..4fa869ad6 100644 --- a/stores/sql/sqlite/chain.go +++ b/stores/sql/sqlite/chain.go @@ -47,7 +47,7 @@ func (c chainUpdateTx) WalletApplyIndex(index types.ChainIndex, created, spent [ if res, err := deleteSpentStmt.Exec(c.ctx, ssql.Hash256(e.ID)); err != nil { return fmt.Errorf("failed to delete spent output: %w", err) } else if n, err := res.RowsAffected(); err != nil { - return fmt.Errorf("failed to get rows affected: %w", err) + return fmt.Errorf("failed to delete spent output: %w", err) } else if n != 1 { return fmt.Errorf("failed to delete spent output: %w", ssql.ErrOutputNotFound) } @@ -90,9 +90,11 @@ func (c chainUpdateTx) WalletApplyIndex(index types.ChainIndex, created, spent [ // insert new events for _, e := range events { if e.Index != index { - return fmt.Errorf("event index %v doesn't match index being applied %v", e.Index, index) + return fmt.Errorf("%w, event index %v != applied index %v", ssql.ErrIndexMissmatch, e.Index, index) } else if e.ID == (types.Hash256{}) { return fmt.Errorf("event id is required") + } else if e.Timestamp.IsZero() { + return fmt.Errorf("event timestamp is required") } c.l.Debugw(fmt.Sprintf("create event %v", e.ID), "height", index.Height, "block_id", index.ID) @@ -141,7 +143,7 @@ func (c chainUpdateTx) WalletRevertIndex(index types.ChainIndex, removed, unspen if res, err := deleteRemovedStmt.Exec(c.ctx, ssql.Hash256(e.ID)); err != nil { return fmt.Errorf("failed to delete removed output: %w", err) } else if n, err := res.RowsAffected(); err != nil { - return fmt.Errorf("failed to get rows affected: %w", err) + return fmt.Errorf("failed to delete removed output: %w", err) } else if n != 1 { return fmt.Errorf("failed to delete removed output: %w", ssql.ErrOutputNotFound) } @@ -178,7 +180,7 @@ func (c chainUpdateTx) WalletRevertIndex(index types.ChainIndex, removed, unspen if err != nil { return fmt.Errorf("failed to delete events: %w", err) } else if n, err := res.RowsAffected(); err != nil { - return fmt.Errorf("failed to get rows affected: %w", err) + return fmt.Errorf("failed to delete events: %w", err) } else if n > 0 { c.l.Debugw(fmt.Sprintf("removed %d events", n), "height", index.Height, "block_id", index.ID) } From 999a54193b2bfb47db52aeb64120350541b3a31e Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 26 Sep 2024 15:01:18 +0200 Subject: [PATCH 169/708] go.mod: update ui dependency --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 2145afa4e..572079a6c 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( go.sia.tech/hostd v1.1.3-0.20240903081107-6e044db95238 go.sia.tech/jape v0.12.1 go.sia.tech/mux v1.2.0 - go.sia.tech/web/renterd v0.62.0 + go.sia.tech/web/renterd v0.63.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.27.0 golang.org/x/sys v0.25.0 diff --git a/go.sum b/go.sum index 0864fa5a4..b32e77e62 100644 --- a/go.sum +++ b/go.sum @@ -71,8 +71,8 @@ go.sia.tech/mux v1.2.0 h1:ofa1Us9mdymBbGMY2XH/lSpY8itFsKIo/Aq8zwe+GHU= go.sia.tech/mux v1.2.0/go.mod h1:Yyo6wZelOYTyvrHmJZ6aQfRoer3o4xyKQ4NmQLJrBSo= go.sia.tech/web v0.0.0-20240610131903-5611d44a533e h1:oKDz6rUExM4a4o6n/EXDppsEka2y/+/PgFOZmHWQRSI= go.sia.tech/web v0.0.0-20240610131903-5611d44a533e/go.mod h1:4nyDlycPKxTlCqvOeRO0wUfXxyzWCEE7+2BRrdNqvWk= -go.sia.tech/web/renterd v0.62.0 h1:oU6m0SOmaOTEq76yfekHhB4ol+u5W70sna7Jts0mjnU= -go.sia.tech/web/renterd v0.62.0/go.mod h1:VWfvYtmdJGfrqSoNRO3NoOjUij+RB/xNO4M0HqIf1+M= +go.sia.tech/web/renterd v0.63.0 h1:PFgvfZnV7QGUeIZE2F160+czTxRtJIwzi2zw4d5b6Qw= +go.sia.tech/web/renterd v0.63.0/go.mod h1:VWfvYtmdJGfrqSoNRO3NoOjUij+RB/xNO4M0HqIf1+M= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= From 8e1a9c0863415eb65fec391a7b2dea66418d8ee5 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 26 Sep 2024 11:32:35 +0200 Subject: [PATCH 170/708] gouging: compare recommended txn fee with max contract price --- api/bus.go | 1 - autopilot/autopilot.go | 6 +----- autopilot/contractor/evaluate.go | 22 +++++++++++----------- autopilot/contractor/evaluate_test.go | 9 ++++----- autopilot/contractor/state.go | 2 +- bus/bus.go | 2 +- bus/routes.go | 5 ++--- internal/gouging/gouging.go | 14 ++++++-------- internal/worker/cache.go | 1 - internal/worker/cache_test.go | 7 +------ worker/gouging.go | 7 +++---- 11 files changed, 30 insertions(+), 46 deletions(-) diff --git a/api/bus.go b/api/bus.go index 3b73469e3..5b4992686 100644 --- a/api/bus.go +++ b/api/bus.go @@ -41,7 +41,6 @@ type ( ConsensusState ConsensusState GougingSettings GougingSettings RedundancySettings RedundancySettings - TransactionFee types.Currency } ) diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 8c45e950a..c783c0d50 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -185,10 +185,6 @@ func (ap *Autopilot) configHandlerPOST(jc jape.Context) { if jc.Check("failed to get consensus state", err) != nil { return } - fee, err := ap.bus.RecommendedFee(ctx) - if jc.Check("failed to get recommended fee", err) != nil { - return - } // fetch hosts hosts, err := ap.bus.SearchHosts(ctx, api.SearchHostOptions{Limit: -1, FilterMode: api.HostFilterModeAllowed}) @@ -197,7 +193,7 @@ func (ap *Autopilot) configHandlerPOST(jc jape.Context) { } // evaluate the config - res, err := contractor.EvaluateConfig(reqCfg, cs, fee, rs, gs, hosts) + res, err := contractor.EvaluateConfig(reqCfg, cs, rs, gs, hosts) if errors.Is(err, contractor.ErrMissingRequiredFields) { jc.Error(err, http.StatusBadRequest) return diff --git a/autopilot/contractor/evaluate.go b/autopilot/contractor/evaluate.go index e947009cb..19fa7dcff 100644 --- a/autopilot/contractor/evaluate.go +++ b/autopilot/contractor/evaluate.go @@ -10,8 +10,8 @@ import ( var ErrMissingRequiredFields = errors.New("missing required fields in configuration, both allowance and amount must be set") -func countUsableHosts(cfg api.AutopilotConfig, cs api.ConsensusState, fee types.Currency, period uint64, rs api.RedundancySettings, gs api.GougingSettings, hosts []api.Host) (usables uint64) { - gc := gouging.NewChecker(gs, cs, fee, &period, &cfg.Contracts.RenewWindow) +func countUsableHosts(cfg api.AutopilotConfig, cs api.ConsensusState, period uint64, rs api.RedundancySettings, gs api.GougingSettings, hosts []api.Host) (usables uint64) { + gc := gouging.NewChecker(gs, cs, &period, &cfg.Contracts.RenewWindow) for _, host := range hosts { hc := checkHost(gc, scoreHost(host, cfg, rs.Redundancy()), minValidScore) if hc.Usability.IsUsable() { @@ -24,14 +24,14 @@ func countUsableHosts(cfg api.AutopilotConfig, cs api.ConsensusState, fee types. // EvaluateConfig evaluates the given configuration and if the gouging settings // are too strict for the number of contracts required by 'cfg', it will provide // a recommendation on how to loosen it. -func EvaluateConfig(cfg api.AutopilotConfig, cs api.ConsensusState, fee types.Currency, rs api.RedundancySettings, gs api.GougingSettings, hosts []api.Host) (resp api.ConfigEvaluationResponse, _ error) { +func EvaluateConfig(cfg api.AutopilotConfig, cs api.ConsensusState, rs api.RedundancySettings, gs api.GougingSettings, hosts []api.Host) (resp api.ConfigEvaluationResponse, _ error) { // we need an allowance and a target amount of contracts to evaluate if cfg.Contracts.Allowance.IsZero() || cfg.Contracts.Amount == 0 { return api.ConfigEvaluationResponse{}, ErrMissingRequiredFields } period := cfg.Contracts.Period - gc := gouging.NewChecker(gs, cs, fee, &period, &cfg.Contracts.RenewWindow) + gc := gouging.NewChecker(gs, cs, &period, &cfg.Contracts.RenewWindow) resp.Hosts = uint64(len(hosts)) for i, host := range hosts { @@ -99,35 +99,35 @@ func EvaluateConfig(cfg api.AutopilotConfig, cs api.ConsensusState, fee types.Cu // MaxRPCPrice tmpGS := maxGS() tmpGS.MaxRPCPrice = gs.MaxRPCPrice - if optimiseGougingSetting(&tmpGS, &tmpGS.MaxRPCPrice, cfg, cs, fee, period, rs, hosts) { + if optimiseGougingSetting(&tmpGS, &tmpGS.MaxRPCPrice, cfg, cs, period, rs, hosts) { optimisedGS.MaxRPCPrice = tmpGS.MaxRPCPrice success = true } // MaxContractPrice tmpGS = maxGS() tmpGS.MaxContractPrice = gs.MaxContractPrice - if optimiseGougingSetting(&tmpGS, &tmpGS.MaxContractPrice, cfg, cs, fee, period, rs, hosts) { + if optimiseGougingSetting(&tmpGS, &tmpGS.MaxContractPrice, cfg, cs, period, rs, hosts) { optimisedGS.MaxContractPrice = tmpGS.MaxContractPrice success = true } // MaxDownloadPrice tmpGS = maxGS() tmpGS.MaxDownloadPrice = gs.MaxDownloadPrice - if optimiseGougingSetting(&tmpGS, &tmpGS.MaxDownloadPrice, cfg, cs, fee, period, rs, hosts) { + if optimiseGougingSetting(&tmpGS, &tmpGS.MaxDownloadPrice, cfg, cs, period, rs, hosts) { optimisedGS.MaxDownloadPrice = tmpGS.MaxDownloadPrice success = true } // MaxUploadPrice tmpGS = maxGS() tmpGS.MaxUploadPrice = gs.MaxUploadPrice - if optimiseGougingSetting(&tmpGS, &tmpGS.MaxUploadPrice, cfg, cs, fee, period, rs, hosts) { + if optimiseGougingSetting(&tmpGS, &tmpGS.MaxUploadPrice, cfg, cs, period, rs, hosts) { optimisedGS.MaxUploadPrice = tmpGS.MaxUploadPrice success = true } // MaxStoragePrice tmpGS = maxGS() tmpGS.MaxStoragePrice = gs.MaxStoragePrice - if optimiseGougingSetting(&tmpGS, &tmpGS.MaxStoragePrice, cfg, cs, fee, period, rs, hosts) { + if optimiseGougingSetting(&tmpGS, &tmpGS.MaxStoragePrice, cfg, cs, period, rs, hosts) { optimisedGS.MaxStoragePrice = tmpGS.MaxStoragePrice success = true } @@ -143,7 +143,7 @@ func EvaluateConfig(cfg api.AutopilotConfig, cs api.ConsensusState, fee types.Cu // optimiseGougingSetting tries to optimise one field of the gouging settings to // try and hit the target number of contracts. -func optimiseGougingSetting(gs *api.GougingSettings, field *types.Currency, cfg api.AutopilotConfig, cs api.ConsensusState, fee types.Currency, currentPeriod uint64, rs api.RedundancySettings, hosts []api.Host) bool { +func optimiseGougingSetting(gs *api.GougingSettings, field *types.Currency, cfg api.AutopilotConfig, cs api.ConsensusState, currentPeriod uint64, rs api.RedundancySettings, hosts []api.Host) bool { if cfg.Contracts.Amount == 0 { return true // nothing to do } @@ -154,7 +154,7 @@ func optimiseGougingSetting(gs *api.GougingSettings, field *types.Currency, cfg nSteps := 0 prevVal := *field // to keep accurate value for { - nUsable := countUsableHosts(cfg, cs, fee, currentPeriod, rs, *gs, hosts) + nUsable := countUsableHosts(cfg, cs, currentPeriod, rs, *gs, hosts) targetHit := nUsable >= cfg.Contracts.Amount if targetHit && nSteps == 0 { diff --git a/autopilot/contractor/evaluate_test.go b/autopilot/contractor/evaluate_test.go index 8ff7e5af0..ef292190b 100644 --- a/autopilot/contractor/evaluate_test.go +++ b/autopilot/contractor/evaluate_test.go @@ -56,7 +56,6 @@ func TestOptimiseGougingSetting(t *testing.T) { LastBlockTime: api.TimeNow(), Synced: true, } - fee := types.ZeroCurrency rs := api.RedundancySettings{MinShards: 10, TotalShards: 30} gs := api.GougingSettings{ MaxRPCPrice: types.Siacoins(1), @@ -70,7 +69,7 @@ func TestOptimiseGougingSetting(t *testing.T) { // confirm all hosts are usable assertUsable := func(n int) { t.Helper() - nUsable := countUsableHosts(cfg, cs, fee, 0, rs, gs, hosts) + nUsable := countUsableHosts(cfg, cs, 0, rs, gs, hosts) if nUsable != uint64(n) { t.Fatalf("expected %v usable hosts, got %v", len(hosts), nUsable) } @@ -82,7 +81,7 @@ func TestOptimiseGougingSetting(t *testing.T) { hosts[i].Settings.StoragePrice = types.Siacoins(uint32(i + 1)) } assertUsable(1) - if !optimiseGougingSetting(&gs, &gs.MaxStoragePrice, cfg, cs, fee, 0, rs, hosts) { + if !optimiseGougingSetting(&gs, &gs.MaxStoragePrice, cfg, cs, 0, rs, hosts) { t.Fatal("optimising failed") } assertUsable(len(hosts)) @@ -94,7 +93,7 @@ func TestOptimiseGougingSetting(t *testing.T) { // hosts hosts[0].Settings.StoragePrice = types.Siacoins(100000) assertUsable(9) - if optimiseGougingSetting(&gs, &gs.MaxStoragePrice, cfg, cs, fee, 0, rs, hosts) { + if optimiseGougingSetting(&gs, &gs.MaxStoragePrice, cfg, cs, 0, rs, hosts) { t.Fatal("optimising succeeded") } if gs.MaxStoragePrice.ExactString() != "41631744000000000000000000000" { // ~41.63 KS @@ -107,7 +106,7 @@ func TestOptimiseGougingSetting(t *testing.T) { } gs.MaxStoragePrice = types.MaxCurrency.Sub(types.Siacoins(1)) assertUsable(0) - if optimiseGougingSetting(&gs, &gs.MaxStoragePrice, cfg, cs, fee, 0, rs, hosts) { + if optimiseGougingSetting(&gs, &gs.MaxStoragePrice, cfg, cs, 0, rs, hosts) { t.Fatal("optimising succeeded") } if gs.MaxStoragePrice.ExactString() != "340282366920937463463374607431768211455" { // ~340.3 TS diff --git a/autopilot/contractor/state.go b/autopilot/contractor/state.go index 0b786adf1..bb2fff39a 100644 --- a/autopilot/contractor/state.go +++ b/autopilot/contractor/state.go @@ -75,7 +75,7 @@ func (ctx *mCtx) Err() error { func (ctx *mCtx) GougingChecker(cs api.ConsensusState) gouging.Checker { period, renewWindow := ctx.Period(), ctx.RenewWindow() - return gouging.NewChecker(ctx.state.GS, cs, ctx.state.Fee, &period, &renewWindow) + return gouging.NewChecker(ctx.state.GS, cs, &period, &renewWindow) } func (ctx *mCtx) HostScore(h api.Host) (sb api.HostScoreBreakdown, err error) { diff --git a/bus/bus.go b/bus/bus.go index 832b603b0..b446e697c 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -872,7 +872,7 @@ func (b *Bus) renewContract(ctx context.Context, cs consensus.State, gp api.Goug } // renew contract - gc := gouging.NewChecker(gp.GougingSettings, gp.ConsensusState, gp.TransactionFee, nil, nil) + gc := gouging.NewChecker(gp.GougingSettings, gp.ConsensusState, nil, nil) renterKey := b.deriveRenterKey(c.HostKey) prepareRenew := b.prepareRenew(cs, rev, hs.Address, b.w.Address(), renterFunds, minNewCollateral, maxFundAmount, endHeight, expectedNewStorage) newRevision, txnSet, contractPrice, fundAmount, err := b.rhp3.Renew(ctx, gc, rev, renterKey, c.HostKey, c.SiamuxAddr, prepareRenew, b.w.SignTransaction) diff --git a/bus/routes.go b/bus/routes.go index d8ffd2997..0244292a8 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -885,7 +885,7 @@ func (b *Bus) contractPruneHandlerPOST(jc jape.Context) { if jc.Check("couldn't fetch gouging parameters", err) != nil { return } - gc := gouging.NewChecker(gp.GougingSettings, gp.ConsensusState, gp.TransactionFee, nil, nil) + gc := gouging.NewChecker(gp.GougingSettings, gp.ConsensusState, nil, nil) // apply timeout pruneCtx := ctx @@ -1874,7 +1874,6 @@ func (b *Bus) gougingParams(ctx context.Context) (api.GougingParams, error) { ConsensusState: cs, GougingSettings: gs, RedundancySettings: rs, - TransactionFee: b.cm.RecommendedFee(), }, nil } @@ -2425,7 +2424,7 @@ func (b *Bus) contractsFormHandler(jc jape.Context) { if jc.Check("could not get gouging parameters", err) != nil { return } - gc := gouging.NewChecker(gp.GougingSettings, gp.ConsensusState, gp.TransactionFee, nil, nil) + gc := gouging.NewChecker(gp.GougingSettings, gp.ConsensusState, nil, nil) // fetch host settings settings, err := b.rhp2.Settings(ctx, rfr.HostKey, rfr.HostIP) diff --git a/internal/gouging/gouging.go b/internal/gouging/gouging.go index aadfdd57f..a9281a21e 100644 --- a/internal/gouging/gouging.go +++ b/internal/gouging/gouging.go @@ -51,7 +51,6 @@ type ( checker struct { consensusState api.ConsensusState settings api.GougingSettings - txFee types.Currency period *uint64 renewWindow *uint64 @@ -60,11 +59,10 @@ type ( var _ Checker = checker{} -func NewChecker(gs api.GougingSettings, cs api.ConsensusState, txnFee types.Currency, period, renewWindow *uint64) Checker { +func NewChecker(gs api.GougingSettings, cs api.ConsensusState, period, renewWindow *uint64) Checker { return checker{ consensusState: cs, settings: gs, - txFee: txnFee, period: period, renewWindow: renewWindow, @@ -93,7 +91,7 @@ func (gc checker) Check(hs *rhpv2.HostSettings, pt *rhpv3.HostPriceTable) api.Ho ), DownloadErr: errsToStr(checkDownloadGougingRHPv3(gc.settings, pt)), GougingErr: errsToStr( - checkPriceGougingPT(gc.settings, gc.consensusState, gc.txFee, pt), + checkPriceGougingPT(gc.settings, gc.consensusState, pt), checkPriceGougingHS(gc.settings, hs), ), PruneErr: errsToStr(checkPruneGougingRHPv2(gc.settings, hs)), @@ -158,7 +156,7 @@ func checkPriceGougingHS(gs api.GougingSettings, hs *rhpv2.HostSettings) error { // TODO: if we ever stop assuming that certain prices in the pricetable are // always set to 1H we should account for those fields in // `hostPeriodCostForScore` as well. -func checkPriceGougingPT(gs api.GougingSettings, cs api.ConsensusState, txnFee types.Currency, pt *rhpv3.HostPriceTable) error { +func checkPriceGougingPT(gs api.GougingSettings, cs api.ConsensusState, pt *rhpv3.HostPriceTable) error { // check if we have a price table if pt == nil { return nil @@ -216,9 +214,9 @@ func checkPriceGougingPT(gs api.GougingSettings, cs api.ConsensusState, txnFee t } } - // check TxnFeeMaxRecommended - expect at most a multiple of our fee - if !txnFee.IsZero() && pt.TxnFeeMaxRecommended.Cmp(txnFee.Mul64(5)) > 0 { - return fmt.Errorf("TxnFeeMaxRecommended %v exceeds %v", pt.TxnFeeMaxRecommended, txnFee.Mul64(5)) + // check TxnFeeMaxRecommended - expect it to be lower or equal than the max contract price + if pt.TxnFeeMaxRecommended.Mul64(4096).Cmp(gs.MaxContractPrice) > 0 { + return fmt.Errorf("TxnFeeMaxRecommended %v exceeds %v", pt.TxnFeeMaxRecommended, gs.MaxContractPrice.Div64(4096)) } // check TxnFeeMinRecommended - expect it to be lower or equal than the max diff --git a/internal/worker/cache.go b/internal/worker/cache.go index dfc749d2a..f94251d73 100644 --- a/internal/worker/cache.go +++ b/internal/worker/cache.go @@ -233,7 +233,6 @@ func (c *cache) handleConsensusUpdate(event api.EventConsensusUpdate) { // update gouging params gp := value.(api.GougingParams) gp.ConsensusState = event.ConsensusState - gp.TransactionFee = event.TransactionFee c.cache.Set(cacheKeyGougingParams, gp) } diff --git a/internal/worker/cache_test.go b/internal/worker/cache_test.go index 9bc8d682d..12dff87c8 100644 --- a/internal/worker/cache_test.go +++ b/internal/worker/cache_test.go @@ -55,7 +55,6 @@ func newMockBus() *mockBus { gougingParams: api.GougingParams{ RedundancySettings: test.RedundancySettings, GougingSettings: test.GougingSettings, - TransactionFee: types.Siacoins(1), ConsensusState: api.ConsensusState{ BlockHeight: 1, LastBlockTime: api.TimeRFC3339{}, @@ -92,8 +91,6 @@ func TestWorkerCache(t *testing.T) { t.Fatal("expected redundancy settings to match", gp.RedundancySettings, test.RedundancySettings) } else if gp.GougingSettings != test.GougingSettings { t.Fatal("expected gouging settings to match", gp.GougingSettings, test.GougingSettings) - } else if !gp.TransactionFee.Equals(types.Siacoins(1)) { - t.Fatal("expected transaction fee to match", gp.TransactionFee, types.Siacoins(1)) } // assert warnings are printed when the cache is not ready yet @@ -143,7 +140,7 @@ func TestWorkerCache(t *testing.T) { } // update gouging params & expire cache entry manually - b.gougingParams.TransactionFee = b.gougingParams.TransactionFee.Mul64(2) + b.gougingParams.ConsensusState.BlockHeight += 1 // expire cache entry manually mc.mu.Lock() @@ -154,8 +151,6 @@ func TestWorkerCache(t *testing.T) { gp, err = c.GougingParams(context.Background()) if err != nil { t.Fatal(err) - } else if !gp.TransactionFee.Equals(b.gougingParams.TransactionFee) { - t.Fatal("expected transaction fee to be updated, got", gp.TransactionFee) } else if logs := observedLogs.FilterLevelExact(zap.WarnLevel); logs.Len() != 1 { t.Fatal("expected 1 warning, got", logs.Len(), logs.All()) } else if lines := observedLogs.TakeAll(); !strings.Contains(lines[0].Message, errCacheOutdated.Error()) || !strings.Contains(lines[0].Message, cacheKeyGougingParams) { diff --git a/worker/gouging.go b/worker/gouging.go index eccc5785e..23e73317f 100644 --- a/worker/gouging.go +++ b/worker/gouging.go @@ -4,7 +4,6 @@ import ( "context" "fmt" - "go.sia.tech/core/types" "go.sia.tech/renterd/api" "go.sia.tech/renterd/internal/gouging" ) @@ -29,11 +28,11 @@ func WithGougingChecker(ctx context.Context, cs gouging.ConsensusState, gp api.G if err != nil { return nil, fmt.Errorf("failed to get consensus state: %w", err) } - return newGougingChecker(gp.GougingSettings, cs, gp.TransactionFee, criticalMigration), nil + return newGougingChecker(gp.GougingSettings, cs, criticalMigration), nil }) } -func newGougingChecker(settings api.GougingSettings, cs api.ConsensusState, txnFee types.Currency, criticalMigration bool) gouging.Checker { +func newGougingChecker(settings api.GougingSettings, cs api.ConsensusState, criticalMigration bool) gouging.Checker { // adjust the max download price if we are dealing with a critical // migration that might be failing due to gouging checks if criticalMigration && settings.MigrationSurchargeMultiplier > 0 { @@ -41,5 +40,5 @@ func newGougingChecker(settings api.GougingSettings, cs api.ConsensusState, txnF settings.MaxDownloadPrice = adjustedMaxDownloadPrice } } - return gouging.NewChecker(settings, cs, txnFee, nil, nil) + return gouging.NewChecker(settings, cs, nil, nil) } From fe965941b4f0054cdfd34ccbef726cad721fe7d2 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 26 Sep 2024 13:22:39 +0200 Subject: [PATCH 171/708] gouging: only assert TxnFeeMaxRecommended if max contract price is not zero --- internal/gouging/gouging.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/gouging/gouging.go b/internal/gouging/gouging.go index a9281a21e..efd378180 100644 --- a/internal/gouging/gouging.go +++ b/internal/gouging/gouging.go @@ -215,7 +215,7 @@ func checkPriceGougingPT(gs api.GougingSettings, cs api.ConsensusState, pt *rhpv } // check TxnFeeMaxRecommended - expect it to be lower or equal than the max contract price - if pt.TxnFeeMaxRecommended.Mul64(4096).Cmp(gs.MaxContractPrice) > 0 { + if !gs.MaxContractPrice.IsZero() && pt.TxnFeeMaxRecommended.Mul64(4096).Cmp(gs.MaxContractPrice) > 0 { return fmt.Errorf("TxnFeeMaxRecommended %v exceeds %v", pt.TxnFeeMaxRecommended, gs.MaxContractPrice.Div64(4096)) } From 9e0643cf7afbe87bd798c6ce90261a5390520182 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 26 Sep 2024 15:48:53 +0200 Subject: [PATCH 172/708] stores: remove contractTables --- stores/sql/chain.go | 5 ----- 1 file changed, 5 deletions(-) diff --git a/stores/sql/chain.go b/stores/sql/chain.go index 06a4c0b4b..6786aa68f 100644 --- a/stores/sql/chain.go +++ b/stores/sql/chain.go @@ -17,11 +17,6 @@ var ( ErrOutputNotFound = errors.New("output not found") ) -var contractTables = []string{ - "contracts", - "archived_contracts", -} - func GetContractState(ctx context.Context, tx sql.Tx, fcid types.FileContractID) (api.ContractState, error) { var cse ContractState err := tx. From c9314edd19dd29fcbdd37923c2655205f59bca3f Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 26 Sep 2024 16:32:18 +0200 Subject: [PATCH 173/708] bus: allow partially updating settings --- bus/bus.go | 246 +++++++++++++++++++++++++++++ bus/client/settings.go | 24 +++ bus/routes.go | 157 ++++++++++-------- internal/test/e2e/cluster_test.go | 28 +--- internal/test/e2e/settings_test.go | 163 +++++++++++++++++++ 5 files changed, 522 insertions(+), 96 deletions(-) create mode 100644 internal/test/e2e/settings_test.go diff --git a/bus/bus.go b/bus/bus.go index a741abd3a..8d1157196 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -5,11 +5,13 @@ package bus import ( "context" + "encoding/json" "errors" "fmt" "math" "net" "net/http" + "reflect" "time" "go.sia.tech/core/consensus" @@ -471,12 +473,16 @@ func (b *Bus) Handler() http.Handler { "DELETE /sectors/:hk/:root": b.sectorsHostRootHandlerDELETE, "GET /settings/gouging": b.settingsGougingHandlerGET, + "PATCH /settings/gouging": b.settingsGougingHandlerPATCH, "PUT /settings/gouging": b.settingsGougingHandlerPUT, "GET /settings/pinned": b.settingsPinnedHandlerGET, + "PATCH /settings/pinned": b.settingsPinnedHandlerPATCH, "PUT /settings/pinned": b.settingsPinnedHandlerPUT, "GET /settings/s3": b.settingsS3HandlerGET, + "PATCH /settings/s3": b.settingsS3HandlerPATCH, "PUT /settings/s3": b.settingsS3HandlerPUT, "GET /settings/upload": b.settingsUploadHandlerGET, + "PATCH /settings/upload": b.settingsUploadHandlerPATCH, "PUT /settings/upload": b.settingsUploadHandlerPUT, "POST /slabs/migration": b.slabsMigrationHandlerPOST, @@ -649,6 +655,59 @@ func (b *Bus) broadcastContract(ctx context.Context, fcid types.FileContractID) return } +func (b *Bus) fetchSetting(ctx context.Context, key string) (interface{}, error) { + switch key { + case "gouging": + gs, err := b.ss.GougingSettings(ctx) + if errors.Is(err, sql.ErrSettingNotFound) { + return api.DefaultGougingSettings, nil + } else if err != nil { + return nil, err + } + return gs, nil + case "pinned": + ps, err := b.ss.PinnedSettings(ctx) + if errors.Is(err, sql.ErrSettingNotFound) { + ps = api.DefaultPinnedSettings + } else if err != nil { + return nil, err + } + + // populate the Autopilots map with the current autopilots + aps, err := b.as.Autopilots(ctx) + if err != nil { + return nil, fmt.Errorf("failed to fetch autopilots: %w", err) + } + if ps.Autopilots == nil { + ps.Autopilots = make(map[string]api.AutopilotPins) + } + for _, ap := range aps { + if _, exists := ps.Autopilots[ap.ID]; !exists { + ps.Autopilots[ap.ID] = api.AutopilotPins{} + } + } + return ps, nil + case "upload": + us, err := b.ss.UploadSettings(ctx) + if errors.Is(err, sql.ErrSettingNotFound) { + return api.DefaultUploadSettings(b.cm.TipState().Network.Name), nil + } else if err != nil { + return nil, err + } + return us, nil + case "s3": + s3s, err := b.ss.S3Settings(ctx) + if errors.Is(err, sql.ErrSettingNotFound) { + return api.DefaultS3Settings, nil + } else if err != nil { + return nil, err + } + return s3s, nil + default: + panic("unknown setting") // developer error + } +} + func (b *Bus) formContract(ctx context.Context, hostSettings rhpv2.HostSettings, renterAddress types.Address, renterFunds, hostCollateral types.Currency, hostKey types.PublicKey, hostIP string, endHeight uint64) (rhpv2.ContractRevision, error) { // derive the renter key renterKey := b.masterKey.DeriveContractKey(hostKey) @@ -697,6 +756,74 @@ func (b *Bus) isPassedV2AllowHeight() bool { return cs.Index.Height >= cs.Network.HardforkV2.AllowHeight } +func (b *Bus) patchSetting(ctx context.Context, key string, patch map[string]any) (interface{}, error) { + var curr map[string]any + + // fetch current setting + gs, err := b.fetchSetting(ctx, key) + if err != nil { + return nil, err + } + + // turn it into a map + buf, err := json.Marshal(gs) + if err != nil { + return nil, fmt.Errorf("failed to marshal %v settings: %w", key, err) + } else if err := json.Unmarshal(buf, &curr); err != nil { + return nil, fmt.Errorf("failed to unmarshal %v settings: %w", key, err) + } + + // apply patch + err = patchSettings(curr, patch) + if err != nil { + return nil, fmt.Errorf("failed to patch %v settings: %w", key, err) + } + + // marshal the patched setting + buf, err = json.Marshal(curr) + if err != nil { + return nil, fmt.Errorf("failed to marshal patched %v settings: %w", key, err) + } + + // update the patched setting + switch key { + case "gouging": + var update api.GougingSettings + if err := json.Unmarshal(buf, &update); err != nil { + return nil, err + } else if err := b.updateSetting(ctx, key, update); err != nil { + return nil, err + } + return update, nil + case "pinned": + var update api.PinnedSettings + if err := json.Unmarshal(buf, &update); err != nil { + return nil, err + } else if err := b.updateSetting(ctx, key, update); err != nil { + return nil, err + } + return update, nil + case "upload": + var update api.UploadSettings + if err := json.Unmarshal(buf, &update); err != nil { + return nil, err + } else if err := b.updateSetting(ctx, key, update); err != nil { + return nil, err + } + return update, nil + case "s3": + var update api.S3Settings + if err := json.Unmarshal(buf, &update); err != nil { + return nil, err + } else if err := b.updateSetting(ctx, key, update); err != nil { + return nil, err + } + return update, nil + default: + panic("unknown setting") // developer error + } +} + func (b *Bus) prepareRenew(cs consensus.State, revision types.FileContractRevision, hostAddress, renterAddress types.Address, renterFunds, minNewCollateral, maxFundAmount types.Currency, endHeight, expectedStorage uint64) rhp3.PrepareRenewFn { return func(pt rhpv3.HostPriceTable) ([]types.Hash256, []types.Transaction, types.Currency, rhp3.DiscardTxnFn, error) { // create the final revision from the provided revision @@ -778,3 +905,122 @@ func (b *Bus) renewContract(ctx context.Context, cs consensus.State, gp api.Goug return newRevision, contractPrice, fundAmount, nil } + +func (b *Bus) updateSetting(ctx context.Context, key string, value any) error { + var payload interface{} + var updatePinMgr bool + + switch key { + case "gouging": + _, ok := value.(api.GougingSettings) + if !ok { + panic("invalid type") // developer error + } + gs := value.(api.GougingSettings) + if err := b.ss.UpdateGougingSettings(ctx, gs); err != nil { + return fmt.Errorf("failed to update gouging settings: %w", err) + } + payload = api.EventSettingUpdate{ + GougingSettings: &gs, + Timestamp: time.Now().UTC(), + } + updatePinMgr = true + case "pinned": + _, ok := value.(api.PinnedSettings) + if !ok { + panic("invalid type") // developer error + } + ps := value.(api.PinnedSettings) + if err := b.ss.UpdatePinnedSettings(ctx, ps); err != nil { + return fmt.Errorf("failed to update pinned settings: %w", err) + } + payload = api.EventSettingUpdate{ + PinnedSettings: &ps, + Timestamp: time.Now().UTC(), + } + updatePinMgr = true + case "upload": + _, ok := value.(api.UploadSettings) + if !ok { + panic("invalid type") // developer error + } + us := value.(api.UploadSettings) + if err := b.ss.UpdateUploadSettings(ctx, us); err != nil { + return fmt.Errorf("failed to update upload settings: %w", err) + } + payload = api.EventSettingUpdate{ + UploadSettings: &us, + Timestamp: time.Now().UTC(), + } + case "s3": + _, ok := value.(api.S3Settings) + if !ok { + panic("invalid type") // developer error + } + s3s := value.(api.S3Settings) + if err := b.ss.UpdateS3Settings(ctx, s3s); err != nil { + return fmt.Errorf("failed to update S3 settings: %w", err) + } + payload = api.EventSettingUpdate{ + S3Settings: &s3s, + Timestamp: time.Now().UTC(), + } + default: + panic("unknown setting") // developer error + } + + // broadcast update + b.broadcastAction(webhooks.Event{ + Module: api.ModuleSetting, + Event: api.EventUpdate, + Payload: payload, + }) + + // update pin manager if necessary + if updatePinMgr { + b.pinMgr.TriggerUpdate() + } + + return nil +} + +// patchSettings merges two settings maps. returns an error if the two maps are +// not compatible. +func patchSettings(a, b map[string]any) error { + for k, vb := range b { + va, ok := a[k] + if !ok || va == nil { + return fmt.Errorf("field '%q' not found in settings, %w", k, ErrSettingFieldNotFound) + } else if vb != nil && reflect.TypeOf(va) != reflect.TypeOf(vb) { + return fmt.Errorf("invalid type for setting %q: expected %T, got %T", k, va, vb) + } + + switch vb := vb.(type) { + case json.RawMessage: + vaf, vbf := make(map[string]any), make(map[string]any) + if err := json.Unmarshal(vb, &vbf); err != nil { + return fmt.Errorf("failed to unmarshal fields %q: %w", k, err) + } else if err := json.Unmarshal(va.(json.RawMessage), &vaf); err != nil { + return fmt.Errorf("failed to unmarshal current fields %q: %w", k, err) + } + if err := patchSettings(vaf, vbf); err != nil { + return fmt.Errorf("failed to patch fields %q: %w", k, err) + } + + buf, err := json.Marshal(vaf) + if err != nil { + return fmt.Errorf("failed to marshal patched fields %q: %w", k, err) + } + a[k] = json.RawMessage(buf) + case map[string]any: + var err error + err = patchSettings(a[k].(map[string]any), vb) + if err != nil { + return fmt.Errorf("invalid value for setting %q: %w", k, err) + } + default: + a[k] = vb + } + } + return nil +} diff --git a/bus/client/settings.go b/bus/client/settings.go index 74d5f34c9..60dc9373b 100644 --- a/bus/client/settings.go +++ b/bus/client/settings.go @@ -12,11 +12,23 @@ func (c *Client) GougingSettings(ctx context.Context) (gs api.GougingSettings, e return } +// PatchGougingSettings applies the given patch to the gouging settings. +func (c *Client) PatchGougingSettings(ctx context.Context, patch map[string]any) (gs api.GougingSettings, err error) { + err = c.c.WithContext(ctx).PATCH("/settings/gouging", patch, &gs) + return +} + // UpdateGougingSettings updates the given setting. func (c *Client) UpdateGougingSettings(ctx context.Context, gs api.GougingSettings) error { return c.c.WithContext(ctx).PUT("/settings/gouging", gs) } +// PatchPinnedSettings applies the given patch to the pinned settings. +func (c *Client) PatchPinnedSettings(ctx context.Context, patch map[string]any) (ps api.PinnedSettings, err error) { + err = c.c.WithContext(ctx).PATCH("/settings/pinned", patch, &ps) + return +} + // PinnedSettings returns the pinned settings. func (c *Client) PinnedSettings(ctx context.Context) (ps api.PinnedSettings, err error) { err = c.c.WithContext(ctx).GET("/settings/pinned", &ps) @@ -34,6 +46,12 @@ func (c *Client) S3Settings(ctx context.Context) (as api.S3Settings, err error) return } +// PatchS3Settings applies the given patch to the S3 settings. +func (c *Client) PatchS3Settings(ctx context.Context, patch map[string]any) (as api.S3Settings, err error) { + err = c.c.WithContext(ctx).PATCH("/settings/s3", patch, &as) + return +} + // UpdateS3Settings updates the given setting. func (c *Client) UpdateS3Settings(ctx context.Context, as api.S3Settings) error { return c.c.WithContext(ctx).PUT("/settings/s3", as) @@ -45,6 +63,12 @@ func (c *Client) UploadSettings(ctx context.Context) (css api.UploadSettings, er return } +// PatchUploadSettings applies the given patch to the upload settings. +func (c *Client) PatchUploadSettings(ctx context.Context, patch map[string]any) (us api.UploadSettings, err error) { + err = c.c.WithContext(ctx).PATCH("/settings/upload", patch, &us) + return +} + // UpdateUploadSettings update the given setting. func (c *Client) UpdateUploadSettings(ctx context.Context, us api.UploadSettings) error { return c.c.WithContext(ctx).PUT("/settings/upload", us) diff --git a/bus/routes.go b/bus/routes.go index 9d83a792d..f68edec7c 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -34,6 +34,8 @@ import ( "go.uber.org/zap" ) +var ErrSettingFieldNotFound = errors.New("setting field not found") + func (b *Bus) accountsFundHandler(jc jape.Context) { var req api.AccountsFundRequest if jc.Decode(&req) != nil { @@ -1308,13 +1310,28 @@ func (b *Bus) packedSlabsHandlerDonePOST(jc jape.Context) { } func (b *Bus) settingsGougingHandlerGET(jc jape.Context) { - gs, err := b.ss.GougingSettings(jc.Request.Context()) - if errors.Is(err, sql.ErrSettingNotFound) { - jc.Encode(api.DefaultGougingSettings) + gs, err := b.fetchSetting(jc.Request.Context(), "gouging") + if err != nil { + jc.Error(err, http.StatusInternalServerError) return - } else if jc.Check("failed to get gouging settings", err) == nil { - jc.Encode(gs) } + jc.Encode(gs) +} + +func (b *Bus) settingsGougingHandlerPATCH(jc jape.Context) { + // decode patch + var patch map[string]any + if err := jc.Decode(&patch); err != nil { + return + } + + // apply patch + update, err := b.patchSetting(jc.Request.Context(), "gouging", patch) + if err != nil { + jc.Error(err, http.StatusInternalServerError) + return + } + jc.Encode(update) } func (b *Bus) settingsGougingHandlerPUT(jc jape.Context) { @@ -1324,41 +1341,35 @@ func (b *Bus) settingsGougingHandlerPUT(jc jape.Context) { } else if err := gs.Validate(); err != nil { jc.Error(fmt.Errorf("couldn't update gouging settings, error: %v", err), http.StatusBadRequest) return - } else if jc.Check("could not update gouging settings", b.ss.UpdateGougingSettings(jc.Request.Context(), gs)) == nil { - b.broadcastAction(webhooks.Event{ - Module: api.ModuleSetting, - Event: api.EventUpdate, - Payload: api.EventSettingUpdate{ - GougingSettings: &gs, - Timestamp: time.Now().UTC(), - }, - }) - b.pinMgr.TriggerUpdate() + } else if err := b.updateSetting(jc.Request.Context(), "gouging", gs); err != nil { + jc.Error(err, http.StatusInternalServerError) + return } } func (b *Bus) settingsPinnedHandlerGET(jc jape.Context) { - ps, err := b.ss.PinnedSettings(jc.Request.Context()) - if errors.Is(err, sql.ErrSettingNotFound) { - ps = api.DefaultPinnedSettings - } else if jc.Check("failed to get pinned settings", err) != nil { + ps, err := b.fetchSetting(jc.Request.Context(), "pinned") + if err != nil { + jc.Error(err, http.StatusInternalServerError) return } + jc.Encode(ps) +} - // populate the Autopilots map with the current autopilots - aps, err := b.as.Autopilots(jc.Request.Context()) - if jc.Check("failed to fetch autopilots", err) != nil { +func (b *Bus) settingsPinnedHandlerPATCH(jc jape.Context) { + // decode patch + var patch map[string]any + if err := jc.Decode(&patch); err != nil { return } - if ps.Autopilots == nil { - ps.Autopilots = make(map[string]api.AutopilotPins) - } - for _, ap := range aps { - if _, exists := ps.Autopilots[ap.ID]; !exists { - ps.Autopilots[ap.ID] = api.AutopilotPins{} - } + + // apply patch + update, err := b.patchSetting(jc.Request.Context(), "pinned", patch) + if err != nil { + jc.Error(err, http.StatusInternalServerError) + return } - jc.Encode(ps) + jc.Encode(update) } func (b *Bus) settingsPinnedHandlerPUT(jc jape.Context) { @@ -1371,29 +1382,34 @@ func (b *Bus) settingsPinnedHandlerPUT(jc jape.Context) { } else if ps.Enabled() && !b.explorer.Enabled() { jc.Error(fmt.Errorf("can't enable price pinning, %w", api.ErrExplorerDisabled), http.StatusBadRequest) return + } else if err := b.updateSetting(jc.Request.Context(), "pinned", ps); err != nil { + jc.Error(err, http.StatusInternalServerError) } +} - if jc.Check("could not update pinned settings", b.ss.UpdatePinnedSettings(jc.Request.Context(), ps)) == nil { - b.broadcastAction(webhooks.Event{ - Module: api.ModuleSetting, - Event: api.EventUpdate, - Payload: api.EventSettingUpdate{ - PinnedSettings: &ps, - Timestamp: time.Now().UTC(), - }, - }) - b.pinMgr.TriggerUpdate() +func (b *Bus) settingsUploadHandlerGET(jc jape.Context) { + us, err := b.fetchSetting(jc.Request.Context(), "upload") + if err != nil { + jc.Error(err, http.StatusInternalServerError) + return } + jc.Encode(us) } -func (b *Bus) settingsUploadHandlerGET(jc jape.Context) { - us, err := b.ss.UploadSettings(jc.Request.Context()) - if errors.Is(err, sql.ErrSettingNotFound) { - jc.Encode(api.DefaultUploadSettings(b.cm.TipState().Network.Name)) +func (b *Bus) settingsUploadHandlerPATCH(jc jape.Context) { + // decode patch + var patch map[string]any + if err := jc.Decode(&patch); err != nil { return - } else if jc.Check("failed to get upload settings", err) == nil { - jc.Encode(us) } + + // apply patch + update, err := b.patchSetting(jc.Request.Context(), "upload", patch) + if err != nil { + jc.Error(err, http.StatusInternalServerError) + return + } + jc.Encode(update) } func (b *Bus) settingsUploadHandlerPUT(jc jape.Context) { @@ -1403,26 +1419,35 @@ func (b *Bus) settingsUploadHandlerPUT(jc jape.Context) { } else if err := us.Validate(); err != nil { jc.Error(fmt.Errorf("couldn't update upload settings, error: %v", err), http.StatusBadRequest) return - } else if jc.Check("could not update upload settings", b.ss.UpdateUploadSettings(jc.Request.Context(), us)) == nil { - b.broadcastAction(webhooks.Event{ - Module: api.ModuleSetting, - Event: api.EventUpdate, - Payload: api.EventSettingUpdate{ - UploadSettings: &us, - Timestamp: time.Now().UTC(), - }, - }) + } else if err := b.updateSetting(jc.Request.Context(), "upload", us); err != nil { + jc.Error(err, http.StatusInternalServerError) + return } } func (b *Bus) settingsS3HandlerGET(jc jape.Context) { - s3s, err := b.ss.S3Settings(jc.Request.Context()) - if errors.Is(err, sql.ErrSettingNotFound) { - jc.Encode(api.DefaultS3Settings) + s3s, err := b.fetchSetting(jc.Request.Context(), "s3") + if err != nil { + jc.Error(err, http.StatusInternalServerError) + return + } + jc.Encode(s3s) +} + +func (b *Bus) settingsS3HandlerPATCH(jc jape.Context) { + // decode patch + var patch map[string]any + if err := jc.Decode(&patch); err != nil { + return + } + + // apply patch + update, err := b.patchSetting(jc.Request.Context(), "s3", patch) + if err != nil { + jc.Error(err, http.StatusInternalServerError) return - } else if jc.Check("failed to get S3 settings", err) == nil { - jc.Encode(s3s) } + jc.Encode(update) } func (b *Bus) settingsS3HandlerPUT(jc jape.Context) { @@ -1432,15 +1457,9 @@ func (b *Bus) settingsS3HandlerPUT(jc jape.Context) { } else if err := s3s.Validate(); err != nil { jc.Error(fmt.Errorf("couldn't update S3 settings, error: %v", err), http.StatusBadRequest) return - } else if jc.Check("could not update S3 settings", b.ss.UpdateS3Settings(jc.Request.Context(), s3s)) == nil { - b.broadcastAction(webhooks.Event{ - Module: api.ModuleSetting, - Event: api.EventUpdate, - Payload: api.EventSettingUpdate{ - S3Settings: &s3s, - Timestamp: time.Now().UTC(), - }, - }) + } else if err := b.updateSetting(jc.Request.Context(), "s3", s3s); err != nil { + jc.Error(err, http.StatusInternalServerError) + return } } diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index d6e9a2713..1caade615 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -183,36 +183,10 @@ func TestObjectsWithNoDelimiter(t *testing.T) { func TestNewTestCluster(t *testing.T) { cluster := newTestCluster(t, clusterOptsDefault) defer cluster.Shutdown() - b := cluster.Bus tt := cluster.tt - // Upload packing should be disabled by default. - us, err := b.UploadSettings(context.Background()) - tt.OK(err) - if us.Packing.Enabled { - t.Fatalf("expected upload packing to be disabled by default, got %v", us.Packing.Enabled) - } - - // PinnedSettings should have default values - ps, err := b.PinnedSettings(context.Background()) - tt.OK(err) - if ps.Currency == "" { - t.Fatal("expected default value for Currency") - } else if ps.Threshold == 0 { - t.Fatal("expected default value for Threshold") - } - - // Autopilot shouldn't have its prices pinned - if len(ps.Autopilots) != 1 { - t.Fatalf("expected 1 autopilot, got %v", len(ps.Autopilots)) - } else if pin, exists := ps.Autopilots[api.DefaultAutopilotID]; !exists { - t.Fatalf("expected autopilot %v to exist", api.DefaultAutopilotID) - } else if pin.Allowance != (api.Pin{}) { - t.Fatalf("expected autopilot %v to have no pinned allowance, got %v", api.DefaultAutopilotID, pin.Allowance) - } - // See if autopilot is running by triggering the loop. - _, err = cluster.Autopilot.Trigger(false) + _, err := cluster.Autopilot.Trigger(false) tt.OK(err) // Add a host. diff --git a/internal/test/e2e/settings_test.go b/internal/test/e2e/settings_test.go new file mode 100644 index 000000000..77c04f7ab --- /dev/null +++ b/internal/test/e2e/settings_test.go @@ -0,0 +1,163 @@ +package e2e + +import ( + "context" + "reflect" + "testing" + + "github.com/google/go-cmp/cmp" + + "go.sia.tech/core/types" + "go.sia.tech/renterd/api" + "go.sia.tech/renterd/bus" + "go.sia.tech/renterd/internal/test" + "go.sia.tech/renterd/internal/utils" +) + +// TestSettings is a test for bus settings. +func TestSettings(t *testing.T) { + // create cluster + cluster := newTestCluster(t, clusterOptsDefault) + defer cluster.Shutdown() + + // convenience variables + b := cluster.Bus + + // build default pinned settings + dps := api.DefaultPinnedSettings + aps, err := b.Autopilots(context.Background()) + if err != nil { + t.Fatal(err) + } + dps.Autopilots = make(map[string]api.AutopilotPins) + for _, ap := range aps { + if ap.Config.Contracts.Amount > 0 { + dps.Autopilots[ap.ID] = api.AutopilotPins{} + } + } + + // build default S3 settings + ds3 := api.S3Settings{ + Authentication: api.S3AuthenticationSettings{ + V4Keypairs: map[string]string{test.S3AccessKeyID: test.S3SecretAccessKey}, + }, + } + + // build default upload settings + dus := test.UploadSettings + dus.Packing = api.UploadPackingSettings{ + Enabled: false, + SlabBufferMaxSizeSoft: 1 << 32, // 4 GiB, + } + + // assert gouging settings + gs, err := b.GougingSettings(context.Background()) + if err != nil { + t.Fatal(err) + } else if !reflect.DeepEqual(gs, test.GougingSettings) { + t.Fatal("expected default test gouging settings", cmp.Diff(gs, test.GougingSettings)) + } + + // perform update + gs.MaxRPCPrice = gs.MaxRPCPrice.Mul64(2) + if err := b.UpdateGougingSettings(context.Background(), gs); err != nil { + t.Fatal(err) + } + + // perform patch + if updated, err := b.PatchGougingSettings(context.Background(), map[string]any{"maxDownloadPrice": gs.MaxDownloadPrice.Mul64(2)}); err != nil { + t.Fatal(err) + } else if updated.MaxDownloadPrice.Cmp(test.GougingSettings.MaxDownloadPrice.Mul64(2)) != 0 { + t.Fatal("expected updated max download price to be doubled") + } else if updated.MaxRPCPrice.Cmp(test.GougingSettings.MaxRPCPrice.Mul64(2)) != 0 { + t.Fatal("expected updated max RPC price to be unchanged") + } else if updated.MaxRPCPrice.Add(updated.MaxDownloadPrice).IsZero() { + t.Fatal("expected test settings to have non-zero max dl and rpc price") + } else if _, err := b.PatchGougingSettings(context.Background(), map[string]any{"iDoNotExist": types.ZeroCurrency}); !utils.IsErr(err, bus.ErrSettingFieldNotFound) { + t.Fatal("unexpected error", err) + } + + // assert pinned settings + ps, err := b.PinnedSettings(context.Background()) + if err != nil { + t.Fatal(err) + } else if !reflect.DeepEqual(ps, dps) { + t.Fatal("expected default pinned settings", cmp.Diff(ps, dps)) + } + + // perform update + ps.Currency = "yen" + if err := b.UpdatePinnedSettings(context.Background(), ps); err != nil { + t.Fatal(err) + } + + // perform patch + if updated, err := b.PatchPinnedSettings(context.Background(), map[string]any{"threshold": 0.666}); err != nil { + t.Fatal(err) + } else if updated.Threshold != 0.666 { + t.Fatal("expected updated threshold to be 0.666") + } else if updated.Currency != "yen" { + t.Fatal("expected updated currency to be 'yen'") + } else if _, err := b.PatchPinnedSettings(context.Background(), map[string]any{"iDoNotExist": types.ZeroCurrency}); !utils.IsErr(err, bus.ErrSettingFieldNotFound) { + t.Fatal("unexpected error", err) + } + + // assert upload settings + us, err := b.UploadSettings(context.Background()) + if err != nil { + t.Fatal(err) + } else if !reflect.DeepEqual(us, dus) { + t.Fatalf("expected default test upload settings, got %v", cmp.Diff(us, dus)) + } + + // perform update + us.Packing.Enabled = true + if err := b.UpdateUploadSettings(context.Background(), us); err != nil { + t.Fatal(err) + } + + // perform patch + if updated, err := b.PatchUploadSettings(context.Background(), map[string]any{"redundancy": api.RedundancySettings{MinShards: 10, TotalShards: 30}}); err != nil { + t.Fatal(err) + } else if !updated.Packing.Enabled { + t.Fatal("expected packing to be enabled") + } else if updated.Redundancy.MinShards != 10 || updated.Redundancy.TotalShards != 30 { + t.Fatal("expected updated redundancy to be 30/10") + } else if _, err := b.PatchUploadSettings(context.Background(), map[string]any{"iDoNotExist": types.ZeroCurrency}); !utils.IsErr(err, bus.ErrSettingFieldNotFound) { + t.Fatal("unexpected error", err) + } + + // assert success + us, err = b.UploadSettings(context.Background()) + if err != nil { + t.Fatal(err) + } else if !us.Packing.Enabled { + t.Fatalf("expected upload packing to be disabled by default, got %v", us.Packing.Enabled) + } + + // assert S3 settings + s3, err := b.S3Settings(context.Background()) + if err != nil { + t.Fatal(err) + } else if !reflect.DeepEqual(s3, ds3) { + t.Fatalf("expected default test S3 settings, got %v", cmp.Diff(s3, ds3)) + } + + // perform update + s3AccessKeyFoo := "FOOFOOFOOFOOFOOFOOFOO" + s3.Authentication.V4Keypairs[s3AccessKeyFoo] = test.S3SecretAccessKey + if err := b.UpdateS3Settings(context.Background(), s3); err != nil { + t.Fatal(err) + } + + // perform patch + if updated, err := b.PatchS3Settings(context.Background(), map[string]any{"authentication": map[string]any{"v4Keypairs": map[string]string{test.S3AccessKeyID: "mykey"}}}); err != nil { + t.Fatal(err) + } else if value, ok := updated.Authentication.V4Keypairs[s3AccessKeyFoo]; !ok || value != test.S3SecretAccessKey { + t.Fatal("unexpected value", ok, value) + } else if value, ok := updated.Authentication.V4Keypairs[test.S3AccessKeyID]; !ok || value != "mykey" { + t.Fatal("unexpected value", ok, value) + } else if _, err := b.PatchS3Settings(context.Background(), map[string]any{"iDoNotExist": types.ZeroCurrency}); !utils.IsErr(err, bus.ErrSettingFieldNotFound) { + t.Fatal("unexpected error", err) + } +} From d1adac99c1d4c44739ae585be916d327d1b44526 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 26 Sep 2024 16:44:03 +0200 Subject: [PATCH 174/708] jape: fix multiple response writes --- bus/routes.go | 68 +++++++++++++++++++++++++++++++++++---------------- 1 file changed, 47 insertions(+), 21 deletions(-) diff --git a/bus/routes.go b/bus/routes.go index f68edec7c..219e97a82 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1310,28 +1310,36 @@ func (b *Bus) packedSlabsHandlerDonePOST(jc jape.Context) { } func (b *Bus) settingsGougingHandlerGET(jc jape.Context) { - gs, err := b.fetchSetting(jc.Request.Context(), "gouging") - if err != nil { + if gs, err := b.fetchSetting(jc.Request.Context(), "gouging"); err != nil { jc.Error(err, http.StatusInternalServerError) return + } else if gsc, ok := gs.(api.GougingSettings); !ok { + panic("unexpected value") // developer error + } else { + jc.Encode(gsc) } - jc.Encode(gs) } func (b *Bus) settingsGougingHandlerPATCH(jc jape.Context) { // decode patch var patch map[string]any - if err := jc.Decode(&patch); err != nil { + if err := json.NewDecoder(jc.Request.Body).Decode(&patch); err != nil { + jc.Error(fmt.Errorf("couldn't decode request type (%T): %w", patch, err), http.StatusBadRequest) return } // apply patch update, err := b.patchSetting(jc.Request.Context(), "gouging", patch) - if err != nil { + if errors.Is(err, ErrSettingFieldNotFound) { + jc.Error(err, http.StatusBadRequest) + } else if err != nil { jc.Error(err, http.StatusInternalServerError) return + } else if gs, ok := update.(api.GougingSettings); !ok { + panic("unexpected setting") // developer error + } else { + jc.Encode(gs) } - jc.Encode(update) } func (b *Bus) settingsGougingHandlerPUT(jc jape.Context) { @@ -1348,24 +1356,30 @@ func (b *Bus) settingsGougingHandlerPUT(jc jape.Context) { } func (b *Bus) settingsPinnedHandlerGET(jc jape.Context) { - ps, err := b.fetchSetting(jc.Request.Context(), "pinned") - if err != nil { + if ps, err := b.fetchSetting(jc.Request.Context(), "pinned"); err != nil { jc.Error(err, http.StatusInternalServerError) return + } else if psc, ok := ps.(api.PinnedSettings); !ok { + panic("unexpected value") // developer error + } else { + jc.Encode(psc) } - jc.Encode(ps) } func (b *Bus) settingsPinnedHandlerPATCH(jc jape.Context) { // decode patch var patch map[string]any - if err := jc.Decode(&patch); err != nil { + if err := json.NewDecoder(jc.Request.Body).Decode(&patch); err != nil { + jc.Error(fmt.Errorf("couldn't decode request type (%T): %w", patch, err), http.StatusBadRequest) return } // apply patch update, err := b.patchSetting(jc.Request.Context(), "pinned", patch) - if err != nil { + if errors.Is(err, ErrSettingFieldNotFound) { + jc.Error(err, http.StatusBadRequest) + return + } else if err != nil { jc.Error(err, http.StatusInternalServerError) return } @@ -1388,24 +1402,30 @@ func (b *Bus) settingsPinnedHandlerPUT(jc jape.Context) { } func (b *Bus) settingsUploadHandlerGET(jc jape.Context) { - us, err := b.fetchSetting(jc.Request.Context(), "upload") - if err != nil { + if us, err := b.fetchSetting(jc.Request.Context(), "upload"); err != nil { jc.Error(err, http.StatusInternalServerError) return + } else if usc, ok := us.(api.UploadSettings); !ok { + panic("unexpected value") // developer error + } else { + jc.Encode(usc) } - jc.Encode(us) } func (b *Bus) settingsUploadHandlerPATCH(jc jape.Context) { // decode patch var patch map[string]any - if err := jc.Decode(&patch); err != nil { + if err := json.NewDecoder(jc.Request.Body).Decode(&patch); err != nil { + jc.Error(fmt.Errorf("couldn't decode request type (%T): %w", patch, err), http.StatusBadRequest) return } // apply patch update, err := b.patchSetting(jc.Request.Context(), "upload", patch) - if err != nil { + if errors.Is(err, ErrSettingFieldNotFound) { + jc.Error(err, http.StatusBadRequest) + return + } else if err != nil { jc.Error(err, http.StatusInternalServerError) return } @@ -1426,24 +1446,30 @@ func (b *Bus) settingsUploadHandlerPUT(jc jape.Context) { } func (b *Bus) settingsS3HandlerGET(jc jape.Context) { - s3s, err := b.fetchSetting(jc.Request.Context(), "s3") - if err != nil { + if s3s, err := b.fetchSetting(jc.Request.Context(), "s3"); err != nil { jc.Error(err, http.StatusInternalServerError) return + } else if s3sc, ok := s3s.(api.S3Settings); !ok { + panic("unexpected value") // developer error + } else { + jc.Encode(s3sc) } - jc.Encode(s3s) } func (b *Bus) settingsS3HandlerPATCH(jc jape.Context) { // decode patch var patch map[string]any - if err := jc.Decode(&patch); err != nil { + if err := json.NewDecoder(jc.Request.Body).Decode(&patch); err != nil { + jc.Error(fmt.Errorf("couldn't decode request type (%T): %w", patch, err), http.StatusBadRequest) return } // apply patch update, err := b.patchSetting(jc.Request.Context(), "s3", patch) - if err != nil { + if errors.Is(err, ErrSettingFieldNotFound) { + jc.Error(err, http.StatusBadRequest) + return + } else if err != nil { jc.Error(err, http.StatusInternalServerError) return } From 9cdee4d3f0e03eef434b393a543d8f4991cd2fb9 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 26 Sep 2024 18:13:42 +0200 Subject: [PATCH 175/708] jape: fix decode --- bus/routes.go | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/bus/routes.go b/bus/routes.go index 219e97a82..4961e09cb 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1323,8 +1323,7 @@ func (b *Bus) settingsGougingHandlerGET(jc jape.Context) { func (b *Bus) settingsGougingHandlerPATCH(jc jape.Context) { // decode patch var patch map[string]any - if err := json.NewDecoder(jc.Request.Body).Decode(&patch); err != nil { - jc.Error(fmt.Errorf("couldn't decode request type (%T): %w", patch, err), http.StatusBadRequest) + if jc.Decode(&patch) != nil { return } @@ -1369,8 +1368,7 @@ func (b *Bus) settingsPinnedHandlerGET(jc jape.Context) { func (b *Bus) settingsPinnedHandlerPATCH(jc jape.Context) { // decode patch var patch map[string]any - if err := json.NewDecoder(jc.Request.Body).Decode(&patch); err != nil { - jc.Error(fmt.Errorf("couldn't decode request type (%T): %w", patch, err), http.StatusBadRequest) + if jc.Decode(&patch) != nil { return } @@ -1415,8 +1413,7 @@ func (b *Bus) settingsUploadHandlerGET(jc jape.Context) { func (b *Bus) settingsUploadHandlerPATCH(jc jape.Context) { // decode patch var patch map[string]any - if err := json.NewDecoder(jc.Request.Body).Decode(&patch); err != nil { - jc.Error(fmt.Errorf("couldn't decode request type (%T): %w", patch, err), http.StatusBadRequest) + if jc.Decode(&patch) != nil { return } @@ -1459,8 +1456,7 @@ func (b *Bus) settingsS3HandlerGET(jc jape.Context) { func (b *Bus) settingsS3HandlerPATCH(jc jape.Context) { // decode patch var patch map[string]any - if err := json.NewDecoder(jc.Request.Body).Decode(&patch); err != nil { - jc.Error(fmt.Errorf("couldn't decode request type (%T): %w", patch, err), http.StatusBadRequest) + if jc.Decode(&patch) != nil { return } From a2548eb2e5a29bf454084fcc593afe6667d6068f Mon Sep 17 00:00:00 2001 From: PJ Date: Fri, 27 Sep 2024 13:28:03 +0200 Subject: [PATCH 176/708] stores: fix archived contracts --- stores/metadata_test.go | 14 ++++++++++++++ stores/sql/rows.go | 2 +- stores/sql/types.go | 26 ++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/stores/metadata_test.go b/stores/metadata_test.go index 29c655de0..901d80619 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -3867,6 +3867,20 @@ func TestRenewedContract(t *testing.T) { } else if cs[0].ID != fcidR { t.Fatal("unexpected contract", cs[0]) } + + // archive the renewal + err = ss.ArchiveContract(context.Background(), renewal.ID, t.Name()) + if err != nil { + t.Fatal(err) + } + + // assert we can fetch archived contracts + archived, err := ss.Contracts(context.Background(), api.ContractsOpts{FilterMode: api.ContractFilterModeArchived}) + if err != nil { + t.Fatal(err) + } else if len(archived) != 2 { + t.Fatal("unexpected two archived contracts", len(cs)) + } } func TestRefreshHealth(t *testing.T) { diff --git a/stores/sql/rows.go b/stores/sql/rows.go index 69b5aa8d9..e138f0907 100644 --- a/stores/sql/rows.go +++ b/stores/sql/rows.go @@ -12,7 +12,7 @@ type Scanner interface { type ContractRow struct { FCID FileContractID - HostID int64 + HostID NullableInt64 HostKey PublicKey // state fields diff --git a/stores/sql/types.go b/stores/sql/types.go index 66127c3ce..443e1a911 100644 --- a/stores/sql/types.go +++ b/stores/sql/types.go @@ -37,6 +37,7 @@ type ( FileContractID types.FileContractID Hash256 types.Hash256 MerkleProof struct{ Hashes []types.Hash256 } + NullableInt64 int64 NullableString string HostSettings rhpv2.HostSettings PriceTable rhpv3.HostPriceTable @@ -62,6 +63,7 @@ var ( _ scannerValuer = (*FileContractID)(nil) _ scannerValuer = (*Hash256)(nil) _ scannerValuer = (*MerkleProof)(nil) + _ scannerValuer = (*NullableInt64)(nil) _ scannerValuer = (*NullableString)(nil) _ scannerValuer = (*HostSettings)(nil) _ scannerValuer = (*PriceTable)(nil) @@ -462,6 +464,30 @@ func (u Unsigned64) Value() (driver.Value, error) { return int64(u), nil } +// Scan scan value into NullableInt64, implements sql.Scanner interface. +func (i *NullableInt64) Scan(value interface{}) error { + if value == nil { + *i = 0 + return nil + } + + switch value := value.(type) { + case int64: + *i = NullableInt64(value) + default: + return fmt.Errorf("failed to unmarshal NullableInt64 value: %v %T", value, value) + } + return nil +} + +// Value returns a NullableString value, implements driver.Valuer interface. +func (i NullableInt64) Value() (driver.Value, error) { + if i == 0 { + return nil, nil + } + return int64(i), nil +} + // Scan scan value into NullableString, implements sql.Scanner interface. func (s *NullableString) Scan(value interface{}) error { if value == nil { From a5ae76e618c72183a959065be303abde6d269422 Mon Sep 17 00:00:00 2001 From: PJ Date: Fri, 27 Sep 2024 13:39:11 +0200 Subject: [PATCH 177/708] contractor: archive v1 contracts passed v2 allow height --- api/bus.go | 5 -- api/contract.go | 1 + autopilot/autopilot.go | 2 + autopilot/contractor/contractor.go | 20 +++++- autopilot/contractor/contractor_test.go | 71 +++++++++++++++++++ autopilot/contractor/hostfilter.go | 15 ++-- bus/bus.go | 2 +- bus/client/chain.go | 3 +- bus/routes.go | 10 +-- internal/sql/migrations.go | 6 ++ internal/test/e2e/cluster.go | 13 ++-- stores/sql/main.go | 4 +- .../main/migration_00023_contract_v2.sql | 2 + stores/sql/mysql/migrations/main/schema.sql | 2 + stores/sql/rows.go | 4 +- stores/sql/sqlite/main.go | 6 +- .../main/migration_00023_contract_v2 | 2 + stores/sql/sqlite/migrations/main/schema.sql | 3 +- 18 files changed, 138 insertions(+), 33 deletions(-) create mode 100644 stores/sql/mysql/migrations/main/migration_00023_contract_v2.sql create mode 100644 stores/sql/sqlite/migrations/main/migration_00023_contract_v2 diff --git a/api/bus.go b/api/bus.go index 034d31371..655ead500 100644 --- a/api/bus.go +++ b/api/bus.go @@ -20,11 +20,6 @@ type ( LastBlockTime TimeRFC3339 `json:"lastBlockTime"` Synced bool `json:"synced"` } - - // ConsensusNetwork holds the name of the network. - ConsensusNetwork struct { - Name string - } ) type ( diff --git a/api/contract.go b/api/contract.go index e0d98bcb9..6937354e4 100644 --- a/api/contract.go +++ b/api/contract.go @@ -52,6 +52,7 @@ type ( ContractMetadata struct { ID types.FileContractID `json:"id"` HostKey types.PublicKey `json:"hostKey"` + V2 bool `json:"v2"` ProofHeight uint64 `json:"proofHeight"` RenewedFrom types.FileContractID `json:"renewedFrom"` diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 7fd37af09..946070016 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -10,6 +10,7 @@ import ( "sync" "time" + "go.sia.tech/core/consensus" "go.sia.tech/core/types" "go.sia.tech/coreutils/wallet" "go.sia.tech/jape" @@ -37,6 +38,7 @@ type Bus interface { UpdateAutopilot(ctx context.Context, autopilot api.Autopilot) error // consensus + ConsensusNetwork(ctx context.Context) (consensus.Network, error) ConsensusState(ctx context.Context) (api.ConsensusState, error) // contracts diff --git a/autopilot/contractor/contractor.go b/autopilot/contractor/contractor.go index dfd675f50..f962e0bdf 100644 --- a/autopilot/contractor/contractor.go +++ b/autopilot/contractor/contractor.go @@ -11,6 +11,7 @@ import ( "time" "github.com/montanaflynn/stats" + "go.sia.tech/core/consensus" rhpv2 "go.sia.tech/core/rhp/v2" rhpv3 "go.sia.tech/core/rhp/v3" "go.sia.tech/core/types" @@ -85,6 +86,7 @@ type Bus interface { ArchiveContracts(ctx context.Context, toArchive map[types.FileContractID]string) error BroadcastContract(ctx context.Context, fcid types.FileContractID) (types.TransactionID, error) ConsensusState(ctx context.Context) (api.ConsensusState, error) + ConsensusNetwork(ctx context.Context) (consensus.Network, error) Contract(ctx context.Context, id types.FileContractID) (api.ContractMetadata, error) Contracts(ctx context.Context, opts api.ContractsOpts) (contracts []api.ContractMetadata, err error) FileContractTax(ctx context.Context, payout types.Currency) (types.Currency, error) @@ -106,7 +108,7 @@ type Worker interface { type contractChecker interface { isUsableContract(cfg api.AutopilotConfig, s rhpv2.HostSettings, pt rhpv3.HostPriceTable, rs api.RedundancySettings, contract api.Contract, inSet bool, bh uint64, f *hostSet) (usable, refresh, renew bool, reasons []string) pruneContractRefreshFailures(contracts []api.ContractMetadata) - shouldArchive(c api.Contract, bh uint64) error + shouldArchive(c api.Contract, bh uint64, network consensus.Network) error } type contractReviser interface { @@ -485,7 +487,11 @@ func (c *Contractor) refreshFundingEstimate(cfg api.AutopilotConfig, contract ap return refreshAmountCapped } -func (c *Contractor) shouldArchive(contract api.Contract, bh uint64) error { +func (c *Contractor) shouldArchive(contract api.Contract, bh uint64, n consensus.Network) (err error) { + defer func() { + fmt.Println("DEBUG PJ: should archive", bh, contract.EndHeight(), n.HardforkV2.RequireHeight, err) + }() + if bh > contract.EndHeight()-c.revisionSubmissionBuffer { return errContractExpired } else if contract.Revision != nil && contract.Revision.RevisionNumber == math.MaxUint64 { @@ -494,6 +500,8 @@ func (c *Contractor) shouldArchive(contract api.Contract, bh uint64) error { return errContractMaxRevisionNumber } else if contract.State == api.ContractStatePending && bh-contract.StartHeight > ContractConfirmationDeadline { return errContractNotConfirmed + } else if !contract.V2 && bh >= n.HardforkV2.RequireHeight { + return errContractBeyondV2RequireHeight } return nil } @@ -855,6 +863,12 @@ func performContractChecks(ctx *mCtx, alerter alerts.Alerter, bus Bus, w Worker, } churnReasons := make(map[types.FileContractID]string) + // fetch network + network, err := bus.ConsensusNetwork(ctx) + if err != nil { + return nil, nil, err + } + // fetch all contracts we already have logger.Info("fetching existing contracts") start := time.Now() @@ -917,7 +931,7 @@ func performContractChecks(ctx *mCtx, alerter alerts.Alerter, bus Bus, w Worker, logger = logger.With("blockHeight", bh) // check if contract is ready to be archived. - if reason := cc.shouldArchive(c, bh); reason != nil { + if reason := cc.shouldArchive(c, bh, network); reason != nil { if err := bus.ArchiveContracts(ctx, map[types.FileContractID]string{ c.ID: reason.Error(), }); err != nil { diff --git a/autopilot/contractor/contractor_test.go b/autopilot/contractor/contractor_test.go index 450433a45..53052bfc7 100644 --- a/autopilot/contractor/contractor_test.go +++ b/autopilot/contractor/contractor_test.go @@ -5,6 +5,7 @@ import ( "testing" "time" + "go.sia.tech/core/consensus" "go.sia.tech/core/types" "go.sia.tech/renterd/api" "go.uber.org/zap" @@ -90,6 +91,76 @@ func TestRenewFundingEstimate(t *testing.T) { } } +func TestShouldArchive(t *testing.T) { + c := Contractor{revisionSubmissionBuffer: 5} + + // dummy network + var n consensus.Network + n.HardforkV2.AllowHeight = 10 + n.HardforkV2.RequireHeight = 20 + + // dummy contract + c1 := api.Contract{ + ContractMetadata: api.ContractMetadata{ + State: api.ContractStateActive, + StartHeight: 0, + WindowStart: 30, + WindowEnd: 35, + RevisionNumber: 1, + V2: true, + }, + Revision: &types.FileContractRevision{FileContract: types.FileContract{RevisionNumber: 1}}, + } + + err := c.shouldArchive(c1, 25, n) + if err != nil { + t.Fatal("unexpected error", err) + } + err = c.shouldArchive(c1, 26, n) + if err != errContractExpired { + t.Fatal("unexpected error", err) + } + + // max revision number + c1.Revision.RevisionNumber = math.MaxUint64 + err = c.shouldArchive(c1, 2, n) + if err != errContractMaxRevisionNumber { + t.Fatal("unexpected error", err) + } + c1.Revision.RevisionNumber = 1 + + // max revision number + c1.RevisionNumber = math.MaxUint64 + err = c.shouldArchive(c1, 2, n) + if err != errContractMaxRevisionNumber { + t.Fatal("unexpected error", err) + } + c1.RevisionNumber = 1 + + // not confirmed + c1.State = api.ContractStatePending + err = c.shouldArchive(c1, ContractConfirmationDeadline, n) + if err != nil { + t.Fatal("unexpected error", err) + } + err = c.shouldArchive(c1, ContractConfirmationDeadline+1, n) + if err != errContractNotConfirmed { + t.Fatal("unexpected error", err) + } + c1.State = api.ContractStateActive + + // passed v2 require height + c1.V2 = false + err = c.shouldArchive(c1, 19, n) + if err != nil { + t.Fatal("unexpected error", err) + } + err = c.shouldArchive(c1, 20, n) + if err != errContractBeyondV2RequireHeight { + t.Fatal("unexpected error", err) + } +} + func TestShouldForgiveFailedRenewal(t *testing.T) { var fcid types.FileContractID frand.Read(fcid[:]) diff --git a/autopilot/contractor/hostfilter.go b/autopilot/contractor/hostfilter.go index a1e370fc7..bb20f4420 100644 --- a/autopilot/contractor/hostfilter.go +++ b/autopilot/contractor/hostfilter.go @@ -30,13 +30,14 @@ const ( ) var ( - errContractOutOfCollateral = errors.New("contract is out of collateral") - errContractOutOfFunds = errors.New("contract is out of funds") - errContractUpForRenewal = errors.New("contract is up for renewal") - errContractMaxRevisionNumber = errors.New("contract has reached max revision number") - errContractNoRevision = errors.New("contract has no revision") - errContractExpired = errors.New("contract has expired") - errContractNotConfirmed = errors.New("contract hasn't been confirmed on chain in time") + errContractBeyondV2RequireHeight = errors.New("contract is beyond v2 require height") + errContractOutOfCollateral = errors.New("contract is out of collateral") + errContractOutOfFunds = errors.New("contract is out of funds") + errContractUpForRenewal = errors.New("contract is up for renewal") + errContractMaxRevisionNumber = errors.New("contract has reached max revision number") + errContractNoRevision = errors.New("contract has no revision") + errContractExpired = errors.New("contract has expired") + errContractNotConfirmed = errors.New("contract hasn't been confirmed on chain in time") ) type unusableHostsBreakdown struct { diff --git a/bus/bus.go b/bus/bus.go index fc607c645..ee35e9d35 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -617,7 +617,7 @@ func (b *Bus) broadcastContract(ctx context.Context, fcid types.FileContractID) // send V2 transaction if we're passed the V2 hardfork allow height if b.isPassedV2AllowHeight() { - panic("not implemented") + return types.TransactionID{}, errors.New("not implemented") } else { // create the transaction txn := types.Transaction{ diff --git a/bus/client/chain.go b/bus/client/chain.go index fd0efb9e0..c5cd2561e 100644 --- a/bus/client/chain.go +++ b/bus/client/chain.go @@ -4,6 +4,7 @@ import ( "context" "fmt" + "go.sia.tech/core/consensus" "go.sia.tech/core/types" "go.sia.tech/renterd/api" ) @@ -20,7 +21,7 @@ func (c *Client) BroadcastTransaction(ctx context.Context, txns []types.Transact } // ConsensusNetwork returns information about the consensus network. -func (c *Client) ConsensusNetwork(ctx context.Context) (resp api.ConsensusNetwork, err error) { +func (c *Client) ConsensusNetwork(ctx context.Context) (resp consensus.Network, err error) { err = c.c.WithContext(ctx).GET("/consensus/network", &resp) return } diff --git a/bus/routes.go b/bus/routes.go index 7094aa622..2fb822ecd 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -166,9 +166,7 @@ func (b *Bus) consensusStateHandler(jc jape.Context) { } func (b *Bus) consensusNetworkHandler(jc jape.Context) { - jc.Encode(api.ConsensusNetwork{ - Name: b.cm.TipState().Network.Name, - }) + jc.Encode(*b.cm.TipState().Network) } func (b *Bus) txpoolFeeHandler(jc jape.Context) { @@ -1048,7 +1046,8 @@ func (b *Bus) contractIDRenewHandlerPOST(jc jape.Context) { var newRevision rhpv2.ContractRevision var contractPrice, initialRenterFunds types.Currency if b.isPassedV2AllowHeight() { - panic("not implemented") + jc.Error(errors.New("not implemented"), http.StatusInternalServerError) + return } else { newRevision, contractPrice, initialRenterFunds, err = b.renewContract(ctx, cs, gp, c, h.Settings, rrr.RenterFunds, rrr.MinNewCollateral, rrr.MaxFundAmount, rrr.EndHeight, rrr.ExpectedNewStorage) if errors.Is(err, api.ErrMaxFundAmountExceeded) { @@ -2232,7 +2231,8 @@ func (b *Bus) contractsFormHandler(jc jape.Context) { // send V2 transaction if we're passed the V2 hardfork allow height var rev rhpv2.ContractRevision if b.isPassedV2AllowHeight() { - panic("not implemented") + jc.Error(errors.New("not implemented"), http.StatusInternalServerError) + return } else { rev, err = b.formContract( ctx, diff --git a/internal/sql/migrations.go b/internal/sql/migrations.go index 56cd91bf0..8ca7e42e7 100644 --- a/internal/sql/migrations.go +++ b/internal/sql/migrations.go @@ -249,6 +249,12 @@ var ( return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00022_remove_triggers", log) }, }, + { + ID: "00023_contract_v2", + Migrate: func(tx Tx) error { + return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00023_contract_v2", log) + }, + }, } } MetricsMigrations = func(ctx context.Context, migrationsFs embed.FS, log *zap.SugaredLogger) []Migration { diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index fc9559ca7..9140cc548 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -210,6 +210,8 @@ type testClusterOptions struct { skipRunningAutopilot bool walletKey *types.PrivateKey + network *consensus.Network + autopilotCfg *config.Autopilot autopilotSettings *api.AutopilotConfig busCfg *config.Bus @@ -262,6 +264,11 @@ func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { if opts.walletKey != nil { wk = *opts.walletKey } + network, genesis := testNetwork() + if opts.network != nil { + network = opts.network + } + busCfg, workerCfg, apCfg, dbCfg := testBusCfg(), testWorkerCfg(), testApCfg(), testDBCfg() if opts.busCfg != nil { busCfg = *opts.busCfg @@ -351,7 +358,7 @@ func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { // Create bus. busDir := filepath.Join(dir, "bus") - b, bShutdownFn, cm, bs, err := newTestBus(ctx, busDir, busCfg, dbCfg, wk, logger) + b, bShutdownFn, cm, bs, err := newTestBus(ctx, busDir, busCfg, dbCfg, wk, network, genesis, logger) tt.OK(err) busAuth := jape.BasicAuth(busPassword) @@ -401,7 +408,6 @@ func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { autopilotShutdownFns = append(autopilotShutdownFns, autopilotServer.Shutdown) autopilotShutdownFns = append(autopilotShutdownFns, ap.Shutdown) - network, genesis := testNetwork() cluster := &TestCluster{ apID: apCfg.ID, dir: dir, @@ -534,7 +540,7 @@ func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { return cluster } -func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, pk types.PrivateKey, logger *zap.Logger) (*bus.Bus, func(ctx context.Context) error, *chain.Manager, bus.Store, error) { +func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, pk types.PrivateKey, network *consensus.Network, genesis types.Block, logger *zap.Logger) (*bus.Bus, func(ctx context.Context) error, *chain.Manager, bus.Store, error) { // create store config alertsMgr := alerts.NewManager() storeCfg, err := buildStoreConfig(alertsMgr, dir, cfg.SlabBufferCompletionThreshold, cfgDb, pk, logger) @@ -571,7 +577,6 @@ func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, } // create chain manager - network, genesis := testNetwork() store, state, err := chain.NewDBStore(bdb, network, genesis) if err != nil { return nil, nil, nil, nil, err diff --git a/stores/sql/main.go b/stores/sql/main.go index 314249a8a..a5db9f4d4 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -139,7 +139,7 @@ func AncestorContracts(ctx context.Context, tx sql.Tx, fcid types.FileContractID WHERE contracts.renewed_to = c.fcid ) SELECT - c.fcid, c.host_id, c.host_key, + c.fcid, c.host_id, c.host_key, c.v2, c.archival_reason, c.proof_height, c.renewed_from, c.renewed_to, c.revision_height, c.revision_number, c.size, c.start_height, c.state, c.window_start, c.window_end, c.contract_price, c.initial_renter_funds, c.delete_spending, c.fund_account_spending, c.sector_roots_spending, c.upload_spending, @@ -1821,7 +1821,7 @@ func QueryContracts(ctx context.Context, tx sql.Tx, whereExprs []string, whereAr rows, err := tx.Query(ctx, fmt.Sprintf(` SELECT - c.fcid, c.host_id, c.host_key, + c.fcid, c.host_id, c.host_key, c.v2, c.archival_reason, c.proof_height, c.renewed_from, c.renewed_to, c.revision_height, c.revision_number, c.size, c.start_height, c.state, c.window_start, c.window_end, c.contract_price, c.initial_renter_funds, c.delete_spending, c.fund_account_spending, c.sector_roots_spending, c.upload_spending, diff --git a/stores/sql/mysql/migrations/main/migration_00023_contract_v2.sql b/stores/sql/mysql/migrations/main/migration_00023_contract_v2.sql new file mode 100644 index 000000000..2d37038cf --- /dev/null +++ b/stores/sql/mysql/migrations/main/migration_00023_contract_v2.sql @@ -0,0 +1,2 @@ +ALTER TABLE contracts ADD COLUMN v2 BOOLEAN DEFAULT FALSE; +CREATE INDEX `idx_contracts_v2` ON `contracts`(`v2`); diff --git a/stores/sql/mysql/migrations/main/schema.sql b/stores/sql/mysql/migrations/main/schema.sql index 777d81164..875f20a05 100644 --- a/stores/sql/mysql/migrations/main/schema.sql +++ b/stores/sql/mysql/migrations/main/schema.sql @@ -77,6 +77,7 @@ CREATE TABLE `contracts` ( `fcid` varbinary(32) NOT NULL, `host_id` bigint unsigned DEFAULT NULL, `host_key` varbinary(32), + `v2` boolean NOT NULL DEFAULT FALSE, `archival_reason` varchar(191) DEFAULT NULL, `proof_height` bigint unsigned DEFAULT '0', @@ -111,6 +112,7 @@ CREATE TABLE `contracts` ( KEY `idx_contracts_state` (`state`), KEY `idx_contracts_window_start` (`window_start`), KEY `idx_contracts_window_end` (`window_end`), + KEY `idx_contracts_v2` (`v2`), CONSTRAINT `fk_contracts_host` FOREIGN KEY (`host_id`) REFERENCES `hosts` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; diff --git a/stores/sql/rows.go b/stores/sql/rows.go index e138f0907..f4a913954 100644 --- a/stores/sql/rows.go +++ b/stores/sql/rows.go @@ -14,6 +14,7 @@ type ContractRow struct { FCID FileContractID HostID NullableInt64 HostKey PublicKey + V2 bool // state fields ArchivalReason NullableString @@ -46,7 +47,7 @@ type ContractRow struct { func (r *ContractRow) Scan(s Scanner) error { return s.Scan( - &r.FCID, &r.HostID, &r.HostKey, + &r.FCID, &r.HostID, &r.HostKey, &r.V2, &r.ArchivalReason, &r.ProofHeight, &r.RenewedFrom, &r.RenewedTo, &r.RevisionHeight, &r.RevisionNumber, &r.Size, &r.StartHeight, &r.State, &r.WindowStart, &r.WindowEnd, &r.ContractPrice, &r.InitialRenterFunds, &r.DeleteSpending, &r.FundAccountSpending, &r.SectorRootsSpending, &r.UploadSpending, @@ -79,6 +80,7 @@ func (r *ContractRow) ContractMetadata() api.ContractMetadata { ID: types.FileContractID(r.FCID), HostIP: r.NetAddress, HostKey: types.PublicKey(r.HostKey), + V2: r.V2, ContractPrice: types.Currency(r.ContractPrice), InitialRenterFunds: types.Currency(r.InitialRenterFunds), diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index dd2d91eb7..a4f563dde 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -694,17 +694,17 @@ func (tx *MainDatabaseTx) PutContract(ctx context.Context, c api.ContractMetadat // update contract _, err = tx.Exec(ctx, ` INSERT INTO contracts ( - created_at, fcid, host_id, host_key, + created_at, fcid, host_id, host_key, v2, archival_reason, proof_height, renewed_from, renewed_to, revision_height, revision_number, size, start_height, state, window_start, window_end, contract_price, initial_renter_funds, delete_spending, fund_account_spending, sector_roots_spending, upload_spending -) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) +) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(fcid) DO UPDATE SET fcid = EXCLUDED.fcid, host_id = EXCLUDED.host_id, host_key = EXCLUDED.host_key, archival_reason = EXCLUDED.archival_reason, proof_height = EXCLUDED.proof_height, renewed_from = EXCLUDED.renewed_from, renewed_to = EXCLUDED.renewed_to, revision_height = EXCLUDED.revision_height, revision_number = EXCLUDED.revision_number, size = EXCLUDED.size, start_height = EXCLUDED.start_height, state = EXCLUDED.state, window_start = EXCLUDED.window_start, window_end = EXCLUDED.window_end, contract_price = EXCLUDED.contract_price, initial_renter_funds = EXCLUDED.initial_renter_funds, delete_spending = EXCLUDED.delete_spending, fund_account_spending = EXCLUDED.fund_account_spending, sector_roots_spending = EXCLUDED.sector_roots_spending, upload_spending = EXCLUDED.upload_spending`, - time.Now(), ssql.FileContractID(c.ID), hostID, ssql.PublicKey(c.HostKey), + time.Now(), ssql.FileContractID(c.ID), hostID, ssql.PublicKey(c.HostKey), c.V2, ssql.NullableString(c.ArchivalReason), c.ProofHeight, ssql.FileContractID(c.RenewedFrom), ssql.FileContractID(c.RenewedTo), c.RevisionHeight, c.RevisionNumber, c.Size, c.StartHeight, state, c.WindowStart, c.WindowEnd, ssql.Currency(c.ContractPrice), ssql.Currency(c.InitialRenterFunds), ssql.Currency(c.Spending.Deletions), ssql.Currency(c.Spending.FundAccount), ssql.Currency(c.Spending.SectorRoots), ssql.Currency(c.Spending.Uploads), diff --git a/stores/sql/sqlite/migrations/main/migration_00023_contract_v2 b/stores/sql/sqlite/migrations/main/migration_00023_contract_v2 new file mode 100644 index 000000000..4947dd356 --- /dev/null +++ b/stores/sql/sqlite/migrations/main/migration_00023_contract_v2 @@ -0,0 +1,2 @@ +ALTER TABLE contracts ADD COLUMN v2 INTEGER DEFAULT 0; +CREATE INDEX idx_contracts_v2 ON contracts(v2); \ No newline at end of file diff --git a/stores/sql/sqlite/migrations/main/schema.sql b/stores/sql/sqlite/migrations/main/schema.sql index 9bdbc71c2..f16d65758 100644 --- a/stores/sql/sqlite/migrations/main/schema.sql +++ b/stores/sql/sqlite/migrations/main/schema.sql @@ -8,7 +8,7 @@ CREATE INDEX `idx_hosts_public_key` ON `hosts`(`public_key`); CREATE INDEX `idx_hosts_net_address` ON `hosts`(`net_address`); -- dbContract -CREATE TABLE contracts (`id` integer PRIMARY KEY AUTOINCREMENT, `created_at` datetime, `fcid` blob NOT NULL UNIQUE, `host_id` integer, `host_key` blob NOT NULL, `archival_reason` text DEFAULT NULL, `proof_height` integer DEFAULT 0, `renewed_from` blob, `renewed_to` blob, `revision_height` integer DEFAULT 0, `revision_number` text NOT NULL DEFAULT "0", `size` integer, `start_height` integer NOT NULL, `state` integer NOT NULL DEFAULT 0, `window_start` integer NOT NULL DEFAULT 0, `window_end` integer NOT NULL DEFAULT 0, `contract_price` text, `initial_renter_funds` text, `delete_spending` text, `fund_account_spending` text, `sector_roots_spending` text, `upload_spending` text, CONSTRAINT `fk_contracts_host` FOREIGN KEY (`host_id`) REFERENCES `hosts`(`id`)); +CREATE TABLE contracts (`id` integer PRIMARY KEY AUTOINCREMENT, `created_at` datetime, `fcid` blob NOT NULL UNIQUE, `host_id` integer, `host_key` blob NOT NULL,`v2` INTEGER NOT NULL DEFAULT 0, `archival_reason` text DEFAULT NULL, `proof_height` integer DEFAULT 0, `renewed_from` blob, `renewed_to` blob, `revision_height` integer DEFAULT 0, `revision_number` text NOT NULL DEFAULT "0", `size` integer, `start_height` integer NOT NULL, `state` integer NOT NULL DEFAULT 0, `window_start` integer NOT NULL DEFAULT 0, `window_end` integer NOT NULL DEFAULT 0, `contract_price` text, `initial_renter_funds` text, `delete_spending` text, `fund_account_spending` text, `sector_roots_spending` text, `upload_spending` text, CONSTRAINT `fk_contracts_host` FOREIGN KEY (`host_id`) REFERENCES `hosts`(`id`)); CREATE INDEX `idx_contracts_archival_reason` ON `contracts`(`archival_reason`); CREATE INDEX `idx_contracts_fcid` ON `contracts`(`fcid`); CREATE INDEX `idx_contracts_host_id` ON `contracts`(`host_id`); @@ -21,6 +21,7 @@ CREATE INDEX `idx_contracts_start_height` ON `contracts`(`start_height`); CREATE INDEX `idx_contracts_state` ON `contracts`(`state`); CREATE INDEX `idx_contracts_window_end` ON `contracts`(`window_end`); CREATE INDEX `idx_contracts_window_start` ON `contracts`(`window_start`); +CREATE INDEX `idx_contracts_v2` ON `contracts`(`v2`); -- dbContractSet CREATE TABLE `contract_sets` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at` datetime,`name` text UNIQUE); From 9bdd19b250bede5fec8e6cdf408ba8ad60dd2b9a Mon Sep 17 00:00:00 2001 From: PJ Date: Fri, 27 Sep 2024 13:39:42 +0200 Subject: [PATCH 178/708] bus: revert panic --- bus/bus.go | 2 +- bus/routes.go | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/bus/bus.go b/bus/bus.go index ee35e9d35..fc607c645 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -617,7 +617,7 @@ func (b *Bus) broadcastContract(ctx context.Context, fcid types.FileContractID) // send V2 transaction if we're passed the V2 hardfork allow height if b.isPassedV2AllowHeight() { - return types.TransactionID{}, errors.New("not implemented") + panic("not implemented") } else { // create the transaction txn := types.Transaction{ diff --git a/bus/routes.go b/bus/routes.go index 2fb822ecd..af2358626 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1046,8 +1046,7 @@ func (b *Bus) contractIDRenewHandlerPOST(jc jape.Context) { var newRevision rhpv2.ContractRevision var contractPrice, initialRenterFunds types.Currency if b.isPassedV2AllowHeight() { - jc.Error(errors.New("not implemented"), http.StatusInternalServerError) - return + panic("not implemented") } else { newRevision, contractPrice, initialRenterFunds, err = b.renewContract(ctx, cs, gp, c, h.Settings, rrr.RenterFunds, rrr.MinNewCollateral, rrr.MaxFundAmount, rrr.EndHeight, rrr.ExpectedNewStorage) if errors.Is(err, api.ErrMaxFundAmountExceeded) { @@ -2231,8 +2230,7 @@ func (b *Bus) contractsFormHandler(jc jape.Context) { // send V2 transaction if we're passed the V2 hardfork allow height var rev rhpv2.ContractRevision if b.isPassedV2AllowHeight() { - jc.Error(errors.New("not implemented"), http.StatusInternalServerError) - return + panic("not implemented") } else { rev, err = b.formContract( ctx, From 5d3390af90c08f2b56a337ac3a212f431f33315b Mon Sep 17 00:00:00 2001 From: PJ Date: Fri, 27 Sep 2024 13:42:56 +0200 Subject: [PATCH 179/708] stores: extend scan --- stores/sql/types.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/stores/sql/types.go b/stores/sql/types.go index 443e1a911..4c67d7990 100644 --- a/stores/sql/types.go +++ b/stores/sql/types.go @@ -472,8 +472,12 @@ func (i *NullableInt64) Scan(value interface{}) error { } switch value := value.(type) { + case int: + *i = NullableInt64(value) case int64: *i = NullableInt64(value) + case uint64: + *i = NullableInt64(int64(value)) default: return fmt.Errorf("failed to unmarshal NullableInt64 value: %v %T", value, value) } From 4612492cbd490ae840f815e847d1ff4094c75aea Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 20 Sep 2024 16:37:56 +0200 Subject: [PATCH 180/708] object: move implementation to encryptionkey.go --- object/encryptionkey.go | 212 ++++++++++++++++++++++++++++++++++++++++ object/object.go | 139 -------------------------- 2 files changed, 212 insertions(+), 139 deletions(-) create mode 100644 object/encryptionkey.go diff --git a/object/encryptionkey.go b/object/encryptionkey.go new file mode 100644 index 000000000..327c71f17 --- /dev/null +++ b/object/encryptionkey.go @@ -0,0 +1,212 @@ +package object + +import ( + "bytes" + "crypto/cipher" + "encoding" + "encoding/binary" + "encoding/hex" + "fmt" + "io" + "math" + + "golang.org/x/crypto/chacha20" + "lukechampine.com/frand" +) + +var ( + _ EncryptionKeyInterface = EncryptionKeyBasic{} + _ EncryptionKeyInterface = EncryptionKeySalted{} +) + +type EncryptionKeyInterface interface { + encoding.BinaryMarshaler + encoding.BinaryUnmarshaler + encoding.TextMarshaler + encoding.TextUnmarshaler + fmt.Stringer +} + +var NoOpKey = EncryptionKey{ + entropy: new([32]byte), +} + +type EncryptionKeyType int + +const ( + EncryptionKeyTypeBasic = EncryptionKeyType(iota + 1) + EncryptionKeyTypeSalted +) + +// A EncryptionKey can encrypt and decrypt messages. +type EncryptionKey struct { + entropy *[32]byte `json:"-"` + keyType EncryptionKeyType `json:"-"` +} + +// GenerateEncryptionKey returns a random encryption key. +func GenerateEncryptionKey(t EncryptionKeyType) EncryptionKey { + key := EncryptionKey{ + entropy: new([32]byte), + keyType: t, + } + frand.Read(key.entropy[:]) + return key +} + +func (k EncryptionKey) IsNoopKey() bool { + return bytes.Equal(k.entropy[:], NoOpKey.entropy[:]) +} + +func (k EncryptionKey) String() string { + if k.entropy == nil { + return "" + } + var prefix string + switch k.keyType { + case EncryptionKeyTypeBasic: + prefix = "key" + case EncryptionKeyTypeSalted: + prefix = "skey" + default: + return "" + } + return fmt.Sprintf("%s:%s", prefix, hex.EncodeToString(k.entropy[:])) +} + +// MarshalBinary implements encoding.BinaryMarshaler. +func (k EncryptionKey) MarshalBinary() ([]byte, error) { + return append([]byte{}, k.entropy[:]...), nil +} + +func (k *EncryptionKey) UnmarshalBinary(b []byte) error { + k.entropy = new([32]byte) + if len(b) != len(k.entropy) { + return fmt.Errorf("wrong key length: expected %v, got %v", len(k.entropy), len(b)) + } + copy(k.entropy[:], b) + return nil +} + +// MarshalText implements the encoding.TextMarshaler interface. +func (k EncryptionKey) MarshalText() ([]byte, error) { + return []byte(k.String()), nil +} + +// UnmarshalText implements the encoding.TextUnmarshaler interface. +func (k *EncryptionKey) UnmarshalText(b []byte) error { + splits := bytes.Split(b, []byte(":")) + if len(b) != 2 { + return fmt.Errorf("expected the key to have the form prefix:entropy but had %v pieces", len(splits)) + } + // prefix + switch string(splits[0]) { + case "key": + k.keyType = EncryptionKeyTypeBasic + case "skey": + k.keyType = EncryptionKeyTypeSalted + default: + return fmt.Errorf("invalid prefix for key: %s", splits[0]) + } + + // entropy + k.entropy = new([32]byte) + if n, err := hex.Decode(k.entropy[:], splits[1]); err != nil { + return err + } else if n != len(k.entropy) { + return fmt.Errorf("wrong key length: expected %v, got %v", len(k.entropy), n) + } + return nil +} + +// Encrypt returns a cipher.StreamReader that encrypts r with k starting at the +// given offset. +func (k EncryptionKey) encrypt(r io.Reader, offset uint64) (cipher.StreamReader, error) { + if offset%64 != 0 { + return cipher.StreamReader{}, fmt.Errorf("offset must be a multiple of 64, got %v", offset) + } + if k.IsNoopKey() { + return cipher.StreamReader{S: &noOpStream{}, R: r}, nil + } + nonce64 := offset / (64 * math.MaxUint32) + offset %= 64 * math.MaxUint32 + + nonce := make([]byte, 24) + binary.LittleEndian.PutUint64(nonce[16:], nonce64) + c, _ := chacha20.NewUnauthenticatedCipher(k.entropy[:], nonce) + c.SetCounter(uint32(offset / 64)) + rs := &rekeyStream{key: k.entropy[:], c: c} + return cipher.StreamReader{S: rs, R: r}, nil +} + +// Decrypt returns a cipher.StreamWriter that decrypts w with k, starting at the +// specified offset. +func (k EncryptionKey) decrypt(w io.Writer, offset uint64) cipher.StreamWriter { + if k.IsNoopKey() { + return cipher.StreamWriter{S: &noOpStream{}, W: w} + } + nonce64 := offset / (64 * math.MaxUint32) + offset %= 64 * math.MaxUint32 + + nonce := make([]byte, 24) + binary.LittleEndian.PutUint64(nonce[16:], nonce64) + c, _ := chacha20.NewUnauthenticatedCipher(k.entropy[:], nonce) + c.SetCounter(uint32(offset / 64)) + + var buf [64]byte + c.XORKeyStream(buf[:offset%64], buf[:offset%64]) + rs := &rekeyStream{key: k.entropy[:], c: c, counter: offset, nonce: nonce64} + return cipher.StreamWriter{S: rs, W: w} +} + +type EncryptionKeyBasic EncryptionKey + +func (k EncryptionKeyBasic) Encrypt(r io.Reader, offset uint64) (cipher.StreamReader, error) { + return EncryptionKey(k).encrypt(r, offset) +} +func (k EncryptionKeyBasic) Decrypt(w io.Writer, offset uint64) cipher.StreamWriter { + return EncryptionKey(k).decrypt(w, offset) +} + +type EncryptionKeySalted EncryptionKey + +func (k EncryptionKeySalted) Encrypt(secretKey [32]byte, r io.Reader, offset uint64) (cipher.StreamReader, error) { + panic("not implemented") +} +func (k EncryptionKeySalted) Decrypt(secretKey [32]byte, w io.Writer, offset uint64) cipher.StreamWriter { + panic("not implemented") +} + +type rekeyStream struct { + key []byte + c *chacha20.Cipher + + counter uint64 + nonce uint64 +} + +func (rs *rekeyStream) XORKeyStream(dst, src []byte) { + rs.counter += uint64(len(src)) + if rs.counter < 64*math.MaxUint32 { + rs.c.XORKeyStream(dst, src) + return + } + // counter overflow; xor remaining bytes, then increment nonce and xor again + rem := 64*math.MaxUint32 - (rs.counter - uint64(len(src))) + rs.counter -= 64 * math.MaxUint32 + rs.c.XORKeyStream(dst[:rem], src[:rem]) + // NOTE: we increment the last 8 bytes because XChaCha uses the + // first 16 bytes to derive a new key; leaving them alone means + // the key will be stable, which might be useful. + rs.nonce++ + nonce := make([]byte, 24) + binary.LittleEndian.PutUint64(nonce[16:], rs.nonce) + rs.c, _ = chacha20.NewUnauthenticatedCipher(rs.key, nonce) + rs.c.XORKeyStream(dst[rem:], src[rem:]) +} + +type noOpStream struct{} + +func (noOpStream) XORKeyStream(dst, src []byte) { + copy(dst, src) +} diff --git a/object/object.go b/object/object.go index 1fa4a98ec..0daabe90c 100644 --- a/object/object.go +++ b/object/object.go @@ -1,117 +1,12 @@ package object import ( - "bytes" "crypto/cipher" - "encoding/binary" - "encoding/hex" - "fmt" "io" - "math" "go.sia.tech/core/types" - "golang.org/x/crypto/chacha20" - "lukechampine.com/frand" ) -var NoOpKey = EncryptionKey{ - entropy: new([32]byte), -} - -// A EncryptionKey can encrypt and decrypt messages. -type EncryptionKey struct { - entropy *[32]byte `json:"-"` -} - -func (k EncryptionKey) IsNoopKey() bool { - return bytes.Equal(k.entropy[:], NoOpKey.entropy[:]) -} - -// MarshalBinary implements encoding.BinaryMarshaler. -func (k EncryptionKey) MarshalBinary() ([]byte, error) { - return append([]byte{}, k.entropy[:]...), nil -} - -func (k *EncryptionKey) UnmarshalBinary(b []byte) error { - k.entropy = new([32]byte) - if len(b) != len(k.entropy) { - return fmt.Errorf("wrong key length: expected %v, got %v", len(k.entropy), len(b)) - } - copy(k.entropy[:], b) - return nil -} - -// String implements fmt.Stringer. -func (k EncryptionKey) String() string { - if k.entropy == nil { - return "" - } - return "key:" + hex.EncodeToString(k.entropy[:]) -} - -// MarshalText implements the encoding.TextMarshaler interface. -func (k EncryptionKey) MarshalText() ([]byte, error) { - return []byte(k.String()), nil -} - -// UnmarshalText implements the encoding.TextUnmarshaler interface. -func (k *EncryptionKey) UnmarshalText(b []byte) error { - k.entropy = new([32]byte) - if n, err := hex.Decode(k.entropy[:], []byte(bytes.TrimPrefix(b, []byte("key:")))); err != nil { - return err - } else if n != len(k.entropy) { - return fmt.Errorf("wrong key length: expected %v, got %v", len(k.entropy), n) - } - return nil -} - -// Encrypt returns a cipher.StreamReader that encrypts r with k starting at the -// given offset. -func (k EncryptionKey) Encrypt(r io.Reader, offset uint64) (cipher.StreamReader, error) { - if offset%64 != 0 { - return cipher.StreamReader{}, fmt.Errorf("offset must be a multiple of 64, got %v", offset) - } - if k.IsNoopKey() { - return cipher.StreamReader{S: &noOpStream{}, R: r}, nil - } - nonce64 := offset / (64 * math.MaxUint32) - offset %= 64 * math.MaxUint32 - - nonce := make([]byte, 24) - binary.LittleEndian.PutUint64(nonce[16:], nonce64) - c, _ := chacha20.NewUnauthenticatedCipher(k.entropy[:], nonce) - c.SetCounter(uint32(offset / 64)) - rs := &rekeyStream{key: k.entropy[:], c: c} - return cipher.StreamReader{S: rs, R: r}, nil -} - -// Decrypt returns a cipher.StreamWriter that decrypts w with k, starting at the -// specified offset. -func (k EncryptionKey) Decrypt(w io.Writer, offset uint64) cipher.StreamWriter { - if k.IsNoopKey() { - return cipher.StreamWriter{S: &noOpStream{}, W: w} - } - nonce64 := offset / (64 * math.MaxUint32) - offset %= 64 * math.MaxUint32 - - nonce := make([]byte, 24) - binary.LittleEndian.PutUint64(nonce[16:], nonce64) - c, _ := chacha20.NewUnauthenticatedCipher(k.entropy[:], nonce) - c.SetCounter(uint32(offset / 64)) - - var buf [64]byte - c.XORKeyStream(buf[:offset%64], buf[:offset%64]) - rs := &rekeyStream{key: k.entropy[:], c: c, counter: offset, nonce: nonce64} - return cipher.StreamWriter{S: rs, W: w} -} - -// GenerateEncryptionKey returns a random encryption key. -func GenerateEncryptionKey() EncryptionKey { - key := EncryptionKey{entropy: new([32]byte)} - frand.Read(key.entropy[:]) - return key -} - // An Object is a unit of data that has been stored on a host. // NOTE: Object is embedded in the API's Object type, so all fields should be // tagged omitempty to make sure responses where no object is returned remain @@ -146,37 +41,3 @@ func (o Object) TotalSize() int64 { func (o Object) Encrypt(r io.Reader, offset uint64) (cipher.StreamReader, error) { return o.Key.Encrypt(r, offset) } - -type rekeyStream struct { - key []byte - c *chacha20.Cipher - - counter uint64 - nonce uint64 -} - -func (rs *rekeyStream) XORKeyStream(dst, src []byte) { - rs.counter += uint64(len(src)) - if rs.counter < 64*math.MaxUint32 { - rs.c.XORKeyStream(dst, src) - return - } - // counter overflow; xor remaining bytes, then increment nonce and xor again - rem := 64*math.MaxUint32 - (rs.counter - uint64(len(src))) - rs.counter -= 64 * math.MaxUint32 - rs.c.XORKeyStream(dst[:rem], src[:rem]) - // NOTE: we increment the last 8 bytes because XChaCha uses the - // first 16 bytes to derive a new key; leaving them alone means - // the key will be stable, which might be useful. - rs.nonce++ - nonce := make([]byte, 24) - binary.LittleEndian.PutUint64(nonce[16:], rs.nonce) - rs.c, _ = chacha20.NewUnauthenticatedCipher(rs.key, nonce) - rs.c.XORKeyStream(dst[rem:], src[rem:]) -} - -type noOpStream struct{} - -func (noOpStream) XORKeyStream(dst, src []byte) { - copy(dst, src) -} From 676c7a796f23adcd0e9ce2c022f88eb609ca3773 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Mon, 23 Sep 2024 16:59:22 +0200 Subject: [PATCH 181/708] implement encrypt and decrypt on EncryptionKey --- bus/routes.go | 2 +- object/encryptionkey.go | 52 ++++++++++++--- object/object.go | 7 ++- object/object_test.go | 14 ++--- object/slab.go | 2 +- object/slab_test.go | 2 +- stores/bench_test.go | 2 +- stores/metadata_test.go | 136 ++++++++++++++++++++-------------------- stores/slabbuffer.go | 2 +- worker/download.go | 8 ++- worker/mocks_test.go | 2 +- worker/upload.go | 5 +- worker/upload_params.go | 4 +- worker/upload_test.go | 4 +- 14 files changed, 145 insertions(+), 97 deletions(-) diff --git a/bus/routes.go b/bus/routes.go index 7094aa622..289f234f6 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -2083,7 +2083,7 @@ func (b *Bus) multipartHandlerCreatePOST(jc jape.Context) { if req.DisableClientSideEncryption { key = object.NoOpKey } else { - key = object.GenerateEncryptionKey() + key = object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted) } resp, err := b.ms.CreateMultipartUpload(jc.Request.Context(), req.Bucket, req.Key, key, req.MimeType, req.Metadata) diff --git a/object/encryptionkey.go b/object/encryptionkey.go index 327c71f17..a74f358b7 100644 --- a/object/encryptionkey.go +++ b/object/encryptionkey.go @@ -6,6 +6,7 @@ import ( "encoding" "encoding/binary" "encoding/hex" + "errors" "fmt" "io" "math" @@ -14,11 +15,6 @@ import ( "lukechampine.com/frand" ) -var ( - _ EncryptionKeyInterface = EncryptionKeyBasic{} - _ EncryptionKeyInterface = EncryptionKeySalted{} -) - type EncryptionKeyInterface interface { encoding.BinaryMarshaler encoding.BinaryUnmarshaler @@ -67,13 +63,17 @@ func (k EncryptionKey) String() string { case EncryptionKeyTypeBasic: prefix = "key" case EncryptionKeyTypeSalted: - prefix = "skey" + default: return "" } return fmt.Sprintf("%s:%s", prefix, hex.EncodeToString(k.entropy[:])) } +func (k EncryptionKey) Type() EncryptionKeyType { + return k.keyType +} + // MarshalBinary implements encoding.BinaryMarshaler. func (k EncryptionKey) MarshalBinary() ([]byte, error) { return append([]byte{}, k.entropy[:]...), nil @@ -161,6 +161,42 @@ func (k EncryptionKey) decrypt(w io.Writer, offset uint64) cipher.StreamWriter { type EncryptionKeyBasic EncryptionKey +type EncryptionOptions struct { + Offset uint64 + Key *[32]byte +} + +var ErrKeyType = errors.New("invalid key type") +var ErrKeyRequired = errors.New("key required") + +func (k EncryptionKey) Encrypt(r io.Reader, opts EncryptionOptions) (cipher.StreamReader, error) { + switch k.keyType { + case EncryptionKeyTypeBasic: + return EncryptionKeyBasic(k).Encrypt(r, opts.Offset) + case EncryptionKeyTypeSalted: + if opts.Key != nil { + return cipher.StreamReader{}, ErrKeyRequired + } + return EncryptionKeySalted(k).Encrypt(r, opts.Offset, *opts.Key) + default: + return cipher.StreamReader{}, fmt.Errorf("%w: %v", ErrKeyType, k.keyType) + } +} + +func (k EncryptionKey) Decrypt(w io.Writer, opts EncryptionOptions) (cipher.StreamWriter, error) { + switch k.keyType { + case EncryptionKeyTypeBasic: + return EncryptionKeyBasic(k).Decrypt(w, opts.Offset), nil + case EncryptionKeyTypeSalted: + if opts.Key != nil { + return cipher.StreamWriter{}, ErrKeyRequired + } + return EncryptionKeySalted(k).Decrypt(w, opts.Offset, *opts.Key), nil + default: + return cipher.StreamWriter{}, fmt.Errorf("%w: %v", ErrKeyType, k.keyType) + } +} + func (k EncryptionKeyBasic) Encrypt(r io.Reader, offset uint64) (cipher.StreamReader, error) { return EncryptionKey(k).encrypt(r, offset) } @@ -170,10 +206,10 @@ func (k EncryptionKeyBasic) Decrypt(w io.Writer, offset uint64) cipher.StreamWri type EncryptionKeySalted EncryptionKey -func (k EncryptionKeySalted) Encrypt(secretKey [32]byte, r io.Reader, offset uint64) (cipher.StreamReader, error) { +func (k EncryptionKeySalted) Encrypt(r io.Reader, offset uint64, key [32]byte) (cipher.StreamReader, error) { panic("not implemented") } -func (k EncryptionKeySalted) Decrypt(secretKey [32]byte, w io.Writer, offset uint64) cipher.StreamWriter { +func (k EncryptionKeySalted) Decrypt(w io.Writer, offset uint64, key [32]byte) cipher.StreamWriter { panic("not implemented") } diff --git a/object/object.go b/object/object.go index 0daabe90c..c5c30e780 100644 --- a/object/object.go +++ b/object/object.go @@ -35,9 +35,12 @@ func (o Object) TotalSize() int64 { } return n } +func (o Object) Decrypt(w io.Writer, opts EncryptionOptions) (cipher.StreamWriter, error) { + return o.Key.Decrypt(w, opts) +} // Encrypt wraps the given reader with a reader that encrypts the stream using // the object's key. -func (o Object) Encrypt(r io.Reader, offset uint64) (cipher.StreamReader, error) { - return o.Key.Encrypt(r, offset) +func (o Object) Encrypt(r io.Reader, opts EncryptionOptions) (cipher.StreamReader, error) { + return o.Key.Encrypt(r, opts) } diff --git a/object/object_test.go b/object/object_test.go index 01a5aecbe..7d6b5a847 100644 --- a/object/object_test.go +++ b/object/object_test.go @@ -10,11 +10,11 @@ import ( ) func TestEncryptionOffset(t *testing.T) { - key := GenerateEncryptionKey() + key := GenerateEncryptionKey(EncryptionKeyTypeSalted) encrypt := func(offset uint64, plainText []byte) []byte { t.Helper() - sr, err := key.Encrypt(bytes.NewReader(plainText), offset) + sr, err := key.encrypt(bytes.NewReader(plainText), offset) if err != nil { t.Fatal(err) } @@ -26,7 +26,7 @@ func TestEncryptionOffset(t *testing.T) { } decrypt := func(offset uint64, cipherText []byte) []byte { pt := bytes.NewBuffer(nil) - _, err := key.Decrypt(pt, offset).Write(cipherText) + _, err := key.decrypt(pt, offset).Write(cipherText) if err != nil { t.Fatal(err) } @@ -44,9 +44,9 @@ func TestEncryptionOffset(t *testing.T) { func TestEncryptionOverflow(t *testing.T) { // Create a random key. - key := GenerateEncryptionKey() + key := GenerateEncryptionKey(EncryptionKeyTypeSalted) data := frand.Bytes(3 * 64) - sr, err := key.Encrypt(bytes.NewReader(data), 0) + sr, err := key.encrypt(bytes.NewReader(data), 0) if err != nil { t.Fatal(err) } @@ -80,7 +80,7 @@ func TestEncryptionOverflow(t *testing.T) { // Assert data matches. buf := bytes.NewBuffer(nil) - written, err := key.Decrypt(buf, 0).Write(b) + written, err := key.decrypt(buf, 0).Write(b) if err != nil { t.Fatal(err) } @@ -113,7 +113,7 @@ func TestEncryptionOverflow(t *testing.T) { // Assert data matches. buf = bytes.NewBuffer(nil) - written, err = key.Decrypt(buf, math.MaxUint32*64-64).Write(b) + written, err = key.decrypt(buf, math.MaxUint32*64-64).Write(b) if err != nil { t.Fatal(err) } diff --git a/object/slab.go b/object/slab.go index 55d070142..04c8cf264 100644 --- a/object/slab.go +++ b/object/slab.go @@ -36,7 +36,7 @@ func (s Slab) IsPartial() bool { // NewSlab returns a new slab for the shards. func NewSlab(minShards uint8) Slab { return Slab{ - EncryptionKey: GenerateEncryptionKey(), + EncryptionKey: GenerateEncryptionKey(EncryptionKeyTypeSalted), MinShards: minShards, } } diff --git a/object/slab_test.go b/object/slab_test.go index c4c4a2006..7da24b322 100644 --- a/object/slab_test.go +++ b/object/slab_test.go @@ -72,7 +72,7 @@ func TestReedSolomon(t *testing.T) { func BenchmarkReedSolomon(b *testing.B) { makeSlab := func(m, n uint8) (Slab, []byte, [][]byte) { - return Slab{EncryptionKey: GenerateEncryptionKey(), MinShards: m, Shards: make([]Sector, n)}, + return Slab{EncryptionKey: GenerateEncryptionKey(EncryptionKeyTypeSalted), MinShards: m, Shards: make([]Sector, n)}, frand.Bytes(rhpv2.SectorSize * int(m)), make([][]byte, n) } diff --git a/stores/bench_test.go b/stores/bench_test.go index 4a28f7c99..25815f563 100644 --- a/stores/bench_test.go +++ b/stores/bench_test.go @@ -79,7 +79,7 @@ INSERT INTO contracts (fcid, host_key, start_height) VALUES (?, ?, ?)`, sql.Publ } // insert slab - key := object.GenerateEncryptionKey() + key := object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted) res, err = db.Exec(context.Background(), ` INSERT INTO slabs (created_at, `+"`key`"+`) VALUES (?, ?)`, time.Now(), sql.EncryptionKey(key)) if err != nil { diff --git a/stores/metadata_test.go b/stores/metadata_test.go index 29c655de0..ef257792e 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -31,7 +31,7 @@ const testBucket = "testbucket" func (s *testSQLStore) InsertSlab(slab object.Slab) { s.t.Helper() obj := object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: object.SlabSlices{ object.SlabSlice{ Slab: slab, @@ -134,11 +134,11 @@ func TestPrunableContractRoots(t *testing.T) { // add 4 objects for i := 1; i <= 4; i++ { if _, err := ss.addTestObject(fmt.Sprintf("%s_%d", t.Name(), i), object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{ { Slab: object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: newTestShards(hks[0], fcids[0], types.Hash256{byte(i)}), }, @@ -214,12 +214,12 @@ func TestObjectBasic(t *testing.T) { // create an object want := object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{ { Slab: object.Slab{ Health: 1.0, - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: newTestShards(hk1, fcid1, types.Hash256{1}), }, @@ -229,7 +229,7 @@ func TestObjectBasic(t *testing.T) { { Slab: object.Slab{ Health: 1.0, - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 2, Shards: newTestShards(hk2, fcid2, types.Hash256{2}), }, @@ -262,7 +262,7 @@ func TestObjectBasic(t *testing.T) { // create an object without slabs want2 := object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{}, } @@ -296,12 +296,12 @@ func TestObjectMetadata(t *testing.T) { // create an object want := object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{ { Slab: object.Slab{ Health: 1.0, - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: newTestShards(hk1, fcid1, types.Hash256{1}), }, @@ -311,7 +311,7 @@ func TestObjectMetadata(t *testing.T) { { Slab: object.Slab{ Health: 1.0, - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 2, Shards: newTestShards(hk2, fcid2, types.Hash256{2}), }, @@ -501,11 +501,11 @@ func TestContractRoots(t *testing.T) { // add an object root := types.Hash256{1} obj := object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{ { Slab: object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: newTestShards(hks[0], fcids[0], types.Hash256{1}), }, @@ -684,12 +684,12 @@ func TestSQLMetadataStore(t *testing.T) { // create an object with 2 slabs pointing to 2 different sectors. obj1 := object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{ { Slab: object.Slab{ Health: 1, - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: newTestShards(hk1, fcid1, types.Hash256{1}), }, @@ -699,7 +699,7 @@ func TestSQLMetadataStore(t *testing.T) { { Slab: object.Slab{ Health: 1, - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 2, Shards: newTestShards(hk2, fcid2, types.Hash256{2}), }, @@ -969,11 +969,11 @@ func TestObjectHealth(t *testing.T) { // add an object with 2 slabs add := object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{ { Slab: object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: []object.Sector{ newTestShard(hks[0], fcids[0], types.Hash256{1}), @@ -985,7 +985,7 @@ func TestObjectHealth(t *testing.T) { }, { Slab: object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: []object.Sector{ newTestShard(hks[1], fcids[1], types.Hash256{5}), @@ -1076,7 +1076,7 @@ func TestObjectHealth(t *testing.T) { // add an empty object and assert health is 1 if obj, err := ss.addTestObject("/bar", object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: nil, }); err != nil { t.Fatal(err) @@ -1334,14 +1334,14 @@ func TestListObjectsSlabEncryptionKey(t *testing.T) { // create a slab. slab := object.Slab{ Health: 1.0, - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: newTestShards(hk1, fcid1, types.Hash256{1}), } // add 3 objects that all reference the slab obj := object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{ { Slab: slab, @@ -1479,12 +1479,12 @@ func TestUnhealthySlabs(t *testing.T) { // add an object obj := object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{ // good slab { Slab: object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: []object.Sector{ newTestShard(hk1, fcid1, types.Hash256{1}), @@ -1496,7 +1496,7 @@ func TestUnhealthySlabs(t *testing.T) { // unhealthy slab - hk4 is bad (1/3) { Slab: object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: []object.Sector{ newTestShard(hk1, fcid1, types.Hash256{4}), @@ -1508,7 +1508,7 @@ func TestUnhealthySlabs(t *testing.T) { // unhealthy slab - hk4 is bad (2/3) { Slab: object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: []object.Sector{ newTestShard(hk1, fcid1, types.Hash256{7}), @@ -1520,7 +1520,7 @@ func TestUnhealthySlabs(t *testing.T) { // unhealthy slab - hk5 is deleted (1/3) { Slab: object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: []object.Sector{ newTestShard(hk1, fcid1, types.Hash256{10}), @@ -1532,7 +1532,7 @@ func TestUnhealthySlabs(t *testing.T) { // unhealthy slab - h1 is reused { Slab: object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: []object.Sector{ newTestShard(hk1, fcid1, types.Hash256{13}), @@ -1544,7 +1544,7 @@ func TestUnhealthySlabs(t *testing.T) { // lost slab - no good pieces (0/3) { Slab: object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: []object.Sector{ newTestShard(hk1, fcid1, types.Hash256{16}), @@ -1645,11 +1645,11 @@ func TestUnhealthySlabsNegHealth(t *testing.T) { // create an object obj := object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{ { Slab: object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 2, Shards: []object.Sector{ newTestShard(hk1, fcid1, types.Hash256{1}), @@ -1704,11 +1704,11 @@ func TestUnhealthySlabsNoContracts(t *testing.T) { // create an object obj := object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{ { Slab: object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: newTestShards(hk1, fcid1, types.Hash256{1}), }, @@ -1784,12 +1784,12 @@ func TestUnhealthySlabsNoRedundancy(t *testing.T) { // add an object obj := object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{ // hk1 is good so this slab should have full health. { Slab: object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: newTestShards(hk1, fcid1, types.Hash256{1}), }, @@ -1797,7 +1797,7 @@ func TestUnhealthySlabsNoRedundancy(t *testing.T) { // hk4 is bad so this slab should have no health. { Slab: object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 2, Shards: []object.Sector{ newTestShard(hk2, fcid2, types.Hash256{2}), @@ -1912,11 +1912,11 @@ func TestUpdateSlab(t *testing.T) { // add an object obj := object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{ { Slab: object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: []object.Sector{ newTestShard(hk1, fcid1, types.Hash256{1}), @@ -2079,14 +2079,14 @@ func newTestObject(slabs int) object.Object { obj := object.Object{} obj.Slabs = make([]object.SlabSlice, slabs) - obj.Key = object.GenerateEncryptionKey() + obj.Key = object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted) for i := range obj.Slabs { n := uint8(frand.Uint64n(10) + 1) offset := uint32(frand.Uint64n(1 << 22)) length := offset + uint32(frand.Uint64n(1<<22)) obj.Slabs[i] = object.SlabSlice{ Slab: object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: n, Shards: make([]object.Sector, n*2), }, @@ -2557,12 +2557,12 @@ func TestPartialSlab(t *testing.T) { // Use the added partial slab to create an object. testObject := func(partialSlabs []object.SlabSlice) object.Object { obj := object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{ { Slab: object.Slab{ Health: 1.0, - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: []object.Sector{ newTestShard(hk1, fcid1, frand.Entropy256()), @@ -2724,7 +2724,7 @@ func TestPartialSlab(t *testing.T) { // Associate them with an object. if _, err := ss.addTestObject(t.Name(), object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: append(slices1, slices2...), }); err != nil { t.Fatal(err) @@ -2805,11 +2805,11 @@ func TestContractSizes(t *testing.T) { // add an object to both contracts for i := 0; i < 2; i++ { if _, err := ss.addTestObject(fmt.Sprintf("obj_%d", i+1), object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{ { Slab: object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: newTestShards(hks[i], fcids[i], types.Hash256{byte(i)}), }, @@ -3182,7 +3182,7 @@ func TestMarkSlabUploadedAfterRenew(t *testing.T) { // add it to an object to prevent it from getting pruned. _, err = ss.addTestObject(t.Name(), object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: slabs, }) if err != nil { @@ -3349,7 +3349,7 @@ func TestDeleteHostSector(t *testing.T) { // create a healthy slab with one sector that is uploaded to all contracts. root := types.Hash256{1, 2, 3} ss.InsertSlab(object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: []object.Sector{ { @@ -3517,14 +3517,14 @@ func TestUpdateSlabSanityChecks(t *testing.T) { shards = append(shards, newTestShard(hks[i], contracts[i].ID, types.Hash256{byte(i + 1)})) } slab := object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Shards: shards, Health: 1, } // set slab. _, err = ss.addTestObject(t.Name(), object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{{Slab: slab}}, }) if err != nil { @@ -3605,9 +3605,9 @@ func TestSlabHealthInvalidation(t *testing.T) { } // prepare a slab with pieces on h1 and h2 - s1 := object.GenerateEncryptionKey() + s1 := object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted) _, err = ss.addTestObject("o1", object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{{Slab: object.Slab{ EncryptionKey: s1, Shards: []object.Sector{ @@ -3621,9 +3621,9 @@ func TestSlabHealthInvalidation(t *testing.T) { } // prepare a slab with pieces on h3 and h4 - s2 := object.GenerateEncryptionKey() + s2 := object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted) err = ss.UpdateObject(context.Background(), testBucket, "o2", testContractSet, testETag, testMimeType, testMetadata, object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{{Slab: object.Slab{ EncryptionKey: s2, Shards: []object.Sector{ @@ -3763,11 +3763,11 @@ func TestRenewedContract(t *testing.T) { // create an object obj := object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{ { Slab: object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: newTestShards(hk, fcid, types.Hash256{1}), }, @@ -3902,10 +3902,10 @@ func TestRefreshHealth(t *testing.T) { // add two test objects o1 := t.Name() + "1" if added, err := ss.addTestObject(o1, object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{{Slab: object.Slab{ MinShards: 2, - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Shards: []object.Sector{ newTestShard(hks[0], fcids[0], types.Hash256{0}), newTestShard(hks[1], fcids[1], types.Hash256{1}), @@ -3921,10 +3921,10 @@ func TestRefreshHealth(t *testing.T) { o2 := t.Name() + "2" if added, err := ss.addTestObject(o2, object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{{Slab: object.Slab{ MinShards: 2, - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Shards: []object.Sector{ newTestShard(hks[4], fcids[4], types.Hash256{4}), newTestShard(hks[5], fcids[5], types.Hash256{5}), @@ -3972,7 +3972,7 @@ func TestRefreshHealth(t *testing.T) { // add another object that is empty o3 := t.Name() + "3" if added, err := ss.addTestObject(o3, object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), }); err != nil { t.Fatal(err) } else if added.Health != 1 { @@ -4036,7 +4036,7 @@ func TestSlabCleanup(t *testing.T) { // create a slab var slabID int64 - if res, err := ss.DB().Exec(context.Background(), "INSERT INTO slabs (db_contract_set_id, `key`, health_valid_until) VALUES (?, ?, ?);", csID, sql.EncryptionKey(object.GenerateEncryptionKey()), 100); err != nil { + if res, err := ss.DB().Exec(context.Background(), "INSERT INTO slabs (db_contract_set_id, `key`, health_valid_until) VALUES (?, ?, ?);", csID, sql.EncryptionKey(object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted)), 100); err != nil { t.Fatal(err) } else if slabID, err = res.LastInsertId(); err != nil { t.Fatal(err) @@ -4077,7 +4077,7 @@ func TestSlabCleanup(t *testing.T) { // create another slab referencing the buffered slab var bufferedSlabID int64 - if res, err := ss.DB().Exec(context.Background(), "INSERT INTO slabs (db_buffered_slab_id, db_contract_set_id, `key`, health_valid_until) VALUES (?, ?, ?, ?);", bsID, csID, sql.EncryptionKey(object.GenerateEncryptionKey()), 100); err != nil { + if res, err := ss.DB().Exec(context.Background(), "INSERT INTO slabs (db_buffered_slab_id, db_contract_set_id, `key`, health_valid_until) VALUES (?, ?, ?, ?);", bsID, csID, sql.EncryptionKey(object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted)), 100); err != nil { t.Fatal(err) } else if bufferedSlabID, err = res.LastInsertId(); err != nil { t.Fatal(err) @@ -4124,7 +4124,7 @@ func TestUpdateObjectReuseSlab(t *testing.T) { // create an object obj := object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), } // add 2 slabs for i := 0; i < 2; i++ { @@ -4132,7 +4132,7 @@ func TestUpdateObjectReuseSlab(t *testing.T) { Offset: 0, Length: uint32(minShards) * rhpv2.SectorSize, Slab: object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: uint8(minShards), }, }) @@ -4307,14 +4307,14 @@ func TestUpdateObjectReuseSlab(t *testing.T) { } obj2 := object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), } // add 1 slab with 30 shards obj2.Slabs = append(obj2.Slabs, object.SlabSlice{ Offset: 0, Length: uint32(minShards) * rhpv2.SectorSize, Slab: object.Slab{ - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: uint8(minShards), }, }) @@ -4485,12 +4485,12 @@ func TestUpdateObjectParallel(t *testing.T) { for name := range c { // create an object obj := object.Object{ - Key: object.GenerateEncryptionKey(), + Key: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), Slabs: []object.SlabSlice{ { Slab: object.Slab{ Health: 1.0, - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 1, Shards: newTestShards(hk1, fcid1, frand.Entropy256()), }, @@ -4500,7 +4500,7 @@ func TestUpdateObjectParallel(t *testing.T) { { Slab: object.Slab{ Health: 1.0, - EncryptionKey: object.GenerateEncryptionKey(), + EncryptionKey: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), MinShards: 2, Shards: newTestShards(hk2, fcid2, frand.Entropy256()), }, diff --git a/stores/slabbuffer.go b/stores/slabbuffer.go index 7e61480e1..612be2fb6 100644 --- a/stores/slabbuffer.go +++ b/stores/slabbuffer.go @@ -481,7 +481,7 @@ func createSlabBuffer(ctx context.Context, tx sql.DatabaseTx, contractSetID uint return nil, err } - ec := object.GenerateEncryptionKey() + ec := object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted) bufferedSlabID, err := tx.InsertBufferedSlab(ctx, fileName, int64(contractSetID), ec, minShards, totalShards) if err != nil { return nil, fmt.Errorf("failed to insert buffered slab: %w", err) diff --git a/worker/download.go b/worker/download.go index 8939acfc9..f849e84bd 100644 --- a/worker/download.go +++ b/worker/download.go @@ -195,7 +195,13 @@ func (mgr *downloadManager) DownloadObject(ctx context.Context, w io.Writer, o o } // create the cipher writer - cw := o.Key.Decrypt(w, offset) + cw, err := o.Key.Decrypt(w, object.EncryptionOptions{ + Offset: offset, + Key: nil, // TODO: pass the correct key + }) + if err != nil { + return fmt.Errorf("failed to create cipher writer: %w", err) + } // buffer the writer we recover to making sure that we don't hammer the // response writer with tiny writes diff --git a/worker/mocks_test.go b/worker/mocks_test.go index 8da38014c..d93e18c9e 100644 --- a/worker/mocks_test.go +++ b/worker/mocks_test.go @@ -412,7 +412,7 @@ func (os *objectStoreMock) AddPartialSlab(ctx context.Context, data []byte, minS } // create slab - ec := object.GenerateEncryptionKey() + ec := object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted) ss := object.SlabSlice{ Slab: object.NewPartialSlab(ec, minShards), Offset: 0, diff --git a/worker/upload.go b/worker/upload.go index 1e1dca9a1..730a5d479 100644 --- a/worker/upload.go +++ b/worker/upload.go @@ -397,7 +397,10 @@ func (mgr *uploadManager) Upload(ctx context.Context, r io.Reader, contracts []a r = io.TeeReader(r, hasher) // create the cipher reader - cr, err := o.Encrypt(r, up.encryptionOffset) + cr, err := o.Encrypt(r, object.EncryptionOptions{ + Offset: up.encryptionOffset, + Key: nil, // TODO: pass the correct key + }) if err != nil { return false, "", err } diff --git a/worker/upload_params.go b/worker/upload_params.go index b20ec6485..78db12ff3 100644 --- a/worker/upload_params.go +++ b/worker/upload_params.go @@ -30,8 +30,8 @@ func defaultParameters(bucket, key string, rs api.RedundancySettings) uploadPara bucket: bucket, key: key, - ec: object.GenerateEncryptionKey(), // random key - encryptionOffset: 0, // from the beginning + ec: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), // random key + encryptionOffset: 0, // from the beginning rs: rs, } diff --git a/worker/upload_test.go b/worker/upload_test.go index d36c67a6e..a368da151 100644 --- a/worker/upload_test.go +++ b/worker/upload_test.go @@ -665,8 +665,8 @@ func testParameters(key string) uploadParameters { bucket: testBucket, key: key, - ec: object.GenerateEncryptionKey(), // random key - encryptionOffset: 0, // from the beginning + ec: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), // random key + encryptionOffset: 0, // from the beginning contractSet: testContractSet, rs: testRedundancySettings, From acea5a72ef112a627051252b8006d04a97c61da4 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 24 Sep 2024 11:50:33 +0200 Subject: [PATCH 182/708] worker: fix unit tests --- object/encryptionkey.go | 132 +++++++++++++++++++++------------------- object/object_test.go | 29 ++++++--- worker/download.go | 26 ++++---- worker/upload.go | 34 ++++++----- worker/upload_test.go | 4 +- worker/worker.go | 5 +- 6 files changed, 128 insertions(+), 102 deletions(-) diff --git a/object/encryptionkey.go b/object/encryptionkey.go index a74f358b7..6a3d8afce 100644 --- a/object/encryptionkey.go +++ b/object/encryptionkey.go @@ -11,6 +11,7 @@ import ( "io" "math" + "golang.org/x/crypto/blake2b" "golang.org/x/crypto/chacha20" "lukechampine.com/frand" ) @@ -63,7 +64,7 @@ func (k EncryptionKey) String() string { case EncryptionKeyTypeBasic: prefix = "key" case EncryptionKeyTypeSalted: - + prefix = "skey" default: return "" } @@ -96,7 +97,7 @@ func (k EncryptionKey) MarshalText() ([]byte, error) { // UnmarshalText implements the encoding.TextUnmarshaler interface. func (k *EncryptionKey) UnmarshalText(b []byte) error { splits := bytes.Split(b, []byte(":")) - if len(b) != 2 { + if len(splits) != 2 { return fmt.Errorf("expected the key to have the form prefix:entropy but had %v pieces", len(splits)) } // prefix @@ -106,7 +107,7 @@ func (k *EncryptionKey) UnmarshalText(b []byte) error { case "skey": k.keyType = EncryptionKeyTypeSalted default: - return fmt.Errorf("invalid prefix for key: %s", splits[0]) + return fmt.Errorf("invalid prefix for key: '%s'", splits[0]) } // entropy @@ -119,48 +120,6 @@ func (k *EncryptionKey) UnmarshalText(b []byte) error { return nil } -// Encrypt returns a cipher.StreamReader that encrypts r with k starting at the -// given offset. -func (k EncryptionKey) encrypt(r io.Reader, offset uint64) (cipher.StreamReader, error) { - if offset%64 != 0 { - return cipher.StreamReader{}, fmt.Errorf("offset must be a multiple of 64, got %v", offset) - } - if k.IsNoopKey() { - return cipher.StreamReader{S: &noOpStream{}, R: r}, nil - } - nonce64 := offset / (64 * math.MaxUint32) - offset %= 64 * math.MaxUint32 - - nonce := make([]byte, 24) - binary.LittleEndian.PutUint64(nonce[16:], nonce64) - c, _ := chacha20.NewUnauthenticatedCipher(k.entropy[:], nonce) - c.SetCounter(uint32(offset / 64)) - rs := &rekeyStream{key: k.entropy[:], c: c} - return cipher.StreamReader{S: rs, R: r}, nil -} - -// Decrypt returns a cipher.StreamWriter that decrypts w with k, starting at the -// specified offset. -func (k EncryptionKey) decrypt(w io.Writer, offset uint64) cipher.StreamWriter { - if k.IsNoopKey() { - return cipher.StreamWriter{S: &noOpStream{}, W: w} - } - nonce64 := offset / (64 * math.MaxUint32) - offset %= 64 * math.MaxUint32 - - nonce := make([]byte, 24) - binary.LittleEndian.PutUint64(nonce[16:], nonce64) - c, _ := chacha20.NewUnauthenticatedCipher(k.entropy[:], nonce) - c.SetCounter(uint32(offset / 64)) - - var buf [64]byte - c.XORKeyStream(buf[:offset%64], buf[:offset%64]) - rs := &rekeyStream{key: k.entropy[:], c: c, counter: offset, nonce: nonce64} - return cipher.StreamWriter{S: rs, W: w} -} - -type EncryptionKeyBasic EncryptionKey - type EncryptionOptions struct { Offset uint64 Key *[32]byte @@ -169,48 +128,57 @@ type EncryptionOptions struct { var ErrKeyType = errors.New("invalid key type") var ErrKeyRequired = errors.New("key required") -func (k EncryptionKey) Encrypt(r io.Reader, opts EncryptionOptions) (cipher.StreamReader, error) { +func (k *EncryptionKey) Encrypt(r io.Reader, opts EncryptionOptions) (cipher.StreamReader, error) { switch k.keyType { case EncryptionKeyTypeBasic: - return EncryptionKeyBasic(k).Encrypt(r, opts.Offset) + return (*encryptionKeyBasic)(k).Encrypt(r, opts.Offset) case EncryptionKeyTypeSalted: - if opts.Key != nil { + if opts.Key == nil { return cipher.StreamReader{}, ErrKeyRequired } - return EncryptionKeySalted(k).Encrypt(r, opts.Offset, *opts.Key) + return (*encryptionKeySalted)(k).Encrypt(r, opts.Offset, opts.Key) default: return cipher.StreamReader{}, fmt.Errorf("%w: %v", ErrKeyType, k.keyType) } } -func (k EncryptionKey) Decrypt(w io.Writer, opts EncryptionOptions) (cipher.StreamWriter, error) { +func (k *EncryptionKey) Decrypt(w io.Writer, opts EncryptionOptions) (cipher.StreamWriter, error) { switch k.keyType { case EncryptionKeyTypeBasic: - return EncryptionKeyBasic(k).Decrypt(w, opts.Offset), nil + return (*encryptionKeyBasic)(k).Decrypt(w, opts.Offset), nil case EncryptionKeyTypeSalted: - if opts.Key != nil { + if opts.Key == nil { return cipher.StreamWriter{}, ErrKeyRequired } - return EncryptionKeySalted(k).Decrypt(w, opts.Offset, *opts.Key), nil + return (*encryptionKeySalted)(k).Decrypt(w, opts.Offset, opts.Key), nil default: return cipher.StreamWriter{}, fmt.Errorf("%w: %v", ErrKeyType, k.keyType) } } -func (k EncryptionKeyBasic) Encrypt(r io.Reader, offset uint64) (cipher.StreamReader, error) { - return EncryptionKey(k).encrypt(r, offset) +type encryptionKeyBasic EncryptionKey + +func (k *encryptionKeyBasic) Encrypt(r io.Reader, offset uint64) (cipher.StreamReader, error) { + return encrypt(k.entropy, r, offset) } -func (k EncryptionKeyBasic) Decrypt(w io.Writer, offset uint64) cipher.StreamWriter { - return EncryptionKey(k).decrypt(w, offset) +func (k *encryptionKeyBasic) Decrypt(w io.Writer, offset uint64) cipher.StreamWriter { + return decrypt(k.entropy, w, offset) } -type EncryptionKeySalted EncryptionKey +type encryptionKeySalted EncryptionKey -func (k EncryptionKeySalted) Encrypt(r io.Reader, offset uint64, key [32]byte) (cipher.StreamReader, error) { - panic("not implemented") +func (k *encryptionKeySalted) deriveEncryptionKey(key *[32]byte) *[32]byte { + entropy := append([]byte(nil), key[:]...) + entropy = append(entropy, k.entropy[:]...) + sum := blake2b.Sum256(entropy) + return &sum } -func (k EncryptionKeySalted) Decrypt(w io.Writer, offset uint64, key [32]byte) cipher.StreamWriter { - panic("not implemented") + +func (k *encryptionKeySalted) Encrypt(r io.Reader, offset uint64, key *[32]byte) (cipher.StreamReader, error) { + return encrypt(k.deriveEncryptionKey(key), r, offset) +} +func (k *encryptionKeySalted) Decrypt(w io.Writer, offset uint64, key *[32]byte) cipher.StreamWriter { + return decrypt(k.deriveEncryptionKey(key), w, offset) } type rekeyStream struct { @@ -246,3 +214,43 @@ type noOpStream struct{} func (noOpStream) XORKeyStream(dst, src []byte) { copy(dst, src) } + +// Encrypt returns a cipher.StreamReader that encrypts r with k starting at the +// given offset. +func encrypt(key *[32]byte, r io.Reader, offset uint64) (cipher.StreamReader, error) { + if offset%64 != 0 { + return cipher.StreamReader{}, fmt.Errorf("offset must be a multiple of 64, got %v", offset) + } + if bytes.Equal(key[:], NoOpKey.entropy[:]) { + return cipher.StreamReader{S: &noOpStream{}, R: r}, nil + } + nonce64 := offset / (64 * math.MaxUint32) + offset %= 64 * math.MaxUint32 + + nonce := make([]byte, 24) + binary.LittleEndian.PutUint64(nonce[16:], nonce64) + c, _ := chacha20.NewUnauthenticatedCipher(key[:], nonce) + c.SetCounter(uint32(offset / 64)) + rs := &rekeyStream{key: key[:], c: c} + return cipher.StreamReader{S: rs, R: r}, nil +} + +// Decrypt returns a cipher.StreamWriter that decrypts w with k, starting at the +// specified offset. +func decrypt(key *[32]byte, w io.Writer, offset uint64) cipher.StreamWriter { + if bytes.Equal(key[:], NoOpKey.entropy[:]) { + return cipher.StreamWriter{S: &noOpStream{}, W: w} + } + nonce64 := offset / (64 * math.MaxUint32) + offset %= 64 * math.MaxUint32 + + nonce := make([]byte, 24) + binary.LittleEndian.PutUint64(nonce[16:], nonce64) + c, _ := chacha20.NewUnauthenticatedCipher(key[:], nonce) + c.SetCounter(uint32(offset / 64)) + + var buf [64]byte + c.XORKeyStream(buf[:offset%64], buf[:offset%64]) + rs := &rekeyStream{key: key[:], c: c, counter: offset, nonce: nonce64} + return cipher.StreamWriter{S: rs, W: w} +} diff --git a/object/object_test.go b/object/object_test.go index 7d6b5a847..e2badd661 100644 --- a/object/object_test.go +++ b/object/object_test.go @@ -10,11 +10,13 @@ import ( ) func TestEncryptionOffset(t *testing.T) { - key := GenerateEncryptionKey(EncryptionKeyTypeSalted) + key := GenerateEncryptionKey(EncryptionKeyTypeBasic) encrypt := func(offset uint64, plainText []byte) []byte { t.Helper() - sr, err := key.encrypt(bytes.NewReader(plainText), offset) + sr, err := key.Encrypt(bytes.NewReader(plainText), EncryptionOptions{ + Offset: offset, + }) if err != nil { t.Fatal(err) } @@ -26,9 +28,13 @@ func TestEncryptionOffset(t *testing.T) { } decrypt := func(offset uint64, cipherText []byte) []byte { pt := bytes.NewBuffer(nil) - _, err := key.decrypt(pt, offset).Write(cipherText) + sw, err := key.Decrypt(pt, EncryptionOptions{ + Offset: offset, + }) if err != nil { t.Fatal(err) + } else if _, err := sw.Write(cipherText); err != nil { + t.Fatal(err) } return pt.Bytes() } @@ -44,9 +50,9 @@ func TestEncryptionOffset(t *testing.T) { func TestEncryptionOverflow(t *testing.T) { // Create a random key. - key := GenerateEncryptionKey(EncryptionKeyTypeSalted) + key := GenerateEncryptionKey(EncryptionKeyTypeBasic) data := frand.Bytes(3 * 64) - sr, err := key.encrypt(bytes.NewReader(data), 0) + sr, err := key.Encrypt(bytes.NewReader(data), EncryptionOptions{}) if err != nil { t.Fatal(err) } @@ -80,11 +86,14 @@ func TestEncryptionOverflow(t *testing.T) { // Assert data matches. buf := bytes.NewBuffer(nil) - written, err := key.decrypt(buf, 0).Write(b) + sw, err := key.Decrypt(buf, EncryptionOptions{}) if err != nil { t.Fatal(err) } - if written != len(b) { + written, err := sw.Write(b) + if err != nil { + t.Fatal(err) + } else if written != len(b) { t.Fatal("unexpected") } if !bytes.Equal(buf.Bytes(), data[:64]) { @@ -113,7 +122,11 @@ func TestEncryptionOverflow(t *testing.T) { // Assert data matches. buf = bytes.NewBuffer(nil) - written, err = key.decrypt(buf, math.MaxUint32*64-64).Write(b) + sw, err = key.Decrypt(buf, EncryptionOptions{Offset: math.MaxUint32*64 - 64}) + if err != nil { + t.Fatal(err) + } + written, err = sw.Write(b) if err != nil { t.Fatal(err) } diff --git a/worker/download.go b/worker/download.go index f849e84bd..a12215ce4 100644 --- a/worker/download.go +++ b/worker/download.go @@ -31,10 +31,11 @@ var ( type ( downloadManager struct { - hm HostManager - mm MemoryManager - os ObjectStore - logger *zap.SugaredLogger + hm HostManager + mm MemoryManager + os ObjectStore + uploadKey *[32]byte + logger *zap.SugaredLogger maxOverdrive uint64 overdriveTimeout time.Duration @@ -127,20 +128,21 @@ type ( } ) -func (w *Worker) initDownloadManager(maxMemory, maxOverdrive uint64, overdriveTimeout time.Duration, logger *zap.Logger) { +func (w *Worker) initDownloadManager(uploadKey *[32]byte, maxMemory, maxOverdrive uint64, overdriveTimeout time.Duration, logger *zap.Logger) { if w.downloadManager != nil { panic("download manager already initialized") // developer error } - w.downloadManager = newDownloadManager(w.shutdownCtx, w, w.bus, maxMemory, maxOverdrive, overdriveTimeout, logger) + w.downloadManager = newDownloadManager(w.shutdownCtx, uploadKey, w, w.bus, maxMemory, maxOverdrive, overdriveTimeout, logger) } -func newDownloadManager(ctx context.Context, hm HostManager, os ObjectStore, maxMemory, maxOverdrive uint64, overdriveTimeout time.Duration, logger *zap.Logger) *downloadManager { +func newDownloadManager(ctx context.Context, uploadKey *[32]byte, hm HostManager, os ObjectStore, maxMemory, maxOverdrive uint64, overdriveTimeout time.Duration, logger *zap.Logger) *downloadManager { logger = logger.Named("downloadmanager") return &downloadManager{ - hm: hm, - mm: newMemoryManager(maxMemory, logger), - os: os, - logger: logger.Sugar(), + hm: hm, + mm: newMemoryManager(maxMemory, logger), + os: os, + uploadKey: uploadKey, + logger: logger.Sugar(), maxOverdrive: maxOverdrive, overdriveTimeout: overdriveTimeout, @@ -197,7 +199,7 @@ func (mgr *downloadManager) DownloadObject(ctx context.Context, w io.Writer, o o // create the cipher writer cw, err := o.Key.Decrypt(w, object.EncryptionOptions{ Offset: offset, - Key: nil, // TODO: pass the correct key + Key: mgr.uploadKey, }) if err != nil { return fmt.Errorf("failed to create cipher writer: %w", err) diff --git a/worker/upload.go b/worker/upload.go index 730a5d479..9760910f9 100644 --- a/worker/upload.go +++ b/worker/upload.go @@ -39,12 +39,13 @@ var ( type ( uploadManager struct { - hm HostManager - mm MemoryManager - os ObjectStore - cl ContractLocker - cs ContractStore - logger *zap.SugaredLogger + hm HostManager + mm MemoryManager + os ObjectStore + cl ContractLocker + cs ContractStore + uploadKey *[32]byte + logger *zap.SugaredLogger contractLockDuration time.Duration @@ -146,12 +147,12 @@ type ( } ) -func (w *Worker) initUploadManager(maxMemory, maxOverdrive uint64, overdriveTimeout time.Duration, logger *zap.Logger) { +func (w *Worker) initUploadManager(uploadKey *[32]byte, maxMemory, maxOverdrive uint64, overdriveTimeout time.Duration, logger *zap.Logger) { if w.uploadManager != nil { panic("upload manager already initialized") // developer error } - w.uploadManager = newUploadManager(w.shutdownCtx, w, w.bus, w.bus, w.bus, maxMemory, maxOverdrive, overdriveTimeout, w.contractLockingDuration, logger) + w.uploadManager = newUploadManager(w.shutdownCtx, uploadKey, w, w.bus, w.bus, w.bus, maxMemory, maxOverdrive, overdriveTimeout, w.contractLockingDuration, logger) } func (w *Worker) upload(ctx context.Context, bucket, key string, rs api.RedundancySettings, r io.Reader, contracts []api.ContractMetadata, opts ...UploadOption) (_ string, err error) { @@ -302,15 +303,16 @@ func (w *Worker) tryUploadPackedSlab(ctx context.Context, mem Memory, ps api.Pac return nil } -func newUploadManager(ctx context.Context, hm HostManager, os ObjectStore, cl ContractLocker, cs ContractStore, maxMemory, maxOverdrive uint64, overdriveTimeout time.Duration, contractLockDuration time.Duration, logger *zap.Logger) *uploadManager { +func newUploadManager(ctx context.Context, uploadKey *[32]byte, hm HostManager, os ObjectStore, cl ContractLocker, cs ContractStore, maxMemory, maxOverdrive uint64, overdriveTimeout time.Duration, contractLockDuration time.Duration, logger *zap.Logger) *uploadManager { logger = logger.Named("uploadmanager") return &uploadManager{ - hm: hm, - mm: newMemoryManager(maxMemory, logger), - os: os, - cl: cl, - cs: cs, - logger: logger.Sugar(), + hm: hm, + mm: newMemoryManager(maxMemory, logger), + os: os, + cl: cl, + cs: cs, + uploadKey: uploadKey, + logger: logger.Sugar(), contractLockDuration: contractLockDuration, @@ -399,7 +401,7 @@ func (mgr *uploadManager) Upload(ctx context.Context, r io.Reader, contracts []a // create the cipher reader cr, err := o.Encrypt(r, object.EncryptionOptions{ Offset: up.encryptionOffset, - Key: nil, // TODO: pass the correct key + Key: mgr.uploadKey, }) if err != nil { return false, "", err diff --git a/worker/upload_test.go b/worker/upload_test.go index a368da151..fd9a68251 100644 --- a/worker/upload_test.go +++ b/worker/upload_test.go @@ -665,8 +665,8 @@ func testParameters(key string) uploadParameters { bucket: testBucket, key: key, - ec: object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted), // random key - encryptionOffset: 0, // from the beginning + ec: object.GenerateEncryptionKey(object.EncryptionKeyTypeBasic), // random key + encryptionOffset: 0, // from the beginning contractSet: testContractSet, rs: testRedundancySettings, diff --git a/worker/worker.go b/worker/worker.go index 3b7ff25fe..ad2934953 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -958,8 +958,9 @@ func New(cfg config.Worker, masterKey [32]byte, b Bus, l *zap.Logger) (*Worker, } w.initPriceTables() - w.initDownloadManager(cfg.DownloadMaxMemory, cfg.DownloadMaxOverdrive, cfg.DownloadOverdriveTimeout, l) - w.initUploadManager(cfg.UploadMaxMemory, cfg.UploadMaxOverdrive, cfg.UploadOverdriveTimeout, l) + var uploadKey [32]byte // TODO: derive + w.initDownloadManager(&uploadKey, cfg.DownloadMaxMemory, cfg.DownloadMaxOverdrive, cfg.DownloadOverdriveTimeout, l) + w.initUploadManager(&uploadKey, cfg.UploadMaxMemory, cfg.UploadMaxOverdrive, cfg.UploadOverdriveTimeout, l) w.initContractSpendingRecorder(cfg.BusFlushInterval) return w, nil From 60e7d08857a7da1c4fe19b111e0b6785a31299c5 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 24 Sep 2024 13:26:31 +0200 Subject: [PATCH 183/708] stores: update encryption key persistence --- object/encryptionkey.go | 26 +++++++++++++++++---- object/object.go | 3 --- stores/sql/mysql/migrations/main/schema.sql | 4 ++-- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/object/encryptionkey.go b/object/encryptionkey.go index 6a3d8afce..0b9137cfe 100644 --- a/object/encryptionkey.go +++ b/object/encryptionkey.go @@ -77,15 +77,33 @@ func (k EncryptionKey) Type() EncryptionKeyType { // MarshalBinary implements encoding.BinaryMarshaler. func (k EncryptionKey) MarshalBinary() ([]byte, error) { - return append([]byte{}, k.entropy[:]...), nil + var b [33]byte + switch k.keyType { + case EncryptionKeyTypeBasic: + b[0] = 1 + case EncryptionKeyTypeSalted: + b[0] = 2 + default: + return nil, ErrKeyType + } + copy(b[1:], k.entropy[:]) + return b[:], nil } func (k *EncryptionKey) UnmarshalBinary(b []byte) error { k.entropy = new([32]byte) - if len(b) != len(k.entropy) { - return fmt.Errorf("wrong key length: expected %v, got %v", len(k.entropy), len(b)) + if len(b) != len(k.entropy)+1 { + return fmt.Errorf("wrong key length: expected %v, got %v", len(k.entropy)+1, len(b)) + } + switch b[0] { + case 1: + k.keyType = EncryptionKeyTypeBasic + case 2: + k.keyType = EncryptionKeyTypeSalted + default: + return ErrKeyType } - copy(k.entropy[:], b) + copy(k.entropy[:], b[1:]) return nil } diff --git a/object/object.go b/object/object.go index c5c30e780..debd2dcfa 100644 --- a/object/object.go +++ b/object/object.go @@ -35,9 +35,6 @@ func (o Object) TotalSize() int64 { } return n } -func (o Object) Decrypt(w io.Writer, opts EncryptionOptions) (cipher.StreamWriter, error) { - return o.Key.Decrypt(w, opts) -} // Encrypt wraps the given reader with a reader that encrypts the stream using // the object's key. diff --git a/stores/sql/mysql/migrations/main/schema.sql b/stores/sql/mysql/migrations/main/schema.sql index 777d81164..570375aa2 100644 --- a/stores/sql/mysql/migrations/main/schema.sql +++ b/stores/sql/mysql/migrations/main/schema.sql @@ -132,7 +132,7 @@ CREATE TABLE `slabs` ( `db_buffered_slab_id` bigint unsigned DEFAULT NULL, `health` double NOT NULL DEFAULT '1', `health_valid_until` bigint NOT NULL DEFAULT '0', - `key` varbinary(32) NOT NULL, + `key` varbinary(33) NOT NULL, `min_shards` tinyint unsigned DEFAULT NULL, `total_shards` tinyint unsigned DEFAULT NULL, PRIMARY KEY (`id`), @@ -304,7 +304,7 @@ CREATE TABLE `objects` ( `db_bucket_id` bigint unsigned NOT NULL, `db_directory_id` bigint unsigned NOT NULL, `object_id` varchar(766) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, - `key` longblob, + `key` varbinary(33) NOT NULL, `health` double NOT NULL DEFAULT '1', `size` bigint DEFAULT NULL, `mime_type` longtext, From ffbbd4d7ef5d09164cc257885d5d401f8783656f Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 25 Sep 2024 11:26:54 +0200 Subject: [PATCH 184/708] stores: fix TestSlabCleanup --- object/encryptionkey.go | 1 + stores/metadata_test.go | 14 ++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/object/encryptionkey.go b/object/encryptionkey.go index 0b9137cfe..d9aecbe92 100644 --- a/object/encryptionkey.go +++ b/object/encryptionkey.go @@ -26,6 +26,7 @@ type EncryptionKeyInterface interface { var NoOpKey = EncryptionKey{ entropy: new([32]byte), + keyType: EncryptionKeyTypeBasic, } type EncryptionKeyType int diff --git a/stores/metadata_test.go b/stores/metadata_test.go index ef257792e..9bd9e3b35 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -4017,18 +4017,23 @@ func TestSlabCleanup(t *testing.T) { } // create objects - insertObjStmt, err := ss.DB().Prepare(context.Background(), "INSERT INTO objects (db_directory_id, object_id, db_bucket_id, health) VALUES (?, ?, ?, ?);") + insertObjStmt, err := ss.DB().Prepare(context.Background(), "INSERT INTO objects (db_directory_id, object_id, db_bucket_id, health, `key`) VALUES (?, ?, ?, ?, ?);") if err != nil { t.Fatal(err) } defer insertObjStmt.Close() + randomKey := func() sql.EncryptionKey { + return sql.EncryptionKey(object.GenerateEncryptionKey(object.EncryptionKeyTypeSalted)) + } + var obj1ID, obj2ID int64 - if res, err := insertObjStmt.Exec(context.Background(), dirID, "1", ss.DefaultBucketID(), 1); err != nil { + obj1Key, obj2Key := randomKey(), randomKey() + if res, err := insertObjStmt.Exec(context.Background(), dirID, "1", ss.DefaultBucketID(), 1, obj1Key); err != nil { t.Fatal(err) } else if obj1ID, err = res.LastInsertId(); err != nil { t.Fatal(err) - } else if res, err := insertObjStmt.Exec(context.Background(), dirID, "2", ss.DefaultBucketID(), 1); err != nil { + } else if res, err := insertObjStmt.Exec(context.Background(), dirID, "2", ss.DefaultBucketID(), 1, obj2Key); err != nil { t.Fatal(err) } else if obj2ID, err = res.LastInsertId(); err != nil { t.Fatal(err) @@ -4084,7 +4089,8 @@ func TestSlabCleanup(t *testing.T) { } var obj3ID int64 - if res, err := insertObjStmt.Exec(context.Background(), dirID, "3", ss.DefaultBucketID(), 1); err != nil { + obj3Key := randomKey() + if res, err := insertObjStmt.Exec(context.Background(), dirID, "3", ss.DefaultBucketID(), 1, obj3Key); err != nil { t.Fatal(err) } else if obj3ID, err = res.LastInsertId(); err != nil { t.Fatal(err) From 5fd345ff9a37da7f0a29117f68699ff457515782 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 25 Sep 2024 11:57:22 +0200 Subject: [PATCH 185/708] worker: derive key --- internal/utils/keys.go | 14 ++++++++++++++ object/encryptionkey.go | 21 ++++++++------------- worker/download.go | 6 +++--- worker/upload.go | 6 +++--- worker/worker.go | 2 +- 5 files changed, 29 insertions(+), 20 deletions(-) diff --git a/internal/utils/keys.go b/internal/utils/keys.go index 0122491a0..486eb19db 100644 --- a/internal/utils/keys.go +++ b/internal/utils/keys.go @@ -10,6 +10,7 @@ import ( type ( MasterKey [32]byte AccountsKey types.PrivateKey + UploadKey [32]byte ) // DeriveAccountsKey derives an accounts key from a masterkey which is used @@ -19,6 +20,12 @@ func (key *MasterKey) DeriveAccountsKey(workerID string) AccountsKey { return AccountsKey(key.deriveSubKey(keyPath)) } +// DeriveAccountsKey derives an accounts key from a masterkey which is used +// to derive individual account keys from. +func (key *MasterKey) DeriveUploadKey() UploadKey { + return UploadKey(key.deriveSubKey("uploads")) +} + // DeriveContractKey derives a contract key from a masterkey which is used to // form, renew and revise contracts. func (key *MasterKey) DeriveContractKey(hostKey types.PublicKey) types.PrivateKey { @@ -30,6 +37,13 @@ func (key *MasterKey) DeriveContractKey(hostKey types.PublicKey) types.PrivateKe return pk } +func (key *UploadKey) DeriveKey(salt *[32]byte) [32]byte { + entropy := append([]byte(nil), key[:]...) + entropy = append(entropy, salt[:]...) + sum := blake2b.Sum256(entropy) + return sum +} + // deriveSubKey can be used to derive a sub-masterkey from the worker's // masterkey to use for a specific purpose. Such as deriving more keys for // ephemeral accounts. diff --git a/object/encryptionkey.go b/object/encryptionkey.go index d9aecbe92..aca48c462 100644 --- a/object/encryptionkey.go +++ b/object/encryptionkey.go @@ -11,7 +11,7 @@ import ( "io" "math" - "golang.org/x/crypto/blake2b" + "go.sia.tech/renterd/internal/utils" "golang.org/x/crypto/chacha20" "lukechampine.com/frand" ) @@ -141,7 +141,7 @@ func (k *EncryptionKey) UnmarshalText(b []byte) error { type EncryptionOptions struct { Offset uint64 - Key *[32]byte + Key *utils.UploadKey } var ErrKeyType = errors.New("invalid key type") @@ -186,18 +186,13 @@ func (k *encryptionKeyBasic) Decrypt(w io.Writer, offset uint64) cipher.StreamWr type encryptionKeySalted EncryptionKey -func (k *encryptionKeySalted) deriveEncryptionKey(key *[32]byte) *[32]byte { - entropy := append([]byte(nil), key[:]...) - entropy = append(entropy, k.entropy[:]...) - sum := blake2b.Sum256(entropy) - return &sum +func (k *encryptionKeySalted) Encrypt(r io.Reader, offset uint64, key *utils.UploadKey) (cipher.StreamReader, error) { + derivedKey := key.DeriveKey(k.entropy) + return encrypt(&derivedKey, r, offset) } - -func (k *encryptionKeySalted) Encrypt(r io.Reader, offset uint64, key *[32]byte) (cipher.StreamReader, error) { - return encrypt(k.deriveEncryptionKey(key), r, offset) -} -func (k *encryptionKeySalted) Decrypt(w io.Writer, offset uint64, key *[32]byte) cipher.StreamWriter { - return decrypt(k.deriveEncryptionKey(key), w, offset) +func (k *encryptionKeySalted) Decrypt(w io.Writer, offset uint64, key *utils.UploadKey) cipher.StreamWriter { + derivedKey := key.DeriveKey(k.entropy) + return decrypt(&derivedKey, w, offset) } type rekeyStream struct { diff --git a/worker/download.go b/worker/download.go index a12215ce4..a0a95b733 100644 --- a/worker/download.go +++ b/worker/download.go @@ -34,7 +34,7 @@ type ( hm HostManager mm MemoryManager os ObjectStore - uploadKey *[32]byte + uploadKey *utils.UploadKey logger *zap.SugaredLogger maxOverdrive uint64 @@ -128,14 +128,14 @@ type ( } ) -func (w *Worker) initDownloadManager(uploadKey *[32]byte, maxMemory, maxOverdrive uint64, overdriveTimeout time.Duration, logger *zap.Logger) { +func (w *Worker) initDownloadManager(uploadKey *utils.UploadKey, maxMemory, maxOverdrive uint64, overdriveTimeout time.Duration, logger *zap.Logger) { if w.downloadManager != nil { panic("download manager already initialized") // developer error } w.downloadManager = newDownloadManager(w.shutdownCtx, uploadKey, w, w.bus, maxMemory, maxOverdrive, overdriveTimeout, logger) } -func newDownloadManager(ctx context.Context, uploadKey *[32]byte, hm HostManager, os ObjectStore, maxMemory, maxOverdrive uint64, overdriveTimeout time.Duration, logger *zap.Logger) *downloadManager { +func newDownloadManager(ctx context.Context, uploadKey *utils.UploadKey, hm HostManager, os ObjectStore, maxMemory, maxOverdrive uint64, overdriveTimeout time.Duration, logger *zap.Logger) *downloadManager { logger = logger.Named("downloadmanager") return &downloadManager{ hm: hm, diff --git a/worker/upload.go b/worker/upload.go index 9760910f9..d009b6f42 100644 --- a/worker/upload.go +++ b/worker/upload.go @@ -44,7 +44,7 @@ type ( os ObjectStore cl ContractLocker cs ContractStore - uploadKey *[32]byte + uploadKey *utils.UploadKey logger *zap.SugaredLogger contractLockDuration time.Duration @@ -147,7 +147,7 @@ type ( } ) -func (w *Worker) initUploadManager(uploadKey *[32]byte, maxMemory, maxOverdrive uint64, overdriveTimeout time.Duration, logger *zap.Logger) { +func (w *Worker) initUploadManager(uploadKey *utils.UploadKey, maxMemory, maxOverdrive uint64, overdriveTimeout time.Duration, logger *zap.Logger) { if w.uploadManager != nil { panic("upload manager already initialized") // developer error } @@ -303,7 +303,7 @@ func (w *Worker) tryUploadPackedSlab(ctx context.Context, mem Memory, ps api.Pac return nil } -func newUploadManager(ctx context.Context, uploadKey *[32]byte, hm HostManager, os ObjectStore, cl ContractLocker, cs ContractStore, maxMemory, maxOverdrive uint64, overdriveTimeout time.Duration, contractLockDuration time.Duration, logger *zap.Logger) *uploadManager { +func newUploadManager(ctx context.Context, uploadKey *utils.UploadKey, hm HostManager, os ObjectStore, cl ContractLocker, cs ContractStore, maxMemory, maxOverdrive uint64, overdriveTimeout time.Duration, contractLockDuration time.Duration, logger *zap.Logger) *uploadManager { logger = logger.Named("uploadmanager") return &uploadManager{ hm: hm, diff --git a/worker/worker.go b/worker/worker.go index ad2934953..da8bd9b2f 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -958,7 +958,7 @@ func New(cfg config.Worker, masterKey [32]byte, b Bus, l *zap.Logger) (*Worker, } w.initPriceTables() - var uploadKey [32]byte // TODO: derive + uploadKey := w.masterKey.DeriveUploadKey() w.initDownloadManager(&uploadKey, cfg.DownloadMaxMemory, cfg.DownloadMaxOverdrive, cfg.DownloadOverdriveTimeout, l) w.initUploadManager(&uploadKey, cfg.UploadMaxMemory, cfg.UploadMaxOverdrive, cfg.UploadOverdriveTimeout, l) From cc047a94000db5298ecba2989a4ef388eca7c06b Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 25 Sep 2024 13:04:02 +0200 Subject: [PATCH 186/708] stores: add migration --- internal/sql/migrations.go | 6 ++++++ .../mysql/migrations/main/migration_00023_key_prefix.sql | 7 +++++++ stores/sql/mysql/migrations/main/schema.sql | 4 ++-- .../sqlite/migrations/main/migration_00023_key_prefix.sql | 4 ++++ 4 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 stores/sql/mysql/migrations/main/migration_00023_key_prefix.sql create mode 100644 stores/sql/sqlite/migrations/main/migration_00023_key_prefix.sql diff --git a/internal/sql/migrations.go b/internal/sql/migrations.go index 56cd91bf0..167e60cb5 100644 --- a/internal/sql/migrations.go +++ b/internal/sql/migrations.go @@ -249,6 +249,12 @@ var ( return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00022_remove_triggers", log) }, }, + { + ID: "00023_key_prefix", + Migrate: func(tx Tx) error { + return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00023_key_prefix", log) + }, + }, } } MetricsMigrations = func(ctx context.Context, migrationsFs embed.FS, log *zap.SugaredLogger) []Migration { diff --git a/stores/sql/mysql/migrations/main/migration_00023_key_prefix.sql b/stores/sql/mysql/migrations/main/migration_00023_key_prefix.sql new file mode 100644 index 000000000..dd555bd83 --- /dev/null +++ b/stores/sql/mysql/migrations/main/migration_00023_key_prefix.sql @@ -0,0 +1,7 @@ +ALTER TABLE `objects` MODIFY `key` binary(33) NOT NULL; +ALTER TABLE `slabs` MODIFY `key` binary(33) NOT NULL; + +UPDATE `objects` +SET `key` = CONCAT(x'01', `key`); +UPDATE `slabs` +SET `key` = CONCAT(x'01', `key`); diff --git a/stores/sql/mysql/migrations/main/schema.sql b/stores/sql/mysql/migrations/main/schema.sql index 570375aa2..5694be24b 100644 --- a/stores/sql/mysql/migrations/main/schema.sql +++ b/stores/sql/mysql/migrations/main/schema.sql @@ -132,7 +132,7 @@ CREATE TABLE `slabs` ( `db_buffered_slab_id` bigint unsigned DEFAULT NULL, `health` double NOT NULL DEFAULT '1', `health_valid_until` bigint NOT NULL DEFAULT '0', - `key` varbinary(33) NOT NULL, + `key` binary(33) NOT NULL, `min_shards` tinyint unsigned DEFAULT NULL, `total_shards` tinyint unsigned DEFAULT NULL, PRIMARY KEY (`id`), @@ -304,7 +304,7 @@ CREATE TABLE `objects` ( `db_bucket_id` bigint unsigned NOT NULL, `db_directory_id` bigint unsigned NOT NULL, `object_id` varchar(766) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, - `key` varbinary(33) NOT NULL, + `key` binary(33) NOT NULL, `health` double NOT NULL DEFAULT '1', `size` bigint DEFAULT NULL, `mime_type` longtext, diff --git a/stores/sql/sqlite/migrations/main/migration_00023_key_prefix.sql b/stores/sql/sqlite/migrations/main/migration_00023_key_prefix.sql new file mode 100644 index 000000000..2ecbf6d35 --- /dev/null +++ b/stores/sql/sqlite/migrations/main/migration_00023_key_prefix.sql @@ -0,0 +1,4 @@ +UPDATE `objects` +SET `key` = CONCAT(x'01', `key`); +UPDATE `slabs` +SET `key` = CONCAT(x'01', `key`); From 1fbbc227f5ef3e4649cbde1cc194dfb545107bfd Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 26 Sep 2024 14:40:37 +0200 Subject: [PATCH 187/708] object: address comments --- internal/utils/keys.go | 5 +++-- object/encryptionkey.go | 12 +++++++----- object/encryptionkey_test.go | 15 +++++++++++++++ 3 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 object/encryptionkey_test.go diff --git a/internal/utils/keys.go b/internal/utils/keys.go index 486eb19db..1b4931191 100644 --- a/internal/utils/keys.go +++ b/internal/utils/keys.go @@ -20,8 +20,8 @@ func (key *MasterKey) DeriveAccountsKey(workerID string) AccountsKey { return AccountsKey(key.deriveSubKey(keyPath)) } -// DeriveAccountsKey derives an accounts key from a masterkey which is used -// to derive individual account keys from. +// DeriveAccountsKey derives an upload key from a masterkey which is used +// to encrypt/decrypt files for uploading. func (key *MasterKey) DeriveUploadKey() UploadKey { return UploadKey(key.deriveSubKey("uploads")) } @@ -37,6 +37,7 @@ func (key *MasterKey) DeriveContractKey(hostKey types.PublicKey) types.PrivateKe return pk } +// DeriveKey combines the upload key with a salt to derive a new key. func (key *UploadKey) DeriveKey(salt *[32]byte) [32]byte { entropy := append([]byte(nil), key[:]...) entropy = append(entropy, salt[:]...) diff --git a/object/encryptionkey.go b/object/encryptionkey.go index aca48c462..de56b6d16 100644 --- a/object/encryptionkey.go +++ b/object/encryptionkey.go @@ -29,6 +29,11 @@ var NoOpKey = EncryptionKey{ keyType: EncryptionKeyTypeBasic, } +var ( + ErrKeyType = errors.New("invalid key type") + ErrKeyRequired = errors.New("key required") +) + type EncryptionKeyType int const ( @@ -38,8 +43,8 @@ const ( // A EncryptionKey can encrypt and decrypt messages. type EncryptionKey struct { - entropy *[32]byte `json:"-"` - keyType EncryptionKeyType `json:"-"` + entropy *[32]byte + keyType EncryptionKeyType } // GenerateEncryptionKey returns a random encryption key. @@ -144,9 +149,6 @@ type EncryptionOptions struct { Key *utils.UploadKey } -var ErrKeyType = errors.New("invalid key type") -var ErrKeyRequired = errors.New("key required") - func (k *EncryptionKey) Encrypt(r io.Reader, opts EncryptionOptions) (cipher.StreamReader, error) { switch k.keyType { case EncryptionKeyTypeBasic: diff --git a/object/encryptionkey_test.go b/object/encryptionkey_test.go new file mode 100644 index 000000000..65e1da085 --- /dev/null +++ b/object/encryptionkey_test.go @@ -0,0 +1,15 @@ +package object + +import ( + "encoding/json" + "testing" +) + +func TestEncryptionKeyJSON(t *testing.T) { + b, err := json.Marshal(NoOpKey) + if err != nil { + t.Fatal(err) + } else if string(b) != `"key:0000000000000000000000000000000000000000000000000000000000000000"` { + t.Fatal("unexpected JSON:", string(b)) + } +} From 6d3ddeb9398394e33a3085e71cd94fdd77ebd97a Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 26 Sep 2024 16:45:23 +0200 Subject: [PATCH 188/708] sql: fix mysql migration --- .../sql/mysql/migrations/main/migration_00023_key_prefix.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stores/sql/mysql/migrations/main/migration_00023_key_prefix.sql b/stores/sql/mysql/migrations/main/migration_00023_key_prefix.sql index dd555bd83..002108cb4 100644 --- a/stores/sql/mysql/migrations/main/migration_00023_key_prefix.sql +++ b/stores/sql/mysql/migrations/main/migration_00023_key_prefix.sql @@ -2,6 +2,6 @@ ALTER TABLE `objects` MODIFY `key` binary(33) NOT NULL; ALTER TABLE `slabs` MODIFY `key` binary(33) NOT NULL; UPDATE `objects` -SET `key` = CONCAT(x'01', `key`); +SET `key` = CONCAT(x'01', LEFT(`key`, 32)); UPDATE `slabs` -SET `key` = CONCAT(x'01', `key`); +SET `key` = CONCAT(x'01', LEFT(`key`, 32)); From 29eb073e954b18c47ce90db3bb0816ea5deed516 Mon Sep 17 00:00:00 2001 From: Nate Maninger Date: Tue, 24 Sep 2024 17:59:24 -0700 Subject: [PATCH 189/708] ci: login to docker hub --- .github/workflows/publish.yml | 4 ++++ .github/workflows/test.yml | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index e40df6930..336143537 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -27,6 +27,10 @@ jobs: - uses: actions/checkout@v4 - uses: docker/setup-qemu-action@v3 - uses: docker/setup-buildx-action@v3 + - uses: docker/login-action@v3 # helps with rate limit issues + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} - uses: docker/login-action@v3 with: registry: ghcr.io diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6aee77227..3d7c281df 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -39,6 +39,11 @@ jobs: uses: actions/setup-go@v5 with: go-version: ${{ matrix.go-version }} + - uses: docker/login-action@v3 # helps with rate limit issues + if: matrix.os == 'ubuntu-latest' + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} - name: Configure Windows if: matrix.os == 'windows-latest' run: git config --global core.autocrlf false # fixes go lint fmt error From 42f818bb0f66ade28d0b0c2cbcbc28d4d7f4e04d Mon Sep 17 00:00:00 2001 From: Nate Maninger Date: Thu, 26 Sep 2024 08:24:31 -0700 Subject: [PATCH 190/708] ci: move login actions up --- .github/workflows/publish.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 336143537..b7b93efe2 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -25,8 +25,6 @@ jobs: packages: write steps: - uses: actions/checkout@v4 - - uses: docker/setup-qemu-action@v3 - - uses: docker/setup-buildx-action@v3 - uses: docker/login-action@v3 # helps with rate limit issues with: username: ${{ secrets.DOCKER_HUB_USERNAME }} @@ -36,6 +34,8 @@ jobs: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} + - uses: docker/setup-qemu-action@v3 + - uses: docker/setup-buildx-action@v3 - uses: docker/metadata-action@v4 name: Generate tags id: meta From cc939437c8d3717cef550f3ab0a02b7cd8ac7d3d Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 25 Sep 2024 13:59:43 +0200 Subject: [PATCH 191/708] config: default to human readable encoding --- cmd/renterd/config.go | 2 +- cmd/renterd/logger.go | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cmd/renterd/config.go b/cmd/renterd/config.go index 769875866..fbcf99e84 100644 --- a/cmd/renterd/config.go +++ b/cmd/renterd/config.go @@ -71,7 +71,7 @@ func defaultConfig() config.Config { Level: "", File: config.LogFile{ Enabled: true, - Format: "json", + Format: "human", Path: os.Getenv("RENTERD_LOG_FILE"), }, StdOut: config.StdOut{ diff --git a/cmd/renterd/logger.go b/cmd/renterd/logger.go index d53bdd709..6855142fe 100644 --- a/cmd/renterd/logger.go +++ b/cmd/renterd/logger.go @@ -57,10 +57,10 @@ func NewLogger(dir, filename string, cfg config.Log) (*zap.Logger, func(context. var encoder zapcore.Encoder switch cfg.File.Format { - case "human": - encoder = humanEncoder(false) // disable colors in file log - default: // log file defaults to json + case "json": encoder = jsonEncoder() + default: // log file defaults to 'human' + encoder = humanEncoder(false) // disable colors in file log } cores = append(cores, zapcore.NewCore(encoder, writer, fileLevel)) } From a346c1becf144a31faf35fca9811bbd8ddbee56d Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Sat, 28 Sep 2024 04:37:24 -0400 Subject: [PATCH 192/708] e2e: add regression test --- internal/test/e2e/cluster_test.go | 46 +++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index ef81e8d39..cc2728db5 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -2707,3 +2707,49 @@ func TestHostScan(t *testing.T) { t.Fatalf("expected 1 hosts, got %v", len(toScan)) } } + +// TestDownloadAllHosts makes sure we try to download sectors, +// from all hosts that a sector is stored on and not just the latestHost. +func TestDownloadAllHosts(t *testing.T) { + if testing.Short() { + t.SkipNow() + } + + // create a test cluster + cluster := newTestCluster(t, testClusterOptions{ + hosts: test.RedundancySettings.TotalShards, + uploadPacking: false, // make sure data is uploaded + }) + defer cluster.Shutdown() + + w := cluster.Worker + tt := cluster.tt + + // prepare a file + data := make([]byte, 128) + tt.OKAll(frand.Read(data)) + + // upload the data + path := fmt.Sprintf("data_%v", len(data)) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, path, api.UploadObjectOptions{})) + + // fetch object + obj, err := cluster.Bus.Object(context.Background(), api.DefaultBucketName, path, api.GetObjectOptions{}) + tt.OK(err) + + // update the LatestHost field to hosts we don't have + // contracts with + for i, slab := range obj.Object.Slabs { + for j := range slab.Shards { + frand.Read(obj.Object.Slabs[i].Shards[j].LatestHost[:]) + } + } + tt.OK(cluster.Bus.AddObject(context.Background(), api.DefaultBucketName, path, test.ContractSet, *obj.Object.Object, api.AddObjectOptions{})) + + // download the object + dst := new(bytes.Buffer) + tt.OK(cluster.Worker.DownloadObject(context.Background(), dst, api.DefaultBucketName, path, api.DownloadObjectOptions{})) + if !bytes.Equal(dst.Bytes(), data) { + t.Fatal("data mismatch") + } +} From 9e8ab11ff602f9debe646183fe71f3906a82701a Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Sat, 28 Sep 2024 04:50:49 -0400 Subject: [PATCH 193/708] worker: add sector info for all contracts --- worker/download.go | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/worker/download.go b/worker/download.go index e1c54771d..4e7354d8b 100644 --- a/worker/download.go +++ b/worker/download.go @@ -245,7 +245,7 @@ func (mgr *downloadManager) DownloadObject(ctx context.Context, w io.Writer, o o // check if we have enough downloaders var available uint8 for _, s := range next.Shards { - if _, exists := hosts[s.LatestHost]; exists { + if isSectorAvailable(s, hosts) { available++ } } @@ -366,7 +366,7 @@ func (mgr *downloadManager) DownloadSlab(ctx context.Context, slab object.Slab, // count how many shards we can download (best-case) var availableShards uint8 for _, shard := range slab.Shards { - if _, exists := available[shard.LatestHost]; exists { + if isSectorAvailable(shard, available) { availableShards++ } } @@ -505,7 +505,10 @@ func (mgr *downloadManager) newSlabDownload(slice object.SlabSlice, migration bo // build sector info hostToSectors := make(map[types.PublicKey][]sectorInfo) for sI, s := range slice.Shards { - hostToSectors[s.LatestHost] = append(hostToSectors[s.LatestHost], sectorInfo{s, sI}) + si := sectorInfo{s, sI} + for hk := range s.Contracts { + hostToSectors[hk] = append(hostToSectors[hk], si) + } } // create slab download @@ -640,6 +643,9 @@ func (s *slabDownload) nextRequest(ctx context.Context, resps *sectorResponses, s.unusedHostSectors[host] = sectors } } + // TODO: track which sectors are being downloaded and prefer + // scheduling one that isn't downloading right now + // remove host if no sectors are left if len(sectors) == 0 { delete(s.unusedHostSectors, host) @@ -973,3 +979,14 @@ func (sr *sectorResponses) Next() *sectorDownloadResp { sr.responses = sr.responses[1:] return resp } + +func isSectorAvailable(s object.Sector, hosts map[types.PublicKey]struct{}) bool { + // if any of the other hosts that store the sector are + // available, the sector is also considered available + for hk, _ := range s.Contracts { + if _, available := hosts[hk]; available { + return true + } + } + return false +} From d496489f766b9e496a8a667fe8b6beb71b6984a6 Mon Sep 17 00:00:00 2001 From: PJ Date: Wed, 25 Sep 2024 13:57:25 +0200 Subject: [PATCH 194/708] bus: use lowercase query string params --- api/object.go | 8 ++++---- bus/client/contracts.go | 2 +- bus/client/metrics.go | 8 ++++---- bus/client/slabs.go | 6 +++--- bus/routes.go | 24 ++++++++++++------------ internal/test/e2e/cluster_test.go | 2 ++ worker/worker.go | 8 ++++---- 7 files changed, 30 insertions(+), 28 deletions(-) diff --git a/api/object.go b/api/object.go index 5e87a4fa5..8d01d4404 100644 --- a/api/object.go +++ b/api/object.go @@ -298,7 +298,7 @@ func (opts HeadObjectOptions) ApplyHeaders(h http.Header) { func (opts GetObjectOptions) Apply(values url.Values) { if opts.OnlyMetadata { - values.Set("onlyMetadata", "true") + values.Set("onlymetadata", "true") } } @@ -316,16 +316,16 @@ func (opts ListObjectOptions) Apply(values url.Values) { values.Set("marker", opts.Marker) } if opts.SortBy != "" { - values.Set("sortBy", opts.SortBy) + values.Set("sortby", opts.SortBy) } if opts.SortDir != "" { - values.Set("sortDir", opts.SortDir) + values.Set("sortdir", opts.SortDir) } if opts.Substring != "" { values.Set("substring", opts.Substring) } if opts.SlabEncryptionKey != (object.EncryptionKey{}) { - values.Set("slabEncryptionKey", opts.SlabEncryptionKey.String()) + values.Set("slabencryptionkey", opts.SlabEncryptionKey.String()) } } diff --git a/bus/client/contracts.go b/bus/client/contracts.go index e29eaaf71..08dc7da53 100644 --- a/bus/client/contracts.go +++ b/bus/client/contracts.go @@ -19,7 +19,7 @@ func (c *Client) AddContract(ctx context.Context, contract api.ContractMetadata) // AncestorContracts returns any ancestors of a given contract. func (c *Client) AncestorContracts(ctx context.Context, contractID types.FileContractID, minStartHeight uint64) (contracts []api.ContractMetadata, err error) { values := url.Values{} - values.Set("minStartHeight", fmt.Sprint(minStartHeight)) + values.Set("minstartheight", fmt.Sprint(minStartHeight)) err = c.c.WithContext(ctx).GET(fmt.Sprintf("/contract/%s/ancestors?"+values.Encode(), contractID), &contracts) return } diff --git a/bus/client/metrics.go b/bus/client/metrics.go index 3923145f0..7664bd0ee 100644 --- a/bus/client/metrics.go +++ b/bus/client/metrics.go @@ -20,10 +20,10 @@ func (c *Client) ContractMetrics(ctx context.Context, start time.Time, n uint64, values.Set("n", fmt.Sprint(n)) values.Set("interval", api.DurationMS(interval).String()) if opts.ContractID != (types.FileContractID{}) { - values.Set("contractID", opts.ContractID.String()) + values.Set("contractid", opts.ContractID.String()) } if opts.HostKey != (types.PublicKey{}) { - values.Set("hostKey", opts.HostKey.String()) + values.Set("hostkey", opts.HostKey.String()) } var resp []api.ContractMetric @@ -42,10 +42,10 @@ func (c *Client) ContractPruneMetrics(ctx context.Context, start time.Time, n ui values.Set("fcid", opts.ContractID.String()) } if opts.HostKey != (types.PublicKey{}) { - values.Set("hostKey", opts.HostKey.String()) + values.Set("hostkey", opts.HostKey.String()) } if opts.HostVersion != "" { - values.Set("hostVersion", opts.HostVersion) + values.Set("hostversion", opts.HostVersion) } var resp []api.ContractPruneMetric diff --git a/bus/client/slabs.go b/bus/client/slabs.go index b0fc8837e..b2ee24a51 100644 --- a/bus/client/slabs.go +++ b/bus/client/slabs.go @@ -19,9 +19,9 @@ import ( func (c *Client) AddPartialSlab(ctx context.Context, data []byte, minShards, totalShards uint8, contractSet string) (slabs []object.SlabSlice, slabBufferMaxSizeSoftReached bool, err error) { c.c.Custom("POST", "/slabs/partial", nil, &api.AddPartialSlabResponse{}) values := url.Values{} - values.Set("minShards", fmt.Sprint(minShards)) - values.Set("totalShards", fmt.Sprint(totalShards)) - values.Set("contractSet", contractSet) + values.Set("minshards", fmt.Sprint(minShards)) + values.Set("totalshards", fmt.Sprint(totalShards)) + values.Set("contractset", contractSet) u, err := url.Parse(fmt.Sprintf("%v/slabs/partial", c.c.BaseURL)) if err != nil { diff --git a/bus/routes.go b/bus/routes.go index 289f234f6..7cf3e014f 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1141,17 +1141,17 @@ func (b *Bus) objectsHandlerGET(jc jape.Context) { if jc.DecodeForm("marker", &marker) != nil { return } - if jc.DecodeForm("sortBy", &sortBy) != nil { + if jc.DecodeForm("sortby", &sortBy) != nil { return } - if jc.DecodeForm("sortDir", &sortDir) != nil { + if jc.DecodeForm("sortdir", &sortDir) != nil { return } if jc.DecodeForm("substring", &substring) != nil { return } var slabEncryptionKey object.EncryptionKey - if jc.DecodeForm("slabEncryptionKey", &slabEncryptionKey) != nil { + if jc.DecodeForm("slabencryptionkey", &slabEncryptionKey) != nil { return } @@ -1530,15 +1530,15 @@ func (b *Bus) slabsPartialHandlerGET(jc jape.Context) { func (b *Bus) slabsPartialHandlerPOST(jc jape.Context) { var minShards int - if jc.DecodeForm("minShards", &minShards) != nil { + if jc.DecodeForm("minshards", &minShards) != nil { return } var totalShards int - if jc.DecodeForm("totalShards", &totalShards) != nil { + if jc.DecodeForm("totalshards", &totalShards) != nil { return } var contractSet string - if jc.DecodeForm("contractSet", &contractSet) != nil { + if jc.DecodeForm("contractset", &contractSet) != nil { return } if minShards <= 0 || totalShards <= minShards { @@ -1578,7 +1578,7 @@ func (b *Bus) contractIDAncestorsHandler(jc jape.Context) { return } var minStartHeight uint64 - if jc.DecodeForm("minStartHeight", &minStartHeight) != nil { + if jc.DecodeForm("minstartheight", &minStartHeight) != nil { return } ancestors, err := b.ms.AncestorContracts(jc.Request.Context(), fcid, uint64(minStartHeight)) @@ -2009,19 +2009,19 @@ func (b *Bus) metricsHandlerGET(jc jape.Context) { switch key { case api.MetricContract: var opts api.ContractMetricsQueryOpts - if jc.DecodeForm("contractID", &opts.ContractID) != nil { + if jc.DecodeForm("contractid", &opts.ContractID) != nil { return - } else if jc.DecodeForm("hostKey", &opts.HostKey) != nil { + } else if jc.DecodeForm("hostkey", &opts.HostKey) != nil { return } metrics, err = b.metrics(jc.Request.Context(), key, start, n, interval, opts) case api.MetricContractPrune: var opts api.ContractPruneMetricsQueryOpts - if jc.DecodeForm("contractID", &opts.ContractID) != nil { + if jc.DecodeForm("contractid", &opts.ContractID) != nil { return - } else if jc.DecodeForm("hostKey", &opts.HostKey) != nil { + } else if jc.DecodeForm("hostkey", &opts.HostKey) != nil { return - } else if jc.DecodeForm("hostVersion", &opts.HostVersion) != nil { + } else if jc.DecodeForm("hostversion", &opts.HostVersion) != nil { return } metrics, err = b.metrics(jc.Request.Context(), key, start, n, interval, opts) diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index d6e9a2713..3fb54c7e5 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -781,6 +781,8 @@ func TestUploadDownloadBasic(t *testing.T) { } return nil }) + + w.HeadObject(context.Background(), testBucket, path, api.HeadObjectOptions{}) } // TestUploadDownloadExtended is an integration test that verifies objects can diff --git a/worker/worker.go b/worker/worker.go index da8bd9b2f..5972edbd9 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -550,11 +550,11 @@ func (w *Worker) objectHandlerGET(jc jape.Context) { return } var sortBy string - if jc.DecodeForm("sortBy", &sortBy) != nil { + if jc.DecodeForm("sortby", &sortBy) != nil { return } var sortDir string - if jc.DecodeForm("sortDir", &sortDir) != nil { + if jc.DecodeForm("sortdir", &sortDir) != nil { return } var marker string @@ -570,7 +570,7 @@ func (w *Worker) objectHandlerGET(jc jape.Context) { return } var ignoreDelim bool - if jc.DecodeForm("ignoreDelim", &ignoreDelim) != nil { + if jc.DecodeForm("ignoredelim", &ignoreDelim) != nil { return } @@ -1145,7 +1145,7 @@ func (w *Worker) headObject(ctx context.Context, bucket, key string, onlyMetadat }) if err != nil { return nil, api.Object{}, fmt.Errorf("couldn't fetch object: %w", err) - } else if res.Object == nil { + } else if res.Object == nil && !onlyMetadata { return nil, api.Object{}, errors.New("object is a directory") } From e830df75003169debfdcc980711da5dd999ad2b2 Mon Sep 17 00:00:00 2001 From: PJ Date: Wed, 25 Sep 2024 14:04:46 +0200 Subject: [PATCH 195/708] testing: remove debug line --- internal/test/e2e/cluster_test.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 3fb54c7e5..d6e9a2713 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -781,8 +781,6 @@ func TestUploadDownloadBasic(t *testing.T) { } return nil }) - - w.HeadObject(context.Background(), testBucket, path, api.HeadObjectOptions{}) } // TestUploadDownloadExtended is an integration test that verifies objects can From a9971b6bdd1b5eb3b92206b256536da89290cfe7 Mon Sep 17 00:00:00 2001 From: PJ Date: Fri, 27 Sep 2024 10:41:22 +0200 Subject: [PATCH 196/708] worker: remove check --- worker/worker.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/worker/worker.go b/worker/worker.go index 5972edbd9..a942f7b20 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -1145,8 +1145,6 @@ func (w *Worker) headObject(ctx context.Context, bucket, key string, onlyMetadat }) if err != nil { return nil, api.Object{}, fmt.Errorf("couldn't fetch object: %w", err) - } else if res.Object == nil && !onlyMetadata { - return nil, api.Object{}, errors.New("object is a directory") } // adjust length From 6cdeaf0b44aef9a56e3adbe234a78a9530658ff4 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Sat, 28 Sep 2024 05:34:00 -0400 Subject: [PATCH 197/708] lint: go fmt --- worker/download.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worker/download.go b/worker/download.go index 4e7354d8b..e80342503 100644 --- a/worker/download.go +++ b/worker/download.go @@ -983,7 +983,7 @@ func (sr *sectorResponses) Next() *sectorDownloadResp { func isSectorAvailable(s object.Sector, hosts map[types.PublicKey]struct{}) bool { // if any of the other hosts that store the sector are // available, the sector is also considered available - for hk, _ := range s.Contracts { + for hk := range s.Contracts { if _, available := hosts[hk]; available { return true } From 225c207433049bbc519898bb8fd20d5516b69a11 Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 30 Sep 2024 10:38:00 +0200 Subject: [PATCH 198/708] bus: update jape checks --- bus/routes.go | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/bus/routes.go b/bus/routes.go index 4961e09cb..88c739246 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1321,6 +1321,8 @@ func (b *Bus) settingsGougingHandlerGET(jc jape.Context) { } func (b *Bus) settingsGougingHandlerPATCH(jc jape.Context) { + jc.Custom((*map[string]any)(nil), api.GougingSettings{}) + // decode patch var patch map[string]any if jc.Decode(&patch) != nil { @@ -1366,6 +1368,8 @@ func (b *Bus) settingsPinnedHandlerGET(jc jape.Context) { } func (b *Bus) settingsPinnedHandlerPATCH(jc jape.Context) { + jc.Custom((*map[string]any)(nil), api.PinnedSettings{}) + // decode patch var patch map[string]any if jc.Decode(&patch) != nil { @@ -1380,8 +1384,11 @@ func (b *Bus) settingsPinnedHandlerPATCH(jc jape.Context) { } else if err != nil { jc.Error(err, http.StatusInternalServerError) return + } else if gs, ok := update.(api.PinnedSettings); !ok { + panic("unexpected setting") // developer error + } else { + jc.Encode(gs) } - jc.Encode(update) } func (b *Bus) settingsPinnedHandlerPUT(jc jape.Context) { @@ -1411,6 +1418,8 @@ func (b *Bus) settingsUploadHandlerGET(jc jape.Context) { } func (b *Bus) settingsUploadHandlerPATCH(jc jape.Context) { + jc.Custom((*map[string]any)(nil), api.UploadSettings{}) + // decode patch var patch map[string]any if jc.Decode(&patch) != nil { @@ -1425,8 +1434,11 @@ func (b *Bus) settingsUploadHandlerPATCH(jc jape.Context) { } else if err != nil { jc.Error(err, http.StatusInternalServerError) return + } else if gs, ok := update.(api.UploadSettings); !ok { + panic("unexpected setting") // developer error + } else { + jc.Encode(gs) } - jc.Encode(update) } func (b *Bus) settingsUploadHandlerPUT(jc jape.Context) { @@ -1454,6 +1466,8 @@ func (b *Bus) settingsS3HandlerGET(jc jape.Context) { } func (b *Bus) settingsS3HandlerPATCH(jc jape.Context) { + jc.Custom((*map[string]any)(nil), api.S3Settings{}) + // decode patch var patch map[string]any if jc.Decode(&patch) != nil { @@ -1468,8 +1482,11 @@ func (b *Bus) settingsS3HandlerPATCH(jc jape.Context) { } else if err != nil { jc.Error(err, http.StatusInternalServerError) return + } else if gs, ok := update.(api.S3Settings); !ok { + panic("unexpected setting") // developer error + } else { + jc.Encode(gs) } - jc.Encode(update) } func (b *Bus) settingsS3HandlerPUT(jc jape.Context) { From 8dc1634e82f6cb53b6a49b06032da3a888e5c0d3 Mon Sep 17 00:00:00 2001 From: Christopher Tarry Date: Mon, 30 Sep 2024 17:40:30 -0400 Subject: [PATCH 199/708] add prometheus encoder --- .github/workflows/test.yml | 2 + internal/prometheus/encoder.go | 71 +++++++++++++++++++++++++++++ internal/prometheus/encoder_test.go | 62 +++++++++++++++++++++++++ internal/prometheus/metric.go | 67 +++++++++++++++++++++++++++ 4 files changed, 202 insertions(+) create mode 100644 internal/prometheus/encoder.go create mode 100644 internal/prometheus/encoder_test.go create mode 100644 internal/prometheus/metric.go diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f81ff2d2d..1e9895952 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,6 +25,8 @@ jobs: autopilot bus bus/client worker worker/client + flags: | + -japecheck.types=false test: needs: analyze runs-on: ${{ matrix.os }} diff --git a/internal/prometheus/encoder.go b/internal/prometheus/encoder.go new file mode 100644 index 000000000..26a56e628 --- /dev/null +++ b/internal/prometheus/encoder.go @@ -0,0 +1,71 @@ +package prometheus + +import ( + "fmt" + "io" + "strings" +) + +// A Marshaller can be marshalled into Prometheus samples +type Marshaller interface { + PrometheusMetric() []Metric +} + +type marshallerSlice[M Marshaller] struct { + slice []M +} + +func (s marshallerSlice[M]) PrometheusMetric() []Metric { + var metrics []Metric + for _, m := range s.slice { + metrics = append(metrics, m.PrometheusMetric()...) + } + return metrics +} + +// Slice converts a slice of Prometheus marshallable objects into a +// slice of prometheus.Marshallers. +func Slice[T Marshaller](s []T) Marshaller { + return marshallerSlice[T]{slice: s} +} + +// An Encoder writes Prometheus samples to the writer +type Encoder struct { + used bool + sb strings.Builder + w io.Writer +} + +// Append marshals a Marshaller and appends it to the encoder's buffer. +func (e *Encoder) Append(m Marshaller) error { + e.sb.Reset() // reset the string builder + + // if this is not the first, add a newline to separate the samples + if e.used { + e.sb.Write([]byte("\n")) + } + e.used = true + + for i, m := range m.PrometheusMetric() { + if i > 0 { + // each sample must be separated by a newline + e.sb.Write([]byte("\n")) + } + + if err := m.encode(&e.sb); err != nil { + return fmt.Errorf("failed to encode metric: %v", err) + } + } + + if _, err := e.w.Write([]byte(e.sb.String())); err != nil { + return fmt.Errorf("failed to write metric: %v", err) + } + return nil +} + +// NewEncoder creates a new Prometheus encoder. +func NewEncoder(w io.Writer) *Encoder { + return &Encoder{ + w: w, + } +} diff --git a/internal/prometheus/encoder_test.go b/internal/prometheus/encoder_test.go new file mode 100644 index 000000000..1708cd0b9 --- /dev/null +++ b/internal/prometheus/encoder_test.go @@ -0,0 +1,62 @@ +package prometheus + +import ( + "bytes" + "testing" +) + +type encType struct { + Test float64 +} + +func (e encType) PrometheusMetric() []Metric { + return []Metric{{ + Name: "test", + Labels: map[string]any{ + "label": 10, + }, + Value: e.Test, + }} +} + +func TestEncode(t *testing.T) { + v := encType{ + Test: 1.5, + } + + var b bytes.Buffer + e := NewEncoder(&b) + if err := e.Append(&v); err != nil { + t.Fatal(err) + } + + got := string(b.Bytes()) + const expected = `test{label="10"} 1.5` + if got != expected { + t.Fatalf("prometheus marshaling: expected %s, got %s", expected, got) + } +} + +func TestEncodeSlice(t *testing.T) { + v := []encType{ + { + Test: 1.5, + }, + { + Test: 1.4, + }, + } + + var b bytes.Buffer + e := NewEncoder(&b) + if err := e.Append(Slice(v)); err != nil { + t.Fatal(err) + } + + got := string(b.Bytes()) + const expected = `test{label="10"} 1.5 +test{label="10"} 1.4` + if got != expected { + t.Fatalf("prometheus marshaling: expected %s, got %s", expected, got) + } +} diff --git a/internal/prometheus/metric.go b/internal/prometheus/metric.go new file mode 100644 index 000000000..86839ef50 --- /dev/null +++ b/internal/prometheus/metric.go @@ -0,0 +1,67 @@ +package prometheus + +import ( + "fmt" + "strconv" + "strings" + "time" +) + +// A Metric is a Prometheus metric. +type Metric struct { + Name string + Labels map[string]any + Value float64 + Timestamp time.Time +} + +// encode encodes a Metric into a Prometheus metric string. +func (m *Metric) encode(sb *strings.Builder) error { + sb.WriteString(m.Name) + + // write optional labels + if len(m.Labels) > 0 { + sb.WriteString("{") + n := len(m.Labels) + for k, v := range m.Labels { + sb.WriteString(k) + sb.WriteString(`="`) + switch v := v.(type) { + case string: + sb.WriteString(v) + case []byte: + sb.Write(v) + case int: + sb.WriteString(strconv.Itoa(v)) + case int64: + sb.WriteString(strconv.FormatInt(v, 10)) + case float64: + sb.WriteString(strconv.FormatFloat(v, 'f', -1, 64)) + case bool: + sb.WriteString(strconv.FormatBool(v)) + case fmt.Stringer: + sb.WriteString(v.String()) + default: + return fmt.Errorf("unsupported label value %T", v) + } + sb.WriteString(`"`) + + if n > 1 { + sb.WriteString(",") + } + n-- + } + sb.WriteString("}") + } + + // write value + sb.WriteString(" ") + sb.WriteString(strconv.FormatFloat(m.Value, 'f', -1, 64)) + + // write optional timestamp + if !m.Timestamp.IsZero() { + sb.WriteString(" ") + sb.WriteString(strconv.FormatInt(m.Timestamp.UnixMilli(), 10)) + } + return nil +} From 7abd1e21d4eab3192dab986df8be2aaef7610e6e Mon Sep 17 00:00:00 2001 From: Christopher Tarry Date: Mon, 30 Sep 2024 17:43:29 -0400 Subject: [PATCH 200/708] add old PrometheusMetrics --- alerts/prometheus.go | 18 + api/prometheus.go | 885 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 903 insertions(+) create mode 100644 alerts/prometheus.go create mode 100644 api/prometheus.go diff --git a/alerts/prometheus.go b/alerts/prometheus.go new file mode 100644 index 000000000..935e2a4df --- /dev/null +++ b/alerts/prometheus.go @@ -0,0 +1,18 @@ +package alerts + +import "go.sia.tech/renterd/internal/prometheus" + +// PrometheusMetric returns Prometheus samples for the hosts alerts. +func (a Alert) PrometheusMetric() (metrics []prometheus.Metric) { + metrics = append(metrics, prometheus.Metric{ + Name: "renterd_alert", + Labels: map[string]any{ + "id": a.ID, + "severity": a.Severity.String(), + "message": a.Message, + "timestamp": a.Timestamp, + }, + Value: 1, + }) + return +} diff --git a/api/prometheus.go b/api/prometheus.go new file mode 100644 index 000000000..99bf159ab --- /dev/null +++ b/api/prometheus.go @@ -0,0 +1,885 @@ +package api + +import ( + "fmt" + "strconv" + "time" + + "go.sia.tech/core/types" + "go.sia.tech/renterd/internal/prometheus" +) + +// See https://prometheus.io/docs/practices/naming/ for naming conventions +// on metrics and labels. + +func boolToFloat(x bool) float64 { + if x { + return 1 + } + return 0 +} + +func (c ConsensusState) PrometheusMetric() (metrics []prometheus.Metric) { + return []prometheus.Metric{ + { + Name: "renterd_consensus_state_synced", + Value: boolToFloat(c.Synced), + }, + { + Name: "renterd_consensus_state_chain_index_height", + Value: float64(c.BlockHeight), + }, + } +} + +func (asr AutopilotStateResponse) PrometheusMetric() (metrics []prometheus.Metric) { + labels := map[string]any{ + "version": asr.Version, + "commit": asr.Commit, + "os": asr.OS, + "build_time": asr.BuildTime.String(), + } + return []prometheus.Metric{ + { + Name: "renterd_autopilot_state_uptimems", + Labels: labels, + Value: float64(asr.UptimeMS), + }, + { + Name: "renterd_autopilot_state_configured", + Labels: labels, + Value: boolToFloat(asr.Configured), + }, + { + Name: "renterd_autopilot_state_migrating", + Labels: labels, + Value: boolToFloat(asr.Migrating), + }, + { + Name: "renterd_autopilot_state_migratinglaststart", + Labels: labels, + Value: float64(time.Time(asr.MigratingLastStart).Unix()), + }, + { + Name: "renterd_autopilot_state_pruning", + Labels: labels, + Value: boolToFloat(asr.Pruning), + }, + { + Name: "renterd_autopilot_state_pruninglaststart", + Labels: labels, + Value: float64(time.Time(asr.PruningLastStart).Unix()), + }, + { + Name: "renterd_autopilot_state_scanning", + Labels: labels, + Value: boolToFloat(asr.Scanning), + }, + { + Name: "renterd_autopilot_state_scanninglaststart", + Labels: labels, + Value: float64(time.Time(asr.ScanningLastStart).Unix()), + }, + } +} + +func (b Bucket) PrometheusMetric() (metrics []prometheus.Metric) { + return []prometheus.Metric{ + { + Name: "renterd_bucket", + Labels: map[string]any{ + "name": b.Name, + "publicReadAccess": boolToFloat(b.Policy.PublicReadAccess), + "createdAt": b.CreatedAt.String(), + }, + Value: 1, + }} +} + +func (host Host) PrometheusMetric() (metrics []prometheus.Metric) { + priceTableLabels := map[string]any{ + "net_address": host.NetAddress, + "uid": host.PriceTable.UID.String(), + "expiry": host.PriceTable.Expiry.Local().Format(time.RFC3339), + } + settingsLabels := map[string]any{ + "net_address": host.NetAddress, + "version": host.Settings.Version, + "siamux_port": host.Settings.SiaMuxPort, + } + netAddressLabel := map[string]any{ + "net_address": host.NetAddress, + } + + return []prometheus.Metric{ + { + Name: "renterd_host_scanned", + Labels: netAddressLabel, + Value: 1, + }, + + // price table + { + Name: "renterd_host_pricetable_validity", + Labels: priceTableLabels, + Value: float64(host.PriceTable.Validity.Milliseconds()), + }, + { + Name: "renterd_host_pricetable_hostblockheight", + Labels: priceTableLabels, + Value: float64(host.PriceTable.HostBlockHeight), + }, + { + Name: "renterd_host_pricetable_updatepricetablecost", + Labels: priceTableLabels, + Value: host.PriceTable.UpdatePriceTableCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_accountbalancecost", + Labels: priceTableLabels, + Value: host.PriceTable.AccountBalanceCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_fundaccountcost", + Labels: priceTableLabels, + Value: host.PriceTable.FundAccountCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_latestrevisioncost", + Labels: priceTableLabels, + Value: host.PriceTable.LatestRevisionCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_subscriptionmemorycost", + Labels: priceTableLabels, + Value: host.PriceTable.SubscriptionMemoryCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_subscriptionnotificationcost", + Labels: priceTableLabels, + Value: host.PriceTable.SubscriptionNotificationCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_initbasecost", + Labels: priceTableLabels, + Value: host.PriceTable.InitBaseCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_memorytimecost", + Labels: priceTableLabels, + Value: host.PriceTable.MemoryTimeCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_downloadbandwidthcost", + Labels: priceTableLabels, + Value: host.PriceTable.DownloadBandwidthCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_uploadbandwidthcost", + Labels: priceTableLabels, + Value: host.PriceTable.UploadBandwidthCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_dropsectorsbasecost", + Labels: priceTableLabels, + Value: host.PriceTable.DropSectorsBaseCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_dropsectorsunitcost", + Labels: priceTableLabels, + Value: host.PriceTable.DropSectorsUnitCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_hassectorbasecost", + Labels: priceTableLabels, + Value: host.PriceTable.HasSectorBaseCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_readbasecost", + Labels: priceTableLabels, + Value: host.PriceTable.ReadBaseCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_readlengthcost", + Labels: priceTableLabels, + Value: host.PriceTable.ReadLengthCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_renewcontractcost", + Labels: priceTableLabels, + Value: host.PriceTable.RenewContractCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_revisionbasecost", + Labels: priceTableLabels, + Value: host.PriceTable.RevisionBaseCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_swapsectorcost", + Labels: priceTableLabels, + Value: host.PriceTable.SwapSectorBaseCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_writebasecost", + Labels: priceTableLabels, + Value: host.PriceTable.WriteBaseCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_writelengthcost", + Labels: priceTableLabels, + Value: host.PriceTable.WriteLengthCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_writestorecost", + Labels: priceTableLabels, + Value: host.PriceTable.WriteStoreCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_txnfeeminrecommended", + Labels: priceTableLabels, + Value: host.PriceTable.TxnFeeMinRecommended.Siacoins(), + }, + { + Name: "renterd_host_pricetable_txnfeemaxrecommended", + Labels: priceTableLabels, + Value: host.PriceTable.TxnFeeMaxRecommended.Siacoins(), + }, + { + Name: "renterd_host_pricetable_contractprice", + Labels: priceTableLabels, + Value: host.PriceTable.ContractPrice.Siacoins(), + }, + { + Name: "renterd_host_pricetable_collateralcost", + Labels: priceTableLabels, + Value: host.PriceTable.CollateralCost.Siacoins(), + }, + { + Name: "renterd_host_pricetable_maxcollateral", + Labels: priceTableLabels, + Value: host.PriceTable.MaxCollateral.Siacoins(), + }, + { + Name: "renterd_host_pricetable_maxduration", + Labels: priceTableLabels, + Value: float64(host.PriceTable.MaxDuration), + }, + { + Name: "renterd_host_pricetable_windowsize", + Labels: priceTableLabels, + Value: float64(host.PriceTable.WindowSize), + }, + + // settings + { + Name: "renterd_host_settings_acceptingcontracts", + Labels: settingsLabels, + Value: boolToFloat(host.Settings.AcceptingContracts), + }, + { + Name: "renterd_host_settings_baserpcprice", + Labels: settingsLabels, + Value: host.Settings.BaseRPCPrice.Siacoins(), + }, + { + Name: "renterd_host_settings_collateral", + Labels: settingsLabels, + Value: host.Settings.Collateral.Siacoins(), + }, + { + Name: "renterd_host_settings_contractprice", + Labels: settingsLabels, + Value: host.Settings.ContractPrice.Siacoins(), + }, + { + Name: "renterd_host_settings_downloadbandwidthprice", + Labels: settingsLabels, + Value: host.Settings.DownloadBandwidthPrice.Siacoins(), + }, + { + Name: "renterd_host_settings_ephemeralaccountexpiry", + Labels: settingsLabels, + Value: float64(host.Settings.EphemeralAccountExpiry.Milliseconds()), + }, + { + Name: "renterd_host_settings_maxcollateral", + Labels: settingsLabels, + Value: host.Settings.MaxCollateral.Siacoins(), + }, + { + Name: "renterd_host_settings_maxdownloadbatchsize", + Labels: settingsLabels, + Value: float64(host.Settings.MaxDownloadBatchSize), + }, + { + Name: "renterd_host_settings_maxduration", + Labels: settingsLabels, + Value: float64(host.Settings.MaxDuration), + }, + { + Name: "renterd_host_settings_maxephemeralaccountbalance", + Labels: settingsLabels, + Value: host.Settings.MaxEphemeralAccountBalance.Siacoins(), + }, + { + Name: "renterd_host_settings_maxrevisebatchsize", + Labels: settingsLabels, + Value: float64(host.Settings.MaxReviseBatchSize), + }, + { + Name: "renterd_host_settings_remainingstorage", + Labels: settingsLabels, + Value: float64(host.Settings.RemainingStorage), + }, + { + Name: "renterd_host_settings_revisionnumber", + Labels: settingsLabels, + Value: float64(host.Settings.RevisionNumber), + }, + { + Name: "renterd_host_settings_sectoraccessprice", + Labels: settingsLabels, + Value: host.Settings.SectorAccessPrice.Siacoins(), + }, + { + Name: "renterd_host_settings_sectorsize", + Labels: settingsLabels, + Value: float64(host.Settings.SectorSize), + }, + { + Name: "renterd_host_settings_storageprice", + Labels: settingsLabels, + Value: host.Settings.StoragePrice.Siacoins(), + }, + { + Name: "renterd_host_settings_totalstorage", + Labels: settingsLabels, + Value: float64(host.Settings.TotalStorage), + }, + { + Name: "renterd_host_settings_uploadbandwidthprice", + Labels: settingsLabels, + Value: host.Settings.UploadBandwidthPrice.Siacoins(), + }, + { + Name: "renterd_host_settings_windowsize", + Labels: settingsLabels, + Value: float64(host.Settings.WindowSize), + }, + + // interactions + { + Name: "renterd_host_interactions_totalscans", + Labels: netAddressLabel, + Value: float64(host.Interactions.TotalScans), + }, + { + Name: "renterd_host_interactions_lastscansuccess", + Labels: netAddressLabel, + Value: boolToFloat(host.Interactions.LastScanSuccess), + }, + { + Name: "renterd_host_interactions_lostsectors", + Labels: netAddressLabel, + Value: float64(host.Interactions.LostSectors), + }, + { + Name: "renterd_host_interactions_secondtolastscansuccess", + Labels: netAddressLabel, + Value: boolToFloat(host.Interactions.SecondToLastScanSuccess), + }, + { + Name: "renterd_host_interactions_uptime", + Labels: netAddressLabel, + Value: float64(host.Interactions.Uptime.Milliseconds()), + }, + { + Name: "renterd_host_interactions_downtime", + Labels: netAddressLabel, + Value: float64(host.Interactions.Downtime.Milliseconds()), + }, + { + Name: "renterd_host_interactions_successfulinteractions", + Labels: netAddressLabel, + Value: float64(host.Interactions.SuccessfulInteractions), + }, + { + Name: "renterd_host_interactions_failedinteractions", + Labels: netAddressLabel, + Value: float64(host.Interactions.FailedInteractions), + }} +} + +func (host HostAddress) PrometheusMetric() (metrics []prometheus.Metric) { + return []prometheus.Metric{ + { + Name: "renterd_hosts_scanning", + Labels: map[string]any{ + "net_address": host.NetAddress, + "host_key": host.PublicKey.String(), + }, + Value: 1, + }} +} + +func (c ContractMetadata) PrometheusMetric() (metrics []prometheus.Metric) { + return []prometheus.Metric{ + { + Name: "renterd_contract", + Labels: map[string]any{ + "host_ip": c.HostIP, + "state": c.State, + "host_key": c.HostKey.String(), + "siamux_addr": c.SiamuxAddr, + "contract_price": c.ContractPrice.Siacoins(), + }, + Value: c.TotalCost.Siacoins(), + }} +} + +func (c ContractsPrunableDataResponse) PrometheusMetric() (metrics []prometheus.Metric) { + return []prometheus.Metric{ + { + Name: "renterd_prunable_contracts_total", + Value: float64(c.TotalPrunable), + }, + { + Name: "renterd_prunable_contracts_size", + Value: float64(c.TotalSize), + }} +} + +func formatSettingsMetricName(gp GougingParams, name string) (metrics []prometheus.Metric) { + metrics = append(metrics, prometheus.Metric{ + Name: fmt.Sprintf("renterd_%s_consensusstate_synced", name), + Value: boolToFloat(gp.ConsensusState.Synced), + }) + if name == "gouging" { // upload setting already has renterd_upload_currentheight + metrics = append(metrics, prometheus.Metric{ + Name: "renterd_gouging_currentheight", + Labels: map[string]any{ + "last_block_time": gp.ConsensusState.LastBlockTime.String(), + }, + Value: float64(gp.ConsensusState.BlockHeight), + }) + } + metrics = append(metrics, prometheus.Metric{ + Name: fmt.Sprintf("renterd_%s_settings_maxrpcprice", name), + Value: gp.GougingSettings.MaxRPCPrice.Siacoins(), + }) + metrics = append(metrics, prometheus.Metric{ + Name: fmt.Sprintf("renterd_%s_settings_maxcontractprice", name), + Value: gp.GougingSettings.MaxContractPrice.Siacoins(), + }) + metrics = append(metrics, prometheus.Metric{ + Name: fmt.Sprintf("renterd_%s_settings_maxdownloadprice", name), + Value: gp.GougingSettings.MaxDownloadPrice.Siacoins(), + }) + metrics = append(metrics, prometheus.Metric{ + Name: fmt.Sprintf("renterd_%s_settings_maxuploadprice", name), + Value: gp.GougingSettings.MaxUploadPrice.Siacoins(), + }) + metrics = append(metrics, prometheus.Metric{ + Name: fmt.Sprintf("renterd_%s_settings_maxstorageprice", name), + Value: gp.GougingSettings.MaxStoragePrice.Siacoins(), + }) + metrics = append(metrics, prometheus.Metric{ + Name: fmt.Sprintf("renterd_%s_settings_hostblockheightleeway", name), + Value: float64(gp.GougingSettings.HostBlockHeightLeeway), + }) + metrics = append(metrics, prometheus.Metric{ + Name: fmt.Sprintf("renterd_%s_settings_minpricetablevalidity", name), + Value: float64(gp.GougingSettings.MinPriceTableValidity.Milliseconds()), + }) + metrics = append(metrics, prometheus.Metric{ + Name: fmt.Sprintf("renterd_%s_settings_minaccountexpiry", name), + Value: float64(gp.GougingSettings.MinAccountExpiry.Milliseconds()), + }) + metrics = append(metrics, prometheus.Metric{ + Name: fmt.Sprintf("renterd_%s_settings_minmaxephemeralaccountbalance", name), + Value: gp.GougingSettings.MinMaxEphemeralAccountBalance.Siacoins(), + }) + metrics = append(metrics, prometheus.Metric{ + Name: fmt.Sprintf("renterd_%s_settings_migrationsurchargemultiplier", name), + Value: float64(gp.GougingSettings.MigrationSurchargeMultiplier), + }) + metrics = append(metrics, prometheus.Metric{ + Name: fmt.Sprintf("renterd_%s_redundancy_settings_minshards", name), + Value: float64(gp.RedundancySettings.MinShards), + }) + metrics = append(metrics, prometheus.Metric{ + Name: fmt.Sprintf("renterd_%s_redundancy_settings_totalshards", name), + Value: float64(gp.RedundancySettings.TotalShards), + }) + metrics = append(metrics, prometheus.Metric{ + Name: fmt.Sprintf("renterd_%s_transactionfee", name), + Value: gp.TransactionFee.Siacoins(), + }) + return +} + +func (gp GougingParams) PrometheusMetric() (metrics []prometheus.Metric) { + metrics = formatSettingsMetricName(gp, "gouging") + return +} + +func (up UploadParams) PrometheusMetric() (metrics []prometheus.Metric) { + metrics = formatSettingsMetricName(up.GougingParams, "upload") + metrics = append(metrics, prometheus.Metric{ + Name: "renterd_upload_currentheight", + Labels: map[string]any{ + "contract_set": up.ContractSet, + "upload_packing": boolToFloat(up.UploadPacking), + }, + Value: float64(up.CurrentHeight), + }) + return +} + +// SlabBuffersResp represents multiple `SlabBuffer`s. Its prometheus encoding +// is a summary of the count and average size of slab buffers. +type SlabBuffersResp []SlabBuffer + +func (sb SlabBuffersResp) PrometheusMetric() (metrics []prometheus.Metric) { + totalSize := int64(0) + for _, buffer := range sb { + totalSize += buffer.Size + } + return []prometheus.Metric{ + { + Name: "renterd_slabbuffers_totalsize", + Value: float64(totalSize), + }, + { + Name: "renterd_slabbuffers_totalslabs", + Value: float64(len(sb)), + }} +} + +// SlabBuffersResp represents multiple `ObjectMetadata`s. Its prometheus encoding +// is a summary of the count and average health of slab buffers. +type SearchObjectsResp []ObjectMetadata + +func (so SearchObjectsResp) PrometheusMetric() (metrics []prometheus.Metric) { + unavailableObjs := 0 + avgHealth := float64(0.0) + for _, obj := range so { + if obj.Health == 0 { + unavailableObjs += 1 + } + avgHealth += obj.Health + } + return []prometheus.Metric{ + { + Name: "renterd_objects_avghealth", + Value: float64(avgHealth), + }, + { + Name: "renterd_objects_unavailable", + Value: float64(unavailableObjs), + }} +} + +// SettingsResp represents the settings response fields not available from +// other endpoints. +// No specific prometheus response from: +// /setting/contractset - already available in /params/upload +// /setting/gouging - already available in /params/gouging +// /setting/redundancy - already available in /params/gouging +// /setting/uploadpacking - already available in /params/upload +// +// Prometheus specific: +// /setting/s3authentication +type SettingsResp map[string]interface{} + +func (s SettingsResp) PrometheusMetric() (metrics []prometheus.Metric) { + return +} + +func (sr BusStateResponse) PrometheusMetric() (metrics []prometheus.Metric) { + return []prometheus.Metric{ + { + Name: "renterd_state", + Labels: map[string]any{ + "network": sr.Network, + "version": sr.Version, + "commit": sr.Commit, + "start_time": sr.StartTime.String(), + "os": sr.OS, + "build_time": sr.BuildTime.String(), + }, + Value: 1, + }} +} + +func (os ObjectsStatsResponse) PrometheusMetric() (metrics []prometheus.Metric) { + return []prometheus.Metric{ + { + Name: "renterd_stats_numobjects", + Value: float64(os.NumObjects), + }, + { + Name: "renterd_stats_numunfinishedobjects", + Value: float64(os.NumUnfinishedObjects), + }, + { + Name: "renterd_stats_minhealth", + Value: os.MinHealth, + }, + { + Name: "renterd_stats_totalobjectsize", + Value: float64(os.TotalObjectsSize), + }, + { + Name: "renterd_stats_totalunfinishedobjectssize", + Value: float64(os.TotalUnfinishedObjectsSize), + }, + { + Name: "renterd_stats_totalsectorssize", + Value: float64(os.TotalSectorsSize), + }, + { + Name: "renterd_stats_totaluploadedsize", + Value: float64(os.TotalUploadedSize), + }} +} + +func (w WalletResponse) PrometheusMetric() (metrics []prometheus.Metric) { + return []prometheus.Metric{ + { + Name: "renterd_wallet_scanheight", + Value: float64(w.ScanHeight), + }, + { + Name: "renterd_wallet_spendable", + Value: w.Spendable.Siacoins(), + }, + { + Name: "renterd_wallet_confirmed", + Value: w.Confirmed.Siacoins(), + }, + { + Name: "renterd_wallet_unconfirmed", + Value: w.Unconfirmed.Siacoins(), + }, + { + Name: "renterd_wallet_immature", + Value: w.Immature.Siacoins(), + }} +} + +// WalletOutputsResp represents multiple `SiacoinElement`s. Its prometheus +// encoding is a summary of the count and total value of wallet outputs. +type WalletOutputsResp []SiacoinElement + +func (utxos WalletOutputsResp) PrometheusMetric() (metrics []prometheus.Metric) { + return []prometheus.Metric{ + { + Name: "renterd_wallet_numoutputs", + Value: float64(len(utxos)), + }, + { + Name: "renterd_wallet_value", + Value: func() float64 { + var sum types.Currency + for _, utxo := range utxos { + sum = sum.Add(utxo.Value) + } + return sum.Siacoins() + }(), + }, + } +} + +func (txn Transaction) PrometheusMetric() (metrics []prometheus.Metric) { + return []prometheus.Metric{ + { + Name: "renterd_wallet_transacaction_pending_inflow", + Labels: map[string]any{ + "txid": txn.ID.String(), + }, + Value: txn.Inflow.Siacoins(), + }, + { + Name: "renterd_wallet_transaction_pending_outflow", + Labels: map[string]any{ + "txid": txn.ID.String(), + }, + Value: txn.Outflow.Siacoins(), + }, + + { + Name: "renterd_wallet_transaction_pending_minerfee", + Labels: map[string]any{ + "txid": txn.ID.String(), + }, + Value: func() float64 { + if len(txn.Raw.MinerFees) > 0 { + return txn.Raw.MinerFees[0].Siacoins() + } + return 0 + }(), + }} +} + +func (m MemoryResponse) PrometheusMetric() (metrics []prometheus.Metric) { + return []prometheus.Metric{ + { + Name: "renterd_worker_memory_download_available", + Value: float64(m.Download.Available), + }, + { + Name: "renterd_worker_memory_download_total", + Value: float64(m.Download.Total), + }, + { + Name: "renterd_worker_memory_upload_available", + Value: float64(m.Upload.Available), + }, + { + Name: "renterd_worker_memory_upload_total", + Value: float64(m.Upload.Total), + }} +} + +func (m DownloadStatsResponse) PrometheusMetric() (metrics []prometheus.Metric) { + return []prometheus.Metric{ + { + Name: "renterd_worker_stats_avgdownloadspeedmbps", + Value: m.AvgDownloadSpeedMBPS, + }, + { + Name: "renterd_worker_stats_avgoverdrivepct_download", + Value: m.AvgOverdrivePct, + }, + { + Name: "renterd_worker_stats_healthydownloaders", + Value: float64(m.HealthyDownloaders), + }, + { + Name: "renterd_worker_stats_numdownloaders", + Value: float64(m.NumDownloaders), + }} +} + +func (m UploadStatsResponse) PrometheusMetric() (metrics []prometheus.Metric) { + return []prometheus.Metric{ + { + Name: "renterd_worker_stats_avgslabuploadspeedmbps", + Value: m.AvgSlabUploadSpeedMBPS, + }, + { + Name: "renterd_worker_stats_avgoverdrivepct_upload", + Value: m.AvgOverdrivePct, + }, + { + Name: "renterd_worker_stats_healthyuploaders", + Value: float64(m.HealthyUploaders), + }, + { + Name: "renterd_worker_stats_numuploaders", + Value: float64(m.NumUploaders), + }} +} + +// AllowListResp represents multiple `typex.PublicKey`s. Its prometheus +// encoding is a list of those keys. +type AllowListResp []types.PublicKey + +func (a AllowListResp) PrometheusMetric() (metrics []prometheus.Metric) { + for _, host := range a { + metrics = append(metrics, prometheus.Metric{ + Name: "renterd_allowed_host", + Labels: map[string]any{ + "host_key": host, + }, + Value: 1, + }) + } + return +} + +// BlockListResp represents multiple blocked host net addresses. Its +// prometheus encoding is a list of those addresses. +type BlockListResp []string + +func (b BlockListResp) PrometheusMetric() (metrics []prometheus.Metric) { + for _, host := range b { + metrics = append(metrics, prometheus.Metric{ + Name: "renterd_blocked_host", + Labels: map[string]any{ + "address": host, + }, + Value: 1, + }) + } + return +} + +// SyncerAddrResp represents the address of the renterd syncer. Its prometheus +// encoding includings a label of the same value. +type SyncerAddrResp string + +func (sar SyncerAddrResp) PrometheusMetric() (metrics []prometheus.Metric) { + return []prometheus.Metric{ + { + Name: "renterd_syncer_address", + Labels: map[string]any{ + "address": string(sar), + }, + Value: 1, + }} +} + +// SyncerPeersResp represents the addresses of the syncers peers. Its prometheus +// encoding is a list of those addresses. +type SyncerPeersResp []string + +func (srp SyncerPeersResp) PrometheusMetric() (metrics []prometheus.Metric) { + for _, p := range srp { + metrics = append(metrics, prometheus.Metric{ + Name: "renterd_syncer_peer", + Labels: map[string]any{ + "address": p, + }, + Value: 1, + }) + } + return +} + +// TxPoolFeeResp represents the average transaction fee. Its prometheus +// encoding is a float encoded version of the fee. +// We can't just use a type alias or the custom Currency marshaling methods +// won't be used. +type TxPoolFeeResp struct{ types.Currency } + +func (t TxPoolFeeResp) ToFloat64() (float64, error) { + // Convert string to float64 + return strconv.ParseFloat(t.String(), 64) +} + +func (t TxPoolFeeResp) PrometheusMetric() (metrics []prometheus.Metric) { + floatValue, err := t.ToFloat64() + if err != nil { + fmt.Println("Error:", err) + return + } + return []prometheus.Metric{ + { + Name: "renterd_tpool_fee", + Value: floatValue, + }} +} + +// TxPoolTxResp represents a multiple `types.Transaction`s. Its prometheus +// encoding represents the number of transactions in the slice. +type TxPoolTxResp []types.Transaction + +func (tpr TxPoolTxResp) PrometheusMetric() (metrics []prometheus.Metric) { + return []prometheus.Metric{ + { + Name: "renterd_txpool_numtxns", + Value: float64(len(tpr)), + }} +} From 65776499d11c227ccbd35f97a1d6a1625187bb50 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 1 Oct 2024 16:16:35 +0200 Subject: [PATCH 201/708] bus: fix superfluous response.WriteHeader call --- bus/routes.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bus/routes.go b/bus/routes.go index 33cf0a7aa..b5ff98bcb 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1018,12 +1018,13 @@ func (b *Bus) contractIDRenewHandlerPOST(jc jape.Context) { // validate the request if rrr.EndHeight == 0 { http.Error(jc.ResponseWriter, "EndHeight can not be zero", http.StatusBadRequest) + return } else if rrr.ExpectedNewStorage == 0 { http.Error(jc.ResponseWriter, "ExpectedNewStorage can not be zero", http.StatusBadRequest) + return } else if rrr.MaxFundAmount.IsZero() { http.Error(jc.ResponseWriter, "MaxFundAmount can not be zero", http.StatusBadRequest) - } else if rrr.MinNewCollateral.IsZero() { - http.Error(jc.ResponseWriter, "MinNewCollateral can not be zero", http.StatusBadRequest) + return } else if rrr.RenterFunds.IsZero() { http.Error(jc.ResponseWriter, "RenterFunds can not be zero", http.StatusBadRequest) return From 9009604d34ed4c38226e9d2d0ca12dd7dd6d0480 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 1 Oct 2024 16:25:01 +0200 Subject: [PATCH 202/708] bus: return 404 on host not found --- bus/routes.go | 5 ++++- internal/test/e2e/cluster_test.go | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/bus/routes.go b/bus/routes.go index 33cf0a7aa..37f52c96a 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -551,7 +551,10 @@ func (b *Bus) hostsPubkeyHandlerGET(jc jape.Context) { return } host, err := b.hs.Host(jc.Request.Context(), hostKey) - if jc.Check("couldn't load host", err) == nil { + if errors.Is(err, api.ErrHostNotFound) { + jc.Error(err, http.StatusNotFound) + return + } else if jc.Check("couldn't load host", err) == nil { jc.Encode(host) } } diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index d6e9a2713..32164f75c 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -380,6 +380,13 @@ func TestNewTestCluster(t *testing.T) { } else if !state.Configured { t.Fatal("autopilot should be configured") } + + // Fetch host + if _, err := b.Host(context.Background(), cluster.hosts[0].PublicKey()); err != nil { + t.Fatal("unexpected error", err) + } else if _, err := b.Host(context.Background(), types.PublicKey{1}); !utils.IsErr(err, api.ErrHostNotFound) { + t.Fatal("unexpected error", err) + } } // TestObjectsBucket is a test that verifies whether we properly escape bucket From cd38716acb117c39c9cc10db1ca84da3690a4287 Mon Sep 17 00:00:00 2001 From: Christopher Tarry Date: Tue, 1 Oct 2024 13:37:17 -0400 Subject: [PATCH 203/708] fixes for type changes --- api/prometheus.go | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/api/prometheus.go b/api/prometheus.go index 99bf159ab..566c02fa7 100644 --- a/api/prometheus.go +++ b/api/prometheus.go @@ -25,6 +25,10 @@ func (c ConsensusState) PrometheusMetric() (metrics []prometheus.Metric) { Name: "renterd_consensus_state_synced", Value: boolToFloat(c.Synced), }, + { + Name: "renterd_consensus_state_last_block_time", + Value: float64(time.Time(c.LastBlockTime).Unix()), + }, { Name: "renterd_consensus_state_chain_index_height", Value: float64(c.BlockHeight), @@ -410,18 +414,6 @@ func (host Host) PrometheusMetric() (metrics []prometheus.Metric) { }} } -func (host HostAddress) PrometheusMetric() (metrics []prometheus.Metric) { - return []prometheus.Metric{ - { - Name: "renterd_hosts_scanning", - Labels: map[string]any{ - "net_address": host.NetAddress, - "host_key": host.PublicKey.String(), - }, - Value: 1, - }} -} - func (c ContractMetadata) PrometheusMetric() (metrics []prometheus.Metric) { return []prometheus.Metric{ { @@ -433,7 +425,7 @@ func (c ContractMetadata) PrometheusMetric() (metrics []prometheus.Metric) { "siamux_addr": c.SiamuxAddr, "contract_price": c.ContractPrice.Siacoins(), }, - Value: c.TotalCost.Siacoins(), + Value: c.InitialRenterFunds.Siacoins(), }} } @@ -511,10 +503,6 @@ func formatSettingsMetricName(gp GougingParams, name string) (metrics []promethe Name: fmt.Sprintf("renterd_%s_redundancy_settings_totalshards", name), Value: float64(gp.RedundancySettings.TotalShards), }) - metrics = append(metrics, prometheus.Metric{ - Name: fmt.Sprintf("renterd_%s_transactionfee", name), - Value: gp.TransactionFee.Siacoins(), - }) return } From b563366f8efb35d42ee8c4d13ec6487a0421cfae Mon Sep 17 00:00:00 2001 From: Christopher Tarry Date: Tue, 1 Oct 2024 16:10:55 -0400 Subject: [PATCH 204/708] update routes --- alerts/prometheus.go | 10 +++++++++- api/prometheus.go | 8 ++------ bus/routes.go | 37 +++++++++++++++++++------------------ worker/worker.go | 6 +++--- 4 files changed, 33 insertions(+), 28 deletions(-) diff --git a/alerts/prometheus.go b/alerts/prometheus.go index 935e2a4df..f1d60b7c3 100644 --- a/alerts/prometheus.go +++ b/alerts/prometheus.go @@ -2,7 +2,7 @@ package alerts import "go.sia.tech/renterd/internal/prometheus" -// PrometheusMetric returns Prometheus samples for the hosts alerts. +// PrometheusMetric implements prometheus.Marshaller. func (a Alert) PrometheusMetric() (metrics []prometheus.Metric) { metrics = append(metrics, prometheus.Metric{ Name: "renterd_alert", @@ -16,3 +16,11 @@ func (a Alert) PrometheusMetric() (metrics []prometheus.Metric) { }) return } + +// PrometheusMetric implements prometheus.Marshaller. +func (a AlertsResponse) PrometheusMetric() (metrics []prometheus.Metric) { + for _, alert := range a.Alerts { + metrics = append(metrics, alert.PrometheusMetric()...) + } + return +} diff --git a/api/prometheus.go b/api/prometheus.go index 566c02fa7..36357d061 100644 --- a/api/prometheus.go +++ b/api/prometheus.go @@ -544,14 +544,10 @@ func (sb SlabBuffersResp) PrometheusMetric() (metrics []prometheus.Metric) { }} } -// SlabBuffersResp represents multiple `ObjectMetadata`s. Its prometheus encoding -// is a summary of the count and average health of slab buffers. -type SearchObjectsResp []ObjectMetadata - -func (so SearchObjectsResp) PrometheusMetric() (metrics []prometheus.Metric) { +func (or ObjectsResponse) PrometheusMetric() (metrics []prometheus.Metric) { unavailableObjs := 0 avgHealth := float64(0.0) - for _, obj := range so { + for _, obj := range or.Objects { if obj.Health == 0 { unavailableObjs += 1 } diff --git a/bus/routes.go b/bus/routes.go index 33cf0a7aa..7b1c46eee 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -15,6 +15,7 @@ import ( rhpv2 "go.sia.tech/core/rhp/v2" + "go.sia.tech/renterd/internal/prometheus" rhp3 "go.sia.tech/renterd/internal/rhp/v3" "go.sia.tech/renterd/stores/sql" @@ -138,7 +139,7 @@ func (b *Bus) consensusAcceptBlock(jc jape.Context) { } func (b *Bus) syncerAddrHandler(jc jape.Context) { - jc.Encode(b.s.Addr()) + api.WriteResponse(jc, api.SyncerAddrResp(b.s.Addr())) } func (b *Bus) syncerPeersHandler(jc jape.Context) { @@ -146,7 +147,7 @@ func (b *Bus) syncerPeersHandler(jc jape.Context) { for _, p := range b.s.Peers() { peers = append(peers, p.String()) } - jc.Encode(peers) + api.WriteResponse(jc, api.SyncerPeersResp(peers)) } func (b *Bus) syncerConnectHandler(jc jape.Context) { @@ -162,7 +163,7 @@ func (b *Bus) consensusStateHandler(jc jape.Context) { if jc.Check("couldn't fetch consensus state", err) != nil { return } - jc.Encode(cs) + api.WriteResponse(jc, cs) } func (b *Bus) consensusNetworkHandler(jc jape.Context) { @@ -172,11 +173,11 @@ func (b *Bus) consensusNetworkHandler(jc jape.Context) { } func (b *Bus) txpoolFeeHandler(jc jape.Context) { - jc.Encode(b.cm.RecommendedFee()) + api.WriteResponse(jc, api.TxPoolFeeResp{b.cm.RecommendedFee()}) } func (b *Bus) txpoolTransactionsHandler(jc jape.Context) { - jc.Encode(b.cm.PoolTransactions()) + api.WriteResponse(jc, api.TxPoolTxResp(b.cm.PoolTransactions())) } func (b *Bus) txpoolBroadcastHandler(jc jape.Context) { @@ -198,7 +199,7 @@ func (b *Bus) bucketsHandlerGET(jc jape.Context) { if jc.Check("couldn't list buckets", err) != nil { return } - jc.Encode(resp) + api.WriteResponse(jc, prometheus.Slice(resp)) } func (b *Bus) bucketsHandlerPOST(jc jape.Context) { @@ -262,7 +263,7 @@ func (b *Bus) walletHandler(jc jape.Context) { return } - jc.Encode(api.WalletResponse{ + api.WriteResponse(jc, api.WalletResponse{ Balance: balance, Address: address, ScanHeight: b.w.Tip().Height, @@ -522,7 +523,7 @@ func (b *Bus) hostsHandlerPOST(jc jape.Context) { if jc.Check(fmt.Sprintf("couldn't fetch hosts %d-%d", req.Offset, req.Offset+req.Limit), err) != nil { return } - jc.Encode(hosts) + api.WriteResponse(jc, prometheus.Slice(hosts)) } func (b *Bus) hostsRemoveHandlerPOST(jc jape.Context) { @@ -600,7 +601,7 @@ func (b *Bus) contractsSpendingHandlerPOST(jc jape.Context) { func (b *Bus) hostsAllowlistHandlerGET(jc jape.Context) { allowlist, err := b.hs.HostAllowlist(jc.Request.Context()) if jc.Check("couldn't load allowlist", err) == nil { - jc.Encode(allowlist) + api.WriteResponse(jc, api.AllowListResp(allowlist)) } } @@ -620,7 +621,7 @@ func (b *Bus) hostsAllowlistHandlerPUT(jc jape.Context) { func (b *Bus) hostsBlocklistHandlerGET(jc jape.Context) { blocklist, err := b.hs.HostBlocklist(jc.Request.Context()) if jc.Check("couldn't load blocklist", err) == nil { - jc.Encode(blocklist) + api.WriteResponse(jc, api.BlockListResp(blocklist)) } } @@ -661,7 +662,7 @@ func (b *Bus) contractsHandlerGET(jc jape.Context) { FilterMode: filterMode, }) if jc.Check("couldn't load contracts", err) == nil { - jc.Encode(contracts) + api.WriteResponse(jc, prometheus.Slice(contracts)) } } @@ -919,7 +920,7 @@ func (b *Bus) contractsPrunableDataHandlerGET(jc jape.Context) { return contracts[i].Prunable > contracts[j].Prunable }) - jc.Encode(api.ContractsPrunableDataResponse{ + api.WriteResponse(jc, api.ContractsPrunableDataResponse{ Contracts: contracts, TotalPrunable: totalPrunable, TotalSize: totalSize, @@ -1171,7 +1172,7 @@ func (b *Bus) objectsHandlerGET(jc jape.Context) { } else if jc.Check("failed to query objects", err) != nil { return } - jc.Encode(resp) + api.WriteResponse(jc, resp) } func (b *Bus) objectHandlerPUT(jc jape.Context) { @@ -1269,7 +1270,7 @@ func (b *Bus) slabbuffersHandlerGET(jc jape.Context) { if jc.Check("couldn't get slab buffers info", err) != nil { return } - jc.Encode(buffers) + api.WriteResponse(jc, api.SlabBuffersResp(buffers)) } func (b *Bus) objectsStatshandlerGET(jc jape.Context) { @@ -1628,7 +1629,7 @@ func (b *Bus) paramsHandlerUploadGET(jc jape.Context) { uploadPacking = us.Packing.Enabled } - jc.Encode(api.UploadParams{ + api.WriteResponse(jc, api.UploadParams{ ContractSet: contractSet, CurrentHeight: b.cm.TipState().Index.Height, GougingParams: gp, @@ -1660,7 +1661,7 @@ func (b *Bus) paramsHandlerGougingGET(jc jape.Context) { if jc.Check("could not get gouging parameters", err) != nil { return } - jc.Encode(gp) + api.WriteResponse(jc, gp) } func (b *Bus) gougingParams(ctx context.Context) (api.GougingParams, error) { @@ -1720,7 +1721,7 @@ func (b *Bus) handleGETAlerts(jc jape.Context) { if jc.Check("failed to fetch alerts", err) != nil { return } - jc.Encode(ar) + api.WriteResponse(jc, ar) } func (b *Bus) handlePOSTAlertsDismiss(jc jape.Context) { @@ -1855,7 +1856,7 @@ func (b *Bus) contractTaxHandlerGET(jc jape.Context) { } func (b *Bus) stateHandlerGET(jc jape.Context) { - jc.Encode(api.BusStateResponse{ + api.WriteResponse(jc, api.BusStateResponse{ StartTime: api.TimeRFC3339(b.startTime), BuildState: api.BuildState{ Version: build.Version(), diff --git a/worker/worker.go b/worker/worker.go index 9ff193b6d..074680cf2 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -445,7 +445,7 @@ func (w *Worker) downloadsStatsHandlerGET(jc jape.Context) { }) // encode response - jc.Encode(api.DownloadStatsResponse{ + api.WriteResponse(jc, api.DownloadStatsResponse{ AvgDownloadSpeedMBPS: math.Ceil(stats.avgDownloadSpeedMBPS*100) / 100, AvgOverdrivePct: math.Floor(stats.avgOverdrivePct*100*100) / 100, HealthyDownloaders: healthy, @@ -470,7 +470,7 @@ func (w *Worker) uploadsStatsHandlerGET(jc jape.Context) { }) // encode response - jc.Encode(api.UploadStatsResponse{ + api.WriteResponse(jc, api.UploadStatsResponse{ AvgSlabUploadSpeedMBPS: math.Ceil(stats.avgSlabUploadSpeedMBPS*100) / 100, AvgOverdrivePct: math.Floor(stats.avgOverdrivePct*100*100) / 100, HealthyUploaders: stats.healthyUploaders, @@ -829,7 +829,7 @@ func (w *Worker) idHandlerGET(jc jape.Context) { } func (w *Worker) memoryGET(jc jape.Context) { - jc.Encode(api.MemoryResponse{ + api.WriteResponse(jc, api.MemoryResponse{ Download: w.downloadManager.mm.Status(), Upload: w.uploadManager.mm.Status(), }) From 47327ad418b544ca6739cd424e5a854257cf2827 Mon Sep 17 00:00:00 2001 From: Christopher Tarry Date: Tue, 1 Oct 2024 16:35:51 -0400 Subject: [PATCH 205/708] add api/utils.go --- api/utils.go | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 api/utils.go diff --git a/api/utils.go b/api/utils.go new file mode 100644 index 000000000..830f236da --- /dev/null +++ b/api/utils.go @@ -0,0 +1,37 @@ +package api + +import ( + "fmt" + "net/http" + + "go.sia.tech/jape" + "go.sia.tech/renterd/internal/prometheus" +) + +func WriteResponse(jc jape.Context, resp prometheus.Marshaller) { + if resp == nil { + return + } + + var responseFormat string + if jc.Check("failed to decode form", jc.DecodeForm("response", &responseFormat)) != nil { + return + } + switch responseFormat { + case "prometheus": + enc := prometheus.NewEncoder(jc.ResponseWriter) + + v, ok := resp.(prometheus.Marshaller) + if !ok { + jc.Error(fmt.Errorf("type %T is not prometheus marshallable", resp), http.StatusInternalServerError) + return + } + + if jc.Check("failed to marshal prometheus response", enc.Append(v)) != nil { + return + } + + default: + jc.Encode(resp) + } +} From 2db484d67dd63fc8517a160162cdd216ca8f66b0 Mon Sep 17 00:00:00 2001 From: Christopher Tarry Date: Tue, 1 Oct 2024 16:57:37 -0400 Subject: [PATCH 206/708] fix lint --- bus/routes.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bus/routes.go b/bus/routes.go index 7b1c46eee..b649b685f 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -173,7 +173,7 @@ func (b *Bus) consensusNetworkHandler(jc jape.Context) { } func (b *Bus) txpoolFeeHandler(jc jape.Context) { - api.WriteResponse(jc, api.TxPoolFeeResp{b.cm.RecommendedFee()}) + api.WriteResponse(jc, api.TxPoolFeeResp{Currency: b.cm.RecommendedFee()}) } func (b *Bus) txpoolTransactionsHandler(jc jape.Context) { From e52902d497695cf8c137026457d8d7fa842522f4 Mon Sep 17 00:00:00 2001 From: Christopher Tarry Date: Tue, 1 Oct 2024 20:07:07 -0400 Subject: [PATCH 207/708] add MarshalJSON on marshallerSlice --- alerts/prometheus.go | 4 +--- internal/prometheus/encoder.go | 5 +++++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/alerts/prometheus.go b/alerts/prometheus.go index f1d60b7c3..ca90537c7 100644 --- a/alerts/prometheus.go +++ b/alerts/prometheus.go @@ -19,8 +19,6 @@ func (a Alert) PrometheusMetric() (metrics []prometheus.Metric) { // PrometheusMetric implements prometheus.Marshaller. func (a AlertsResponse) PrometheusMetric() (metrics []prometheus.Metric) { - for _, alert := range a.Alerts { - metrics = append(metrics, alert.PrometheusMetric()...) - } + metrics = prometheus.Slice(a.Alerts).PrometheusMetric() return } diff --git a/internal/prometheus/encoder.go b/internal/prometheus/encoder.go index 26a56e628..695a3aaa6 100644 --- a/internal/prometheus/encoder.go +++ b/internal/prometheus/encoder.go @@ -1,6 +1,7 @@ package prometheus import ( + "encoding/json" "fmt" "io" "strings" @@ -23,6 +24,10 @@ func (s marshallerSlice[M]) PrometheusMetric() []Metric { return metrics } +func (s marshallerSlice[M]) MarshalJSON() ([]byte, error) { + return json.Marshal(s.slice) +} + // Slice converts a slice of Prometheus marshallable objects into a // slice of prometheus.Marshallers. func Slice[T Marshaller](s []T) Marshaller { From d6e610274f7e68d02eee69ec74f72af89fd6009a Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 1 Oct 2024 16:15:51 +0200 Subject: [PATCH 208/708] bus: remove latest hosts --- bus/routes.go | 10 +- internal/sql/migrations.go | 6 + internal/test/e2e/cluster_test.go | 108 ++++++++++++--- internal/test/e2e/migrations_test.go | 9 +- object/slab.go | 5 +- stores/bench_test.go | 4 +- stores/metadata_test.go | 68 ++++------ stores/sql/database.go | 4 +- stores/sql/main.go | 33 +---- stores/sql/mysql/main.go | 16 +-- .../main/migration_00024_latest_host.sql | 1 + stores/sql/mysql/migrations/main/schema.sql | 1 - stores/sql/sqlite/main.go | 16 +-- .../main/migration_00024_latest_host.sql | 1 + stores/sql/sqlite/migrations/main/schema.sql | 2 +- worker/download.go | 124 +++++++++++------- worker/migrations.go | 8 +- worker/mocks_test.go | 3 - worker/upload.go | 38 ++++-- worker/upload_test.go | 51 +++++-- 20 files changed, 311 insertions(+), 197 deletions(-) create mode 100644 stores/sql/mysql/migrations/main/migration_00024_latest_host.sql create mode 100644 stores/sql/sqlite/migrations/main/migration_00024_latest_host.sql diff --git a/bus/routes.go b/bus/routes.go index 33cf0a7aa..4f9667d9f 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -551,7 +551,10 @@ func (b *Bus) hostsPubkeyHandlerGET(jc jape.Context) { return } host, err := b.hs.Host(jc.Request.Context(), hostKey) - if jc.Check("couldn't load host", err) == nil { + if errors.Is(err, api.ErrHostNotFound) { + jc.Error(err, http.StatusNotFound) + return + } else if jc.Check("couldn't load host", err) == nil { jc.Encode(host) } } @@ -1018,12 +1021,13 @@ func (b *Bus) contractIDRenewHandlerPOST(jc jape.Context) { // validate the request if rrr.EndHeight == 0 { http.Error(jc.ResponseWriter, "EndHeight can not be zero", http.StatusBadRequest) + return } else if rrr.ExpectedNewStorage == 0 { http.Error(jc.ResponseWriter, "ExpectedNewStorage can not be zero", http.StatusBadRequest) + return } else if rrr.MaxFundAmount.IsZero() { http.Error(jc.ResponseWriter, "MaxFundAmount can not be zero", http.StatusBadRequest) - } else if rrr.MinNewCollateral.IsZero() { - http.Error(jc.ResponseWriter, "MinNewCollateral can not be zero", http.StatusBadRequest) + return } else if rrr.RenterFunds.IsZero() { http.Error(jc.ResponseWriter, "RenterFunds can not be zero", http.StatusBadRequest) return diff --git a/internal/sql/migrations.go b/internal/sql/migrations.go index 167e60cb5..bc51dca61 100644 --- a/internal/sql/migrations.go +++ b/internal/sql/migrations.go @@ -255,6 +255,12 @@ var ( return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00023_key_prefix", log) }, }, + { + ID: "00024_latest_host", + Migrate: func(tx Tx) error { + return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00024_latest_host", log) + }, + }, } } MetricsMigrations = func(ctx context.Context, migrationsFs embed.FS, log *zap.SugaredLogger) []Migration { diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 7a4fe92f0..7aed6ffb7 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -730,9 +730,7 @@ func TestUploadDownloadBasic(t *testing.T) { t.Fatal("wrong amount of shards", len(slab.Shards), test.RedundancySettings.TotalShards) } for _, shard := range slab.Shards { - if shard.LatestHost == (types.PublicKey{}) { - t.Fatal("latest host should be set") - } else if len(shard.Contracts) != 1 { + if len(shard.Contracts) != 1 { t.Fatal("each shard should have a host") } else if _, found := roots[shard.Root]; found { t.Fatal("each root should only exist once per slab") @@ -1439,6 +1437,7 @@ func TestUploadDownloadSameHost(t *testing.T) { // upload 3 objects so every host has 3 sectors var err error + var hk types.PublicKey var res api.Object shards := make(map[types.PublicKey][]object.Sector) for i := 0; i < 3; i++ { @@ -1449,7 +1448,10 @@ func TestUploadDownloadSameHost(t *testing.T) { res, err = b.Object(context.Background(), testBucket, fmt.Sprintf("foo_%d", i), api.GetObjectOptions{}) tt.OK(err) for _, shard := range res.Object.Slabs[0].Shards { - shards[shard.LatestHost] = append(shards[shard.LatestHost], shard) + for hk = range shard.Contracts { + shards[hk] = append(shards[hk], shard) + break + } } // delete the object @@ -1464,7 +1466,7 @@ func TestUploadDownloadSameHost(t *testing.T) { time.Sleep(time.Second) // build a frankenstein object constructed with all sectors on the same host - res.Object.Slabs[0].Shards = shards[res.Object.Slabs[0].Shards[0].LatestHost] + res.Object.Slabs[0].Shards = shards[hk] tt.OK(b.AddObject(context.Background(), testBucket, "frankenstein", test.ContractSet, *res.Object, api.AddObjectOptions{})) // assert we can download this object @@ -2703,47 +2705,119 @@ func TestHostScan(t *testing.T) { } } -// TestDownloadAllHosts makes sure we try to download sectors, -// from all hosts that a sector is stored on and not just the latestHost. +// TestDownloadAllHosts makes sure we try to download sectors, from all hosts +// that a sector is stored on. func TestDownloadAllHosts(t *testing.T) { if testing.Short() { t.SkipNow() } + // get rid of redundancy + rs := test.RedundancySettings + rs.MinShards = rs.TotalShards + // create a test cluster cluster := newTestCluster(t, testClusterOptions{ - hosts: test.RedundancySettings.TotalShards, + logger: zap.NewNop(), // newTestLoggerCustom(zapcore.ErrorLevel), + hosts: rs.TotalShards, uploadPacking: false, // make sure data is uploaded }) defer cluster.Shutdown() + b := cluster.Bus w := cluster.Worker tt := cluster.tt + // update redundancy settings + us, err := b.UploadSettings(context.Background()) + tt.OK(err) + us.Redundancy = rs + tt.OK(b.UpdateUploadSettings(context.Background(), us)) + // prepare a file data := make([]byte, 128) tt.OKAll(frand.Read(data)) // upload the data path := fmt.Sprintf("data_%v", len(data)) - tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), api.DefaultBucketName, path, api.UploadObjectOptions{})) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), testBucket, path, api.UploadObjectOptions{})) // fetch object - obj, err := cluster.Bus.Object(context.Background(), api.DefaultBucketName, path, api.GetObjectOptions{}) + obj, err := cluster.Bus.Object(context.Background(), testBucket, path, api.GetObjectOptions{}) tt.OK(err) - // update the LatestHost field to hosts we don't have - // contracts with - for i, slab := range obj.Object.Slabs { - for j := range slab.Shards { - frand.Read(obj.Object.Slabs[i].Shards[j].LatestHost[:]) + // build used hosts + usedHosts := make(map[types.PublicKey]struct{}) + for _, s := range obj.Object.Slabs { + for _, ss := range s.Shards { + for hk := range ss.Contracts { + usedHosts[hk] = struct{}{} + } } } - tt.OK(cluster.Bus.AddObject(context.Background(), api.DefaultBucketName, path, test.ContractSet, *obj.Object.Object, api.AddObjectOptions{})) + if len(usedHosts) != rs.TotalShards { + t.Fatalf("unexpected number of used hosts %d", len(usedHosts)) + } + + // add a host + cluster.AddHosts(1) + + // grab random used host + var randomHost string + for _, host := range cluster.hosts { + if _, used := usedHosts[host.PublicKey()]; used { + randomHost = host.settings.Settings().NetAddress + break + } + } + + // add it to the blocklist + tt.OK(b.UpdateHostBlocklist(context.Background(), []string{randomHost}, nil, false)) + + // wait until we migrated away from that host + var newHost types.PublicKey + tt.Retry(100, 100*time.Millisecond, func() error { + obj, err := cluster.Bus.Object(context.Background(), testBucket, path, api.GetObjectOptions{}) + tt.OK(err) + for _, s := range obj.Object.Slabs { + for _, ss := range s.Shards { + for hk := range ss.Contracts { + if _, used := usedHosts[hk]; !used { + newHost = hk + return nil + } + } + } + } + return errors.New("no migration took place") + }) // download the object dst := new(bytes.Buffer) - tt.OK(cluster.Worker.DownloadObject(context.Background(), dst, api.DefaultBucketName, path, api.DownloadObjectOptions{})) + tt.OK(cluster.Worker.DownloadObject(context.Background(), dst, testBucket, path, api.DownloadObjectOptions{})) + if !bytes.Equal(dst.Bytes(), data) { + t.Fatal("data mismatch") + } + + // block the new host but unblock the old one + for _, host := range cluster.hosts { + if host.PublicKey() == newHost { + tt.OK(b.UpdateHostBlocklist(context.Background(), []string{host.settings.Settings().NetAddress}, []string{randomHost}, false)) + } + } + + // gouge prices on the new host + for _, host := range cluster.hosts { + if host.PublicKey() == newHost { + settings := host.settings.Settings() + settings.StoragePrice = types.Siacoins(1e3) + tt.OK(host.UpdateSettings(settings)) + } + } + + // download the object + dst = new(bytes.Buffer) + tt.OK(cluster.Worker.DownloadObject(context.Background(), dst, testBucket, path, api.DownloadObjectOptions{})) if !bytes.Equal(dst.Bytes(), data) { t.Fatal("data mismatch") } diff --git a/internal/test/e2e/migrations_test.go b/internal/test/e2e/migrations_test.go index 95a7804ee..0d665a1f5 100644 --- a/internal/test/e2e/migrations_test.go +++ b/internal/test/e2e/migrations_test.go @@ -50,7 +50,10 @@ func TestMigrations(t *testing.T) { used := make(map[types.PublicKey]struct{}) for _, slab := range res.Object.Slabs { for _, sector := range slab.Shards { - used[sector.LatestHost] = struct{}{} + for hk := range sector.Contracts { + used[hk] = struct{}{} + break + } } } return used @@ -93,9 +96,7 @@ func TestMigrations(t *testing.T) { hosts := make(map[types.PublicKey]struct{}) roots := make(map[types.Hash256]struct{}) for _, shard := range slab.Shards { - if shard.LatestHost == (types.PublicKey{}) { - t.Fatal("latest host should be set") - } else if len(shard.Contracts) == 0 { + if len(shard.Contracts) == 0 { t.Fatal("each shard should have > 0 hosts") } for hpk, contracts := range shard.Contracts { diff --git a/object/slab.go b/object/slab.go index 04c8cf264..523cc0e69 100644 --- a/object/slab.go +++ b/object/slab.go @@ -13,9 +13,8 @@ import ( // A Sector uniquely identifies a sector stored on a particular host. type Sector struct { - Contracts map[types.PublicKey][]types.FileContractID `json:"contracts"` - LatestHost types.PublicKey `json:"latestHost"` - Root types.Hash256 `json:"root"` + Contracts map[types.PublicKey][]types.FileContractID `json:"contracts"` + Root types.Hash256 `json:"root"` } // A Slab is raw data that has been erasure-encoded into sector-sized shards, diff --git a/stores/bench_test.go b/stores/bench_test.go index 25815f563..47ffa2de2 100644 --- a/stores/bench_test.go +++ b/stores/bench_test.go @@ -92,7 +92,7 @@ INSERT INTO slabs (created_at, `+"`key`"+`) VALUES (?, ?)`, time.Now(), sql.Encr // insert sectors insertSectorStmt, err := db.Prepare(context.Background(), ` -INSERT INTO sectors (db_slab_id, slab_index, latest_host, root) VALUES (?, ?, ?, ?) RETURNING id`) +INSERT INTO sectors (db_slab_id, slab_index, root) VALUES (?, ?, ?) RETURNING id`) if err != nil { return nil, fmt.Errorf("failed to prepare statement to insert sector: %w", err) } @@ -101,7 +101,7 @@ INSERT INTO sectors (db_slab_id, slab_index, latest_host, root) VALUES (?, ?, ?, for i := 0; i < n; i++ { var sectorID int64 roots = append(roots, frand.Entropy256()) - err := insertSectorStmt.QueryRow(context.Background(), slabID, i, sql.PublicKey(hk), sql.Hash256(roots[i])).Scan(§orID) + err := insertSectorStmt.QueryRow(context.Background(), slabID, i, sql.Hash256(roots[i])).Scan(§orID) if err != nil { return nil, fmt.Errorf("failed to insert sector: %w", err) } diff --git a/stores/metadata_test.go b/stores/metadata_test.go index 9bd9e3b35..3975cd794 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -754,8 +754,7 @@ func TestSQLMetadataStore(t *testing.T) { MinShards: 1, Shards: []object.Sector{ { - LatestHost: hk1, - Root: types.Hash256{1}, + Root: types.Hash256{1}, Contracts: map[types.PublicKey][]types.FileContractID{ hk1: {fcid1}, }, @@ -772,8 +771,7 @@ func TestSQLMetadataStore(t *testing.T) { MinShards: 2, Shards: []object.Sector{ { - LatestHost: hk2, - Root: types.Hash256{2}, + Root: types.Hash256{2}, Contracts: map[types.PublicKey][]types.FileContractID{ hk2: {fcid2}, }, @@ -828,8 +826,7 @@ func TestSQLMetadataStore(t *testing.T) { Contracts: map[types.PublicKey][]types.FileContractID{ hk1: {fcid1}, }, - LatestHost: hk1, - Root: types.Hash256{1}, + Root: types.Hash256{1}, }, }, } @@ -851,8 +848,7 @@ func TestSQLMetadataStore(t *testing.T) { Contracts: map[types.PublicKey][]types.FileContractID{ hk2: {fcid2}, }, - LatestHost: hk2, - Root: types.Hash256{2}, + Root: types.Hash256{2}, }, }, } @@ -1852,14 +1848,12 @@ func TestContractSectors(t *testing.T) { // create two objects obj1 := newTestObject(1) obj1.Slabs[0].Shards[0].Contracts = map[types.PublicKey][]types.FileContractID{hks[0]: {fcids[0]}} - obj1.Slabs[0].Shards[1].LatestHost = hks[0] if _, err := ss.addTestObject(t.Name()+"_1", obj1); err != nil { t.Fatal(err) } obj2 := newTestObject(1) obj2.Slabs[0].Shards[0].Contracts = map[types.PublicKey][]types.FileContractID{hks[1]: {fcids[1]}} - obj2.Slabs[0].Shards[1].LatestHost = hks[1] if _, err := ss.addTestObject(t.Name()+"_2", obj2); err != nil { t.Fatal(err) } @@ -1970,6 +1964,12 @@ func TestUpdateSlab(t *testing.T) { return } + fcidToHks := map[types.FileContractID]types.PublicKey{ + fcid1: hk1, + fcid2: hk2, + fcid3: hk3, + } + // fetch inserted slab inserted := fetchSlab() @@ -1977,7 +1977,7 @@ func TestUpdateSlab(t *testing.T) { for i := 0; i < 2; i++ { if cids := contractIds(types.Hash256(inserted.Shards[i].Root)); len(cids) != 1 { t.Fatalf("sector %d was uploaded to unexpected amount of contracts, %v!=1", i+1, len(cids)) - } else if inserted.Shards[i].LatestHost != hks[i] { + } else if hk, ok := fcidToHks[cids[0]]; !ok || hk != hks[i] { t.Fatalf("sector %d was uploaded to unexpected amount of hosts, %v!=1", i+1, len(hks)) } } @@ -2018,8 +2018,6 @@ func TestUpdateSlab(t *testing.T) { t.Fatalf("sector 1 was uploaded to unexpected amount of contracts, %v!=1", len(cids)) } else if types.FileContractID(cids[0]) != fcid1 { t.Fatal("sector 1 was uploaded to unexpected contract", cids[0]) - } else if updated.Shards[0].LatestHost != hks[0] { - t.Fatal("host key was invalid", updated.Shards[0].LatestHost, sql.PublicKey(hks[0])) } else if hks[0] != hk1 { t.Fatal("sector 1 was uploaded to unexpected host", hks[0]) } @@ -2029,8 +2027,6 @@ func TestUpdateSlab(t *testing.T) { t.Fatalf("sector 1 was uploaded to unexpected amount of contracts, %v!=2", len(cids)) } else if types.FileContractID(cids[0]) != fcid2 || types.FileContractID(cids[1]) != fcid3 { t.Fatal("sector 1 was uploaded to unexpected contracts", cids[0], cids[1]) - } else if updated.Shards[0].LatestHost != hks[0] { - t.Fatal("host key was invalid", updated.Shards[0].LatestHost, sql.PublicKey(hks[0])) } // assert there's still only one entry in the dbslab table @@ -3353,11 +3349,8 @@ func TestDeleteHostSector(t *testing.T) { MinShards: 1, Shards: []object.Sector{ { - Contracts: map[types.PublicKey][]types.FileContractID{ - hk1: fcids, - }, - Root: root, - LatestHost: hk1, + Contracts: map[types.PublicKey][]types.FileContractID{hk1: fcids}, + Root: root, }, }, }) @@ -3404,20 +3397,19 @@ func TestDeleteHostSector(t *testing.T) { // helper to fetch sectors type sector struct { - LatestHost types.PublicKey - Root types.Hash256 - SlabID int64 + Root types.Hash256 + SlabID int64 } fetchSectors := func() (sectors []sector) { t.Helper() - rows, err := ss.DB().Query(context.Background(), "SELECT root, latest_host, db_slab_id FROM sectors") + rows, err := ss.DB().Query(context.Background(), "SELECT root, db_slab_id FROM sectors") if err != nil { t.Fatal(err) } defer rows.Close() for rows.Next() { var s sector - if err := rows.Scan((*sql.PublicKey)(&s.Root), (*sql.Hash256)(&s.LatestHost), &s.SlabID); err != nil { + if err := rows.Scan((*sql.PublicKey)(&s.Root), &s.SlabID); err != nil { t.Fatal(err) } sectors = append(sectors, s) @@ -3430,8 +3422,6 @@ func TestDeleteHostSector(t *testing.T) { t.Fatal("expected 1 sector", len(sectors)) } else if cnt := sectorContractCnt(types.Hash256(sectors[0].Root)); cnt != 2 { t.Fatal("expected 2 contracts", cnt) - } else if sectors[0].LatestHost != hk2 { - t.Fatalf("expected latest host to be hk2, got %v", sectors[0].LatestHost) } else if sectors[0].SlabID != slabID { t.Fatalf("expected slab id to be %v, got %v", slabID, sectors[0].SlabID) } @@ -3474,8 +3464,6 @@ func TestDeleteHostSector(t *testing.T) { t.Fatal("expected 1 sector", len(sectors)) } else if cnt := sectorContractCnt(types.Hash256(sectors[0].Root)); cnt != 0 { t.Fatal("expected 0 contracts", cnt) - } else if sector := sectors[0]; sector.LatestHost != [32]byte{} { - t.Fatal("expected latest host to be empty", sector.LatestHost) } else if sectors[0].SlabID != slabID { t.Fatalf("expected slab id to be %v, got %v", slabID, sectors[0].SlabID) } @@ -3489,7 +3477,6 @@ func newTestShards(hk types.PublicKey, fcid types.FileContractID, root types.Has func newTestShard(hk types.PublicKey, fcid types.FileContractID, root types.Hash256) object.Sector { return object.Sector{ - LatestHost: hk, Contracts: map[types.PublicKey][]types.FileContractID{ hk: {fcid}, }, @@ -4152,8 +4139,7 @@ func TestUpdateObjectReuseSlab(t *testing.T) { fcids[i*totalShards+j], }, }, - LatestHost: hks[i*totalShards+j], - Root: frand.Entropy256(), + Root: frand.Entropy256(), }) } } @@ -4225,21 +4211,20 @@ func TestUpdateObjectReuseSlab(t *testing.T) { // helper to fetch sectors type sector struct { - ID int64 - SlabID int64 - LatestHost types.PublicKey - Root types.Hash256 + ID int64 + SlabID int64 + Root types.Hash256 } fetchSectorsBySlabID := func(slabID int64) (sectors []sector) { t.Helper() - rows, err := ss.DB().Query(context.Background(), "SELECT id, db_slab_id, root, latest_host FROM sectors WHERE db_slab_id = ?", slabID) + rows, err := ss.DB().Query(context.Background(), "SELECT id, db_slab_id, root FROM sectors WHERE db_slab_id = ?", slabID) if err != nil { t.Fatal(err) } defer rows.Close() for rows.Next() { var s sector - if err := rows.Scan(&s.ID, &s.SlabID, (*sql.PublicKey)(&s.Root), (*sql.Hash256)(&s.LatestHost)); err != nil { + if err := rows.Scan(&s.ID, &s.SlabID, (*sql.PublicKey)(&s.Root)); err != nil { t.Fatal(err) } sectors = append(sectors, s) @@ -4304,8 +4289,6 @@ func TestUpdateObjectReuseSlab(t *testing.T) { t.Fatal("invalid id", sector.ID) } else if sector.SlabID != int64(slab.ID) { t.Fatal("invalid slab id", sector.SlabID) - } else if sector.LatestHost != hks[i*totalShards+j] { - t.Fatal("invalid host") } else if sector.Root != obj.Slabs[i].Shards[j].Root { t.Fatal("invalid root") } @@ -4332,8 +4315,7 @@ func TestUpdateObjectReuseSlab(t *testing.T) { fcids[len(obj.Slabs)*totalShards+i], }, }, - LatestHost: hks[len(obj.Slabs)*totalShards+i], - Root: frand.Entropy256(), + Root: frand.Entropy256(), }) } // add the second slab of the first object too @@ -4407,8 +4389,6 @@ func TestUpdateObjectReuseSlab(t *testing.T) { t.Fatal("invalid id", sector.ID) } else if sector.SlabID != int64(slab2.ID) { t.Fatal("invalid slab id", sector.SlabID) - } else if sector.LatestHost != hks[(len(obj.Slabs))*totalShards+j] { - t.Fatal("invalid host") } else if sector.Root != obj2.Slabs[0].Shards[j].Root { t.Fatal("invalid root") } diff --git a/stores/sql/database.go b/stores/sql/database.go index 717fc39e6..1c698caac 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -141,8 +141,7 @@ type ( // DeleteHostSector deletes all contract sector links that a host has // with the given root incrementing the lost sector count in the - // process. If another contract with a different host exists that - // contains the root, latest_host is updated to that host. + // process. DeleteHostSector(ctx context.Context, hk types.PublicKey, root types.Hash256) (int, error) // DeleteObject deletes an object from the database and returns true if @@ -356,7 +355,6 @@ type ( // UpdateSlab updates the slab in the database. That includes the following: // - Optimistically set health to 100% // - Invalidate health_valid_until - // - Update LatestHost for every shard // The operation is not allowed to update the number of shards // associated with a slab or the root/slabIndex of any shard. UpdateSlab(ctx context.Context, s object.Slab, contractSet string, usedContracts []types.FileContractID) error diff --git a/stores/sql/main.go b/stores/sql/main.go index 314249a8a..cd7d62f57 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -518,25 +518,6 @@ func DeleteBucket(ctx context.Context, tx sql.Tx, bucket string) error { } func DeleteHostSector(ctx context.Context, tx sql.Tx, hk types.PublicKey, root types.Hash256) (int, error) { - // update the latest_host field of the sector - _, err := tx.Exec(ctx, ` - UPDATE sectors - SET latest_host = COALESCE(( - SELECT * FROM ( - SELECT c.host_key - FROM contracts c - INNER JOIN contract_sectors cs ON cs.db_contract_id = c.id - INNER JOIN sectors s ON s.id = cs.db_sector_id - WHERE s.root = ? AND c.host_key != ? AND c.archival_reason IS NULL - LIMIT 1 - ) AS _ - ), ?) - WHERE root = ? AND latest_host = ? - `, Hash256(root), PublicKey(hk), PublicKey{}, Hash256(root), PublicKey(hk)) - if err != nil { - return 0, fmt.Errorf("failed to update sector: %w", err) - } - // remove potential links between the host's contracts and the sector res, err := tx.Exec(ctx, ` DELETE FROM contract_sectors @@ -1924,7 +1905,7 @@ func Slab(ctx context.Context, tx sql.Tx, key object.EncryptionKey) (object.Slab // fetch sectors rows, err := tx.Query(ctx, ` - SELECT id, latest_host, root + SELECT id, root FROM sectors s WHERE s.db_slab_id = ? ORDER BY s.slab_index @@ -1938,7 +1919,7 @@ func Slab(ctx context.Context, tx sql.Tx, key object.EncryptionKey) (object.Slab for rows.Next() { var sectorID int64 var sector object.Sector - if err := rows.Scan(§orID, (*PublicKey)(§or.LatestHost), (*Hash256)(§or.Root)); err != nil { + if err := rows.Scan(§orID, (*Hash256)(§or.Root)); err != nil { return object.Slab{}, fmt.Errorf("failed to scan sector: %w", err) } slab.Shards = append(slab.Shards, sector) @@ -2334,7 +2315,7 @@ func MarkPackedSlabUploaded(ctx context.Context, tx Tx, slab api.UploadedPackedS } // stmt to add sector - sectorStmt, err := tx.Prepare(ctx, "INSERT INTO sectors (db_slab_id, slab_index, latest_host, root) VALUES (?, ?, ?, ?)") + sectorStmt, err := tx.Prepare(ctx, "INSERT INTO sectors (db_slab_id, slab_index, root) VALUES (?, ?, ?)") if err != nil { return "", fmt.Errorf("failed to prepare statement to insert sectors: %w", err) } @@ -2350,7 +2331,7 @@ func MarkPackedSlabUploaded(ctx context.Context, tx Tx, slab api.UploadedPackedS // insert shards for i := range slab.Shards { // insert shard - res, err := sectorStmt.Exec(ctx, slabID, i+1, PublicKey(slab.Shards[i].LatestHost), slab.Shards[i].Root[:]) + res, err := sectorStmt.Exec(ctx, slabID, i+1, slab.Shards[i].Root[:]) if err != nil { return "", fmt.Errorf("failed to insert sector: %w", err) } @@ -2451,7 +2432,7 @@ func Object(ctx context.Context, tx Tx, bucket, key string) (api.Object, error) // fetch slab slices rows, err = tx.Query(ctx, ` - SELECT sla.db_buffered_slab_id IS NOT NULL, sli.object_index, sli.offset, sli.length, sla.health, sla.key, sla.min_shards, COALESCE(sec.slab_index, 0), COALESCE(sec.root, ?), COALESCE(sec.latest_host, ?), COALESCE(c.fcid, ?), COALESCE(c.host_key, ?) + SELECT sla.db_buffered_slab_id IS NOT NULL, sli.object_index, sli.offset, sli.length, sla.health, sla.key, sla.min_shards, COALESCE(sec.slab_index, 0), COALESCE(sec.root, ?), COALESCE(c.fcid, ?), COALESCE(c.host_key, ?) FROM slices sli INNER JOIN slabs sla ON sli.db_slab_id = sla.id LEFT JOIN sectors sec ON sec.db_slab_id = sla.id @@ -2459,7 +2440,7 @@ func Object(ctx context.Context, tx Tx, bucket, key string) (api.Object, error) LEFT JOIN contracts c ON c.id = csec.db_contract_id WHERE sli.db_object_id = ? ORDER BY sli.object_index ASC, sec.slab_index ASC - `, Hash256{}, PublicKey{}, FileContractID{}, PublicKey{}, objID) + `, Hash256{}, FileContractID{}, PublicKey{}, objID) if err != nil { return api.Object{}, fmt.Errorf("failed to fetch slabs: %w", err) } @@ -2479,7 +2460,7 @@ func Object(ctx context.Context, tx Tx, bucket, key string) (api.Object, error) if err := rows.Scan(&bufferedSlab, // whether the slab is buffered &objectIndex, &ss.Offset, &ss.Length, // slice info &ss.Health, (*EncryptionKey)(&ss.EncryptionKey), &ss.MinShards, // slab info - &slabIndex, (*Hash256)(§or.Root), (*PublicKey)(§or.LatestHost), // sector info + &slabIndex, (*Hash256)(§or.Root), // sector info (*PublicKey)(&fcid), // contract info (*PublicKey)(&hk), // host info ); err != nil { diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index b097e28cb..0294af819 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -1169,7 +1169,6 @@ func (tx *MainDatabaseTx) UpdateSlab(ctx context.Context, s object.Slab, contrac upsertSectors = append(upsertSectors, upsertSector{ slabID, i + 1, - s.Shards[i].LatestHost, s.Shards[i].Root, }) } @@ -1195,7 +1194,6 @@ func (tx *MainDatabaseTx) UpdateSlab(ctx context.Context, s object.Slab, contrac tx.log.Named("UpdateSlab").Warn("missing contract for shard", "contract", fcid, "root", shard.Root, - "latest_host", shard.LatestHost, ) } } @@ -1340,7 +1338,6 @@ func (tx *MainDatabaseTx) insertSlabs(ctx context.Context, objID, partID *int64, upsertSectors = append(upsertSectors, upsertSector{ slabIDs[i], j + 1, - ss.Shards[j].LatestHost, ss.Shards[j].Root, }) } @@ -1366,7 +1363,6 @@ func (tx *MainDatabaseTx) insertSlabs(ctx context.Context, objID, partID *int64, tx.log.Named("InsertObject").Warn("missing contract for shard", "contract", fcid, "root", shard.Root, - "latest_host", shard.LatestHost, ) } } @@ -1411,10 +1407,9 @@ func (tx *MainDatabaseTx) upsertContractSectors(ctx context.Context, contractSec } type upsertSector struct { - slabID int64 - slabIndex int - latestHost types.PublicKey - root types.Hash256 + slabID int64 + slabIndex int + root types.Hash256 } func (tx *MainDatabaseTx) upsertSectors(ctx context.Context, sectors []upsertSector) ([]int64, error) { @@ -1424,8 +1419,8 @@ func (tx *MainDatabaseTx) upsertSectors(ctx context.Context, sectors []upsertSec // insert sectors - make sure to update last_insert_id in case of a // duplicate key to be able to retrieve the id - insertSectorStmt, err := tx.Prepare(ctx, `INSERT INTO sectors (created_at, db_slab_id, slab_index, latest_host, root) - VALUES (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE latest_host = VALUES(latest_host), id = last_insert_id(id)`) + insertSectorStmt, err := tx.Prepare(ctx, `INSERT INTO sectors (created_at, db_slab_id, slab_index, root) + VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE id = last_insert_id(id)`) if err != nil { return nil, fmt.Errorf("failed to prepare statement to insert sector: %w", err) } @@ -1444,7 +1439,6 @@ func (tx *MainDatabaseTx) upsertSectors(ctx context.Context, sectors []upsertSec time.Now(), s.slabID, s.slabIndex, - ssql.PublicKey(s.latestHost), s.root[:], ) if err != nil { diff --git a/stores/sql/mysql/migrations/main/migration_00024_latest_host.sql b/stores/sql/mysql/migrations/main/migration_00024_latest_host.sql new file mode 100644 index 000000000..9ba1c2bc1 --- /dev/null +++ b/stores/sql/mysql/migrations/main/migration_00024_latest_host.sql @@ -0,0 +1 @@ +ALTER TABLE `sectors` DROP COLUMN `latest_host`; \ No newline at end of file diff --git a/stores/sql/mysql/migrations/main/schema.sql b/stores/sql/mysql/migrations/main/schema.sql index 5694be24b..71c36840a 100644 --- a/stores/sql/mysql/migrations/main/schema.sql +++ b/stores/sql/mysql/migrations/main/schema.sql @@ -153,7 +153,6 @@ CREATE TABLE `sectors` ( `created_at` datetime(3) DEFAULT NULL, `db_slab_id` bigint unsigned NOT NULL, `slab_index` bigint NOT NULL, - `latest_host` longblob NOT NULL, `root` varbinary(32) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `root` (`root`), diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index dd2d91eb7..423f3856d 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -1173,7 +1173,6 @@ func (tx *MainDatabaseTx) UpdateSlab(ctx context.Context, s object.Slab, contrac upsertSectors = append(upsertSectors, upsertSector{ slabID, i + 1, - s.Shards[i].LatestHost, s.Shards[i].Root, }) } @@ -1199,7 +1198,6 @@ func (tx *MainDatabaseTx) UpdateSlab(ctx context.Context, s object.Slab, contrac tx.log.Named("UpdateSlab").Warn("missing contract for shard", "contract", fcid, "root", shard.Root, - "latest_host", shard.LatestHost, ) } } @@ -1340,7 +1338,6 @@ func (tx *MainDatabaseTx) insertSlabs(ctx context.Context, objID, partID *int64, upsertSectors = append(upsertSectors, upsertSector{ slabIDs[i], j + 1, - ss.Shards[j].LatestHost, ss.Shards[j].Root, }) } @@ -1366,7 +1363,6 @@ func (tx *MainDatabaseTx) insertSlabs(ctx context.Context, objID, partID *int64, tx.log.Named("InsertObject").Warn("missing contract for shard", "contract", fcid, "root", shard.Root, - "latest_host", shard.LatestHost, ) } } @@ -1411,10 +1407,9 @@ func (tx *MainDatabaseTx) upsertContractSectors(ctx context.Context, contractSec } type upsertSector struct { - slabID int64 - slabIndex int - latestHost types.PublicKey - root types.Hash256 + slabID int64 + slabIndex int + root types.Hash256 } func (tx *MainDatabaseTx) upsertSectors(ctx context.Context, sectors []upsertSector) ([]int64, error) { @@ -1424,8 +1419,8 @@ func (tx *MainDatabaseTx) upsertSectors(ctx context.Context, sectors []upsertSec // insert sectors - make sure to update last_insert_id in case of a // duplicate key to be able to retrieve the id - insertSectorStmt, err := tx.Prepare(ctx, `INSERT INTO sectors (created_at, db_slab_id, slab_index, latest_host, root) - VALUES (?, ?, ?, ?, ?) ON CONFLICT(root) DO UPDATE SET latest_host = EXCLUDED.latest_host RETURNING id, db_slab_id`) + insertSectorStmt, err := tx.Prepare(ctx, `INSERT INTO sectors (created_at, db_slab_id, slab_index, root) + VALUES (?, ?, ?, ?) ON CONFLICT(root) DO UPDATE SET db_slab_id = excluded.db_slab_id RETURNING id, db_slab_id`) if err != nil { return nil, fmt.Errorf("failed to prepare statement to insert sector: %w", err) } @@ -1438,7 +1433,6 @@ func (tx *MainDatabaseTx) upsertSectors(ctx context.Context, sectors []upsertSec time.Now(), s.slabID, s.slabIndex, - ssql.PublicKey(s.latestHost), s.root[:], ).Scan(§orID, &slabID) if err != nil { diff --git a/stores/sql/sqlite/migrations/main/migration_00024_latest_host.sql b/stores/sql/sqlite/migrations/main/migration_00024_latest_host.sql new file mode 100644 index 000000000..9ba1c2bc1 --- /dev/null +++ b/stores/sql/sqlite/migrations/main/migration_00024_latest_host.sql @@ -0,0 +1 @@ +ALTER TABLE `sectors` DROP COLUMN `latest_host`; \ No newline at end of file diff --git a/stores/sql/sqlite/migrations/main/schema.sql b/stores/sql/sqlite/migrations/main/schema.sql index 9bdbc71c2..e9b0c056e 100644 --- a/stores/sql/sqlite/migrations/main/schema.sql +++ b/stores/sql/sqlite/migrations/main/schema.sql @@ -70,7 +70,7 @@ CREATE INDEX `idx_slabs_health` ON `slabs`(`health`); CREATE INDEX `idx_slabs_db_buffered_slab_id` ON `slabs`(`db_buffered_slab_id`); -- dbSector -CREATE TABLE `sectors` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at` datetime,`db_slab_id` integer NOT NULL,`slab_index` integer NOT NULL,`latest_host` blob NOT NULL,`root` blob NOT NULL UNIQUE,CONSTRAINT `fk_slabs_shards` FOREIGN KEY (`db_slab_id`) REFERENCES `slabs`(`id`) ON DELETE CASCADE); +CREATE TABLE `sectors` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at` datetime,`db_slab_id` integer NOT NULL,`slab_index` integer NOT NULL,`root` blob NOT NULL UNIQUE,CONSTRAINT `fk_slabs_shards` FOREIGN KEY (`db_slab_id`) REFERENCES `slabs`(`id`) ON DELETE CASCADE); CREATE INDEX `idx_sectors_slab_index` ON `sectors`(`slab_index`); CREATE UNIQUE INDEX `idx_sectors_slab_id_slab_index` ON `sectors`(`db_slab_id`,`slab_index`); CREATE INDEX `idx_sectors_db_slab_id` ON `sectors`(`db_slab_id`); diff --git a/worker/download.go b/worker/download.go index 33fa8fdc3..657d04a78 100644 --- a/worker/download.go +++ b/worker/download.go @@ -7,6 +7,7 @@ import ( "fmt" "io" "math" + "sort" "sync" "time" @@ -75,10 +76,9 @@ type ( numOverpaid uint64 numRelaunched uint64 - unusedHostSectors map[types.PublicKey][]sectorInfo - - sectors [][]byte - errs HostErrorSet + pending []*sectorDownloadInfo + completed [][]byte + errs HostErrorSet } slabDownloadResponse struct { @@ -116,9 +116,11 @@ type ( c chan struct{} // signal that a new response is available } - sectorInfo struct { - object.Sector - index int + sectorDownloadInfo struct { + root types.Hash256 + hks []types.PublicKey + index int + selected int } downloadManagerStats struct { @@ -511,13 +513,18 @@ func (mgr *downloadManager) newSlabDownload(slice object.SlabSlice, migration bo // calculate the offset and length offset, length := slice.SectorRegion() - // build sector info - hostToSectors := make(map[types.PublicKey][]sectorInfo) + // build pending sectors + var pending []*sectorDownloadInfo for sI, s := range slice.Shards { - si := sectorInfo{s, sI} + hks := make([]types.PublicKey, 0, len(s.Contracts)) for hk := range s.Contracts { - hostToSectors[hk] = append(hostToSectors[hk], si) + hks = append(hks, hk) } + pending = append(pending, §orDownloadInfo{ + root: s.Root, + index: sI, + hks: hks, + }) } // create slab download @@ -531,10 +538,9 @@ func (mgr *downloadManager) newSlabDownload(slice object.SlabSlice, migration bo created: time.Now(), overpay: migration && slice.Health <= downloadOverpayHealthThreshold, - unusedHostSectors: hostToSectors, - - sectors: make([][]byte, len(slice.Shards)), - errs: make(HostErrorSet), + pending: pending, + completed: make([][]byte, len(slice.Shards)), + errs: make(HostErrorSet), } } @@ -641,31 +647,55 @@ func (s *slabDownload) nextRequest(ctx context.Context, resps *sectorResponses, s.mu.Lock() defer s.mu.Unlock() - // prepare next sectors to download - // select all possible hosts - var hosts []types.PublicKey - for host, sectors := range s.unusedHostSectors { - // remove any sector that has been downloaded already - for i := range sectors { - if len(s.sectors[sectors[i].index]) > 0 { - sectors = append(sectors[:i], sectors[i+1:]...) - s.unusedHostSectors[host] = sectors - } + // update pending sectors + filtered := s.pending[:0] + for _, sector := range s.pending { + if len(s.completed[sector.index]) == 0 && len(sector.hks) > 0 { + filtered = append(filtered, sector) } - // TODO: track which sectors are being downloaded and prefer - // scheduling one that isn't downloading right now + } + s.pending = filtered + + // find min selected + minSelected := math.MaxInt + for _, sector := range s.pending { + if sector.selected < minSelected { + minSelected = sector.selected + } + } + + // sort pending sectors + sort.Slice(s.pending, func(i, j int) bool { + return s.pending[i].selected < s.pending[j].selected + }) - // remove host if no sectors are left - if len(sectors) == 0 { - delete(s.unusedHostSectors, host) + // select unique hosts + exhausted := true + var hosts []types.PublicKey + sectors := make(map[types.PublicKey]*sectorDownloadInfo) +loop: + for _, sector := range s.pending { + if sector.selected > minSelected { + exhausted = false continue } - hosts = append(hosts, host) + for _, hk := range sector.hks { + if _, ok := sectors[hk]; !ok { + sectors[hk] = sector + hosts = append(hosts, hk) + break + } + } } // no more sectors to download - we don't know if the download failed at // this point so we register an error that gets propagated in case it did if len(hosts) == 0 { + if !exhausted { + exhausted = true // reset + minSelected++ // TODO: could calc how much to incr here + goto loop + } s.errs[types.PublicKey{}] = fmt.Errorf("%w: no more hosts", errDownloadNotEnoughHosts) return nil } @@ -677,14 +707,14 @@ func (s *slabDownload) nextRequest(ctx context.Context, resps *sectorResponses, return nil } - // pop the next sector - hk := fastest.PublicKey() - sector := s.unusedHostSectors[hk][0] - s.unusedHostSectors[hk] = s.unusedHostSectors[hk][1:] - - // if host is out of sectors, remove it - if len(s.unusedHostSectors[hk]) == 0 { - delete(s.unusedHostSectors, hk) + // grab the sector info + next := sectors[fastest.PublicKey()] + next.selected++ + for i, hk := range next.hks { + if hk == fastest.PublicKey() { + next.hks = append(next.hks[:i], next.hks[i+1:]...) + break + } } // build the request @@ -693,7 +723,7 @@ func (s *slabDownload) nextRequest(ctx context.Context, resps *sectorResponses, offset: s.offset, length: s.length, - root: sector.Root, + root: next.root, host: fastest, // overpay is set to 'true' when a request is retried after the slab @@ -704,7 +734,7 @@ func (s *slabDownload) nextRequest(ctx context.Context, resps *sectorResponses, overpay: false, overdrive: overdrive, - sectorIndex: sector.index, + sectorIndex: next.index, resps: resps, } } @@ -814,7 +844,7 @@ func (s *slabDownload) overdrivePct() float64 { func (s *slabDownload) downloadSpeed() int64 { s.mu.Lock() defer s.mu.Unlock() - completedShards := len(s.sectors) + completedShards := len(s.completed) bytes := completedShards * rhpv2.SectorSize ms := time.Since(s.created).Milliseconds() if ms == 0 { @@ -827,9 +857,9 @@ func (s *slabDownload) finish() ([][]byte, bool, error) { s.mu.Lock() defer s.mu.Unlock() if s.numCompleted < s.minShards { - return nil, s.numOverpaid > 0, fmt.Errorf("failed to download slab: completed=%d inflight=%d launched=%d relaunched=%d overpaid=%d downloaders=%d unused=%d errors=%d %v", s.numCompleted, s.numInflight, s.numLaunched, s.numRelaunched, s.numOverpaid, s.mgr.numDownloaders(), len(s.unusedHostSectors), len(s.errs), s.errs) + return nil, s.numOverpaid > 0, fmt.Errorf("failed to download slab: completed=%d inflight=%d launched=%d relaunched=%d overpaid=%d downloaders=%d unused=%d errors=%d %v", s.numCompleted, s.numInflight, s.numLaunched, s.numRelaunched, s.numOverpaid, s.mgr.numDownloaders(), len(s.pending), len(s.errs), s.errs) } - return s.sectors, s.numOverpaid > 0, nil + return s.completed, s.numOverpaid > 0, nil } func (s *slabDownload) missing() int { @@ -888,8 +918,10 @@ func (s *slabDownload) receive(resp sectorDownloadResp) (finished bool) { } // store the sector - s.sectors[resp.req.sectorIndex] = resp.sector - s.numCompleted++ + if len(s.completed[resp.req.sectorIndex]) == 0 { + s.completed[resp.req.sectorIndex] = resp.sector + s.numCompleted++ + } return s.numCompleted >= s.minShards } diff --git a/worker/migrations.go b/worker/migrations.go index 13b31aa52..f965828c2 100644 --- a/worker/migrations.go +++ b/worker/migrations.go @@ -65,9 +65,11 @@ SHARDS: // which we have a contract (so hosts from which we can download) missingShards := len(shardIndices) for _, si := range shardIndices { - if _, exists := h2c[s.Shards[si].LatestHost]; exists { - missingShards-- - continue + for hk := range s.Shards[si].Contracts { + if _, ok := h2c[hk]; ok { + missingShards-- + break + } } } diff --git a/worker/mocks_test.go b/worker/mocks_test.go index d93e18c9e..7839e04de 100644 --- a/worker/mocks_test.go +++ b/worker/mocks_test.go @@ -502,9 +502,6 @@ func (os *objectStoreMock) UpdateSlab(ctx context.Context, s object.Slab, contra // update slab shards := os.objects[bucket][objKey].Slabs[i].Slab.Shards for sI := range shards { - // overwrite latest host - shards[sI].LatestHost = s.Shards[sI].LatestHost - // merge contracts for each shard existingContracts := make(map[types.FileContractID]struct{}) for _, fcids := range shards[sI].Contracts { diff --git a/worker/upload.go b/worker/upload.go index d009b6f42..9a80eb877 100644 --- a/worker/upload.go +++ b/worker/upload.go @@ -645,11 +645,7 @@ func (mgr *uploadManager) UploadShards(ctx context.Context, s object.Slab, shard // overwrite the shards with the newly uploaded ones for i, si := range shardIndices { - s.Shards[si].LatestHost = uploaded[i].LatestHost - s.Shards[si].Contracts = make(map[types.PublicKey][]types.FileContractID) - for hk, fcids := range uploaded[i].Contracts { - s.Shards[si].Contracts[hk] = append(s.Shards[si].Contracts[hk], fcids...) - } + s.Shards[si].Contracts = mergeContracts(s.Shards[si].Contracts, uploaded[i].Contracts) } // update the slab @@ -1075,9 +1071,8 @@ func (s *slabUpload) receive(resp sectorUploadResp) (bool, bool) { // store the sector sector.finish(object.Sector{ - Contracts: map[types.PublicKey][]types.FileContractID{req.hk: {req.fcid}}, - LatestHost: req.hk, - Root: req.sector.root, + Contracts: map[types.PublicKey][]types.FileContractID{req.hk: {req.fcid}}, + Root: req.sector.root, }) // update uploaded sectors @@ -1126,3 +1121,30 @@ func (req *sectorUploadReq) finish(err error) { }: } } + +func mergeContracts(x, y map[types.PublicKey][]types.FileContractID) map[types.PublicKey][]types.FileContractID { + deduped := make(map[types.PublicKey]map[types.FileContractID]struct{}) + for hk, contracts := range x { + if _, ok := deduped[hk]; !ok { + deduped[hk] = make(map[types.FileContractID]struct{}) + } + for _, fcid := range contracts { + deduped[hk][fcid] = struct{}{} + } + } + for hk, contracts := range y { + if _, ok := deduped[hk]; !ok { + deduped[hk] = make(map[types.FileContractID]struct{}) + } + for _, fcid := range contracts { + deduped[hk][fcid] = struct{}{} + } + } + out := make(map[types.PublicKey][]types.FileContractID) + for hk, fcids := range deduped { + for fcid := range fcids { + out[hk] = append(out[hk], fcid) + } + } + return out +} diff --git a/worker/upload_test.go b/worker/upload_test.go index fd9a68251..8c4d0ac78 100644 --- a/worker/upload_test.go +++ b/worker/upload_test.go @@ -55,7 +55,9 @@ func TestUpload(t *testing.T) { // build used hosts used := make(map[types.PublicKey]struct{}) for _, shard := range o.Object.Slabs[0].Shards { - used[shard.LatestHost] = struct{}{} + for hk := range shard.Contracts { + used[hk] = struct{}{} + } } // download the data and assert it matches @@ -302,11 +304,17 @@ func TestMigrateLostSector(t *testing.T) { // build usedHosts hosts usedHosts := make(map[types.PublicKey]struct{}) for _, shard := range slab.Shards { - usedHosts[shard.LatestHost] = struct{}{} + for hk := range shard.Contracts { + usedHosts[hk] = struct{}{} + } } // assume the host of the first shard lost its sector - badHost := slab.Shards[0].LatestHost + var badHost types.PublicKey + for hk := range slab.Shards[0].Contracts { + badHost = hk + break + } badContract := slab.Shards[0].Contracts[badHost][0] err = os.DeleteHostSector(context.Background(), badHost, slab.Shards[0].Root) if err != nil { @@ -334,6 +342,12 @@ func TestMigrateLostSector(t *testing.T) { } } + // re-grab the slab + o, err = os.Object(context.Background(), testBucket, t.Name(), api.GetObjectOptions{}) + if err != nil { + t.Fatal(err) + } + // migrate the shard away from the bad host mem := mm.AcquireMemory(context.Background(), rhpv2.SectorSize) err = ul.UploadShards(context.Background(), o.Object.Slabs[0].Slab, []int{0}, shards, testContractSet, contracts, 0, lockingPriorityUpload, mem) @@ -352,11 +366,14 @@ func TestMigrateLostSector(t *testing.T) { // assert the bad shard is on a good host now shard := slab.Shards[0] - if shard.LatestHost == badHost { - t.Fatal("latest host is bad") - } else if len(shard.Contracts) != 1 { + if len(shard.Contracts) != 1 { t.Fatal("expected 1 contract") } + for hk := range shard.Contracts { + if hk == badHost { + t.Fatal("shard is on bad host") + } + } for _, fcids := range shard.Contracts { for _, fcid := range fcids { if fcid == badContract { @@ -403,7 +420,9 @@ func TestUploadShards(t *testing.T) { // build usedHosts hosts usedHosts := make(map[types.PublicKey]struct{}) for _, shard := range slab.Shards { - usedHosts[shard.LatestHost] = struct{}{} + for hk := range shard.Contracts { + usedHosts[hk] = struct{}{} + } } // mark odd shards as bad @@ -412,7 +431,9 @@ func TestUploadShards(t *testing.T) { for i, shard := range slab.Shards { if i%2 != 0 { badIndices = append(badIndices, i) - badHosts[shard.LatestHost] = struct{}{} + for hk := range shard.Contracts { + badHosts[hk] = struct{}{} + } } } @@ -457,15 +478,23 @@ func TestUploadShards(t *testing.T) { } slab = o.Object.Slabs[0] - // assert none of the shards are on bad hosts + // assert every shard that was on a bad host was migrated for i, shard := range slab.Shards { if i%2 == 0 && len(shard.Contracts) != 1 { t.Fatalf("expected 1 contract, got %v", len(shard.Contracts)) } else if i%2 != 0 && len(shard.Contracts) != 2 { t.Fatalf("expected 2 contracts, got %v", len(shard.Contracts)) } - if _, bad := badHosts[shard.LatestHost]; bad { - t.Fatal("shard is on bad host", shard.LatestHost) + var bc, gc int + for hk := range shard.Contracts { + if _, bad := badHosts[hk]; bad { + bc++ + } else { + gc++ + } + } + if bc > 0 && gc == 0 { + t.Fatal("shard is on exclusively bad hosts") } } From a22c6e53c5e6d505a576bff4b6920fb7199c4623 Mon Sep 17 00:00:00 2001 From: PJ Date: Wed, 2 Oct 2024 10:07:42 +0200 Subject: [PATCH 209/708] worker: cleanup download algo --- stores/sql/mysql/main.go | 41 +++++++++++++++------------------------- worker/download.go | 16 ++++++++++------ 2 files changed, 25 insertions(+), 32 deletions(-) diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index 0294af819..74ee37df8 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -1131,56 +1131,45 @@ func (tx *MainDatabaseTx) UpdateSlab(ctx context.Context, s object.Slab, contrac } // find shards of slab - var roots []types.Hash256 - rows, err := tx.Query(ctx, "SELECT root FROM sectors WHERE db_slab_id = ? ORDER BY sectors.slab_index ASC", slabID) + type sector struct { + id int64 + root ssql.Hash256 + } + var sectors []sector + rows, err := tx.Query(ctx, "SELECT id, root FROM sectors WHERE db_slab_id = ? ORDER BY sectors.slab_index ASC", slabID) if err != nil { return fmt.Errorf("failed to fetch sectors: %w", err) } defer rows.Close() for rows.Next() { - var root ssql.Hash256 - if err := rows.Scan(&root); err != nil { + var s sector + if err := rows.Scan(&s.id, (*ssql.Hash256)(&s.root)); err != nil { return fmt.Errorf("failed to scan sector id: %w", err) } - roots = append(roots, types.Hash256(root)) + sectors = append(sectors, s) } - nSectors := len(roots) // make sure the number of shards doesn't change. // NOTE: check both the slice as well as the TotalShards field to be // safe. if len(s.Shards) != int(totalShards) { return fmt.Errorf("%w: expected %v shards (TotalShards) but got %v", sql.ErrInvalidNumberOfShards, totalShards, len(s.Shards)) - } else if len(s.Shards) != nSectors { - return fmt.Errorf("%w: expected %v shards (Shards) but got %v", sql.ErrInvalidNumberOfShards, nSectors, len(s.Shards)) + } else if len(s.Shards) != len(sectors) { + return fmt.Errorf("%w: expected %v shards (Shards) but got %v", sql.ErrInvalidNumberOfShards, len(sectors), len(s.Shards)) } // make sure the roots stay the same. - for i, root := range roots { - if root != types.Hash256(s.Shards[i].Root) { - return fmt.Errorf("%w: shard %v has changed root from %v to %v", sql.ErrShardRootChanged, i, s.Shards[i].Root, root[:]) + for i, sector := range sectors { + if types.Hash256(sector.root) != s.Shards[i].Root { + return fmt.Errorf("%w: shard %v wants to update root from %v to %v", sql.ErrShardRootChanged, i, types.Hash256(sector.root), s.Shards[i].Root) } } - // update sectors - var upsertSectors []upsertSector - for i := range s.Shards { - upsertSectors = append(upsertSectors, upsertSector{ - slabID, - i + 1, - s.Shards[i].Root, - }) - } - sectorIDs, err := tx.upsertSectors(ctx, upsertSectors) - if err != nil { - return fmt.Errorf("failed to insert sectors: %w", err) - } - // build contract <-> sector links var upsertContractSectors []upsertContractSector for i, shard := range s.Shards { - sectorID := sectorIDs[i] + sectorID := sectors[i].id // ensure the associations are updated for _, fcids := range shard.Contracts { diff --git a/worker/download.go b/worker/download.go index 657d04a78..26a410002 100644 --- a/worker/download.go +++ b/worker/download.go @@ -669,20 +669,18 @@ func (s *slabDownload) nextRequest(ctx context.Context, resps *sectorResponses, return s.pending[i].selected < s.pending[j].selected }) - // select unique hosts + // select potential sectors exhausted := true - var hosts []types.PublicKey sectors := make(map[types.PublicKey]*sectorDownloadInfo) loop: for _, sector := range s.pending { if sector.selected > minSelected { exhausted = false - continue + break } for _, hk := range sector.hks { if _, ok := sectors[hk]; !ok { sectors[hk] = sector - hosts = append(hosts, hk) break } } @@ -690,16 +688,22 @@ loop: // no more sectors to download - we don't know if the download failed at // this point so we register an error that gets propagated in case it did - if len(hosts) == 0 { + if len(sectors) == 0 { if !exhausted { exhausted = true // reset - minSelected++ // TODO: could calc how much to incr here + minSelected++ // TODO: could jump instead of incrementing here goto loop } s.errs[types.PublicKey{}] = fmt.Errorf("%w: no more hosts", errDownloadNotEnoughHosts) return nil } + // build list of host keys + var hosts []types.PublicKey + for hk := range sectors { + hosts = append(hosts, hk) + } + // select the fastest host fastest := s.mgr.fastest(hosts) if fastest == nil { From 181e34392559c4d4844c48029e68b73989fe0a3d Mon Sep 17 00:00:00 2001 From: Christopher Tarry Date: Wed, 2 Oct 2024 10:58:25 -0400 Subject: [PATCH 210/708] rearrange order in Host metric list --- api/prometheus.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/api/prometheus.go b/api/prometheus.go index 36357d061..dea6b6145 100644 --- a/api/prometheus.go +++ b/api/prometheus.go @@ -116,12 +116,6 @@ func (host Host) PrometheusMetric() (metrics []prometheus.Metric) { } return []prometheus.Metric{ - { - Name: "renterd_host_scanned", - Labels: netAddressLabel, - Value: 1, - }, - // price table { Name: "renterd_host_pricetable_validity", @@ -372,6 +366,11 @@ func (host Host) PrometheusMetric() (metrics []prometheus.Metric) { }, // interactions + { + Name: "renterd_host_scanned", + Labels: netAddressLabel, + Value: 1, + }, { Name: "renterd_host_interactions_totalscans", Labels: netAddressLabel, From f22c55c840e94a09b61d319755e4748e6b5ae09c Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 3 Oct 2024 14:37:06 +0200 Subject: [PATCH 211/708] all: cleanup PR --- autopilot/contractor/contractor.go | 4 ---- internal/test/e2e/cluster.go | 7 +------ 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/autopilot/contractor/contractor.go b/autopilot/contractor/contractor.go index f962e0bdf..d3ac90a55 100644 --- a/autopilot/contractor/contractor.go +++ b/autopilot/contractor/contractor.go @@ -488,10 +488,6 @@ func (c *Contractor) refreshFundingEstimate(cfg api.AutopilotConfig, contract ap } func (c *Contractor) shouldArchive(contract api.Contract, bh uint64, n consensus.Network) (err error) { - defer func() { - fmt.Println("DEBUG PJ: should archive", bh, contract.EndHeight(), n.HardforkV2.RequireHeight, err) - }() - if bh > contract.EndHeight()-c.revisionSubmissionBuffer { return errContractExpired } else if contract.Revision != nil && contract.Revision.RevisionNumber == math.MaxUint64 { diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index 9140cc548..f7923f18a 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -210,8 +210,6 @@ type testClusterOptions struct { skipRunningAutopilot bool walletKey *types.PrivateKey - network *consensus.Network - autopilotCfg *config.Autopilot autopilotSettings *api.AutopilotConfig busCfg *config.Bus @@ -264,10 +262,6 @@ func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { if opts.walletKey != nil { wk = *opts.walletKey } - network, genesis := testNetwork() - if opts.network != nil { - network = opts.network - } busCfg, workerCfg, apCfg, dbCfg := testBusCfg(), testWorkerCfg(), testApCfg(), testDBCfg() if opts.busCfg != nil { @@ -358,6 +352,7 @@ func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { // Create bus. busDir := filepath.Join(dir, "bus") + network, genesis := testNetwork() b, bShutdownFn, cm, bs, err := newTestBus(ctx, busDir, busCfg, dbCfg, wk, network, genesis, logger) tt.OK(err) From 158ee748ea8f8b6a075e6406a34eb37e72e10b56 Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 7 Oct 2024 11:56:48 +0200 Subject: [PATCH 212/708] bus: pass uploaded sectors into update slab --- api/object.go | 4 ++ api/slab.go | 26 ++++++--- bus/bus.go | 4 +- bus/client/slabs.go | 10 ++-- bus/routes.go | 37 +++++++++++- internal/sql/sql.go | 3 - object/slab.go | 18 ------ stores/metadata.go | 28 +++------ stores/metadata_test.go | 59 +++++-------------- stores/multipart_test.go | 2 +- stores/sql/database.go | 14 +++-- stores/sql/main.go | 86 +++++++++++++++++++++++---- stores/sql/mysql/main.go | 115 +++--------------------------------- stores/sql/sqlite/main.go | 119 +++----------------------------------- worker/mocks_test.go | 59 +++++++++++++------ worker/upload.go | 102 +++++++++++++++++--------------- worker/worker.go | 2 +- worker/worker_test.go | 2 +- 18 files changed, 284 insertions(+), 406 deletions(-) diff --git a/api/object.go b/api/object.go index b80b43822..370ee8f56 100644 --- a/api/object.go +++ b/api/object.go @@ -48,6 +48,10 @@ var ( // database. ErrSlabNotFound = errors.New("slab not found") + // ErrUnknownSector is returned when a slab is being updated with an unknown + // sector. + ErrUnknownSector = errors.New("unknown sector") + // ErrUnsupportedDelimiter is returned when an unsupported delimiter is // provided. ErrUnsupportedDelimiter = errors.New("unsupported delimiter") diff --git a/api/slab.go b/api/slab.go index f93ebe532..42adc78c1 100644 --- a/api/slab.go +++ b/api/slab.go @@ -28,7 +28,12 @@ type ( UploadedPackedSlab struct { BufferID uint - Shards []object.Sector + Shards []UploadedSector + } + + UploadedSector struct { + ContractID types.FileContractID `json:"contractID"` + Root types.Hash256 `json:"root"` } ) @@ -67,13 +72,18 @@ type ( Slabs []UnhealthySlab `json:"slabs"` } - // UpdateSlabRequest is the request type for the /slab endpoint. - UpdateSlabRequest struct { - ContractSet string `json:"contractSet"` - Slab object.Slab `json:"slab"` - } + // UpdateSlabRequest is the request type for the PUT /slab/:key endpoint. + UpdateSlabRequest []UploadedSector ) -func (s UploadedPackedSlab) Contracts() []types.FileContractID { - return object.ContractsFromShards(s.Shards) +func (s UploadedPackedSlab) Contracts() (fcids []types.FileContractID) { + seen := make(map[types.FileContractID]struct{}) + for _, sector := range s.Shards { + _, ok := seen[sector.ContractID] + if !ok { + seen[sector.ContractID] = struct{}{} + fcids = append(fcids, sector.ContractID) + } + } + return } diff --git a/bus/bus.go b/bus/bus.go index fc607c645..f1ce2e19b 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -261,7 +261,7 @@ type ( Slab(ctx context.Context, key object.EncryptionKey) (object.Slab, error) RefreshHealth(ctx context.Context) error UnhealthySlabs(ctx context.Context, healthCutoff float64, set string, limit int) ([]api.UnhealthySlab, error) - UpdateSlab(ctx context.Context, s object.Slab, contractSet string) error + UpdateSlab(ctx context.Context, key object.EncryptionKey, sectors []api.UploadedSector) error } // A MetricsStore stores metrics. @@ -484,7 +484,7 @@ func (b *Bus) Handler() http.Handler { "POST /slabs/partial": b.slabsPartialHandlerPOST, "POST /slabs/refreshhealth": b.slabsRefreshHealthHandlerPOST, "GET /slab/:key": b.slabHandlerGET, - "PUT /slab": b.slabHandlerPUT, + "PUT /slab/:key": b.slabHandlerPUT, "GET /state": b.stateHandlerGET, "GET /stats/objects": b.objectsStatshandlerGET, diff --git a/bus/client/slabs.go b/bus/client/slabs.go index b2ee24a51..861cdc4e4 100644 --- a/bus/client/slabs.go +++ b/bus/client/slabs.go @@ -120,11 +120,9 @@ func (c *Client) SlabsForMigration(ctx context.Context, healthCutoff float64, se return usr.Slabs, nil } -// UpdateSlab updates the given slab in the database. -func (c *Client) UpdateSlab(ctx context.Context, slab object.Slab, contractSet string) (err error) { - err = c.c.WithContext(ctx).PUT("/slab", api.UpdateSlabRequest{ - ContractSet: contractSet, - Slab: slab, - }) +// UpdateSlab updates a slab with given key, adding the given contract sector +// links to the database. +func (c *Client) UpdateSlab(ctx context.Context, key object.EncryptionKey, sectors []api.UploadedSector) (err error) { + err = c.c.WithContext(ctx).PUT(fmt.Sprintf("/slab/%s", key), sectors) return } diff --git a/bus/routes.go b/bus/routes.go index 4f9667d9f..3cf6ad7df 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1490,9 +1490,40 @@ func (b *Bus) slabHandlerGET(jc jape.Context) { } func (b *Bus) slabHandlerPUT(jc jape.Context) { - var usr api.UpdateSlabRequest - if jc.Decode(&usr) == nil { - jc.Check("couldn't update slab", b.ms.UpdateSlab(jc.Request.Context(), usr.Slab, usr.ContractSet)) + var key object.EncryptionKey + if jc.DecodeParam("key", &key) != nil { + return + } + + var sectors []api.UploadedSector + if jc.Decode(§ors) != nil { + return + } + + // validate the sectors + for _, s := range sectors { + if s.Root == (types.Hash256{}) { + jc.Error(errors.New("root can not be empty"), http.StatusBadRequest) + return + } else if s.ContractID == (types.FileContractID{}) { + jc.Error(errors.New("contractID can not be empty"), http.StatusBadRequest) + return + } + } + + err := b.ms.UpdateSlab(jc.Request.Context(), key, sectors) + if errors.Is(err, api.ErrSlabNotFound) { + jc.Error(err, http.StatusNotFound) + return + } else if errors.Is(err, api.ErrUnknownSector) { + jc.Error(err, http.StatusBadRequest) + return + } else if errors.Is(err, api.ErrContractNotFound) { + jc.Error(err, http.StatusBadRequest) + return + } else if err != nil { + jc.Error(fmt.Errorf("%v: %w", "couldn't update slab", err), http.StatusInternalServerError) + return } } diff --git a/internal/sql/sql.go b/internal/sql/sql.go index 2b5920f9d..d07b02262 100644 --- a/internal/sql/sql.go +++ b/internal/sql/sql.go @@ -26,9 +26,6 @@ const ( ) var ( - ErrInvalidNumberOfShards = errors.New("slab has invalid number of shards") - ErrShardRootChanged = errors.New("shard root changed") - ErrRunV072 = errors.New("can't upgrade to >=v1.0.0 from your current version - please upgrade to v0.7.2 first (https://github.com/SiaFoundation/renterd/releases/tag/v0.7.2)") ErrMySQLNoSuperPrivilege = errors.New("You do not have the SUPER privilege and binary logging is enabled") ) diff --git a/object/slab.go b/object/slab.go index 523cc0e69..8685b90cc 100644 --- a/object/slab.go +++ b/object/slab.go @@ -50,24 +50,6 @@ func NewPartialSlab(ec EncryptionKey, minShards uint8) Slab { } } -// ContractsFromShards is a helper to extract all contracts used by a set of -// shards. -func ContractsFromShards(shards []Sector) []types.FileContractID { - var usedContracts []types.FileContractID - usedMap := make(map[types.FileContractID]struct{}) - for _, shard := range shards { - for _, fcids := range shard.Contracts { - for _, fcid := range fcids { - if _, exists := usedMap[fcid]; !exists { - usedContracts = append(usedContracts, fcid) - } - usedMap[fcid] = struct{}{} - } - } - } - return usedContracts -} - func (s Slab) Contracts() []types.FileContractID { var usedContracts []types.FileContractID added := make(map[types.FileContractID]struct{}) diff --git a/stores/metadata.go b/stores/metadata.go index 0feb77bb5..f55683742 100644 --- a/stores/metadata.go +++ b/stores/metadata.go @@ -569,24 +569,9 @@ func (s *SQLStore) Slab(ctx context.Context, key object.EncryptionKey) (slab obj return } -func (s *SQLStore) UpdateSlab(ctx context.Context, slab object.Slab, contractSet string) error { - // sanity check the shards don't contain an empty root - for _, shard := range slab.Shards { - if shard.Root == (types.Hash256{}) { - return errors.New("shard root can never be the empty root") - } - } - // Sanity check input. - for i, shard := range slab.Shards { - // Verify that all hosts have a contract. - if len(shard.Contracts) == 0 { - return fmt.Errorf("missing hosts for slab %d", i) - } - } - - // Update slab. +func (s *SQLStore) UpdateSlab(ctx context.Context, key object.EncryptionKey, sectors []api.UploadedSector) error { return s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - return tx.UpdateSlab(ctx, slab, contractSet, slab.Contracts()) + return tx.UpdateSlab(ctx, key, sectors) }) } @@ -654,12 +639,13 @@ func (s *SQLStore) PrunableContractRoots(ctx context.Context, fcid types.FileCon // MarkPackedSlabsUploaded marks the given slabs as uploaded and deletes them // from the buffer. func (s *SQLStore) MarkPackedSlabsUploaded(ctx context.Context, slabs []api.UploadedPackedSlab) error { - // Sanity check input. + // sanity check input for i, ss := range slabs { for _, shard := range ss.Shards { - // Verify that all hosts have a contract. - if len(shard.Contracts) == 0 { - return fmt.Errorf("missing hosts for slab %d", i) + if shard.ContractID == (types.FileContractID{}) { + return fmt.Errorf("slab %d is invalid, ContractID can not be empty", i) + } else if shard.Root == (types.Hash256{}) { + return fmt.Errorf("slab %d is invalid, Root can not be empty", i) } } } diff --git a/stores/metadata_test.go b/stores/metadata_test.go index 3975cd794..5e6069af1 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -1925,12 +1925,6 @@ func TestUpdateSlab(t *testing.T) { t.Fatal(err) } - // extract the slab key - key, err := obj.Slabs[0].EncryptionKey.MarshalBinary() - if err != nil { - t.Fatal(err) - } - // helper to fetch a slab from the database fetchSlab := func() (slab object.Slab) { t.Helper() @@ -2001,11 +1995,10 @@ func TestUpdateSlab(t *testing.T) { } // migrate the sector from h2 to h3 - slab := obj.Slabs[0].Slab - slab.Shards[1] = newTestShard(hk3, fcid3, types.Hash256{2}) + sectors := []api.UploadedSector{{ContractID: fcid3, Root: types.Hash256{2}}} // update the slab to reflect the migration - err = ss.UpdateSlab(ctx, slab, testContractSet) + err = ss.UpdateSlab(ctx, obj.Slabs[0].Slab.EncryptionKey, sectors) if err != nil { t.Fatal(err) } @@ -2053,22 +2046,6 @@ func TestUpdateSlab(t *testing.T) { } else if obj.Slabs[0].EncryptionKey.String() != updated.EncryptionKey.String() { t.Fatalf("unexpected slab, %v != %v", obj.Slabs[0].EncryptionKey, updated.EncryptionKey) } - - // update the slab to change its contract set. - if err := ss.UpdateContractSet(ctx, "other", nil, nil); err != nil { - t.Fatal(err) - } - err = ss.UpdateSlab(ctx, slab, "other") - if err != nil { - t.Fatal(err) - } - var csID int64 - if err := ss.DB().QueryRow(context.Background(), "SELECT db_contract_set_id FROM slabs WHERE `key` = ?", key). - Scan(&csID); err != nil { - t.Fatal(err) - } else if csID != ss.ContractSetID("other") { - t.Fatal("contract set was not updated") - } } func newTestObject(slabs int) object.Object { @@ -2673,9 +2650,9 @@ func TestPartialSlab(t *testing.T) { err = ss.MarkPackedSlabsUploaded(context.Background(), []api.UploadedPackedSlab{ { BufferID: buffer.ID, - Shards: []object.Sector{ - newTestShard(hk1, fcid1, types.Hash256{3}), - newTestShard(hk2, fcid2, types.Hash256{4}), + Shards: []api.UploadedSector{ + {ContractID: fcid1, Root: types.Hash256{3}}, + {ContractID: fcid2, Root: types.Hash256{4}}, }, }, }) @@ -3205,7 +3182,9 @@ func TestMarkSlabUploadedAfterRenew(t *testing.T) { err = ss.MarkPackedSlabsUploaded(context.Background(), []api.UploadedPackedSlab{ { BufferID: packedSlabs[0].BufferID, - Shards: newTestShards(hk, fcid, types.Hash256{1}), + Shards: []api.UploadedSector{ + {ContractID: fcid, Root: types.Hash256{1}}, + }, }, }) if err != nil { @@ -3526,25 +3505,13 @@ func TestUpdateSlabSanityChecks(t *testing.T) { t.Fatal("unexpected slab", cmp.Diff(slab, rSlab, cmp.AllowUnexported(object.EncryptionKey{}))) } - // change the length to fail the update. - if err := ss.UpdateSlab(context.Background(), object.Slab{ - EncryptionKey: slab.EncryptionKey, - Shards: shards[:len(shards)-1], - }, testContractSet); !errors.Is(err, isql.ErrInvalidNumberOfShards) { + // assert root checks + sectors := []api.UploadedSector{{ContractID: contracts[0].ID}} + if err := ss.UpdateSlab(context.Background(), slab.EncryptionKey, sectors); !errors.Is(err, api.ErrUnknownSector) { t.Fatal(err) } - - // reverse the order of the shards to fail the update. - reversedShards := append([]object.Sector{}, shards...) - for i := 0; i < len(reversedShards)/2; i++ { - j := len(reversedShards) - i - 1 - reversedShards[i], reversedShards[j] = reversedShards[j], reversedShards[i] - } - reversedSlab := object.Slab{ - EncryptionKey: slab.EncryptionKey, - Shards: reversedShards, - } - if err := ss.UpdateSlab(context.Background(), reversedSlab, testContractSet); !errors.Is(err, isql.ErrShardRootChanged) { + sectors = []api.UploadedSector{{ContractID: contracts[0].ID, Root: types.Hash256{6}}} + if err := ss.UpdateSlab(context.Background(), slab.EncryptionKey, sectors); !errors.Is(err, api.ErrUnknownSector) { t.Fatal(err) } } diff --git a/stores/multipart_test.go b/stores/multipart_test.go index 085dc41b1..412edb785 100644 --- a/stores/multipart_test.go +++ b/stores/multipart_test.go @@ -152,7 +152,7 @@ func TestMultipartUploadWithUploadPackingRegression(t *testing.T) { t.Fatal(err) } for i, shard := range splitData { - ups.Shards = append(ups.Shards, newTestShard(hks[i], fcids[i], types.HashBytes(shard))) + ups.Shards = append(ups.Shards, api.UploadedSector{ContractID: fcids[i], Root: types.HashBytes(shard)}) } return ups } diff --git a/stores/sql/database.go b/stores/sql/database.go index 1c698caac..e3a09ba18 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -353,11 +353,10 @@ type ( UpdateSetting(ctx context.Context, key, value string) error // UpdateSlab updates the slab in the database. That includes the following: - // - Optimistically set health to 100% - // - Invalidate health_valid_until - // The operation is not allowed to update the number of shards - // associated with a slab or the root/slabIndex of any shard. - UpdateSlab(ctx context.Context, s object.Slab, contractSet string, usedContracts []types.FileContractID) error + // - optimistically set health to 100% + // - invalidate health_valid_until + // - adds a contract<->sector link for the given sectors + UpdateSlab(ctx context.Context, key object.EncryptionKey, sectors []api.UploadedSector) error // UpdateSlabHealth updates the health of up to 'limit' slab in the // database if their health is not valid anymore. A random interval @@ -443,4 +442,9 @@ type ( FCID FileContractID RenewedFrom FileContractID } + + ContractSector struct { + ContractID int64 + SectorID int64 + } ) diff --git a/stores/sql/main.go b/stores/sql/main.go index cd7d62f57..8b8dbf44e 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -2102,6 +2102,72 @@ func UpdatePeerInfo(ctx context.Context, tx sql.Tx, addr string, fn func(*syncer return nil } +func UpdateSlab(ctx context.Context, tx sql.Tx, key object.EncryptionKey, updated []api.UploadedSector, upsertSectorsFn func(context.Context, []ContractSector) error) error { + // update slab + res, err := tx.Exec(ctx, ` + UPDATE slabs + SET health_valid_until = ?, health = ? + WHERE `+"`key`"+` = ? + `, time.Now().Unix(), 1, EncryptionKey(key)) + if err != nil { + return err + } else if n, err := res.RowsAffected(); err != nil { + return err + } else if n == 0 { + return api.ErrSlabNotFound + } + + // fetch sectors + rows, err := tx.Query(ctx, "SELECT s.id, s.root FROM sectors s INNER JOIN slabs sl ON s.db_slab_id = sl.id WHERE sl.key = ? ORDER BY s.slab_index ASC", EncryptionKey(key)) + if err != nil { + return fmt.Errorf("failed to fetch sectors: %w", err) + } + defer rows.Close() + + sectors := make(map[types.Hash256]int64) + for rows.Next() { + var id int64 + var root Hash256 + if err := rows.Scan(&id, &root); err != nil { + return fmt.Errorf("failed to scan sector id: %w", err) + } + sectors[types.Hash256(root)] = id + } + + // check sectors + var fcids []types.FileContractID + for _, s := range updated { + if _, ok := sectors[s.Root]; !ok { + return api.ErrUnknownSector + } + fcids = append(fcids, s.ContractID) + } + + // fetch contracts + contracts, err := FetchUsedContracts(ctx, tx, fcids) + if err != nil { + return err + } + + // build contract <-> sector links + var upsert []ContractSector + for _, sector := range updated { + contract, ok := contracts[sector.ContractID] + if !ok { + return api.ErrContractNotFound + } + sectorID, ok := sectors[sector.Root] + if !ok { + panic("sector not found") // developer error (already asserted) + } + upsert = append(upsert, ContractSector{ + ContractID: contract.ID, + SectorID: sectorID, + }) + } + return upsertSectorsFn(ctx, upsert) +} + func Webhooks(ctx context.Context, tx sql.Tx) ([]webhooks.Webhook, error) { rows, err := tx.Query(ctx, "SELECT module, event, url, headers FROM webhooks") if err != nil { @@ -2340,17 +2406,15 @@ func MarkPackedSlabUploaded(ctx context.Context, tx Tx, slab api.UploadedPackedS return "", fmt.Errorf("failed to get sector id: %w", err) } - // insert contracts for shard - for _, fcids := range slab.Shards[i].Contracts { - for _, fcid := range fcids { - uc, ok := usedContracts[fcid] - if !ok { - continue - } - // insert contract sector - if _, err := contractSectorStmt.Exec(ctx, uc.ID, sectorID); err != nil { - return "", fmt.Errorf("failed to insert contract sector: %w", err) - } + // insert contract sector links + for _, sector := range slab.Shards { + uc, ok := usedContracts[sector.ContractID] + if !ok { + continue + } + + if _, err := contractSectorStmt.Exec(ctx, uc.ID, sectorID); err != nil { + return "", fmt.Errorf("failed to insert contract sector: %w", err) } } } diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index 74ee37df8..4c8f3420c 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -1099,100 +1099,8 @@ func (tx *MainDatabaseTx) UpdateSetting(ctx context.Context, key, value string) return nil } -func (tx *MainDatabaseTx) UpdateSlab(ctx context.Context, s object.Slab, contractSet string, fcids []types.FileContractID) error { - // find all used contracts - usedContracts, err := ssql.FetchUsedContracts(ctx, tx, fcids) - if err != nil { - return fmt.Errorf("failed to fetch used contracts: %w", err) - } - - // update slab - res, err := tx.Exec(ctx, ` - UPDATE slabs - SET db_contract_set_id = (SELECT id FROM contract_sets WHERE name = ?), - health_valid_until = ?, - health = ? - WHERE `+"`key`"+` = ? - `, contractSet, time.Now().Unix(), 1, ssql.EncryptionKey(s.EncryptionKey)) - if err != nil { - return err - } else if n, err := res.RowsAffected(); err != nil { - return err - } else if n == 0 { - return api.ErrSlabNotFound - } - - // fetch slab id and total shards - var slabID, totalShards int64 - err = tx.QueryRow(ctx, "SELECT id, total_shards FROM slabs WHERE `key` = ?", ssql.EncryptionKey(s.EncryptionKey)). - Scan(&slabID, &totalShards) - if err != nil { - return err - } - - // find shards of slab - type sector struct { - id int64 - root ssql.Hash256 - } - var sectors []sector - rows, err := tx.Query(ctx, "SELECT id, root FROM sectors WHERE db_slab_id = ? ORDER BY sectors.slab_index ASC", slabID) - if err != nil { - return fmt.Errorf("failed to fetch sectors: %w", err) - } - defer rows.Close() - - for rows.Next() { - var s sector - if err := rows.Scan(&s.id, (*ssql.Hash256)(&s.root)); err != nil { - return fmt.Errorf("failed to scan sector id: %w", err) - } - sectors = append(sectors, s) - } - - // make sure the number of shards doesn't change. - // NOTE: check both the slice as well as the TotalShards field to be - // safe. - if len(s.Shards) != int(totalShards) { - return fmt.Errorf("%w: expected %v shards (TotalShards) but got %v", sql.ErrInvalidNumberOfShards, totalShards, len(s.Shards)) - } else if len(s.Shards) != len(sectors) { - return fmt.Errorf("%w: expected %v shards (Shards) but got %v", sql.ErrInvalidNumberOfShards, len(sectors), len(s.Shards)) - } - - // make sure the roots stay the same. - for i, sector := range sectors { - if types.Hash256(sector.root) != s.Shards[i].Root { - return fmt.Errorf("%w: shard %v wants to update root from %v to %v", sql.ErrShardRootChanged, i, types.Hash256(sector.root), s.Shards[i].Root) - } - } - - // build contract <-> sector links - var upsertContractSectors []upsertContractSector - for i, shard := range s.Shards { - sectorID := sectors[i].id - - // ensure the associations are updated - for _, fcids := range shard.Contracts { - for _, fcid := range fcids { - if _, ok := usedContracts[fcid]; ok { - upsertContractSectors = append(upsertContractSectors, upsertContractSector{ - sectorID, - usedContracts[fcid].ID, - }) - } else { - tx.log.Named("UpdateSlab").Warn("missing contract for shard", - "contract", fcid, - "root", shard.Root, - ) - } - } - } - } - if err := tx.upsertContractSectors(ctx, upsertContractSectors); err != nil { - return err - } - - return nil +func (tx *MainDatabaseTx) UpdateSlab(ctx context.Context, key object.EncryptionKey, sectors []api.UploadedSector) error { + return ssql.UpdateSlab(ctx, tx, key, sectors, tx.upsertContractSectors) } func (tx *MainDatabaseTx) UpdateSlabHealth(ctx context.Context, limit int64, minDuration, maxDuration time.Duration) (int64, error) { @@ -1338,15 +1246,15 @@ func (tx *MainDatabaseTx) insertSlabs(ctx context.Context, objID, partID *int64, // insert contract <-> sector links sectorIdx := 0 - var upsertContractSectors []upsertContractSector + var upsertContractSectors []ssql.ContractSector for _, ss := range slices { for _, shard := range ss.Shards { for _, fcids := range shard.Contracts { for _, fcid := range fcids { if _, ok := usedContracts[fcid]; ok { - upsertContractSectors = append(upsertContractSectors, upsertContractSector{ - sectorIDs[sectorIdx], - usedContracts[fcid].ID, + upsertContractSectors = append(upsertContractSectors, ssql.ContractSector{ + ContractID: usedContracts[fcid].ID, + SectorID: sectorIDs[sectorIdx], }) } else { tx.log.Named("InsertObject").Warn("missing contract for shard", @@ -1365,12 +1273,7 @@ func (tx *MainDatabaseTx) insertSlabs(ctx context.Context, objID, partID *int64, return nil } -type upsertContractSector struct { - sectorID int64 - contractID int64 -} - -func (tx *MainDatabaseTx) upsertContractSectors(ctx context.Context, contractSectors []upsertContractSector) error { +func (tx *MainDatabaseTx) upsertContractSectors(ctx context.Context, contractSectors []ssql.ContractSector) error { if len(contractSectors) == 0 { return nil } @@ -1385,8 +1288,8 @@ func (tx *MainDatabaseTx) upsertContractSectors(ctx context.Context, contractSec for _, cs := range contractSectors { _, err := insertContractSectorStmt.Exec(ctx, - cs.sectorID, - cs.contractID, + cs.SectorID, + cs.ContractID, ) if err != nil { return fmt.Errorf("failed to insert contract sector link: %w", err) diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index 423f3856d..edf2f6067 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -1110,104 +1110,8 @@ func (tx *MainDatabaseTx) UpdateSetting(ctx context.Context, key, value string) return nil } -func (tx *MainDatabaseTx) UpdateSlab(ctx context.Context, s object.Slab, contractSet string, fcids []types.FileContractID) error { - // find all used contracts - usedContracts, err := ssql.FetchUsedContracts(ctx, tx, fcids) - if err != nil { - return fmt.Errorf("failed to fetch used contracts: %w", err) - } - - // update slab - var slabID, totalShards int64 - err = tx.QueryRow(ctx, ` - UPDATE slabs - SET db_contract_set_id = (SELECT id FROM contract_sets WHERE name = ?), - health_valid_until = ?, - health = ? - WHERE key = ? - RETURNING id, total_shards - `, contractSet, time.Now().Unix(), 1, ssql.EncryptionKey(s.EncryptionKey)). - Scan(&slabID, &totalShards) - if errors.Is(err, dsql.ErrNoRows) { - return api.ErrSlabNotFound - } else if err != nil { - return err - } - - // find shards of slab - var roots []types.Hash256 - rows, err := tx.Query(ctx, "SELECT root FROM sectors WHERE db_slab_id = ? ORDER BY sectors.slab_index ASC", slabID) - if err != nil { - return fmt.Errorf("failed to fetch sectors: %w", err) - } - defer rows.Close() - - for rows.Next() { - var root ssql.Hash256 - if err := rows.Scan(&root); err != nil { - return fmt.Errorf("failed to scan sector id: %w", err) - } - roots = append(roots, types.Hash256(root)) - } - nSectors := len(roots) - - // make sure the number of shards doesn't change. - // NOTE: check both the slice as well as the TotalShards field to be - // safe. - if len(s.Shards) != int(totalShards) { - return fmt.Errorf("%w: expected %v shards (TotalShards) but got %v", sql.ErrInvalidNumberOfShards, totalShards, len(s.Shards)) - } else if len(s.Shards) != nSectors { - return fmt.Errorf("%w: expected %v shards (Shards) but got %v", sql.ErrInvalidNumberOfShards, nSectors, len(s.Shards)) - } - - // make sure the roots stay the same. - for i, root := range roots { - if root != types.Hash256(s.Shards[i].Root) { - return fmt.Errorf("%w: shard %v has changed root from %v to %v", sql.ErrShardRootChanged, i, s.Shards[i].Root, root[:]) - } - } - - // update sectors - var upsertSectors []upsertSector - for i := range s.Shards { - upsertSectors = append(upsertSectors, upsertSector{ - slabID, - i + 1, - s.Shards[i].Root, - }) - } - sectorIDs, err := tx.upsertSectors(ctx, upsertSectors) - if err != nil { - return fmt.Errorf("failed to insert sectors: %w", err) - } - - // build contract <-> sector links - var upsertContractSectors []upsertContractSector - for i, shard := range s.Shards { - sectorID := sectorIDs[i] - - // ensure the associations are updated - for _, fcids := range shard.Contracts { - for _, fcid := range fcids { - if _, ok := usedContracts[fcid]; ok { - upsertContractSectors = append(upsertContractSectors, upsertContractSector{ - sectorID, - usedContracts[fcid].ID, - }) - } else { - tx.log.Named("UpdateSlab").Warn("missing contract for shard", - "contract", fcid, - "root", shard.Root, - ) - } - } - } - } - if err := tx.upsertContractSectors(ctx, upsertContractSectors); err != nil { - return err - } - - return nil +func (tx *MainDatabaseTx) UpdateSlab(ctx context.Context, key object.EncryptionKey, sectors []api.UploadedSector) error { + return ssql.UpdateSlab(ctx, tx, key, sectors, tx.upsertContractSectors) } func (tx *MainDatabaseTx) UpdateSlabHealth(ctx context.Context, limit int64, minDuration, maxDuration time.Duration) (int64, error) { @@ -1349,15 +1253,15 @@ func (tx *MainDatabaseTx) insertSlabs(ctx context.Context, objID, partID *int64, // insert contract <-> sector links sectorIdx := 0 - var upsertContractSectors []upsertContractSector + var upsertContractSectors []ssql.ContractSector for _, ss := range slices { for _, shard := range ss.Shards { for _, fcids := range shard.Contracts { for _, fcid := range fcids { if _, ok := usedContracts[fcid]; ok { - upsertContractSectors = append(upsertContractSectors, upsertContractSector{ - sectorIDs[sectorIdx], - usedContracts[fcid].ID, + upsertContractSectors = append(upsertContractSectors, ssql.ContractSector{ + ContractID: usedContracts[fcid].ID, + SectorID: sectorIDs[sectorIdx], }) } else { tx.log.Named("InsertObject").Warn("missing contract for shard", @@ -1376,12 +1280,7 @@ func (tx *MainDatabaseTx) insertSlabs(ctx context.Context, objID, partID *int64, return nil } -type upsertContractSector struct { - sectorID int64 - contractID int64 -} - -func (tx *MainDatabaseTx) upsertContractSectors(ctx context.Context, contractSectors []upsertContractSector) error { +func (tx *MainDatabaseTx) upsertContractSectors(ctx context.Context, contractSectors []ssql.ContractSector) error { if len(contractSectors) == 0 { return nil } @@ -1396,8 +1295,8 @@ func (tx *MainDatabaseTx) upsertContractSectors(ctx context.Context, contractSec for _, cs := range contractSectors { _, err := insertContractSectorStmt.Exec(ctx, - cs.sectorID, - cs.contractID, + cs.SectorID, + cs.ContractID, ) if err != nil { return fmt.Errorf("failed to insert contract sector link: %w", err) diff --git a/worker/mocks_test.go b/worker/mocks_test.go index 7839e04de..b0c00adfa 100644 --- a/worker/mocks_test.go +++ b/worker/mocks_test.go @@ -327,6 +327,8 @@ var _ ObjectStore = (*objectStoreMock)(nil) type ( objectStoreMock struct { + cs ContractStore + mu sync.Mutex objects map[string]map[string]object.Object partials map[string]*packedSlabMock @@ -343,8 +345,9 @@ type ( } ) -func newObjectStoreMock(bucket string) *objectStoreMock { +func newObjectStoreMock(bucket string, cs ContractStore) *objectStoreMock { os := &objectStoreMock{ + cs: cs, objects: make(map[string]map[string]object.Object), partials: make(map[string]*packedSlabMock), slabBufferMaxSizeSoft: math.MaxInt64, @@ -490,32 +493,26 @@ func (os *objectStoreMock) Slab(ctx context.Context, key object.EncryptionKey) ( return } -func (os *objectStoreMock) UpdateSlab(ctx context.Context, s object.Slab, contractSet string) error { +func (os *objectStoreMock) UpdateSlab(ctx context.Context, key object.EncryptionKey, sectors []api.UploadedSector) error { os.mu.Lock() defer os.mu.Unlock() + var err error os.forEachObject(func(bucket, objKey string, o object.Object) { for i, slab := range o.Slabs { - if slab.EncryptionKey.String() != s.EncryptionKey.String() { + if slab.EncryptionKey.String() != key.String() { continue } // update slab shards := os.objects[bucket][objKey].Slabs[i].Slab.Shards for sI := range shards { - // merge contracts for each shard - existingContracts := make(map[types.FileContractID]struct{}) - for _, fcids := range shards[sI].Contracts { - for _, fcid := range fcids { - existingContracts[fcid] = struct{}{} - } - } - for hk, fcids := range s.Shards[sI].Contracts { - for _, fcid := range fcids { - if _, exists := existingContracts[fcid]; exists { - continue - } - shards[sI].Contracts[hk] = append(shards[sI].Contracts[hk], fcids...) + for _, sector := range sectors { + var hk types.PublicKey + hk, err = os.hostForContract(ctx, sector.ContractID) + if err != nil { + return } + shards[sI].Contracts[hk] = append(shards[sI].Contracts[hk], sector.ContractID) } } os.objects[bucket][objKey].Slabs[i].Slab.Shards = shards @@ -523,7 +520,7 @@ func (os *objectStoreMock) UpdateSlab(ctx context.Context, s object.Slab, contra } }) - return nil + return err } func (os *objectStoreMock) PackedSlabsForUpload(ctx context.Context, lockingDuration time.Duration, minShards, totalShards uint8, set string, limit int) (pss []api.PackedSlab, _ error) { @@ -572,8 +569,19 @@ func (os *objectStoreMock) MarkPackedSlabsUploaded(ctx context.Context, slabs [] }) for _, slab := range slabs { + var sectors []object.Sector + for _, shard := range slab.Shards { + hk, err := os.hostForContract(ctx, shard.ContractID) + if err != nil { + return err + } + sectors = append(sectors, object.Sector{ + Contracts: map[types.PublicKey][]types.FileContractID{hk: {shard.ContractID}}, + Root: shard.Root, + }) + } key := bufferIDToKey[slab.BufferID] - slabKeyToSlab[key].Shards = slab.Shards + slabKeyToSlab[key].Shards = []object.Sector{} delete(os.partials, key) } @@ -615,6 +623,21 @@ func (os *objectStoreMock) forEachObject(fn func(bucket, key string, o object.Ob } } +func (os *objectStoreMock) hostForContract(ctx context.Context, fcid types.FileContractID) (types.PublicKey, error) { + c, err := os.cs.Contract(ctx, fcid) + if err != nil && !errors.Is(err, api.ErrContractNotFound) { + return types.PublicKey{}, err + } else if err == nil { + return c.HostKey, nil + } + + c, err = os.cs.RenewedContract(ctx, fcid) + if err != nil { + return types.PublicKey{}, err + } + return c.HostKey, nil +} + type s3Mock struct{} func (*s3Mock) CreateBucket(context.Context, string, api.CreateBucketOptions) error { diff --git a/worker/upload.go b/worker/upload.go index 9a80eb877..642773ee7 100644 --- a/worker/upload.go +++ b/worker/upload.go @@ -81,6 +81,12 @@ type ( shutdownCtx context.Context } + uploadedSector struct { + hk types.PublicKey + fcid types.FileContractID + root types.Hash256 + } + slabUpload struct { uploadID api.UploadID contractLockPriority int @@ -122,7 +128,7 @@ type ( cancel context.CancelCauseFunc mu sync.Mutex - uploaded object.Sector + uploaded uploadedSector data *[rhpv2.SectorSize]byte } @@ -147,6 +153,13 @@ type ( } ) +func (us uploadedSector) toObjectSector() object.Sector { + return object.Sector{ + Contracts: map[types.PublicKey][]types.FileContractID{us.hk: {us.fcid}}, + Root: us.root, + } +} + func (w *Worker) initUploadManager(uploadKey *utils.UploadKey, maxMemory, maxOverdrive uint64, overdriveTimeout time.Duration, logger *zap.Logger) { if w.uploadManager != nil { panic("upload manager already initialized") // developer error @@ -589,11 +602,20 @@ func (mgr *uploadManager) UploadPackedSlab(ctx context.Context, rs api.Redundanc }() // upload the shards - sectors, uploadSpeed, overdrivePct, err := upload.uploadShards(ctx, shards, mgr.candidates(upload.allowed), mem, mgr.maxOverdrive, mgr.overdriveTimeout) + uploaded, uploadSpeed, overdrivePct, err := upload.uploadShards(ctx, shards, mgr.candidates(upload.allowed), mem, mgr.maxOverdrive, mgr.overdriveTimeout) if err != nil { return err } + // build sectors + var sectors []api.UploadedSector + for _, sector := range uploaded { + sectors = append(sectors, api.UploadedSector{ + ContractID: sector.fcid, + Root: sector.root, + }) + } + // track stats mgr.statsSlabUploadSpeedBytesPerMS.Track(float64(uploadSpeed)) mgr.statsOverdrivePct.Track(overdrivePct) @@ -639,17 +661,21 @@ func (mgr *uploadManager) UploadShards(ctx context.Context, s object.Slab, shard return err } + // build sectors + var sectors []api.UploadedSector + for _, sector := range uploaded { + sectors = append(sectors, api.UploadedSector{ + ContractID: sector.fcid, + Root: sector.root, + }) + } + // track stats mgr.statsOverdrivePct.Track(overdrivePct) mgr.statsSlabUploadSpeedBytesPerMS.Track(float64(uploadSpeed)) - // overwrite the shards with the newly uploaded ones - for i, si := range shardIndices { - s.Shards[si].Contracts = mergeContracts(s.Shards[si].Contracts, uploaded[i].Contracts) - } - // update the slab - return mgr.os.UpdateSlab(ctx, s, contractSet) + return mgr.os.UpdateSlab(ctx, s.EncryptionKey, sectors) } func (mgr *uploadManager) candidates(allowed map[types.PublicKey]struct{}) (candidates []*uploader) { @@ -797,7 +823,7 @@ func (u *upload) newSlabUpload(ctx context.Context, shards [][]byte, uploaders [ }, responseChan } -func (u *upload) uploadSlab(ctx context.Context, rs api.RedundancySettings, data []byte, length, index int, respChan chan slabUploadResponse, candidates []*uploader, mem Memory, maxOverdrive uint64, overdriveTimeout time.Duration) (uploadSpeed int64, overdrivePct float64) { +func (u *upload) uploadSlab(ctx context.Context, rs api.RedundancySettings, data []byte, length, index int, respChan chan slabUploadResponse, candidates []*uploader, mem Memory, maxOverdrive uint64, overdriveTimeout time.Duration) (int64, float64) { // create the response resp := slabUploadResponse{ slab: object.SlabSlice{ @@ -814,7 +840,17 @@ func (u *upload) uploadSlab(ctx context.Context, rs api.RedundancySettings, data resp.slab.Slab.Encrypt(shards) // upload the shards - resp.slab.Slab.Shards, uploadSpeed, overdrivePct, resp.err = u.uploadShards(ctx, shards, candidates, mem, maxOverdrive, overdriveTimeout) + uploaded, uploadSpeed, overdrivePct, err := u.uploadShards(ctx, shards, candidates, mem, maxOverdrive, overdriveTimeout) + + // build the sectors + var sectors []object.Sector + for _, sector := range uploaded { + sectors = append(sectors, sector.toObjectSector()) + } + + // decorate the response + resp.err = err + resp.slab.Shards = sectors // send the response select { @@ -822,10 +858,10 @@ func (u *upload) uploadSlab(ctx context.Context, rs api.RedundancySettings, data case respChan <- resp: } - return + return uploadSpeed, overdrivePct } -func (u *upload) uploadShards(ctx context.Context, shards [][]byte, candidates []*uploader, mem Memory, maxOverdrive uint64, overdriveTimeout time.Duration) (sectors []object.Sector, uploadSpeed int64, overdrivePct float64, err error) { +func (u *upload) uploadShards(ctx context.Context, shards [][]byte, candidates []*uploader, mem Memory, maxOverdrive uint64, overdriveTimeout time.Duration) (sectors []uploadedSector, uploadSpeed int64, overdrivePct float64, err error) { // ensure inflight uploads get cancelled ctx, cancel := context.WithCancel(ctx) defer cancel() @@ -1070,10 +1106,7 @@ func (s *slabUpload) receive(resp sectorUploadResp) (bool, bool) { } // store the sector - sector.finish(object.Sector{ - Contracts: map[types.PublicKey][]types.FileContractID{req.hk: {req.fcid}}, - Root: req.sector.root, - }) + sector.finish(req) // update uploaded sectors s.numUploaded++ @@ -1084,17 +1117,21 @@ func (s *slabUpload) receive(resp sectorUploadResp) (bool, bool) { return true, s.numUploaded == s.numSectors } -func (s *sectorUpload) finish(sector object.Sector) { +func (s *sectorUpload) finish(req *sectorUploadReq) { s.mu.Lock() defer s.mu.Unlock() s.cancel(errSectorUploadFinished) - s.uploaded = sector + s.uploaded = uploadedSector{ + hk: req.hk, + fcid: req.fcid, + root: req.sector.root, + } s.data = nil } func (s *sectorUpload) isUploaded() bool { - return s.uploaded.Root != (types.Hash256{}) + return s.uploaded.root != (types.Hash256{}) } func (s *sectorUpload) sectorData() *[rhpv2.SectorSize]byte { @@ -1121,30 +1158,3 @@ func (req *sectorUploadReq) finish(err error) { }: } } - -func mergeContracts(x, y map[types.PublicKey][]types.FileContractID) map[types.PublicKey][]types.FileContractID { - deduped := make(map[types.PublicKey]map[types.FileContractID]struct{}) - for hk, contracts := range x { - if _, ok := deduped[hk]; !ok { - deduped[hk] = make(map[types.FileContractID]struct{}) - } - for _, fcid := range contracts { - deduped[hk][fcid] = struct{}{} - } - } - for hk, contracts := range y { - if _, ok := deduped[hk]; !ok { - deduped[hk] = make(map[types.FileContractID]struct{}) - } - for _, fcid := range contracts { - deduped[hk][fcid] = struct{}{} - } - } - out := make(map[types.PublicKey][]types.FileContractID) - for hk, fcids := range deduped { - for fcid := range fcids { - out[hk] = append(out[hk], fcid) - } - } - return out -} diff --git a/worker/worker.go b/worker/worker.go index 9ff193b6d..4e0c630f5 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -117,7 +117,7 @@ type ( Objects(ctx context.Context, prefix string, opts api.ListObjectOptions) (resp api.ObjectsResponse, err error) MarkPackedSlabsUploaded(ctx context.Context, slabs []api.UploadedPackedSlab) error TrackUpload(ctx context.Context, uID api.UploadID) error - UpdateSlab(ctx context.Context, s object.Slab, contractSet string) error + UpdateSlab(ctx context.Context, key object.EncryptionKey, sectors []api.UploadedSector) error // NOTE: used by worker Bucket(_ context.Context, bucket string) (api.Bucket, error) diff --git a/worker/worker_test.go b/worker/worker_test.go index 4472f64b5..2aa5bc3df 100644 --- a/worker/worker_test.go +++ b/worker/worker_test.go @@ -34,7 +34,7 @@ type ( func newTestWorker(t test.TestingCommon) *testWorker { // create bus dependencies cs := newContractStoreMock() - os := newObjectStoreMock(testBucket) + os := newObjectStoreMock(testBucket, cs) hs := newHostStoreMock() // create worker dependencies From 7d64bff8f317cc588452de60a2a29ee02d902cd1 Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 7 Oct 2024 12:28:38 +0200 Subject: [PATCH 213/708] stores: use pointer --- stores/sql/rows.go | 2 +- stores/sql/types.go | 30 ------------------------------ 2 files changed, 1 insertion(+), 31 deletions(-) diff --git a/stores/sql/rows.go b/stores/sql/rows.go index e138f0907..15c67ea8e 100644 --- a/stores/sql/rows.go +++ b/stores/sql/rows.go @@ -12,7 +12,7 @@ type Scanner interface { type ContractRow struct { FCID FileContractID - HostID NullableInt64 + HostID *int64 HostKey PublicKey // state fields diff --git a/stores/sql/types.go b/stores/sql/types.go index 4c67d7990..66127c3ce 100644 --- a/stores/sql/types.go +++ b/stores/sql/types.go @@ -37,7 +37,6 @@ type ( FileContractID types.FileContractID Hash256 types.Hash256 MerkleProof struct{ Hashes []types.Hash256 } - NullableInt64 int64 NullableString string HostSettings rhpv2.HostSettings PriceTable rhpv3.HostPriceTable @@ -63,7 +62,6 @@ var ( _ scannerValuer = (*FileContractID)(nil) _ scannerValuer = (*Hash256)(nil) _ scannerValuer = (*MerkleProof)(nil) - _ scannerValuer = (*NullableInt64)(nil) _ scannerValuer = (*NullableString)(nil) _ scannerValuer = (*HostSettings)(nil) _ scannerValuer = (*PriceTable)(nil) @@ -464,34 +462,6 @@ func (u Unsigned64) Value() (driver.Value, error) { return int64(u), nil } -// Scan scan value into NullableInt64, implements sql.Scanner interface. -func (i *NullableInt64) Scan(value interface{}) error { - if value == nil { - *i = 0 - return nil - } - - switch value := value.(type) { - case int: - *i = NullableInt64(value) - case int64: - *i = NullableInt64(value) - case uint64: - *i = NullableInt64(int64(value)) - default: - return fmt.Errorf("failed to unmarshal NullableInt64 value: %v %T", value, value) - } - return nil -} - -// Value returns a NullableString value, implements driver.Valuer interface. -func (i NullableInt64) Value() (driver.Value, error) { - if i == 0 { - return nil, nil - } - return int64(i), nil -} - // Scan scan value into NullableString, implements sql.Scanner interface. func (s *NullableString) Scan(value interface{}) error { if value == nil { From 2149b0ec332f50e323d3157ff5724523ba8088d0 Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 7 Oct 2024 12:33:26 +0200 Subject: [PATCH 214/708] all: fix lint --- internal/test/e2e/cluster_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index f4dbfd918..f02e7baf3 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -356,9 +356,9 @@ func TestNewTestCluster(t *testing.T) { } // Fetch host - if _, err := b.Host(context.Background(), cluster.hosts[0].PublicKey()); err != nil { + if _, err := cluster.Bus.Host(context.Background(), cluster.hosts[0].PublicKey()); err != nil { t.Fatal("unexpected error", err) - } else if _, err := b.Host(context.Background(), types.PublicKey{1}); !utils.IsErr(err, api.ErrHostNotFound) { + } else if _, err := cluster.Bus.Host(context.Background(), types.PublicKey{1}); !utils.IsErr(err, api.ErrHostNotFound) { t.Fatal("unexpected error", err) } } From 2189ca86154d86e5418379d6b694504025987bc7 Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 7 Oct 2024 13:07:03 +0200 Subject: [PATCH 215/708] testing: fix worker mocks --- worker/mocks_test.go | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/worker/mocks_test.go b/worker/mocks_test.go index b0c00adfa..75a0991c5 100644 --- a/worker/mocks_test.go +++ b/worker/mocks_test.go @@ -171,12 +171,19 @@ func newContractStoreMock() *contractStoreMock { } } -func (*contractStoreMock) RenewedContract(context.Context, types.FileContractID) (api.ContractMetadata, error) { - return api.ContractMetadata{}, nil +func (cs *contractStoreMock) RenewedContract(ctx context.Context, fcid types.FileContractID) (api.ContractMetadata, error) { + return cs.Contract(ctx, fcid) } -func (*contractStoreMock) Contract(context.Context, types.FileContractID) (api.ContractMetadata, error) { - return api.ContractMetadata{}, nil +func (cs *contractStoreMock) Contract(_ context.Context, fcid types.FileContractID) (api.ContractMetadata, error) { + cs.mu.Lock() + defer cs.mu.Unlock() + + contract, ok := cs.contracts[fcid] + if !ok { + return api.ContractMetadata{}, api.ErrContractNotFound + } + return contract.metadata, nil } func (*contractStoreMock) ContractSize(context.Context, types.FileContractID) (api.ContractSize, error) { @@ -497,22 +504,29 @@ func (os *objectStoreMock) UpdateSlab(ctx context.Context, key object.Encryption os.mu.Lock() defer os.mu.Unlock() + updated := make(map[types.Hash256]types.FileContractID) + for _, sector := range sectors { + updated[sector.Root] = sector.ContractID + } + var err error os.forEachObject(func(bucket, objKey string, o object.Object) { for i, slab := range o.Slabs { if slab.EncryptionKey.String() != key.String() { continue } - // update slab + shards := os.objects[bucket][objKey].Slabs[i].Slab.Shards - for sI := range shards { - for _, sector := range sectors { + for _, shard := range shards { + if contract, ok := updated[shard.Root]; !ok { + continue // not updated + } else { var hk types.PublicKey - hk, err = os.hostForContract(ctx, sector.ContractID) + hk, err = os.hostForContract(ctx, contract) if err != nil { return } - shards[sI].Contracts[hk] = append(shards[sI].Contracts[hk], sector.ContractID) + shard.Contracts[hk] = append(shard.Contracts[hk], contract) } } os.objects[bucket][objKey].Slabs[i].Slab.Shards = shards @@ -581,7 +595,7 @@ func (os *objectStoreMock) MarkPackedSlabsUploaded(ctx context.Context, slabs [] }) } key := bufferIDToKey[slab.BufferID] - slabKeyToSlab[key].Shards = []object.Sector{} + slabKeyToSlab[key].Shards = sectors delete(os.partials, key) } From 7e603553eb9f5d064dfb0242749c8128522c1055 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Oct 2024 13:40:17 -0700 Subject: [PATCH 216/708] build(deps): bump the all-dependencies group across 1 directory with 8 updates (#1603) Bumps the all-dependencies group with 6 updates in the / directory: | Package | From | To | | --- | --- | --- | | [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3) | `1.14.23` | `1.14.24` | | [go.sia.tech/core](https://github.com/SiaFoundation/core) | `0.4.6` | `0.4.7` | | [go.sia.tech/coreutils](https://github.com/SiaFoundation/coreutils) | `0.3.2` | `0.4.1` | | [go.sia.tech/web/renterd](https://github.com/SiaFoundation/web) | `0.61.0` | `0.64.0` | | [golang.org/x/crypto](https://github.com/golang/crypto) | `0.27.0` | `0.28.0` | | [lukechampine.com/frand](https://github.com/lukechampine/frand) | `1.4.2` | `1.5.1` | Updates `github.com/mattn/go-sqlite3` from 1.14.23 to 1.14.24
Commits

Updates `go.sia.tech/core` from 0.4.6 to 0.4.7
Commits
  • 72daac0 Merge pull request #207 from SiaFoundation/preimage-len
  • 7a2ef40 types: Switch to fixed-length PolicyHash preimage
  • 0f61e58 Merge pull request #205 from SiaFoundation/proof-supplement
  • a176ef9 consensus: Add V1StorageProofSupplement, fixing encoding bug
  • 37cd8b8 build(deps): bump go.sia.tech/mux in the all-dependencies group
  • e21edfd Merge pull request #201 from SiaFoundation/nate/upgrade-go
  • 708363a ci,deps: upgrade go, switch to common workflow
  • 2cdf6f6 Merge pull request #196 from SiaFoundation/nate/v2-revision-ordering
  • 3dcc8ac consensus: Validate against earlier v2 contract revisions in block
  • 300042f build(deps): bump the all-dependencies group with 2 updates
  • Additional commits viewable in compare view

Updates `go.sia.tech/coreutils` from 0.3.2 to 0.4.1
Commits
  • f45eedc Merge pull request #101 from SiaFoundation/mod
  • 81231df mod: Update core dependency
  • 9d859c5 Merge pull request #99 from SiaFoundation/nate/fix-mem-syncer
  • e084829 testutil: fix mem syncer
  • 7fd91e1 Merge pull request #98 from SiaFoundation/nate/public-announcements
  • be22ee7 chain: fix test
  • fea16dd chain: fix lint
  • 521b10a chain: expose From and To for host announcements
  • 9cc63ee Merge pull request #95 from SiaFoundation/dependabot/go_modules/golang.org/x/...
  • b6bee60 build(deps): bump golang.org/x/crypto from 0.26.0 to 0.27.0
  • Additional commits viewable in compare view

Updates `go.sia.tech/web/renterd` from 0.61.0 to 0.64.0
Release notes

Sourced from go.sia.tech/web/renterd's releases.

renterd@0.64.0

Minor Changes

  • 2a1d787d: Max RPC price and max contract price now show a suggestion instead of a network average.

Patch Changes

  • 2a1d787d: Fixed a bug where the network average prices would show as 0 in the configuration fields. Closes SiaFoundation/renterd#1565

renterd@0.63.0

Minor Changes

  • 7a333ffd: The bucket list now has an empty state.
  • 7a333ffd: The cmdk menu now has an two separate files search options, one for across all buckets and one for the current bucket.
  • 7a333ffd: It is now possible to delete a bucket named 'default'.
  • 7a333ffd: The file search feature can now search across all buckets.
  • 7a333ffd: The command menu now opens via Ctrl+K on Linux and Windows.

renterd@0.62.0

Minor Changes

  • 64d82fc3: The transactions list now includes more details such as specific transaction types and maturity height for locked siacoin.
  • 32363a16: The files directory and global mode explorers now use the new list objects API.
  • 978b70aa: The hosts explorer now uses the new combined hosts API.
  • ac703a94: The configuration feature now internally uses the new strong settings APIs.
  • ac703a94: The configuration feature no longer includes the enable pinning or forex endpoint options under price pinning.
  • ac703a94: Contracts can now be filtered and sorted by deletions and sector roots spending.
  • ac703a94: The app now uses the daemon configured explorer for exchange rates.
  • ac703a94: The keys feature now internally uses the new S3 settings API format.
  • feca9f36: The configuration now internally uses the updated gouging base units.

Patch Changes

  • 978b70aa: Fixed a bug optimistically updating last scan information when initiating a host scan.
  • 1c94a604: Fixed an issue where the fit allowance suggestions were showing as NaN because all required fields were not filled.
Commits
  • 812f79f chore: release packages
  • 548dc86 ci: disable update-ui release dispatch
  • 9ddc44b chore: upgrade next
  • ee6e18c refactor(renterd): query param consistency
  • 2a1d787 fix(renterd): network average prices
  • 9a99d95 refactor(renterd): typescript strict mode for config feature
  • c517b14 refactor(renterd): typescript strict mode
  • 7105060 chore: upgrade typescript
  • 7767e65 feat(explored-types): add proof and confirmation transaction to ExplorerFileC...
  • 3f5745a refactor(hostd): adjust resize volume validation, add test
  • Additional commits viewable in compare view

Updates `golang.org/x/crypto` from 0.27.0 to 0.28.0
Commits
  • adef4cc go.mod: update golang.org/x dependencies
  • a0819fb sha3: fix cSHAKE initialization for extremely large N and or S
  • 42ee18b ssh: return ServerAuthError after too many auth failures
  • 9e92970 bn256: add missing symbols in comment
  • See full diff in compare view

Updates `golang.org/x/sys` from 0.25.0 to 0.26.0
Commits
  • 23b0dab unix: mark vgetrandom as non-escaping
  • cbf0eb6 unix: fix grep syntax to work on non-GNU greps
  • e7397b9 unix: update to Linux 6.11
  • 981de40 unix: use vDSO for getrandom() on linux
  • 48aad76 linux: add tcp_cc_info and its related types
  • d58f986 all: fix some typos in comment
  • 30de352 unix: fix Test{Fd,}Xattr failure on NetBSD
  • 68ed59b windows/svc: fix printf(var) mistake detected by latest printf checker
  • c08bc6e unix: update Go to 1.23.0
  • See full diff in compare view

Updates `golang.org/x/term` from 0.24.0 to 0.25.0
Commits

Updates `lukechampine.com/frand` from 1.4.2 to 1.5.1
Commits

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions
--------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nate Maninger --- go.mod | 29 ++++++++++--------- go.sum | 51 ++++++++++++++++----------------- internal/bus/chainsubscriber.go | 4 +-- 3 files changed, 41 insertions(+), 43 deletions(-) diff --git a/go.mod b/go.mod index bedae677d..7c52644fa 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module go.sia.tech/renterd -go 1.23.0 +go 1.23.1 + +toolchain go1.23.2 require ( github.com/aws/aws-sdk-go v1.55.5 @@ -9,28 +11,27 @@ require ( github.com/google/go-cmp v0.6.0 github.com/gotd/contrib v0.20.0 github.com/klauspost/reedsolomon v1.12.4 - github.com/mattn/go-sqlite3 v1.14.23 + github.com/mattn/go-sqlite3 v1.14.24 github.com/montanaflynn/stats v0.7.1 github.com/shopspring/decimal v1.4.0 - go.sia.tech/core v0.4.6 - go.sia.tech/coreutils v0.3.2 + go.sia.tech/core v0.4.8-0.20240926222149-2c8b541119dc + go.sia.tech/coreutils v0.4.1 go.sia.tech/gofakes3 v0.0.5 - go.sia.tech/hostd v1.1.3-0.20240903081107-6e044db95238 + go.sia.tech/hostd v1.1.3-0.20241007200428-58d2cc50a7cd go.sia.tech/jape v0.12.1 go.sia.tech/mux v1.3.0 - go.sia.tech/web/renterd v0.61.0 + go.sia.tech/web/renterd v0.64.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.27.0 - golang.org/x/sys v0.25.0 - golang.org/x/term v0.24.0 + golang.org/x/crypto v0.28.0 + golang.org/x/sys v0.26.0 + golang.org/x/term v0.25.0 gopkg.in/yaml.v3 v3.0.1 - lukechampine.com/frand v1.4.2 + lukechampine.com/frand v1.5.1 ) require ( filippo.io/edwards25519 v1.1.0 // indirect - github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect - github.com/cloudflare/cloudflare-go v0.103.0 // indirect + github.com/cloudflare/cloudflare-go v0.104.0 // indirect github.com/goccy/go-json v0.10.3 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect @@ -42,8 +43,8 @@ require ( go.etcd.io/bbolt v1.3.11 // indirect go.sia.tech/web v0.0.0-20240610131903-5611d44a533e // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.28.0 // indirect - golang.org/x/text v0.18.0 // indirect + golang.org/x/net v0.29.0 // indirect + golang.org/x/text v0.19.0 // indirect golang.org/x/time v0.6.0 // indirect golang.org/x/tools v0.23.0 // indirect nhooyr.io/websocket v1.8.17 // indirect diff --git a/go.sum b/go.sum index 88a4d94ec..85fdaf1e6 100644 --- a/go.sum +++ b/go.sum @@ -1,11 +1,9 @@ filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= -github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY= -github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA= github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU= github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= -github.com/cloudflare/cloudflare-go v0.103.0 h1:XXKzgXeUbAo7UTtM4T5wuD2bJPBtNZv7TlZAEy5QI4k= -github.com/cloudflare/cloudflare-go v0.103.0/go.mod h1:0DrjT4g8wgYFYIxhlqR8xi8dNWfyHFGilUkU3+XV8h0= +github.com/cloudflare/cloudflare-go v0.104.0 h1:R/lB0dZupaZbOgibAH/BRrkFbZ6Acn/WsKg2iX2xXuY= +github.com/cloudflare/cloudflare-go v0.104.0/go.mod h1:pfUQ4PIG4ISI0/Mmc21Bp86UnFU0ktmPf3iTgbSL+cM= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -38,8 +36,8 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/mattn/go-sqlite3 v1.14.23 h1:gbShiuAP1W5j9UOksQ06aiiqPMxYecovVGwmTxWtuw0= -github.com/mattn/go-sqlite3 v1.14.23/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= +github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM= +github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/montanaflynn/stats v0.7.1 h1:etflOAAHORrCC44V+aR6Ftzort912ZU+YLiSTuV8eaE= github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -57,22 +55,22 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.etcd.io/bbolt v1.3.11 h1:yGEzV1wPz2yVCLsD8ZAiGHhHVlczyC9d1rP43/VCRJ0= go.etcd.io/bbolt v1.3.11/go.mod h1:dksAq7YMXoljX0xu6VF5DMZGbhYYoLUalEiSySYAS4I= -go.sia.tech/core v0.4.6 h1:QLm97a7GWBonfnMEOokqWRAqsWCUPL7kzo6k3Adwx8E= -go.sia.tech/core v0.4.6/go.mod h1:Zuq0Tn2aIXJyO0bjGu8cMeVWe+vwQnUfZhG1LCmjD5c= -go.sia.tech/coreutils v0.3.2 h1:3gJqvs18n1FVZmcrnfIYyzS+rBu06OtIscDDAfUAYQI= -go.sia.tech/coreutils v0.3.2/go.mod h1:woPVmN6GUpIKHdi71Hkb9goIbl7b45TquCsAyEzyxnI= +go.sia.tech/core v0.4.8-0.20240926222149-2c8b541119dc h1:+hCcYky+23HtiAnirXsq0U/NaCt1WuIu308lmfTtJNM= +go.sia.tech/core v0.4.8-0.20240926222149-2c8b541119dc/go.mod h1:j2Ke8ihV8or7d2VDrFZWcCkwSVHO0DNMQJAGs9Qop2M= +go.sia.tech/coreutils v0.4.1 h1:ExQ9g6EtnFe70ptNBG+OtZyFU3aBoEzE/06rtbN6f4c= +go.sia.tech/coreutils v0.4.1/go.mod h1:v60kPqZERsb1ZS0PVe4S8hr2ArNEwTdp7XTzErXnV2U= go.sia.tech/gofakes3 v0.0.5 h1:vFhVBUFbKE9ZplvLE2w4TQxFMQyF8qvgxV4TaTph+Vw= go.sia.tech/gofakes3 v0.0.5/go.mod h1:LXEzwGw+OHysWLmagleCttX93cJZlT9rBu/icOZjQ54= -go.sia.tech/hostd v1.1.3-0.20240903081107-6e044db95238 h1:DP9o+TnNeS34EmxZ/zqZ4px3DgL8en/2RL4EsiSd4GU= -go.sia.tech/hostd v1.1.3-0.20240903081107-6e044db95238/go.mod h1:InmB5LdO6EP+ZW9uolUCO+zh+zVdbJF3iCgU7xokJxQ= +go.sia.tech/hostd v1.1.3-0.20241007200428-58d2cc50a7cd h1:kcw3S5gVN8uOnIaVBQMt5UNpRe3z/+xwpmQT5B6+Zbs= +go.sia.tech/hostd v1.1.3-0.20241007200428-58d2cc50a7cd/go.mod h1:ZDezsW1NNGPhodtAWMuzhxQdPg2fcDOgZPi/eSSuPBc= go.sia.tech/jape v0.12.1 h1:xr+o9V8FO8ScRqbSaqYf9bjj1UJ2eipZuNcI1nYousU= go.sia.tech/jape v0.12.1/go.mod h1:wU+h6Wh5olDjkPXjF0tbZ1GDgoZ6VTi4naFw91yyWC4= go.sia.tech/mux v1.3.0 h1:hgR34IEkqvfBKUJkAzGi31OADeW2y7D6Bmy/Jcbop9c= go.sia.tech/mux v1.3.0/go.mod h1:I46++RD4beqA3cW9Xm9SwXbezwPqLvHhVs9HLpDtt58= go.sia.tech/web v0.0.0-20240610131903-5611d44a533e h1:oKDz6rUExM4a4o6n/EXDppsEka2y/+/PgFOZmHWQRSI= go.sia.tech/web v0.0.0-20240610131903-5611d44a533e/go.mod h1:4nyDlycPKxTlCqvOeRO0wUfXxyzWCEE7+2BRrdNqvWk= -go.sia.tech/web/renterd v0.61.0 h1:DmSGkpbaqodKvP4Mn79lLeZF2xqcWFQRrT2xPuLf8Uo= -go.sia.tech/web/renterd v0.61.0/go.mod h1:VWfvYtmdJGfrqSoNRO3NoOjUij+RB/xNO4M0HqIf1+M= +go.sia.tech/web/renterd v0.64.0 h1:JlfmRqGVBZl0UUJWLi9JDufFlTVo9s6CujwZHKIjm5A= +go.sia.tech/web/renterd v0.64.0/go.mod h1:VWfvYtmdJGfrqSoNRO3NoOjUij+RB/xNO4M0HqIf1+M= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= @@ -80,26 +78,25 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= -golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= +golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= +golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= -golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= +golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= +golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= -golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= -golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= +golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= +golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= +golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= -golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20190829051458-42f498d34c4d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -115,7 +112,7 @@ gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -lukechampine.com/frand v1.4.2 h1:RzFIpOvkMXuPMBb9maa4ND4wjBn71E1Jpf8BzJHMaVw= -lukechampine.com/frand v1.4.2/go.mod h1:4S/TM2ZgrKejMcKMbeLjISpJMO+/eZ1zu3vYX9dtj3s= +lukechampine.com/frand v1.5.1 h1:fg0eRtdmGFIxhP5zQJzM1lFDbD6CUfu/f+7WgAZd5/w= +lukechampine.com/frand v1.5.1/go.mod h1:4VstaWc2plN4Mjr10chUD46RAVGWhpkZ5Nja8+Azp0Q= nhooyr.io/websocket v1.8.17 h1:KEVeLJkUywCKVsnLIDlD/5gtayKp8VoCkksHCGGfT9Y= nhooyr.io/websocket v1.8.17/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= diff --git a/internal/bus/chainsubscriber.go b/internal/bus/chainsubscriber.go index e1200c24b..5831acb98 100644 --- a/internal/bus/chainsubscriber.go +++ b/internal/bus/chainsubscriber.go @@ -159,9 +159,9 @@ func (s *chainSubscriber) applyChainUpdate(tx sql.ChainUpdateTx, cau chain.Apply b := cau.Block if time.Since(b.Timestamp) <= s.announcementMaxAge { hus := make(map[types.PublicKey]chain.HostAnnouncement) - chain.ForEachHostAnnouncement(b, func(hk types.PublicKey, ha chain.HostAnnouncement) { + chain.ForEachHostAnnouncement(b, func(ha chain.HostAnnouncement) { if ha.NetAddress != "" { - hus[hk] = ha + hus[ha.PublicKey] = ha } }) for hk, ha := range hus { From 56697210a8dd8df56353d4fb6b3d2d9dae3c6b78 Mon Sep 17 00:00:00 2001 From: PJ Date: Tue, 15 Oct 2024 13:35:41 +0200 Subject: [PATCH 217/708] bus: use store constants --- bus/bus.go | 27 ++++++++++++++------------- bus/routes.go | 25 +++++++++++++------------ 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/bus/bus.go b/bus/bus.go index 6fd7c9568..aa3a93906 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -33,6 +33,7 @@ import ( rhp3 "go.sia.tech/renterd/internal/rhp/v3" "go.sia.tech/renterd/internal/utils" "go.sia.tech/renterd/object" + "go.sia.tech/renterd/stores" "go.sia.tech/renterd/stores/sql" "go.sia.tech/renterd/webhooks" "go.uber.org/zap" @@ -657,7 +658,7 @@ func (b *Bus) broadcastContract(ctx context.Context, fcid types.FileContractID) func (b *Bus) fetchSetting(ctx context.Context, key string) (interface{}, error) { switch key { - case "gouging": + case stores.SettingGouging: gs, err := b.ss.GougingSettings(ctx) if errors.Is(err, sql.ErrSettingNotFound) { return api.DefaultGougingSettings, nil @@ -665,7 +666,7 @@ func (b *Bus) fetchSetting(ctx context.Context, key string) (interface{}, error) return nil, err } return gs, nil - case "pinned": + case stores.SettingPinned: ps, err := b.ss.PinnedSettings(ctx) if errors.Is(err, sql.ErrSettingNotFound) { ps = api.DefaultPinnedSettings @@ -687,7 +688,7 @@ func (b *Bus) fetchSetting(ctx context.Context, key string) (interface{}, error) } } return ps, nil - case "upload": + case stores.SettingUpload: us, err := b.ss.UploadSettings(ctx) if errors.Is(err, sql.ErrSettingNotFound) { return api.DefaultUploadSettings(b.cm.TipState().Network.Name), nil @@ -695,7 +696,7 @@ func (b *Bus) fetchSetting(ctx context.Context, key string) (interface{}, error) return nil, err } return us, nil - case "s3": + case stores.SettingS3: s3s, err := b.ss.S3Settings(ctx) if errors.Is(err, sql.ErrSettingNotFound) { return api.DefaultS3Settings, nil @@ -756,7 +757,7 @@ func (b *Bus) isPassedV2AllowHeight() bool { return cs.Index.Height >= cs.Network.HardforkV2.AllowHeight } -func (b *Bus) patchSetting(ctx context.Context, key string, patch map[string]any) (interface{}, error) { +func (b *Bus) patchSetting(ctx context.Context, key string, patch map[string]any) (any, error) { var curr map[string]any // fetch current setting @@ -787,7 +788,7 @@ func (b *Bus) patchSetting(ctx context.Context, key string, patch map[string]any // update the patched setting switch key { - case "gouging": + case stores.SettingGouging: var update api.GougingSettings if err := json.Unmarshal(buf, &update); err != nil { return nil, err @@ -795,7 +796,7 @@ func (b *Bus) patchSetting(ctx context.Context, key string, patch map[string]any return nil, err } return update, nil - case "pinned": + case stores.SettingPinned: var update api.PinnedSettings if err := json.Unmarshal(buf, &update); err != nil { return nil, err @@ -803,7 +804,7 @@ func (b *Bus) patchSetting(ctx context.Context, key string, patch map[string]any return nil, err } return update, nil - case "upload": + case stores.SettingUpload: var update api.UploadSettings if err := json.Unmarshal(buf, &update); err != nil { return nil, err @@ -811,7 +812,7 @@ func (b *Bus) patchSetting(ctx context.Context, key string, patch map[string]any return nil, err } return update, nil - case "s3": + case stores.SettingS3: var update api.S3Settings if err := json.Unmarshal(buf, &update); err != nil { return nil, err @@ -911,7 +912,7 @@ func (b *Bus) updateSetting(ctx context.Context, key string, value any) error { var updatePinMgr bool switch key { - case "gouging": + case stores.SettingGouging: _, ok := value.(api.GougingSettings) if !ok { panic("invalid type") // developer error @@ -925,7 +926,7 @@ func (b *Bus) updateSetting(ctx context.Context, key string, value any) error { Timestamp: time.Now().UTC(), } updatePinMgr = true - case "pinned": + case stores.SettingPinned: _, ok := value.(api.PinnedSettings) if !ok { panic("invalid type") // developer error @@ -939,7 +940,7 @@ func (b *Bus) updateSetting(ctx context.Context, key string, value any) error { Timestamp: time.Now().UTC(), } updatePinMgr = true - case "upload": + case stores.SettingUpload: _, ok := value.(api.UploadSettings) if !ok { panic("invalid type") // developer error @@ -952,7 +953,7 @@ func (b *Bus) updateSetting(ctx context.Context, key string, value any) error { UploadSettings: &us, Timestamp: time.Now().UTC(), } - case "s3": + case stores.SettingS3: _, ok := value.(api.S3Settings) if !ok { panic("invalid type") // developer error diff --git a/bus/routes.go b/bus/routes.go index d1cf00024..0e43d4fa0 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -17,6 +17,7 @@ import ( "go.sia.tech/renterd/internal/prometheus" rhp3 "go.sia.tech/renterd/internal/rhp/v3" + "go.sia.tech/renterd/stores" "go.sia.tech/renterd/stores/sql" "go.sia.tech/renterd/internal/gouging" @@ -1324,7 +1325,7 @@ func (b *Bus) packedSlabsHandlerDonePOST(jc jape.Context) { } func (b *Bus) settingsGougingHandlerGET(jc jape.Context) { - if gs, err := b.fetchSetting(jc.Request.Context(), "gouging"); err != nil { + if gs, err := b.fetchSetting(jc.Request.Context(), stores.SettingGouging); err != nil { jc.Error(err, http.StatusInternalServerError) return } else if gsc, ok := gs.(api.GougingSettings); !ok { @@ -1344,7 +1345,7 @@ func (b *Bus) settingsGougingHandlerPATCH(jc jape.Context) { } // apply patch - update, err := b.patchSetting(jc.Request.Context(), "gouging", patch) + update, err := b.patchSetting(jc.Request.Context(), stores.SettingGouging, patch) if errors.Is(err, ErrSettingFieldNotFound) { jc.Error(err, http.StatusBadRequest) } else if err != nil { @@ -1364,14 +1365,14 @@ func (b *Bus) settingsGougingHandlerPUT(jc jape.Context) { } else if err := gs.Validate(); err != nil { jc.Error(fmt.Errorf("couldn't update gouging settings, error: %v", err), http.StatusBadRequest) return - } else if err := b.updateSetting(jc.Request.Context(), "gouging", gs); err != nil { + } else if err := b.updateSetting(jc.Request.Context(), stores.SettingGouging, gs); err != nil { jc.Error(err, http.StatusInternalServerError) return } } func (b *Bus) settingsPinnedHandlerGET(jc jape.Context) { - if ps, err := b.fetchSetting(jc.Request.Context(), "pinned"); err != nil { + if ps, err := b.fetchSetting(jc.Request.Context(), stores.SettingPinned); err != nil { jc.Error(err, http.StatusInternalServerError) return } else if psc, ok := ps.(api.PinnedSettings); !ok { @@ -1391,7 +1392,7 @@ func (b *Bus) settingsPinnedHandlerPATCH(jc jape.Context) { } // apply patch - update, err := b.patchSetting(jc.Request.Context(), "pinned", patch) + update, err := b.patchSetting(jc.Request.Context(), stores.SettingPinned, patch) if errors.Is(err, ErrSettingFieldNotFound) { jc.Error(err, http.StatusBadRequest) return @@ -1415,13 +1416,13 @@ func (b *Bus) settingsPinnedHandlerPUT(jc jape.Context) { } else if ps.Enabled() && !b.explorer.Enabled() { jc.Error(fmt.Errorf("can't enable price pinning, %w", api.ErrExplorerDisabled), http.StatusBadRequest) return - } else if err := b.updateSetting(jc.Request.Context(), "pinned", ps); err != nil { + } else if err := b.updateSetting(jc.Request.Context(), stores.SettingPinned, ps); err != nil { jc.Error(err, http.StatusInternalServerError) } } func (b *Bus) settingsUploadHandlerGET(jc jape.Context) { - if us, err := b.fetchSetting(jc.Request.Context(), "upload"); err != nil { + if us, err := b.fetchSetting(jc.Request.Context(), stores.SettingUpload); err != nil { jc.Error(err, http.StatusInternalServerError) return } else if usc, ok := us.(api.UploadSettings); !ok { @@ -1441,7 +1442,7 @@ func (b *Bus) settingsUploadHandlerPATCH(jc jape.Context) { } // apply patch - update, err := b.patchSetting(jc.Request.Context(), "upload", patch) + update, err := b.patchSetting(jc.Request.Context(), stores.SettingUpload, patch) if errors.Is(err, ErrSettingFieldNotFound) { jc.Error(err, http.StatusBadRequest) return @@ -1462,14 +1463,14 @@ func (b *Bus) settingsUploadHandlerPUT(jc jape.Context) { } else if err := us.Validate(); err != nil { jc.Error(fmt.Errorf("couldn't update upload settings, error: %v", err), http.StatusBadRequest) return - } else if err := b.updateSetting(jc.Request.Context(), "upload", us); err != nil { + } else if err := b.updateSetting(jc.Request.Context(), stores.SettingUpload, us); err != nil { jc.Error(err, http.StatusInternalServerError) return } } func (b *Bus) settingsS3HandlerGET(jc jape.Context) { - if s3s, err := b.fetchSetting(jc.Request.Context(), "s3"); err != nil { + if s3s, err := b.fetchSetting(jc.Request.Context(), stores.SettingS3); err != nil { jc.Error(err, http.StatusInternalServerError) return } else if s3sc, ok := s3s.(api.S3Settings); !ok { @@ -1489,7 +1490,7 @@ func (b *Bus) settingsS3HandlerPATCH(jc jape.Context) { } // apply patch - update, err := b.patchSetting(jc.Request.Context(), "s3", patch) + update, err := b.patchSetting(jc.Request.Context(), stores.SettingS3, patch) if errors.Is(err, ErrSettingFieldNotFound) { jc.Error(err, http.StatusBadRequest) return @@ -1510,7 +1511,7 @@ func (b *Bus) settingsS3HandlerPUT(jc jape.Context) { } else if err := s3s.Validate(); err != nil { jc.Error(fmt.Errorf("couldn't update S3 settings, error: %v", err), http.StatusBadRequest) return - } else if err := b.updateSetting(jc.Request.Context(), "s3", s3s); err != nil { + } else if err := b.updateSetting(jc.Request.Context(), stores.SettingS3, s3s); err != nil { jc.Error(err, http.StatusInternalServerError) return } From fc79762591753d516eee91e850a93debeea39447 Mon Sep 17 00:00:00 2001 From: Christopher Tarry Date: Thu, 17 Oct 2024 17:40:14 -0400 Subject: [PATCH 218/708] write startup errors to stderr --- cmd/renterd/commands.go | 10 ++-------- cmd/renterd/config.go | 17 ++++++++--------- cmd/renterd/main.go | 17 ++++------------- 3 files changed, 14 insertions(+), 30 deletions(-) diff --git a/cmd/renterd/commands.go b/cmd/renterd/commands.go index 819eb9de5..08fde9bf5 100644 --- a/cmd/renterd/commands.go +++ b/cmd/renterd/commands.go @@ -54,17 +54,11 @@ func cmdBuildConfig(cfg *config.Config) { } f, err := os.Create(configPath) - if err != nil { - stdoutFatalError("Failed to create config file: " + err.Error()) - return - } + checkFatalError("Failed to create config file", err) defer f.Close() enc := yaml.NewEncoder(f) - if err := enc.Encode(cfg); err != nil { - stdoutFatalError("Failed to encode config file: " + err.Error()) - return - } + checkFatalError("Failed to encode config file", enc.Encode(cfg)) } func cmdSeed() { diff --git a/cmd/renterd/config.go b/cmd/renterd/config.go index e1200f121..3b6bd6dbe 100644 --- a/cmd/renterd/config.go +++ b/cmd/renterd/config.go @@ -418,9 +418,7 @@ func parseEnvironmentVariables(cfg *config.Config) { func readPasswordInput(context string) string { fmt.Printf("%s: ", context) input, err := term.ReadPassword(int(os.Stdin.Fd())) - if err != nil { - stdoutFatalError("Could not read input: " + err.Error()) - } + checkFatalError("Could not read input", err) fmt.Println("") return string(input) } @@ -429,9 +427,7 @@ func readInput(context string) string { fmt.Printf("%s: ", context) r := bufio.NewReader(os.Stdin) input, err := r.ReadString('\n') - if err != nil { - stdoutFatalError("Could not read input: " + err.Error()) - } + checkFatalError("Could not read input", err) return strings.TrimSpace(input) } @@ -485,9 +481,12 @@ func promptYesNo(question string) bool { return strings.EqualFold(answer, "yes") } -// stdoutFatalError prints an error message to stdout and exits with a 1 exit code. -func stdoutFatalError(msg string) { - stdoutError(msg) +// checkFatalError prints an error message to stderr and exits with a 1 exit code. If err is nil, this is a no-op. +func checkFatalError(context string, err error) { + if err == nil { + return + } + os.Stderr.WriteString(fmt.Sprintf("%s: %s\n", context, err)) os.Exit(1) } diff --git a/cmd/renterd/main.go b/cmd/renterd/main.go index a32ecceed..c1609499b 100644 --- a/cmd/renterd/main.go +++ b/cmd/renterd/main.go @@ -38,9 +38,7 @@ func main() { // load the config cfg, network, genesis, err := loadConfig() - if err != nil { - stdoutFatalError("failed to load config: " + err.Error()) - } + checkFatalError("failed to load config", err) // NOTE: update the usage header when adding new commands if flag.Arg(0) == "version" { @@ -58,21 +56,14 @@ func main() { } // sanitize the config - if err := sanitizeConfig(&cfg); err != nil { - stdoutFatalError("failed to sanitize config: " + err.Error()) - } + checkFatalError("failed to sanitize config", sanitizeConfig(&cfg)) // create node node, err := newNode(cfg, network, genesis) - if err != nil { - stdoutFatalError("failed to create node: " + err.Error()) - } + checkFatalError("failed to create node", err) // start node - err = node.Run() - if err != nil { - stdoutFatalError("failed to run node: " + err.Error()) - } + checkFatalError("failed to run node", node.Run()) // wait for interrupt signal signalCh := make(chan os.Signal, 1) From b2c41d228bf81f6605a2e00cf32251fee1e9cabb Mon Sep 17 00:00:00 2001 From: Christopher Tarry Date: Fri, 18 Oct 2024 10:32:12 -0400 Subject: [PATCH 219/708] use checkFatalError in 2 more places --- cmd/renterd/commands.go | 5 +---- cmd/renterd/main.go | 6 +----- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/cmd/renterd/commands.go b/cmd/renterd/commands.go index 08fde9bf5..405d8f5b8 100644 --- a/cmd/renterd/commands.go +++ b/cmd/renterd/commands.go @@ -64,10 +64,7 @@ func cmdBuildConfig(cfg *config.Config) { func cmdSeed() { var seed [32]byte phrase := wallet.NewSeedPhrase() - if err := wallet.SeedFromPhrase(&seed, phrase); err != nil { - println(err.Error()) - os.Exit(1) - } + checkFatalError("failed to derive seed from phrase", wallet.SeedFromPhrase(&seed, phrase)) key := wallet.KeyFromSeed(&seed, 0) fmt.Println("Recovery Phrase:", phrase) fmt.Println("Address", types.StandardUnlockHash(key.PublicKey())) diff --git a/cmd/renterd/main.go b/cmd/renterd/main.go index c1609499b..fdfa7aa10 100644 --- a/cmd/renterd/main.go +++ b/cmd/renterd/main.go @@ -71,11 +71,7 @@ func main() { <-signalCh // shut down the node - err = node.Shutdown() - if err != nil { - os.Exit(1) - return - } + checkFatalError("failed to shut down", node.Shutdown()) os.Exit(0) } From 567e8de18041adbda411ff1d422b0bc42fac68e2 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Mon, 21 Oct 2024 15:35:46 +0200 Subject: [PATCH 220/708] e2e: fix TestBackup --- internal/test/e2e/cluster_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 56130769b..7a65b685e 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -2717,7 +2717,7 @@ func TestBackup(t *testing.T) { // test that backup fails for MySQL isSqlite := config.MySQLConfigFromEnv().URI == "" if !isSqlite { - err := bus.Backup(context.Background(), "", "") + err := bus.Backup(context.Background(), "main", "backup.sql") cluster.tt.AssertIs(err, api.ErrBackupNotSupported) return } From 64447e43ef96917b1bdbba80295315d62af71f86 Mon Sep 17 00:00:00 2001 From: Christopher Tarry Date: Mon, 21 Oct 2024 17:14:31 -0400 Subject: [PATCH 221/708] add extra prompt to enable/disable s3 gateway if user declines configuring --- cmd/renterd/config.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/renterd/config.go b/cmd/renterd/config.go index 3b6bd6dbe..41692f863 100644 --- a/cmd/renterd/config.go +++ b/cmd/renterd/config.go @@ -674,6 +674,7 @@ func setStoreConfig(cfg *config.Config) { func setS3Config(cfg *config.Config) { if !promptYesNo("Would you like to configure S3 settings?") { + cfg.S3.Enabled = promptYesNo("Would you like to enable the S3 gateway?") return } From 89c2e444ea40451e49c3d1135416593f4cebec54 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 22 Oct 2024 10:29:23 +0200 Subject: [PATCH 222/708] stores: add migration for multipart_uploads key field --- .../sql/mysql/migrations/main/migration_00024_key_prefix.sql | 4 ++++ stores/sql/mysql/migrations/main/schema.sql | 2 +- .../sql/sqlite/migrations/main/migration_00024_key_prefix.sql | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 stores/sql/mysql/migrations/main/migration_00024_key_prefix.sql create mode 100644 stores/sql/sqlite/migrations/main/migration_00024_key_prefix.sql diff --git a/stores/sql/mysql/migrations/main/migration_00024_key_prefix.sql b/stores/sql/mysql/migrations/main/migration_00024_key_prefix.sql new file mode 100644 index 000000000..ec6982f45 --- /dev/null +++ b/stores/sql/mysql/migrations/main/migration_00024_key_prefix.sql @@ -0,0 +1,4 @@ +ALTER TABLE `multipart_uploads` MODIFY `key` binary(33) NOT NULL; + +UPDATE `multipart_uploads` +SET `key` = CONCAT(x'01', LEFT(`key`, 32)); diff --git a/stores/sql/mysql/migrations/main/schema.sql b/stores/sql/mysql/migrations/main/schema.sql index 5694be24b..7b2952cfc 100644 --- a/stores/sql/mysql/migrations/main/schema.sql +++ b/stores/sql/mysql/migrations/main/schema.sql @@ -257,7 +257,7 @@ CREATE TABLE `host_blocklist_entry_hosts` ( CREATE TABLE `multipart_uploads` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT, `created_at` datetime(3) DEFAULT NULL, - `key` longblob, + `key` binary(33) NOT NULL, `upload_id` varchar(64) NOT NULL, `object_id` varchar(766) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, `db_bucket_id` bigint unsigned NOT NULL, diff --git a/stores/sql/sqlite/migrations/main/migration_00024_key_prefix.sql b/stores/sql/sqlite/migrations/main/migration_00024_key_prefix.sql new file mode 100644 index 000000000..de72eaada --- /dev/null +++ b/stores/sql/sqlite/migrations/main/migration_00024_key_prefix.sql @@ -0,0 +1,2 @@ +UPDATE `multipart_uploads` +SET `key` = CONCAT(x'01', `key`); From 19bcf6864201f4960bfff793bf2920e19476d03c Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Mon, 21 Oct 2024 16:52:29 +0200 Subject: [PATCH 223/708] CI: add netgo when building binaries --- .github/workflows/publish.yml | 30 +++++++++++++++--------------- .github/workflows/test.yml | 16 ++++++++-------- docker/Dockerfile | 4 ++-- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index b7b93efe2..2d647f9aa 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -8,8 +8,8 @@ on: - master - dev tags: - - 'v[0-9]+.[0-9]+.[0-9]+' - - 'v[0-9]+.[0-9]+.[0-9]+-**' + - "v[0-9]+.[0-9]+.[0-9]+" + - "v[0-9]+.[0-9]+.[0-9]+-**" concurrency: group: ${{ github.workflow }} @@ -56,12 +56,12 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - arch: [ amd64, arm64 ] + arch: [amd64, arm64] steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: - go-version: 'stable' + go-version: "stable" - name: Setup run: | go generate ./... @@ -78,7 +78,7 @@ jobs: run: | mkdir -p release ZIP_OUTPUT=release/renterd_${GOOS}_${GOARCH}.zip - go build -trimpath -o bin/ -a -ldflags '-s -w -linkmode external -extldflags "-static"' ./cmd/renterd + go build -trimpath -o bin/ -tags='netgo timetzdata' -a -ldflags '-s -w -linkmode external -extldflags "-static"' ./cmd/renterd cp README.md LICENSE bin/ zip -qj $ZIP_OUTPUT bin/* - uses: actions/upload-artifact@v4 @@ -89,12 +89,12 @@ jobs: runs-on: macos-latest strategy: matrix: - arch: [ amd64, arm64 ] + arch: [amd64, arm64] steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: - go-version: 'stable' + go-version: "stable" - name: Setup Notarization env: APPLE_CERT_ID: ${{ secrets.APPLE_CERT_ID }} @@ -143,7 +143,7 @@ jobs: run: | mkdir -p release ZIP_OUTPUT=release/renterd${{ env.ZIP_OUTPUT_SUFFIX }}_${GOOS}_${GOARCH}.zip - go build -trimpath -o bin/ -a -ldflags '-s -w' ./cmd/renterd + go build -trimpath -o bin/ -tags='netgo timetzdata' -a -ldflags '-s -w' ./cmd/renterd cp README.md LICENSE bin/ /usr/bin/codesign --deep -f -v --timestamp -o runtime,library -s $APPLE_CERT_ID bin/renterd ditto -ck bin $ZIP_OUTPUT @@ -156,12 +156,12 @@ jobs: runs-on: windows-latest strategy: matrix: - arch: [ amd64 ] + arch: [amd64] steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: - go-version: 'stable' + go-version: "stable" - name: Setup shell: bash run: | @@ -176,7 +176,7 @@ jobs: run: | mkdir -p release ZIP_OUTPUT=release/renterd${{ env.ZIP_OUTPUT_SUFFIX }}_${GOOS}_${GOARCH}.zip - go build -trimpath -o bin/ -a -ldflags '-s -w -linkmode external -extldflags "-static"' ./cmd/renterd + go build -trimpath -o bin/ -tags='netgo timetzdata' -a -ldflags '-s -w -linkmode external -extldflags "-static"' ./cmd/renterd azuresigntool sign -kvu "${{ secrets.AZURE_KEY_VAULT_URI }}" -kvi "${{ secrets.AZURE_CLIENT_ID }}" -kvt "${{ secrets.AZURE_TENANT_ID }}" -kvs "${{ secrets.AZURE_CLIENT_SECRET }}" -kvc ${{ secrets.AZURE_CERT_NAME }} -tr http://timestamp.digicert.com -v bin/renterd.exe cp README.md LICENSE bin/ 7z a $ZIP_OUTPUT bin/* @@ -187,7 +187,7 @@ jobs: combine-release-assets: runs-on: ubuntu-latest - needs: [ build-linux, build-mac, build-windows ] + needs: [build-linux, build-mac, build-windows] steps: - name: Merge Artifacts uses: actions/upload-artifact/merge@v4 @@ -196,7 +196,7 @@ jobs: dispatch-homebrew: # only runs on full releases if: startsWith(github.ref, 'refs/tags/v') && !contains(github.ref, '-') - needs: [ build-mac ] + needs: [build-mac] runs-on: ubuntu-latest steps: - name: Extract Tag Name @@ -218,7 +218,7 @@ jobs: } dispatch-linux: # run on full releases, release candidates, and master branch if: startsWith(github.ref, 'refs/tags/v') || endsWith(github.ref, 'master') - needs: [ build-linux ] + needs: [build-linux] runs-on: ubuntu-latest steps: - name: Build Dispatch Payload @@ -251,4 +251,4 @@ jobs: token: ${{ secrets.PAT_REPOSITORY_DISPATCH }} repository: siafoundation/linux event-type: release-tagged - client-payload: ${{ steps.get_payload.outputs.result }} \ No newline at end of file + client-payload: ${{ steps.get_payload.outputs.result }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3d7c281df..5321bc9b3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -30,8 +30,8 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ ubuntu-latest , macos-latest, windows-latest ] - go-version: [ '1.22', '1.23' ] + os: [ubuntu-latest, macos-latest, windows-latest] + go-version: ["1.22", "1.23"] steps: - name: Checkout uses: actions/checkout@v4 @@ -52,12 +52,12 @@ jobs: uses: mirromutth/mysql-action@v1.1 with: host port: 3800 - mysql version: '8' + mysql version: "8" mysql root password: test - name: Test Stores uses: n8maninger/action-golang-test@v1 with: - args: "-race;-short" + args: "-race;-short;-tags=netgo" - name: Test Stores - MySQL if: matrix.os == 'ubuntu-latest' uses: n8maninger/action-golang-test@v1 @@ -67,12 +67,12 @@ jobs: RENTERD_DB_PASSWORD: test with: package: "./stores" - args: "-race;-short" + args: "-race;-short;-tags=netgo" - name: Test Integration uses: n8maninger/action-golang-test@v1 with: package: "./internal/test/e2e/..." - args: "-failfast;-race;-timeout=60m" + args: "-failfast;-race;-timeout=60m;-tags=netgo" - name: Test Integration - MySQL if: matrix.os == 'ubuntu-latest' uses: n8maninger/action-golang-test@v1 @@ -82,6 +82,6 @@ jobs: RENTERD_DB_PASSWORD: test with: package: "./internal/test/e2e/..." - args: "-failfast;-race;-timeout=60m" + args: "-failfast;-race;-timeout=60m;-tags=netgo" - name: Build - run: go build -o bin/ ./cmd/renterd + run: go build -o bin/ -tags='netgo timetzdata' ./cmd/renterd diff --git a/docker/Dockerfile b/docker/Dockerfile index 350c6c6b6..401ca7de6 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -22,7 +22,7 @@ RUN if [ "$BUILD_RUN_GO_GENERATE" = "true" ] ; then go generate ./... ; fi # Build renterd. RUN --mount=type=cache,target=/root/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build \ - CGO_ENABLED=1 go build -ldflags='-s -w -linkmode external -extldflags "-static"' ./cmd/renterd + CGO_ENABLED=1 go build -tags='netgo timetzdata' -ldflags='-s -w -linkmode external -extldflags "-static"' ./cmd/renterd # Build image that will be used to run renterd. FROM scratch @@ -37,7 +37,7 @@ ENV PUID=0 ENV PGID=0 # Renterd env args -ENV RENTERD_API_PASSWORD= +ENV RENTERD_API_PASSWORD= ENV RENTERD_SEED= ENV RENTERD_CONFIG_FILE=/data/renterd.yml ENV RENTERD_NETWORK='mainnet' From 8e8dbcba6d4fe5c8081c7b0a9c59600d57c345d3 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 22 Oct 2024 11:34:22 +0200 Subject: [PATCH 224/708] bus: rename route --- bus/bus.go | 4 ++-- bus/client/client.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bus/bus.go b/bus/bus.go index 27c07f381..6d49a502e 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -189,7 +189,7 @@ type ( // BackupStore is the interface of a store that can be backed up. BackupStore interface { - Backup(ctx context.Context, dbID, destPath string) error + Backup(ctx context.Context, dbID, dst string) error } // A ChainStore stores information about the chain. @@ -492,7 +492,7 @@ func (b *Bus) Handler() http.Handler { "POST /syncer/connect": b.syncerConnectHandler, "GET /syncer/peers": b.syncerPeersHandler, - "POST /system/database/backup": b.postSystemSQLite3BackupHandler, + "POST /system/sqlite3/backup": b.postSystemSQLite3BackupHandler, "GET /txpool/recommendedfee": b.txpoolFeeHandler, "GET /txpool/transactions": b.txpoolTransactionsHandler, diff --git a/bus/client/client.go b/bus/client/client.go index ee3dacc6c..e5460c08f 100644 --- a/bus/client/client.go +++ b/bus/client/client.go @@ -23,7 +23,7 @@ func New(addr, password string) *Client { } func (c *Client) Backup(ctx context.Context, database, dstPath string) (err error) { - err = c.c.WithContext(ctx).POST("/system/database/backup", api.BackupRequest{ + err = c.c.WithContext(ctx).POST("/system/sqlite3/backup", api.BackupRequest{ Database: database, Path: dstPath, }, nil) From bca7f0b1a7fc2b2cc2a778925bd9461be26d4479 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 22 Oct 2024 14:33:21 +0200 Subject: [PATCH 225/708] contractor: remove allowance --- api/autopilot.go | 18 ++-- api/contract.go | 1 - api/setting.go | 16 ---- autopilot/alerts.go | 10 +- autopilot/autopilot.go | 12 +-- autopilot/contractor/contract_spending.go | 19 ---- autopilot/contractor/contractor.go | 106 +++++----------------- autopilot/contractor/evaluate.go | 2 +- autopilot/contractor/evaluate_test.go | 3 +- autopilot/contractor/hostscore.go | 49 +++++----- autopilot/contractor/hostscore_test.go | 17 ++-- autopilot/contractor/state.go | 8 +- bus/bus.go | 25 +---- bus/client/contracts.go | 3 +- bus/routes.go | 5 +- internal/bus/pinmanager.go | 52 ----------- internal/bus/pinmanager_test.go | 34 +------ internal/test/config.go | 8 +- internal/test/e2e/settings_test.go | 10 -- stores/autopilot_test.go | 8 +- 20 files changed, 96 insertions(+), 310 deletions(-) diff --git a/api/autopilot.go b/api/autopilot.go index 1dca769a1..402f2e584 100644 --- a/api/autopilot.go +++ b/api/autopilot.go @@ -43,15 +43,15 @@ type ( // ContractsConfig contains all contract settings used in the autopilot. ContractsConfig struct { - Set string `json:"set"` - Amount uint64 `json:"amount"` - Allowance types.Currency `json:"allowance"` - Period uint64 `json:"period"` - RenewWindow uint64 `json:"renewWindow"` - Download uint64 `json:"download"` - Upload uint64 `json:"upload"` - Storage uint64 `json:"storage"` - Prune bool `json:"prune"` + Set string `json:"set"` + Amount uint64 `json:"amount"` + InitialFunding types.Currency `json:"initialFunding"` + Period uint64 `json:"period"` + RenewWindow uint64 `json:"renewWindow"` + Download uint64 `json:"download"` + Upload uint64 `json:"upload"` + Storage uint64 `json:"storage"` + Prune bool `json:"prune"` } // HostsConfig contains all hosts settings used in the autopilot. diff --git a/api/contract.go b/api/contract.go index e0d98bcb9..242f68824 100644 --- a/api/contract.go +++ b/api/contract.go @@ -169,7 +169,6 @@ type ( ContractRenewRequest struct { EndHeight uint64 `json:"endHeight"` ExpectedNewStorage uint64 `json:"expectedNewStorage"` - MaxFundAmount types.Currency `json:"maxFundAmount"` MinNewCollateral types.Currency `json:"minNewCollateral"` RenterFunds types.Currency `json:"renterFunds"` } diff --git a/api/setting.go b/api/setting.go index c0b93e46a..1aad43b37 100644 --- a/api/setting.go +++ b/api/setting.go @@ -134,9 +134,6 @@ type ( // pinned settings are updated based on the exchange rate at the time. Threshold float64 `json:"threshold"` - // Autopilots contains the pinned settings for every autopilot. - Autopilots map[string]AutopilotPins `json:"autopilots"` - // GougingSettingsPins contains the pinned settings for the gouging // settings. GougingSettingsPins GougingSettingsPins `json:"gougingSettingsPins"` @@ -159,12 +156,6 @@ type ( TotalShards int `json:"totalShards"` } - // AutopilotPins contains the available autopilot settings that can be - // pinned. - AutopilotPins struct { - Allowance Pin `json:"allowance"` - } - // GougingSettingsPins contains the available gouging settings that can be // pinned. GougingSettingsPins struct { @@ -202,13 +193,6 @@ func (ps PinnedSettings) Enabled() bool { ps.GougingSettingsPins.MaxUpload.Pinned { return true } - - for _, pin := range ps.Autopilots { - if pin.Allowance.Pinned { - return true - } - } - return false } diff --git a/autopilot/alerts.go b/autopilot/alerts.go index 24b7a8daf..30ce9995a 100644 --- a/autopilot/alerts.go +++ b/autopilot/alerts.go @@ -28,7 +28,7 @@ func (ap *Autopilot) DismissAlert(ctx context.Context, ids ...types.Hash256) { } } -func newAccountLowBalanceAlert(address types.Address, balance, allowance types.Currency, bh, renewWindow, endHeight uint64) alerts.Alert { +func newAccountLowBalanceAlert(address types.Address, balance, initialFunding types.Currency, bh, renewWindow, endHeight uint64) alerts.Alert { severity := alerts.SeverityInfo if bh+renewWindow/2 >= endHeight { severity = alerts.SeverityCritical @@ -41,10 +41,10 @@ func newAccountLowBalanceAlert(address types.Address, balance, allowance types.C Severity: severity, Message: "Wallet is low on funds", Data: map[string]any{ - "address": address, - "balance": balance, - "allowance": allowance, - "hint": fmt.Sprintf("The current wallet balance of %v is less than the configured allowance of %v. Ideally, a wallet holds at least one allowance worth of funds to make sure it can renew all its contracts.", balance, allowance), + "address": address, + "balance": balance, + "initialFunding": initialFunding, + "hint": fmt.Sprintf("The current wallet balance of %v is less than the configured initialFunding of %v. Ideally, a wallet holds at least one allowance worth of funds to make sure it can renew all its contracts.", balance, initialFunding), }, Timestamp: time.Now(), } diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 7fd37af09..8c948fc20 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -47,7 +47,7 @@ type Bus interface { Contracts(ctx context.Context, opts api.ContractsOpts) (contracts []api.ContractMetadata, err error) FileContractTax(ctx context.Context, payout types.Currency) (types.Currency, error) FormContract(ctx context.Context, renterAddress types.Address, renterFunds types.Currency, hostKey types.PublicKey, hostIP string, hostCollateral types.Currency, endHeight uint64) (api.ContractMetadata, error) - RenewContract(ctx context.Context, fcid types.FileContractID, endHeight uint64, renterFunds, minNewCollateral, maxFundAmount types.Currency, expectedNewStorage uint64) (api.ContractMetadata, error) + RenewContract(ctx context.Context, fcid types.FileContractID, endHeight uint64, renterFunds, minNewCollateral types.Currency, expectedNewStorage uint64) (api.ContractMetadata, error) UpdateContractSet(ctx context.Context, set string, toAdd, toRemove []types.FileContractID) error PrunableData(ctx context.Context) (prunableData api.ContractsPrunableDataResponse, err error) PruneContract(ctx context.Context, id types.FileContractID, timeout time.Duration) (api.ContractPruneResponse, error) @@ -569,8 +569,8 @@ func (ap *Autopilot) performWalletMaintenance(ctx context.Context) error { } // no allowance - nothing to do - if cfg.Contracts.Allowance.IsZero() { - l.Warn("wallet maintenance skipped, no allowance set") + if cfg.Contracts.InitialFunding.IsZero() { + l.Warn("wallet maintenance skipped, no initial funding set") return nil } @@ -590,8 +590,8 @@ func (ap *Autopilot) performWalletMaintenance(ctx context.Context) error { balance := wallet.Confirmed // register an alert if balance is low - if balance.Cmp(cfg.Contracts.Allowance) < 0 { - ap.RegisterAlert(ctx, newAccountLowBalanceAlert(w.Address, balance, cfg.Contracts.Allowance, cs.BlockHeight, renewWindow, autopilot.EndHeight())) + if balance.Cmp(cfg.Contracts.InitialFunding) < 0 { + ap.RegisterAlert(ctx, newAccountLowBalanceAlert(w.Address, balance, cfg.Contracts.InitialFunding, cs.BlockHeight, renewWindow, autopilot.EndHeight())) } else { ap.DismissAlert(ctx, alertLowBalanceID) } @@ -612,7 +612,7 @@ func (ap *Autopilot) performWalletMaintenance(ctx context.Context) error { // figure out the amount per output wantedNumOutputs := 10 - amount := cfg.Contracts.Allowance.Div64(uint64(wantedNumOutputs)) + amount := cfg.Contracts.InitialFunding.Div64(uint64(wantedNumOutputs)) // redistribute outputs ids, err := b.WalletRedistribute(ctx, wantedNumOutputs, amount) diff --git a/autopilot/contractor/contract_spending.go b/autopilot/contractor/contract_spending.go index 22790dbc1..88f6753f9 100644 --- a/autopilot/contractor/contract_spending.go +++ b/autopilot/contractor/contract_spending.go @@ -1,8 +1,6 @@ package contractor import ( - "context" - "go.sia.tech/core/types" "go.sia.tech/renterd/api" ) @@ -28,20 +26,3 @@ func currentPeriodSpending(contracts []api.ContractMetadata, currentPeriod uint6 } return totalAllocated } - -func remainingAllowance(ctx context.Context, bus Bus, state *MaintenanceState) (types.Currency, error) { - contracts, err := bus.Contracts(ctx, api.ContractsOpts{}) - if err != nil { - return types.Currency{}, err - } - - // find out how much we spent in the current period - spent := currentPeriodSpending(contracts, state.Period()) - - // figure out remaining funds - var remaining types.Currency - if state.Allowance().Cmp(spent) > 0 { - remaining = state.Allowance().Sub(spent) - } - return remaining, nil -} diff --git a/autopilot/contractor/contractor.go b/autopilot/contractor/contractor.go index dfd675f50..6124541e1 100644 --- a/autopilot/contractor/contractor.go +++ b/autopilot/contractor/contractor.go @@ -46,11 +46,6 @@ const ( // NOTE: updating this value indirectly affects 'maxKeepLeeway' leewayPctRequiredContracts = 0.9 - // maxInitialContractFundingDivisor and minInitialContractFundingDivisor - // define a range we use when calculating the initial contract funding - maxInitialContractFundingDivisor = uint64(10) - minInitialContractFundingDivisor = uint64(20) - // minAllowedScoreLeeway is a factor by which a host can be under the lowest // score found in a random sample of scores before being considered not // usable. @@ -89,7 +84,7 @@ type Bus interface { Contracts(ctx context.Context, opts api.ContractsOpts) (contracts []api.ContractMetadata, err error) FileContractTax(ctx context.Context, payout types.Currency) (types.Currency, error) FormContract(ctx context.Context, renterAddress types.Address, renterFunds types.Currency, hostKey types.PublicKey, hostIP string, hostCollateral types.Currency, endHeight uint64) (api.ContractMetadata, error) - RenewContract(ctx context.Context, fcid types.FileContractID, endHeight uint64, renterFunds, minNewCollateral, maxFundAmount types.Currency, expectedNewStorage uint64) (api.ContractMetadata, error) + RenewContract(ctx context.Context, fcid types.FileContractID, endHeight uint64, renterFunds, minNewCollateral types.Currency, expectedNewStorage uint64) (api.ContractMetadata, error) Host(ctx context.Context, hostKey types.PublicKey) (api.Host, error) Hosts(ctx context.Context, opts api.HostOptions) ([]api.Host, error) RecordContractSetChurnMetric(ctx context.Context, metrics ...api.ContractSetChurnMetric) error @@ -110,9 +105,9 @@ type contractChecker interface { } type contractReviser interface { - formContract(ctx *mCtx, w Worker, host api.Host, minInitialContractFunds, maxInitialContractFunds types.Currency, budget *types.Currency, logger *zap.SugaredLogger) (cm api.ContractMetadata, ourFault bool, err error) - renewContract(ctx *mCtx, w Worker, c api.Contract, h api.Host, budget *types.Currency, logger *zap.SugaredLogger) (cm api.ContractMetadata, ourFault bool, err error) - refreshContract(ctx *mCtx, w Worker, c api.Contract, h api.Host, budget *types.Currency, logger *zap.SugaredLogger) (cm api.ContractMetadata, ourFault bool, err error) + formContract(ctx *mCtx, w Worker, host api.Host, minInitialContractFunds types.Currency, logger *zap.SugaredLogger) (cm api.ContractMetadata, ourFault bool, err error) + renewContract(ctx *mCtx, w Worker, c api.Contract, h api.Host, logger *zap.SugaredLogger) (cm api.ContractMetadata, ourFault bool, err error) + refreshContract(ctx *mCtx, w Worker, c api.Contract, h api.Host, logger *zap.SugaredLogger) (cm api.ContractMetadata, ourFault bool, err error) } type revisionBroadcaster interface { @@ -181,7 +176,7 @@ func (c *Contractor) PerformContractMaintenance(ctx context.Context, w Worker, s return performContractMaintenance(newMaintenanceCtx(ctx, state), c.alerter, c.bus, c.churn, w, c, c, c, c.logger) } -func (c *Contractor) formContract(ctx *mCtx, w Worker, host api.Host, minInitialContractFunds, maxInitialContractFunds types.Currency, budget *types.Currency, logger *zap.SugaredLogger) (cm api.ContractMetadata, proceed bool, err error) { +func (c *Contractor) formContract(ctx *mCtx, w Worker, host api.Host, minInitialContractFunds types.Currency, logger *zap.SugaredLogger) (cm api.ContractMetadata, proceed bool, err error) { logger = logger.With("hk", host.PublicKey, "hostVersion", host.Settings.Version, "hostRelease", host.Settings.Release) // convenience variables @@ -202,11 +197,7 @@ func (c *Contractor) formContract(ctx *mCtx, w Worker, host api.Host, minInitial // check our budget txnFee := ctx.state.Fee.Mul64(estimatedFileContractTransactionSetSize) - renterFunds := initialContractFunding(scan.Settings, txnFee, minInitialContractFunds, maxInitialContractFunds) - if budget.Cmp(renterFunds) < 0 { - logger.Infow("insufficient budget", "budget", budget, "needed", renterFunds) - return api.ContractMetadata{}, false, errors.New("insufficient budget") - } + renterFunds := initialContractFunding(scan.Settings, txnFee, minInitialContractFunds) // calculate the host collateral endHeight := ctx.EndHeight() @@ -224,9 +215,6 @@ func (c *Contractor) formContract(ctx *mCtx, w Worker, host api.Host, minInitial return api.ContractMetadata{}, true, err } - // update the budget - *budget = budget.Sub(renterFunds) - logger.Infow("formation succeeded", "fcid", contract.ID, "renterFunds", renterFunds.String(), @@ -262,7 +250,7 @@ func (c *Contractor) pruneContractRefreshFailures(contracts []api.ContractMetada } } -func (c *Contractor) refreshContract(ctx *mCtx, w Worker, contract api.Contract, host api.Host, budget *types.Currency, logger *zap.SugaredLogger) (cm api.ContractMetadata, proceed bool, err error) { +func (c *Contractor) refreshContract(ctx *mCtx, w Worker, contract api.Contract, host api.Host, logger *zap.SugaredLogger) (cm api.ContractMetadata, proceed bool, err error) { if contract.Revision == nil { return api.ContractMetadata{}, true, errors.New("can't refresh contract without a revision") } @@ -289,24 +277,14 @@ func (c *Contractor) refreshContract(ctx *mCtx, w Worker, contract api.Contract, renterFunds = rev.ValidRenterPayout() // don't increase funds } - // check our budget - if budget.Cmp(renterFunds) < 0 { - logger.Warnw("insufficient budget for refresh", "hk", hk, "fcid", fcid, "budget", budget, "needed", renterFunds) - return api.ContractMetadata{}, false, fmt.Errorf("insufficient budget: %s < %s", budget.String(), renterFunds.String()) - } - expectedNewStorage := renterFundsToExpectedStorage(renterFunds, contract.EndHeight()-cs.BlockHeight, pt) unallocatedCollateral := contract.RemainingCollateral() // a refresh should always result in a contract that has enough collateral minNewCollateral := minRemainingCollateral(ctx.AutopilotConfig(), ctx.state.RS, renterFunds, settings, pt).Mul64(2) - // maxFundAmount is the remaining funds of the contract to refresh plus the - // budget since the previous contract was in the same period - maxFundAmount := budget.Add(rev.ValidRenterPayout()) - // renew the contract - renewal, err := c.bus.RenewContract(ctx, contract.ID, contract.EndHeight(), renterFunds, minNewCollateral, maxFundAmount, expectedNewStorage) + renewal, err := c.bus.RenewContract(ctx, contract.ID, contract.EndHeight(), renterFunds, minNewCollateral, expectedNewStorage) if err != nil { if strings.Contains(err.Error(), "new collateral is too low") { logger.Infow("refresh failed: contract wouldn't have enough collateral after refresh", @@ -324,9 +302,6 @@ func (c *Contractor) refreshContract(ctx *mCtx, w Worker, contract api.Contract, return api.ContractMetadata{}, true, err } - // update the budget - *budget = budget.Sub(renewal.InitialRenterFunds) - // add to renewed set logger.Infow("refresh succeeded", "fcid", renewal.ID, @@ -337,7 +312,7 @@ func (c *Contractor) refreshContract(ctx *mCtx, w Worker, contract api.Contract, return renewal, true, nil } -func (c *Contractor) renewContract(ctx *mCtx, w Worker, contract api.Contract, host api.Host, budget *types.Currency, logger *zap.SugaredLogger) (cm api.ContractMetadata, proceed bool, err error) { +func (c *Contractor) renewContract(ctx *mCtx, w Worker, contract api.Contract, host api.Host, logger *zap.SugaredLogger) (cm api.ContractMetadata, proceed bool, err error) { if contract.Revision == nil { return api.ContractMetadata{}, true, errors.New("can't renew contract without a revision") } @@ -356,15 +331,9 @@ func (c *Contractor) renewContract(ctx *mCtx, w Worker, contract api.Contract, h // calculate the renter funds for the renewal a.k.a. the funds the renter will // be able to spend - minRenterFunds, _ := initialContractFundingMinMax(ctx.AutopilotConfig()) + minRenterFunds := ctx.InitialContractFunding() renterFunds := renewFundingEstimate(minRenterFunds, contract.InitialRenterFunds, contract.RenterFunds(), logger) - // check our budget - if budget.Cmp(renterFunds) < 0 { - logger.Infow("insufficient budget", "budget", budget, "needed", renterFunds) - return api.ContractMetadata{}, false, errors.New("insufficient budget") - } - // sanity check the endheight is not the same on renewals endHeight := ctx.EndHeight() if endHeight <= rev.EndHeight() { @@ -376,7 +345,7 @@ func (c *Contractor) renewContract(ctx *mCtx, w Worker, contract api.Contract, h expectedNewStorage := renterFundsToExpectedStorage(renterFunds, endHeight-cs.BlockHeight, pt) // renew the contract - renewal, err := c.bus.RenewContract(ctx, fcid, endHeight, renterFunds, types.ZeroCurrency, *budget, expectedNewStorage) + renewal, err := c.bus.RenewContract(ctx, fcid, endHeight, renterFunds, types.ZeroCurrency, expectedNewStorage) if err != nil { logger.Errorw( "renewal failed", @@ -391,9 +360,6 @@ func (c *Contractor) renewContract(ctx *mCtx, w Worker, contract api.Contract, h return api.ContractMetadata{}, true, err } - // update the budget - *budget = budget.Sub(renewal.InitialRenterFunds) - logger.Infow( "renewal succeeded", "fcid", renewal.ID, @@ -472,7 +438,7 @@ func (c *Contractor) refreshFundingEstimate(cfg api.AutopilotConfig, contract ap // check for a sane minimum that is equal to the initial contract funding // but without an upper cap. - minInitialContractFunds, _ := initialContractFundingMinMax(cfg) + minInitialContractFunds := cfg.Contracts.InitialFunding minimum := c.initialContractFunding(host.Settings, txnFeeEstimate, minInitialContractFunds, types.ZeroCurrency) refreshAmountCapped := refreshAmount if refreshAmountCapped.Cmp(minimum) < 0 { @@ -588,9 +554,9 @@ func canSkipContractMaintenance(ctx context.Context, cfg api.ContractsConfig) (s return "contracts is set to zero, skipping contract maintenance", true } - // no maintenance if no allowance was set - if cfg.Allowance.IsZero() { - return "allowance is set to zero, skipping contract maintenance", true + // no maintenance if no initial funding amount was set + if cfg.InitialFunding.IsZero() { + return "initial funding is set to zero, skipping contract maintenance", true } // no maintenance if no period was set @@ -743,28 +709,14 @@ func computeContractSetChanged(ctx *mCtx, alerter alerts.Alerter, bus Bus, churn return hasChanged, nil } -func initialContractFunding(settings rhpv2.HostSettings, txnFee, minFunding, maxFunding types.Currency) types.Currency { - if !maxFunding.IsZero() && minFunding.Cmp(maxFunding) > 0 { - panic("given min is larger than max") // developer error - } - +func initialContractFunding(settings rhpv2.HostSettings, txnFee, minFunding types.Currency) types.Currency { funding := settings.ContractPrice.Add(txnFee).Mul64(10) // TODO arbitrary multiplier if !minFunding.IsZero() && funding.Cmp(minFunding) < 0 { return minFunding } - if !maxFunding.IsZero() && funding.Cmp(maxFunding) > 0 { - return maxFunding - } return funding } -func initialContractFundingMinMax(cfg api.AutopilotConfig) (minFunding types.Currency, maxFunding types.Currency) { - allowance := cfg.Contracts.Allowance.Div64(cfg.Contracts.Amount) - minFunding = allowance.Div64(minInitialContractFundingDivisor) - maxFunding = allowance.Div64(maxInitialContractFundingDivisor) - return -} - func refreshPriceTable(ctx context.Context, w Worker, host *api.Host) error { // return early if the host's pricetable is not expired yet if time.Now().Before(host.PriceTable.Expiry) { @@ -847,7 +799,7 @@ func renterFundsToExpectedStorage(renterFunds types.Currency, duration uint64, p // keep contracts with and the 'dropOutReasons' map is updated with the reasons // for dropping out of the set. If a contract is refreshed or renewed, the // 'remainingFunds' are adjusted. -func performContractChecks(ctx *mCtx, alerter alerts.Alerter, bus Bus, w Worker, cc contractChecker, cr contractReviser, ipFilter *hostSet, logger *zap.SugaredLogger, remainingFunds *types.Currency) ([]api.ContractMetadata, map[types.FileContractID]string, error) { +func performContractChecks(ctx *mCtx, alerter alerts.Alerter, bus Bus, w Worker, cc contractChecker, cr contractReviser, ipFilter *hostSet, logger *zap.SugaredLogger) ([]api.ContractMetadata, map[types.FileContractID]string, error) { var filteredContracts []api.ContractMetadata keepContract := func(c api.ContractMetadata, h api.Host) { filteredContracts = append(filteredContracts, c) @@ -1004,7 +956,7 @@ func performContractChecks(ctx *mCtx, alerter alerts.Alerter, bus Bus, w Worker, var ourFault bool if needsRenew { var renewedContract api.ContractMetadata - renewedContract, ourFault, err = cr.renewContract(ctx, w, c, host, remainingFunds, logger) + renewedContract, ourFault, err = cr.renewContract(ctx, w, c, host, logger) if err != nil { logger = logger.With(zap.Error(err)).With("ourFault", ourFault) @@ -1023,7 +975,7 @@ func performContractChecks(ctx *mCtx, alerter alerts.Alerter, bus Bus, w Worker, } } else if needsRefresh { var refreshedContract api.ContractMetadata - refreshedContract, ourFault, err = cr.refreshContract(ctx, w, c, host, remainingFunds, logger) + refreshedContract, ourFault, err = cr.refreshContract(ctx, w, c, host, logger) if err != nil { logger = logger.With(zap.Error(err)).With("ourFault", ourFault) @@ -1072,7 +1024,7 @@ func performContractChecks(ctx *mCtx, alerter alerts.Alerter, bus Bus, w Worker, // performContracdtFormations forms up to 'wanted' new contracts with hosts. The // 'ipFilter' and 'remainingFunds' are updated with every new contract. -func performContractFormations(ctx *mCtx, bus Bus, w Worker, cr contractReviser, ipFilter *hostSet, logger *zap.SugaredLogger, remainingFunds *types.Currency, wanted int) ([]api.ContractMetadata, error) { +func performContractFormations(ctx *mCtx, bus Bus, w Worker, cr contractReviser, ipFilter *hostSet, logger *zap.SugaredLogger, wanted int) ([]api.ContractMetadata, error) { var formedContracts []api.ContractMetadata addContract := func(c api.ContractMetadata, h api.Host) { formedContracts = append(formedContracts, c) @@ -1127,8 +1079,8 @@ func performContractFormations(ctx *mCtx, bus Bus, w Worker, cr contractReviser, logger.Warn("not enough candidates to form new contracts") } - // calculate min/max contract funds - minInitialContractFunds, maxInitialContractFunds := initialContractFundingMinMax(ctx.AutopilotConfig()) + // get the initial contract funds + minInitialContractFunds := ctx.InitialContractFunding() // form contracts until the new set has the desired size for _, candidate := range candidates { @@ -1158,7 +1110,6 @@ func performContractFormations(ctx *mCtx, bus Bus, w Worker, cr contractReviser, // prepare a logger logger := logger.With("hostKey", candidate.host.PublicKey). - With("remainingBudget", remainingFunds). With("addresses", candidate.host.ResolvedAddresses) // perform gouging checks on the fly to ensure the host is not gouging its prices @@ -1173,7 +1124,7 @@ func performContractFormations(ctx *mCtx, bus Bus, w Worker, cr contractReviser, continue } - formedContract, proceed, err := cr.formContract(ctx, w, candidate.host, minInitialContractFunds, maxInitialContractFunds, remainingFunds, logger) + formedContract, proceed, err := cr.formContract(ctx, w, candidate.host, minInitialContractFunds, logger) if err != nil { logger.With(zap.Error(err)).Error("failed to form contract") continue @@ -1291,13 +1242,6 @@ func performContractMaintenance(ctx *mCtx, alerter alerts.Alerter, bus Bus, chur return false, nil } - // compute the remaining budget for this period - remaining, err := remainingAllowance(ctx, bus, ctx.state) - if err != nil { - return false, fmt.Errorf("failed to compute remaining allowance: %w", err) - } - logger = logger.With("remainingAllowance", remaining) - logger.Infow("performing contract maintenance") // STEP 1: perform host checks @@ -1310,13 +1254,13 @@ func performContractMaintenance(ctx *mCtx, alerter alerts.Alerter, bus Bus, chur logger: logger.Named("ipFilter"), subnetToHostKey: make(map[string]string), } - keptContracts, churnReasons, err := performContractChecks(ctx, alerter, bus, w, cc, cr, ipFilter, logger, &remaining) + keptContracts, churnReasons, err := performContractChecks(ctx, alerter, bus, w, cc, cr, ipFilter, logger) if err != nil { return false, err } // STEP 3: perform contract formation - formedContracts, err := performContractFormations(ctx, bus, w, cr, ipFilter, logger, &remaining, int(ctx.WantedContracts())-len(keptContracts)) + formedContracts, err := performContractFormations(ctx, bus, w, cr, ipFilter, logger, int(ctx.WantedContracts())-len(keptContracts)) if err != nil { return false, err } diff --git a/autopilot/contractor/evaluate.go b/autopilot/contractor/evaluate.go index 61085e983..461857f31 100644 --- a/autopilot/contractor/evaluate.go +++ b/autopilot/contractor/evaluate.go @@ -26,7 +26,7 @@ func countUsableHosts(cfg api.AutopilotConfig, cs api.ConsensusState, period uin // a recommendation on how to loosen it. func EvaluateConfig(cfg api.AutopilotConfig, cs api.ConsensusState, rs api.RedundancySettings, gs api.GougingSettings, hosts []api.Host) (resp api.ConfigEvaluationResponse, _ error) { // we need an allowance and a target amount of contracts to evaluate - if cfg.Contracts.Allowance.IsZero() || cfg.Contracts.Amount == 0 { + if cfg.Contracts.Amount == 0 { return api.ConfigEvaluationResponse{}, ErrMissingRequiredFields } diff --git a/autopilot/contractor/evaluate_test.go b/autopilot/contractor/evaluate_test.go index ef292190b..750bb1621 100644 --- a/autopilot/contractor/evaluate_test.go +++ b/autopilot/contractor/evaluate_test.go @@ -47,8 +47,7 @@ func TestOptimiseGougingSetting(t *testing.T) { // prepare settings that result in all hosts being usable cfg := api.AutopilotConfig{ Contracts: api.ContractsConfig{ - Allowance: types.Siacoins(100000), - Amount: 10, + Amount: 10, }, } cs := api.ConsensusState{ diff --git a/autopilot/contractor/hostscore.go b/autopilot/contractor/hostscore.go index 4535899fd..f8d92a878 100644 --- a/autopilot/contractor/hostscore.go +++ b/autopilot/contractor/hostscore.go @@ -64,30 +64,31 @@ func hostScore(cfg api.AutopilotConfig, h api.Host, expectedRedundancy float64) func priceAdjustmentScore(hostCostPerPeriod types.Currency, cfg api.ContractsConfig) float64 { // return early if the allowance or amount of hosts is zero, avoiding a // division by zero panic below. - if cfg.Allowance.IsZero() || cfg.Amount == 0 { - return math.SmallestNonzeroFloat64 - } - - hostPeriodBudget := cfg.Allowance.Div64(cfg.Amount) - - ratio := new(big.Rat).SetFrac(hostCostPerPeriod.Big(), hostPeriodBudget.Big()) - fRatio, _ := ratio.Float64() - switch ratio.Cmp(new(big.Rat).SetUint64(1)) { - case 0: - return 0.5 // ratio is exactly 1 -> score is 0.5 - case 1: - // cost is greater than budget -> score is in range (0; 0.5) - // - return 1.5 / math.Pow(3, fRatio) - case -1: - // cost < budget -> score is (0.5; 1] - s := 0.44 + 0.06*(1/fRatio) - if s > 1.0 { - s = 1.0 - } - return s - } - panic("unreachable") + // if cfg.Allowance.IsZero() || cfg.Amount == 0 { + // return math.SmallestNonzeroFloat64 + // } + // + // hostPeriodBudget := cfg.Allowance.Div64(cfg.Amount) + // + // ratio := new(big.Rat).SetFrac(hostCostPerPeriod.Big(), hostPeriodBudget.Big()) + // fRatio, _ := ratio.Float64() + // switch ratio.Cmp(new(big.Rat).SetUint64(1)) { + // case 0: + // return 0.5 // ratio is exactly 1 -> score is 0.5 + // case 1: + // // cost is greater than budget -> score is in range (0; 0.5) + // // + // return 1.5 / math.Pow(3, fRatio) + // case -1: + // // cost < budget -> score is (0.5; 1] + // s := 0.44 + 0.06*(1/fRatio) + // if s > 1.0 { + // s = 1.0 + // } + // return s + // } + // panic("unreachable") + return 1 // TODO: implement } func storageRemainingScore(h rhpv2.HostSettings, storedData uint64, allocationPerHost float64) float64 { diff --git a/autopilot/contractor/hostscore_test.go b/autopilot/contractor/hostscore_test.go index 6acc309ec..bffcf399b 100644 --- a/autopilot/contractor/hostscore_test.go +++ b/autopilot/contractor/hostscore_test.go @@ -14,10 +14,10 @@ import ( var cfg = api.AutopilotConfig{ Contracts: api.ContractsConfig{ - Allowance: types.Siacoins(1000), - Amount: 50, - Period: 144 * 7 * 6, - RenewWindow: 144 * 7 * 2, + Amount: 50, + InitialFunding: types.Siacoins(1), + Period: 144 * 7 * 6, + RenewWindow: 144 * 7 * 2, Download: 1e12, // 1 TB Upload: 1e12, // 1 TB @@ -104,12 +104,12 @@ func TestHostScore(t *testing.T) { t.Fatal("unexpected") } - // assert zero allowance does not panic - cfg.Contracts.Allowance = types.ZeroCurrency + // assert zero initial funding does not panic + cfg.Contracts.InitialFunding = types.ZeroCurrency _ = hostScore(cfg, h1, redundancy) // assert missing amount does not panic - cfg.Contracts.Allowance = types.Siacoins(1000) // reset + cfg.Contracts.InitialFunding = types.Siacoins(1) // reset cfg.Contracts.Amount = 0 _ = hostScore(cfg, h1, redundancy) } @@ -118,8 +118,7 @@ func TestPriceAdjustmentScore(t *testing.T) { score := func(cpp uint32) float64 { t.Helper() cfg := api.ContractsConfig{ - Allowance: types.Siacoins(5000), - Amount: 50, + Amount: 50, } return priceAdjustmentScore(types.Siacoins(cpp), cfg) } diff --git a/autopilot/contractor/state.go b/autopilot/contractor/state.go index bb2fff39a..3365844e9 100644 --- a/autopilot/contractor/state.go +++ b/autopilot/contractor/state.go @@ -41,10 +41,6 @@ func (ctx *mCtx) ApID() string { return ctx.state.AP.ID } -func (ctx *mCtx) Allowance() types.Currency { - return ctx.state.Allowance() -} - func (ctx *mCtx) AutopilotConfig() api.AutopilotConfig { return ctx.state.AP.Config } @@ -116,8 +112,8 @@ func (ctx *mCtx) SortContractsForMaintenance(contracts []api.Contract) { ctx.state.ContractsConfig().SortContractsForMaintenance(contracts) } -func (state *MaintenanceState) Allowance() types.Currency { - return state.AP.Config.Contracts.Allowance +func (ctx *mCtx) InitialContractFunding() types.Currency { + return ctx.state.AP.Config.Contracts.InitialFunding } func (state *MaintenanceState) ContractsConfig() api.ContractsConfig { diff --git a/bus/bus.go b/bus/bus.go index aa3a93906..bdcb807ac 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -673,20 +673,6 @@ func (b *Bus) fetchSetting(ctx context.Context, key string) (interface{}, error) } else if err != nil { return nil, err } - - // populate the Autopilots map with the current autopilots - aps, err := b.as.Autopilots(ctx) - if err != nil { - return nil, fmt.Errorf("failed to fetch autopilots: %w", err) - } - if ps.Autopilots == nil { - ps.Autopilots = make(map[string]api.AutopilotPins) - } - for _, ap := range aps { - if _, exists := ps.Autopilots[ap.ID]; !exists { - ps.Autopilots[ap.ID] = api.AutopilotPins{} - } - } return ps, nil case stores.SettingUpload: us, err := b.ss.UploadSettings(ctx) @@ -825,7 +811,7 @@ func (b *Bus) patchSetting(ctx context.Context, key string, patch map[string]any } } -func (b *Bus) prepareRenew(cs consensus.State, revision types.FileContractRevision, hostAddress, renterAddress types.Address, renterFunds, minNewCollateral, maxFundAmount types.Currency, endHeight, expectedStorage uint64) rhp3.PrepareRenewFn { +func (b *Bus) prepareRenew(cs consensus.State, revision types.FileContractRevision, hostAddress, renterAddress types.Address, renterFunds, minNewCollateral types.Currency, endHeight, expectedStorage uint64) rhp3.PrepareRenewFn { return func(pt rhpv3.HostPriceTable) ([]types.Hash256, []types.Transaction, types.Currency, rhp3.DiscardTxnFn, error) { // create the final revision from the provided revision finalRevision := revision @@ -850,11 +836,6 @@ func (b *Bus) prepareRenew(cs consensus.State, revision types.FileContractRevisi // compute how much renter funds to put into the new contract fundAmount := rhpv3.ContractRenewalCost(cs, pt, fc, txn.MinerFees[0], basePrice) - // make sure we don't exceed the max fund amount. - if maxFundAmount.Cmp(fundAmount) < 0 { - return nil, nil, types.ZeroCurrency, nil, fmt.Errorf("%w: %v > %v", api.ErrMaxFundAmountExceeded, fundAmount, maxFundAmount) - } - // fund the transaction, we are not signing it yet since it's not // complete. The host still needs to complete it and the revision + // contract are signed with the renter key by the worker. @@ -872,7 +853,7 @@ func (b *Bus) prepareRenew(cs consensus.State, revision types.FileContractRevisi } } -func (b *Bus) renewContract(ctx context.Context, cs consensus.State, gp api.GougingParams, c api.ContractMetadata, hs rhpv2.HostSettings, renterFunds, minNewCollateral, maxFundAmount types.Currency, endHeight, expectedNewStorage uint64) (rhpv2.ContractRevision, types.Currency, types.Currency, error) { +func (b *Bus) renewContract(ctx context.Context, cs consensus.State, gp api.GougingParams, c api.ContractMetadata, hs rhpv2.HostSettings, renterFunds, minNewCollateral types.Currency, endHeight, expectedNewStorage uint64) (rhpv2.ContractRevision, types.Currency, types.Currency, error) { // derive the renter key renterKey := b.masterKey.DeriveContractKey(c.HostKey) @@ -895,7 +876,7 @@ func (b *Bus) renewContract(ctx context.Context, cs consensus.State, gp api.Goug // renew contract gc := gouging.NewChecker(gp.GougingSettings, gp.ConsensusState, nil, nil) - prepareRenew := b.prepareRenew(cs, rev, hs.Address, b.w.Address(), renterFunds, minNewCollateral, maxFundAmount, endHeight, expectedNewStorage) + prepareRenew := b.prepareRenew(cs, rev, hs.Address, b.w.Address(), renterFunds, minNewCollateral, endHeight, expectedNewStorage) newRevision, txnSet, contractPrice, fundAmount, err := b.rhp3.Renew(ctx, gc, rev, renterKey, c.HostKey, c.SiamuxAddr, prepareRenew, b.w.SignTransaction) if err != nil { return rhpv2.ContractRevision{}, types.ZeroCurrency, types.ZeroCurrency, fmt.Errorf("couldn't renew contract; %w", err) diff --git a/bus/client/contracts.go b/bus/client/contracts.go index 08dc7da53..9891059f7 100644 --- a/bus/client/contracts.go +++ b/bus/client/contracts.go @@ -156,11 +156,10 @@ func (c *Client) PruneContract(ctx context.Context, contractID types.FileContrac } // RenewContract renews an existing contract with a host and adds it to the bus. -func (c *Client) RenewContract(ctx context.Context, contractID types.FileContractID, endHeight uint64, renterFunds, minNewCollateral, maxFundAmount types.Currency, expectedStorage uint64) (renewal api.ContractMetadata, err error) { +func (c *Client) RenewContract(ctx context.Context, contractID types.FileContractID, endHeight uint64, renterFunds, minNewCollateral types.Currency, expectedStorage uint64) (renewal api.ContractMetadata, err error) { req := api.ContractRenewRequest{ EndHeight: endHeight, ExpectedNewStorage: expectedStorage, - MaxFundAmount: maxFundAmount, MinNewCollateral: minNewCollateral, RenterFunds: renterFunds, } diff --git a/bus/routes.go b/bus/routes.go index 0e43d4fa0..af022ce9c 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -1029,9 +1029,6 @@ func (b *Bus) contractIDRenewHandlerPOST(jc jape.Context) { } else if rrr.ExpectedNewStorage == 0 { http.Error(jc.ResponseWriter, "ExpectedNewStorage can not be zero", http.StatusBadRequest) return - } else if rrr.MaxFundAmount.IsZero() { - http.Error(jc.ResponseWriter, "MaxFundAmount can not be zero", http.StatusBadRequest) - return } else if rrr.RenterFunds.IsZero() { http.Error(jc.ResponseWriter, "RenterFunds can not be zero", http.StatusBadRequest) return @@ -1067,7 +1064,7 @@ func (b *Bus) contractIDRenewHandlerPOST(jc jape.Context) { if b.isPassedV2AllowHeight() { panic("not implemented") } else { - newRevision, contractPrice, initialRenterFunds, err = b.renewContract(ctx, cs, gp, c, h.Settings, rrr.RenterFunds, rrr.MinNewCollateral, rrr.MaxFundAmount, rrr.EndHeight, rrr.ExpectedNewStorage) + newRevision, contractPrice, initialRenterFunds, err = b.renewContract(ctx, cs, gp, c, h.Settings, rrr.RenterFunds, rrr.MinNewCollateral, rrr.EndHeight, rrr.ExpectedNewStorage) if errors.Is(err, api.ErrMaxFundAmountExceeded) { jc.Error(err, http.StatusBadRequest) return diff --git a/internal/bus/pinmanager.go b/internal/bus/pinmanager.go index 0238b057b..b2a94f140 100644 --- a/internal/bus/pinmanager.go +++ b/internal/bus/pinmanager.go @@ -181,49 +181,6 @@ func (pm *pinManager) run() { } } -func (pm *pinManager) updateAutopilotSettings(ctx context.Context, autopilotID string, pins api.AutopilotPins, rate decimal.Decimal) error { - var updated bool - - ap, err := pm.s.Autopilot(ctx, autopilotID) - if err != nil { - return err - } - - // update allowance - if pins.Allowance.IsPinned() { - update, err := convertCurrencyToSC(decimal.NewFromFloat(pins.Allowance.Value), rate) - if err != nil { - pm.logger.Warnw("failed to convert allowance to currency", zap.Error(err)) - } else { - bkp := ap.Config.Contracts.Allowance - ap.Config.Contracts.Allowance = update - if err := ap.Config.Validate(); err != nil { - pm.logger.Warnw("failed to update autopilot setting, new allowance makes the setting invalid", zap.Error(err)) - ap.Config.Contracts.Allowance = bkp - } else { - pm.logger.Infow("updating autopilot allowance", "old", bkp, "new", ap.Config.Contracts.Allowance, "rate", rate, "autopilot", autopilotID) - updated = true - } - } - } - - // return early if no updates took place - if !updated { - pm.logger.Infow("autopilots did not require price update", "rate", rate) - return nil - } - - // validate config - err = ap.Config.Validate() - if err != nil { - pm.logger.Warnw("failed to update autopilot setting, new settings make the setting invalid", zap.Error(err)) - return err - } - - // update autopilto - return pm.s.UpdateAutopilot(ctx, ap) -} - func (pm *pinManager) updateExchangeRates(currency string, rate float64) error { pm.mu.Lock() defer pm.mu.Unlock() @@ -368,15 +325,6 @@ func (pm *pinManager) updatePrices(ctx context.Context, forced bool) error { if err != nil { pm.logger.Warnw("failed to update gouging settings", zap.Error(err)) } - - // update autopilot settings - for ap, pins := range settings.Autopilots { - err = pm.updateAutopilotSettings(ctx, ap, pins, update) - if err != nil { - pm.logger.Warnw("failed to update autopilot settings", zap.String("autopilot", ap), zap.Error(err)) - } - } - return nil } diff --git a/internal/bus/pinmanager_test.go b/internal/bus/pinmanager_test.go index d7800ed71..fa941f822 100644 --- a/internal/bus/pinmanager_test.go +++ b/internal/bus/pinmanager_test.go @@ -123,9 +123,7 @@ func newTestStore() *mockPinStore { s.autopilots[testAutopilotID] = api.Autopilot{ ID: testAutopilotID, Config: api.AutopilotConfig{ - Contracts: api.ContractsConfig{ - Allowance: types.Siacoins(1), - }, + Contracts: api.ContractsConfig{}, }, } @@ -260,36 +258,6 @@ func TestPinManager(t *testing.T) { // increase rate so average isn't catching up to us e.setRate(3) - // fetch autopilot - ap, _ := s.Autopilot(context.Background(), testAutopilotID) - - // add autopilot pin, but disable it - pins := api.AutopilotPins{ - Allowance: api.Pin{ - Pinned: false, - Value: 2, - }, - } - ps.Autopilots = map[string]api.AutopilotPins{testAutopilotID: pins} - s.UpdatePinnedSettings(context.Background(), ps) - waitForUpdate() - - // assert autopilot was not updated - if app, _ := s.Autopilot(context.Background(), testAutopilotID); !app.Config.Contracts.Allowance.Equals(ap.Config.Contracts.Allowance) { - t.Fatalf("expected autopilot to not be updated, got %v = %v", app.Config.Contracts.Allowance, ap.Config.Contracts.Allowance) - } - - // enable the pin - pins.Allowance.Pinned = true - ps.Autopilots[testAutopilotID] = pins - s.UpdatePinnedSettings(context.Background(), ps) - waitForUpdate() - - // assert autopilot was updated - if app, _ := s.Autopilot(context.Background(), testAutopilotID); app.Config.Contracts.Allowance.Equals(ap.Config.Contracts.Allowance) { - t.Fatalf("expected autopilot to be updated, got %v = %v", app.Config.Contracts.Allowance, ap.Config.Contracts.Allowance) - } - // make explorer return an error e.setUnreachable(true) waitForUpdate() diff --git a/internal/test/config.go b/internal/test/config.go index e59cabefb..879271b0e 100644 --- a/internal/test/config.go +++ b/internal/test/config.go @@ -13,10 +13,10 @@ var ( // one is explicitly set. AutopilotConfig = api.AutopilotConfig{ Contracts: api.ContractsConfig{ - Allowance: types.Siacoins(1).Mul64(1e3), - Amount: 3, - Period: 144, - RenewWindow: 72, + Amount: 3, + InitialFunding: types.Siacoins(1), + Period: 144, + RenewWindow: 72, Download: rhpv2.SectorSize * 500, Upload: rhpv2.SectorSize * 500, diff --git a/internal/test/e2e/settings_test.go b/internal/test/e2e/settings_test.go index 77c04f7ab..3fc25f9c9 100644 --- a/internal/test/e2e/settings_test.go +++ b/internal/test/e2e/settings_test.go @@ -25,16 +25,6 @@ func TestSettings(t *testing.T) { // build default pinned settings dps := api.DefaultPinnedSettings - aps, err := b.Autopilots(context.Background()) - if err != nil { - t.Fatal(err) - } - dps.Autopilots = make(map[string]api.AutopilotPins) - for _, ap := range aps { - if ap.Config.Contracts.Amount > 0 { - dps.Autopilots[ap.ID] = api.AutopilotPins{} - } - } // build default S3 settings ds3 := api.S3Settings{ diff --git a/stores/autopilot_test.go b/stores/autopilot_test.go index 9559b2dbe..e6ea1e95e 100644 --- a/stores/autopilot_test.go +++ b/stores/autopilot_test.go @@ -25,10 +25,10 @@ func TestAutopilotStore(t *testing.T) { // create a cfg cfg := api.AutopilotConfig{ Contracts: api.ContractsConfig{ - Allowance: types.Siacoins(1).Mul64(1e3), - Amount: 3, - Period: 144, - RenewWindow: 72, + Amount: 3, + InitialFunding: types.Siacoins(1), + Period: 144, + RenewWindow: 72, Download: rhpv2.SectorSize * 500, Upload: rhpv2.SectorSize * 500, From 392fb54169cec3262cf104d161870785622df2b7 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 22 Oct 2024 14:42:51 +0200 Subject: [PATCH 226/708] ci: fix linting --- autopilot/contractor/contract_spending.go | 28 ----------------------- 1 file changed, 28 deletions(-) delete mode 100644 autopilot/contractor/contract_spending.go diff --git a/autopilot/contractor/contract_spending.go b/autopilot/contractor/contract_spending.go deleted file mode 100644 index 88f6753f9..000000000 --- a/autopilot/contractor/contract_spending.go +++ /dev/null @@ -1,28 +0,0 @@ -package contractor - -import ( - "go.sia.tech/core/types" - "go.sia.tech/renterd/api" -) - -func currentPeriodSpending(contracts []api.ContractMetadata, currentPeriod uint64) types.Currency { - totalCosts := make(map[types.FileContractID]types.Currency) - for _, c := range contracts { - totalCosts[c.ID] = c.InitialRenterFunds - } - - // filter contracts in the current period - var filtered []api.ContractMetadata - for _, contract := range contracts { - if contract.WindowStart <= currentPeriod { - filtered = append(filtered, contract) - } - } - - // calculate the money allocated - var totalAllocated types.Currency - for _, contract := range filtered { - totalAllocated = totalAllocated.Add(contract.InitialRenterFunds) - } - return totalAllocated -} From ac75808df313a8f200eb007001123821609515aa Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 22 Oct 2024 15:46:55 +0200 Subject: [PATCH 227/708] bus: add context to error --- bus/routes.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bus/routes.go b/bus/routes.go index 5c34025e4..0f52eefda 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -189,7 +189,7 @@ func (b *Bus) postSystemSQLite3BackupHandler(jc jape.Context) { switch req.Database { case "main", "metrics": default: - jc.Error(api.ErrInvalidDatabase, http.StatusBadRequest) + jc.Error(fmt.Errorf("%w: valid values are 'main' and 'metrics'", api.ErrInvalidDatabase), http.StatusBadRequest) return } err := b.store.Backup(jc.Request.Context(), req.Database, req.Path) From d999e7246750af59d1c8aaea42165818b9f02153 Mon Sep 17 00:00:00 2001 From: Christopher Tarry Date: Tue, 22 Oct 2024 10:53:10 -0400 Subject: [PATCH 228/708] always ask whether to enable s3 --- cmd/renterd/config.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cmd/renterd/config.go b/cmd/renterd/config.go index 41692f863..f95eddd6e 100644 --- a/cmd/renterd/config.go +++ b/cmd/renterd/config.go @@ -673,8 +673,9 @@ func setStoreConfig(cfg *config.Config) { } func setS3Config(cfg *config.Config) { - if !promptYesNo("Would you like to configure S3 settings?") { - cfg.S3.Enabled = promptYesNo("Would you like to enable the S3 gateway?") + configure := promptYesNo("Would you like to configure S3 settings?") + cfg.S3.Enabled = promptYesNo("Would you like to enable the S3 gateway?") + if !configure { return } From 93c43f9dff2c6fa8fffd917f48a78848deaa6b96 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 22 Oct 2024 17:18:24 +0200 Subject: [PATCH 229/708] autopilot: use gouging settings in price scoring algorithm --- autopilot/contractor/evaluate.go | 4 +- autopilot/contractor/hostfilter.go | 4 +- autopilot/contractor/hostscore.go | 78 +++++++----- autopilot/contractor/hostscore_test.go | 163 ++++++++++++++----------- autopilot/contractor/state.go | 2 +- internal/gouging/gouging.go | 28 +++-- 6 files changed, 161 insertions(+), 118 deletions(-) diff --git a/autopilot/contractor/evaluate.go b/autopilot/contractor/evaluate.go index 461857f31..70ce3ea5c 100644 --- a/autopilot/contractor/evaluate.go +++ b/autopilot/contractor/evaluate.go @@ -13,7 +13,7 @@ var ErrMissingRequiredFields = errors.New("missing required fields in configurat func countUsableHosts(cfg api.AutopilotConfig, cs api.ConsensusState, period uint64, rs api.RedundancySettings, gs api.GougingSettings, hosts []api.Host) (usables uint64) { gc := gouging.NewChecker(gs, cs, &period, &cfg.Contracts.RenewWindow) for _, host := range hosts { - hc := checkHost(gc, scoreHost(host, cfg, rs.Redundancy()), minValidScore) + hc := checkHost(gc, scoreHost(host, cfg, gs, rs.Redundancy()), minValidScore) if hc.UsabilityBreakdown.IsUsable() { usables++ } @@ -36,7 +36,7 @@ func EvaluateConfig(cfg api.AutopilotConfig, cs api.ConsensusState, rs api.Redun resp.Hosts = uint64(len(hosts)) for i, host := range hosts { hosts[i].PriceTable.HostBlockHeight = cs.BlockHeight // ignore block height - hc := checkHost(gc, scoreHost(host, cfg, rs.Redundancy()), minValidScore) + hc := checkHost(gc, scoreHost(host, cfg, gs, rs.Redundancy()), minValidScore) if hc.UsabilityBreakdown.IsUsable() { resp.Usable++ continue diff --git a/autopilot/contractor/hostfilter.go b/autopilot/contractor/hostfilter.go index a1e370fc7..974c117bc 100644 --- a/autopilot/contractor/hostfilter.go +++ b/autopilot/contractor/hostfilter.go @@ -272,6 +272,6 @@ func newScoredHost(h api.Host, sb api.HostScoreBreakdown) scoredHost { } } -func scoreHost(h api.Host, cfg api.AutopilotConfig, expectedRedundancy float64) scoredHost { - return newScoredHost(h, hostScore(cfg, h, expectedRedundancy)) +func scoreHost(h api.Host, cfg api.AutopilotConfig, gs api.GougingSettings, expectedRedundancy float64) scoredHost { + return newScoredHost(h, hostScore(cfg, gs, h, expectedRedundancy)) } diff --git a/autopilot/contractor/hostscore.go b/autopilot/contractor/hostscore.go index f8d92a878..ac51d2cb3 100644 --- a/autopilot/contractor/hostscore.go +++ b/autopilot/contractor/hostscore.go @@ -9,6 +9,7 @@ import ( rhpv3 "go.sia.tech/core/rhp/v3" "go.sia.tech/core/types" "go.sia.tech/renterd/api" + "go.sia.tech/renterd/internal/gouging" "go.sia.tech/renterd/internal/utils" ) @@ -22,7 +23,7 @@ const ( minValidScore = math.SmallestNonzeroFloat64 ) -func hostScore(cfg api.AutopilotConfig, h api.Host, expectedRedundancy float64) (sb api.HostScoreBreakdown) { +func hostScore(cfg api.AutopilotConfig, gs api.GougingSettings, h api.Host, expectedRedundancy float64) (sb api.HostScoreBreakdown) { cCfg := cfg.Contracts // idealDataPerHost is the amount of data that we would have to put on each // host assuming that our storage requirements were spread evenly across @@ -37,13 +38,11 @@ func hostScore(cfg api.AutopilotConfig, h api.Host, expectedRedundancy float64) // NOTE: assume that data is not spread evenly and the host with the most // data will store twice the expectation allocationPerHost := idealDataPerHost * 2 - // hostPeriodCost is the amount of money we expect to spend on a host in a period. - hostPeriodCost := hostPeriodCostForScore(h, cCfg, expectedRedundancy) return api.HostScoreBreakdown{ Age: ageScore(h), Collateral: collateralScore(cCfg, h.PriceTable.HostPriceTable, uint64(allocationPerHost)), Interactions: interactionScore(h), - Prices: priceAdjustmentScore(hostPeriodCost, cCfg), + Prices: priceAdjustmentScore(h.PriceTable, gs), StorageRemaining: storageRemainingScore(h.Settings, h.StoredData, allocationPerHost), Uptime: uptimeScore(h), Version: versionScore(h.Settings, cfg.Hosts.MinProtocolVersion), @@ -61,34 +60,49 @@ func hostScore(cfg api.AutopilotConfig, h api.Host, expectedRedundancy float64) // - If the host is more expensive than expected, an exponential malus is applied. // A 2x ratio will already cause the score to drop to 0.16 and a 3x ratio causes // it to drop to 0.05. -func priceAdjustmentScore(hostCostPerPeriod types.Currency, cfg api.ContractsConfig) float64 { - // return early if the allowance or amount of hosts is zero, avoiding a - // division by zero panic below. - // if cfg.Allowance.IsZero() || cfg.Amount == 0 { - // return math.SmallestNonzeroFloat64 - // } - // - // hostPeriodBudget := cfg.Allowance.Div64(cfg.Amount) - // - // ratio := new(big.Rat).SetFrac(hostCostPerPeriod.Big(), hostPeriodBudget.Big()) - // fRatio, _ := ratio.Float64() - // switch ratio.Cmp(new(big.Rat).SetUint64(1)) { - // case 0: - // return 0.5 // ratio is exactly 1 -> score is 0.5 - // case 1: - // // cost is greater than budget -> score is in range (0; 0.5) - // // - // return 1.5 / math.Pow(3, fRatio) - // case -1: - // // cost < budget -> score is (0.5; 1] - // s := 0.44 + 0.06*(1/fRatio) - // if s > 1.0 { - // s = 1.0 - // } - // return s - // } - // panic("unreachable") - return 1 // TODO: implement +func priceAdjustmentScore(pt api.HostPriceTable, gs api.GougingSettings) float64 { + // combine the upload and download prices to get a threshold + dppb, overflow := gouging.DownloadPricePerByte(pt.HostPriceTable) + if overflow { + return math.SmallestNonzeroFloat64 + } + uppb, overflow := gouging.UploadPricePerByte(pt.HostPriceTable) + if overflow { + return math.SmallestNonzeroFloat64 + } + sppb := pt.WriteStoreCost + + priceScore := func(actual, max types.Currency) float64 { + if max.IsZero() { + return 1.0 // no gouging settings defined + } + threshold := max.Div64(2) + + ratio := new(big.Rat).SetFrac(actual.Big(), threshold.Big()) + fRatio, _ := ratio.Float64() + switch ratio.Cmp(new(big.Rat).SetUint64(1)) { + case 0: + return 0.5 // ratio is exactly 1 -> score is 0.5 + case 1: + // actual is greater than threshold -> score is in range (0; 0.5) + // + return 1.5 / math.Pow(3, fRatio) + case -1: + // actual < threshold -> score is (0.5; 1] + s := 0.44 + 0.06*(1/fRatio) + if s > 1.0 { + s = 1.0 + } + return s + } + panic("unreachable") + } + + // compute scores for download, upload and storage and combine them + downloadScore := priceScore(dppb, gs.MaxDownloadPrice) + uploadScore := priceScore(uppb, gs.MaxUploadPrice) + storageScore := priceScore(sppb, gs.MaxStoragePrice) + return (downloadScore + uploadScore + storageScore) / 3.0 } func storageRemainingScore(h rhpv2.HostSettings, storedData uint64, allocationPerHost float64) float64 { diff --git a/autopilot/contractor/hostscore_test.go b/autopilot/contractor/hostscore_test.go index bffcf399b..2ad8b89e8 100644 --- a/autopilot/contractor/hostscore_test.go +++ b/autopilot/contractor/hostscore_test.go @@ -39,39 +39,42 @@ func TestHostScore(t *testing.T) { } h1 := newHost(test.NewHostSettings()) h2 := newHost(test.NewHostSettings()) + gs := api.GougingSettings{ + MaxUploadPrice: types.NewCurrency64(1000000000000), + MaxStoragePrice: types.NewCurrency64(3000000000), + MaxDownloadPrice: types.NewCurrency64(100000000000000), + } // assert both hosts score equal redundancy := 3.0 - if hostScore(cfg, h1, redundancy) != hostScore(cfg, h2, redundancy) { + if hostScore(cfg, gs, h1, redundancy) != hostScore(cfg, gs, h2, redundancy) { t.Fatal("unexpected") } - // assert age affects the score + // // assert age affects the score h1.KnownSince = time.Now().Add(-1 * day) - if hostScore(cfg, h1, redundancy).Score() <= hostScore(cfg, h2, redundancy).Score() { + if hostScore(cfg, gs, h1, redundancy).Score() <= hostScore(cfg, gs, h2, redundancy).Score() { t.Fatal("unexpected") } // assert collateral affects the score - settings := test.NewHostSettings() - settings.Collateral = settings.Collateral.Div64(2) - settings.MaxCollateral = settings.MaxCollateral.Div64(2) - h1 = newHost(settings) // reset - if hostScore(cfg, h1, redundancy).Score() <= hostScore(cfg, h2, redundancy).Score() { + h1 = newHost(test.NewHostSettings()) // reset + h1.PriceTable.CollateralCost = h1.PriceTable.CollateralCost.Div64(1000) + if hostScore(cfg, gs, h1, redundancy).Score() >= hostScore(cfg, gs, h2, redundancy).Score() { t.Fatal("unexpected") } // assert interactions affect the score h1 = newHost(test.NewHostSettings()) // reset h1.Interactions.SuccessfulInteractions++ - if hostScore(cfg, h1, redundancy).Score() <= hostScore(cfg, h2, redundancy).Score() { + if hostScore(cfg, gs, h1, redundancy).Score() <= hostScore(cfg, gs, h2, redundancy).Score() { t.Fatal("unexpected") } // assert uptime affects the score h2 = newHost(test.NewHostSettings()) // reset h2.Interactions.SecondToLastScanSuccess = false - if hostScore(cfg, h1, redundancy).Score() <= hostScore(cfg, h2, redundancy).Score() || ageScore(h1) != ageScore(h2) { + if hostScore(cfg, gs, h1, redundancy).Score() <= hostScore(cfg, gs, h2, redundancy).Score() || ageScore(h1) != ageScore(h2) { t.Fatal("unexpected") } @@ -79,99 +82,113 @@ func TestHostScore(t *testing.T) { h2Settings := test.NewHostSettings() h2Settings.Version = "1.5.6" // lower h2 = newHost(h2Settings) // reset - if hostScore(cfg, h1, redundancy).Score() <= hostScore(cfg, h2, redundancy).Score() { + if hostScore(cfg, gs, h1, redundancy).Score() <= hostScore(cfg, gs, h2, redundancy).Score() { t.Fatal("unexpected") } // asseret remaining storage affects the score. h1 = newHost(test.NewHostSettings()) // reset h2.Settings.RemainingStorage = 100 - if hostScore(cfg, h1, redundancy).Score() <= hostScore(cfg, h2, redundancy).Score() { + if hostScore(cfg, gs, h1, redundancy).Score() <= hostScore(cfg, gs, h2, redundancy).Score() { t.Fatal("unexpected") } // assert MaxCollateral affects the score. h2 = newHost(test.NewHostSettings()) // reset h2.PriceTable.MaxCollateral = types.ZeroCurrency - if hostScore(cfg, h1, redundancy).Score() <= hostScore(cfg, h2, redundancy).Score() { + if hostScore(cfg, gs, h1, redundancy).Score() <= hostScore(cfg, gs, h2, redundancy).Score() { t.Fatal("unexpected") } // assert price affects the score. h2 = newHost(test.NewHostSettings()) // reset h2.PriceTable.WriteBaseCost = types.Siacoins(1) - if hostScore(cfg, h1, redundancy).Score() <= hostScore(cfg, h2, redundancy).Score() { + if hostScore(cfg, gs, h1, redundancy).Score() <= hostScore(cfg, gs, h2, redundancy).Score() { t.Fatal("unexpected") } // assert zero initial funding does not panic cfg.Contracts.InitialFunding = types.ZeroCurrency - _ = hostScore(cfg, h1, redundancy) + _ = hostScore(cfg, gs, h1, redundancy) // assert missing amount does not panic cfg.Contracts.InitialFunding = types.Siacoins(1) // reset cfg.Contracts.Amount = 0 - _ = hostScore(cfg, h1, redundancy) + _ = hostScore(cfg, gs, h1, redundancy) } func TestPriceAdjustmentScore(t *testing.T) { - score := func(cpp uint32) float64 { - t.Helper() - cfg := api.ContractsConfig{ - Amount: 50, - } - return priceAdjustmentScore(types.Siacoins(cpp), cfg) - } - - // Cost matches budges. - if s := score(100); s != 0.5 { - t.Errorf("expected %v but got %v", 0.5, s) - } - - // Test decreasing values for host cost. Score should go from 0.5 to 1 and - // be capped at 1. - round := func(f float64) float64 { - i := uint64(f * 100.0) - return float64(i) / 100.0 - } - if s := round(score(50)); s != 0.56 { - t.Errorf("expected %v but got %v", 0.56, s) - } - if s := round(score(25)); s != 0.68 { - t.Errorf("expected %v but got %v", 0.64, s) - } - if s := round(score(15)); s != 0.84 { - t.Errorf("expected %v but got %v", 0.84, s) - } - if s := round(score(10)); s != 1 { - t.Errorf("expected %v but got %v", 1, s) - } - if s := round(score(1)); s != 1 { - t.Errorf("expected %v but got %v", 1, s) - } - - // Test increasing values for host cost. Score should go from 1 towards 0. - if s := round(score(101)); s != 0.49 { - t.Errorf("expected %v but got %v", 0.49, s) - } - if s := round(score(110)); s != 0.44 { - t.Errorf("expected %v but got %v", 0.44, s) - } - if s := round(score(125)); s != 0.37 { - t.Errorf("expected %v but got %v", 0.37, s) - } - if s := round(score(150)); s != 0.28 { - t.Errorf("expected %v but got %v", 0.28, s) - } - if s := round(score(200)); s != 0.16 { - t.Errorf("expected %v but got %v", 0.16, s) - } - if s := round(score(250)); s != 0.09 { - t.Errorf("expected %v but got %v", 0.09, s) - } - if s := round(score(300)); s != 0.05 { - t.Errorf("expected %v but got %v", 0.05, s) - } + // score := func(cpp uint32) float64 { + // t.Helper() + // cfg := api.ContractsConfig{ + // Amount: 50, + // } + // return priceAdjustmentScore(types.Siacoins(cpp), cfg) + // } + // + // // Cost matches budges. + // + // if s := score(100); s != 0.5 { + // t.Errorf("expected %v but got %v", 0.5, s) + // } + // + // // Test decreasing values for host cost. Score should go from 0.5 to 1 and + // // be capped at 1. + // + // round := func(f float64) float64 { + // i := uint64(f * 100.0) + // return float64(i) / 100.0 + // } + // + // if s := round(score(50)); s != 0.56 { + // t.Errorf("expected %v but got %v", 0.56, s) + // } + // + // if s := round(score(25)); s != 0.68 { + // t.Errorf("expected %v but got %v", 0.64, s) + // } + // + // if s := round(score(15)); s != 0.84 { + // t.Errorf("expected %v but got %v", 0.84, s) + // } + // + // if s := round(score(10)); s != 1 { + // t.Errorf("expected %v but got %v", 1, s) + // } + // + // if s := round(score(1)); s != 1 { + // t.Errorf("expected %v but got %v", 1, s) + // } + // + // // Test increasing values for host cost. Score should go from 1 towards 0. + // + // if s := round(score(101)); s != 0.49 { + // t.Errorf("expected %v but got %v", 0.49, s) + // } + // + // if s := round(score(110)); s != 0.44 { + // t.Errorf("expected %v but got %v", 0.44, s) + // } + // + // if s := round(score(125)); s != 0.37 { + // t.Errorf("expected %v but got %v", 0.37, s) + // } + // + // if s := round(score(150)); s != 0.28 { + // t.Errorf("expected %v but got %v", 0.28, s) + // } + // + // if s := round(score(200)); s != 0.16 { + // t.Errorf("expected %v but got %v", 0.16, s) + // } + // + // if s := round(score(250)); s != 0.09 { + // t.Errorf("expected %v but got %v", 0.09, s) + // } + // + // if s := round(score(300)); s != 0.05 { + // t.Errorf("expected %v but got %v", 0.05, s) + // } } func TestCollateralScore(t *testing.T) { diff --git a/autopilot/contractor/state.go b/autopilot/contractor/state.go index 3365844e9..dd46fff95 100644 --- a/autopilot/contractor/state.go +++ b/autopilot/contractor/state.go @@ -81,7 +81,7 @@ func (ctx *mCtx) HostScore(h api.Host) (sb api.HostScoreBreakdown, err error) { err = errors.New("panic while scoring host") } }() - return hostScore(ctx.state.AP.Config, h, ctx.state.RS.Redundancy()), nil + return hostScore(ctx.state.AP.Config, ctx.state.GS, h, ctx.state.RS.Redundancy()), nil } func (ctx *mCtx) Period() uint64 { diff --git a/internal/gouging/gouging.go b/internal/gouging/gouging.go index 3541326a0..3a8d812fe 100644 --- a/internal/gouging/gouging.go +++ b/internal/gouging/gouging.go @@ -67,6 +67,22 @@ func NewChecker(gs api.GougingSettings, cs api.ConsensusState, period, renewWind } } +func DownloadPricePerByte(pt rhpv3.HostPriceTable) (types.Currency, bool) { + sectorDownloadPrice, overflow := sectorReadCostRHPv3(pt) + if overflow { + return types.ZeroCurrency, true + } + return sectorDownloadPrice.Div64(rhpv2.SectorSize), false +} + +func UploadPricePerByte(pt rhpv3.HostPriceTable) (types.Currency, bool) { + sectorUploadPricePerMonth, overflow := sectorUploadCostRHPv3(pt) + if overflow { + return types.ZeroCurrency, true + } + return sectorUploadPricePerMonth.Div64(rhpv2.SectorSize), false +} + func (gc checker) BlocksUntilBlockHeightGouging(hostHeight uint64) int64 { blockHeight := gc.consensusState.BlockHeight leeway := gc.settings.HostBlockHeightLeeway @@ -303,12 +319,10 @@ func checkDownloadGougingRHPv3(gs api.GougingSettings, pt *rhpv3.HostPriceTable) if pt == nil { return nil } - sectorDownloadPrice, overflow := sectorReadCostRHPv3(*pt) + dppb, overflow := DownloadPricePerByte(*pt) if overflow { return fmt.Errorf("%w: overflow detected when computing sector download price", ErrPriceTableGouging) - } - dppb := sectorDownloadPrice.Div64(rhpv2.SectorSize) - if !gs.MaxDownloadPrice.IsZero() && dppb.Cmp(gs.MaxDownloadPrice) > 0 { + } else if !gs.MaxDownloadPrice.IsZero() && dppb.Cmp(gs.MaxDownloadPrice) > 0 { return fmt.Errorf("%w: cost per byte exceeds max dl price: %v > %v", ErrPriceTableGouging, dppb, gs.MaxDownloadPrice) } return nil @@ -318,12 +332,10 @@ func checkUploadGougingRHPv3(gs api.GougingSettings, pt *rhpv3.HostPriceTable) e if pt == nil { return nil } - sectorUploadPricePerMonth, overflow := sectorUploadCostRHPv3(*pt) + uploadPrice, overflow := UploadPricePerByte(*pt) if overflow { return fmt.Errorf("%w: overflow detected when computing sector price", ErrPriceTableGouging) - } - uploadPrice := sectorUploadPricePerMonth.Div64(rhpv2.SectorSize) - if !gs.MaxUploadPrice.IsZero() && uploadPrice.Cmp(gs.MaxUploadPrice) > 0 { + } else if !gs.MaxUploadPrice.IsZero() && uploadPrice.Cmp(gs.MaxUploadPrice) > 0 { return fmt.Errorf("%w: cost per byte exceeds max ul price: %v > %v", ErrPriceTableGouging, uploadPrice, gs.MaxUploadPrice) } return nil From 656adfae970171a9d8d464a40756968d7ceb857f Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Tue, 22 Oct 2024 17:21:39 +0200 Subject: [PATCH 230/708] ci: fix linting --- autopilot/contractor/hostscore.go | 64 ------------------------------- 1 file changed, 64 deletions(-) diff --git a/autopilot/contractor/hostscore.go b/autopilot/contractor/hostscore.go index ac51d2cb3..8d92a004e 100644 --- a/autopilot/contractor/hostscore.go +++ b/autopilot/contractor/hostscore.go @@ -295,17 +295,6 @@ func versionScore(settings rhpv2.HostSettings, minVersion string) float64 { return weight } -// contractPriceForScore returns the contract price of the host used for -// scoring. Since we don't know whether rhpv2 or rhpv3 are used, we return the -// bigger one for a pesimistic score. -func contractPriceForScore(h api.Host) types.Currency { - cp := h.Settings.ContractPrice - if cp.Cmp(h.PriceTable.ContractPrice) > 0 { - cp = h.PriceTable.ContractPrice - } - return cp -} - func bytesToSectors(bytes uint64) uint64 { numSectors := bytes / rhpv2.SectorSize if bytes%rhpv2.SectorSize != 0 { @@ -314,61 +303,8 @@ func bytesToSectors(bytes uint64) uint64 { return numSectors } -func sectorStorageCost(pt rhpv3.HostPriceTable, duration uint64) types.Currency { - asc := pt.BaseCost().Add(pt.AppendSectorCost(duration)) - return asc.Storage -} - func sectorUploadCost(pt rhpv3.HostPriceTable, duration uint64) types.Currency { asc := pt.BaseCost().Add(pt.AppendSectorCost(duration)) uploadSectorCostRHPv3, _ := asc.Total() return uploadSectorCostRHPv3 } - -func uploadCostForScore(cfg api.ContractsConfig, h api.Host, bytes uint64) types.Currency { - uploadSectorCostRHPv3 := sectorUploadCost(h.PriceTable.HostPriceTable, cfg.Period) - numSectors := bytesToSectors(bytes) - return uploadSectorCostRHPv3.Mul64(numSectors) -} - -func downloadCostForScore(h api.Host, bytes uint64) types.Currency { - rsc := h.PriceTable.BaseCost().Add(h.PriceTable.ReadSectorCost(rhpv2.SectorSize)) - downloadSectorCostRHPv3, _ := rsc.Total() - numSectors := bytesToSectors(bytes) - return downloadSectorCostRHPv3.Mul64(numSectors) -} - -func storageCostForScore(cfg api.ContractsConfig, h api.Host, bytes uint64) types.Currency { - storeSectorCostRHPv3 := sectorStorageCost(h.PriceTable.HostPriceTable, cfg.Period) - numSectors := bytesToSectors(bytes) - return storeSectorCostRHPv3.Mul64(numSectors) -} - -func hostPeriodCostForScore(h api.Host, cfg api.ContractsConfig, expectedRedundancy float64) types.Currency { - // compute how much data we upload, download and store. - uploadPerHost := uint64(float64(cfg.Upload) * expectedRedundancy / float64(cfg.Amount)) - downloadPerHost := uint64(float64(cfg.Download) * expectedRedundancy / float64(cfg.Amount)) - storagePerHost := uint64(float64(cfg.Storage) * expectedRedundancy / float64(cfg.Amount)) - - // compute the individual costs. - hostCollateral := rhpv2.ContractFormationCollateral(cfg.Period, storagePerHost, h.Settings) - hostContractPrice := contractPriceForScore(h) - hostUploadCost := uploadCostForScore(cfg, h, uploadPerHost) - hostDownloadCost := downloadCostForScore(h, downloadPerHost) - hostStorageCost := storageCostForScore(cfg, h, storagePerHost) - siafundFee := hostCollateral. - Add(hostContractPrice). - Add(hostUploadCost). - Add(hostDownloadCost). - Add(hostStorageCost). - Mul64(39). - Div64(1000) - - // add it all up. We multiply the contract price here since we might refresh - // a contract multiple times. - return hostContractPrice.Mul64(3). - Add(hostUploadCost). - Add(hostDownloadCost). - Add(hostStorageCost). - Add(siafundFee) -} From 9e84eb32aa6e7511ba82a9dc8bdc069b3642f8de Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 23 Oct 2024 10:52:23 +0200 Subject: [PATCH 231/708] autopilot: fix TestPriceAdjustmentScore --- autopilot/contractor/hostscore.go | 14 +-- autopilot/contractor/hostscore_test.go | 153 +++++++++++++------------ 2 files changed, 89 insertions(+), 78 deletions(-) diff --git a/autopilot/contractor/hostscore.go b/autopilot/contractor/hostscore.go index 8d92a004e..4b6961089 100644 --- a/autopilot/contractor/hostscore.go +++ b/autopilot/contractor/hostscore.go @@ -42,7 +42,7 @@ func hostScore(cfg api.AutopilotConfig, gs api.GougingSettings, h api.Host, expe Age: ageScore(h), Collateral: collateralScore(cCfg, h.PriceTable.HostPriceTable, uint64(allocationPerHost)), Interactions: interactionScore(h), - Prices: priceAdjustmentScore(h.PriceTable, gs), + Prices: priceAdjustmentScore(h.PriceTable.HostPriceTable, gs), StorageRemaining: storageRemainingScore(h.Settings, h.StoredData, allocationPerHost), Uptime: uptimeScore(h), Version: versionScore(h.Settings, cfg.Hosts.MinProtocolVersion), @@ -60,23 +60,23 @@ func hostScore(cfg api.AutopilotConfig, gs api.GougingSettings, h api.Host, expe // - If the host is more expensive than expected, an exponential malus is applied. // A 2x ratio will already cause the score to drop to 0.16 and a 3x ratio causes // it to drop to 0.05. -func priceAdjustmentScore(pt api.HostPriceTable, gs api.GougingSettings) float64 { +func priceAdjustmentScore(pt rhpv3.HostPriceTable, gs api.GougingSettings) float64 { // combine the upload and download prices to get a threshold - dppb, overflow := gouging.DownloadPricePerByte(pt.HostPriceTable) + dppb, overflow := gouging.DownloadPricePerByte(pt) if overflow { return math.SmallestNonzeroFloat64 } - uppb, overflow := gouging.UploadPricePerByte(pt.HostPriceTable) + uppb, overflow := gouging.UploadPricePerByte(pt) if overflow { return math.SmallestNonzeroFloat64 } sppb := pt.WriteStoreCost priceScore := func(actual, max types.Currency) float64 { - if max.IsZero() { + threshold := max.Div64(2) + if threshold.IsZero() { return 1.0 // no gouging settings defined } - threshold := max.Div64(2) ratio := new(big.Rat).SetFrac(actual.Big(), threshold.Big()) fRatio, _ := ratio.Float64() @@ -89,7 +89,7 @@ func priceAdjustmentScore(pt api.HostPriceTable, gs api.GougingSettings) float64 return 1.5 / math.Pow(3, fRatio) case -1: // actual < threshold -> score is (0.5; 1] - s := 0.44 + 0.06*(1/fRatio) + s := 0.5 * (1 / fRatio) if s > 1.0 { s = 1.0 } diff --git a/autopilot/contractor/hostscore_test.go b/autopilot/contractor/hostscore_test.go index 2ad8b89e8..93911ba38 100644 --- a/autopilot/contractor/hostscore_test.go +++ b/autopilot/contractor/hostscore_test.go @@ -118,77 +118,88 @@ func TestHostScore(t *testing.T) { } func TestPriceAdjustmentScore(t *testing.T) { - // score := func(cpp uint32) float64 { - // t.Helper() - // cfg := api.ContractsConfig{ - // Amount: 50, - // } - // return priceAdjustmentScore(types.Siacoins(cpp), cfg) - // } - // - // // Cost matches budges. - // - // if s := score(100); s != 0.5 { - // t.Errorf("expected %v but got %v", 0.5, s) - // } - // - // // Test decreasing values for host cost. Score should go from 0.5 to 1 and - // // be capped at 1. - // - // round := func(f float64) float64 { - // i := uint64(f * 100.0) - // return float64(i) / 100.0 - // } - // - // if s := round(score(50)); s != 0.56 { - // t.Errorf("expected %v but got %v", 0.56, s) - // } - // - // if s := round(score(25)); s != 0.68 { - // t.Errorf("expected %v but got %v", 0.64, s) - // } - // - // if s := round(score(15)); s != 0.84 { - // t.Errorf("expected %v but got %v", 0.84, s) - // } - // - // if s := round(score(10)); s != 1 { - // t.Errorf("expected %v but got %v", 1, s) - // } - // - // if s := round(score(1)); s != 1 { - // t.Errorf("expected %v but got %v", 1, s) - // } - // - // // Test increasing values for host cost. Score should go from 1 towards 0. - // - // if s := round(score(101)); s != 0.49 { - // t.Errorf("expected %v but got %v", 0.49, s) - // } - // - // if s := round(score(110)); s != 0.44 { - // t.Errorf("expected %v but got %v", 0.44, s) - // } - // - // if s := round(score(125)); s != 0.37 { - // t.Errorf("expected %v but got %v", 0.37, s) - // } - // - // if s := round(score(150)); s != 0.28 { - // t.Errorf("expected %v but got %v", 0.28, s) - // } - // - // if s := round(score(200)); s != 0.16 { - // t.Errorf("expected %v but got %v", 0.16, s) - // } - // - // if s := round(score(250)); s != 0.09 { - // t.Errorf("expected %v but got %v", 0.09, s) - // } - // - // if s := round(score(300)); s != 0.05 { - // t.Errorf("expected %v but got %v", 0.05, s) - // } + score := func(mdp, mup, msp uint64) float64 { + t.Helper() + pt := rhpv3.HostPriceTable{ + WriteStoreCost: types.NewCurrency64(50), + DownloadBandwidthCost: types.NewCurrency64(50), + UploadBandwidthCost: types.NewCurrency64(50), + } + return priceAdjustmentScore(pt, api.GougingSettings{ + MaxDownloadPrice: types.NewCurrency64(mdp), + MaxUploadPrice: types.NewCurrency64(mup), + MaxStoragePrice: types.NewCurrency64(msp), + }) + } + + // Cost matches budges. + + if s := score(100, 100, 100); s != 0.5 { + t.Errorf("expected %v but got %v", 0.5, s) + } + + // Test increasing gouging values. Score should go from 0.5 to 1 and + // be capped at 1. + + round := func(f float64) float64 { + i := uint64(f * 100.0) + return float64(i) / 100.0 + } + + if s := round(score(125, 125, 125)); s != 0.62 { + t.Fatalf("expected %v but got %v", 0.62, s) + } + + if s := round(score(150, 150, 150)); s != 0.75 { + t.Fatalf("expected %v but got %v", 0.75, s) + } + + if s := round(score(175, 175, 175)); s != 0.87 { + t.Fatalf("expected %v but got %v", 0.87, s) + } + + if s := round(score(190, 190, 190)); s != 0.95 { + t.Fatalf("expected %v but got %v", 0.95, s) + } + + if s := round(score(200, 200, 200)); s != 1 { + t.Fatalf("expected %v but got %v", 1, s) + } + + if s := round(score(1000, 1000, 1000)); s != 1 { + t.Fatalf("expected %v but got %v", 1, s) + } + + // Test decreasing gouging values. Score should go from 0.5 towards 0. + + if s := round(score(99, 99, 99)); s != 0.48 { + t.Fatalf("expected %v but got %v", 0.48, s) + } + + if s := round(score(90, 90, 90)); s != 0.44 { + t.Fatalf("expected %v but got %v", 0.44, s) + } + + if s := round(score(75, 75, 75)); s != 0.33 { + t.Fatalf("expected %v but got %v", 0.33, s) + } + + if s := round(score(50, 50, 50)); s != 0.16 { + t.Fatalf("expected %v but got %v", 0.16, s) + } + + if s := round(score(25, 25, 25)); s != 0.01 { + t.Fatalf("expected %v but got %v", 0.01, s) + } + + if s := round(score(10, 10, 10)); s != 0 { + t.Fatalf("expected %v but got %v", 0, s) + } + + // Edge case where gouging is disabled + if s := round(score(0, 0, 0)); s != 1.0 { + t.Fatalf("expected %v but got %v", 1.0, s) + } } func TestCollateralScore(t *testing.T) { From 6cbad110304a0d82d50e8ded91ea9a6060d77fef Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 23 Oct 2024 10:54:22 +0200 Subject: [PATCH 232/708] cmd: only call second prompt when configuring s3 settings --- cmd/renterd/config.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cmd/renterd/config.go b/cmd/renterd/config.go index f95eddd6e..8aa0c8dc5 100644 --- a/cmd/renterd/config.go +++ b/cmd/renterd/config.go @@ -673,9 +673,10 @@ func setStoreConfig(cfg *config.Config) { } func setS3Config(cfg *config.Config) { - configure := promptYesNo("Would you like to configure S3 settings?") - cfg.S3.Enabled = promptYesNo("Would you like to enable the S3 gateway?") - if !configure { + if !promptYesNo("Would you like to configure S3 settings?") { + return + } else if !promptYesNo("Would you like to enable the S3 gateway?") { + cfg.S3.Enabled = false return } From 3a7c8291dfe38841f20dbd192a2262c08dde32c5 Mon Sep 17 00:00:00 2001 From: PJ Date: Wed, 23 Oct 2024 11:52:53 +0200 Subject: [PATCH 233/708] stores: remove v2 index and other CR remarks --- .../main/migration_00024_contract_v2.sql | 1 - stores/sql/mysql/migrations/main/schema.sql | 1 - stores/sql/rows.go | 2 +- .../main/migration_00024_contract_v2 | 1 - stores/sql/sqlite/migrations/main/schema.sql | 1 - stores/sql/types.go | 32 ------------------- 6 files changed, 1 insertion(+), 37 deletions(-) diff --git a/stores/sql/mysql/migrations/main/migration_00024_contract_v2.sql b/stores/sql/mysql/migrations/main/migration_00024_contract_v2.sql index 2d37038cf..e47e56e82 100644 --- a/stores/sql/mysql/migrations/main/migration_00024_contract_v2.sql +++ b/stores/sql/mysql/migrations/main/migration_00024_contract_v2.sql @@ -1,2 +1 @@ ALTER TABLE contracts ADD COLUMN v2 BOOLEAN DEFAULT FALSE; -CREATE INDEX `idx_contracts_v2` ON `contracts`(`v2`); diff --git a/stores/sql/mysql/migrations/main/schema.sql b/stores/sql/mysql/migrations/main/schema.sql index 91946d9db..2b8af1aed 100644 --- a/stores/sql/mysql/migrations/main/schema.sql +++ b/stores/sql/mysql/migrations/main/schema.sql @@ -112,7 +112,6 @@ CREATE TABLE `contracts` ( KEY `idx_contracts_state` (`state`), KEY `idx_contracts_window_start` (`window_start`), KEY `idx_contracts_window_end` (`window_end`), - KEY `idx_contracts_v2` (`v2`), CONSTRAINT `fk_contracts_host` FOREIGN KEY (`host_id`) REFERENCES `hosts` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; diff --git a/stores/sql/rows.go b/stores/sql/rows.go index f4a913954..2f95eaac8 100644 --- a/stores/sql/rows.go +++ b/stores/sql/rows.go @@ -12,7 +12,7 @@ type Scanner interface { type ContractRow struct { FCID FileContractID - HostID NullableInt64 + HostID *int64 HostKey PublicKey V2 bool diff --git a/stores/sql/sqlite/migrations/main/migration_00024_contract_v2 b/stores/sql/sqlite/migrations/main/migration_00024_contract_v2 index 4947dd356..37fcbc85d 100644 --- a/stores/sql/sqlite/migrations/main/migration_00024_contract_v2 +++ b/stores/sql/sqlite/migrations/main/migration_00024_contract_v2 @@ -1,2 +1 @@ ALTER TABLE contracts ADD COLUMN v2 INTEGER DEFAULT 0; -CREATE INDEX idx_contracts_v2 ON contracts(v2); \ No newline at end of file diff --git a/stores/sql/sqlite/migrations/main/schema.sql b/stores/sql/sqlite/migrations/main/schema.sql index f16d65758..d4edad8be 100644 --- a/stores/sql/sqlite/migrations/main/schema.sql +++ b/stores/sql/sqlite/migrations/main/schema.sql @@ -21,7 +21,6 @@ CREATE INDEX `idx_contracts_start_height` ON `contracts`(`start_height`); CREATE INDEX `idx_contracts_state` ON `contracts`(`state`); CREATE INDEX `idx_contracts_window_end` ON `contracts`(`window_end`); CREATE INDEX `idx_contracts_window_start` ON `contracts`(`window_start`); -CREATE INDEX `idx_contracts_v2` ON `contracts`(`v2`); -- dbContractSet CREATE TABLE `contract_sets` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at` datetime,`name` text UNIQUE); diff --git a/stores/sql/types.go b/stores/sql/types.go index 6ecabefdb..66127c3ce 100644 --- a/stores/sql/types.go +++ b/stores/sql/types.go @@ -37,7 +37,6 @@ type ( FileContractID types.FileContractID Hash256 types.Hash256 MerkleProof struct{ Hashes []types.Hash256 } - NullableInt64 int64 NullableString string HostSettings rhpv2.HostSettings PriceTable rhpv3.HostPriceTable @@ -63,7 +62,6 @@ var ( _ scannerValuer = (*FileContractID)(nil) _ scannerValuer = (*Hash256)(nil) _ scannerValuer = (*MerkleProof)(nil) - _ scannerValuer = (*NullableInt64)(nil) _ scannerValuer = (*NullableString)(nil) _ scannerValuer = (*HostSettings)(nil) _ scannerValuer = (*PriceTable)(nil) @@ -464,36 +462,6 @@ func (u Unsigned64) Value() (driver.Value, error) { return int64(u), nil } -// Scan scan value into NullableInt64, implements sql.Scanner interface. -func (i *NullableInt64) Scan(value interface{}) error { - if value == nil { - *i = 0 - return nil - } - - switch value := value.(type) { - case uint64: - *i = NullableInt64(value) - case uint: - *i = NullableInt64(value) - case int64: - *i = NullableInt64(value) - case int: - *i = NullableInt64(value) - default: - return fmt.Errorf("failed to unmarshal NullableInt64 value: %v %T", value, value) - } - return nil -} - -// Value returns a NullableString value, implements driver.Valuer interface. -func (i NullableInt64) Value() (driver.Value, error) { - if i == 0 { - return nil, nil - } - return int64(i), nil -} - // Scan scan value into NullableString, implements sql.Scanner interface. func (s *NullableString) Scan(value interface{}) error { if value == nil { From 9d288ca8b453697dab0d0a64490b01a42f05d7f3 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 24 Oct 2024 10:21:19 +0200 Subject: [PATCH 234/708] contractor: register alert when contract maintenance is skipped --- autopilot/contractor/alerts.go | 19 ++++++++++++++++--- autopilot/contractor/contractor.go | 28 ++++++---------------------- 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/autopilot/contractor/alerts.go b/autopilot/contractor/alerts.go index 9185c88dd..31087b76a 100644 --- a/autopilot/contractor/alerts.go +++ b/autopilot/contractor/alerts.go @@ -16,9 +16,10 @@ const ( ) var ( - alertChurnID = alerts.RandomAlertID() // constant until restarted - alertLostSectorsID = alerts.RandomAlertID() // constant until restarted - alertRenewalFailedID = alerts.RandomAlertID() // constant until restarted + alertChurnID = alerts.RandomAlertID() // constant until restarted + alertContractMaintenanceSkippedID = alerts.RandomAlertID() // constant until restarted + alertLostSectorsID = alerts.RandomAlertID() // constant until restarted + alertRenewalFailedID = alerts.RandomAlertID() // constant until restarted ) func newContractRenewalFailedAlert(contract api.ContractMetadata, ourFault bool, err error) alerts.Alert { @@ -57,6 +58,18 @@ func newLostSectorsAlert(hk types.PublicKey, version, release string, lostSector } } +func newContractMaintenanceSkippedAlert(reason string) alerts.Alert { + return alerts.Alert{ + ID: alertContractMaintenanceSkippedID, + Severity: alerts.SeverityWarning, + Message: "Contract maintenance is skipped", + Data: map[string]interface{}{ + "reason": reason, + }, + Timestamp: time.Now(), + } +} + func registerLostSectorsAlert(dataLost, dataStored uint64) bool { return dataLost > 0 && float64(dataLost) >= float64(dataStored)*alertLostSectorsThresholdPct } diff --git a/autopilot/contractor/contractor.go b/autopilot/contractor/contractor.go index 6124541e1..41ed7b9ad 100644 --- a/autopilot/contractor/contractor.go +++ b/autopilot/contractor/contractor.go @@ -223,21 +223,6 @@ func (c *Contractor) formContract(ctx *mCtx, w Worker, host api.Host, minInitial return contract, true, nil } -func (c *Contractor) initialContractFunding(settings rhpv2.HostSettings, txnFee, minFunding, maxFunding types.Currency) types.Currency { - if !maxFunding.IsZero() && minFunding.Cmp(maxFunding) > 0 { - panic("given min is larger than max") // developer error - } - - funding := settings.ContractPrice.Add(txnFee).Mul64(10) // TODO arbitrary multiplier - if !minFunding.IsZero() && funding.Cmp(minFunding) < 0 { - return minFunding - } - if !maxFunding.IsZero() && funding.Cmp(maxFunding) > 0 { - return maxFunding - } - return funding -} - func (c *Contractor) pruneContractRefreshFailures(contracts []api.ContractMetadata) { contractMap := make(map[types.FileContractID]struct{}) for _, contract := range contracts { @@ -272,7 +257,7 @@ func (c *Contractor) refreshContract(ctx *mCtx, w Worker, contract api.Contract, // calculate the renter funds var renterFunds types.Currency if isOutOfFunds(ctx.AutopilotConfig(), pt, contract) { - renterFunds = c.refreshFundingEstimate(ctx.AutopilotConfig(), contract, host, ctx.state.Fee, logger) + renterFunds = c.refreshFundingEstimate(ctx.AutopilotConfig(), contract, logger) } else { renterFunds = rev.ValidRenterPayout() // don't increase funds } @@ -429,17 +414,13 @@ func (c *Contractor) broadcastRevisions(ctx context.Context, w Worker, contracts } } -func (c *Contractor) refreshFundingEstimate(cfg api.AutopilotConfig, contract api.Contract, host api.Host, fee types.Currency, logger *zap.SugaredLogger) types.Currency { +func (c *Contractor) refreshFundingEstimate(cfg api.AutopilotConfig, contract api.Contract, logger *zap.SugaredLogger) types.Currency { // refresh with 1.2x the funds refreshAmount := contract.InitialRenterFunds.Mul64(6).Div64(5) - // estimate the txn fee - txnFeeEstimate := fee.Mul64(estimatedFileContractTransactionSetSize) - // check for a sane minimum that is equal to the initial contract funding // but without an upper cap. - minInitialContractFunds := cfg.Contracts.InitialFunding - minimum := c.initialContractFunding(host.Settings, txnFeeEstimate, minInitialContractFunds, types.ZeroCurrency) + minimum := cfg.Contracts.InitialFunding refreshAmountCapped := refreshAmount if refreshAmountCapped.Cmp(minimum) < 0 { refreshAmountCapped = minimum @@ -1239,6 +1220,9 @@ func performContractMaintenance(ctx *mCtx, alerter alerts.Alerter, bus Bus, chur // check if we want to run maintenance if reason, skip := canSkipContractMaintenance(ctx, ctx.ContractsConfig()); skip { logger.With("reason", reason).Info("skipping contract maintenance") + if err := alerter.RegisterAlert(ctx, newContractMaintenanceSkippedAlert(reason)); err != nil { + logger.With(zap.Error(err)).Error("failed to register skipped contract maintenance alert") + } return false, nil } From 81936c75da1a644809684e3a9330089cf670d269 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 24 Oct 2024 10:38:02 +0200 Subject: [PATCH 235/708] sql: add migration code --- .../sql/mysql/migrations/main/migration_00024_initialFunding.sql | 1 + .../sqlite/migrations/main/migration_00024_initialFunding.sql | 1 + 2 files changed, 2 insertions(+) create mode 100644 stores/sql/mysql/migrations/main/migration_00024_initialFunding.sql create mode 100644 stores/sql/sqlite/migrations/main/migration_00024_initialFunding.sql diff --git a/stores/sql/mysql/migrations/main/migration_00024_initialFunding.sql b/stores/sql/mysql/migrations/main/migration_00024_initialFunding.sql new file mode 100644 index 000000000..f964346e7 --- /dev/null +++ b/stores/sql/mysql/migrations/main/migration_00024_initialFunding.sql @@ -0,0 +1 @@ +UPDATE autopilots SET config = JSON_SET(autopilots.config, '$.contracts.initialFunding', '10000000000000000000000000'); diff --git a/stores/sql/sqlite/migrations/main/migration_00024_initialFunding.sql b/stores/sql/sqlite/migrations/main/migration_00024_initialFunding.sql new file mode 100644 index 000000000..f964346e7 --- /dev/null +++ b/stores/sql/sqlite/migrations/main/migration_00024_initialFunding.sql @@ -0,0 +1 @@ +UPDATE autopilots SET config = JSON_SET(autopilots.config, '$.contracts.initialFunding', '10000000000000000000000000'); From 18191b58f4c35af4c72cc409a2f6d6792c8f7a98 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 24 Oct 2024 14:10:39 +0200 Subject: [PATCH 236/708] autopilot: address comments --- autopilot/alerts.go | 2 +- autopilot/autopilot.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/autopilot/alerts.go b/autopilot/alerts.go index 30ce9995a..808bd0302 100644 --- a/autopilot/alerts.go +++ b/autopilot/alerts.go @@ -44,7 +44,7 @@ func newAccountLowBalanceAlert(address types.Address, balance, initialFunding ty "address": address, "balance": balance, "initialFunding": initialFunding, - "hint": fmt.Sprintf("The current wallet balance of %v is less than the configured initialFunding of %v. Ideally, a wallet holds at least one allowance worth of funds to make sure it can renew all its contracts.", balance, initialFunding), + "hint": fmt.Sprintf("The current wallet balance of %v is less than the configured initialFunding of %v times the number of contracts to form. Ideally, a wallet holds at least enough funds to make sure it can form a fresh set of contracts.", balance, initialFunding), }, Timestamp: time.Now(), } diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 8c948fc20..2d536c585 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -590,7 +590,7 @@ func (ap *Autopilot) performWalletMaintenance(ctx context.Context) error { balance := wallet.Confirmed // register an alert if balance is low - if balance.Cmp(cfg.Contracts.InitialFunding) < 0 { + if balance.Cmp(cfg.Contracts.InitialFunding.Mul64(cfg.Contracts.Amount)) < 0 { ap.RegisterAlert(ctx, newAccountLowBalanceAlert(w.Address, balance, cfg.Contracts.InitialFunding, cs.BlockHeight, renewWindow, autopilot.EndHeight())) } else { ap.DismissAlert(ctx, alertLowBalanceID) From 02ab3eaefc0c8d18e0d4e3f6019a5e26b9288b50 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 25 Oct 2024 09:31:27 +0200 Subject: [PATCH 237/708] contractor: hardcode InitialContractFunding --- api/autopilot.go | 17 ++++++++--------- autopilot/autopilot.go | 12 +++--------- autopilot/contractor/contractor.go | 19 +++++++++---------- autopilot/contractor/hostscore_test.go | 16 +++------------- autopilot/contractor/state.go | 4 ---- internal/test/config.go | 7 +++---- stores/autopilot_test.go | 8 +++----- .../main/migration_00024_initialFunding.sql | 1 - .../main/migration_00024_initialFunding.sql | 1 - 9 files changed, 29 insertions(+), 56 deletions(-) delete mode 100644 stores/sql/mysql/migrations/main/migration_00024_initialFunding.sql delete mode 100644 stores/sql/sqlite/migrations/main/migration_00024_initialFunding.sql diff --git a/api/autopilot.go b/api/autopilot.go index 402f2e584..f96e79fbb 100644 --- a/api/autopilot.go +++ b/api/autopilot.go @@ -43,15 +43,14 @@ type ( // ContractsConfig contains all contract settings used in the autopilot. ContractsConfig struct { - Set string `json:"set"` - Amount uint64 `json:"amount"` - InitialFunding types.Currency `json:"initialFunding"` - Period uint64 `json:"period"` - RenewWindow uint64 `json:"renewWindow"` - Download uint64 `json:"download"` - Upload uint64 `json:"upload"` - Storage uint64 `json:"storage"` - Prune bool `json:"prune"` + Set string `json:"set"` + Amount uint64 `json:"amount"` + Period uint64 `json:"period"` + RenewWindow uint64 `json:"renewWindow"` + Download uint64 `json:"download"` + Upload uint64 `json:"upload"` + Storage uint64 `json:"storage"` + Prune bool `json:"prune"` } // HostsConfig contains all hosts settings used in the autopilot. diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 2d536c585..a017d9757 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -568,12 +568,6 @@ func (ap *Autopilot) performWalletMaintenance(ctx context.Context) error { return nil } - // no allowance - nothing to do - if cfg.Contracts.InitialFunding.IsZero() { - l.Warn("wallet maintenance skipped, no initial funding set") - return nil - } - // fetch consensus state cs, err := ap.bus.ConsensusState(ctx) if err != nil { @@ -590,8 +584,8 @@ func (ap *Autopilot) performWalletMaintenance(ctx context.Context) error { balance := wallet.Confirmed // register an alert if balance is low - if balance.Cmp(cfg.Contracts.InitialFunding.Mul64(cfg.Contracts.Amount)) < 0 { - ap.RegisterAlert(ctx, newAccountLowBalanceAlert(w.Address, balance, cfg.Contracts.InitialFunding, cs.BlockHeight, renewWindow, autopilot.EndHeight())) + if balance.Cmp(contractor.InitialContractFunding.Mul64(cfg.Contracts.Amount)) < 0 { + ap.RegisterAlert(ctx, newAccountLowBalanceAlert(w.Address, balance, contractor.InitialContractFunding, cs.BlockHeight, renewWindow, autopilot.EndHeight())) } else { ap.DismissAlert(ctx, alertLowBalanceID) } @@ -612,7 +606,7 @@ func (ap *Autopilot) performWalletMaintenance(ctx context.Context) error { // figure out the amount per output wantedNumOutputs := 10 - amount := cfg.Contracts.InitialFunding.Div64(uint64(wantedNumOutputs)) + amount := contractor.InitialContractFunding.Div64(uint64(wantedNumOutputs)) // redistribute outputs ids, err := b.WalletRedistribute(ctx, wantedNumOutputs, amount) diff --git a/autopilot/contractor/contractor.go b/autopilot/contractor/contractor.go index 41ed7b9ad..74d4b9bc7 100644 --- a/autopilot/contractor/contractor.go +++ b/autopilot/contractor/contractor.go @@ -75,6 +75,10 @@ const ( timeoutBroadcastRevision = time.Minute ) +var ( + InitialContractFunding = types.Siacoins(10) +) + type Bus interface { AncestorContracts(ctx context.Context, id types.FileContractID, minStartHeight uint64) ([]api.ContractMetadata, error) ArchiveContracts(ctx context.Context, toArchive map[types.FileContractID]string) error @@ -257,7 +261,7 @@ func (c *Contractor) refreshContract(ctx *mCtx, w Worker, contract api.Contract, // calculate the renter funds var renterFunds types.Currency if isOutOfFunds(ctx.AutopilotConfig(), pt, contract) { - renterFunds = c.refreshFundingEstimate(ctx.AutopilotConfig(), contract, logger) + renterFunds = c.refreshFundingEstimate(contract, logger) } else { renterFunds = rev.ValidRenterPayout() // don't increase funds } @@ -316,7 +320,7 @@ func (c *Contractor) renewContract(ctx *mCtx, w Worker, contract api.Contract, h // calculate the renter funds for the renewal a.k.a. the funds the renter will // be able to spend - minRenterFunds := ctx.InitialContractFunding() + minRenterFunds := InitialContractFunding renterFunds := renewFundingEstimate(minRenterFunds, contract.InitialRenterFunds, contract.RenterFunds(), logger) // sanity check the endheight is not the same on renewals @@ -414,13 +418,13 @@ func (c *Contractor) broadcastRevisions(ctx context.Context, w Worker, contracts } } -func (c *Contractor) refreshFundingEstimate(cfg api.AutopilotConfig, contract api.Contract, logger *zap.SugaredLogger) types.Currency { +func (c *Contractor) refreshFundingEstimate(contract api.Contract, logger *zap.SugaredLogger) types.Currency { // refresh with 1.2x the funds refreshAmount := contract.InitialRenterFunds.Mul64(6).Div64(5) // check for a sane minimum that is equal to the initial contract funding // but without an upper cap. - minimum := cfg.Contracts.InitialFunding + minimum := InitialContractFunding refreshAmountCapped := refreshAmount if refreshAmountCapped.Cmp(minimum) < 0 { refreshAmountCapped = minimum @@ -535,11 +539,6 @@ func canSkipContractMaintenance(ctx context.Context, cfg api.ContractsConfig) (s return "contracts is set to zero, skipping contract maintenance", true } - // no maintenance if no initial funding amount was set - if cfg.InitialFunding.IsZero() { - return "initial funding is set to zero, skipping contract maintenance", true - } - // no maintenance if no period was set if cfg.Period == 0 { return "period is set to zero, skipping contract maintenance", true @@ -1061,7 +1060,7 @@ func performContractFormations(ctx *mCtx, bus Bus, w Worker, cr contractReviser, } // get the initial contract funds - minInitialContractFunds := ctx.InitialContractFunding() + minInitialContractFunds := InitialContractFunding // form contracts until the new set has the desired size for _, candidate := range candidates { diff --git a/autopilot/contractor/hostscore_test.go b/autopilot/contractor/hostscore_test.go index 93911ba38..81e0798b0 100644 --- a/autopilot/contractor/hostscore_test.go +++ b/autopilot/contractor/hostscore_test.go @@ -14,10 +14,9 @@ import ( var cfg = api.AutopilotConfig{ Contracts: api.ContractsConfig{ - Amount: 50, - InitialFunding: types.Siacoins(1), - Period: 144 * 7 * 6, - RenewWindow: 144 * 7 * 2, + Amount: 50, + Period: 144 * 7 * 6, + RenewWindow: 144 * 7 * 2, Download: 1e12, // 1 TB Upload: 1e12, // 1 TB @@ -106,15 +105,6 @@ func TestHostScore(t *testing.T) { if hostScore(cfg, gs, h1, redundancy).Score() <= hostScore(cfg, gs, h2, redundancy).Score() { t.Fatal("unexpected") } - - // assert zero initial funding does not panic - cfg.Contracts.InitialFunding = types.ZeroCurrency - _ = hostScore(cfg, gs, h1, redundancy) - - // assert missing amount does not panic - cfg.Contracts.InitialFunding = types.Siacoins(1) // reset - cfg.Contracts.Amount = 0 - _ = hostScore(cfg, gs, h1, redundancy) } func TestPriceAdjustmentScore(t *testing.T) { diff --git a/autopilot/contractor/state.go b/autopilot/contractor/state.go index dd46fff95..00ecf45f0 100644 --- a/autopilot/contractor/state.go +++ b/autopilot/contractor/state.go @@ -112,10 +112,6 @@ func (ctx *mCtx) SortContractsForMaintenance(contracts []api.Contract) { ctx.state.ContractsConfig().SortContractsForMaintenance(contracts) } -func (ctx *mCtx) InitialContractFunding() types.Currency { - return ctx.state.AP.Config.Contracts.InitialFunding -} - func (state *MaintenanceState) ContractsConfig() api.ContractsConfig { return state.AP.Config.Contracts } diff --git a/internal/test/config.go b/internal/test/config.go index 879271b0e..14093cd74 100644 --- a/internal/test/config.go +++ b/internal/test/config.go @@ -13,10 +13,9 @@ var ( // one is explicitly set. AutopilotConfig = api.AutopilotConfig{ Contracts: api.ContractsConfig{ - Amount: 3, - InitialFunding: types.Siacoins(1), - Period: 144, - RenewWindow: 72, + Amount: 3, + Period: 144, + RenewWindow: 72, Download: rhpv2.SectorSize * 500, Upload: rhpv2.SectorSize * 500, diff --git a/stores/autopilot_test.go b/stores/autopilot_test.go index e6ea1e95e..a1eecde04 100644 --- a/stores/autopilot_test.go +++ b/stores/autopilot_test.go @@ -6,7 +6,6 @@ import ( "testing" rhpv2 "go.sia.tech/core/rhp/v2" - "go.sia.tech/core/types" "go.sia.tech/renterd/api" ) @@ -25,10 +24,9 @@ func TestAutopilotStore(t *testing.T) { // create a cfg cfg := api.AutopilotConfig{ Contracts: api.ContractsConfig{ - Amount: 3, - InitialFunding: types.Siacoins(1), - Period: 144, - RenewWindow: 72, + Amount: 3, + Period: 144, + RenewWindow: 72, Download: rhpv2.SectorSize * 500, Upload: rhpv2.SectorSize * 500, diff --git a/stores/sql/mysql/migrations/main/migration_00024_initialFunding.sql b/stores/sql/mysql/migrations/main/migration_00024_initialFunding.sql deleted file mode 100644 index f964346e7..000000000 --- a/stores/sql/mysql/migrations/main/migration_00024_initialFunding.sql +++ /dev/null @@ -1 +0,0 @@ -UPDATE autopilots SET config = JSON_SET(autopilots.config, '$.contracts.initialFunding', '10000000000000000000000000'); diff --git a/stores/sql/sqlite/migrations/main/migration_00024_initialFunding.sql b/stores/sql/sqlite/migrations/main/migration_00024_initialFunding.sql deleted file mode 100644 index f964346e7..000000000 --- a/stores/sql/sqlite/migrations/main/migration_00024_initialFunding.sql +++ /dev/null @@ -1 +0,0 @@ -UPDATE autopilots SET config = JSON_SET(autopilots.config, '$.contracts.initialFunding', '10000000000000000000000000'); From cbb8f84ef94fe1150660d112144bfbb699f464d7 Mon Sep 17 00:00:00 2001 From: Christopher Schinnerl Date: Fri, 25 Oct 2024 09:51:25 +0200 Subject: [PATCH 238/708] Fix `TestEphemeralAccountSync` NDF (#1622) Test ran 6*50 times without failing with this fix. NDF that was fixed: `cluster_test.go:1386: account shouldn't be marked as clean shutdown or not require a sync, got true false` Example: https://github.com/SiaFoundation/renterd/actions/runs/11496423699/job/31998008008 The problem was that after the restart of the cluster, when we first fetch the account, the account gets created and sometimes synced (since created accounts are unclean and need to be synced). Whenever it got synced before the check the test failed. While debugging I noticed that the GET route for fetching accounts only returns the account id which I thought was odd anyway so I updated it to return the full account. So the route returns the freshly created, unclean account right away without a chance to sync it. Which fixes the NDF. --- autopilot/workerpool.go | 3 +-- internal/test/e2e/cluster_test.go | 19 +++++++++---------- worker/client/client.go | 2 +- worker/worker.go | 3 +-- 4 files changed, 12 insertions(+), 15 deletions(-) diff --git a/autopilot/workerpool.go b/autopilot/workerpool.go index 54617aee9..000bc9860 100644 --- a/autopilot/workerpool.go +++ b/autopilot/workerpool.go @@ -5,7 +5,6 @@ import ( "sync" "time" - rhpv3 "go.sia.tech/core/rhp/v3" "go.sia.tech/core/types" "go.sia.tech/renterd/api" "go.sia.tech/renterd/object" @@ -13,7 +12,7 @@ import ( ) type Worker interface { - Account(ctx context.Context, hostKey types.PublicKey) (rhpv3.Account, error) + Account(ctx context.Context, hostKey types.PublicKey) (api.Account, error) Contracts(ctx context.Context, hostTimeout time.Duration) (api.ContractsResponse, error) ID(ctx context.Context) (string, error) MigrateSlab(ctx context.Context, s object.Slab, set string) error diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 80a77f751..31eeeae36 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -1373,19 +1373,18 @@ func TestEphemeralAccountSync(t *testing.T) { cluster.sync() // ask for the account, this should trigger its creation - tt.OKAll(cluster.Worker.Account(context.Background(), hk)) + account, err := cluster.Worker.Account(context.Background(), hk) + tt.OK(err) + if account.ID != acc.ID { + t.Fatalf("account ID mismatch, expected %v got %v", acc.ID, account.ID) + } else if account.CleanShutdown || !account.RequiresSync { + t.Fatalf("account shouldn't be marked as clean shutdown or not require a sync, got %v %v", account.CleanShutdown, accounts[0].RequiresSync) + } // make sure we form a contract cluster.WaitForContracts() cluster.MineBlocks(1) - accounts = cluster.Accounts() - if len(accounts) != 1 || accounts[0].ID != acc.ID { - t.Fatal("account should exist") - } else if accounts[0].CleanShutdown || !accounts[0].RequiresSync { - t.Fatal("account shouldn't be marked as clean shutdown or not require a sync, got", accounts[0].CleanShutdown, accounts[0].RequiresSync) - } - // assert account was funded tt.Retry(100, 100*time.Millisecond, func() error { accounts = cluster.Accounts() @@ -1393,8 +1392,8 @@ func TestEphemeralAccountSync(t *testing.T) { return errors.New("account should exist") } else if accounts[0].Balance.Cmp(types.ZeroCurrency.Big()) == 0 { return errors.New("account isn't funded") - } else if accounts[0].RequiresSync { - return fmt.Errorf("account shouldn't require a sync, got %v", accounts[0].RequiresSync) + } else if !accounts[0].CleanShutdown || accounts[0].RequiresSync { + return fmt.Errorf("account should be marked as clean shutdown and not require a sync, got %v %v", accounts[0].CleanShutdown, accounts[0].RequiresSync) } return nil }) diff --git a/worker/client/client.go b/worker/client/client.go index 6a64fc31b..0063938d6 100644 --- a/worker/client/client.go +++ b/worker/client/client.go @@ -33,7 +33,7 @@ func New(addr, password string) *Client { } // Account returns the account id for a given host. -func (c *Client) Account(ctx context.Context, hostKey types.PublicKey) (account rhpv3.Account, err error) { +func (c *Client) Account(ctx context.Context, hostKey types.PublicKey) (account api.Account, err error) { err = c.c.WithContext(ctx).GET(fmt.Sprintf("/account/%s", hostKey), &account) return } diff --git a/worker/worker.go b/worker/worker.go index 074680cf2..bd95d4def 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -840,8 +840,7 @@ func (w *Worker) accountHandlerGET(jc jape.Context) { if jc.DecodeParam("hostkey", &hostKey) != nil { return } - account := rhpv3.Account(w.accounts.ForHost(hostKey).ID()) - jc.Encode(account) + jc.Encode(w.accounts.Account(hostKey)) } func (w *Worker) accountsHandlerGET(jc jape.Context) { From 2d5d587c65c79537c498a71bf1b0e02c8e12dca9 Mon Sep 17 00:00:00 2001 From: PJ Date: Fri, 25 Oct 2024 11:21:32 +0200 Subject: [PATCH 239/708] stores: update file --- ...igration_00024_contract_v2 => migration_00024_contract_v2.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename stores/sql/sqlite/migrations/main/{migration_00024_contract_v2 => migration_00024_contract_v2.sql} (100%) diff --git a/stores/sql/sqlite/migrations/main/migration_00024_contract_v2 b/stores/sql/sqlite/migrations/main/migration_00024_contract_v2.sql similarity index 100% rename from stores/sql/sqlite/migrations/main/migration_00024_contract_v2 rename to stores/sql/sqlite/migrations/main/migration_00024_contract_v2.sql From 2b933326be16560cdc558fa9b5355aafa9e2379f Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 25 Oct 2024 17:16:53 +0200 Subject: [PATCH 240/708] e2e: remove SkipNow from tests --- internal/test/e2e/blocklist_test.go | 6 -- internal/test/e2e/cluster.go | 3 - internal/test/e2e/cluster_test.go | 92 +------------------------- internal/test/e2e/gouging_test.go | 8 --- internal/test/e2e/interactions_test.go | 4 -- internal/test/e2e/metadata_test.go | 4 -- internal/test/e2e/metrics_test.go | 4 -- internal/test/e2e/migrations_test.go | 4 -- internal/test/e2e/pruning_test.go | 8 --- internal/test/e2e/s3_test.go | 28 -------- internal/test/e2e/uploads_test.go | 4 -- stores/multipart_test.go | 9 --- 12 files changed, 1 insertion(+), 173 deletions(-) diff --git a/internal/test/e2e/blocklist_test.go b/internal/test/e2e/blocklist_test.go index c82283726..b2c55fdea 100644 --- a/internal/test/e2e/blocklist_test.go +++ b/internal/test/e2e/blocklist_test.go @@ -12,12 +12,6 @@ import ( ) func TestBlocklist(t *testing.T) { - t.SkipNow() // TODO: re-enable this test - - // if testing.Short() { - // t.SkipNow() - // } - ctx := context.Background() // create a new test cluster diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index fc9559ca7..95af08559 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -240,9 +240,6 @@ func newTestLoggerCustom(level zapcore.Level) *zap.Logger { // newTestCluster creates a new cluster without hosts with a funded bus. func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { // Skip any test that requires a cluster when running short tests. - if testing.Short() { - t.SkipNow() - } tt := test.NewTT(t) // Ensure we don't hang diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 31eeeae36..c0e1c6f20 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -36,10 +36,6 @@ import ( ) func TestObjectsWithNoDelimiter(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // assertMetadata asserts ModTime, ETag and MimeType are set and then clears // them afterwards so we can compare without having to specify the metadata start := time.Now() @@ -367,10 +363,6 @@ func TestNewTestCluster(t *testing.T) { // TestObjectsBucket is a test that verifies whether we properly escape bucket // names. func TestObjectsBucket(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // create a test cluster cluster := newTestCluster(t, testClusterOptions{ hosts: test.RedundancySettings.TotalShards, @@ -405,10 +397,6 @@ func TestObjectsBucket(t *testing.T) { // would expect. It is similar to the TestObjectEntries unit test, but uses // the worker and bus client to verify paths are passed correctly. func TestObjectsWithDelimiterSlash(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // assertMetadata asserts ModTime, ETag and MimeType are set and then clears // them afterwards so we can compare without having to specify the metadata start := time.Now() @@ -591,10 +579,6 @@ func TestObjectsWithDelimiterSlash(t *testing.T) { // TestObjectsRename tests renaming objects and downloading them afterwards. func TestObjectsRename(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // create a test cluster cluster := newTestCluster(t, testClusterOptions{ hosts: test.RedundancySettings.TotalShards, @@ -647,10 +631,6 @@ func TestObjectsRename(t *testing.T) { // TestUploadDownloadEmpty is an integration test that verifies empty objects // can be uploaded and download correctly. func TestUploadDownloadEmpty(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // create a test cluster cluster := newTestCluster(t, testClusterOptions{ hosts: test.RedundancySettings.TotalShards, @@ -676,10 +656,6 @@ func TestUploadDownloadEmpty(t *testing.T) { // TestUploadDownloadBasic is an integration test that verifies objects can be // uploaded and download correctly. func TestUploadDownloadBasic(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // sanity check the default settings if test.AutopilotConfig.Contracts.Amount < uint64(test.RedundancySettings.MinShards) { t.Fatal("too few hosts to support the redundancy settings") @@ -768,10 +744,6 @@ func TestUploadDownloadBasic(t *testing.T) { // TestUploadDownloadExtended is an integration test that verifies objects can // be uploaded and download correctly. func TestUploadDownloadExtended(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // sanity check the default settings if test.AutopilotConfig.Contracts.Amount < uint64(test.RedundancySettings.MinShards) { t.Fatal("too few hosts to support the redundancy settings") @@ -1073,10 +1045,6 @@ func TestUploadDownloadSpending(t *testing.T) { } func TestContractApplyChainUpdates(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // create a test cluster without autopilot cluster := newTestCluster(t, testClusterOptions{skipRunningAutopilot: true}) defer cluster.Shutdown() @@ -1119,10 +1087,6 @@ func TestContractApplyChainUpdates(t *testing.T) { // TestEphemeralAccounts tests the use of ephemeral accounts. func TestEphemeralAccounts(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // create cluster cluster := newTestCluster(t, testClusterOptions{ hosts: 1, @@ -1197,10 +1161,6 @@ func TestEphemeralAccounts(t *testing.T) { // TestParallelUpload tests uploading multiple files in parallel. func TestParallelUpload(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // create a test cluster cluster := newTestCluster(t, testClusterOptions{ hosts: test.RedundancySettings.TotalShards, @@ -1273,10 +1233,6 @@ func TestParallelUpload(t *testing.T) { // TestParallelDownload tests downloading a file in parallel. func TestParallelDownload(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // create a test cluster cluster := newTestCluster(t, testClusterOptions{ hosts: test.RedundancySettings.TotalShards, @@ -1321,9 +1277,7 @@ func TestParallelDownload(t *testing.T) { // TestEphemeralAccountSync verifies that setting the requiresSync flag makes // the autopilot resync the balance between renter and host. func TestEphemeralAccountSync(t *testing.T) { - if testing.Short() { - t.SkipNow() - } else if mysqlCfg := config.MySQLConfigFromEnv(); mysqlCfg.URI != "" { + if mysqlCfg := config.MySQLConfigFromEnv(); mysqlCfg.URI != "" { t.Skip("skipping MySQL suite") } @@ -1402,10 +1356,6 @@ func TestEphemeralAccountSync(t *testing.T) { // TestUploadDownloadSameHost uploads a file to the same host through different // contracts and tries downloading the file again. func TestUploadDownloadSameHost(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // create a test cluster cluster := newTestCluster(t, testClusterOptions{ hosts: test.RedundancySettings.TotalShards, @@ -1453,10 +1403,6 @@ func TestUploadDownloadSameHost(t *testing.T) { } func TestContractArchival(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // create a test cluster cluster := newTestCluster(t, testClusterOptions{ hosts: 1, @@ -1501,10 +1447,6 @@ func TestContractArchival(t *testing.T) { } func TestUnconfirmedContractArchival(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // create a test cluster cluster := newTestCluster(t, testClusterOptions{hosts: 1}) defer cluster.Shutdown() @@ -1558,10 +1500,6 @@ func TestUnconfirmedContractArchival(t *testing.T) { } func TestWalletEvents(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - cluster := newTestCluster(t, clusterOptsDefault) defer cluster.Shutdown() b := cluster.Bus @@ -1610,10 +1548,6 @@ func TestWalletEvents(t *testing.T) { } func TestUploadPacking(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // sanity check the default settings if test.AutopilotConfig.Contracts.Amount < uint64(test.RedundancySettings.MinShards) { t.Fatal("too few hosts to support the redundancy settings") @@ -1783,10 +1717,6 @@ func TestUploadPacking(t *testing.T) { } func TestWallet(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - cluster := newTestCluster(t, clusterOptsDefault) defer cluster.Shutdown() b := cluster.Bus @@ -1863,10 +1793,6 @@ func TestWallet(t *testing.T) { } func TestSlabBufferStats(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // sanity check the default settings if test.AutopilotConfig.Contracts.Amount < uint64(test.RedundancySettings.MinShards) { t.Fatal("too few hosts to support the redundancy settings") @@ -1995,10 +1921,6 @@ func TestSlabBufferStats(t *testing.T) { } func TestAlerts(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - cluster := newTestCluster(t, clusterOptsDefault) defer cluster.Shutdown() b := cluster.Bus @@ -2109,10 +2031,6 @@ func TestAlerts(t *testing.T) { } func TestMultipartUploads(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - cluster := newTestCluster(t, testClusterOptions{ hosts: test.RedundancySettings.TotalShards, uploadPacking: true, @@ -2442,10 +2360,6 @@ func TestBusRecordedMetrics(t *testing.T) { } func TestMultipartUploadWrappedByPartialSlabs(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - cluster := newTestCluster(t, testClusterOptions{ hosts: test.RedundancySettings.TotalShards, uploadPacking: true, @@ -2522,10 +2436,6 @@ func TestMultipartUploadWrappedByPartialSlabs(t *testing.T) { } func TestWalletRedistribute(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - cluster := newTestCluster(t, testClusterOptions{ hosts: test.RedundancySettings.TotalShards, uploadPacking: true, diff --git a/internal/test/e2e/gouging_test.go b/internal/test/e2e/gouging_test.go index a450511bf..54ea827a4 100644 --- a/internal/test/e2e/gouging_test.go +++ b/internal/test/e2e/gouging_test.go @@ -17,10 +17,6 @@ import ( ) func TestGouging(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // create a new test cluster cluster := newTestCluster(t, clusterOptsDefault) defer cluster.Shutdown() @@ -136,10 +132,6 @@ func TestGouging(t *testing.T) { } func TestHostMinVersion(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // create a new test cluster cluster := newTestCluster(t, testClusterOptions{ hosts: int(test.AutopilotConfig.Contracts.Amount), diff --git a/internal/test/e2e/interactions_test.go b/internal/test/e2e/interactions_test.go index 86a634891..66c0c0886 100644 --- a/internal/test/e2e/interactions_test.go +++ b/internal/test/e2e/interactions_test.go @@ -10,10 +10,6 @@ import ( ) func TestInteractions(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // create a new test cluster cluster := newTestCluster(t, clusterOptsDefault) defer cluster.Shutdown() diff --git a/internal/test/e2e/metadata_test.go b/internal/test/e2e/metadata_test.go index 842abd391..c37aeabd1 100644 --- a/internal/test/e2e/metadata_test.go +++ b/internal/test/e2e/metadata_test.go @@ -13,10 +13,6 @@ import ( ) func TestObjectMetadata(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // create cluster cluster := newTestCluster(t, testClusterOptions{ hosts: test.RedundancySettings.TotalShards, diff --git a/internal/test/e2e/metrics_test.go b/internal/test/e2e/metrics_test.go index 49b700eb9..e9f384cce 100644 --- a/internal/test/e2e/metrics_test.go +++ b/internal/test/e2e/metrics_test.go @@ -15,10 +15,6 @@ import ( ) func TestMetrics(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // register start time start := time.Now() diff --git a/internal/test/e2e/migrations_test.go b/internal/test/e2e/migrations_test.go index 95a7804ee..1c564fe4c 100644 --- a/internal/test/e2e/migrations_test.go +++ b/internal/test/e2e/migrations_test.go @@ -20,10 +20,6 @@ import ( ) func TestMigrations(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // configure the cluster to use one extra host rs := test.RedundancySettings cfg := test.AutopilotConfig diff --git a/internal/test/e2e/pruning_test.go b/internal/test/e2e/pruning_test.go index 4b5d3d5ca..73d093751 100644 --- a/internal/test/e2e/pruning_test.go +++ b/internal/test/e2e/pruning_test.go @@ -17,10 +17,6 @@ import ( ) func TestHostPruning(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // create a new test cluster cluster := newTestCluster(t, testClusterOptions{hosts: 1}) defer cluster.Shutdown() @@ -95,10 +91,6 @@ func TestHostPruning(t *testing.T) { } func TestSectorPruning(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // create a cluster opts := clusterOptsDefault opts.logger = zap.NewNop() diff --git a/internal/test/e2e/s3_test.go b/internal/test/e2e/s3_test.go index 110bff06d..2bc74936a 100644 --- a/internal/test/e2e/s3_test.go +++ b/internal/test/e2e/s3_test.go @@ -28,10 +28,6 @@ var ( ) func TestS3Basic(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - start := time.Now() cluster := newTestCluster(t, testClusterOptions{ hosts: test.RedundancySettings.TotalShards, @@ -169,10 +165,6 @@ func TestS3Basic(t *testing.T) { } func TestS3ObjectMetadata(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - // create cluster opts := testClusterOptions{ hosts: test.RedundancySettings.TotalShards, @@ -286,10 +278,6 @@ func TestS3ObjectMetadata(t *testing.T) { } func TestS3Authentication(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - cluster := newTestCluster(t, clusterOptsDefault) defer cluster.Shutdown() tt := cluster.tt @@ -523,10 +511,6 @@ func TestS3List(t *testing.T) { } func TestS3MultipartUploads(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - cluster := newTestCluster(t, testClusterOptions{ hosts: test.RedundancySettings.TotalShards, uploadPacking: true, @@ -666,10 +650,6 @@ func TestS3MultipartUploads(t *testing.T) { // it, the following call to 'pruneSlabs' would fail. That's because it didn't // account for references of multipart uploads when deleting slabs. func TestS3MultipartPruneSlabs(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - cluster := newTestCluster(t, testClusterOptions{ hosts: test.RedundancySettings.TotalShards, uploadPacking: true, @@ -718,10 +698,6 @@ func TestS3MultipartPruneSlabs(t *testing.T) { } func TestS3SpecialChars(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - cluster := newTestCluster(t, testClusterOptions{ hosts: test.RedundancySettings.TotalShards, uploadPacking: true, @@ -762,10 +738,6 @@ func TestS3SpecialChars(t *testing.T) { } func TestS3SettingsValidate(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - cluster := newTestCluster(t, clusterOptsDefault) defer cluster.Shutdown() diff --git a/internal/test/e2e/uploads_test.go b/internal/test/e2e/uploads_test.go index 360bf1866..e1a9a5051 100644 --- a/internal/test/e2e/uploads_test.go +++ b/internal/test/e2e/uploads_test.go @@ -45,10 +45,6 @@ func (r *blockedReader) Read(buf []byte) (n int, err error) { } func TestUploadingSectorsCache(t *testing.T) { - if testing.Short() { - t.SkipNow() - } - cluster := newTestCluster(t, testClusterOptions{ hosts: test.RedundancySettings.TotalShards, }) diff --git a/stores/multipart_test.go b/stores/multipart_test.go index 085dc41b1..3b30f94ac 100644 --- a/stores/multipart_test.go +++ b/stores/multipart_test.go @@ -18,9 +18,6 @@ import ( ) func TestMultipartUploadWithUploadPackingRegression(t *testing.T) { - if testing.Short() { - t.SkipNow() - } ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() @@ -183,9 +180,6 @@ func TestMultipartUploadWithUploadPackingRegression(t *testing.T) { } func TestMultipartUploads(t *testing.T) { - if testing.Short() { - t.SkipNow() - } ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() @@ -279,9 +273,6 @@ func TestMultipartUploads(t *testing.T) { } func TestMultipartUploadEmptyObjects(t *testing.T) { - if testing.Short() { - t.SkipNow() - } ss := newTestSQLStore(t, defaultTestSQLStoreConfig) defer ss.Close() From a86ae5b89669a1392534749d967ca274d19bf6ca Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Mon, 28 Oct 2024 11:48:05 +0100 Subject: [PATCH 241/708] sql: fix panic in TestBlocklist --- stores/sql/mysql/chain.go | 6 ++++++ stores/sql/sqlite/chain.go | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/stores/sql/mysql/chain.go b/stores/sql/mysql/chain.go index 9b45868eb..35f1dc90f 100644 --- a/stores/sql/mysql/chain.go +++ b/stores/sql/mysql/chain.go @@ -259,12 +259,18 @@ func (c chainUpdateTx) UpdateHost(hk types.PublicKey, ha chain.HostAnnouncement, return fmt.Errorf("failed to fetch allow list: %w", err) } defer rows.Close() + + allowlistEntries := make(map[types.PublicKey]int64) for rows.Next() { var id int64 var pk ssql.PublicKey if err := rows.Scan(&id, &pk); err != nil { return fmt.Errorf("failed to scan row: %w", err) } + allowlistEntries[types.PublicKey(pk)] = id + } + + for pk, id := range allowlistEntries { if hk == types.PublicKey(pk) { if _, err := c.tx.Exec(c.ctx, "INSERT IGNORE INTO host_allowlist_entry_hosts (db_allowlist_entry_id, db_host_id) VALUES (?,?)", diff --git a/stores/sql/sqlite/chain.go b/stores/sql/sqlite/chain.go index 83337e7bb..00ad9f405 100644 --- a/stores/sql/sqlite/chain.go +++ b/stores/sql/sqlite/chain.go @@ -271,12 +271,18 @@ func (c chainUpdateTx) UpdateHost(hk types.PublicKey, ha chain.HostAnnouncement, return fmt.Errorf("failed to fetch allow list: %w", err) } defer rows.Close() + + allowlistEntries := make(map[types.PublicKey]int64) for rows.Next() { var id int64 var pk ssql.PublicKey if err := rows.Scan(&id, &pk); err != nil { return fmt.Errorf("failed to scan row: %w", err) } + allowlistEntries[types.PublicKey(pk)] = id + } + + for pk, id := range allowlistEntries { if hk == types.PublicKey(pk) { if _, err := c.tx.Exec(c.ctx, "INSERT OR IGNORE INTO host_allowlist_entry_hosts (db_allowlist_entry_id, db_host_id) VALUES (?,?)", From 8e3dd6ef2fe11b96ed7c4d8f314ac1366312c61f Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 25 Oct 2024 14:59:52 +0200 Subject: [PATCH 242/708] go.mod: update core and coreutils --- go.mod | 4 ++-- go.sum | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 7c52644fa..edbfda9ae 100644 --- a/go.mod +++ b/go.mod @@ -14,8 +14,8 @@ require ( github.com/mattn/go-sqlite3 v1.14.24 github.com/montanaflynn/stats v0.7.1 github.com/shopspring/decimal v1.4.0 - go.sia.tech/core v0.4.8-0.20240926222149-2c8b541119dc - go.sia.tech/coreutils v0.4.1 + go.sia.tech/core v0.5.0 + go.sia.tech/coreutils v0.5.0 go.sia.tech/gofakes3 v0.0.5 go.sia.tech/hostd v1.1.3-0.20241007200428-58d2cc50a7cd go.sia.tech/jape v0.12.1 diff --git a/go.sum b/go.sum index 85fdaf1e6..b79df7f22 100644 --- a/go.sum +++ b/go.sum @@ -57,8 +57,12 @@ go.etcd.io/bbolt v1.3.11 h1:yGEzV1wPz2yVCLsD8ZAiGHhHVlczyC9d1rP43/VCRJ0= go.etcd.io/bbolt v1.3.11/go.mod h1:dksAq7YMXoljX0xu6VF5DMZGbhYYoLUalEiSySYAS4I= go.sia.tech/core v0.4.8-0.20240926222149-2c8b541119dc h1:+hCcYky+23HtiAnirXsq0U/NaCt1WuIu308lmfTtJNM= go.sia.tech/core v0.4.8-0.20240926222149-2c8b541119dc/go.mod h1:j2Ke8ihV8or7d2VDrFZWcCkwSVHO0DNMQJAGs9Qop2M= +go.sia.tech/core v0.5.0 h1:feLC7DSCF+PhU157s/94106hFKyiGrGQ9HC3/dF/l7E= +go.sia.tech/core v0.5.0/go.mod h1:P3C1BWa/7J4XgdzWuaYHBvLo2RzZ0UBaJM4TG1GWB2g= go.sia.tech/coreutils v0.4.1 h1:ExQ9g6EtnFe70ptNBG+OtZyFU3aBoEzE/06rtbN6f4c= go.sia.tech/coreutils v0.4.1/go.mod h1:v60kPqZERsb1ZS0PVe4S8hr2ArNEwTdp7XTzErXnV2U= +go.sia.tech/coreutils v0.5.0 h1:/xKxdw83iZy0jjLzI2NGHyG4azyjK5DJscxpkr6nIGQ= +go.sia.tech/coreutils v0.5.0/go.mod h1:VYM4FcmlhVrpDGvglLHjRW+gitoaxPNLvp5mL2quilo= go.sia.tech/gofakes3 v0.0.5 h1:vFhVBUFbKE9ZplvLE2w4TQxFMQyF8qvgxV4TaTph+Vw= go.sia.tech/gofakes3 v0.0.5/go.mod h1:LXEzwGw+OHysWLmagleCttX93cJZlT9rBu/icOZjQ54= go.sia.tech/hostd v1.1.3-0.20241007200428-58d2cc50a7cd h1:kcw3S5gVN8uOnIaVBQMt5UNpRe3z/+xwpmQT5B6+Zbs= From d46cbcf793790240601b19ce1df4fc23be9dc002 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 25 Oct 2024 15:00:06 +0200 Subject: [PATCH 243/708] e2e: set maturity delay and block interval for testing --- internal/test/e2e/cluster.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index 95af08559..2249a2ec8 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -1065,6 +1065,8 @@ func testNetwork() (*consensus.Network, types.Block) { n.HardforkFoundation.Height = 1 n.HardforkV2.AllowHeight = 1000 n.HardforkV2.RequireHeight = 1020 + n.MaturityDelay = 10 + n.BlockInterval = time.Second return n, genesis } From f9311a4035b1162a637fb2e5029533bbd9b28bd2 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 25 Oct 2024 15:18:22 +0200 Subject: [PATCH 244/708] e2e: fix TestWalletRedistribute --- internal/test/e2e/cluster.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index 2249a2ec8..dbdb673cc 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -489,7 +489,7 @@ func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { // Fund the bus. if funding { - cluster.MineBlocks(network.HardforkFoundation.Height + blocksPerDay) // mine until the first block reward matures + cluster.MineBlocks(network.HardforkFoundation.Height + network.MaturityDelay) // mine until the first block reward matures tt.Retry(100, 100*time.Millisecond, func() error { if cs, err := busClient.ConsensusState(ctx); err != nil { return err From 26786abd08c7525d01a27008d43b38c48202b18e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 01:08:29 +0000 Subject: [PATCH 245/708] build(deps): bump the all-dependencies group with 4 updates Bumps the all-dependencies group with 4 updates: [github.com/gabriel-vasile/mimetype](https://github.com/gabriel-vasile/mimetype), [go.sia.tech/core](https://github.com/SiaFoundation/core), [go.sia.tech/coreutils](https://github.com/SiaFoundation/coreutils) and [go.sia.tech/web/renterd](https://github.com/SiaFoundation/web). Updates `github.com/gabriel-vasile/mimetype` from 1.4.5 to 1.4.6 - [Release notes](https://github.com/gabriel-vasile/mimetype/releases) - [Commits](https://github.com/gabriel-vasile/mimetype/compare/v1.4.5...v1.4.6) Updates `go.sia.tech/core` from 0.4.8-0.20240926222149-2c8b541119dc to 0.5.0 - [Commits](https://github.com/SiaFoundation/core/commits/v0.5.0) Updates `go.sia.tech/coreutils` from 0.4.1 to 0.5.0 - [Commits](https://github.com/SiaFoundation/coreutils/compare/v0.4.1...v0.5.0) Updates `go.sia.tech/web/renterd` from 0.64.0 to 0.65.0 - [Release notes](https://github.com/SiaFoundation/web/releases) - [Commits](https://github.com/SiaFoundation/web/compare/renterd@0.64.0...renterd@0.65.0) --- updated-dependencies: - dependency-name: github.com/gabriel-vasile/mimetype dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: go.sia.tech/core dependency-type: direct:production update-type: version-update:semver-minor dependency-group: all-dependencies - dependency-name: go.sia.tech/coreutils dependency-type: direct:production update-type: version-update:semver-minor dependency-group: all-dependencies - dependency-name: go.sia.tech/web/renterd dependency-type: direct:production update-type: version-update:semver-minor dependency-group: all-dependencies ... Signed-off-by: dependabot[bot] --- go.mod | 6 +++--- go.sum | 16 ++++++---------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/go.mod b/go.mod index edbfda9ae..9c47a08c9 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ toolchain go1.23.2 require ( github.com/aws/aws-sdk-go v1.55.5 - github.com/gabriel-vasile/mimetype v1.4.5 + github.com/gabriel-vasile/mimetype v1.4.6 github.com/go-sql-driver/mysql v1.8.1 github.com/google/go-cmp v0.6.0 github.com/gotd/contrib v0.20.0 @@ -20,7 +20,7 @@ require ( go.sia.tech/hostd v1.1.3-0.20241007200428-58d2cc50a7cd go.sia.tech/jape v0.12.1 go.sia.tech/mux v1.3.0 - go.sia.tech/web/renterd v0.64.0 + go.sia.tech/web/renterd v0.65.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.28.0 golang.org/x/sys v0.26.0 @@ -43,7 +43,7 @@ require ( go.etcd.io/bbolt v1.3.11 // indirect go.sia.tech/web v0.0.0-20240610131903-5611d44a533e // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.29.0 // indirect + golang.org/x/net v0.30.0 // indirect golang.org/x/text v0.19.0 // indirect golang.org/x/time v0.6.0 // indirect golang.org/x/tools v0.23.0 // indirect diff --git a/go.sum b/go.sum index b79df7f22..55115cd4f 100644 --- a/go.sum +++ b/go.sum @@ -7,8 +7,8 @@ github.com/cloudflare/cloudflare-go v0.104.0/go.mod h1:pfUQ4PIG4ISI0/Mmc21Bp86Un github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/gabriel-vasile/mimetype v1.4.5 h1:J7wGKdGu33ocBOhGy0z653k/lFKLFDPJMG8Gql0kxn4= -github.com/gabriel-vasile/mimetype v1.4.5/go.mod h1:ibHel+/kbxn9x2407k1izTA1S81ku1z/DlgOW2QE0M4= +github.com/gabriel-vasile/mimetype v1.4.6 h1:3+PzJTKLkvgjeTbts6msPJt4DixhT4YtFNf1gtGe3zc= +github.com/gabriel-vasile/mimetype v1.4.6/go.mod h1:JX1qVKqZd40hUPpAfiNTe0Sne7hdfKSbOqqmkq8GCXc= github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA= @@ -55,12 +55,8 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.etcd.io/bbolt v1.3.11 h1:yGEzV1wPz2yVCLsD8ZAiGHhHVlczyC9d1rP43/VCRJ0= go.etcd.io/bbolt v1.3.11/go.mod h1:dksAq7YMXoljX0xu6VF5DMZGbhYYoLUalEiSySYAS4I= -go.sia.tech/core v0.4.8-0.20240926222149-2c8b541119dc h1:+hCcYky+23HtiAnirXsq0U/NaCt1WuIu308lmfTtJNM= -go.sia.tech/core v0.4.8-0.20240926222149-2c8b541119dc/go.mod h1:j2Ke8ihV8or7d2VDrFZWcCkwSVHO0DNMQJAGs9Qop2M= go.sia.tech/core v0.5.0 h1:feLC7DSCF+PhU157s/94106hFKyiGrGQ9HC3/dF/l7E= go.sia.tech/core v0.5.0/go.mod h1:P3C1BWa/7J4XgdzWuaYHBvLo2RzZ0UBaJM4TG1GWB2g= -go.sia.tech/coreutils v0.4.1 h1:ExQ9g6EtnFe70ptNBG+OtZyFU3aBoEzE/06rtbN6f4c= -go.sia.tech/coreutils v0.4.1/go.mod h1:v60kPqZERsb1ZS0PVe4S8hr2ArNEwTdp7XTzErXnV2U= go.sia.tech/coreutils v0.5.0 h1:/xKxdw83iZy0jjLzI2NGHyG4azyjK5DJscxpkr6nIGQ= go.sia.tech/coreutils v0.5.0/go.mod h1:VYM4FcmlhVrpDGvglLHjRW+gitoaxPNLvp5mL2quilo= go.sia.tech/gofakes3 v0.0.5 h1:vFhVBUFbKE9ZplvLE2w4TQxFMQyF8qvgxV4TaTph+Vw= @@ -73,8 +69,8 @@ go.sia.tech/mux v1.3.0 h1:hgR34IEkqvfBKUJkAzGi31OADeW2y7D6Bmy/Jcbop9c= go.sia.tech/mux v1.3.0/go.mod h1:I46++RD4beqA3cW9Xm9SwXbezwPqLvHhVs9HLpDtt58= go.sia.tech/web v0.0.0-20240610131903-5611d44a533e h1:oKDz6rUExM4a4o6n/EXDppsEka2y/+/PgFOZmHWQRSI= go.sia.tech/web v0.0.0-20240610131903-5611d44a533e/go.mod h1:4nyDlycPKxTlCqvOeRO0wUfXxyzWCEE7+2BRrdNqvWk= -go.sia.tech/web/renterd v0.64.0 h1:JlfmRqGVBZl0UUJWLi9JDufFlTVo9s6CujwZHKIjm5A= -go.sia.tech/web/renterd v0.64.0/go.mod h1:VWfvYtmdJGfrqSoNRO3NoOjUij+RB/xNO4M0HqIf1+M= +go.sia.tech/web/renterd v0.65.0 h1:8erbw9fchikFjA6vUw4MPUbZGqZJZRECIjzFIe/Qxa4= +go.sia.tech/web/renterd v0.65.0/go.mod h1:VWfvYtmdJGfrqSoNRO3NoOjUij+RB/xNO4M0HqIf1+M= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= @@ -87,8 +83,8 @@ golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7 golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= -golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= +golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= From c88d28fefd79571c924d187eec4b942b85273dc8 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Mon, 28 Oct 2024 08:27:26 +0100 Subject: [PATCH 246/708] test.yml: only run docker login if PR isn't authored by dependabot --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 15e1c0673..c2f050931 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -42,7 +42,7 @@ jobs: with: go-version: ${{ matrix.go-version }} - uses: docker/login-action@v3 # helps with rate limit issues - if: matrix.os == 'ubuntu-latest' + if: matrix.os == 'ubuntu-latest' && github.actor != 'dependabot[bot]' with: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_TOKEN }} From 57d26750ca2b017181fdab28684d47f4f433e57b Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Mon, 28 Oct 2024 16:13:43 +0100 Subject: [PATCH 247/708] rhp4: add client --- go.mod | 11 ++-- go.sum | 22 ++++---- internal/rhp/v4/rhp.go | 44 ++++++++++++++++ internal/rhp/v4/transport.go | 98 ++++++++++++++++++++++++++++++++++++ internal/test/e2e/host.go | 6 +-- 5 files changed, 160 insertions(+), 21 deletions(-) create mode 100644 internal/rhp/v4/rhp.go create mode 100644 internal/rhp/v4/transport.go diff --git a/go.mod b/go.mod index 9c47a08c9..b97e9ada9 100644 --- a/go.mod +++ b/go.mod @@ -14,10 +14,10 @@ require ( github.com/mattn/go-sqlite3 v1.14.24 github.com/montanaflynn/stats v0.7.1 github.com/shopspring/decimal v1.4.0 - go.sia.tech/core v0.5.0 - go.sia.tech/coreutils v0.5.0 + go.sia.tech/core v0.5.1-0.20241028140321-8319d4147268 + go.sia.tech/coreutils v0.5.1-0.20241028141200-29e49cd3cb7e go.sia.tech/gofakes3 v0.0.5 - go.sia.tech/hostd v1.1.3-0.20241007200428-58d2cc50a7cd + go.sia.tech/hostd v1.1.3-0.20241028141324-e5eeff133133 go.sia.tech/jape v0.12.1 go.sia.tech/mux v1.3.0 go.sia.tech/web/renterd v0.65.0 @@ -31,7 +31,7 @@ require ( require ( filippo.io/edwards25519 v1.1.0 // indirect - github.com/cloudflare/cloudflare-go v0.104.0 // indirect + github.com/cloudflare/cloudflare-go v0.107.0 // indirect github.com/goccy/go-json v0.10.3 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect @@ -45,7 +45,6 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.30.0 // indirect golang.org/x/text v0.19.0 // indirect - golang.org/x/time v0.6.0 // indirect + golang.org/x/time v0.7.0 // indirect golang.org/x/tools v0.23.0 // indirect - nhooyr.io/websocket v1.8.17 // indirect ) diff --git a/go.sum b/go.sum index 55115cd4f..38dc3a531 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,8 @@ filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU= github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= -github.com/cloudflare/cloudflare-go v0.104.0 h1:R/lB0dZupaZbOgibAH/BRrkFbZ6Acn/WsKg2iX2xXuY= -github.com/cloudflare/cloudflare-go v0.104.0/go.mod h1:pfUQ4PIG4ISI0/Mmc21Bp86UnFU0ktmPf3iTgbSL+cM= +github.com/cloudflare/cloudflare-go v0.107.0 h1:cMDIw2tzt6TXCJyMFVyP+BPOVkIfMvcKjhMNSNvuEPc= +github.com/cloudflare/cloudflare-go v0.107.0/go.mod h1:5cYGzVBqNTLxMYSLdVjuSs5LJL517wJDSvMPWUrzHzc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -55,14 +55,14 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.etcd.io/bbolt v1.3.11 h1:yGEzV1wPz2yVCLsD8ZAiGHhHVlczyC9d1rP43/VCRJ0= go.etcd.io/bbolt v1.3.11/go.mod h1:dksAq7YMXoljX0xu6VF5DMZGbhYYoLUalEiSySYAS4I= -go.sia.tech/core v0.5.0 h1:feLC7DSCF+PhU157s/94106hFKyiGrGQ9HC3/dF/l7E= -go.sia.tech/core v0.5.0/go.mod h1:P3C1BWa/7J4XgdzWuaYHBvLo2RzZ0UBaJM4TG1GWB2g= -go.sia.tech/coreutils v0.5.0 h1:/xKxdw83iZy0jjLzI2NGHyG4azyjK5DJscxpkr6nIGQ= -go.sia.tech/coreutils v0.5.0/go.mod h1:VYM4FcmlhVrpDGvglLHjRW+gitoaxPNLvp5mL2quilo= +go.sia.tech/core v0.5.1-0.20241028140321-8319d4147268 h1:Afh3x9rg6pI183LQVYIGQ3quhrRgHWez4987JSKmTpk= +go.sia.tech/core v0.5.1-0.20241028140321-8319d4147268/go.mod h1:P3C1BWa/7J4XgdzWuaYHBvLo2RzZ0UBaJM4TG1GWB2g= +go.sia.tech/coreutils v0.5.1-0.20241028141200-29e49cd3cb7e h1:vhqvgo9X6VWiJblgXuTooUhercsPEhizHVGWfh2E5VE= +go.sia.tech/coreutils v0.5.1-0.20241028141200-29e49cd3cb7e/go.mod h1:YlsVY5XQRfTEp2FiaOiOq0KpmWGzJ5stnuESJR/pktg= go.sia.tech/gofakes3 v0.0.5 h1:vFhVBUFbKE9ZplvLE2w4TQxFMQyF8qvgxV4TaTph+Vw= go.sia.tech/gofakes3 v0.0.5/go.mod h1:LXEzwGw+OHysWLmagleCttX93cJZlT9rBu/icOZjQ54= -go.sia.tech/hostd v1.1.3-0.20241007200428-58d2cc50a7cd h1:kcw3S5gVN8uOnIaVBQMt5UNpRe3z/+xwpmQT5B6+Zbs= -go.sia.tech/hostd v1.1.3-0.20241007200428-58d2cc50a7cd/go.mod h1:ZDezsW1NNGPhodtAWMuzhxQdPg2fcDOgZPi/eSSuPBc= +go.sia.tech/hostd v1.1.3-0.20241028141324-e5eeff133133 h1:tUoU+0VXeYSjzzXLo3Y8olaGVlPzTLxCupmAhTEASG8= +go.sia.tech/hostd v1.1.3-0.20241028141324-e5eeff133133/go.mod h1:xjTKgRZjou9qzvVjuwfAEO6qCJRBU0BSYcXfzntlRmU= go.sia.tech/jape v0.12.1 h1:xr+o9V8FO8ScRqbSaqYf9bjj1UJ2eipZuNcI1nYousU= go.sia.tech/jape v0.12.1/go.mod h1:wU+h6Wh5olDjkPXjF0tbZ1GDgoZ6VTi4naFw91yyWC4= go.sia.tech/mux v1.3.0 h1:hgR34IEkqvfBKUJkAzGi31OADeW2y7D6Bmy/Jcbop9c= @@ -97,8 +97,8 @@ golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= -golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= -golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= +golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20190829051458-42f498d34c4d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= @@ -114,5 +114,3 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= lukechampine.com/frand v1.5.1 h1:fg0eRtdmGFIxhP5zQJzM1lFDbD6CUfu/f+7WgAZd5/w= lukechampine.com/frand v1.5.1/go.mod h1:4VstaWc2plN4Mjr10chUD46RAVGWhpkZ5Nja8+Azp0Q= -nhooyr.io/websocket v1.8.17 h1:KEVeLJkUywCKVsnLIDlD/5gtayKp8VoCkksHCGGfT9Y= -nhooyr.io/websocket v1.8.17/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= diff --git a/internal/rhp/v4/rhp.go b/internal/rhp/v4/rhp.go new file mode 100644 index 000000000..08d46526a --- /dev/null +++ b/internal/rhp/v4/rhp.go @@ -0,0 +1,44 @@ +package rhp + +import ( + "context" + "errors" + "net" + + rhp4 "go.sia.tech/core/rhp/v4" + "go.sia.tech/core/types" + rhp "go.sia.tech/coreutils/rhp/v4" +) + +var ( + // errDialTransport is returned when the worker could not dial the host. + ErrDialTransport = errors.New("could not dial transport") +) + +type ( + Dialer interface { + Dial(ctx context.Context, hk types.PublicKey, address string) (net.Conn, error) + } +) + +type Client struct { + tpool *transportPool +} + +func New(dialer Dialer) *Client { + return &Client{ + tpool: newTransportPool(dialer), + } +} + +func (c *Client) Settings(ctx context.Context, hk types.PublicKey, addr string) (hs rhp4.HostSettings, _ error) { + err := c.tpool.withTransport(hk, addr, func(t *transport) error { + client, err := t.Dial(ctx) + if err != nil { + return err + } + hs, err = rhp.RPCSettings(ctx, client) + return err + }) + return hs, err +} diff --git a/internal/rhp/v4/transport.go b/internal/rhp/v4/transport.go new file mode 100644 index 000000000..f949f5fe4 --- /dev/null +++ b/internal/rhp/v4/transport.go @@ -0,0 +1,98 @@ +package rhp + +import ( + "context" + "fmt" + "sync" + "time" + + "go.sia.tech/core/types" + rhp "go.sia.tech/coreutils/rhp/v4" +) + +type transportPool struct { + dialer Dialer + + mu sync.Mutex + pool map[string]*transport +} + +func newTransportPool(dialer Dialer) *transportPool { + return &transportPool{ + dialer: dialer, + pool: make(map[string]*transport), + } +} + +func (p *transportPool) withTransport(hk types.PublicKey, addr string, fn func(*transport) error) (err error) { + // fetch or create transport + p.mu.Lock() + t, found := p.pool[addr] + if !found { + t = &transport{ + dialer: p.dialer, + hk: hk, + addr: addr, + } + p.pool[addr] = t + } + t.refCount++ + p.mu.Unlock() + + // execute function + err = func() (err error) { + defer func() { + if r := recover(); r != nil { + err = fmt.Errorf("panic (withTransport): %v", r) + } + }() + return fn(t) + }() + + // Decrement refcounter again and clean up pool. + p.mu.Lock() + t.refCount-- + if t.refCount == 0 { + // Cleanup + if t.t != nil { + _ = t.t.Close() + t.t = nil + } + delete(p.pool, addr) + } + p.mu.Unlock() + return err +} + +type transport struct { + dialer Dialer + refCount uint64 // locked by pool + + mu sync.Mutex + hk types.PublicKey + addr string + t rhp.TransportClient +} + +// DialStream dials a new stream on the transport. +func (t *transport) Dial(ctx context.Context) (rhp.TransportClient, error) { + t.mu.Lock() + defer t.mu.Unlock() + if t.t == nil { + start := time.Now() + + // dial host + conn, err := t.dialer.Dial(ctx, t.hk, t.addr) + if err != nil { + return nil, err + } + + // upgrade conn + newTransport, err := rhp.UpgradeConn(ctx, conn, t.hk) + if err != nil { + return nil, fmt.Errorf("UpgradeConn: %w: %w (%v)", ErrDialTransport, err, time.Since(start)) + } + t.t = newTransport + } + return t.t, nil +} diff --git a/internal/test/e2e/host.go b/internal/test/e2e/host.go index 1ba6b5acf..a1c99a722 100644 --- a/internal/test/e2e/host.go +++ b/internal/test/e2e/host.go @@ -283,7 +283,7 @@ func NewHost(privKey types.PrivateKey, dir string, network *consensus.Network, g return nil, fmt.Errorf("failed to create rhp3 listener: %w", err) } - settings, err := settings.NewConfigManager(privKey, db, cm, s, wallet, settings.WithValidateNetAddress(false)) + settings, err := settings.NewConfigManager(privKey, db, cm, s, wallet, storage, settings.WithValidateNetAddress(false)) if err != nil { return nil, fmt.Errorf("failed to create settings manager: %w", err) } @@ -296,13 +296,13 @@ func NewHost(privKey types.PrivateKey, dir string, network *consensus.Network, g registry := registry.NewManager(privKey, db, zap.NewNop()) accounts := accounts.NewManager(db, settings) - rhpv2, err := rhpv2.NewSessionHandler(rhp2Listener, privKey, rhp3Listener.Addr().String(), cm, s, wallet, contracts, settings, storage) + rhpv2, err := rhpv2.NewSessionHandler(rhp2Listener, privKey, rhp3Listener.Addr().String(), cm, s, wallet, contracts, settings, storage, log) if err != nil { return nil, fmt.Errorf("failed to create rhpv2 session handler: %w", err) } go rhpv2.Serve() - rhpv3, err := rhpv3.NewSessionHandler(rhp3Listener, privKey, cm, s, wallet, accounts, contracts, registry, storage, settings) + rhpv3, err := rhpv3.NewSessionHandler(rhp3Listener, privKey, cm, s, wallet, accounts, contracts, registry, storage, settings, log) if err != nil { return nil, fmt.Errorf("failed to create rhpv3 session handler: %w", err) } From 4a07e7ec5a12d7c1221966ecc0ba5348867e0e33 Mon Sep 17 00:00:00 2001 From: Christopher Schinnerl Date: Tue, 29 Oct 2024 17:18:37 +0100 Subject: [PATCH 248/708] Reuse chain manager in test cluster (#1631) --- bus/routes.go | 2 +- cmd/renterd/node.go | 14 +--- internal/test/e2e/cluster.go | 123 +++++++++------------------- internal/test/e2e/cluster_test.go | 16 ++-- internal/test/e2e/contracts_test.go | 2 - internal/test/e2e/events_test.go | 4 +- internal/test/e2e/host.go | 18 +--- internal/test/e2e/pruning_test.go | 2 - internal/worker/cache.go | 10 +++ stores/metadata_test.go | 1 - stores/sql.go | 8 +- stores/sql_test.go | 1 - 12 files changed, 68 insertions(+), 133 deletions(-) diff --git a/bus/routes.go b/bus/routes.go index a98ed58f5..72f2f3265 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -741,7 +741,7 @@ func (b *Bus) contractsSetHandlerPUT(jc jape.Context) { return } else if jc.Check("could not add contracts to set", b.store.UpdateContractSet(jc.Request.Context(), set, req.ToAdd, req.ToRemove)) != nil { return - } else { + } else if len(req.ToAdd)+len(req.ToRemove) > 0 { b.broadcastAction(webhooks.Event{ Module: api.ModuleContractSet, Event: api.EventUpdate, diff --git a/cmd/renterd/node.go b/cmd/renterd/node.go index aa36b9f24..2cbd522c4 100644 --- a/cmd/renterd/node.go +++ b/cmd/renterd/node.go @@ -540,17 +540,9 @@ func buildStoreConfig(am alerts.Alerter, cfg config.Config, pk types.PrivateKey, Migrate: true, SlabBufferCompletionThreshold: cfg.Bus.SlabBufferCompletionThreshold, Logger: logger, - RetryTransactionIntervals: []time.Duration{ - 200 * time.Millisecond, - 500 * time.Millisecond, - time.Second, - 3 * time.Second, - 10 * time.Second, - 10 * time.Second, - }, - WalletAddress: types.StandardUnlockHash(pk.PublicKey()), - LongQueryDuration: cfg.Log.Database.SlowThreshold, - LongTxDuration: cfg.Log.Database.SlowThreshold, + WalletAddress: types.StandardUnlockHash(pk.PublicKey()), + LongQueryDuration: cfg.Log.Database.SlowThreshold, + LongTxDuration: cfg.Log.Database.SlowThreshold, }, nil } diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index dbdb673cc..3868c2a87 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -86,9 +86,8 @@ type TestCluster struct { } type dbConfig struct { - Database config.Database - DatabaseLog config.DatabaseLog - RetryTxIntervals []time.Duration + Database config.Database + DatabaseLog config.DatabaseLog } func (tc *TestCluster) Accounts() []api.Account { @@ -212,18 +211,16 @@ type testClusterOptions struct { autopilotCfg *config.Autopilot autopilotSettings *api.AutopilotConfig + cm *chain.Manager busCfg *config.Bus workerCfg *config.Worker } // newTestLogger creates a console logger used for testing. -func newTestLogger() *zap.Logger { - return newTestLoggerCustom(zapcore.WarnLevel) -} - -// newTestLoggerCustom creates a console logger used for testing and allows -// passing in the desired log level. -func newTestLoggerCustom(level zapcore.Level) *zap.Logger { +func newTestLogger(enable bool) *zap.Logger { + if !enable { + return zap.NewNop() + } config := zap.NewProductionEncoderConfig() config.EncodeTime = zapcore.RFC3339TimeEncoder config.EncodeLevel = zapcore.CapitalColorLevelEncoder @@ -231,9 +228,9 @@ func newTestLoggerCustom(level zapcore.Level) *zap.Logger { consoleEncoder := zapcore.NewConsoleEncoder(config) return zap.New( - zapcore.NewCore(consoleEncoder, zapcore.AddSync(os.Stdout), level), + zapcore.NewCore(consoleEncoder, zapcore.AddSync(os.Stdout), zap.DebugLevel), zap.AddCaller(), - zap.AddStacktrace(level), + zap.AddStacktrace(zap.DebugLevel), ) } @@ -251,7 +248,7 @@ func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { if opts.dir != "" { dir = opts.dir } - logger := newTestLogger() + logger := newTestLogger(false) // enable logging here if needed if opts.logger != nil { logger = opts.logger } @@ -346,9 +343,18 @@ func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { }, }))) + cm := opts.cm + network, genesis := testNetwork() + if cm == nil { + // create chain manager + store, state, err := chain.NewDBStore(chain.NewMemDB(), network, genesis) + tt.OK(err) + cm = chain.NewManager(store, state) + } + // Create bus. busDir := filepath.Join(dir, "bus") - b, bShutdownFn, cm, bs, err := newTestBus(ctx, busDir, busCfg, dbCfg, wk, logger) + b, bShutdownFn, cm, bs, err := newTestBus(ctx, cm, genesis, busDir, busCfg, dbCfg, wk, logger) tt.OK(err) busAuth := jape.BasicAuth(busPassword) @@ -398,7 +404,6 @@ func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { autopilotShutdownFns = append(autopilotShutdownFns, autopilotServer.Shutdown) autopilotShutdownFns = append(autopilotShutdownFns, ap.Shutdown) - network, genesis := testNetwork() cluster := &TestCluster{ apID: apCfg.ID, dir: dir, @@ -531,7 +536,7 @@ func newTestCluster(t *testing.T, opts testClusterOptions) *TestCluster { return cluster } -func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, pk types.PrivateKey, logger *zap.Logger) (*bus.Bus, func(ctx context.Context) error, *chain.Manager, bus.Store, error) { +func newTestBus(ctx context.Context, cm *chain.Manager, genesisBlock types.Block, dir string, cfg config.Bus, cfgDb dbConfig, pk types.PrivateKey, logger *zap.Logger) (*bus.Bus, func(ctx context.Context) error, *chain.Manager, bus.Store, error) { // create store config alertsMgr := alerts.NewManager() storeCfg, err := buildStoreConfig(alertsMgr, dir, cfg.SlabBufferCompletionThreshold, cfgDb, pk, logger) @@ -560,21 +565,6 @@ func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, return nil, nil, nil, nil, err } - // create chain database - chainPath := filepath.Join(consensusDir, "blockchain.db") - bdb, err := coreutils.OpenBoltChainDB(chainPath) - if err != nil { - return nil, nil, nil, nil, err - } - - // create chain manager - network, genesis := testNetwork() - store, state, err := chain.NewDBStore(bdb, network, genesis) - if err != nil { - return nil, nil, nil, nil, err - } - cm := chain.NewManager(store, state) - // create wallet w, err := wallet.NewSingleAddressWallet(pk, cm, sqlStore, wallet.WithReservationDuration(cfg.UsedUTXOExpiry)) if err != nil { @@ -595,7 +585,7 @@ func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, // create header header := gateway.Header{ - GenesisID: genesis.ID(), + GenesisID: genesisBlock.ID(), UniqueID: gateway.GenerateUniqueID(), NetAddress: syncerAddr, } @@ -637,7 +627,6 @@ func newTestBus(ctx context.Context, dir string, cfg config.Bus, cfgDb dbConfig, w.Close(), b.Shutdown(ctx), sqlStore.Close(), - bdb.Close(), syncerShutdown(ctx), ) } @@ -698,30 +687,13 @@ func (c *TestCluster) MineBlocks(n uint64) { wallet, err := c.Bus.Wallet(context.Background()) c.tt.OK(err) - // If we don't have any hosts in the cluster mine all blocks right away. - if len(c.hosts) == 0 { - c.tt.OK(c.mineBlocks(wallet.Address, n)) - c.sync() - return - } - - // Otherwise mine blocks in batches of 10 blocks to avoid going out of sync - // with hosts by too many blocks. - for mined := uint64(0); mined < n; { - toMine := n - mined - if toMine > 10 { - toMine = 10 - } - c.tt.OK(c.mineBlocks(wallet.Address, toMine)) - mined += toMine - c.sync() - } + c.tt.OK(c.mineBlocks(wallet.Address, n)) c.sync() } func (c *TestCluster) sync() { tip := c.cm.Tip() - c.tt.Retry(300, 100*time.Millisecond, func() error { + c.tt.Retry(3000, time.Millisecond, func() error { cs, err := c.Bus.ConsensusState(context.Background()) if err != nil { return err @@ -737,12 +709,6 @@ func (c *TestCluster) sync() { } else if wallet.ScanHeight < tip.Height { return fmt.Errorf("wallet hasn't caught up, %d < %d", wallet.ScanHeight, tip.Height) } - - for _, h := range c.hosts { - if hh := h.cm.Tip().Height; hh < tip.Height { - return fmt.Errorf("host %v is not synced, %v < %v", h.PublicKey(), hh, cs.BlockHeight) - } - } return nil }) } @@ -794,7 +760,7 @@ func (c *TestCluster) WaitForContractSetContracts(set string, n int) { n = len(c.hosts) } - c.tt.Retry(300, 100*time.Millisecond, func() error { + c.tt.Retry(3000, time.Millisecond, func() error { sets, err := c.Bus.ContractSets(context.Background()) if err != nil { return err @@ -830,7 +796,7 @@ func (c *TestCluster) WaitForContractSetContracts(set string, n int) { func (c *TestCluster) WaitForPeers() { c.tt.Helper() - c.tt.Retry(300, 100*time.Millisecond, func() error { + c.tt.Retry(3000, time.Millisecond, func() error { peers, err := c.Bus.SyncerPeers(context.Background()) if err != nil { return err @@ -857,7 +823,7 @@ func (c *TestCluster) NewHost() *Host { c.tt.Helper() // Create host. hostDir := filepath.Join(c.dir, "hosts", fmt.Sprint(len(c.hosts)+1)) - h, err := NewHost(types.GeneratePrivateKey(), hostDir, c.network, c.genesisBlock) + h, err := NewHost(types.GeneratePrivateKey(), c.cm, hostDir, c.network, c.genesisBlock) c.tt.OK(err) // Connect gateways. @@ -880,7 +846,7 @@ func (c *TestCluster) AddHost(h *Host) { c.MineBlocks(1) // Wait for host's wallet to be funded - c.tt.Retry(100, 100*time.Millisecond, func() error { + c.tt.Retry(1000, time.Millisecond, func() error { balance, err := h.wallet.Balance() c.tt.OK(err) if balance.Confirmed.IsZero() { @@ -895,13 +861,13 @@ func (c *TestCluster) AddHost(h *Host) { c.tt.OK(addStorageFolderToHost(ctx, []*Host{h})) c.tt.OK(announceHosts([]*Host{h})) - // Mine until the host shows up. - c.tt.Retry(100, 100*time.Millisecond, func() error { + // Mine a block and wait until the host shows up. + c.MineBlocks(1) + c.tt.Retry(1000, time.Millisecond, func() error { c.tt.Helper() _, err := c.Bus.Host(context.Background(), h.PublicKey()) if err != nil { - c.MineBlocks(1) return err } return nil @@ -941,7 +907,7 @@ func (c *TestCluster) AddHostsBlocking(n int) []*Host { // MineTransactions tries to mine the transactions in the transaction pool until // it is empty. func (c *TestCluster) MineTransactions(ctx context.Context) error { - return test.Retry(100, 100*time.Millisecond, func() error { + return test.Retry(1000, 10*time.Millisecond, func() error { txns, err := c.Bus.TransactionPool(ctx) if err != nil { return err @@ -970,7 +936,7 @@ func (c *TestCluster) Shutdown() { // they have money in them func (c *TestCluster) waitForHostAccounts(hosts map[types.PublicKey]struct{}) { c.tt.Helper() - c.tt.Retry(300, 100*time.Millisecond, func() error { + c.tt.Retry(3000, time.Millisecond, func() error { accounts, err := c.Worker.Accounts(context.Background()) if err != nil { return err @@ -1013,7 +979,7 @@ func (c *TestCluster) WaitForContractSet(set string, n int) { // have a contract with every host in the given hosts map func (c *TestCluster) waitForHostContracts(hosts map[types.PublicKey]struct{}) { c.tt.Helper() - c.tt.Retry(300, 100*time.Millisecond, func() error { + c.tt.Retry(3000, time.Millisecond, func() error { contracts, err := c.Bus.Contracts(context.Background(), api.ContractsOpts{}) if err != nil { return err @@ -1065,8 +1031,8 @@ func testNetwork() (*consensus.Network, types.Block) { n.HardforkFoundation.Height = 1 n.HardforkV2.AllowHeight = 1000 n.HardforkV2.RequireHeight = 1020 - n.MaturityDelay = 10 - n.BlockInterval = time.Second + n.MaturityDelay = 1 + n.BlockInterval = 10 * time.Millisecond return n, genesis } @@ -1091,20 +1057,12 @@ func testDBCfg() dbConfig { IgnoreRecordNotFoundError: true, SlowThreshold: 100 * time.Millisecond, }, - RetryTxIntervals: []time.Duration{ - 50 * time.Millisecond, - 100 * time.Millisecond, - 200 * time.Millisecond, - 500 * time.Millisecond, - time.Second, - 5 * time.Second, - }, } } func testWorkerCfg() config.Worker { return config.Worker{ - AccountsRefillInterval: time.Second, + AccountsRefillInterval: 10 * time.Millisecond, AllowPrivateIPs: true, ContractLockTimeout: 5 * time.Second, ID: "worker", @@ -1124,7 +1082,7 @@ func testApCfg() config.Autopilot { MigrationHealthCutoff: 0.99, MigratorParallelSlabsPerWorker: 1, RevisionSubmissionBuffer: 0, - ScannerInterval: time.Second, + ScannerInterval: 10 * time.Millisecond, ScannerBatchSize: 10, ScannerNumThreads: 1, } @@ -1199,8 +1157,7 @@ func buildStoreConfig(am alerts.Alerter, dir string, slabBufferCompletionThresho Logger: logger, WalletAddress: types.StandardUnlockHash(pk.PublicKey()), - RetryTransactionIntervals: cfg.RetryTxIntervals, - LongQueryDuration: cfg.DatabaseLog.SlowThreshold, - LongTxDuration: cfg.DatabaseLog.SlowThreshold, + LongQueryDuration: cfg.DatabaseLog.SlowThreshold, + LongTxDuration: cfg.DatabaseLog.SlowThreshold, }, nil } diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index c0e1c6f20..77d0fb830 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -31,7 +31,6 @@ import ( "go.sia.tech/renterd/internal/utils" "go.sia.tech/renterd/object" "go.sia.tech/renterd/stores/sql/sqlite" - "go.uber.org/zap" "lukechampine.com/frand" ) @@ -895,8 +894,7 @@ func TestUploadDownloadSpending(t *testing.T) { // create a test cluster cluster := newTestCluster(t, testClusterOptions{ - hosts: test.RedundancySettings.TotalShards, - logger: zap.NewNop(), + hosts: test.RedundancySettings.TotalShards, }) defer cluster.Shutdown() @@ -1315,6 +1313,7 @@ func TestEphemeralAccountSync(t *testing.T) { // start the cluster again cluster = newTestCluster(t, testClusterOptions{ + cm: cluster.cm, dir: cluster.dir, logger: cluster.logger, walletKey: &cluster.wk, @@ -1506,10 +1505,10 @@ func TestWalletEvents(t *testing.T) { tt := cluster.tt // Make sure we get transactions that are spread out over multiple seconds. - time.Sleep(time.Second) - cluster.MineBlocks(1) - time.Sleep(time.Second) - cluster.MineBlocks(1) + for i := 0; i < 3; i++ { + time.Sleep(time.Second) + cluster.MineBlocks(1) + } // Get all events of the wallet. allTxns, err := b.WalletEvents(context.Background()) @@ -2442,6 +2441,9 @@ func TestWalletRedistribute(t *testing.T) { }) defer cluster.Shutdown() + // mine to get more money + cluster.MineBlocks(1) + // redistribute into 2 outputs of 500KS each numOutputs := 2 outputAmt := types.Siacoins(500e3) diff --git a/internal/test/e2e/contracts_test.go b/internal/test/e2e/contracts_test.go index 0304e0909..f21e0dcc2 100644 --- a/internal/test/e2e/contracts_test.go +++ b/internal/test/e2e/contracts_test.go @@ -10,7 +10,6 @@ import ( "go.sia.tech/core/types" "go.sia.tech/renterd/api" "go.sia.tech/renterd/internal/test" - "go.uber.org/zap/zapcore" ) func TestFormContract(t *testing.T) { @@ -21,7 +20,6 @@ func TestFormContract(t *testing.T) { // create cluster opts := clusterOptsDefault opts.autopilotSettings = &apSettings - opts.logger = newTestLoggerCustom(zapcore.DebugLevel) cluster := newTestCluster(t, opts) defer cluster.Shutdown() diff --git a/internal/test/e2e/events_test.go b/internal/test/e2e/events_test.go index c86fb1d10..5fa7dd768 100644 --- a/internal/test/e2e/events_test.go +++ b/internal/test/e2e/events_test.go @@ -133,7 +133,7 @@ func TestEvents(t *testing.T) { tt.OK(h.UpdateSettings(settings)) // wait until we received the events - tt.Retry(10, time.Second, func() error { + tt.Retry(100, 100*time.Millisecond, func() error { mu.Lock() defer mu.Unlock() if len(received) < len(allEvents) { @@ -157,7 +157,7 @@ func TestEvents(t *testing.T) { t.Fatalf("unexpected event %+v", e) } case api.EventContractSetUpdate: - if e.Name != test.ContractSet || len(e.ToAdd) != 1 || e.ToAdd[0] != c.ID || len(e.ToRemove) != 0 || e.Timestamp.IsZero() { + if e.Name != test.ContractSet || len(e.ToAdd) != 1 || (e.ToAdd[0] != c.ID && e.ToAdd[0] != renewed.ID) || len(e.ToRemove) != 0 || e.Timestamp.IsZero() { t.Fatalf("unexpected event %+v", e) } case api.EventConsensusUpdate: diff --git a/internal/test/e2e/host.go b/internal/test/e2e/host.go index 1ba6b5acf..ef082cf43 100644 --- a/internal/test/e2e/host.go +++ b/internal/test/e2e/host.go @@ -14,7 +14,6 @@ import ( crhpv2 "go.sia.tech/core/rhp/v2" crhpv3 "go.sia.tech/core/rhp/v3" "go.sia.tech/core/types" - "go.sia.tech/coreutils" "go.sia.tech/coreutils/chain" "go.sia.tech/coreutils/syncer" "go.sia.tech/coreutils/wallet" @@ -109,8 +108,6 @@ type Host struct { s *syncer.Syncer syncerCancel context.CancelFunc - cm *chain.Manager - chainDB *coreutils.BoltChainDB store *sqlite.Store wallet *wallet.SingleAddressWallet @@ -160,7 +157,6 @@ func (h *Host) Close() error { h.store.Close() h.syncerCancel() h.s.Close() - h.chainDB.Close() return nil } @@ -220,20 +216,10 @@ func (h *Host) SyncerAddr() string { } // NewHost initializes a new test host. -func NewHost(privKey types.PrivateKey, dir string, network *consensus.Network, genesisBlock types.Block) (*Host, error) { +func NewHost(privKey types.PrivateKey, cm *chain.Manager, dir string, network *consensus.Network, genesisBlock types.Block) (*Host, error) { if err := os.MkdirAll(dir, 0700); err != nil { return nil, fmt.Errorf("failed to create dir: %w", err) } - chainDB, err := coreutils.OpenBoltChainDB(filepath.Join(dir, "chain.db")) - if err != nil { - return nil, fmt.Errorf("failed to create chaindb: %w", err) - } - dbStore, tipState, err := chain.NewDBStore(chainDB, network, genesisBlock) - if err != nil { - return nil, err - } - cm := chain.NewManager(dbStore, tipState) - l, err := net.Listen("tcp", "localhost:0") if err != nil { return nil, fmt.Errorf("failed to create syncer listener: %w", err) @@ -314,8 +300,6 @@ func NewHost(privKey types.PrivateKey, dir string, network *consensus.Network, g s: s, syncerCancel: syncerCancel, - cm: cm, - chainDB: chainDB, store: db, wallet: wallet, diff --git a/internal/test/e2e/pruning_test.go b/internal/test/e2e/pruning_test.go index 73d093751..8e7585944 100644 --- a/internal/test/e2e/pruning_test.go +++ b/internal/test/e2e/pruning_test.go @@ -13,7 +13,6 @@ import ( "go.sia.tech/core/types" "go.sia.tech/renterd/api" "go.sia.tech/renterd/internal/test" - "go.uber.org/zap" ) func TestHostPruning(t *testing.T) { @@ -93,7 +92,6 @@ func TestHostPruning(t *testing.T) { func TestSectorPruning(t *testing.T) { // create a cluster opts := clusterOptsDefault - opts.logger = zap.NewNop() cluster := newTestCluster(t, opts) defer cluster.Shutdown() diff --git a/internal/worker/cache.go b/internal/worker/cache.go index bf60c1d48..d357293ff 100644 --- a/internal/worker/cache.go +++ b/internal/worker/cache.go @@ -6,6 +6,7 @@ import ( "encoding/json" "errors" "fmt" + "reflect" "sort" "sync" "time" @@ -53,6 +54,15 @@ func (c *memoryCache) Get(key string) (value interface{}, found bool, expired bo } else if time.Now().After(entry.expiry) { return entry.value, true, true } + + t := reflect.TypeOf(entry.value) + if t.Kind() == reflect.Slice { + v := reflect.ValueOf(entry.value) + copied := reflect.MakeSlice(t, v.Len(), v.Cap()) + reflect.Copy(copied, v) + return copied.Interface(), true, false + } + return entry.value, true, false } diff --git a/stores/metadata_test.go b/stores/metadata_test.go index 35ba4dc1e..0bac13260 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -4480,7 +4480,6 @@ func TestUpdateObjectParallel(t *testing.T) { t.SkipNow() } ss := newTestSQLStore(t, defaultTestSQLStoreConfig) - ss.retryTransactionIntervals = []time.Duration{0} // don't retry defer ss.Close() // create 2 hosts diff --git a/stores/sql.go b/stores/sql.go index 14216ce32..3b736ac2e 100644 --- a/stores/sql.go +++ b/stores/sql.go @@ -26,7 +26,6 @@ type ( WalletAddress types.Address SlabBufferCompletionThreshold int64 Logger *zap.Logger - RetryTransactionIntervals []time.Duration LongQueryDuration time.Duration LongTxDuration time.Duration } @@ -51,8 +50,6 @@ type ( settingsMu sync.Mutex settings map[string]string - retryTransactionIntervals []time.Duration - shutdownCtx context.Context shutdownCtxCancel context.CancelFunc @@ -102,9 +99,8 @@ func NewSQLStore(cfg Config) (*SQLStore, error) { settings: make(map[string]string), walletAddress: cfg.WalletAddress, - slabPruneSigChan: make(chan struct{}, 1), - lastPrunedAt: time.Now(), - retryTransactionIntervals: cfg.RetryTransactionIntervals, + slabPruneSigChan: make(chan struct{}, 1), + lastPrunedAt: time.Now(), shutdownCtx: shutdownCtx, shutdownCtxCancel: shutdownCtxCancel, diff --git a/stores/sql_test.go b/stores/sql_test.go index 4c89a80bd..cd6118bdb 100644 --- a/stores/sql_test.go +++ b/stores/sql_test.go @@ -178,7 +178,6 @@ func newTestSQLStore(t *testing.T, cfg testSQLStoreConfig) *testSQLStore { Logger: zap.NewNop(), LongQueryDuration: 100 * time.Millisecond, LongTxDuration: 100 * time.Millisecond, - RetryTransactionIntervals: []time.Duration{50 * time.Millisecond, 100 * time.Millisecond, 200 * time.Millisecond}, }) if err != nil { t.Fatal("failed to create SQLStore", err) From e528e952317f690c60c2c1f8358773f7801fbdf8 Mon Sep 17 00:00:00 2001 From: Christopher Schinnerl Date: Tue, 29 Oct 2024 17:46:14 +0100 Subject: [PATCH 249/708] Limit lowest possible sub-score for a host (#1626) Closes https://github.com/SiaFoundation/renterd/issues/1595 The value `0.1` was picked mostly because it seemed reasonable that when comparing a perfect host to another one that fails in a single category would be 10x more likely to get picked as a host. Similarly when compared to a host that fails in every category a perfect host would be 10,000,000x more likely to be picked. So there is still an exponential component to it but the approach in this PR lessens the impact of potential temporary issues or bugs. --- autopilot/contractor/hostscore.go | 37 ++++++++++++++++++++------ autopilot/contractor/hostscore_test.go | 35 +++++++++++++++++++++++- autopilot/scanner/scanner.go | 2 +- 3 files changed, 64 insertions(+), 10 deletions(-) diff --git a/autopilot/contractor/hostscore.go b/autopilot/contractor/hostscore.go index 4b6961089..a1d73c39a 100644 --- a/autopilot/contractor/hostscore.go +++ b/autopilot/contractor/hostscore.go @@ -21,8 +21,29 @@ const ( // minValidScore is the smallest score that a host can have before // being ignored. minValidScore = math.SmallestNonzeroFloat64 + + // minSubScore is the smallest score that a host can have for a given + // sub-score such as its pricing. By choosing 0.1, a host that has a very bad + // price score but is otherwise perfect can at most be 90% less likely to be + // picked than a host that has a perfect score. + minSubScore = 0.1 ) +// clampScore makes sure that a score can not be smaller than 'minSubScore'. +// Unless the score is 0, which indicates a more severe issue with the host. By +// doing so, we limit the impact of a single sub-score on the overall score of a +// host. +func clampScore(score float64) float64 { + if score <= 0.0 { + return 0.0 + } else if score < minSubScore { + return minSubScore + } else if score > 1.0 { + return 1.0 + } + return score +} + func hostScore(cfg api.AutopilotConfig, gs api.GougingSettings, h api.Host, expectedRedundancy float64) (sb api.HostScoreBreakdown) { cCfg := cfg.Contracts // idealDataPerHost is the amount of data that we would have to put on each @@ -39,13 +60,13 @@ func hostScore(cfg api.AutopilotConfig, gs api.GougingSettings, h api.Host, expe // data will store twice the expectation allocationPerHost := idealDataPerHost * 2 return api.HostScoreBreakdown{ - Age: ageScore(h), - Collateral: collateralScore(cCfg, h.PriceTable.HostPriceTable, uint64(allocationPerHost)), - Interactions: interactionScore(h), - Prices: priceAdjustmentScore(h.PriceTable.HostPriceTable, gs), - StorageRemaining: storageRemainingScore(h.Settings, h.StoredData, allocationPerHost), - Uptime: uptimeScore(h), - Version: versionScore(h.Settings, cfg.Hosts.MinProtocolVersion), + Age: ageScore(h), // not clamped since values are hardcoded + Collateral: clampScore(collateralScore(cCfg, h.PriceTable.HostPriceTable, uint64(allocationPerHost))), + Interactions: clampScore(interactionScore(h)), + Prices: clampScore(priceAdjustmentScore(h.PriceTable.HostPriceTable, gs)), + StorageRemaining: clampScore(storageRemainingScore(h.Settings, h.StoredData, allocationPerHost)), + Uptime: clampScore(uptimeScore(h)), + Version: clampScore(versionScore(h.Settings, cfg.Hosts.MinProtocolVersion)), } } @@ -240,7 +261,7 @@ func uptimeScore(h api.Host) float64 { } else if lastScanSuccess || secondToLastScanSuccess { return 0.5 } else { - return 0.05 + return minSubScore } } diff --git a/autopilot/contractor/hostscore_test.go b/autopilot/contractor/hostscore_test.go index 81e0798b0..1407d5de9 100644 --- a/autopilot/contractor/hostscore_test.go +++ b/autopilot/contractor/hostscore_test.go @@ -30,6 +30,39 @@ var cfg = api.AutopilotConfig{ }, } +func TestClampScore(t *testing.T) { + tests := []struct { + in float64 + out float64 + }{ + { + in: -1, + out: 0, + }, + { + in: 0, + out: 0, + }, + { + in: 1, + out: 1, + }, + { + in: 1.1, + out: 1, + }, + { + in: 0.05, + out: minSubScore, + }, + } + for _, test := range tests { + if out := clampScore(test.in); out != test.out { + t.Errorf("expected %v, got %v", test.out, out) + } + } +} + func TestHostScore(t *testing.T) { day := 24 * time.Hour @@ -51,7 +84,7 @@ func TestHostScore(t *testing.T) { } // // assert age affects the score - h1.KnownSince = time.Now().Add(-1 * day) + h1.KnownSince = time.Now().Add(-100 * day) if hostScore(cfg, gs, h1, redundancy).Score() <= hostScore(cfg, gs, h2, redundancy).Score() { t.Fatal("unexpected") } diff --git a/autopilot/scanner/scanner.go b/autopilot/scanner/scanner.go index eba0af92d..288bc9e9e 100644 --- a/autopilot/scanner/scanner.go +++ b/autopilot/scanner/scanner.go @@ -282,7 +282,7 @@ func (s *scanner) removeOfflineHosts(ctx context.Context) (removed uint64) { var err error removed, err = s.hs.RemoveOfflineHosts(ctx, s.hostsCfg.MaxConsecutiveScanFailures, maxDowntime) - if err != nil { + if err != nil && !errors.Is(err, context.Canceled) { s.logger.Errorw("removing offline hosts failed", zap.Error(err), "maxDowntime", maxDowntime, "maxConsecutiveScanFailures", s.hostsCfg.MaxConsecutiveScanFailures) return } From 01dc9b59d564aae18c3c6ae708555dd8594c1f70 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 30 Oct 2024 09:36:00 +0100 Subject: [PATCH 250/708] rhp: add rpc function skeletons --- internal/rhp/v4/rhp.go | 70 ++++++++++++++++++++++++++++++++---- internal/rhp/v4/transport.go | 8 +++-- 2 files changed, 70 insertions(+), 8 deletions(-) diff --git a/internal/rhp/v4/rhp.go b/internal/rhp/v4/rhp.go index 08d46526a..125097879 100644 --- a/internal/rhp/v4/rhp.go +++ b/internal/rhp/v4/rhp.go @@ -3,8 +3,10 @@ package rhp import ( "context" "errors" + "io" "net" + "go.sia.tech/core/consensus" rhp4 "go.sia.tech/core/rhp/v4" "go.sia.tech/core/types" rhp "go.sia.tech/coreutils/rhp/v4" @@ -32,13 +34,69 @@ func New(dialer Dialer) *Client { } func (c *Client) Settings(ctx context.Context, hk types.PublicKey, addr string) (hs rhp4.HostSettings, _ error) { - err := c.tpool.withTransport(hk, addr, func(t *transport) error { - client, err := t.Dial(ctx) - if err != nil { - return err - } - hs, err = rhp.RPCSettings(ctx, client) + err := c.tpool.withTransport(ctx, hk, addr, func(c rhp.TransportClient) (err error) { + hs, err = rhp.RPCSettings(ctx, c) return err }) return hs, err } + +// ReadSector reads a sector from the host. +func (c *Client) ReadSector(ctx context.Context, prices rhp4.HostPrices, token rhp4.AccountToken, w io.Writer, root types.Hash256, offset, length uint64) (rhp.RPCReadSectorResult, error) { + panic("not implemented") +} + +// WriteSector writes a sector to the host. +func (c *Client) WriteSector(ctx context.Context, prices rhp4.HostPrices, token rhp4.AccountToken, rl rhp.ReaderLen, duration uint64) (rhp.RPCWriteSectorResult, error) { + panic("not implemented") +} + +// VerifySector verifies that the host is properly storing a sector +func (c *Client) VerifySector(ctx context.Context, prices rhp4.HostPrices, token rhp4.AccountToken, root types.Hash256) (rhp.RPCVerifySectorResult, error) { + panic("not implemented") +} + +// FreeSectors removes sectors from a contract. +func (c *Client) FreeSectors(ctx context.Context, cs consensus.State, prices rhp4.HostPrices, sk types.PrivateKey, contract rhp.ContractRevision, indices []uint64) (rhp.RPCFreeSectorsResult, error) { + panic("not implemented") +} + +// AppendSectors appends sectors a host is storing to a contract. +func (c *Client) AppendSectors(ctx context.Context, cs consensus.State, prices rhp4.HostPrices, sk types.PrivateKey, contract rhp.ContractRevision, roots []types.Hash256) (rhp.RPCAppendSectorsResult, error) { + panic("not implemented") +} + +// FundAccounts funds accounts on the host. +func (c *Client) FundAccounts(ctx context.Context, cs consensus.State, signer rhp.ContractSigner, contract rhp.ContractRevision, deposits []rhp4.AccountDeposit) (rhp.RPCFundAccountResult, error) { + panic("not implemented") +} + +// LatestRevision returns the latest revision of a contract. +func (c *Client) LatestRevision(ctx context.Context, contractID types.FileContractID) (types.V2FileContract, error) { + panic("not implemented") +} + +// SectorRoots returns the sector roots for a contract. +func (c *Client) SectorRoots(ctx context.Context, cs consensus.State, prices rhp4.HostPrices, signer rhp.ContractSigner, contract rhp.ContractRevision, offset, length uint64) (rhp.RPCSectorRootsResult, error) { + panic("not implemented") +} + +// AccountBalance returns the balance of an account. +func (c *Client) AccountBalance(ctx context.Context, account rhp4.Account) (types.Currency, error) { + panic("not implemented") +} + +// FormContract forms a contract with a host +func (c *Client) FormContract(ctx context.Context, tp rhp.TxPool, signer rhp.FormContractSigner, cs consensus.State, p rhp4.HostPrices, hostKey types.PublicKey, hostAddress types.Address, params rhp4.RPCFormContractParams) (rhp.RPCFormContractResult, error) { + panic("not implemented") +} + +// RenewContract renews a contract with a host. +func (c *Client) RenewContract(ctx context.Context, tp rhp.TxPool, signer rhp.FormContractSigner, cs consensus.State, p rhp4.HostPrices, existing types.V2FileContract, params rhp4.RPCRenewContractParams) (rhp.RPCRenewContractResult, error) { + panic("not implemented") +} + +// RefreshContract refreshes a contract with a host. +func (c *Client) RefreshContract(ctx context.Context, tp rhp.TxPool, signer rhp.FormContractSigner, cs consensus.State, p rhp4.HostPrices, existing types.V2FileContract, params rhp4.RPCRefreshContractParams) (rhp.RPCRefreshContractResult, error) { + panic("not implemented") +} diff --git a/internal/rhp/v4/transport.go b/internal/rhp/v4/transport.go index f949f5fe4..87e2aa831 100644 --- a/internal/rhp/v4/transport.go +++ b/internal/rhp/v4/transport.go @@ -24,7 +24,7 @@ func newTransportPool(dialer Dialer) *transportPool { } } -func (p *transportPool) withTransport(hk types.PublicKey, addr string, fn func(*transport) error) (err error) { +func (p *transportPool) withTransport(ctx context.Context, hk types.PublicKey, addr string, fn func(rhp.TransportClient) error) (err error) { // fetch or create transport p.mu.Lock() t, found := p.pool[addr] @@ -46,7 +46,11 @@ func (p *transportPool) withTransport(hk types.PublicKey, addr string, fn func(* err = fmt.Errorf("panic (withTransport): %v", r) } }() - return fn(t) + client, err := t.Dial(ctx) + if err != nil { + return err + } + return fn(client) }() // Decrement refcounter again and clean up pool. From b5e6cb2c8c6eef6d4b53b9b2431f5ddc84fbea5c Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 30 Oct 2024 10:08:52 +0100 Subject: [PATCH 251/708] bus/worker: add rhp4Client --- bus/bus.go | 20 ++++++++++++-------- bus/routes.go | 10 +++++----- worker/worker.go | 3 +++ 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/bus/bus.go b/bus/bus.go index 9b26776bf..034325875 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -31,6 +31,7 @@ import ( "go.sia.tech/renterd/internal/rhp" rhp2 "go.sia.tech/renterd/internal/rhp/v2" rhp3 "go.sia.tech/renterd/internal/rhp/v3" + rhp4 "go.sia.tech/renterd/internal/rhp/v4" "go.sia.tech/renterd/internal/utils" "go.sia.tech/renterd/object" "go.sia.tech/renterd/stores" @@ -325,8 +326,9 @@ type Bus struct { w Wallet store Store - rhp2 *rhp2.Client - rhp3 *rhp3.Client + rhp2Client *rhp2.Client + rhp3Client *rhp3.Client + rhp4Client *rhp4.Client contractLocker ContractLocker explorer *ibus.Explorer @@ -339,6 +341,7 @@ type Bus struct { // New returns a new Bus func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksManager, cm ChainManager, s Syncer, w Wallet, store Store, announcementMaxAge time.Duration, explorerURL string, l *zap.Logger) (_ *Bus, err error) { l = l.Named("bus") + dialer := rhp.NewFallbackDialer(store, net.Dialer{}, l) b := &Bus{ startTime: time.Now(), @@ -355,8 +358,9 @@ func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksMa webhooksMgr: wm, logger: l.Sugar(), - rhp2: rhp2.New(rhp.NewFallbackDialer(store, net.Dialer{}, l), l), - rhp3: rhp3.New(rhp.NewFallbackDialer(store, net.Dialer{}, l), l), + rhp2Client: rhp2.New(dialer, l), + rhp3Client: rhp3.New(dialer, l), + rhp4Client: rhp4.New(dialer), } // create contract locker @@ -614,7 +618,7 @@ func (b *Bus) broadcastContract(ctx context.Context, fcid types.FileContractID) renterKey := b.masterKey.DeriveContractKey(c.HostKey) // fetch revision - rev, err := b.rhp2.SignedRevision(ctx, c.HostIP, c.HostKey, renterKey, fcid, time.Minute) + rev, err := b.rhp2Client.SignedRevision(ctx, c.HostIP, c.HostKey, renterKey, fcid, time.Minute) if err != nil { return types.TransactionID{}, fmt.Errorf("couldn't fetch revision; %w", err) } @@ -716,7 +720,7 @@ func (b *Bus) formContract(ctx context.Context, hostSettings rhpv2.HostSettings, b.w.SignTransaction(&txn, toSign, wallet.ExplicitCoveredFields(txn)) // form the contract - contract, txnSet, err := b.rhp2.FormContract(ctx, hostKey, hostIP, renterKey, append(b.cm.UnconfirmedParents(txn), txn)) + contract, txnSet, err := b.rhp2Client.FormContract(ctx, hostKey, hostIP, renterKey, append(b.cm.UnconfirmedParents(txn), txn)) if err != nil { b.w.ReleaseInputs([]types.Transaction{txn}, nil) return rhpv2.ContractRevision{}, err @@ -866,7 +870,7 @@ func (b *Bus) renewContract(ctx context.Context, cs consensus.State, gp api.Goug }() // fetch the revision - rev, err := b.rhp3.Revision(ctx, c.ID, c.HostKey, c.SiamuxAddr) + rev, err := b.rhp3Client.Revision(ctx, c.ID, c.HostKey, c.SiamuxAddr) if err != nil { return rhpv2.ContractRevision{}, types.ZeroCurrency, types.ZeroCurrency, fmt.Errorf("couldn't fetch revision; %w", err) } @@ -874,7 +878,7 @@ func (b *Bus) renewContract(ctx context.Context, cs consensus.State, gp api.Goug // renew contract gc := gouging.NewChecker(gp.GougingSettings, gp.ConsensusState, nil, nil) prepareRenew := b.prepareRenew(cs, rev, hs.Address, b.w.Address(), renterFunds, minNewCollateral, endHeight, expectedNewStorage) - newRevision, txnSet, contractPrice, fundAmount, err := b.rhp3.Renew(ctx, gc, rev, renterKey, c.HostKey, c.SiamuxAddr, prepareRenew, b.w.SignTransaction) + newRevision, txnSet, contractPrice, fundAmount, err := b.rhp3Client.Renew(ctx, gc, rev, renterKey, c.HostKey, c.SiamuxAddr, prepareRenew, b.w.SignTransaction) if err != nil { return rhpv2.ContractRevision{}, types.ZeroCurrency, types.ZeroCurrency, fmt.Errorf("couldn't renew contract; %w", err) } diff --git a/bus/routes.go b/bus/routes.go index 72f2f3265..4a9cccb1e 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -60,7 +60,7 @@ func (b *Bus) accountsFundHandler(jc jape.Context) { defer b.contractLocker.Release(req.ContractID, lockID) // latest revision - rev, err := b.rhp3.Revision(jc.Request.Context(), req.ContractID, cm.HostKey, cm.SiamuxAddr) + rev, err := b.rhp3Client.Revision(jc.Request.Context(), req.ContractID, cm.HostKey, cm.SiamuxAddr) if jc.Check("failed to fetch contract revision", err) != nil { return } @@ -72,7 +72,7 @@ func (b *Bus) accountsFundHandler(jc jape.Context) { } // price table - pt, err := b.rhp3.PriceTable(jc.Request.Context(), cm.HostKey, cm.SiamuxAddr, rhp3.PreparePriceTableContractPayment(&rev, req.AccountID, rk)) + pt, err := b.rhp3Client.PriceTable(jc.Request.Context(), cm.HostKey, cm.SiamuxAddr, rhp3.PreparePriceTableContractPayment(&rev, req.AccountID, rk)) if jc.Check("failed to fetch price table", err) != nil { return } @@ -92,7 +92,7 @@ func (b *Bus) accountsFundHandler(jc jape.Context) { } // fund the account - err = b.rhp3.FundAccount(jc.Request.Context(), &rev, cm.HostKey, cm.SiamuxAddr, deposit, req.AccountID, pt.HostPriceTable, rk) + err = b.rhp3Client.FundAccount(jc.Request.Context(), &rev, cm.HostKey, cm.SiamuxAddr, deposit, req.AccountID, pt.HostPriceTable, rk) if jc.Check("failed to fund account", err) != nil { return } @@ -854,7 +854,7 @@ func (b *Bus) contractPruneHandlerPOST(jc jape.Context) { // prune the contract rk := b.masterKey.DeriveContractKey(c.HostKey) - rev, spending, pruned, remaining, err := b.rhp2.PruneContract(pruneCtx, rk, gc, c.HostIP, c.HostKey, fcid, c.RevisionNumber, func(fcid types.FileContractID, roots []types.Hash256) ([]uint64, error) { + rev, spending, pruned, remaining, err := b.rhp2Client.PruneContract(pruneCtx, rk, gc, c.HostIP, c.HostKey, fcid, c.RevisionNumber, func(fcid types.FileContractID, roots []types.Hash256) ([]uint64, error) { indices, err := b.store.PrunableContractRoots(ctx, fcid, roots) if err != nil { return nil, err @@ -2321,7 +2321,7 @@ func (b *Bus) contractsFormHandler(jc jape.Context) { gc := gouging.NewChecker(gp.GougingSettings, gp.ConsensusState, nil, nil) // fetch host settings - settings, err := b.rhp2.Settings(ctx, rfr.HostKey, rfr.HostIP) + settings, err := b.rhp2Client.Settings(ctx, rfr.HostKey, rfr.HostIP) if jc.Check("couldn't fetch host settings", err) != nil { return } diff --git a/worker/worker.go b/worker/worker.go index bd95d4def..eece75ce7 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -29,6 +29,7 @@ import ( "go.sia.tech/renterd/internal/rhp" rhp2 "go.sia.tech/renterd/internal/rhp/v2" rhp3 "go.sia.tech/renterd/internal/rhp/v3" + rhp4 "go.sia.tech/renterd/internal/rhp/v4" "go.sia.tech/renterd/internal/utils" iworker "go.sia.tech/renterd/internal/worker" "go.sia.tech/renterd/object" @@ -167,6 +168,7 @@ type Worker struct { rhp2Client *rhp2.Client rhp3Client *rhp3.Client + rhp4Client *rhp4.Client allowPrivateIPs bool id string @@ -930,6 +932,7 @@ func New(cfg config.Worker, masterKey [32]byte, b Bus, l *zap.Logger) (*Worker, logger: l.Sugar(), rhp2Client: rhp2.New(dialer, l), rhp3Client: rhp3.New(dialer, l), + rhp4Client: rhp4.New(dialer), startTime: time.Now(), uploadingPackedSlabs: make(map[string]struct{}), shutdownCtx: shutdownCtx, From 7aff0fe1a157cf4be521fa371dfda6b418b36eb1 Mon Sep 17 00:00:00 2001 From: Peter-Jan Brone Date: Wed, 30 Oct 2024 13:47:43 +0100 Subject: [PATCH 252/708] Ensure the download algorithm exhausts all hosts that have the sector (#1606) This PR alters the download algorithm in a way we try and download the sector from all hosts it's on, not just the latest host, which is a field we'll be removing in https://github.com/SiaFoundation/renterd/pull/1597 --------- Co-authored-by: Chris Schinnerl --- internal/test/e2e/cluster_test.go | 141 ++++++++++++++++++++- worker/download.go | 201 +++++++++++++++++------------- worker/upload.go | 8 +- 3 files changed, 257 insertions(+), 93 deletions(-) diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 77d0fb830..18c3e1dc2 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -1659,10 +1659,28 @@ func TestUploadPacking(t *testing.T) { // upload 2 more files which are half a slab each to test filling up a slab // exactly. data4 := make([]byte, slabSize/2) - data5 := make([]byte, slabSize/2) uploadDownload("file4", data4) - uploadDownload("file5", data5) download("file4", data4, 0, int64(len(data4))) + tt.Retry(100, 100*time.Millisecond, func() error { + buffers, err := b.SlabBuffers() + if err != nil { + t.Fatal(err) + } + for _, buffer := range buffers { + if buffer.Locked { + return errors.New("buffer locked") + } + } + ps, err := b.PackedSlabsForUpload(context.Background(), time.Millisecond, uint8(rs.MinShards), uint8(rs.TotalShards), test.ContractSet, 1) + if err != nil { + t.Fatal(err) + } else if len(ps) > 0 { + return errors.New("packed slabs left") + } + return nil + }) + data5 := make([]byte, slabSize/2) + uploadDownload("file5", data5) // assert number of objects os, err := b.ObjectsStats(context.Background(), api.ObjectsStatsOpts{}) @@ -1673,7 +1691,7 @@ func TestUploadPacking(t *testing.T) { // check the object size stats, we use a retry loop since packed slabs are // uploaded in a separate goroutine, so the object stats might lag a bit - tt.Retry(60, time.Second, func() error { + tt.Retry(100, 100*time.Millisecond, func() error { os, err := b.ObjectsStats(context.Background(), api.ObjectsStatsOpts{}) if err != nil { t.Fatal(err) @@ -2596,6 +2614,123 @@ func TestHostScan(t *testing.T) { } } +// TestDownloadAllHosts makes sure we try to download sectors, from all hosts +// that a sector is stored on. +func TestDownloadAllHosts(t *testing.T) { + if testing.Short() { + t.SkipNow() + } + + // get rid of redundancy + rs := test.RedundancySettings + rs.MinShards = rs.TotalShards + + // create a test cluster + cluster := newTestCluster(t, testClusterOptions{ + hosts: rs.TotalShards, + uploadPacking: false, // make sure data is uploaded + }) + defer cluster.Shutdown() + + b := cluster.Bus + w := cluster.Worker + tt := cluster.tt + + // update redundancy settings + us, err := b.UploadSettings(context.Background()) + us.Redundancy = rs + tt.OK(err) + tt.OK(b.UpdateUploadSettings(context.Background(), us)) + + // prepare a file + data := make([]byte, 128) + tt.OKAll(frand.Read(data)) + + // upload the data + path := fmt.Sprintf("data_%v", len(data)) + tt.OKAll(w.UploadObject(context.Background(), bytes.NewReader(data), testBucket, path, api.UploadObjectOptions{})) + + // fetch object + obj, err := cluster.Bus.Object(context.Background(), testBucket, path, api.GetObjectOptions{}) + tt.OK(err) + + // build used hosts + usedHosts := make(map[types.PublicKey]struct{}) + for _, s := range obj.Object.Slabs { + for _, ss := range s.Shards { + for hk := range ss.Contracts { + usedHosts[hk] = struct{}{} + } + } + } + if len(usedHosts) != rs.TotalShards { + t.Fatalf("unexpected number of used hosts %d", len(usedHosts)) + } + + // add a host + cluster.AddHosts(1) + + // grab random used host + var randomHost string + for _, host := range cluster.hosts { + if _, used := usedHosts[host.PublicKey()]; used { + randomHost = host.settings.Settings().NetAddress + break + } + } + + // add it to the blocklist + tt.OK(b.UpdateHostBlocklist(context.Background(), []string{randomHost}, nil, false)) + + // wait until we migrated away from that host + var newHost types.PublicKey + tt.Retry(100, 100*time.Millisecond, func() error { + obj, err := cluster.Bus.Object(context.Background(), testBucket, path, api.GetObjectOptions{}) + tt.OK(err) + for _, s := range obj.Object.Slabs { + for _, ss := range s.Shards { + for hk := range ss.Contracts { + if _, used := usedHosts[hk]; !used { + newHost = hk + return nil + } + } + } + } + return errors.New("no migration took place") + }) + + // download the object + dst := new(bytes.Buffer) + tt.OK(cluster.Worker.DownloadObject(context.Background(), dst, testBucket, path, api.DownloadObjectOptions{})) + if !bytes.Equal(dst.Bytes(), data) { + t.Fatal("data mismatch") + } + + // block the new host but unblock the old one + for _, host := range cluster.hosts { + if host.PublicKey() == newHost { + tt.OK(b.UpdateHostBlocklist(context.Background(), []string{host.settings.Settings().NetAddress}, []string{randomHost}, false)) + } + } + + // gouge prices on the new host + for _, host := range cluster.hosts { + if host.PublicKey() == newHost { + settings := host.settings.Settings() + settings.StoragePrice = types.Siacoins(1e3) + tt.OK(host.UpdateSettings(settings)) + } + } + + // download the object + dst = new(bytes.Buffer) + tt.OK(cluster.Worker.DownloadObject(context.Background(), dst, testBucket, path, api.DownloadObjectOptions{})) + if !bytes.Equal(dst.Bytes(), data) { + t.Fatal("data mismatch") + } +} + func TestBackup(t *testing.T) { cluster := newTestCluster(t, clusterOptsDefault) defer cluster.Shutdown() diff --git a/worker/download.go b/worker/download.go index a0a95b733..ca8d9a213 100644 --- a/worker/download.go +++ b/worker/download.go @@ -7,6 +7,7 @@ import ( "fmt" "io" "math" + "sort" "sync" "time" @@ -75,9 +76,7 @@ type ( numOverpaid uint64 numRelaunched uint64 - unusedHostSectors map[types.PublicKey][]sectorInfo - - sectors [][]byte + sectors []*sectorInfo errs HostErrorSet } @@ -117,8 +116,11 @@ type ( } sectorInfo struct { - object.Sector - index int + root types.Hash256 + data []byte + hks []types.PublicKey + index int + selected int } downloadManagerStats struct { @@ -128,6 +130,16 @@ type ( } ) +func (s *sectorInfo) selectHost(h types.PublicKey) { + for i, hk := range s.hks { + if hk == h { + s.hks = append(s.hks[:i], s.hks[i+1:]...) // remove the host + s.selected++ + break + } + } +} + func (w *Worker) initDownloadManager(uploadKey *utils.UploadKey, maxMemory, maxOverdrive uint64, overdriveTimeout time.Duration, logger *zap.Logger) { if w.downloadManager != nil { panic("download manager already initialized") // developer error @@ -253,7 +265,7 @@ func (mgr *downloadManager) DownloadObject(ctx context.Context, w io.Writer, o o // check if we have enough downloaders var available uint8 for _, s := range next.Shards { - if _, exists := hosts[s.LatestHost]; exists { + if isSectorAvailable(s, hosts) { available++ } } @@ -375,7 +387,7 @@ func (mgr *downloadManager) DownloadSlab(ctx context.Context, slab object.Slab, // count how many shards we can download (best-case) var availableShards uint8 for _, shard := range slab.Shards { - if _, exists := available[shard.LatestHost]; exists { + if isSectorAvailable(shard, available) { availableShards++ } } @@ -511,10 +523,18 @@ func (mgr *downloadManager) newSlabDownload(slice object.SlabSlice, migration bo // calculate the offset and length offset, length := slice.SectorRegion() - // build sector info - hostToSectors := make(map[types.PublicKey][]sectorInfo) + // build sectors + var sectors []*sectorInfo for sI, s := range slice.Shards { - hostToSectors[s.LatestHost] = append(hostToSectors[s.LatestHost], sectorInfo{s, sI}) + hks := make([]types.PublicKey, 0, len(s.Contracts)) + for hk := range s.Contracts { + hks = append(hks, hk) + } + sectors = append(sectors, §orInfo{ + root: s.Root, + index: sI, + hks: hks, + }) } // create slab download @@ -528,9 +548,7 @@ func (mgr *downloadManager) newSlabDownload(slice object.SlabSlice, migration bo created: time.Now(), overpay: migration && slice.Health <= downloadOverpayHealthThreshold, - unusedHostSectors: hostToSectors, - - sectors: make([][]byte, len(slice.Shards)), + sectors: sectors, errs: make(HostErrorSet), } } @@ -618,11 +636,8 @@ func (s *slabDownload) overdrive(ctx context.Context, resps *sectorResponses) (r return case <-timer.C: if canOverdrive(timeout()) { - for { - req := s.nextRequest(ctx, resps, true) - if req == nil { - break - } + req := s.nextRequest(ctx, resps, true) + if req != nil { s.launch(req) } } @@ -638,69 +653,69 @@ func (s *slabDownload) nextRequest(ctx context.Context, resps *sectorResponses, s.mu.Lock() defer s.mu.Unlock() - // prepare next sectors to download - // select all possible hosts - var hosts []types.PublicKey - for host, sectors := range s.unusedHostSectors { - // remove any sector that has been downloaded already - for i := range sectors { - if len(s.sectors[sectors[i].index]) > 0 { - sectors = append(sectors[:i], sectors[i+1:]...) - s.unusedHostSectors[host] = sectors - } - } - // remove host if no sectors are left - if len(sectors) == 0 { - delete(s.unusedHostSectors, host) - continue + // update pending sectors + var pending []*sectorInfo + for _, sector := range s.sectors { + if len(sector.data) == 0 && len(sector.hks) > 0 { + pending = append(pending, sector) } - hosts = append(hosts, host) - } - - // no more sectors to download - we don't know if the download failed at - // this point so we register an error that gets propagated in case it did - if len(hosts) == 0 { - s.errs[types.PublicKey{}] = fmt.Errorf("%w: no more hosts", errDownloadNotEnoughHosts) - return nil } - // select the fastest host - fastest := s.mgr.fastest(hosts) - if fastest == nil { - s.errs[types.PublicKey{}] = fmt.Errorf("%w: no more downloaders", errDownloadNotEnoughHosts) - return nil - } + // sort pending sectors + sort.Slice(pending, func(i, j int) bool { + // get fastest download for each sector + iFastest := s.mgr.fastest(pending[i].hks) + jFastest := s.mgr.fastest(pending[j].hks) - // pop the next sector - hk := fastest.PublicKey() - sector := s.unusedHostSectors[hk][0] - s.unusedHostSectors[hk] = s.unusedHostSectors[hk][1:] + // check edge case where a sector doesn't have a downloader + if iFastest != nil && jFastest == nil { + return true // prefer i + } else if iFastest == nil && jFastest != nil { + return false // prefer j + } else if iFastest == nil && jFastest == nil { + return false // doesn't matter + } + // both have a downloader, sort by number of selections next + if pending[i].selected != pending[j].selected { + return pending[i].selected < pending[j].selected + } + // both have been selected the same number of times, pick the faster one + return iFastest.estimate() < jFastest.estimate() + }) - // if host is out of sectors, remove it - if len(s.unusedHostSectors[hk]) == 0 { - delete(s.unusedHostSectors, hk) + for _, next := range pending { + fastest := s.mgr.fastest(next.hks) + if fastest == nil { + // no host available for this sector, clean 'hks' + next.hks = nil + continue + } + next.selectHost(fastest.PublicKey()) + return §orDownloadReq{ + ctx: ctx, + + offset: s.offset, + length: s.length, + root: next.root, + host: fastest, + + // overpay is set to 'true' when a request is retried after the slab + // download failed and we realise that it might have succeeded if we + // allowed overpaying for certain sectors, we only do this when trying + // to migrate a critically low-health slab that might otherwise be + // unrecoverable + overpay: false, + + overdrive: overdrive, + sectorIndex: next.index, + resps: resps, + } } - // build the request - return §orDownloadReq{ - ctx: ctx, - - offset: s.offset, - length: s.length, - root: sector.Root, - host: fastest, - - // overpay is set to 'true' when a request is retried after the slab - // download failed and we realise that it might have succeeded if we - // allowed overpaying for certain sectors, we only do this when trying - // to migrate a critically low-health slab that might otherwise be - // unrecoverable - overpay: false, - - overdrive: overdrive, - sectorIndex: sector.index, - resps: resps, - } + // we don't know if the download failed at this point so we register an + // error that gets propagated in case it did + s.errs[types.PublicKey{}] = fmt.Errorf("%w: no more hosts", errDownloadNotEnoughHosts) + return nil } func (s *slabDownload) download(ctx context.Context) ([][]byte, bool, error) { @@ -758,12 +773,9 @@ loop: // handle errors if resp.err != nil { - // launch overdrive requests - for { - if req := s.nextRequest(ctx, resps, true); req != nil { - s.launch(req) - } - break + // launch replacement request + if req := s.nextRequest(ctx, resps, resp.req.overdrive); req != nil { + s.launch(req) } // handle lost sectors @@ -808,8 +820,7 @@ func (s *slabDownload) overdrivePct() float64 { func (s *slabDownload) downloadSpeed() int64 { s.mu.Lock() defer s.mu.Unlock() - completedShards := len(s.sectors) - bytes := completedShards * rhpv2.SectorSize + bytes := s.numCompleted * rhpv2.SectorSize ms := time.Since(s.created).Milliseconds() if ms == 0 { ms = 1 // avoid division by zero @@ -821,9 +832,14 @@ func (s *slabDownload) finish() ([][]byte, bool, error) { s.mu.Lock() defer s.mu.Unlock() if s.numCompleted < s.minShards { - return nil, s.numOverpaid > 0, fmt.Errorf("failed to download slab: completed=%d inflight=%d launched=%d relaunched=%d overpaid=%d downloaders=%d unused=%d errors=%d %v", s.numCompleted, s.numInflight, s.numLaunched, s.numRelaunched, s.numOverpaid, s.mgr.numDownloaders(), len(s.unusedHostSectors), len(s.errs), s.errs) + return nil, s.numOverpaid > 0, fmt.Errorf("failed to download slab: completed=%d inflight=%d launched=%d relaunched=%d overpaid=%d downloaders=%d errors=%d %v", s.numCompleted, s.numInflight, s.numLaunched, s.numRelaunched, s.numOverpaid, s.mgr.numDownloaders(), len(s.errs), s.errs) } - return s.sectors, s.numOverpaid > 0, nil + + data := make([][]byte, len(s.sectors)) + for i, sector := range s.sectors { + data[i] = sector.data + } + return data, s.numOverpaid > 0, nil } func (s *slabDownload) missing() int { @@ -882,8 +898,10 @@ func (s *slabDownload) receive(resp sectorDownloadResp) (finished bool) { } // store the sector - s.sectors[resp.req.sectorIndex] = resp.sector - s.numCompleted++ + if len(s.sectors[resp.req.sectorIndex].data) == 0 { + s.sectors[resp.req.sectorIndex].data = resp.sector + s.numCompleted++ + } return s.numCompleted >= s.minShards } @@ -982,3 +1000,14 @@ func (sr *sectorResponses) Next() *sectorDownloadResp { sr.responses = sr.responses[1:] return resp } + +func isSectorAvailable(s object.Sector, hosts map[types.PublicKey]struct{}) bool { + // if any of the other hosts that store the sector are + // available, the sector is also considered available + for hk := range s.Contracts { + if _, available := hosts[hk]; available { + return true + } + } + return false +} diff --git a/worker/upload.go b/worker/upload.go index d009b6f42..8fdfefe2e 100644 --- a/worker/upload.go +++ b/worker/upload.go @@ -199,7 +199,7 @@ func (w *Worker) upload(ctx context.Context, bucket, key string, rs api.Redundan w.logger.With(zap.Error(err)).Error("couldn't fetch packed slabs from bus") } else if len(packedSlabs) > 0 { // upload packed slab - if err := w.tryUploadPackedSlab(ctx, mem, packedSlabs[0], up.rs, up.contractSet, lockingPriorityBlockedUpload); err != nil { + if err := w.uploadPackedSlab(ctx, mem, packedSlabs[0], up.rs, up.contractSet, lockingPriorityBlockedUpload); err != nil { w.logger.With(zap.Error(err)).Error("failed to upload packed slab") } } @@ -266,8 +266,8 @@ func (w *Worker) threadedUploadPackedSlabs(rs api.RedundancySettings, contractSe ctx, cancel := context.WithTimeout(context.Background(), defaultPackedSlabsUploadTimeout) defer cancel() - // try to upload a packed slab, if there were no packed slabs left to upload ok is false - if err := w.tryUploadPackedSlab(ctx, mem, ps, rs, contractSet, lockPriority); err != nil { + // upload packed slab + if err := w.uploadPackedSlab(ctx, mem, ps, rs, contractSet, lockPriority); err != nil { w.logger.Error(err) interruptCancel() // prevent new uploads from being launched } @@ -278,7 +278,7 @@ func (w *Worker) threadedUploadPackedSlabs(rs api.RedundancySettings, contractSe wg.Wait() } -func (w *Worker) tryUploadPackedSlab(ctx context.Context, mem Memory, ps api.PackedSlab, rs api.RedundancySettings, contractSet string, lockPriority int) error { +func (w *Worker) uploadPackedSlab(ctx context.Context, mem Memory, ps api.PackedSlab, rs api.RedundancySettings, contractSet string, lockPriority int) error { // fetch contracts contracts, err := w.bus.Contracts(ctx, api.ContractsOpts{ContractSet: contractSet}) if err != nil { From 0ea2fbf1aca6e4b5a0e23ddf4e0a5b332359c179 Mon Sep 17 00:00:00 2001 From: PJ Date: Wed, 30 Oct 2024 14:04:24 +0100 Subject: [PATCH 253/708] db: update migration id --- internal/sql/migrations.go | 4 ++-- ..._00024_latest_host.sql => migration_00025_latest_host.sql} | 0 ..._00024_latest_host.sql => migration_00025_latest_host.sql} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename stores/sql/mysql/migrations/main/{migration_00024_latest_host.sql => migration_00025_latest_host.sql} (100%) rename stores/sql/sqlite/migrations/main/{migration_00024_latest_host.sql => migration_00025_latest_host.sql} (100%) diff --git a/internal/sql/migrations.go b/internal/sql/migrations.go index bc51dca61..780ec361c 100644 --- a/internal/sql/migrations.go +++ b/internal/sql/migrations.go @@ -256,9 +256,9 @@ var ( }, }, { - ID: "00024_latest_host", + ID: "00025_latest_host", Migrate: func(tx Tx) error { - return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00024_latest_host", log) + return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00025_latest_host", log) }, }, } diff --git a/stores/sql/mysql/migrations/main/migration_00024_latest_host.sql b/stores/sql/mysql/migrations/main/migration_00025_latest_host.sql similarity index 100% rename from stores/sql/mysql/migrations/main/migration_00024_latest_host.sql rename to stores/sql/mysql/migrations/main/migration_00025_latest_host.sql diff --git a/stores/sql/sqlite/migrations/main/migration_00024_latest_host.sql b/stores/sql/sqlite/migrations/main/migration_00025_latest_host.sql similarity index 100% rename from stores/sql/sqlite/migrations/main/migration_00024_latest_host.sql rename to stores/sql/sqlite/migrations/main/migration_00025_latest_host.sql From ae1f4e5fe43fddd64ee278d5f2fe055077a0159f Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 30 Oct 2024 14:09:03 +0100 Subject: [PATCH 254/708] sql: remove default from schemas --- stores/sql/mysql/migrations/main/schema.sql | 2 +- stores/sql/sqlite/migrations/main/schema.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/stores/sql/mysql/migrations/main/schema.sql b/stores/sql/mysql/migrations/main/schema.sql index 2b8af1aed..b1e520cd1 100644 --- a/stores/sql/mysql/migrations/main/schema.sql +++ b/stores/sql/mysql/migrations/main/schema.sql @@ -77,7 +77,7 @@ CREATE TABLE `contracts` ( `fcid` varbinary(32) NOT NULL, `host_id` bigint unsigned DEFAULT NULL, `host_key` varbinary(32), - `v2` boolean NOT NULL DEFAULT FALSE, + `v2` boolean NOT NULL, `archival_reason` varchar(191) DEFAULT NULL, `proof_height` bigint unsigned DEFAULT '0', diff --git a/stores/sql/sqlite/migrations/main/schema.sql b/stores/sql/sqlite/migrations/main/schema.sql index d4edad8be..a2b51e204 100644 --- a/stores/sql/sqlite/migrations/main/schema.sql +++ b/stores/sql/sqlite/migrations/main/schema.sql @@ -8,7 +8,7 @@ CREATE INDEX `idx_hosts_public_key` ON `hosts`(`public_key`); CREATE INDEX `idx_hosts_net_address` ON `hosts`(`net_address`); -- dbContract -CREATE TABLE contracts (`id` integer PRIMARY KEY AUTOINCREMENT, `created_at` datetime, `fcid` blob NOT NULL UNIQUE, `host_id` integer, `host_key` blob NOT NULL,`v2` INTEGER NOT NULL DEFAULT 0, `archival_reason` text DEFAULT NULL, `proof_height` integer DEFAULT 0, `renewed_from` blob, `renewed_to` blob, `revision_height` integer DEFAULT 0, `revision_number` text NOT NULL DEFAULT "0", `size` integer, `start_height` integer NOT NULL, `state` integer NOT NULL DEFAULT 0, `window_start` integer NOT NULL DEFAULT 0, `window_end` integer NOT NULL DEFAULT 0, `contract_price` text, `initial_renter_funds` text, `delete_spending` text, `fund_account_spending` text, `sector_roots_spending` text, `upload_spending` text, CONSTRAINT `fk_contracts_host` FOREIGN KEY (`host_id`) REFERENCES `hosts`(`id`)); +CREATE TABLE contracts (`id` integer PRIMARY KEY AUTOINCREMENT, `created_at` datetime, `fcid` blob NOT NULL UNIQUE, `host_id` integer, `host_key` blob NOT NULL,`v2` INTEGER NOT NULL, `archival_reason` text DEFAULT NULL, `proof_height` integer DEFAULT 0, `renewed_from` blob, `renewed_to` blob, `revision_height` integer DEFAULT 0, `revision_number` text NOT NULL DEFAULT "0", `size` integer, `start_height` integer NOT NULL, `state` integer NOT NULL DEFAULT 0, `window_start` integer NOT NULL DEFAULT 0, `window_end` integer NOT NULL DEFAULT 0, `contract_price` text, `initial_renter_funds` text, `delete_spending` text, `fund_account_spending` text, `sector_roots_spending` text, `upload_spending` text, CONSTRAINT `fk_contracts_host` FOREIGN KEY (`host_id`) REFERENCES `hosts`(`id`)); CREATE INDEX `idx_contracts_archival_reason` ON `contracts`(`archival_reason`); CREATE INDEX `idx_contracts_fcid` ON `contracts`(`fcid`); CREATE INDEX `idx_contracts_host_id` ON `contracts`(`host_id`); From 4dfcecf8734a7843fc9b30ecba4f5e81424a8a8b Mon Sep 17 00:00:00 2001 From: PJ Date: Wed, 30 Oct 2024 14:25:08 +0100 Subject: [PATCH 255/708] stores: add v2 value --- stores/bench_test.go | 2 +- stores/sql/mysql/main.go | 6 +++--- stores/sql/sqlite/main.go | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/stores/bench_test.go b/stores/bench_test.go index 25815f563..138de5382 100644 --- a/stores/bench_test.go +++ b/stores/bench_test.go @@ -69,7 +69,7 @@ func prepareDB(db *isql.DB, fcid types.FileContractID, n int) (roots []types.Has // insert contract hk := types.PublicKey{1} res, err := db.Exec(context.Background(), ` -INSERT INTO contracts (fcid, host_key, start_height) VALUES (?, ?, ?)`, sql.PublicKey(hk), sql.FileContractID(fcid), 0) +INSERT INTO contracts (fcid, host_key, start_height, v2) VALUES (?, ?, ?, ?)`, sql.PublicKey(hk), sql.FileContractID(fcid), 0, false) if err != nil { return nil, err } diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index b097e28cb..47b3462f3 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -684,13 +684,13 @@ func (tx *MainDatabaseTx) PutContract(ctx context.Context, c api.ContractMetadat // update contract _, err = tx.Exec(ctx, ` INSERT INTO contracts ( - created_at, fcid, host_id, host_key, + created_at, fcid, host_id, host_key, v2, archival_reason, proof_height, renewed_from, renewed_to, revision_height, revision_number, size, start_height, state, window_start, window_end, contract_price, initial_renter_funds, delete_spending, fund_account_spending, sector_roots_spending, upload_spending -) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) +) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE - created_at = VALUES(created_at), fcid = VALUES(fcid), host_id = VALUES(host_id), host_key = VALUES(host_key), + created_at = VALUES(created_at), fcid = VALUES(fcid), host_id = VALUES(host_id), host_key = VALUES(host_key), v2 = VALUES(v2), archival_reason = VALUES(archival_reason), proof_height = VALUES(proof_height), renewed_from = VALUES(renewed_from), renewed_to = VALUES(renewed_to), revision_height = VALUES(revision_height), revision_number = VALUES(revision_number), size = VALUES(size), start_height = VALUES(start_height), state = VALUES(state), window_start = VALUES(window_start), window_end = VALUES(window_end), contract_price = VALUES(contract_price), initial_renter_funds = VALUES(initial_renter_funds), delete_spending = VALUES(delete_spending), fund_account_spending = VALUES(fund_account_spending), sector_roots_spending = VALUES(sector_roots_spending), upload_spending = VALUES(upload_spending)`, diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index a4f563dde..f392695c4 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -700,7 +700,7 @@ INSERT INTO contracts ( delete_spending, fund_account_spending, sector_roots_spending, upload_spending ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(fcid) DO UPDATE SET - fcid = EXCLUDED.fcid, host_id = EXCLUDED.host_id, host_key = EXCLUDED.host_key, + fcid = EXCLUDED.fcid, host_id = EXCLUDED.host_id, host_key = EXCLUDED.host_key, v2 = EXCLUDED.v2, archival_reason = EXCLUDED.archival_reason, proof_height = EXCLUDED.proof_height, renewed_from = EXCLUDED.renewed_from, renewed_to = EXCLUDED.renewed_to, revision_height = EXCLUDED.revision_height, revision_number = EXCLUDED.revision_number, size = EXCLUDED.size, start_height = EXCLUDED.start_height, state = EXCLUDED.state, window_start = EXCLUDED.window_start, window_end = EXCLUDED.window_end, contract_price = EXCLUDED.contract_price, initial_renter_funds = EXCLUDED.initial_renter_funds, delete_spending = EXCLUDED.delete_spending, fund_account_spending = EXCLUDED.fund_account_spending, sector_roots_spending = EXCLUDED.sector_roots_spending, upload_spending = EXCLUDED.upload_spending`, From b3ff92df08f1c2b3940ac403874e6bb44a109cd6 Mon Sep 17 00:00:00 2001 From: PJ Date: Wed, 30 Oct 2024 14:27:32 +0100 Subject: [PATCH 256/708] stores: fix query --- stores/sql/mysql/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index 47b3462f3..8cb792063 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -694,7 +694,7 @@ ON DUPLICATE KEY UPDATE archival_reason = VALUES(archival_reason), proof_height = VALUES(proof_height), renewed_from = VALUES(renewed_from), renewed_to = VALUES(renewed_to), revision_height = VALUES(revision_height), revision_number = VALUES(revision_number), size = VALUES(size), start_height = VALUES(start_height), state = VALUES(state), window_start = VALUES(window_start), window_end = VALUES(window_end), contract_price = VALUES(contract_price), initial_renter_funds = VALUES(initial_renter_funds), delete_spending = VALUES(delete_spending), fund_account_spending = VALUES(fund_account_spending), sector_roots_spending = VALUES(sector_roots_spending), upload_spending = VALUES(upload_spending)`, - time.Now(), ssql.FileContractID(c.ID), hostID, ssql.PublicKey(c.HostKey), + time.Now(), ssql.FileContractID(c.ID), hostID, ssql.PublicKey(c.HostKey), c.V2, ssql.NullableString(c.ArchivalReason), c.ProofHeight, ssql.FileContractID(c.RenewedFrom), ssql.FileContractID(c.RenewedTo), c.RevisionHeight, c.RevisionNumber, c.Size, c.StartHeight, state, c.WindowStart, c.WindowEnd, ssql.Currency(c.ContractPrice), ssql.Currency(c.InitialRenterFunds), ssql.Currency(c.Spending.Deletions), ssql.Currency(c.Spending.FundAccount), ssql.Currency(c.Spending.SectorRoots), ssql.Currency(c.Spending.Uploads), From 1bc8cc452cee10d0961171c86c5e5ee9cc0240bd Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 30 Oct 2024 18:01:16 +0100 Subject: [PATCH 257/708] v4: simplify transport --- internal/rhp/v4/transport.go | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/internal/rhp/v4/transport.go b/internal/rhp/v4/transport.go index 87e2aa831..f1fcb5f24 100644 --- a/internal/rhp/v4/transport.go +++ b/internal/rhp/v4/transport.go @@ -29,11 +29,7 @@ func (p *transportPool) withTransport(ctx context.Context, hk types.PublicKey, a p.mu.Lock() t, found := p.pool[addr] if !found { - t = &transport{ - dialer: p.dialer, - hk: hk, - addr: addr, - } + t = &transport{} p.pool[addr] = t } t.refCount++ @@ -46,7 +42,7 @@ func (p *transportPool) withTransport(ctx context.Context, hk types.PublicKey, a err = fmt.Errorf("panic (withTransport): %v", r) } }() - client, err := t.Dial(ctx) + client, err := t.Dial(ctx, p.dialer, hk, addr) if err != nil { return err } @@ -69,30 +65,27 @@ func (p *transportPool) withTransport(ctx context.Context, hk types.PublicKey, a } type transport struct { - dialer Dialer refCount uint64 // locked by pool - mu sync.Mutex - hk types.PublicKey - addr string - t rhp.TransportClient + mu sync.Mutex + t rhp.TransportClient } // DialStream dials a new stream on the transport. -func (t *transport) Dial(ctx context.Context) (rhp.TransportClient, error) { +func (t *transport) Dial(ctx context.Context, dialer Dialer, hk types.PublicKey, addr string) (rhp.TransportClient, error) { t.mu.Lock() defer t.mu.Unlock() if t.t == nil { start := time.Now() // dial host - conn, err := t.dialer.Dial(ctx, t.hk, t.addr) + conn, err := dialer.Dial(ctx, hk, addr) if err != nil { return nil, err } // upgrade conn - newTransport, err := rhp.UpgradeConn(ctx, conn, t.hk) + newTransport, err := rhp.UpgradeConn(ctx, conn, hk) if err != nil { return nil, fmt.Errorf("UpgradeConn: %w: %w (%v)", ErrDialTransport, err, time.Since(start)) } From 267cfa22868fc738541a6d482d15d1a54ce0b939 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 31 Oct 2024 14:07:56 +0100 Subject: [PATCH 258/708] bus: add usable hosts route --- api/host.go | 10 +++++ bus/bus.go | 2 + bus/client/hosts.go | 15 +++++++ bus/routes.go | 23 ++++++++++ stores/hostdb.go | 8 ++++ stores/hostdb_test.go | 93 +++++++++++++++++++++++++++++++++++++++ stores/sql/database.go | 5 +++ stores/sql/main.go | 86 ++++++++++++++++++++++++++++++++++++ stores/sql/mysql/main.go | 4 ++ stores/sql/sqlite/main.go | 4 ++ 10 files changed, 250 insertions(+) diff --git a/api/host.go b/api/host.go index 66e974a8b..f5056d89c 100644 --- a/api/host.go +++ b/api/host.go @@ -102,6 +102,11 @@ type ( MaxLastScan TimeRFC3339 Offset int } + + UsableHostOptions struct { + Limit int + Offset int + } ) type ( @@ -121,6 +126,11 @@ type ( Subnets []string `json:"subnets"` } + HostInfo struct { + PublicKey types.PublicKey `json:"publicKey"` + SiamuxAddr string `json:"siamuxAddr"` + } + HostInteractions struct { TotalScans uint64 `json:"totalScans"` LastScan time.Time `json:"lastScan"` diff --git a/bus/bus.go b/bus/bus.go index 9b26776bf..25fb10d48 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -211,6 +211,7 @@ type ( UpdateHostAllowlistEntries(ctx context.Context, add, remove []types.PublicKey, clear bool) error UpdateHostBlocklistEntries(ctx context.Context, add, remove []string, clear bool) error UpdateHostCheck(ctx context.Context, autopilotID string, hk types.PublicKey, check api.HostCheck) error + UsableHosts(ctx context.Context, offset, limit int) ([]api.HostInfo, error) } // A MetadataStore stores information about contracts and objects. @@ -428,6 +429,7 @@ func (b *Bus) Handler() http.Handler { "GET /contract/:id/roots": b.contractIDRootsHandlerGET, "GET /contract/:id/size": b.contractSizeHandlerGET, + "GET /hosts": b.hostsHandlerGET, "POST /hosts": b.hostsHandlerPOST, "GET /hosts/allowlist": b.hostsAllowlistHandlerGET, "PUT /hosts/allowlist": b.hostsAllowlistHandlerPUT, diff --git a/bus/client/hosts.go b/bus/client/hosts.go index 086c6f5ad..93881a149 100644 --- a/bus/client/hosts.go +++ b/bus/client/hosts.go @@ -3,6 +3,7 @@ package client import ( "context" "fmt" + "net/url" "time" "go.sia.tech/core/types" @@ -91,3 +92,17 @@ func (c *Client) UpdateHostCheck(ctx context.Context, autopilotID string, hostKe err = c.c.WithContext(ctx).PUT(fmt.Sprintf("/autopilot/%s/host/%s/check", autopilotID, hostKey), hostCheck) return } + +// UsableHosts returns a list of hosts that are ready to be used. That means +// they are deemed usable by the autopilot, they are not gouging, not blocked, +// not offline, etc. +func (c *Client) UsableHosts(ctx context.Context, opts api.UsableHostOptions) (hosts []api.HostInfo, err error) { + values := url.Values{} + values.Set("offset", fmt.Sprint(opts.Offset)) + if opts.Limit != 0 { + values.Set("limit", fmt.Sprint(opts.Limit)) + } + + err = c.c.WithContext(ctx).GET("/hosts?"+values.Encode(), &hosts) + return +} diff --git a/bus/routes.go b/bus/routes.go index 029b61ab6..5db06837f 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -484,6 +484,29 @@ func (b *Bus) walletPendingHandler(jc jape.Context) { jc.Encode(events) } +func (b *Bus) hostsHandlerGET(jc jape.Context) { + var offset int + if jc.DecodeForm("offset", &offset) != nil { + return + } else if offset < 0 { + jc.Error(api.ErrInvalidOffset, http.StatusBadRequest) + return + } + + limit := -1 + if jc.DecodeForm("limit", &limit) != nil { + return + } else if limit < -1 { + jc.Error(api.ErrInvalidLimit, http.StatusBadRequest) + return + } + + hosts, err := b.store.UsableHosts(jc.Request.Context(), offset, limit) + if jc.Check("couldn't fetch hosts", err) != nil { + return + } + jc.Encode(hosts) +} func (b *Bus) hostsHandlerPOST(jc jape.Context) { var req api.HostsRequest if jc.Decode(&req) != nil { diff --git a/stores/hostdb.go b/stores/hostdb.go index a80df54dd..606b66930 100644 --- a/stores/hostdb.go +++ b/stores/hostdb.go @@ -116,3 +116,11 @@ func (s *SQLStore) RecordPriceTables(ctx context.Context, priceTableUpdate []api return tx.RecordPriceTables(ctx, priceTableUpdate) }) } + +func (s *SQLStore) UsableHosts(ctx context.Context, offset, limit int) (hosts []api.HostInfo, err error) { + err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { + hosts, err = tx.UsableHosts(ctx, offset, limit) + return err + }) + return +} diff --git a/stores/hostdb_test.go b/stores/hostdb_test.go index 155bb2c0a..94a5318f5 100644 --- a/stores/hostdb_test.go +++ b/stores/hostdb_test.go @@ -446,6 +446,99 @@ func TestHosts(t *testing.T) { } } +func TestUsableHosts(t *testing.T) { + ss := newTestSQLStore(t, defaultTestSQLStoreConfig) + defer ss.Close() + ctx := context.Background() + + // add autopilot + err := ss.UpdateAutopilot(context.Background(), api.Autopilot{ID: api.DefaultAutopilotID}) + if err != nil { + t.Fatal(err) + } + + // prepare hosts & contracts + // + // h1: usable + // h2: usable - best one + // h3: not usable - blocked + // h4: not usable - no host check + // h5: not usable - no contract + var hks []types.PublicKey + for i := 1; i <= 5; i++ { + // add host + hk := types.PublicKey{byte(i)} + addr := fmt.Sprintf("foo.com:100%d", i) + err := ss.addCustomTestHost(hk, addr) + if err != nil { + t.Fatal(err) + } + hks = append(hks, hk) + + // add host check + if i != 4 { + hc := newTestHostCheck() + if i == 2 { + hc.ScoreBreakdown.Age = .2 + } + err = ss.UpdateHostCheck(context.Background(), api.DefaultAutopilotID, hk, hc) + if err != nil { + t.Fatal(err) + } + } + + // add contract + if i != 5 { + _, err = ss.addTestContract(types.FileContractID{byte(i)}, hk) + if err != nil { + t.Fatal(err) + } + } + + // block host + if i == 3 { + err = ss.UpdateHostBlocklistEntries(context.Background(), []string{addr}, nil, false) + if err != nil { + t.Fatal(err) + } + } + } + + // set siamux port in settings + _, err = ss.DB().Exec(context.Background(), "UPDATE hosts SET settings = ? WHERE 1=1", sql.HostSettings(rhpv2.HostSettings{SiaMuxPort: "9983"})) + if err != nil { + t.Fatal(err) + } + + // assert h1 and h2 are usable and ordered by score + hosts, err := ss.UsableHosts(ctx, 0, -1) + if err != nil { + t.Fatal(err) + } else if len(hosts) != 2 { + t.Fatal("unexpected", len(hosts)) + } else if hosts[0].PublicKey != hks[1] || hosts[1].PublicKey != hks[0] { + t.Fatal("unexpected", hosts) + } else if hosts[0].SiamuxAddr != "foo.com:9983" || hosts[1].SiamuxAddr != "foo.com:9983" { + t.Fatal("unexpected", hosts) + } + + // assert offset and limit + hosts, err = ss.UsableHosts(ctx, 1, 1) + if err != nil { + t.Fatal(err) + } else if len(hosts) != 1 { + t.Fatal("unexpected", len(hosts)) + } else if hosts[0].PublicKey != hks[0] { + t.Fatal("unexpected", hosts) + } + hosts, err = ss.UsableHosts(ctx, 2, 1) + if err != nil { + t.Fatal(err) + } else if len(hosts) != 0 { + t.Fatal("unexpected", len(hosts)) + } +} + // TestRecordScan is a test for recording scans. func TestRecordScan(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) diff --git a/stores/sql/database.go b/stores/sql/database.go index 717fc39e6..d223b94ef 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -367,6 +367,11 @@ type ( // the health of the updated slabs becomes invalid UpdateSlabHealth(ctx context.Context, limit int64, minValidity, maxValidity time.Duration) (int64, error) + // UsableHosts returns a list of hosts that are ready to be used. That + // means they are deemed usable by the autopilot, they are not gouging, + // not blocked, not offline, etc. + UsableHosts(ctx context.Context, offset, limit int) ([]api.HostInfo, error) + // WalletEvents returns all wallet events in the database. WalletEvents(ctx context.Context, offset, limit int) ([]wallet.Event, error) diff --git a/stores/sql/main.go b/stores/sql/main.go index a5db9f4d4..8073e3a90 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -2159,6 +2159,92 @@ func UnspentSiacoinElements(ctx context.Context, tx sql.Tx) (elements []types.Si return } +func UsableHosts(ctx context.Context, tx sql.Tx, offset, limit int) ([]api.HostInfo, error) { + // handle input parameters + if offset < 0 { + return nil, ErrNegativeOffset + } else if limit == 0 || limit == -1 { + limit = math.MaxInt64 + } + + // only include allowed hosts + var whereExprs []string + var hasAllowlist bool + if err := tx.QueryRow(ctx, "SELECT EXISTS (SELECT 1 FROM host_allowlist_entries)").Scan(&hasAllowlist); err != nil { + return nil, fmt.Errorf("failed to check for allowlist: %w", err) + } else if hasAllowlist { + whereExprs = append(whereExprs, "EXISTS (SELECT 1 FROM host_allowlist_entry_hosts hbeh WHERE hbeh.db_host_id = h.id)") + } + + // exclude blocked hosts + var hasBlocklist bool + if err := tx.QueryRow(ctx, "SELECT EXISTS (SELECT 1 FROM host_blocklist_entries)").Scan(&hasBlocklist); err != nil { + return nil, fmt.Errorf("failed to check for blocklist: %w", err) + } else if hasBlocklist { + whereExprs = append(whereExprs, "NOT EXISTS (SELECT 1 FROM host_blocklist_entry_hosts hbeh WHERE hbeh.db_host_id = h.id)") + } + + // fetch autopilot + var autopilotID int64 + if err := tx.QueryRow(ctx, "SELECT id FROM autopilots WHERE identifier = ?", api.DefaultAutopilotID).Scan(&autopilotID); err != nil { + return nil, fmt.Errorf("failed to fetch autopilot id: %w", err) + } + + // only include usable hosts + whereExprs = append(whereExprs, ` +EXISTS ( + SELECT 1 + FROM hosts h2 + INNER JOIN host_checks hc ON hc.db_host_id = h2.id AND hc.db_autopilot_id = ? AND h2.id = h.id + WHERE + hc.usability_blocked = 0 AND + hc.usability_offline = 0 AND + hc.usability_low_score = 0 AND + hc.usability_redundant_ip = 0 AND + hc.usability_gouging = 0 AND + hc.usability_not_accepting_contracts = 0 AND + hc.usability_not_announced = 0 AND + hc.usability_not_completing_scan = 0 +)`) + + // query hosts + rows, err := tx.Query(ctx, fmt.Sprintf(` + SELECT + h.public_key, + COALESCE(h.net_address, ""), + COALESCE(h.settings->>'$.siamuxport', "") AS siamux_port + FROM hosts h + INNER JOIN contracts c on c.host_id = h.id and c.archival_reason IS NULL + INNER JOIN host_checks hc on hc.db_host_id = h.id and hc.db_autopilot_id = ? + WHERE %s + GROUP by h.id + ORDER BY hc.score_age * hc.score_collateral * hc.score_interactions * hc.score_storage_remaining * hc.score_uptime * hc.score_version * hc.score_prices DESC + LIMIT ? OFFSET ?`, strings.Join(whereExprs, "AND")), autopilotID, autopilotID, limit, offset) + if err != nil { + return nil, fmt.Errorf("failed to fetch hosts: %w", err) + } + defer rows.Close() + + var hosts []api.HostInfo + for rows.Next() { + var hk PublicKey + var addr, port string + err := rows.Scan(&hk, &addr, &port) + if err != nil { + return nil, fmt.Errorf("failed to scan host: %w", err) + } + host, _, err := net.SplitHostPort(addr) + if err != nil || host == "" { + continue + } + hosts = append(hosts, api.HostInfo{ + PublicKey: types.PublicKey(hk), + SiamuxAddr: net.JoinHostPort(host, port), + }) + } + return hosts, nil +} + func WalletEvents(ctx context.Context, tx sql.Tx, offset, limit int) (events []wallet.Event, _ error) { if limit == 0 || limit == -1 { limit = math.MaxInt64 diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index 8cb792063..db18795b3 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -1242,6 +1242,10 @@ func (tx *MainDatabaseTx) UpdateSlabHealth(ctx context.Context, limit int64, min return res.RowsAffected() } +func (tx *MainDatabaseTx) UsableHosts(ctx context.Context, offset, limit int) ([]api.HostInfo, error) { + return ssql.UsableHosts(ctx, tx, offset, limit) +} + func (tx *MainDatabaseTx) WalletEvents(ctx context.Context, offset, limit int) ([]wallet.Event, error) { return ssql.WalletEvents(ctx, tx.Tx, offset, limit) } diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index f392695c4..877a48648 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -1242,6 +1242,10 @@ func (tx *MainDatabaseTx) UpdateSlabHealth(ctx context.Context, limit int64, min return res.RowsAffected() } +func (tx *MainDatabaseTx) UsableHosts(ctx context.Context, offset, limit int) ([]api.HostInfo, error) { + return ssql.UsableHosts(ctx, tx, offset, limit) +} + func (tx *MainDatabaseTx) WalletEvents(ctx context.Context, offset, limit int) ([]wallet.Event, error) { return ssql.WalletEvents(ctx, tx.Tx, offset, limit) } From 69bc2f8587a54dcbd1b413f129da15074f8bb1b9 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 31 Oct 2024 14:13:57 +0100 Subject: [PATCH 259/708] bus: add newline --- bus/routes.go | 1 + 1 file changed, 1 insertion(+) diff --git a/bus/routes.go b/bus/routes.go index 5db06837f..bf91c4dfe 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -507,6 +507,7 @@ func (b *Bus) hostsHandlerGET(jc jape.Context) { } jc.Encode(hosts) } + func (b *Bus) hostsHandlerPOST(jc jape.Context) { var req api.HostsRequest if jc.Decode(&req) != nil { From 7c678279bc3bdabf480932d6a51b1e72900fa318 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 31 Oct 2024 14:27:54 +0100 Subject: [PATCH 260/708] stores: fix only_full_groupby --- stores/sql/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stores/sql/main.go b/stores/sql/main.go index 8073e3a90..8abf06779 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -2218,7 +2218,7 @@ EXISTS ( INNER JOIN host_checks hc on hc.db_host_id = h.id and hc.db_autopilot_id = ? WHERE %s GROUP by h.id - ORDER BY hc.score_age * hc.score_collateral * hc.score_interactions * hc.score_storage_remaining * hc.score_uptime * hc.score_version * hc.score_prices DESC + ORDER BY MAX(hc.score_age) * MAX(hc.score_collateral) * MAX(hc.score_interactions) * MAX(hc.score_storage_remaining) * MAX(hc.score_uptime) * MAX(hc.score_version) * MAX(hc.score_prices) DESC LIMIT ? OFFSET ?`, strings.Join(whereExprs, "AND")), autopilotID, autopilotID, limit, offset) if err != nil { return nil, fmt.Errorf("failed to fetch hosts: %w", err) From 87909b8c10e6f3e721097449c2d66cb4da2add6b Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 30 Oct 2024 14:40:22 +0100 Subject: [PATCH 261/708] bus/worker: remove contracts endpoint from worker --- api/autopilot.go | 12 --- api/bus.go | 10 +++ api/contract.go | 31 +------ api/worker.go | 6 -- autopilot/autopilot.go | 1 + autopilot/contractor/contract.go | 49 +++++++++++ .../contractor/contract_test.go | 31 +++---- autopilot/contractor/contractor.go | 53 ++++++----- autopilot/contractor/contractor_test.go | 8 +- autopilot/contractor/hostfilter.go | 8 +- autopilot/contractor/state.go | 4 +- autopilot/workerpool.go | 1 - bus/bus.go | 45 +++++----- bus/client/contracts.go | 7 ++ bus/routes.go | 44 ++++++++++ internal/test/e2e/cluster.go | 11 ++- internal/test/e2e/cluster_test.go | 8 +- worker/client/client.go | 7 -- worker/worker.go | 88 ------------------- 19 files changed, 207 insertions(+), 217 deletions(-) create mode 100644 autopilot/contractor/contract.go rename api/autopilot_test.go => autopilot/contractor/contract_test.go (59%) diff --git a/api/autopilot.go b/api/autopilot.go index f96e79fbb..26dc74a82 100644 --- a/api/autopilot.go +++ b/api/autopilot.go @@ -3,7 +3,6 @@ package api import ( "errors" "fmt" - "sort" "go.sia.tech/core/types" "go.sia.tech/renterd/internal/utils" @@ -137,14 +136,3 @@ func (c AutopilotConfig) Validate() error { } return nil } - -func (c ContractsConfig) SortContractsForMaintenance(contracts []Contract) { - sort.SliceStable(contracts, func(i, j int) bool { - iInSet := contracts[i].InSet(c.Set) - jInSet := contracts[j].InSet(c.Set) - if iInSet != jInSet { - return iInSet - } - return contracts[i].FileSize() > contracts[j].FileSize() - }) -} diff --git a/api/bus.go b/api/bus.go index 1d9dc1406..5d9b106e5 100644 --- a/api/bus.go +++ b/api/bus.go @@ -83,4 +83,14 @@ type ( ToAdd []types.FileContractID `json:"toAdd"` ToRemove []types.FileContractID `json:"toRemove"` } + + ContractLatestRevisionResponse struct { + ContractID types.FileContractID `json:"contractID"` + V2 bool `json:"v2"` + types.V2FileContract + } ) + +func (rev *ContractLatestRevisionResponse) EndHeight() uint64 { + return rev.ProofHeight +} diff --git a/api/contract.go b/api/contract.go index 486304be9..b7fcff6a9 100644 --- a/api/contract.go +++ b/api/contract.go @@ -35,12 +35,6 @@ var ( type ContractState string type ( - // A Contract wraps the contract metadata with the latest contract revision. - Contract struct { - ContractMetadata - Revision *types.FileContractRevision `json:"revision"` - } - // ContractSize contains information about the size of the contract and // about how much of the contract data can be pruned. ContractSize struct { @@ -212,29 +206,8 @@ func (x ContractSpending) Add(y ContractSpending) (z ContractSpending) { return } -// EndHeight returns the height at which the host is no longer obligated to -// store contract data. -func (c Contract) EndHeight() uint64 { return c.WindowStart } - -// FileSize returns the current Size of the contract. -func (c Contract) FileSize() uint64 { - if c.Revision == nil { - return c.Size // use latest recorded value if we don't have a recent revision - } - return c.Revision.Filesize -} - -// RenterFunds returns the funds remaining in the contract's Renter payout. -func (c Contract) RenterFunds() types.Currency { - return c.Revision.ValidRenterPayout() -} - -// RemainingCollateral returns the remaining collateral in the contract. -func (c Contract) RemainingCollateral() types.Currency { - if c.Revision.MissedHostPayout().Cmp(c.ContractPrice) < 0 { - return types.ZeroCurrency - } - return c.Revision.MissedHostPayout().Sub(c.ContractPrice) +func (cm ContractMetadata) EndHeight() uint64 { + return cm.WindowStart } // InSet returns whether the contract is in the given set. diff --git a/api/worker.go b/api/worker.go index c5fd29eb1..7b8cd0cbc 100644 --- a/api/worker.go +++ b/api/worker.go @@ -58,12 +58,6 @@ type ( LockID uint64 `json:"lockID"` } - // ContractsResponse is the response type for the /rhp/contracts endpoint. - ContractsResponse struct { - Contracts []Contract `json:"contracts"` - Errors map[types.PublicKey]string `json:"errors,omitempty"` - } - MemoryResponse struct { Download MemoryStatus `json:"download"` Upload MemoryStatus `json:"upload"` diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 658604bb9..c93fc3631 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -49,6 +49,7 @@ type Bus interface { Contracts(ctx context.Context, opts api.ContractsOpts) (contracts []api.ContractMetadata, err error) FileContractTax(ctx context.Context, payout types.Currency) (types.Currency, error) FormContract(ctx context.Context, renterAddress types.Address, renterFunds types.Currency, hostKey types.PublicKey, hostIP string, hostCollateral types.Currency, endHeight uint64) (api.ContractMetadata, error) + LatestRevision(ctx context.Context, fcid types.FileContractID) (api.ContractLatestRevisionResponse, error) RenewContract(ctx context.Context, fcid types.FileContractID, endHeight uint64, renterFunds, minNewCollateral types.Currency, expectedNewStorage uint64) (api.ContractMetadata, error) UpdateContractSet(ctx context.Context, set string, toAdd, toRemove []types.FileContractID) error PrunableData(ctx context.Context) (prunableData api.ContractsPrunableDataResponse, err error) diff --git a/autopilot/contractor/contract.go b/autopilot/contractor/contract.go new file mode 100644 index 000000000..0e1b635d4 --- /dev/null +++ b/autopilot/contractor/contract.go @@ -0,0 +1,49 @@ +package contractor + +import ( + "sort" + + "go.sia.tech/core/types" + "go.sia.tech/renterd/api" +) + +type contract struct { + Revision *api.ContractLatestRevisionResponse + api.ContractMetadata +} + +// EndHeight returns the height at which the host is no longer obligated to +// store contract data. +func (c contract) EndHeight() uint64 { return c.WindowStart } + +// FileSize returns the current Size of the contract. +func (c contract) FileSize() uint64 { + if c.Revision == nil { + return c.Size // use latest recorded value if we don't have a recent revision + } + return c.Revision.Filesize +} + +// RenterFunds returns the funds remaining in the contract's Renter payout. +func (c contract) RenterFunds() types.Currency { + return c.Revision.RenterOutput.Value +} + +// RemainingCollateral returns the remaining collateral in the contract. +func (c contract) RemainingCollateral() types.Currency { + if c.Revision.MissedHostValue.Cmp(c.ContractPrice) < 0 { + return types.ZeroCurrency + } + return c.Revision.MissedHostValue.Sub(c.ContractPrice) +} + +func sortContractsForMaintenance(cfg api.ContractsConfig, contracts []contract) { + sort.SliceStable(contracts, func(i, j int) bool { + iInSet := contracts[i].InSet(cfg.Set) + jInSet := contracts[j].InSet(cfg.Set) + if iInSet != jInSet { + return iInSet + } + return contracts[i].FileSize() > contracts[j].FileSize() + }) +} diff --git a/api/autopilot_test.go b/autopilot/contractor/contract_test.go similarity index 59% rename from api/autopilot_test.go rename to autopilot/contractor/contract_test.go index 148fa92e8..9b71470fe 100644 --- a/api/autopilot_test.go +++ b/autopilot/contractor/contract_test.go @@ -1,61 +1,62 @@ -package api +package contractor import ( "reflect" "testing" "go.sia.tech/core/types" + "go.sia.tech/renterd/api" ) func TestSortContractsForMaintenance(t *testing.T) { set := "testset" - cfg := ContractsConfig{ + cfg := api.ContractsConfig{ Set: set, } // empty but in set - c1 := Contract{ - ContractMetadata: ContractMetadata{ + c1 := contract{ + ContractMetadata: api.ContractMetadata{ ID: types.FileContractID{1}, Size: 0, ContractSets: []string{set}, }, } // some data and in set - c2 := Contract{ - ContractMetadata: ContractMetadata{ + c2 := contract{ + ContractMetadata: api.ContractMetadata{ ID: types.FileContractID{2}, Size: 10, ContractSets: []string{set}, }, } // same as c2 - sort should be stable - c3 := Contract{ - ContractMetadata: ContractMetadata{ + c3 := contract{ + ContractMetadata: api.ContractMetadata{ ID: types.FileContractID{3}, Size: 10, ContractSets: []string{set}, }, } // more data but not in set - c4 := Contract{ - ContractMetadata: ContractMetadata{ + c4 := contract{ + ContractMetadata: api.ContractMetadata{ ID: types.FileContractID{4}, Size: 20, }, } // even more data but not in set - c5 := Contract{ - ContractMetadata: ContractMetadata{ + c5 := contract{ + ContractMetadata: api.ContractMetadata{ ID: types.FileContractID{5}, Size: 30, }, } - contracts := []Contract{c1, c2, c3, c4, c5} - cfg.SortContractsForMaintenance(contracts) + contracts := []contract{c1, c2, c3, c4, c5} + sortContractsForMaintenance(cfg, contracts) - if !reflect.DeepEqual(contracts, []Contract{c2, c3, c1, c5, c4}) { + if !reflect.DeepEqual(contracts, []contract{c2, c3, c1, c5, c4}) { t.Fatal("unexpected sort order") } } diff --git a/autopilot/contractor/contractor.go b/autopilot/contractor/contractor.go index a89a81c22..eb055169d 100644 --- a/autopilot/contractor/contractor.go +++ b/autopilot/contractor/contractor.go @@ -8,6 +8,7 @@ import ( "math" "sort" "strings" + "sync" "time" "github.com/montanaflynn/stats" @@ -90,6 +91,7 @@ type Bus interface { Contracts(ctx context.Context, opts api.ContractsOpts) (contracts []api.ContractMetadata, err error) FileContractTax(ctx context.Context, payout types.Currency) (types.Currency, error) FormContract(ctx context.Context, renterAddress types.Address, renterFunds types.Currency, hostKey types.PublicKey, hostIP string, hostCollateral types.Currency, endHeight uint64) (api.ContractMetadata, error) + LatestRevision(ctx context.Context, fcid types.FileContractID) (api.ContractLatestRevisionResponse, error) RenewContract(ctx context.Context, fcid types.FileContractID, endHeight uint64, renterFunds, minNewCollateral types.Currency, expectedNewStorage uint64) (api.ContractMetadata, error) Host(ctx context.Context, hostKey types.PublicKey) (api.Host, error) Hosts(ctx context.Context, opts api.HostOptions) ([]api.Host, error) @@ -99,21 +101,20 @@ type Bus interface { } type Worker interface { - Contracts(ctx context.Context, hostTimeout time.Duration) (api.ContractsResponse, error) RHPPriceTable(ctx context.Context, hostKey types.PublicKey, siamuxAddr string, timeout time.Duration) (api.HostPriceTable, error) RHPScan(ctx context.Context, hostKey types.PublicKey, hostIP string, timeout time.Duration) (api.RHPScanResponse, error) } type contractChecker interface { - isUsableContract(cfg api.AutopilotConfig, s rhpv2.HostSettings, pt rhpv3.HostPriceTable, rs api.RedundancySettings, contract api.Contract, inSet bool, bh uint64, f *hostSet) (usable, refresh, renew bool, reasons []string) + isUsableContract(cfg api.AutopilotConfig, s rhpv2.HostSettings, pt rhpv3.HostPriceTable, rs api.RedundancySettings, contract contract, inSet bool, bh uint64, f *hostSet) (usable, refresh, renew bool, reasons []string) pruneContractRefreshFailures(contracts []api.ContractMetadata) - shouldArchive(c api.Contract, bh uint64, network consensus.Network) error + shouldArchive(c contract, bh uint64, network consensus.Network) error } type contractReviser interface { formContract(ctx *mCtx, w Worker, host api.Host, minInitialContractFunds types.Currency, logger *zap.SugaredLogger) (cm api.ContractMetadata, ourFault bool, err error) - renewContract(ctx *mCtx, w Worker, c api.Contract, h api.Host, logger *zap.SugaredLogger) (cm api.ContractMetadata, ourFault bool, err error) - refreshContract(ctx *mCtx, w Worker, c api.Contract, h api.Host, logger *zap.SugaredLogger) (cm api.ContractMetadata, ourFault bool, err error) + renewContract(ctx *mCtx, w Worker, c contract, h api.Host, logger *zap.SugaredLogger) (cm api.ContractMetadata, ourFault bool, err error) + refreshContract(ctx *mCtx, w Worker, c contract, h api.Host, logger *zap.SugaredLogger) (cm api.ContractMetadata, ourFault bool, err error) } type revisionBroadcaster interface { @@ -241,7 +242,7 @@ func (c *Contractor) pruneContractRefreshFailures(contracts []api.ContractMetada } } -func (c *Contractor) refreshContract(ctx *mCtx, w Worker, contract api.Contract, host api.Host, logger *zap.SugaredLogger) (cm api.ContractMetadata, proceed bool, err error) { +func (c *Contractor) refreshContract(ctx *mCtx, w Worker, contract contract, host api.Host, logger *zap.SugaredLogger) (cm api.ContractMetadata, proceed bool, err error) { if contract.Revision == nil { return api.ContractMetadata{}, true, errors.New("can't refresh contract without a revision") } @@ -265,7 +266,7 @@ func (c *Contractor) refreshContract(ctx *mCtx, w Worker, contract api.Contract, if isOutOfFunds(ctx.AutopilotConfig(), pt, contract) { renterFunds = c.refreshFundingEstimate(contract, logger) } else { - renterFunds = rev.ValidRenterPayout() // don't increase funds + renterFunds = rev.RenterOutput.Value // don't increase funds } expectedNewStorage := renterFundsToExpectedStorage(renterFunds, contract.EndHeight()-cs.BlockHeight, pt) @@ -303,7 +304,7 @@ func (c *Contractor) refreshContract(ctx *mCtx, w Worker, contract api.Contract, return renewal, true, nil } -func (c *Contractor) renewContract(ctx *mCtx, w Worker, contract api.Contract, host api.Host, logger *zap.SugaredLogger) (cm api.ContractMetadata, proceed bool, err error) { +func (c *Contractor) renewContract(ctx *mCtx, w Worker, contract contract, host api.Host, logger *zap.SugaredLogger) (cm api.ContractMetadata, proceed bool, err error) { if contract.Revision == nil { return api.ContractMetadata{}, true, errors.New("can't renew contract without a revision") } @@ -327,7 +328,7 @@ func (c *Contractor) renewContract(ctx *mCtx, w Worker, contract api.Contract, h // sanity check the endheight is not the same on renewals endHeight := ctx.EndHeight() - if endHeight <= rev.EndHeight() { + if endHeight <= rev.ProofHeight { logger.Infow("invalid renewal endheight", "oldEndheight", rev.EndHeight(), "newEndHeight", endHeight, "period", ctx.state.Period, "bh", cs.BlockHeight) return api.ContractMetadata{}, false, fmt.Errorf("renewal endheight should surpass the current contract endheight, %v <= %v", endHeight, rev.EndHeight()) } @@ -420,7 +421,7 @@ func (c *Contractor) broadcastRevisions(ctx context.Context, w Worker, contracts } } -func (c *Contractor) refreshFundingEstimate(contract api.Contract, logger *zap.SugaredLogger) types.Currency { +func (c *Contractor) refreshFundingEstimate(contract contract, logger *zap.SugaredLogger) types.Currency { // refresh with 1.2x the funds refreshAmount := contract.InitialRenterFunds.Mul64(6).Div64(5) @@ -438,7 +439,7 @@ func (c *Contractor) refreshFundingEstimate(contract api.Contract, logger *zap.S return refreshAmountCapped } -func (c *Contractor) shouldArchive(contract api.Contract, bh uint64, n consensus.Network) (err error) { +func (c *Contractor) shouldArchive(contract contract, bh uint64, n consensus.Network) (err error) { if bh > contract.EndHeight()-c.revisionSubmissionBuffer { return errContractExpired } else if contract.Revision != nil && contract.Revision.RevisionNumber == math.MaxUint64 { @@ -800,21 +801,33 @@ func performContractChecks(ctx *mCtx, alerter alerts.Alerter, bus Bus, w Worker, // fetch all contracts we already have logger.Info("fetching existing contracts") start := time.Now() - resp, err := w.Contracts(ctx, timeoutHostRevision) + contractMetadatas, err := bus.Contracts(ctx, api.ContractsOpts{FilterMode: api.ContractFilterModeAll}) if err != nil { return nil, nil, err } - contracts := resp.Contracts logger.With("elapsed", time.Since(start)).Info("done fetching existing contracts") - // print the reason for the missing revisions - for _, c := range contracts { - if c.Revision == nil { - logger.With("error", resp.Errors[c.HostKey]). - With("hostKey", c.HostKey). - With("contractID", c.ID).Debug("failed to fetch contract revision") - } + // fetch the revision for each contract + var wg sync.WaitGroup + revisionCtx, cancel := context.WithTimeout(ctx, timeoutHostRevision) + defer cancel() + + contracts := make([]contract, len(contractMetadatas)) + for i, c := range contractMetadatas { + wg.Add(1) + go func(i int) { + defer wg.Done() + rev, err := bus.LatestRevision(revisionCtx, c.ID) + if err != nil { + // print the reason for the missing revisions + logger.With(zap.Error(err)). + With("hostKey", c.HostKey). + With("contractID", c.ID).Debug("failed to fetch contract revision") + } + contracts[i].Revision = &rev + }(i) } + wg.Wait() // sort them by whether they are in the current set and their size ctx.SortContractsForMaintenance(contracts) diff --git a/autopilot/contractor/contractor_test.go b/autopilot/contractor/contractor_test.go index 53052bfc7..61a20a768 100644 --- a/autopilot/contractor/contractor_test.go +++ b/autopilot/contractor/contractor_test.go @@ -100,7 +100,7 @@ func TestShouldArchive(t *testing.T) { n.HardforkV2.RequireHeight = 20 // dummy contract - c1 := api.Contract{ + c1 := contract{ ContractMetadata: api.ContractMetadata{ State: api.ContractStateActive, StartHeight: 0, @@ -109,7 +109,11 @@ func TestShouldArchive(t *testing.T) { RevisionNumber: 1, V2: true, }, - Revision: &types.FileContractRevision{FileContract: types.FileContract{RevisionNumber: 1}}, + Revision: &api.ContractLatestRevisionResponse{ + V2FileContract: types.V2FileContract{ + RevisionNumber: 1, + }, + }, } err := c.shouldArchive(c1, 25, n) diff --git a/autopilot/contractor/hostfilter.go b/autopilot/contractor/hostfilter.go index 6cc928d8d..ce1b03ae2 100644 --- a/autopilot/contractor/hostfilter.go +++ b/autopilot/contractor/hostfilter.go @@ -103,7 +103,7 @@ func (u *unusableHostsBreakdown) keysAndValues() []interface{} { // - recoverable -> can be usable in the contract set if it is refreshed/renewed // - refresh -> should be refreshed // - renew -> should be renewed -func (c *Contractor) isUsableContract(cfg api.AutopilotConfig, s rhpv2.HostSettings, pt rhpv3.HostPriceTable, rs api.RedundancySettings, contract api.Contract, inSet bool, bh uint64, f *hostSet) (usable, refresh, renew bool, reasons []string) { +func (c *Contractor) isUsableContract(cfg api.AutopilotConfig, s rhpv2.HostSettings, pt rhpv3.HostPriceTable, rs api.RedundancySettings, contract contract, inSet bool, bh uint64, f *hostSet) (usable, refresh, renew bool, reasons []string) { usable = true if bh > contract.EndHeight() { reasons = append(reasons, errContractExpired.Error()) @@ -138,7 +138,7 @@ func (c *Contractor) isUsableContract(cfg api.AutopilotConfig, s rhpv2.HostSetti return } -func isOutOfFunds(cfg api.AutopilotConfig, pt rhpv3.HostPriceTable, c api.Contract) bool { +func isOutOfFunds(cfg api.AutopilotConfig, pt rhpv3.HostPriceTable, c contract) bool { // InitialRenterFunds should never be zero but for legacy reasons we check // and return true should it be the case if c.InitialRenterFunds.IsZero() { @@ -157,7 +157,7 @@ func isOutOfFunds(cfg api.AutopilotConfig, pt rhpv3.HostPriceTable, c api.Contra // isOutOfCollateral returns 'true' if the remaining/unallocated collateral in // the contract is below a certain threshold of the collateral we would try to // put into a contract upon renew. -func isOutOfCollateral(cfg api.AutopilotConfig, rs api.RedundancySettings, c api.Contract, s rhpv2.HostSettings, pt rhpv3.HostPriceTable) bool { +func isOutOfCollateral(cfg api.AutopilotConfig, rs api.RedundancySettings, c contract, s rhpv2.HostSettings, pt rhpv3.HostPriceTable) bool { minCollateral := minRemainingCollateral(cfg, rs, c.RenterFunds(), s, pt) return c.RemainingCollateral().Cmp(minCollateral) < 0 } @@ -214,7 +214,7 @@ func minRemainingCollateral(cfg api.AutopilotConfig, rs api.RedundancySettings, return minCollateral } -func isUpForRenewal(cfg api.AutopilotConfig, r types.FileContractRevision, blockHeight uint64) (shouldRenew, secondHalf bool) { +func isUpForRenewal(cfg api.AutopilotConfig, r api.ContractLatestRevisionResponse, blockHeight uint64) (shouldRenew, secondHalf bool) { shouldRenew = blockHeight+cfg.Contracts.RenewWindow >= r.EndHeight() secondHalf = blockHeight+cfg.Contracts.RenewWindow/2 >= r.EndHeight() return diff --git a/autopilot/contractor/state.go b/autopilot/contractor/state.go index 00ecf45f0..673c0171d 100644 --- a/autopilot/contractor/state.go +++ b/autopilot/contractor/state.go @@ -108,8 +108,8 @@ func (ctx *mCtx) Set() string { return ctx.state.ContractsConfig().Set } -func (ctx *mCtx) SortContractsForMaintenance(contracts []api.Contract) { - ctx.state.ContractsConfig().SortContractsForMaintenance(contracts) +func (ctx *mCtx) SortContractsForMaintenance(contracts []contract) { + sortContractsForMaintenance(ctx.state.ContractsConfig(), contracts) } func (state *MaintenanceState) ContractsConfig() api.ContractsConfig { diff --git a/autopilot/workerpool.go b/autopilot/workerpool.go index 000bc9860..60e1a20ca 100644 --- a/autopilot/workerpool.go +++ b/autopilot/workerpool.go @@ -13,7 +13,6 @@ import ( type Worker interface { Account(ctx context.Context, hostKey types.PublicKey) (api.Account, error) - Contracts(ctx context.Context, hostTimeout time.Duration) (api.ContractsResponse, error) ID(ctx context.Context) (string, error) MigrateSlab(ctx context.Context, s object.Slab, set string) error diff --git a/bus/bus.go b/bus/bus.go index 034325875..47595048a 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -409,28 +409,29 @@ func (b *Bus) Handler() http.Handler { "GET /consensus/siafundfee/:payout": b.contractTaxHandlerGET, "GET /consensus/state": b.consensusStateHandler, - "PUT /contracts": b.contractsHandlerPUT, - "GET /contracts": b.contractsHandlerGET, - "DELETE /contracts/all": b.contractsAllHandlerDELETE, - "POST /contracts/archive": b.contractsArchiveHandlerPOST, - "POST /contracts/form": b.contractsFormHandler, - "GET /contracts/prunable": b.contractsPrunableDataHandlerGET, - "GET /contracts/renewed/:id": b.contractsRenewedIDHandlerGET, - "GET /contracts/sets": b.contractsSetsHandlerGET, - "POST /contracts/set/:set": b.contractsSetHandlerPUT, - "DELETE /contracts/set/:set": b.contractsSetHandlerDELETE, - "POST /contracts/spending": b.contractsSpendingHandlerPOST, - "GET /contract/:id": b.contractIDHandlerGET, - "DELETE /contract/:id": b.contractIDHandlerDELETE, - "POST /contract/:id/acquire": b.contractAcquireHandlerPOST, - "GET /contract/:id/ancestors": b.contractIDAncestorsHandler, - "POST /contract/:id/broadcast": b.contractIDBroadcastHandler, - "POST /contract/:id/keepalive": b.contractKeepaliveHandlerPOST, - "POST /contract/:id/prune": b.contractPruneHandlerPOST, - "POST /contract/:id/renew": b.contractIDRenewHandlerPOST, - "POST /contract/:id/release": b.contractReleaseHandlerPOST, - "GET /contract/:id/roots": b.contractIDRootsHandlerGET, - "GET /contract/:id/size": b.contractSizeHandlerGET, + "PUT /contracts": b.contractsHandlerPUT, + "GET /contracts": b.contractsHandlerGET, + "DELETE /contracts/all": b.contractsAllHandlerDELETE, + "POST /contracts/archive": b.contractsArchiveHandlerPOST, + "POST /contracts/form": b.contractsFormHandler, + "GET /contracts/prunable": b.contractsPrunableDataHandlerGET, + "GET /contracts/renewed/:id": b.contractsRenewedIDHandlerGET, + "GET /contracts/sets": b.contractsSetsHandlerGET, + "POST /contracts/set/:set": b.contractsSetHandlerPUT, + "DELETE /contracts/set/:set": b.contractsSetHandlerDELETE, + "POST /contracts/spending": b.contractsSpendingHandlerPOST, + "GET /contract/:id": b.contractIDHandlerGET, + "DELETE /contract/:id": b.contractIDHandlerDELETE, + "POST /contract/:id/acquire": b.contractAcquireHandlerPOST, + "GET /contract/:id/ancestors": b.contractIDAncestorsHandler, + "POST /contract/:id/broadcast": b.contractIDBroadcastHandler, + "POST /contract/:id/keepalive": b.contractKeepaliveHandlerPOST, + "GET /contract/:id/latestrevision": b.contractLatestRevisionHandlerGET, + "POST /contract/:id/prune": b.contractPruneHandlerPOST, + "POST /contract/:id/renew": b.contractIDRenewHandlerPOST, + "POST /contract/:id/release": b.contractReleaseHandlerPOST, + "GET /contract/:id/roots": b.contractIDRootsHandlerGET, + "GET /contract/:id/size": b.contractSizeHandlerGET, "POST /hosts": b.hostsHandlerPOST, "GET /hosts/allowlist": b.hostsAllowlistHandlerGET, diff --git a/bus/client/contracts.go b/bus/client/contracts.go index 9891059f7..36d695395 100644 --- a/bus/client/contracts.go +++ b/bus/client/contracts.go @@ -142,6 +142,13 @@ func (c *Client) KeepaliveContract(ctx context.Context, contractID types.FileCon return } +// PrunableData returns an overview of all contract sizes, the total size and +// the amount of data that can be pruned. +func (c *Client) LatestRevision(ctx context.Context, contractID types.FileContractID) (resp api.ContractLatestRevisionResponse, err error) { + err = c.c.WithContext(ctx).GET(fmt.Sprintf("/contract/%s/latestrevision", contractID), &resp) + return +} + // PrunableData returns an overview of all contract sizes, the total size and // the amount of data that can be pruned. func (c *Client) PrunableData(ctx context.Context) (prunableData api.ContractsPrunableDataResponse, err error) { diff --git a/bus/routes.go b/bus/routes.go index 16c14e06a..d5fe32030 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -794,6 +794,50 @@ func (b *Bus) contractKeepaliveHandlerPOST(jc jape.Context) { } } +func (b *Bus) contractLatestRevisionHandlerGET(jc jape.Context) { + var fcid types.FileContractID + if jc.DecodeParam("id", &fcid) != nil { + return + } + contract, err := b.store.Contract(jc.Request.Context(), fcid) + if errors.Is(err, api.ErrContractNotFound) { + jc.Error(err, http.StatusNotFound) + return + } else if jc.Check("failed to fetch contract", err) != nil { + return + } + + if b.isPassedV2AllowHeight() { + panic("not implemented") + } else { + revision, err := b.rhp3.Revision(jc.Request.Context(), fcid, contract.HostKey, contract.SiamuxAddr) + if jc.Check("failed to fetch revision", err) != nil { + return + } + jc.Encode(api.ContractLatestRevisionResponse{ + ContractID: revision.ParentID, + V2: contract.V2, + V2FileContract: types.V2FileContract{ + Capacity: revision.Filesize, // same as size for v1 + Filesize: revision.Filesize, + FileMerkleRoot: revision.FileMerkleRoot, + ProofHeight: revision.WindowStart, + ExpirationHeight: revision.WindowEnd, + RenterOutput: revision.ValidRenterOutput(), + HostOutput: revision.ValidHostOutput(), + MissedHostValue: revision.MissedHostPayout(), + TotalCollateral: types.ZeroCurrency, // unknown in v1 + RenterPublicKey: types.PublicKey(revision.UnlockConditions.PublicKeys[0].Key), + HostPublicKey: types.PublicKey(revision.UnlockConditions.PublicKeys[1].Key), + RevisionNumber: revision.RevisionNumber, + + RenterSignature: types.Signature{}, // unavailable in v1 + HostSignature: types.Signature{}, // unavailable in v1 + }, + }) + } +} + func (b *Bus) contractPruneHandlerPOST(jc jape.Context) { ctx := jc.Request.Context() diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index ce8e5ff6e..512966673 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -732,7 +732,7 @@ func (c *TestCluster) WaitForAccounts() []api.Account { return accounts } -func (c *TestCluster) WaitForContracts() []api.Contract { +func (c *TestCluster) WaitForContracts() []api.ContractMetadata { c.tt.Helper() // build hosts map @@ -745,12 +745,11 @@ func (c *TestCluster) WaitForContracts() []api.Contract { c.waitForHostContracts(hostsMap) // fetch all contracts - resp, err := c.Worker.Contracts(context.Background(), time.Minute) + resp, err := c.Bus.Contracts(context.Background(), api.ContractsOpts{ + FilterMode: api.ContractFilterModeActive, + }) c.tt.OK(err) - if len(resp.Errors) > 0 { - c.tt.Fatal(resp.Errors) - } - return resp.Contracts + return resp } func (c *TestCluster) WaitForContractSetContracts(set string, n int) { diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 18c3e1dc2..0d4db4ef3 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -189,15 +189,17 @@ func TestNewTestCluster(t *testing.T) { cluster.AddHosts(1) // Wait for contracts to form. - var contract api.Contract + var contract api.ContractMetadata contracts := cluster.WaitForContracts() contract = contracts[0] + revision, err := cluster.Bus.LatestRevision(context.Background(), contract.ID) + tt.OK(err) // Verify startHeight and endHeight of the contract. cfg, currentPeriod := cluster.AutopilotConfig(context.Background()) expectedEndHeight := currentPeriod + cfg.Contracts.Period + cfg.Contracts.RenewWindow - if contract.EndHeight() != expectedEndHeight || contract.Revision.EndHeight() != expectedEndHeight { - t.Fatal("wrong endHeight", contract.EndHeight(), contract.Revision.EndHeight()) + if contract.EndHeight() != expectedEndHeight || revision.EndHeight() != expectedEndHeight { + t.Fatal("wrong endHeight", contract.EndHeight(), revision.EndHeight()) } else if contract.InitialRenterFunds.IsZero() || contract.ContractPrice.IsZero() { t.Fatal("InitialRenterFunds and ContractPrice shouldn't be zero") } diff --git a/worker/client/client.go b/worker/client/client.go index 0063938d6..d20441a1e 100644 --- a/worker/client/client.go +++ b/worker/client/client.go @@ -50,13 +50,6 @@ func (c *Client) ResetDrift(ctx context.Context, id rhpv3.Account) (err error) { return } -// Contracts returns all contracts from the worker. These contracts decorate a -// bus contract with the contract's latest revision. -func (c *Client) Contracts(ctx context.Context, hostTimeout time.Duration) (resp api.ContractsResponse, err error) { - err = c.c.WithContext(ctx).GET(fmt.Sprintf("/rhp/contracts?hosttimeout=%s", api.DurationMS(hostTimeout)), &resp) - return -} - // DeleteObject deletes the object at the given path. func (c *Client) DeleteObject(ctx context.Context, bucket, key string) (err error) { values := url.Values{} diff --git a/worker/worker.go b/worker/worker.go index eece75ce7..29d573bac 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -259,58 +259,6 @@ func (w *Worker) rhpScanHandler(jc jape.Context) { }) } -func (w *Worker) fetchContracts(ctx context.Context, metadatas []api.ContractMetadata, timeout time.Duration) (contracts []api.Contract, errs HostErrorSet) { - errs = make(HostErrorSet) - - // create requests channel - reqs := make(chan api.ContractMetadata) - - // create worker function - var mu sync.Mutex - worker := func() { - for md := range reqs { - var revision types.FileContractRevision - err := w.withRevision(ctx, timeout, md.ID, md.HostKey, md.SiamuxAddr, lockingPriorityActiveContractRevision, func(rev types.FileContractRevision) error { - revision = rev - return nil - }) - mu.Lock() - if err != nil { - errs[md.HostKey] = err - contracts = append(contracts, api.Contract{ - ContractMetadata: md, - }) - } else { - contracts = append(contracts, api.Contract{ - ContractMetadata: md, - Revision: &revision, - }) - } - mu.Unlock() - } - } - - // launch all workers - var wg sync.WaitGroup - for t := 0; t < 20 && t < len(metadatas); t++ { - wg.Add(1) - go func() { - worker() - wg.Done() - }() - } - - // launch all requests - for _, metadata := range metadatas { - reqs <- metadata - } - close(reqs) - - // wait until they're done - wg.Wait() - return -} - func (w *Worker) rhpPriceTableHandler(jc jape.Context) { // decode the request var rptr api.RHPPriceTableRequest @@ -791,41 +739,6 @@ func (w *Worker) objectsRemoveHandlerPOST(jc jape.Context) { jc.Check("couldn't remove objects", w.bus.RemoveObjects(jc.Request.Context(), orr.Bucket, orr.Prefix)) } -func (w *Worker) rhpContractsHandlerGET(jc jape.Context) { - ctx := jc.Request.Context() - - // fetch contracts - busContracts, err := w.bus.Contracts(ctx, api.ContractsOpts{}) - if jc.Check("failed to fetch contracts from bus", err) != nil { - return - } - if len(busContracts) == 0 { - jc.Encode(api.ContractsResponse{Contracts: nil}) - return - } - - var hosttimeout time.Duration - if jc.DecodeForm("hosttimeout", (*api.DurationMS)(&hosttimeout)) != nil { - return - } - - gp, err := w.bus.GougingParams(ctx) - if jc.Check("could not get gouging parameters", err) != nil { - return - } - ctx = WithGougingChecker(ctx, w.bus, gp) - - contracts, errs := w.fetchContracts(ctx, busContracts, hosttimeout) - resp := api.ContractsResponse{Contracts: contracts} - if errs != nil { - resp.Errors = make(map[types.PublicKey]string) - for pk, err := range errs { - resp.Errors[pk] = err.Error() - } - } - jc.Encode(resp) -} - func (w *Worker) idHandlerGET(jc jape.Context) { jc.Encode(w.id) } @@ -964,7 +877,6 @@ func (w *Worker) Handler() http.Handler { "GET /memory": w.memoryGET, - "GET /rhp/contracts": w.rhpContractsHandlerGET, "POST /rhp/scan": w.rhpScanHandler, "POST /rhp/pricetable": w.rhpPriceTableHandler, From ea4e5b87c9bca394c9a28a2f8b05a771856a2569 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 31 Oct 2024 13:44:52 +0100 Subject: [PATCH 262/708] e2e: fix TestNewTestCluster --- autopilot/contractor/contractor.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/autopilot/contractor/contractor.go b/autopilot/contractor/contractor.go index eb055169d..fc2262a5a 100644 --- a/autopilot/contractor/contractor.go +++ b/autopilot/contractor/contractor.go @@ -814,6 +814,8 @@ func performContractChecks(ctx *mCtx, alerter alerts.Alerter, bus Bus, w Worker, contracts := make([]contract, len(contractMetadatas)) for i, c := range contractMetadatas { + contracts[i].ContractMetadata = c + wg.Add(1) go func(i int) { defer wg.Done() @@ -823,8 +825,9 @@ func performContractChecks(ctx *mCtx, alerter alerts.Alerter, bus Bus, w Worker, logger.With(zap.Error(err)). With("hostKey", c.HostKey). With("contractID", c.ID).Debug("failed to fetch contract revision") + } else { + contracts[i].Revision = &rev } - contracts[i].Revision = &rev }(i) } wg.Wait() From 87345bdbfb911ccf7eac9a9a3c80f867157986a4 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 31 Oct 2024 14:21:04 +0100 Subject: [PATCH 263/708] api: rename response type to revision --- api/bus.go | 10 ---------- api/contract.go | 11 +++++++++++ autopilot/autopilot.go | 2 +- autopilot/contractor/contract.go | 2 +- autopilot/contractor/contractor.go | 2 +- autopilot/contractor/contractor_test.go | 2 +- autopilot/contractor/hostfilter.go | 2 +- bus/client/contracts.go | 2 +- bus/routes.go | 3 +-- 9 files changed, 18 insertions(+), 18 deletions(-) diff --git a/api/bus.go b/api/bus.go index 5d9b106e5..1d9dc1406 100644 --- a/api/bus.go +++ b/api/bus.go @@ -83,14 +83,4 @@ type ( ToAdd []types.FileContractID `json:"toAdd"` ToRemove []types.FileContractID `json:"toRemove"` } - - ContractLatestRevisionResponse struct { - ContractID types.FileContractID `json:"contractID"` - V2 bool `json:"v2"` - types.V2FileContract - } ) - -func (rev *ContractLatestRevisionResponse) EndHeight() uint64 { - return rev.ProofHeight -} diff --git a/api/contract.go b/api/contract.go index b7fcff6a9..9d0dde1dd 100644 --- a/api/contract.go +++ b/api/contract.go @@ -219,3 +219,14 @@ func (cm ContractMetadata) InSet(set string) bool { } return false } + +type ( + Revision struct { + ContractID types.FileContractID `json:"contractID"` + types.V2FileContract + } +) + +func (rev *Revision) EndHeight() uint64 { + return rev.ProofHeight +} diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index c93fc3631..48b2c5de1 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -49,7 +49,7 @@ type Bus interface { Contracts(ctx context.Context, opts api.ContractsOpts) (contracts []api.ContractMetadata, err error) FileContractTax(ctx context.Context, payout types.Currency) (types.Currency, error) FormContract(ctx context.Context, renterAddress types.Address, renterFunds types.Currency, hostKey types.PublicKey, hostIP string, hostCollateral types.Currency, endHeight uint64) (api.ContractMetadata, error) - LatestRevision(ctx context.Context, fcid types.FileContractID) (api.ContractLatestRevisionResponse, error) + LatestRevision(ctx context.Context, fcid types.FileContractID) (api.Revision, error) RenewContract(ctx context.Context, fcid types.FileContractID, endHeight uint64, renterFunds, minNewCollateral types.Currency, expectedNewStorage uint64) (api.ContractMetadata, error) UpdateContractSet(ctx context.Context, set string, toAdd, toRemove []types.FileContractID) error PrunableData(ctx context.Context) (prunableData api.ContractsPrunableDataResponse, err error) diff --git a/autopilot/contractor/contract.go b/autopilot/contractor/contract.go index 0e1b635d4..b722391c0 100644 --- a/autopilot/contractor/contract.go +++ b/autopilot/contractor/contract.go @@ -8,7 +8,7 @@ import ( ) type contract struct { - Revision *api.ContractLatestRevisionResponse + Revision *api.Revision api.ContractMetadata } diff --git a/autopilot/contractor/contractor.go b/autopilot/contractor/contractor.go index fc2262a5a..a23bba8ef 100644 --- a/autopilot/contractor/contractor.go +++ b/autopilot/contractor/contractor.go @@ -91,7 +91,7 @@ type Bus interface { Contracts(ctx context.Context, opts api.ContractsOpts) (contracts []api.ContractMetadata, err error) FileContractTax(ctx context.Context, payout types.Currency) (types.Currency, error) FormContract(ctx context.Context, renterAddress types.Address, renterFunds types.Currency, hostKey types.PublicKey, hostIP string, hostCollateral types.Currency, endHeight uint64) (api.ContractMetadata, error) - LatestRevision(ctx context.Context, fcid types.FileContractID) (api.ContractLatestRevisionResponse, error) + LatestRevision(ctx context.Context, fcid types.FileContractID) (api.Revision, error) RenewContract(ctx context.Context, fcid types.FileContractID, endHeight uint64, renterFunds, minNewCollateral types.Currency, expectedNewStorage uint64) (api.ContractMetadata, error) Host(ctx context.Context, hostKey types.PublicKey) (api.Host, error) Hosts(ctx context.Context, opts api.HostOptions) ([]api.Host, error) diff --git a/autopilot/contractor/contractor_test.go b/autopilot/contractor/contractor_test.go index 61a20a768..186c9dfdf 100644 --- a/autopilot/contractor/contractor_test.go +++ b/autopilot/contractor/contractor_test.go @@ -109,7 +109,7 @@ func TestShouldArchive(t *testing.T) { RevisionNumber: 1, V2: true, }, - Revision: &api.ContractLatestRevisionResponse{ + Revision: &api.Revision{ V2FileContract: types.V2FileContract{ RevisionNumber: 1, }, diff --git a/autopilot/contractor/hostfilter.go b/autopilot/contractor/hostfilter.go index ce1b03ae2..4a3e93b04 100644 --- a/autopilot/contractor/hostfilter.go +++ b/autopilot/contractor/hostfilter.go @@ -214,7 +214,7 @@ func minRemainingCollateral(cfg api.AutopilotConfig, rs api.RedundancySettings, return minCollateral } -func isUpForRenewal(cfg api.AutopilotConfig, r api.ContractLatestRevisionResponse, blockHeight uint64) (shouldRenew, secondHalf bool) { +func isUpForRenewal(cfg api.AutopilotConfig, r api.Revision, blockHeight uint64) (shouldRenew, secondHalf bool) { shouldRenew = blockHeight+cfg.Contracts.RenewWindow >= r.EndHeight() secondHalf = blockHeight+cfg.Contracts.RenewWindow/2 >= r.EndHeight() return diff --git a/bus/client/contracts.go b/bus/client/contracts.go index 36d695395..0d096cd0e 100644 --- a/bus/client/contracts.go +++ b/bus/client/contracts.go @@ -144,7 +144,7 @@ func (c *Client) KeepaliveContract(ctx context.Context, contractID types.FileCon // PrunableData returns an overview of all contract sizes, the total size and // the amount of data that can be pruned. -func (c *Client) LatestRevision(ctx context.Context, contractID types.FileContractID) (resp api.ContractLatestRevisionResponse, err error) { +func (c *Client) LatestRevision(ctx context.Context, contractID types.FileContractID) (resp api.Revision, err error) { err = c.c.WithContext(ctx).GET(fmt.Sprintf("/contract/%s/latestrevision", contractID), &resp) return } diff --git a/bus/routes.go b/bus/routes.go index d5fe32030..7c61df1bb 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -814,9 +814,8 @@ func (b *Bus) contractLatestRevisionHandlerGET(jc jape.Context) { if jc.Check("failed to fetch revision", err) != nil { return } - jc.Encode(api.ContractLatestRevisionResponse{ + jc.Encode(api.Revision{ ContractID: revision.ParentID, - V2: contract.V2, V2FileContract: types.V2FileContract{ Capacity: revision.Filesize, // same as size for v1 Filesize: revision.Filesize, From c0f9bbef9001d92f5f3ce026f751e3a95e674416 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 31 Oct 2024 14:37:35 +0100 Subject: [PATCH 264/708] bus: fix build --- bus/routes.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bus/routes.go b/bus/routes.go index 7c61df1bb..bfd0033f8 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -810,7 +810,7 @@ func (b *Bus) contractLatestRevisionHandlerGET(jc jape.Context) { if b.isPassedV2AllowHeight() { panic("not implemented") } else { - revision, err := b.rhp3.Revision(jc.Request.Context(), fcid, contract.HostKey, contract.SiamuxAddr) + revision, err := b.rhp3Client.Revision(jc.Request.Context(), fcid, contract.HostKey, contract.SiamuxAddr) if jc.Check("failed to fetch revision", err) != nil { return } From e43d86cb73678f99bf5d67af8d000858d9783122 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Wed, 30 Oct 2024 12:02:25 +0100 Subject: [PATCH 265/708] api: move host scanning to bus --- README.md | 2 +- api/bus.go | 16 +++ api/host.go | 5 - api/worker.go | 17 +-- autopilot/autopilot.go | 7 +- autopilot/contractor/contractor.go | 21 ++-- autopilot/scanner/scanner.go | 18 +-- autopilot/scanner/scanner_test.go | 20 ++-- autopilot/workerpool.go | 1 - bus/bus.go | 125 +++++++++++++++++++- bus/client/client.go | 12 ++ bus/client/hosts.go | 8 -- bus/routes.go | 38 ++++-- cmd/renterd/config.go | 2 +- cmd/renterd/node.go | 3 +- config/config.go | 2 +- internal/test/e2e/cluster.go | 5 +- internal/test/e2e/cluster_test.go | 3 +- internal/test/e2e/interactions_test.go | 2 +- internal/test/e2e/pruning_test.go | 2 +- worker/client/rhp.go | 10 -- worker/worker.go | 156 +------------------------ 22 files changed, 227 insertions(+), 248 deletions(-) diff --git a/README.md b/README.md index e631c84ec..b4b69f2b1 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,7 @@ overview of all settings configurable through the CLI. | `Database.MySQL.MetricsDatabase` | Database for metrics | `renterd_metrics` | `--db.metricsName` | `RENTERD_DB_METRICS_NAME` | `database.mysql.metricsDatabase` | | `Database.SQLite.Database` | SQLite database name | - | - | - | `database.sqlite.database` | | `Database.SQLite.MetricsDatabase` | SQLite metrics database name | - | - | - | `database.sqlite.metricsDatabase` | +| `Bus.AllowPrivateIPs` | Allows hosts with private IPs | - | `--bus.allowPrivateIPs` | - | `bus.allowPrivateIPs` | | `Bus.AnnouncementMaxAgeHours` | Max age for announcements | `8760h` (1 year) | `--bus.announcementMaxAgeHours` | - | `bus.announcementMaxAgeHours` | | `Bus.Bootstrap` | Bootstraps gateway and consensus modules | `true` | `--bus.bootstrap` | - | `bus.bootstrap` | | `Bus.GatewayAddr` | Address for Sia peer connections | `:9981` | `--bus.gatewayAddr` | `RENTERD_BUS_GATEWAY_ADDR` | `bus.gatewayAddr` | @@ -68,7 +69,6 @@ overview of all settings configurable through the CLI. | `Bus.RemotePassword` | Remote password for the bus | - | - | `RENTERD_BUS_API_PASSWORD` | `bus.remotePassword` | | `Bus.UsedUTXOExpiry` | Expiry for used UTXOs in transactions | `24h` | `--bus.usedUTXOExpiry` | - | `bus.usedUtxoExpiry` | | `Bus.SlabBufferCompletionThreshold` | Threshold for slab buffer upload | `4096` | `--bus.slabBufferCompletionThreshold` | `RENTERD_BUS_SLAB_BUFFER_COMPLETION_THRESHOLD` | `bus.slabBufferCompletionThreshold` | -| `Worker.AllowPrivateIPs` | Allows hosts with private IPs | - | `--worker.allowPrivateIPs` | - | `worker.allowPrivateIPs` | | `Worker.BusFlushInterval` | Interval for flushing data to bus | `5s` | `--worker.busFlushInterval` | - | `worker.busFlushInterval` | | `Worker.ContractLockTimeout` | Timeout for locking contracts | `30s` | - | - | `worker.contractLockTimeout` | | `Worker.DownloadMaxOverdrive` | Max overdrive workers for downloads | `5` | `--worker.downloadMaxOverdrive` | - | `worker.downloadMaxOverdrive` | diff --git a/api/bus.go b/api/bus.go index 1d9dc1406..1814e7237 100644 --- a/api/bus.go +++ b/api/bus.go @@ -3,6 +3,7 @@ package api import ( "errors" + rhpv2 "go.sia.tech/core/rhp/v2" rhpv3 "go.sia.tech/core/rhp/v3" "go.sia.tech/core/types" ) @@ -83,4 +84,19 @@ type ( ToAdd []types.FileContractID `json:"toAdd"` ToRemove []types.FileContractID `json:"toRemove"` } + + // HostScanRequest is the request type for the /host/scan endpoint. + HostScanRequest struct { + HostKey types.PublicKey `json:"hostKey"` + HostIP string `json:"hostIP"` + Timeout DurationMS `json:"timeout"` + } + + // HostScanResponse is the response type for the /host/scan endpoint. + HostScanResponse struct { + Ping DurationMS `json:"ping"` + ScanError string `json:"scanError,omitempty"` + Settings rhpv2.HostSettings `json:"settings,omitempty"` + PriceTable rhpv3.HostPriceTable `json:"priceTable,omitempty"` + } ) diff --git a/api/host.go b/api/host.go index 66e974a8b..cfa9a0b6c 100644 --- a/api/host.go +++ b/api/host.go @@ -45,11 +45,6 @@ var ( ) type ( - // HostsScanRequest is the request type for the /hosts/scans endpoint. - HostsScanRequest struct { - Scans []HostScan `json:"scans"` - } - // HostsPriceTablesRequest is the request type for the /hosts/pricetables endpoint. HostsPriceTablesRequest struct { PriceTableUpdates []HostPriceTableUpdate `json:"priceTableUpdates"` diff --git a/api/worker.go b/api/worker.go index c5fd29eb1..c6117786c 100644 --- a/api/worker.go +++ b/api/worker.go @@ -96,21 +96,6 @@ type ( Timeout DurationMS `json:"timeout"` } - // RHPScanRequest is the request type for the /rhp/scan endpoint. - RHPScanRequest struct { - HostKey types.PublicKey `json:"hostKey"` - HostIP string `json:"hostIP"` - Timeout DurationMS `json:"timeout"` - } - - // RHPScanResponse is the response type for the /rhp/scan endpoint. - RHPScanResponse struct { - Ping DurationMS `json:"ping"` - ScanError string `json:"scanError,omitempty"` - Settings rhpv2.HostSettings `json:"settings,omitempty"` - PriceTable rhpv3.HostPriceTable `json:"priceTable,omitempty"` - } - // RHPSyncRequest is the request type for the /rhp/sync endpoint. RHPSyncRequest struct { ContractID types.FileContractID `json:"contractID"` @@ -244,7 +229,7 @@ func ParseDownloadRange(req *http.Request) (DownloadRange, error) { return dr, nil } -func (r RHPScanResponse) Error() error { +func (r HostScanResponse) Error() error { if r.ScanError != "" { return errors.New(r.ScanError) } diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 658604bb9..a35601965 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -73,6 +73,9 @@ type Bus interface { Slab(ctx context.Context, key object.EncryptionKey) (object.Slab, error) SlabsForMigration(ctx context.Context, healthCutoff float64, set string, limit int) ([]api.UnhealthySlab, error) + // scanner + ScanHost(ctx context.Context, hostKey types.PublicKey, hostIP string, timeout time.Duration) (resp api.HostScanResponse, err error) + // settings GougingSettings(ctx context.Context) (gs api.GougingSettings, err error) UploadSettings(ctx context.Context) (us api.UploadSettings, err error) @@ -237,7 +240,7 @@ func (ap *Autopilot) Run() { defer ap.logger.Info("autopilot iteration ended") // initiate a host scan - no need to be synced or configured for scanning - ap.s.Scan(ap.shutdownCtx, w, forceScan) + ap.s.Scan(ap.shutdownCtx, ap.bus, forceScan) // reset forceScans forceScan = false @@ -252,7 +255,7 @@ func (ap *Autopilot) Run() { return } else if blocked { if scanning, _ := ap.s.Status(); !scanning { - ap.s.Scan(ap.shutdownCtx, w, true) + ap.s.Scan(ap.shutdownCtx, ap.bus, true) } } diff --git a/autopilot/contractor/contractor.go b/autopilot/contractor/contractor.go index a89a81c22..99248b122 100644 --- a/autopilot/contractor/contractor.go +++ b/autopilot/contractor/contractor.go @@ -81,6 +81,8 @@ var ( ) type Bus interface { + HostScanner + AncestorContracts(ctx context.Context, id types.FileContractID, minStartHeight uint64) ([]api.ContractMetadata, error) ArchiveContracts(ctx context.Context, toArchive map[types.FileContractID]string) error BroadcastContract(ctx context.Context, fcid types.FileContractID) (types.TransactionID, error) @@ -98,10 +100,13 @@ type Bus interface { UpdateHostCheck(ctx context.Context, autopilotID string, hostKey types.PublicKey, hostCheck api.HostCheck) error } +type HostScanner interface { + ScanHost(ctx context.Context, hostKey types.PublicKey, hostIP string, timeout time.Duration) (api.HostScanResponse, error) +} + type Worker interface { Contracts(ctx context.Context, hostTimeout time.Duration) (api.ContractsResponse, error) RHPPriceTable(ctx context.Context, hostKey types.PublicKey, siamuxAddr string, timeout time.Duration) (api.HostPriceTable, error) - RHPScan(ctx context.Context, hostKey types.PublicKey, hostIP string, timeout time.Duration) (api.RHPScanResponse, error) } type contractChecker interface { @@ -111,7 +116,7 @@ type contractChecker interface { } type contractReviser interface { - formContract(ctx *mCtx, w Worker, host api.Host, minInitialContractFunds types.Currency, logger *zap.SugaredLogger) (cm api.ContractMetadata, ourFault bool, err error) + formContract(ctx *mCtx, hs HostScanner, w Worker, host api.Host, minInitialContractFunds types.Currency, logger *zap.SugaredLogger) (cm api.ContractMetadata, ourFault bool, err error) renewContract(ctx *mCtx, w Worker, c api.Contract, h api.Host, logger *zap.SugaredLogger) (cm api.ContractMetadata, ourFault bool, err error) refreshContract(ctx *mCtx, w Worker, c api.Contract, h api.Host, logger *zap.SugaredLogger) (cm api.ContractMetadata, ourFault bool, err error) } @@ -182,14 +187,14 @@ func (c *Contractor) PerformContractMaintenance(ctx context.Context, w Worker, s return performContractMaintenance(newMaintenanceCtx(ctx, state), c.alerter, c.bus, c.churn, w, c, c, c, c.logger) } -func (c *Contractor) formContract(ctx *mCtx, w Worker, host api.Host, minInitialContractFunds types.Currency, logger *zap.SugaredLogger) (cm api.ContractMetadata, proceed bool, err error) { +func (c *Contractor) formContract(ctx *mCtx, hs HostScanner, w Worker, host api.Host, minInitialContractFunds types.Currency, logger *zap.SugaredLogger) (cm api.ContractMetadata, proceed bool, err error) { logger = logger.With("hk", host.PublicKey, "hostVersion", host.Settings.Version, "hostRelease", host.Settings.Release) // convenience variables hk := host.PublicKey // fetch host settings - scan, err := w.RHPScan(ctx, hk, host.NetAddress, 0) + scan, err := hs.ScanHost(ctx, hk, host.NetAddress, 0) if err != nil { logger.Infow(err.Error(), "hk", hk) return api.ContractMetadata{}, true, err @@ -701,7 +706,7 @@ func initialContractFunding(settings rhpv2.HostSettings, txnFee, minFunding type return funding } -func refreshPriceTable(ctx context.Context, w Worker, host *api.Host) error { +func refreshPriceTable(ctx context.Context, hs HostScanner, w Worker, host *api.Host) error { // return early if the host's pricetable is not expired yet if time.Now().Before(host.PriceTable.Expiry) { return nil @@ -710,7 +715,7 @@ func refreshPriceTable(ctx context.Context, w Worker, host *api.Host) error { // scan the host if it hasn't been successfully scanned before, which // can occur when contracts are added manually to the bus or database if !host.Scanned { - scan, err := w.RHPScan(ctx, host.PublicKey, host.NetAddress, timeoutHostScan) + scan, err := hs.ScanHost(ctx, host.PublicKey, host.NetAddress, timeoutHostScan) if err != nil { return fmt.Errorf("failed to scan host %v: %w", host.PublicKey, err) } @@ -1086,7 +1091,7 @@ func performContractFormations(ctx *mCtx, bus Bus, w Worker, cr contractReviser, } // fetch a new price table if necessary - if err := refreshPriceTable(ctx, w, &candidate.host); err != nil { + if err := refreshPriceTable(ctx, bus, w, &candidate.host); err != nil { logger.Warnf("failed to fetch price table for candidate host %v: %v", candidate.host.PublicKey, err) continue } @@ -1114,7 +1119,7 @@ func performContractFormations(ctx *mCtx, bus Bus, w Worker, cr contractReviser, continue } - formedContract, proceed, err := cr.formContract(ctx, w, candidate.host, minInitialContractFunds, logger) + formedContract, proceed, err := cr.formContract(ctx, bus, w, candidate.host, minInitialContractFunds, logger) if err != nil { logger.With(zap.Error(err)).Error("failed to form contract") continue diff --git a/autopilot/scanner/scanner.go b/autopilot/scanner/scanner.go index 288bc9e9e..8de5e85e4 100644 --- a/autopilot/scanner/scanner.go +++ b/autopilot/scanner/scanner.go @@ -18,21 +18,21 @@ const ( ) type ( + HostScanner interface { + ScanHost(ctx context.Context, hostKey types.PublicKey, hostIP string, timeout time.Duration) (api.HostScanResponse, error) + } + HostStore interface { Hosts(ctx context.Context, opts api.HostOptions) ([]api.Host, error) RemoveOfflineHosts(ctx context.Context, maxConsecutiveScanFailures uint64, maxDowntime time.Duration) (uint64, error) } Scanner interface { - Scan(ctx context.Context, w WorkerRHPScan, force bool) + Scan(ctx context.Context, w HostScanner, force bool) Shutdown(ctx context.Context) error Status() (bool, time.Time) UpdateHostsConfig(cfg api.HostsConfig) } - - WorkerRHPScan interface { - RHPScan(ctx context.Context, hostKey types.PublicKey, hostIP string, timeout time.Duration) (api.RHPScanResponse, error) - } ) type ( @@ -88,7 +88,7 @@ func New(hs HostStore, scanBatchSize, scanThreads uint64, scanMinInterval time.D }, nil } -func (s *scanner) Scan(ctx context.Context, w WorkerRHPScan, force bool) { +func (s *scanner) Scan(ctx context.Context, hs HostScanner, force bool) { if s.canSkipScan(force) { s.logger.Debug("host scan skipped") return @@ -110,7 +110,7 @@ func (s *scanner) Scan(ctx context.Context, w WorkerRHPScan, force bool) { go func() { defer s.wg.Done() - scanned := s.scanHosts(ctx, w, cutoff) + scanned := s.scanHosts(ctx, hs, cutoff) removed := s.removeOfflineHosts(ctx) s.mu.Lock() @@ -156,7 +156,7 @@ func (s *scanner) UpdateHostsConfig(cfg api.HostsConfig) { s.hostsCfg = &cfg } -func (s *scanner) scanHosts(ctx context.Context, w WorkerRHPScan, cutoff time.Time) (scanned uint64) { +func (s *scanner) scanHosts(ctx context.Context, hs HostScanner, cutoff time.Time) (scanned uint64) { // define worker worker := func(jobs <-chan scanJob) { for h := range jobs { @@ -164,7 +164,7 @@ func (s *scanner) scanHosts(ctx context.Context, w WorkerRHPScan, cutoff time.Ti return // shutdown } - scan, err := w.RHPScan(ctx, h.hostKey, h.hostIP, DefaultScanTimeout) + scan, err := hs.ScanHost(ctx, h.hostKey, h.hostIP, DefaultScanTimeout) if errors.Is(err, context.Canceled) { return } else if err != nil { diff --git a/autopilot/scanner/scanner_test.go b/autopilot/scanner/scanner_test.go index 7aa708ae6..b41b3691b 100644 --- a/autopilot/scanner/scanner_test.go +++ b/autopilot/scanner/scanner_test.go @@ -77,7 +77,7 @@ func (hs *mockHostStore) state() ([]string, []string) { return hs.scans, hs.removals } -type mockWorker struct { +type mockBus struct { blockChan chan struct{} hs *mockHostStore @@ -85,7 +85,7 @@ type mockWorker struct { scanCount int } -func (w *mockWorker) RHPScan(ctx context.Context, hostKey types.PublicKey, hostIP string, _ time.Duration) (api.RHPScanResponse, error) { +func (w *mockBus) ScanHost(ctx context.Context, hostKey types.PublicKey, hostIP string, _ time.Duration) (api.HostScanResponse, error) { if w.blockChan != nil { <-w.blockChan } @@ -96,7 +96,7 @@ func (w *mockWorker) RHPScan(ctx context.Context, hostKey types.PublicKey, hostI defer w.mu.Unlock() w.scanCount++ - return api.RHPScanResponse{}, nil + return api.HostScanResponse{}, nil } func TestScanner(t *testing.T) { @@ -117,11 +117,11 @@ func TestScanner(t *testing.T) { } // initiate a host scan using a worker that blocks - w := &mockWorker{ + b := &mockBus{ blockChan: make(chan struct{}), hs: hs, } - s.Scan(context.Background(), w, false) + s.Scan(context.Background(), b, false) // assert it's scanning scanning, _ = s.Status() @@ -130,7 +130,7 @@ func TestScanner(t *testing.T) { } // unblock the worker and sleep - close(w.blockChan) + close(b.blockChan) time.Sleep(time.Second) // assert the scan is done @@ -152,12 +152,12 @@ func TestScanner(t *testing.T) { } // assert we scanned 100 hosts - if w.scanCount != 100 { - t.Fatalf("unexpected number of scans, %v != 100", w.scanCount) + if b.scanCount != 100 { + t.Fatalf("unexpected number of scans, %v != 100", b.scanCount) } // assert we prevent starting a host scan immediately after a scan was done - s.Scan(context.Background(), w, false) + s.Scan(context.Background(), b, false) scanning, _ = s.Status() if scanning { t.Fatal("unexpected") @@ -169,7 +169,7 @@ func TestScanner(t *testing.T) { MaxDowntimeHours: 1, }) - s.Scan(context.Background(), w, true) + s.Scan(context.Background(), b, true) time.Sleep(time.Second) // assert we removed offline hosts diff --git a/autopilot/workerpool.go b/autopilot/workerpool.go index 000bc9860..b1e7382b9 100644 --- a/autopilot/workerpool.go +++ b/autopilot/workerpool.go @@ -18,7 +18,6 @@ type Worker interface { MigrateSlab(ctx context.Context, s object.Slab, set string) error RHPPriceTable(ctx context.Context, hostKey types.PublicKey, siamuxAddr string, timeout time.Duration) (api.HostPriceTable, error) - RHPScan(ctx context.Context, hostKey types.PublicKey, hostIP string, timeout time.Duration) (api.RHPScanResponse, error) } // workerPool contains all workers known to the autopilot. Users can call diff --git a/bus/bus.go b/bus/bus.go index 034325875..c52aefbb7 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -11,6 +11,7 @@ import ( "math" "net" "net/http" + "os" "reflect" "time" @@ -26,6 +27,7 @@ import ( "go.sia.tech/renterd/alerts" "go.sia.tech/renterd/api" "go.sia.tech/renterd/bus/client" + "go.sia.tech/renterd/config" ibus "go.sia.tech/renterd/internal/bus" "go.sia.tech/renterd/internal/gouging" "go.sia.tech/renterd/internal/rhp" @@ -313,8 +315,9 @@ type ( ) type Bus struct { - startTime time.Time - masterKey utils.MasterKey + allowPrivateIPs bool + startTime time.Time + masterKey utils.MasterKey alerts alerts.Alerter alertMgr AlertManager @@ -339,13 +342,14 @@ type Bus struct { } // New returns a new Bus -func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksManager, cm ChainManager, s Syncer, w Wallet, store Store, announcementMaxAge time.Duration, explorerURL string, l *zap.Logger) (_ *Bus, err error) { +func New(ctx context.Context, cfg config.Bus, masterKey [32]byte, am AlertManager, wm WebhooksManager, cm ChainManager, s Syncer, w Wallet, store Store, explorerURL string, l *zap.Logger) (_ *Bus, err error) { l = l.Named("bus") dialer := rhp.NewFallbackDialer(store, net.Dialer{}, l) b := &Bus{ - startTime: time.Now(), - masterKey: masterKey, + allowPrivateIPs: cfg.AllowPrivateIPs, + startTime: time.Now(), + masterKey: masterKey, s: s, cm: cm, @@ -373,6 +377,7 @@ func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksMa b.pinMgr = ibus.NewPinManager(b.alerts, wm, b.explorer, store, defaultPinUpdateInterval, defaultPinRateWindow, l) // create chain subscriber + announcementMaxAge := time.Duration(cfg.AnnouncementMaxAgeHours) * time.Hour b.cs = ibus.NewChainSubscriber(wm, cm, store, w, announcementMaxAge, l) // create wallet metrics recorder @@ -439,7 +444,7 @@ func (b *Bus) Handler() http.Handler { "PUT /hosts/blocklist": b.hostsBlocklistHandlerPUT, "POST /hosts/pricetables": b.hostsPricetableHandlerPOST, "POST /hosts/remove": b.hostsRemoveHandlerPOST, - "POST /hosts/scans": b.hostsScanHandlerPOST, + "POST /hosts/scan": b.hostsScanHandlerPOST, "GET /host/:hostkey": b.hostsPubkeyHandlerGET, "POST /host/:hostkey/resetlostsectors": b.hostsResetLostSectorsPOST, @@ -889,6 +894,103 @@ func (b *Bus) renewContract(ctx context.Context, cs consensus.State, gp api.Goug return newRevision, contractPrice, fundAmount, nil } +func (b *Bus) scanHost(ctx context.Context, timeout time.Duration, hostKey types.PublicKey, hostIP string) (rhpv2.HostSettings, rhpv3.HostPriceTable, time.Duration, error) { + logger := b.logger.With("host", hostKey).With("hostIP", hostIP).With("timeout", timeout) + + // prepare a helper to create a context for scanning + timeoutCtx := func() (context.Context, context.CancelFunc) { + if timeout > 0 { + return context.WithTimeout(ctx, timeout) + } + return ctx, func() {} + } + + // prepare a helper for scanning + scan := func() (rhpv2.HostSettings, rhpv3.HostPriceTable, time.Duration, error) { + // fetch the host settings + start := time.Now() + scanCtx, cancel := timeoutCtx() + settings, err := b.rhp2.Settings(scanCtx, hostKey, hostIP) + cancel() + if err != nil { + return settings, rhpv3.HostPriceTable{}, time.Since(start), err + } + + // fetch the host pricetable + scanCtx, cancel = timeoutCtx() + pt, err := b.rhp3.PriceTableUnpaid(scanCtx, hostKey, settings.SiamuxAddr()) + cancel() + if err != nil { + return settings, rhpv3.HostPriceTable{}, time.Since(start), err + } + return settings, pt.HostPriceTable, time.Since(start), nil + } + + // resolve host ip, don't scan if the host is on a private network or if it + // resolves to more than two addresses of the same type, if it fails for + // another reason the host scan won't have subnets + resolvedAddresses, private, err := utils.ResolveHostIP(ctx, hostIP) + if errors.Is(err, utils.ErrHostTooManyAddresses) { + return rhpv2.HostSettings{}, rhpv3.HostPriceTable{}, 0, err + } else if private && !b.allowPrivateIPs { + return rhpv2.HostSettings{}, rhpv3.HostPriceTable{}, 0, api.ErrHostOnPrivateNetwork + } + + // scan: first try + settings, pt, duration, err := scan() + if err != nil { + logger = logger.With(zap.Error(err)) + + // scan: second try + select { + case <-ctx.Done(): + return rhpv2.HostSettings{}, rhpv3.HostPriceTable{}, 0, context.Cause(ctx) + case <-time.After(time.Second): + } + settings, pt, duration, err = scan() + + logger = logger.With("elapsed", duration).With(zap.Error(err)) + if err == nil { + logger.Info("successfully scanned host on second try") + } else if !isErrHostUnreachable(err) { + logger.Infow("failed to scan host") + } + } + + // check if the scan failed due to a shutdown - shouldn't be necessary but + // just in case since recording a failed scan might have serious + // repercussions + select { + case <-ctx.Done(): + return rhpv2.HostSettings{}, rhpv3.HostPriceTable{}, 0, context.Cause(ctx) + default: + } + + // record host scan - make sure this is interrupted by the request ctx and + // not the context with the timeout used to time out the scan itself. + // Otherwise scans that time out won't be recorded. + scanErr := b.store.RecordHostScans(ctx, []api.HostScan{ + { + HostKey: hostKey, + PriceTable: pt, + ResolvedAddresses: resolvedAddresses, + + // NOTE: A scan is considered successful if both fetching the price + // table and the settings succeeded. Right now scanning can't fail + // due to a reason that is our fault unless we are offline. If that + // changes, we should adjust this code to account for that. + Success: err == nil, + Settings: settings, + Timestamp: time.Now(), + }, + }) + if scanErr != nil { + logger.Errorw("failed to record host scan", zap.Error(scanErr)) + } + logger.With(zap.Error(err)).Debugw("scanned host", "success", err == nil) + return settings, pt, duration, err +} + func (b *Bus) updateSetting(ctx context.Context, key string, value any) error { var payload interface{} var updatePinMgr bool @@ -967,6 +1069,17 @@ func (b *Bus) updateSetting(ctx context.Context, key string, value any) error { return nil } +func isErrHostUnreachable(err error) bool { + return utils.IsErr(err, os.ErrDeadlineExceeded) || + utils.IsErr(err, context.DeadlineExceeded) || + utils.IsErr(err, api.ErrHostOnPrivateNetwork) || + utils.IsErr(err, errors.New("no route to host")) || + utils.IsErr(err, errors.New("no such host")) || + utils.IsErr(err, errors.New("connection refused")) || + utils.IsErr(err, errors.New("unknown port")) || + utils.IsErr(err, errors.New("cannot assign requested address")) +} + // patchSettings merges two settings maps. returns an error if the two maps are // not compatible. func patchSettings(a, b map[string]any) error { diff --git a/bus/client/client.go b/bus/client/client.go index c12559c2d..b41ba9d4e 100644 --- a/bus/client/client.go +++ b/bus/client/client.go @@ -2,7 +2,9 @@ package client import ( "context" + "time" + "go.sia.tech/core/types" "go.sia.tech/jape" "go.sia.tech/renterd/api" ) @@ -28,6 +30,16 @@ func (c *Client) Backup(ctx context.Context, database, dstPath string) (err erro return } +// ScanHost scans a host, returning its current settings. +func (c *Client) ScanHost(ctx context.Context, hostKey types.PublicKey, hostIP string, timeout time.Duration) (resp api.HostScanResponse, err error) { + err = c.c.WithContext(ctx).POST("/hosts/scan", api.HostScanRequest{ + HostKey: hostKey, + HostIP: hostIP, + Timeout: api.DurationMS(timeout), + }, &resp) + return +} + // State returns the current state of the bus. func (c *Client) State() (state api.BusStateResponse, err error) { err = c.c.GET("/state", &state) diff --git a/bus/client/hosts.go b/bus/client/hosts.go index 086c6f5ad..7734d1911 100644 --- a/bus/client/hosts.go +++ b/bus/client/hosts.go @@ -42,14 +42,6 @@ func (c *Client) HostBlocklist(ctx context.Context) (blocklist []string, err err return } -// RecordHostInteraction records an interaction for the supplied host. -func (c *Client) RecordHostScans(ctx context.Context, scans []api.HostScan) (err error) { - err = c.c.WithContext(ctx).POST("/hosts/scans", api.HostsScanRequest{ - Scans: scans, - }, nil) - return -} - // RecordHostInteraction records an interaction for the supplied host. func (c *Client) RecordPriceTables(ctx context.Context, priceTableUpdates []api.HostPriceTableUpdate) (err error) { err = c.c.WithContext(ctx).POST("/hosts/pricetables", api.HostsPriceTablesRequest{ diff --git a/bus/routes.go b/bus/routes.go index 16c14e06a..b4781230f 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -581,23 +581,43 @@ func (b *Bus) hostsPubkeyHandlerGET(jc jape.Context) { } } -func (b *Bus) hostsResetLostSectorsPOST(jc jape.Context) { - var hostKey types.PublicKey - if jc.DecodeParam("hostkey", &hostKey) != nil { +func (b *Bus) hostsScanHandlerPOST(jc jape.Context) { + ctx := jc.Request.Context() + + // decode the request + var rsr api.HostScanRequest + if jc.Decode(&rsr) != nil { return } - err := b.store.ResetLostSectors(jc.Request.Context(), hostKey) - if jc.Check("couldn't reset lost sectors", err) != nil { + + // only scan hosts if we are online + if len(b.s.Peers()) == 0 { + jc.Error(errors.New("not connected to the internet"), http.StatusServiceUnavailable) return } + + // scan host + var errStr string + settings, priceTable, elapsed, err := b.scanHost(ctx, time.Duration(rsr.Timeout), rsr.HostKey, rsr.HostIP) + if err != nil { + errStr = err.Error() + } + + jc.Encode(api.HostScanResponse{ + Ping: api.DurationMS(elapsed), + PriceTable: priceTable, + ScanError: errStr, + Settings: settings, + }) } -func (b *Bus) hostsScanHandlerPOST(jc jape.Context) { - var req api.HostsScanRequest - if jc.Decode(&req) != nil { +func (b *Bus) hostsResetLostSectorsPOST(jc jape.Context) { + var hostKey types.PublicKey + if jc.DecodeParam("hostkey", &hostKey) != nil { return } - if jc.Check("failed to record scans", b.store.RecordHostScans(jc.Request.Context(), req.Scans)) != nil { + err := b.store.ResetLostSectors(jc.Request.Context(), hostKey) + if jc.Check("couldn't reset lost sectors", err) != nil { return } } diff --git a/cmd/renterd/config.go b/cmd/renterd/config.go index 56a5437a7..f03a7854f 100644 --- a/cmd/renterd/config.go +++ b/cmd/renterd/config.go @@ -286,6 +286,7 @@ func parseCLIFlags(cfg *config.Config) { flag.StringVar(&cfg.Database.MySQL.MetricsDatabase, "db.metricsName", cfg.Database.MySQL.MetricsDatabase, "Database for metrics (overrides with RENTERD_DB_METRICS_NAME)") // bus + flag.BoolVar(&cfg.Bus.AllowPrivateIPs, "bus.allowPrivateIPs", cfg.Bus.AllowPrivateIPs, "Allows hosts with private IPs") flag.Uint64Var(&cfg.Bus.AnnouncementMaxAgeHours, "bus.announcementMaxAgeHours", cfg.Bus.AnnouncementMaxAgeHours, "Max age for announcements") flag.BoolVar(&cfg.Bus.Bootstrap, "bus.bootstrap", cfg.Bus.Bootstrap, "Bootstraps gateway and consensus modules") flag.StringVar(&cfg.Bus.GatewayAddr, "bus.gatewayAddr", cfg.Bus.GatewayAddr, "Address for Sia peer connections (overrides with RENTERD_BUS_GATEWAY_ADDR)") @@ -294,7 +295,6 @@ func parseCLIFlags(cfg *config.Config) { // worker flag.DurationVar(&cfg.Worker.AccountsRefillInterval, "worker.accountRefillInterval", cfg.Worker.AccountsRefillInterval, "Interval for refilling workers' account balances") - flag.BoolVar(&cfg.Worker.AllowPrivateIPs, "worker.allowPrivateIPs", cfg.Worker.AllowPrivateIPs, "Allows hosts with private IPs") flag.DurationVar(&cfg.Worker.BusFlushInterval, "worker.busFlushInterval", cfg.Worker.BusFlushInterval, "Interval for flushing data to bus") flag.Uint64Var(&cfg.Worker.DownloadMaxMemory, "worker.downloadMaxMemory", cfg.Worker.DownloadMaxMemory, "Max amount of RAM the worker allocates for slabs when downloading (overrides with RENTERD_WORKER_DOWNLOAD_MAX_MEMORY)") flag.Uint64Var(&cfg.Worker.DownloadMaxOverdrive, "worker.downloadMaxOverdrive", cfg.Worker.DownloadMaxOverdrive, "Max overdrive workers for downloads") diff --git a/cmd/renterd/node.go b/cmd/renterd/node.go index 2cbd522c4..fc7fead47 100644 --- a/cmd/renterd/node.go +++ b/cmd/renterd/node.go @@ -385,8 +385,7 @@ func newBus(ctx context.Context, cfg config.Config, pk types.PrivateKey, network } // create bus - announcementMaxAgeHours := time.Duration(cfg.Bus.AnnouncementMaxAgeHours) * time.Hour - b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, s, w, sqlStore, announcementMaxAgeHours, explorerURL, logger) + b, err := bus.New(ctx, cfg.Bus, masterKey, alertsMgr, wh, cm, s, w, sqlStore, explorerURL, logger) if err != nil { return nil, nil, fmt.Errorf("failed to create bus: %w", err) } diff --git a/config/config.go b/config/config.go index f74a765e8..3cdb774a8 100644 --- a/config/config.go +++ b/config/config.go @@ -54,6 +54,7 @@ type ( // Bus contains the configuration for a bus. Bus struct { + AllowPrivateIPs bool `yaml:"allowPrivateIPs,omitempty"` AnnouncementMaxAgeHours uint64 `yaml:"announcementMaxAgeHours,omitempty"` Bootstrap bool `yaml:"bootstrap,omitempty"` GatewayAddr string `yaml:"gatewayAddr,omitempty"` @@ -121,7 +122,6 @@ type ( ID string `yaml:"id,omitempty"` Remotes []RemoteWorker `yaml:"remotes,omitempty"` AccountsRefillInterval time.Duration `yaml:"accountsRefillInterval,omitempty"` - AllowPrivateIPs bool `yaml:"allowPrivateIPs,omitempty"` BusFlushInterval time.Duration `yaml:"busFlushInterval,omitempty"` ContractLockTimeout time.Duration `yaml:"contractLockTimeout,omitempty"` DownloadOverdriveTimeout time.Duration `yaml:"downloadOverdriveTimeout,omitempty"` diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index ce8e5ff6e..ba7a5e1ce 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -616,8 +616,7 @@ func newTestBus(ctx context.Context, cm *chain.Manager, genesisBlock types.Block masterKey := blake2b.Sum256(append([]byte("worker"), pk...)) // create bus - announcementMaxAgeHours := time.Duration(cfg.AnnouncementMaxAgeHours) * time.Hour - b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, s, w, sqlStore, announcementMaxAgeHours, "", logger) + b, err := bus.New(ctx, cfg, masterKey, alertsMgr, wh, cm, s, w, sqlStore, "", logger) if err != nil { return nil, nil, nil, nil, err } @@ -1040,6 +1039,7 @@ func testNetwork() (*consensus.Network, types.Block) { func testBusCfg() config.Bus { return config.Bus{ + AllowPrivateIPs: true, AnnouncementMaxAgeHours: 24 * 7 * 52, // 1 year Bootstrap: false, GatewayAddr: "127.0.0.1:0", @@ -1064,7 +1064,6 @@ func testDBCfg() dbConfig { func testWorkerCfg() config.Worker { return config.Worker{ AccountsRefillInterval: 10 * time.Millisecond, - AllowPrivateIPs: true, ContractLockTimeout: 5 * time.Second, ID: "worker", BusFlushInterval: testBusFlushInterval, diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 18c3e1dc2..843f1ca61 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -2518,7 +2518,6 @@ func TestHostScan(t *testing.T) { defer cluster.Shutdown() b := cluster.Bus - w := cluster.Worker tt := cluster.tt // add 2 hosts to the cluster, 1 to scan and 1 to make sure we always have 1 @@ -2556,7 +2555,7 @@ func TestHostScan(t *testing.T) { // between scans time.Sleep(time.Millisecond) - resp, err := w.RHPScan(context.Background(), hk, hostIP, 10*time.Second) + resp, err := b.ScanHost(context.Background(), hk, hostIP, 10*time.Second) tt.OK(err) if resp.ScanError != "" { return errors.New(resp.ScanError) diff --git a/internal/test/e2e/interactions_test.go b/internal/test/e2e/interactions_test.go index 66c0c0886..3ca78d0ee 100644 --- a/internal/test/e2e/interactions_test.go +++ b/internal/test/e2e/interactions_test.go @@ -73,7 +73,7 @@ func TestInteractions(t *testing.T) { }) // scan the host manually - tt.OKAll(w.RHPScan(context.Background(), h1.PublicKey(), h.NetAddress, 0)) + tt.OKAll(b.ScanHost(context.Background(), h1.PublicKey(), h.NetAddress, 0)) time.Sleep(3 * testBusFlushInterval) // fetch the host diff --git a/internal/test/e2e/pruning_test.go b/internal/test/e2e/pruning_test.go index 8e7585944..11db8dbda 100644 --- a/internal/test/e2e/pruning_test.go +++ b/internal/test/e2e/pruning_test.go @@ -38,7 +38,7 @@ func TestHostPruning(t *testing.T) { Success: false, } } - tt.OK(b.RecordHostScans(context.Background(), his)) + tt.OK(cluster.bs.RecordHostScans(context.Background(), his)) } // shut down the worker manually, this will flush any interactions diff --git a/worker/client/rhp.go b/worker/client/rhp.go index 5aeeee8bf..095f9197b 100644 --- a/worker/client/rhp.go +++ b/worker/client/rhp.go @@ -18,13 +18,3 @@ func (c *Client) RHPPriceTable(ctx context.Context, hostKey types.PublicKey, sia err = c.c.WithContext(ctx).POST("/rhp/pricetable", req, &pt) return } - -// RHPScan scans a host, returning its current settings. -func (c *Client) RHPScan(ctx context.Context, hostKey types.PublicKey, hostIP string, timeout time.Duration) (resp api.RHPScanResponse, err error) { - err = c.c.WithContext(ctx).POST("/rhp/scan", api.RHPScanRequest{ - HostKey: hostKey, - HostIP: hostIP, - Timeout: api.DurationMS(timeout), - }, &resp) - return -} diff --git a/worker/worker.go b/worker/worker.go index eece75ce7..3be8ac21d 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -9,7 +9,6 @@ import ( "math" "net" "net/http" - "os" "runtime" "sort" "strings" @@ -17,7 +16,6 @@ import ( "time" "github.com/gotd/contrib/http_range" - rhpv2 "go.sia.tech/core/rhp/v2" rhpv3 "go.sia.tech/core/rhp/v3" "go.sia.tech/core/types" "go.sia.tech/jape" @@ -96,7 +94,6 @@ type ( } HostStore interface { - RecordHostScans(ctx context.Context, scans []api.HostScan) error RecordPriceTables(ctx context.Context, priceTableUpdate []api.HostPriceTableUpdate) error RecordContractSpending(ctx context.Context, records []api.ContractSpendingRecord) error @@ -170,11 +167,10 @@ type Worker struct { rhp3Client *rhp3.Client rhp4Client *rhp4.Client - allowPrivateIPs bool - id string - bus Bus - masterKey utils.MasterKey - startTime time.Time + id string + bus Bus + masterKey utils.MasterKey + startTime time.Time eventSubscriber iworker.EventSubscriber downloadManager *downloadManager @@ -225,40 +221,6 @@ func (w *Worker) registerAlert(a alerts.Alert) { cancel() } -func (w *Worker) rhpScanHandler(jc jape.Context) { - ctx := jc.Request.Context() - - // decode the request - var rsr api.RHPScanRequest - if jc.Decode(&rsr) != nil { - return - } - - // only scan hosts if we are online - peers, err := w.bus.SyncerPeers(ctx) - if jc.Check("failed to fetch peers from bus", err) != nil { - return - } - if len(peers) == 0 { - jc.Error(errors.New("not connected to the internet"), http.StatusServiceUnavailable) - return - } - - // scan host - var errStr string - settings, priceTable, elapsed, err := w.scanHost(ctx, time.Duration(rsr.Timeout), rsr.HostKey, rsr.HostIP) - if err != nil { - errStr = err.Error() - } - - jc.Encode(api.RHPScanResponse{ - Ping: api.DurationMS(elapsed), - PriceTable: priceTable, - ScanError: errStr, - Settings: settings, - }) -} - func (w *Worker) fetchContracts(ctx context.Context, metadatas []api.ContractMetadata, timeout time.Duration) (contracts []api.Contract, errs HostErrorSet) { errs = make(HostErrorSet) @@ -921,7 +883,6 @@ func New(cfg config.Worker, masterKey [32]byte, b Bus, l *zap.Logger) (*Worker, dialer := rhp.NewFallbackDialer(b, net.Dialer{}, l) w := &Worker{ alerts: a, - allowPrivateIPs: cfg.AllowPrivateIPs, contractLockingDuration: cfg.ContractLockTimeout, cache: iworker.NewCache(b, l), dialer: dialer, @@ -965,7 +926,6 @@ func (w *Worker) Handler() http.Handler { "GET /memory": w.memoryGET, "GET /rhp/contracts": w.rhpContractsHandlerGET, - "POST /rhp/scan": w.rhpScanHandler, "POST /rhp/pricetable": w.rhpPriceTableHandler, "GET /stats/downloads": w.downloadsStatsHandlerGET, @@ -1016,114 +976,6 @@ func (w *Worker) Shutdown(ctx context.Context) error { return w.eventSubscriber.Shutdown(ctx) } -func (w *Worker) scanHost(ctx context.Context, timeout time.Duration, hostKey types.PublicKey, hostIP string) (rhpv2.HostSettings, rhpv3.HostPriceTable, time.Duration, error) { - logger := w.logger.With("host", hostKey).With("hostIP", hostIP).With("timeout", timeout) - - // prepare a helper to create a context for scanning - timeoutCtx := func() (context.Context, context.CancelFunc) { - if timeout > 0 { - return context.WithTimeout(ctx, timeout) - } - return ctx, func() {} - } - - // prepare a helper for scanning - scan := func() (rhpv2.HostSettings, rhpv3.HostPriceTable, time.Duration, error) { - // fetch the host settings - start := time.Now() - scanCtx, cancel := timeoutCtx() - settings, err := w.rhp2Client.Settings(scanCtx, hostKey, hostIP) - cancel() - if err != nil { - return settings, rhpv3.HostPriceTable{}, time.Since(start), err - } - - // fetch the host pricetable - scanCtx, cancel = timeoutCtx() - pt, err := w.rhp3Client.PriceTableUnpaid(scanCtx, hostKey, settings.SiamuxAddr()) - cancel() - if err != nil { - return settings, rhpv3.HostPriceTable{}, time.Since(start), err - } - return settings, pt.HostPriceTable, time.Since(start), nil - } - - // resolve host ip, don't scan if the host is on a private network or if it - // resolves to more than two addresses of the same type, if it fails for - // another reason the host scan won't have subnets - resolvedAddresses, private, err := utils.ResolveHostIP(ctx, hostIP) - if errors.Is(err, utils.ErrHostTooManyAddresses) { - return rhpv2.HostSettings{}, rhpv3.HostPriceTable{}, 0, err - } else if private && !w.allowPrivateIPs { - return rhpv2.HostSettings{}, rhpv3.HostPriceTable{}, 0, api.ErrHostOnPrivateNetwork - } - - // scan: first try - settings, pt, duration, err := scan() - if err != nil { - logger = logger.With(zap.Error(err)) - - // scan: second try - select { - case <-ctx.Done(): - return rhpv2.HostSettings{}, rhpv3.HostPriceTable{}, 0, context.Cause(ctx) - case <-time.After(time.Second): - } - settings, pt, duration, err = scan() - - logger = logger.With("elapsed", duration).With(zap.Error(err)) - if err == nil { - logger.Info("successfully scanned host on second try") - } else if !isErrHostUnreachable(err) { - logger.Infow("failed to scan host") - } - } - - // check if the scan failed due to a shutdown - shouldn't be necessary but - // just in case since recording a failed scan might have serious - // repercussions - select { - case <-ctx.Done(): - return rhpv2.HostSettings{}, rhpv3.HostPriceTable{}, 0, context.Cause(ctx) - default: - } - - // record host scan - make sure this is interrupted by the request ctx and - // not the context with the timeout used to time out the scan itself. - // Otherwise scans that time out won't be recorded. - scanErr := w.bus.RecordHostScans(ctx, []api.HostScan{ - { - HostKey: hostKey, - PriceTable: pt, - ResolvedAddresses: resolvedAddresses, - - // NOTE: A scan is considered successful if both fetching the price - // table and the settings succeeded. Right now scanning can't fail - // due to a reason that is our fault unless we are offline. If that - // changes, we should adjust this code to account for that. - Success: err == nil, - Settings: settings, - Timestamp: time.Now(), - }, - }) - if scanErr != nil { - logger.Errorw("failed to record host scan", zap.Error(scanErr)) - } - logger.With(zap.Error(err)).Debugw("scanned host", "success", err == nil) - return settings, pt, duration, err -} - -func isErrHostUnreachable(err error) bool { - return utils.IsErr(err, os.ErrDeadlineExceeded) || - utils.IsErr(err, context.DeadlineExceeded) || - utils.IsErr(err, api.ErrHostOnPrivateNetwork) || - utils.IsErr(err, errors.New("no route to host")) || - utils.IsErr(err, errors.New("no such host")) || - utils.IsErr(err, errors.New("connection refused")) || - utils.IsErr(err, errors.New("unknown port")) || - utils.IsErr(err, errors.New("cannot assign requested address")) -} - func (w *Worker) headObject(ctx context.Context, bucket, key string, onlyMetadata bool, opts api.HeadObjectOptions) (*api.HeadObjectResponse, api.Object, error) { // fetch object res, err := w.bus.Object(ctx, bucket, key, api.GetObjectOptions{ From d76fde44d372c2e5a480683ef91615ecbf82985c Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 31 Oct 2024 10:51:46 +0100 Subject: [PATCH 266/708] bus: address comments --- api/bus.go | 4 +--- autopilot/autopilot.go | 2 +- autopilot/contractor/contractor.go | 6 +++--- autopilot/scanner/scanner.go | 6 +++--- autopilot/scanner/scanner_test.go | 6 +++--- bus/bus.go | 8 ++++---- bus/client/client.go | 9 ++++----- bus/routes.go | 18 +++++++++++++----- internal/test/e2e/cluster_test.go | 6 +----- internal/test/e2e/interactions_test.go | 2 +- 10 files changed, 34 insertions(+), 33 deletions(-) diff --git a/api/bus.go b/api/bus.go index 1814e7237..929cec02d 100644 --- a/api/bus.go +++ b/api/bus.go @@ -87,9 +87,7 @@ type ( // HostScanRequest is the request type for the /host/scan endpoint. HostScanRequest struct { - HostKey types.PublicKey `json:"hostKey"` - HostIP string `json:"hostIP"` - Timeout DurationMS `json:"timeout"` + Timeout DurationMS `json:"timeout"` } // HostScanResponse is the response type for the /host/scan endpoint. diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index a35601965..097f0f3d6 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -74,7 +74,7 @@ type Bus interface { SlabsForMigration(ctx context.Context, healthCutoff float64, set string, limit int) ([]api.UnhealthySlab, error) // scanner - ScanHost(ctx context.Context, hostKey types.PublicKey, hostIP string, timeout time.Duration) (resp api.HostScanResponse, err error) + ScanHost(ctx context.Context, hostKey types.PublicKey, timeout time.Duration) (resp api.HostScanResponse, err error) // settings GougingSettings(ctx context.Context) (gs api.GougingSettings, err error) diff --git a/autopilot/contractor/contractor.go b/autopilot/contractor/contractor.go index 99248b122..9c982816b 100644 --- a/autopilot/contractor/contractor.go +++ b/autopilot/contractor/contractor.go @@ -101,7 +101,7 @@ type Bus interface { } type HostScanner interface { - ScanHost(ctx context.Context, hostKey types.PublicKey, hostIP string, timeout time.Duration) (api.HostScanResponse, error) + ScanHost(ctx context.Context, hostKey types.PublicKey, timeout time.Duration) (api.HostScanResponse, error) } type Worker interface { @@ -194,7 +194,7 @@ func (c *Contractor) formContract(ctx *mCtx, hs HostScanner, w Worker, host api. hk := host.PublicKey // fetch host settings - scan, err := hs.ScanHost(ctx, hk, host.NetAddress, 0) + scan, err := hs.ScanHost(ctx, hk, 0) if err != nil { logger.Infow(err.Error(), "hk", hk) return api.ContractMetadata{}, true, err @@ -715,7 +715,7 @@ func refreshPriceTable(ctx context.Context, hs HostScanner, w Worker, host *api. // scan the host if it hasn't been successfully scanned before, which // can occur when contracts are added manually to the bus or database if !host.Scanned { - scan, err := hs.ScanHost(ctx, host.PublicKey, host.NetAddress, timeoutHostScan) + scan, err := hs.ScanHost(ctx, host.PublicKey, timeoutHostScan) if err != nil { return fmt.Errorf("failed to scan host %v: %w", host.PublicKey, err) } diff --git a/autopilot/scanner/scanner.go b/autopilot/scanner/scanner.go index 8de5e85e4..e7a9dbd24 100644 --- a/autopilot/scanner/scanner.go +++ b/autopilot/scanner/scanner.go @@ -19,7 +19,7 @@ const ( type ( HostScanner interface { - ScanHost(ctx context.Context, hostKey types.PublicKey, hostIP string, timeout time.Duration) (api.HostScanResponse, error) + ScanHost(ctx context.Context, hostKey types.PublicKey, timeout time.Duration) (api.HostScanResponse, error) } HostStore interface { @@ -28,7 +28,7 @@ type ( } Scanner interface { - Scan(ctx context.Context, w HostScanner, force bool) + Scan(ctx context.Context, hs HostScanner, force bool) Shutdown(ctx context.Context) error Status() (bool, time.Time) UpdateHostsConfig(cfg api.HostsConfig) @@ -164,7 +164,7 @@ func (s *scanner) scanHosts(ctx context.Context, hs HostScanner, cutoff time.Tim return // shutdown } - scan, err := hs.ScanHost(ctx, h.hostKey, h.hostIP, DefaultScanTimeout) + scan, err := hs.ScanHost(ctx, h.hostKey, DefaultScanTimeout) if errors.Is(err, context.Canceled) { return } else if err != nil { diff --git a/autopilot/scanner/scanner_test.go b/autopilot/scanner/scanner_test.go index b41b3691b..edd2f89a3 100644 --- a/autopilot/scanner/scanner_test.go +++ b/autopilot/scanner/scanner_test.go @@ -77,7 +77,7 @@ func (hs *mockHostStore) state() ([]string, []string) { return hs.scans, hs.removals } -type mockBus struct { +type mockHostScanner struct { blockChan chan struct{} hs *mockHostStore @@ -85,7 +85,7 @@ type mockBus struct { scanCount int } -func (w *mockBus) ScanHost(ctx context.Context, hostKey types.PublicKey, hostIP string, _ time.Duration) (api.HostScanResponse, error) { +func (w *mockHostScanner) ScanHost(ctx context.Context, hostKey types.PublicKey, _ time.Duration) (api.HostScanResponse, error) { if w.blockChan != nil { <-w.blockChan } @@ -117,7 +117,7 @@ func TestScanner(t *testing.T) { } // initiate a host scan using a worker that blocks - b := &mockBus{ + b := &mockHostScanner{ blockChan: make(chan struct{}), hs: hs, } diff --git a/bus/bus.go b/bus/bus.go index c52aefbb7..389186bca 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -444,9 +444,9 @@ func (b *Bus) Handler() http.Handler { "PUT /hosts/blocklist": b.hostsBlocklistHandlerPUT, "POST /hosts/pricetables": b.hostsPricetableHandlerPOST, "POST /hosts/remove": b.hostsRemoveHandlerPOST, - "POST /hosts/scan": b.hostsScanHandlerPOST, "GET /host/:hostkey": b.hostsPubkeyHandlerGET, "POST /host/:hostkey/resetlostsectors": b.hostsResetLostSectorsPOST, + "POST /host/:hostkey/scan": b.hostsScanHandlerPOST, "PUT /metric/:key": b.metricsHandlerPUT, "GET /metric/:key": b.metricsHandlerGET, @@ -1073,9 +1073,9 @@ func isErrHostUnreachable(err error) bool { return utils.IsErr(err, os.ErrDeadlineExceeded) || utils.IsErr(err, context.DeadlineExceeded) || utils.IsErr(err, api.ErrHostOnPrivateNetwork) || - utils.IsErr(err, errors.New("no route to host")) || - utils.IsErr(err, errors.New("no such host")) || - utils.IsErr(err, errors.New("connection refused")) || + utils.IsErr(err, utils.ErrNoRouteToHost) || + utils.IsErr(err, utils.ErrNoSuchHost) || + utils.IsErr(err, utils.ErrConnectionRefused) || utils.IsErr(err, errors.New("unknown port")) || utils.IsErr(err, errors.New("cannot assign requested address")) } diff --git a/bus/client/client.go b/bus/client/client.go index b41ba9d4e..15583a5a5 100644 --- a/bus/client/client.go +++ b/bus/client/client.go @@ -2,6 +2,7 @@ package client import ( "context" + "fmt" "time" "go.sia.tech/core/types" @@ -30,11 +31,9 @@ func (c *Client) Backup(ctx context.Context, database, dstPath string) (err erro return } -// ScanHost scans a host, returning its current settings. -func (c *Client) ScanHost(ctx context.Context, hostKey types.PublicKey, hostIP string, timeout time.Duration) (resp api.HostScanResponse, err error) { - err = c.c.WithContext(ctx).POST("/hosts/scan", api.HostScanRequest{ - HostKey: hostKey, - HostIP: hostIP, +// ScanHost scans a host, returning its current settings and prices. +func (c *Client) ScanHost(ctx context.Context, hostKey types.PublicKey, timeout time.Duration) (resp api.HostScanResponse, err error) { + err = c.c.WithContext(ctx).POST(fmt.Sprintf("/host/%s/scan", hostKey), api.HostScanRequest{ Timeout: api.DurationMS(timeout), }, &resp) return diff --git a/bus/routes.go b/bus/routes.go index b4781230f..50881ca35 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -582,23 +582,31 @@ func (b *Bus) hostsPubkeyHandlerGET(jc jape.Context) { } func (b *Bus) hostsScanHandlerPOST(jc jape.Context) { - ctx := jc.Request.Context() + // only scan hosts if we are online + if len(b.s.Peers()) == 0 { + jc.Error(errors.New("not connected to the internet"), http.StatusServiceUnavailable) + return + } // decode the request + var hk types.PublicKey + if jc.DecodeParam("hostkey", hk) != nil { + return + } var rsr api.HostScanRequest if jc.Decode(&rsr) != nil { return } - // only scan hosts if we are online - if len(b.s.Peers()) == 0 { - jc.Error(errors.New("not connected to the internet"), http.StatusServiceUnavailable) + // fetch host + h, err := b.store.Host(jc.Request.Context(), hk) + if jc.Check("failed to fetch host", err) != nil { return } // scan host var errStr string - settings, priceTable, elapsed, err := b.scanHost(ctx, time.Duration(rsr.Timeout), rsr.HostKey, rsr.HostIP) + settings, priceTable, elapsed, err := b.scanHost(jc.Request.Context(), time.Duration(rsr.Timeout), hk, h.NetAddress) if err != nil { errStr = err.Error() } diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 843f1ca61..32526785a 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -2525,11 +2525,7 @@ func TestHostScan(t *testing.T) { hosts := cluster.AddHosts(2) host := hosts[0] - settings, err := host.RHPv2Settings() - tt.OK(err) - hk := host.PublicKey() - hostIP := settings.NetAddress assertHost := func(ls time.Time, lss, slss bool, ts uint64) { t.Helper() @@ -2555,7 +2551,7 @@ func TestHostScan(t *testing.T) { // between scans time.Sleep(time.Millisecond) - resp, err := b.ScanHost(context.Background(), hk, hostIP, 10*time.Second) + resp, err := b.ScanHost(context.Background(), hk, 10*time.Second) tt.OK(err) if resp.ScanError != "" { return errors.New(resp.ScanError) diff --git a/internal/test/e2e/interactions_test.go b/internal/test/e2e/interactions_test.go index 3ca78d0ee..c1b816214 100644 --- a/internal/test/e2e/interactions_test.go +++ b/internal/test/e2e/interactions_test.go @@ -73,7 +73,7 @@ func TestInteractions(t *testing.T) { }) // scan the host manually - tt.OKAll(b.ScanHost(context.Background(), h1.PublicKey(), h.NetAddress, 0)) + tt.OKAll(b.ScanHost(context.Background(), h1.PublicKey(), 0)) time.Sleep(3 * testBusFlushInterval) // fetch the host From bf8cbeb54b71047e8440535a93be9799195198f0 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 31 Oct 2024 12:20:41 +0100 Subject: [PATCH 267/708] bus: fix decodeparam --- bus/routes.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bus/routes.go b/bus/routes.go index 50881ca35..b64d50564 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -590,7 +590,7 @@ func (b *Bus) hostsScanHandlerPOST(jc jape.Context) { // decode the request var hk types.PublicKey - if jc.DecodeParam("hostkey", hk) != nil { + if jc.DecodeParam("hostkey", &hk) != nil { return } var rsr api.HostScanRequest From a935178e3f366d6f43e61aa6dd215bb0eff0d5ff Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 31 Oct 2024 14:16:17 +0100 Subject: [PATCH 268/708] bus: fix build --- bus/bus.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bus/bus.go b/bus/bus.go index 389186bca..ebbe6394f 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -910,7 +910,7 @@ func (b *Bus) scanHost(ctx context.Context, timeout time.Duration, hostKey types // fetch the host settings start := time.Now() scanCtx, cancel := timeoutCtx() - settings, err := b.rhp2.Settings(scanCtx, hostKey, hostIP) + settings, err := b.rhp2Client.Settings(scanCtx, hostKey, hostIP) cancel() if err != nil { return settings, rhpv3.HostPriceTable{}, time.Since(start), err @@ -918,7 +918,7 @@ func (b *Bus) scanHost(ctx context.Context, timeout time.Duration, hostKey types // fetch the host pricetable scanCtx, cancel = timeoutCtx() - pt, err := b.rhp3.PriceTableUnpaid(scanCtx, hostKey, settings.SiamuxAddr()) + pt, err := b.rhp3Client.PriceTableUnpaid(scanCtx, hostKey, settings.SiamuxAddr()) cancel() if err != nil { return settings, rhpv3.HostPriceTable{}, time.Since(start), err From cd83b896e64fe1d7832331e6e4824b71154ee8fd Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 1 Nov 2024 08:54:36 +0100 Subject: [PATCH 269/708] publish.yml: use common workflow --- .github/workflows/publish.yml | 247 ++------------------------------ docker/Dockerfile => Dockerfile | 0 README.md | 2 +- 3 files changed, 11 insertions(+), 238 deletions(-) rename docker/Dockerfile => Dockerfile (100%) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 2d647f9aa..f8a555bef 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -13,242 +13,15 @@ on: concurrency: group: ${{ github.workflow }} - -env: - REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }} + cancel-in-progress: false jobs: - docker: - runs-on: ubuntu-latest - permissions: - packages: write - steps: - - uses: actions/checkout@v4 - - uses: docker/login-action@v3 # helps with rate limit issues - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - uses: docker/setup-qemu-action@v3 - - uses: docker/setup-buildx-action@v3 - - uses: docker/metadata-action@v4 - name: Generate tags - id: meta - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - tags: | - type=ref,event=branch - type=sha,prefix= - type=semver,pattern={{version}} - - uses: docker/build-push-action@v4 - with: - context: . - file: ./docker/Dockerfile - platforms: linux/amd64,linux/arm64 - push: true - tags: ${{ steps.meta.outputs.tags }} - build-linux: - runs-on: ubuntu-latest - strategy: - matrix: - arch: [amd64, arm64] - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 - with: - go-version: "stable" - - name: Setup - run: | - go generate ./... - if [ ${{ matrix.arch }} == "arm64" ]; then - sudo apt update - sudo apt install -y gcc-aarch64-linux-gnu - echo "CC=aarch64-linux-gnu-gcc" >> $GITHUB_ENV - fi - - name: Build ${{ matrix.arch }} - env: - CGO_ENABLED: 1 - GOOS: linux - GOARCH: ${{ matrix.arch }} - run: | - mkdir -p release - ZIP_OUTPUT=release/renterd_${GOOS}_${GOARCH}.zip - go build -trimpath -o bin/ -tags='netgo timetzdata' -a -ldflags '-s -w -linkmode external -extldflags "-static"' ./cmd/renterd - cp README.md LICENSE bin/ - zip -qj $ZIP_OUTPUT bin/* - - uses: actions/upload-artifact@v4 - with: - name: renterd_linux_${{ matrix.arch }} - path: release/* - build-mac: - runs-on: macos-latest - strategy: - matrix: - arch: [amd64, arm64] - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 - with: - go-version: "stable" - - name: Setup Notarization - env: - APPLE_CERT_ID: ${{ secrets.APPLE_CERT_ID }} - APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }} - APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }} - APPLE_KEY_B64: ${{ secrets.APPLE_KEY_B64 }} - APPLE_CERT_B64: ${{ secrets.APPLE_CERT_B64 }} - APPLE_CERT_PASSWORD: ${{ secrets.APPLE_CERT_PASSWORD }} - APPLE_KEYCHAIN_PASSWORD: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }} - run: | - # extract apple cert - APPLE_CERT_PATH=$RUNNER_TEMP/apple_cert.p12 - KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db - echo -n "$APPLE_CERT_B64" | base64 --decode --output $APPLE_CERT_PATH - - # extract apple key - mkdir -p ~/private_keys - APPLE_API_KEY_PATH=~/private_keys/AuthKey_$APPLE_API_KEY.p8 - echo -n "$APPLE_KEY_B64" | base64 --decode --output $APPLE_API_KEY_PATH - - # create temp keychain - security create-keychain -p "$APPLE_KEYCHAIN_PASSWORD" $KEYCHAIN_PATH - security default-keychain -s $KEYCHAIN_PATH - security set-keychain-settings -lut 21600 $KEYCHAIN_PATH - security unlock-keychain -p "$APPLE_KEYCHAIN_PASSWORD" $KEYCHAIN_PATH - - # import keychain - security import $APPLE_CERT_PATH -P $APPLE_CERT_PASSWORD -A -t cert -f pkcs12 -k $KEYCHAIN_PATH - security find-identity -v $KEYCHAIN_PATH -p codesigning - security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $APPLE_KEYCHAIN_PASSWORD $KEYCHAIN_PATH - - # generate - go generate ./... - - name: Build ${{ matrix.arch }} - env: - APPLE_CERT_ID: ${{ secrets.APPLE_CERT_ID }} - APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }} - APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }} - APPLE_KEY_B64: ${{ secrets.APPLE_KEY_B64 }} - APPLE_CERT_B64: ${{ secrets.APPLE_CERT_B64 }} - APPLE_CERT_PASSWORD: ${{ secrets.APPLE_CERT_PASSWORD }} - APPLE_KEYCHAIN_PASSWORD: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }} - CGO_ENABLED: 1 - GOOS: darwin - GOARCH: ${{ matrix.arch }} - run: | - mkdir -p release - ZIP_OUTPUT=release/renterd${{ env.ZIP_OUTPUT_SUFFIX }}_${GOOS}_${GOARCH}.zip - go build -trimpath -o bin/ -tags='netgo timetzdata' -a -ldflags '-s -w' ./cmd/renterd - cp README.md LICENSE bin/ - /usr/bin/codesign --deep -f -v --timestamp -o runtime,library -s $APPLE_CERT_ID bin/renterd - ditto -ck bin $ZIP_OUTPUT - xcrun notarytool submit -k ~/private_keys/AuthKey_$APPLE_API_KEY.p8 -d $APPLE_API_KEY -i $APPLE_API_ISSUER --wait --timeout 10m $ZIP_OUTPUT - - uses: actions/upload-artifact@v4 - with: - name: renterd_darwin_${{ matrix.arch }} - path: release/* - build-windows: - runs-on: windows-latest - strategy: - matrix: - arch: [amd64] - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 - with: - go-version: "stable" - - name: Setup - shell: bash - run: | - dotnet tool install --global AzureSignTool - go generate ./... - - name: Build ${{ matrix.arch }} - env: - CGO_ENABLED: 1 - GOOS: windows - GOARCH: ${{ matrix.arch }} - shell: bash - run: | - mkdir -p release - ZIP_OUTPUT=release/renterd${{ env.ZIP_OUTPUT_SUFFIX }}_${GOOS}_${GOARCH}.zip - go build -trimpath -o bin/ -tags='netgo timetzdata' -a -ldflags '-s -w -linkmode external -extldflags "-static"' ./cmd/renterd - azuresigntool sign -kvu "${{ secrets.AZURE_KEY_VAULT_URI }}" -kvi "${{ secrets.AZURE_CLIENT_ID }}" -kvt "${{ secrets.AZURE_TENANT_ID }}" -kvs "${{ secrets.AZURE_CLIENT_SECRET }}" -kvc ${{ secrets.AZURE_CERT_NAME }} -tr http://timestamp.digicert.com -v bin/renterd.exe - cp README.md LICENSE bin/ - 7z a $ZIP_OUTPUT bin/* - - uses: actions/upload-artifact@v4 - with: - name: renterd_windows_${{ matrix.arch }} - path: release/* - - combine-release-assets: - runs-on: ubuntu-latest - needs: [build-linux, build-mac, build-windows] - steps: - - name: Merge Artifacts - uses: actions/upload-artifact/merge@v4 - with: - name: renterd - - dispatch-homebrew: # only runs on full releases - if: startsWith(github.ref, 'refs/tags/v') && !contains(github.ref, '-') - needs: [build-mac] - runs-on: ubuntu-latest - steps: - - name: Extract Tag Name - id: get_tag - run: echo "tag_name=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - - - name: Dispatch - uses: peter-evans/repository-dispatch@v3 - with: - token: ${{ secrets.PAT_REPOSITORY_DISPATCH }} - repository: siafoundation/homebrew-sia - event-type: release-tagged - client-payload: > - { - "description": "Renterd: The Next-Gen Sia Renter", - "tag": "${{ env.tag_name }}", - "project": "renterd", - "workflow_id": "${{ github.run_id }}" - } - dispatch-linux: # run on full releases, release candidates, and master branch - if: startsWith(github.ref, 'refs/tags/v') || endsWith(github.ref, 'master') - needs: [build-linux] - runs-on: ubuntu-latest - steps: - - name: Build Dispatch Payload - id: get_payload - uses: actions/github-script@v7 - with: - script: | - const isRelease = context.ref.startsWith('refs/tags/v'), - isBeta = isRelease && context.ref.includes('-beta'), - tag = isRelease ? context.ref.replace('refs/tags/', '') : 'master'; - - let component = 'nightly'; - if (isBeta) { - component = 'beta'; - } else if (isRelease) { - component = 'main'; - } - - return { - description: "renterd: The Next-Gen Sia Renter", - tag: tag, - project: "renterd", - workflow_id: context.runId, - component: component - }; - - - name: Dispatch - uses: peter-evans/repository-dispatch@v3 - with: - token: ${{ secrets.PAT_REPOSITORY_DISPATCH }} - repository: siafoundation/linux - event-type: release-tagged - client-payload: ${{ steps.get_payload.outputs.result }} + publish: + uses: SiaFoundation/workflows/.github/workflows/go-publish.yml@master + secrets: inherit + with: + linux-build-args: -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w -linkmode external -extldflags "-static"' + windows-build-args: -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w -linkmode external -extldflags "-static"' + macos-build-args: -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w' + cgo-enabled: 1 + project: renterd diff --git a/docker/Dockerfile b/Dockerfile similarity index 100% rename from docker/Dockerfile rename to Dockerfile diff --git a/README.md b/README.md index e631c84ec..865500cc3 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ `renterd` is an advanced Sia renter engineered by the Sia Foundation. Designed to cater to both casual users seeking straightforward data storage and -developers requiring a robust API for building apps on Sia. +developers requiring a robust API for building apps on Sia ## Overview From ef7ffe27b1f97ca6aaea756c6c75d87cbe7dc5ef Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 1 Nov 2024 09:12:15 +0100 Subject: [PATCH 270/708] publish.yml: add new inputs --- .github/workflows/publish.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f8a555bef..76fe2dda6 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -25,3 +25,5 @@ jobs: macos-build-args: -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w' cgo-enabled: 1 project: renterd + project-desc: "renterd: The Next-Gen Sia Renter" + version-tag: ${{ github.ref_name }} From 4c03bcab8ebae6858f7ff3645179d550b46653b8 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 1 Nov 2024 09:15:35 +0100 Subject: [PATCH 271/708] test.yml: publish on test --- .github/workflows/test.yml | 172 ++++++++++++++++++++----------------- 1 file changed, 92 insertions(+), 80 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c2f050931..5c9dd00a0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,83 +7,95 @@ on: - master jobs: - analyze: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Lint - uses: golangci/golangci-lint-action@v3 - with: - args: --timeout=30m - - name: Jape Analyzer - uses: SiaFoundation/action-golang-analysis@HEAD - with: - analyzers: | - go.sia.tech/jape.Analyzer@master - directories: | - autopilot - bus bus/client - worker worker/client - flags: | - -japecheck.types=false - test: - needs: analyze - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - go-version: ["1.22", "1.23"] - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Setup Go - uses: actions/setup-go@v5 - with: - go-version: ${{ matrix.go-version }} - - uses: docker/login-action@v3 # helps with rate limit issues - if: matrix.os == 'ubuntu-latest' && github.actor != 'dependabot[bot]' - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - name: Configure Windows - if: matrix.os == 'windows-latest' - run: git config --global core.autocrlf false # fixes go lint fmt error - - name: Configure MySQL - if: matrix.os == 'ubuntu-latest' - uses: mirromutth/mysql-action@v1.1 - with: - host port: 3800 - mysql version: "8" - mysql root password: test - - name: Test Stores - uses: n8maninger/action-golang-test@v1 - with: - args: "-race;-short;-tags=netgo" - - name: Test Stores - MySQL - if: matrix.os == 'ubuntu-latest' - uses: n8maninger/action-golang-test@v1 - env: - RENTERD_DB_URI: 127.0.0.1:3800 - RENTERD_DB_USER: root - RENTERD_DB_PASSWORD: test - with: - package: "./stores" - args: "-race;-short;-tags=netgo" - - name: Test Integration - uses: n8maninger/action-golang-test@v1 - with: - package: "./internal/test/e2e/..." - args: "-failfast;-race;-timeout=60m;-tags=netgo" - - name: Test Integration - MySQL - if: matrix.os == 'ubuntu-latest' - uses: n8maninger/action-golang-test@v1 - env: - RENTERD_DB_URI: 127.0.0.1:3800 - RENTERD_DB_USER: root - RENTERD_DB_PASSWORD: test - with: - package: "./internal/test/e2e/..." - args: "-failfast;-race;-timeout=60m;-tags=netgo" - - name: Build - run: go build -o bin/ -tags='netgo timetzdata' ./cmd/renterd + publish: + uses: SiaFoundation/workflows/.github/workflows/go-publish.yml@chris/homebrew + secrets: inherit + with: + linux-build-args: -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w -linkmode external -extldflags "-static"' + windows-build-args: -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w -linkmode external -extldflags "-static"' + macos-build-args: -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w' + cgo-enabled: 1 + project: renterd + project-desc: "renterd: The Next-Gen Sia Renter" + version-tag: ${{ github.ref_name }} +# analyze: +# runs-on: ubuntu-latest +# steps: +# - name: Checkout +# uses: actions/checkout@v4 +# - name: Lint +# uses: golangci/golangci-lint-action@v3 +# with: +# args: --timeout=30m +# - name: Jape Analyzer +# uses: SiaFoundation/action-golang-analysis@HEAD +# with: +# analyzers: | +# go.sia.tech/jape.Analyzer@master +# directories: | +# autopilot +# bus bus/client +# worker worker/client +# flags: | +# -japecheck.types=false +# test: +# needs: analyze +# runs-on: ${{ matrix.os }} +# strategy: +# matrix: +# os: [ubuntu-latest, macos-latest, windows-latest] +# go-version: ["1.22", "1.23"] +# steps: +# - name: Checkout +# uses: actions/checkout@v4 +# - name: Setup Go +# uses: actions/setup-go@v5 +# with: +# go-version: ${{ matrix.go-version }} +# - uses: docker/login-action@v3 # helps with rate limit issues +# if: matrix.os == 'ubuntu-latest' && github.actor != 'dependabot[bot]' +# with: +# username: ${{ secrets.DOCKER_HUB_USERNAME }} +# password: ${{ secrets.DOCKER_HUB_TOKEN }} +# - name: Configure Windows +# if: matrix.os == 'windows-latest' +# run: git config --global core.autocrlf false # fixes go lint fmt error +# - name: Configure MySQL +# if: matrix.os == 'ubuntu-latest' +# uses: mirromutth/mysql-action@v1.1 +# with: +# host port: 3800 +# mysql version: "8" +# mysql root password: test +# - name: Test Stores +# uses: n8maninger/action-golang-test@v1 +# with: +# args: "-race;-short;-tags=netgo" +# - name: Test Stores - MySQL +# if: matrix.os == 'ubuntu-latest' +# uses: n8maninger/action-golang-test@v1 +# env: +# RENTERD_DB_URI: 127.0.0.1:3800 +# RENTERD_DB_USER: root +# RENTERD_DB_PASSWORD: test +# with: +# package: "./stores" +# args: "-race;-short;-tags=netgo" +# - name: Test Integration +# uses: n8maninger/action-golang-test@v1 +# with: +# package: "./internal/test/e2e/..." +# args: "-failfast;-race;-timeout=60m;-tags=netgo" +# - name: Test Integration - MySQL +# if: matrix.os == 'ubuntu-latest' +# uses: n8maninger/action-golang-test@v1 +# env: +# RENTERD_DB_URI: 127.0.0.1:3800 +# RENTERD_DB_USER: root +# RENTERD_DB_PASSWORD: test +# with: +# package: "./internal/test/e2e/..." +# args: "-failfast;-race;-timeout=60m;-tags=netgo" +# - name: Build +# run: go build -o bin/ -tags='netgo timetzdata' ./cmd/renterd +# From 316fd675de2241647dd5643041c9f551e9a76604 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 1 Nov 2024 09:19:55 +0100 Subject: [PATCH 272/708] test.yml: test with custom tag --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5c9dd00a0..d40f74ff1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,7 +17,7 @@ jobs: cgo-enabled: 1 project: renterd project-desc: "renterd: The Next-Gen Sia Renter" - version-tag: ${{ github.ref_name }} + version-tag: "v9.9.9" # analyze: # runs-on: ubuntu-latest # steps: From 7308db1e1cbd66a849c9441b426919daf37b1175 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 1 Nov 2024 09:21:23 +0100 Subject: [PATCH 273/708] test.yml: revert changes --- .github/workflows/test.yml | 172 +++++++++++++++++-------------------- 1 file changed, 80 insertions(+), 92 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d40f74ff1..c2f050931 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,95 +7,83 @@ on: - master jobs: - publish: - uses: SiaFoundation/workflows/.github/workflows/go-publish.yml@chris/homebrew - secrets: inherit - with: - linux-build-args: -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w -linkmode external -extldflags "-static"' - windows-build-args: -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w -linkmode external -extldflags "-static"' - macos-build-args: -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w' - cgo-enabled: 1 - project: renterd - project-desc: "renterd: The Next-Gen Sia Renter" - version-tag: "v9.9.9" -# analyze: -# runs-on: ubuntu-latest -# steps: -# - name: Checkout -# uses: actions/checkout@v4 -# - name: Lint -# uses: golangci/golangci-lint-action@v3 -# with: -# args: --timeout=30m -# - name: Jape Analyzer -# uses: SiaFoundation/action-golang-analysis@HEAD -# with: -# analyzers: | -# go.sia.tech/jape.Analyzer@master -# directories: | -# autopilot -# bus bus/client -# worker worker/client -# flags: | -# -japecheck.types=false -# test: -# needs: analyze -# runs-on: ${{ matrix.os }} -# strategy: -# matrix: -# os: [ubuntu-latest, macos-latest, windows-latest] -# go-version: ["1.22", "1.23"] -# steps: -# - name: Checkout -# uses: actions/checkout@v4 -# - name: Setup Go -# uses: actions/setup-go@v5 -# with: -# go-version: ${{ matrix.go-version }} -# - uses: docker/login-action@v3 # helps with rate limit issues -# if: matrix.os == 'ubuntu-latest' && github.actor != 'dependabot[bot]' -# with: -# username: ${{ secrets.DOCKER_HUB_USERNAME }} -# password: ${{ secrets.DOCKER_HUB_TOKEN }} -# - name: Configure Windows -# if: matrix.os == 'windows-latest' -# run: git config --global core.autocrlf false # fixes go lint fmt error -# - name: Configure MySQL -# if: matrix.os == 'ubuntu-latest' -# uses: mirromutth/mysql-action@v1.1 -# with: -# host port: 3800 -# mysql version: "8" -# mysql root password: test -# - name: Test Stores -# uses: n8maninger/action-golang-test@v1 -# with: -# args: "-race;-short;-tags=netgo" -# - name: Test Stores - MySQL -# if: matrix.os == 'ubuntu-latest' -# uses: n8maninger/action-golang-test@v1 -# env: -# RENTERD_DB_URI: 127.0.0.1:3800 -# RENTERD_DB_USER: root -# RENTERD_DB_PASSWORD: test -# with: -# package: "./stores" -# args: "-race;-short;-tags=netgo" -# - name: Test Integration -# uses: n8maninger/action-golang-test@v1 -# with: -# package: "./internal/test/e2e/..." -# args: "-failfast;-race;-timeout=60m;-tags=netgo" -# - name: Test Integration - MySQL -# if: matrix.os == 'ubuntu-latest' -# uses: n8maninger/action-golang-test@v1 -# env: -# RENTERD_DB_URI: 127.0.0.1:3800 -# RENTERD_DB_USER: root -# RENTERD_DB_PASSWORD: test -# with: -# package: "./internal/test/e2e/..." -# args: "-failfast;-race;-timeout=60m;-tags=netgo" -# - name: Build -# run: go build -o bin/ -tags='netgo timetzdata' ./cmd/renterd -# + analyze: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Lint + uses: golangci/golangci-lint-action@v3 + with: + args: --timeout=30m + - name: Jape Analyzer + uses: SiaFoundation/action-golang-analysis@HEAD + with: + analyzers: | + go.sia.tech/jape.Analyzer@master + directories: | + autopilot + bus bus/client + worker worker/client + flags: | + -japecheck.types=false + test: + needs: analyze + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + go-version: ["1.22", "1.23"] + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Go + uses: actions/setup-go@v5 + with: + go-version: ${{ matrix.go-version }} + - uses: docker/login-action@v3 # helps with rate limit issues + if: matrix.os == 'ubuntu-latest' && github.actor != 'dependabot[bot]' + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} + - name: Configure Windows + if: matrix.os == 'windows-latest' + run: git config --global core.autocrlf false # fixes go lint fmt error + - name: Configure MySQL + if: matrix.os == 'ubuntu-latest' + uses: mirromutth/mysql-action@v1.1 + with: + host port: 3800 + mysql version: "8" + mysql root password: test + - name: Test Stores + uses: n8maninger/action-golang-test@v1 + with: + args: "-race;-short;-tags=netgo" + - name: Test Stores - MySQL + if: matrix.os == 'ubuntu-latest' + uses: n8maninger/action-golang-test@v1 + env: + RENTERD_DB_URI: 127.0.0.1:3800 + RENTERD_DB_USER: root + RENTERD_DB_PASSWORD: test + with: + package: "./stores" + args: "-race;-short;-tags=netgo" + - name: Test Integration + uses: n8maninger/action-golang-test@v1 + with: + package: "./internal/test/e2e/..." + args: "-failfast;-race;-timeout=60m;-tags=netgo" + - name: Test Integration - MySQL + if: matrix.os == 'ubuntu-latest' + uses: n8maninger/action-golang-test@v1 + env: + RENTERD_DB_URI: 127.0.0.1:3800 + RENTERD_DB_USER: root + RENTERD_DB_PASSWORD: test + with: + package: "./internal/test/e2e/..." + args: "-failfast;-race;-timeout=60m;-tags=netgo" + - name: Build + run: go build -o bin/ -tags='netgo timetzdata' ./cmd/renterd From 49710569e7c568d34b2497af2f6dfb625595850b Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 1 Nov 2024 08:54:36 +0100 Subject: [PATCH 274/708] publish.yml: use common workflow --- .github/workflows/publish.yml | 247 ++------------------------------ docker/Dockerfile => Dockerfile | 0 README.md | 2 +- 3 files changed, 11 insertions(+), 238 deletions(-) rename docker/Dockerfile => Dockerfile (100%) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 2d647f9aa..f8a555bef 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -13,242 +13,15 @@ on: concurrency: group: ${{ github.workflow }} - -env: - REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }} + cancel-in-progress: false jobs: - docker: - runs-on: ubuntu-latest - permissions: - packages: write - steps: - - uses: actions/checkout@v4 - - uses: docker/login-action@v3 # helps with rate limit issues - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - uses: docker/setup-qemu-action@v3 - - uses: docker/setup-buildx-action@v3 - - uses: docker/metadata-action@v4 - name: Generate tags - id: meta - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - tags: | - type=ref,event=branch - type=sha,prefix= - type=semver,pattern={{version}} - - uses: docker/build-push-action@v4 - with: - context: . - file: ./docker/Dockerfile - platforms: linux/amd64,linux/arm64 - push: true - tags: ${{ steps.meta.outputs.tags }} - build-linux: - runs-on: ubuntu-latest - strategy: - matrix: - arch: [amd64, arm64] - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 - with: - go-version: "stable" - - name: Setup - run: | - go generate ./... - if [ ${{ matrix.arch }} == "arm64" ]; then - sudo apt update - sudo apt install -y gcc-aarch64-linux-gnu - echo "CC=aarch64-linux-gnu-gcc" >> $GITHUB_ENV - fi - - name: Build ${{ matrix.arch }} - env: - CGO_ENABLED: 1 - GOOS: linux - GOARCH: ${{ matrix.arch }} - run: | - mkdir -p release - ZIP_OUTPUT=release/renterd_${GOOS}_${GOARCH}.zip - go build -trimpath -o bin/ -tags='netgo timetzdata' -a -ldflags '-s -w -linkmode external -extldflags "-static"' ./cmd/renterd - cp README.md LICENSE bin/ - zip -qj $ZIP_OUTPUT bin/* - - uses: actions/upload-artifact@v4 - with: - name: renterd_linux_${{ matrix.arch }} - path: release/* - build-mac: - runs-on: macos-latest - strategy: - matrix: - arch: [amd64, arm64] - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 - with: - go-version: "stable" - - name: Setup Notarization - env: - APPLE_CERT_ID: ${{ secrets.APPLE_CERT_ID }} - APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }} - APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }} - APPLE_KEY_B64: ${{ secrets.APPLE_KEY_B64 }} - APPLE_CERT_B64: ${{ secrets.APPLE_CERT_B64 }} - APPLE_CERT_PASSWORD: ${{ secrets.APPLE_CERT_PASSWORD }} - APPLE_KEYCHAIN_PASSWORD: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }} - run: | - # extract apple cert - APPLE_CERT_PATH=$RUNNER_TEMP/apple_cert.p12 - KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db - echo -n "$APPLE_CERT_B64" | base64 --decode --output $APPLE_CERT_PATH - - # extract apple key - mkdir -p ~/private_keys - APPLE_API_KEY_PATH=~/private_keys/AuthKey_$APPLE_API_KEY.p8 - echo -n "$APPLE_KEY_B64" | base64 --decode --output $APPLE_API_KEY_PATH - - # create temp keychain - security create-keychain -p "$APPLE_KEYCHAIN_PASSWORD" $KEYCHAIN_PATH - security default-keychain -s $KEYCHAIN_PATH - security set-keychain-settings -lut 21600 $KEYCHAIN_PATH - security unlock-keychain -p "$APPLE_KEYCHAIN_PASSWORD" $KEYCHAIN_PATH - - # import keychain - security import $APPLE_CERT_PATH -P $APPLE_CERT_PASSWORD -A -t cert -f pkcs12 -k $KEYCHAIN_PATH - security find-identity -v $KEYCHAIN_PATH -p codesigning - security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $APPLE_KEYCHAIN_PASSWORD $KEYCHAIN_PATH - - # generate - go generate ./... - - name: Build ${{ matrix.arch }} - env: - APPLE_CERT_ID: ${{ secrets.APPLE_CERT_ID }} - APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }} - APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }} - APPLE_KEY_B64: ${{ secrets.APPLE_KEY_B64 }} - APPLE_CERT_B64: ${{ secrets.APPLE_CERT_B64 }} - APPLE_CERT_PASSWORD: ${{ secrets.APPLE_CERT_PASSWORD }} - APPLE_KEYCHAIN_PASSWORD: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }} - CGO_ENABLED: 1 - GOOS: darwin - GOARCH: ${{ matrix.arch }} - run: | - mkdir -p release - ZIP_OUTPUT=release/renterd${{ env.ZIP_OUTPUT_SUFFIX }}_${GOOS}_${GOARCH}.zip - go build -trimpath -o bin/ -tags='netgo timetzdata' -a -ldflags '-s -w' ./cmd/renterd - cp README.md LICENSE bin/ - /usr/bin/codesign --deep -f -v --timestamp -o runtime,library -s $APPLE_CERT_ID bin/renterd - ditto -ck bin $ZIP_OUTPUT - xcrun notarytool submit -k ~/private_keys/AuthKey_$APPLE_API_KEY.p8 -d $APPLE_API_KEY -i $APPLE_API_ISSUER --wait --timeout 10m $ZIP_OUTPUT - - uses: actions/upload-artifact@v4 - with: - name: renterd_darwin_${{ matrix.arch }} - path: release/* - build-windows: - runs-on: windows-latest - strategy: - matrix: - arch: [amd64] - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 - with: - go-version: "stable" - - name: Setup - shell: bash - run: | - dotnet tool install --global AzureSignTool - go generate ./... - - name: Build ${{ matrix.arch }} - env: - CGO_ENABLED: 1 - GOOS: windows - GOARCH: ${{ matrix.arch }} - shell: bash - run: | - mkdir -p release - ZIP_OUTPUT=release/renterd${{ env.ZIP_OUTPUT_SUFFIX }}_${GOOS}_${GOARCH}.zip - go build -trimpath -o bin/ -tags='netgo timetzdata' -a -ldflags '-s -w -linkmode external -extldflags "-static"' ./cmd/renterd - azuresigntool sign -kvu "${{ secrets.AZURE_KEY_VAULT_URI }}" -kvi "${{ secrets.AZURE_CLIENT_ID }}" -kvt "${{ secrets.AZURE_TENANT_ID }}" -kvs "${{ secrets.AZURE_CLIENT_SECRET }}" -kvc ${{ secrets.AZURE_CERT_NAME }} -tr http://timestamp.digicert.com -v bin/renterd.exe - cp README.md LICENSE bin/ - 7z a $ZIP_OUTPUT bin/* - - uses: actions/upload-artifact@v4 - with: - name: renterd_windows_${{ matrix.arch }} - path: release/* - - combine-release-assets: - runs-on: ubuntu-latest - needs: [build-linux, build-mac, build-windows] - steps: - - name: Merge Artifacts - uses: actions/upload-artifact/merge@v4 - with: - name: renterd - - dispatch-homebrew: # only runs on full releases - if: startsWith(github.ref, 'refs/tags/v') && !contains(github.ref, '-') - needs: [build-mac] - runs-on: ubuntu-latest - steps: - - name: Extract Tag Name - id: get_tag - run: echo "tag_name=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - - - name: Dispatch - uses: peter-evans/repository-dispatch@v3 - with: - token: ${{ secrets.PAT_REPOSITORY_DISPATCH }} - repository: siafoundation/homebrew-sia - event-type: release-tagged - client-payload: > - { - "description": "Renterd: The Next-Gen Sia Renter", - "tag": "${{ env.tag_name }}", - "project": "renterd", - "workflow_id": "${{ github.run_id }}" - } - dispatch-linux: # run on full releases, release candidates, and master branch - if: startsWith(github.ref, 'refs/tags/v') || endsWith(github.ref, 'master') - needs: [build-linux] - runs-on: ubuntu-latest - steps: - - name: Build Dispatch Payload - id: get_payload - uses: actions/github-script@v7 - with: - script: | - const isRelease = context.ref.startsWith('refs/tags/v'), - isBeta = isRelease && context.ref.includes('-beta'), - tag = isRelease ? context.ref.replace('refs/tags/', '') : 'master'; - - let component = 'nightly'; - if (isBeta) { - component = 'beta'; - } else if (isRelease) { - component = 'main'; - } - - return { - description: "renterd: The Next-Gen Sia Renter", - tag: tag, - project: "renterd", - workflow_id: context.runId, - component: component - }; - - - name: Dispatch - uses: peter-evans/repository-dispatch@v3 - with: - token: ${{ secrets.PAT_REPOSITORY_DISPATCH }} - repository: siafoundation/linux - event-type: release-tagged - client-payload: ${{ steps.get_payload.outputs.result }} + publish: + uses: SiaFoundation/workflows/.github/workflows/go-publish.yml@master + secrets: inherit + with: + linux-build-args: -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w -linkmode external -extldflags "-static"' + windows-build-args: -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w -linkmode external -extldflags "-static"' + macos-build-args: -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w' + cgo-enabled: 1 + project: renterd diff --git a/docker/Dockerfile b/Dockerfile similarity index 100% rename from docker/Dockerfile rename to Dockerfile diff --git a/README.md b/README.md index b4b69f2b1..a1e37e4d7 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ `renterd` is an advanced Sia renter engineered by the Sia Foundation. Designed to cater to both casual users seeking straightforward data storage and -developers requiring a robust API for building apps on Sia. +developers requiring a robust API for building apps on Sia ## Overview From 5aa59d58a160f495edc1a7f5f4194d026152930c Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 1 Nov 2024 09:12:15 +0100 Subject: [PATCH 275/708] publish.yml: add new inputs --- .github/workflows/publish.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f8a555bef..76fe2dda6 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -25,3 +25,5 @@ jobs: macos-build-args: -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w' cgo-enabled: 1 project: renterd + project-desc: "renterd: The Next-Gen Sia Renter" + version-tag: ${{ github.ref_name }} From 1cc3b12e64155d182f9bf170ad4bb96aba60cffb Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 1 Nov 2024 09:15:35 +0100 Subject: [PATCH 276/708] test.yml: publish on test --- .github/workflows/test.yml | 172 ++++++++++++++++++++----------------- 1 file changed, 92 insertions(+), 80 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c2f050931..5c9dd00a0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,83 +7,95 @@ on: - master jobs: - analyze: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Lint - uses: golangci/golangci-lint-action@v3 - with: - args: --timeout=30m - - name: Jape Analyzer - uses: SiaFoundation/action-golang-analysis@HEAD - with: - analyzers: | - go.sia.tech/jape.Analyzer@master - directories: | - autopilot - bus bus/client - worker worker/client - flags: | - -japecheck.types=false - test: - needs: analyze - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - go-version: ["1.22", "1.23"] - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Setup Go - uses: actions/setup-go@v5 - with: - go-version: ${{ matrix.go-version }} - - uses: docker/login-action@v3 # helps with rate limit issues - if: matrix.os == 'ubuntu-latest' && github.actor != 'dependabot[bot]' - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - name: Configure Windows - if: matrix.os == 'windows-latest' - run: git config --global core.autocrlf false # fixes go lint fmt error - - name: Configure MySQL - if: matrix.os == 'ubuntu-latest' - uses: mirromutth/mysql-action@v1.1 - with: - host port: 3800 - mysql version: "8" - mysql root password: test - - name: Test Stores - uses: n8maninger/action-golang-test@v1 - with: - args: "-race;-short;-tags=netgo" - - name: Test Stores - MySQL - if: matrix.os == 'ubuntu-latest' - uses: n8maninger/action-golang-test@v1 - env: - RENTERD_DB_URI: 127.0.0.1:3800 - RENTERD_DB_USER: root - RENTERD_DB_PASSWORD: test - with: - package: "./stores" - args: "-race;-short;-tags=netgo" - - name: Test Integration - uses: n8maninger/action-golang-test@v1 - with: - package: "./internal/test/e2e/..." - args: "-failfast;-race;-timeout=60m;-tags=netgo" - - name: Test Integration - MySQL - if: matrix.os == 'ubuntu-latest' - uses: n8maninger/action-golang-test@v1 - env: - RENTERD_DB_URI: 127.0.0.1:3800 - RENTERD_DB_USER: root - RENTERD_DB_PASSWORD: test - with: - package: "./internal/test/e2e/..." - args: "-failfast;-race;-timeout=60m;-tags=netgo" - - name: Build - run: go build -o bin/ -tags='netgo timetzdata' ./cmd/renterd + publish: + uses: SiaFoundation/workflows/.github/workflows/go-publish.yml@chris/homebrew + secrets: inherit + with: + linux-build-args: -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w -linkmode external -extldflags "-static"' + windows-build-args: -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w -linkmode external -extldflags "-static"' + macos-build-args: -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w' + cgo-enabled: 1 + project: renterd + project-desc: "renterd: The Next-Gen Sia Renter" + version-tag: ${{ github.ref_name }} +# analyze: +# runs-on: ubuntu-latest +# steps: +# - name: Checkout +# uses: actions/checkout@v4 +# - name: Lint +# uses: golangci/golangci-lint-action@v3 +# with: +# args: --timeout=30m +# - name: Jape Analyzer +# uses: SiaFoundation/action-golang-analysis@HEAD +# with: +# analyzers: | +# go.sia.tech/jape.Analyzer@master +# directories: | +# autopilot +# bus bus/client +# worker worker/client +# flags: | +# -japecheck.types=false +# test: +# needs: analyze +# runs-on: ${{ matrix.os }} +# strategy: +# matrix: +# os: [ubuntu-latest, macos-latest, windows-latest] +# go-version: ["1.22", "1.23"] +# steps: +# - name: Checkout +# uses: actions/checkout@v4 +# - name: Setup Go +# uses: actions/setup-go@v5 +# with: +# go-version: ${{ matrix.go-version }} +# - uses: docker/login-action@v3 # helps with rate limit issues +# if: matrix.os == 'ubuntu-latest' && github.actor != 'dependabot[bot]' +# with: +# username: ${{ secrets.DOCKER_HUB_USERNAME }} +# password: ${{ secrets.DOCKER_HUB_TOKEN }} +# - name: Configure Windows +# if: matrix.os == 'windows-latest' +# run: git config --global core.autocrlf false # fixes go lint fmt error +# - name: Configure MySQL +# if: matrix.os == 'ubuntu-latest' +# uses: mirromutth/mysql-action@v1.1 +# with: +# host port: 3800 +# mysql version: "8" +# mysql root password: test +# - name: Test Stores +# uses: n8maninger/action-golang-test@v1 +# with: +# args: "-race;-short;-tags=netgo" +# - name: Test Stores - MySQL +# if: matrix.os == 'ubuntu-latest' +# uses: n8maninger/action-golang-test@v1 +# env: +# RENTERD_DB_URI: 127.0.0.1:3800 +# RENTERD_DB_USER: root +# RENTERD_DB_PASSWORD: test +# with: +# package: "./stores" +# args: "-race;-short;-tags=netgo" +# - name: Test Integration +# uses: n8maninger/action-golang-test@v1 +# with: +# package: "./internal/test/e2e/..." +# args: "-failfast;-race;-timeout=60m;-tags=netgo" +# - name: Test Integration - MySQL +# if: matrix.os == 'ubuntu-latest' +# uses: n8maninger/action-golang-test@v1 +# env: +# RENTERD_DB_URI: 127.0.0.1:3800 +# RENTERD_DB_USER: root +# RENTERD_DB_PASSWORD: test +# with: +# package: "./internal/test/e2e/..." +# args: "-failfast;-race;-timeout=60m;-tags=netgo" +# - name: Build +# run: go build -o bin/ -tags='netgo timetzdata' ./cmd/renterd +# From cbb3d966ff4e5662900eb909c87e6c82dc538b4d Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 1 Nov 2024 09:19:55 +0100 Subject: [PATCH 277/708] test.yml: test with custom tag --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5c9dd00a0..d40f74ff1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,7 +17,7 @@ jobs: cgo-enabled: 1 project: renterd project-desc: "renterd: The Next-Gen Sia Renter" - version-tag: ${{ github.ref_name }} + version-tag: "v9.9.9" # analyze: # runs-on: ubuntu-latest # steps: From 20d324eb7cf4f466701d6a9bdfc8db5359753265 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 1 Nov 2024 09:21:23 +0100 Subject: [PATCH 278/708] test.yml: revert changes --- .github/workflows/test.yml | 172 +++++++++++++++++-------------------- 1 file changed, 80 insertions(+), 92 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d40f74ff1..c2f050931 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,95 +7,83 @@ on: - master jobs: - publish: - uses: SiaFoundation/workflows/.github/workflows/go-publish.yml@chris/homebrew - secrets: inherit - with: - linux-build-args: -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w -linkmode external -extldflags "-static"' - windows-build-args: -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w -linkmode external -extldflags "-static"' - macos-build-args: -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w' - cgo-enabled: 1 - project: renterd - project-desc: "renterd: The Next-Gen Sia Renter" - version-tag: "v9.9.9" -# analyze: -# runs-on: ubuntu-latest -# steps: -# - name: Checkout -# uses: actions/checkout@v4 -# - name: Lint -# uses: golangci/golangci-lint-action@v3 -# with: -# args: --timeout=30m -# - name: Jape Analyzer -# uses: SiaFoundation/action-golang-analysis@HEAD -# with: -# analyzers: | -# go.sia.tech/jape.Analyzer@master -# directories: | -# autopilot -# bus bus/client -# worker worker/client -# flags: | -# -japecheck.types=false -# test: -# needs: analyze -# runs-on: ${{ matrix.os }} -# strategy: -# matrix: -# os: [ubuntu-latest, macos-latest, windows-latest] -# go-version: ["1.22", "1.23"] -# steps: -# - name: Checkout -# uses: actions/checkout@v4 -# - name: Setup Go -# uses: actions/setup-go@v5 -# with: -# go-version: ${{ matrix.go-version }} -# - uses: docker/login-action@v3 # helps with rate limit issues -# if: matrix.os == 'ubuntu-latest' && github.actor != 'dependabot[bot]' -# with: -# username: ${{ secrets.DOCKER_HUB_USERNAME }} -# password: ${{ secrets.DOCKER_HUB_TOKEN }} -# - name: Configure Windows -# if: matrix.os == 'windows-latest' -# run: git config --global core.autocrlf false # fixes go lint fmt error -# - name: Configure MySQL -# if: matrix.os == 'ubuntu-latest' -# uses: mirromutth/mysql-action@v1.1 -# with: -# host port: 3800 -# mysql version: "8" -# mysql root password: test -# - name: Test Stores -# uses: n8maninger/action-golang-test@v1 -# with: -# args: "-race;-short;-tags=netgo" -# - name: Test Stores - MySQL -# if: matrix.os == 'ubuntu-latest' -# uses: n8maninger/action-golang-test@v1 -# env: -# RENTERD_DB_URI: 127.0.0.1:3800 -# RENTERD_DB_USER: root -# RENTERD_DB_PASSWORD: test -# with: -# package: "./stores" -# args: "-race;-short;-tags=netgo" -# - name: Test Integration -# uses: n8maninger/action-golang-test@v1 -# with: -# package: "./internal/test/e2e/..." -# args: "-failfast;-race;-timeout=60m;-tags=netgo" -# - name: Test Integration - MySQL -# if: matrix.os == 'ubuntu-latest' -# uses: n8maninger/action-golang-test@v1 -# env: -# RENTERD_DB_URI: 127.0.0.1:3800 -# RENTERD_DB_USER: root -# RENTERD_DB_PASSWORD: test -# with: -# package: "./internal/test/e2e/..." -# args: "-failfast;-race;-timeout=60m;-tags=netgo" -# - name: Build -# run: go build -o bin/ -tags='netgo timetzdata' ./cmd/renterd -# + analyze: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Lint + uses: golangci/golangci-lint-action@v3 + with: + args: --timeout=30m + - name: Jape Analyzer + uses: SiaFoundation/action-golang-analysis@HEAD + with: + analyzers: | + go.sia.tech/jape.Analyzer@master + directories: | + autopilot + bus bus/client + worker worker/client + flags: | + -japecheck.types=false + test: + needs: analyze + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + go-version: ["1.22", "1.23"] + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Go + uses: actions/setup-go@v5 + with: + go-version: ${{ matrix.go-version }} + - uses: docker/login-action@v3 # helps with rate limit issues + if: matrix.os == 'ubuntu-latest' && github.actor != 'dependabot[bot]' + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} + - name: Configure Windows + if: matrix.os == 'windows-latest' + run: git config --global core.autocrlf false # fixes go lint fmt error + - name: Configure MySQL + if: matrix.os == 'ubuntu-latest' + uses: mirromutth/mysql-action@v1.1 + with: + host port: 3800 + mysql version: "8" + mysql root password: test + - name: Test Stores + uses: n8maninger/action-golang-test@v1 + with: + args: "-race;-short;-tags=netgo" + - name: Test Stores - MySQL + if: matrix.os == 'ubuntu-latest' + uses: n8maninger/action-golang-test@v1 + env: + RENTERD_DB_URI: 127.0.0.1:3800 + RENTERD_DB_USER: root + RENTERD_DB_PASSWORD: test + with: + package: "./stores" + args: "-race;-short;-tags=netgo" + - name: Test Integration + uses: n8maninger/action-golang-test@v1 + with: + package: "./internal/test/e2e/..." + args: "-failfast;-race;-timeout=60m;-tags=netgo" + - name: Test Integration - MySQL + if: matrix.os == 'ubuntu-latest' + uses: n8maninger/action-golang-test@v1 + env: + RENTERD_DB_URI: 127.0.0.1:3800 + RENTERD_DB_USER: root + RENTERD_DB_PASSWORD: test + with: + package: "./internal/test/e2e/..." + args: "-failfast;-race;-timeout=60m;-tags=netgo" + - name: Build + run: go build -o bin/ -tags='netgo timetzdata' ./cmd/renterd From d3daaa358a48b4b04a154a240071220a84bee2a6 Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Fri, 1 Nov 2024 09:53:07 +0100 Subject: [PATCH 279/708] test.yml: split up sqlite and mysql tests into separate jobs --- .github/workflows/test.yml | 55 ++++++++++++-------------------------- 1 file changed, 17 insertions(+), 38 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c2f050931..ec01b8868 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,12 +27,17 @@ jobs: worker worker/client flags: | -japecheck.types=false - test: + + test-sqlite: # Run all tests against SQLite + needs: analyze + uses: SiaFoundation/workflows/.github/workflows/go-test.yml@master + secrets: inherit + + test-mysql: # Run all tests against MySQL needs: analyze - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest strategy: matrix: - os: [ubuntu-latest, macos-latest, windows-latest] go-version: ["1.22", "1.23"] steps: - name: Checkout @@ -41,49 +46,23 @@ jobs: uses: actions/setup-go@v5 with: go-version: ${{ matrix.go-version }} - - uses: docker/login-action@v3 # helps with rate limit issues - if: matrix.os == 'ubuntu-latest' && github.actor != 'dependabot[bot]' - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - name: Configure Windows - if: matrix.os == 'windows-latest' - run: git config --global core.autocrlf false # fixes go lint fmt error - name: Configure MySQL - if: matrix.os == 'ubuntu-latest' uses: mirromutth/mysql-action@v1.1 with: host port: 3800 mysql version: "8" mysql root password: test - - name: Test Stores - uses: n8maninger/action-golang-test@v1 - with: - args: "-race;-short;-tags=netgo" - - name: Test Stores - MySQL - if: matrix.os == 'ubuntu-latest' - uses: n8maninger/action-golang-test@v1 + - name: Test + uses: SiaFoundation/workflows/.github/actions/go-test@master env: RENTERD_DB_URI: 127.0.0.1:3800 RENTERD_DB_USER: root RENTERD_DB_PASSWORD: test with: - package: "./stores" - args: "-race;-short;-tags=netgo" - - name: Test Integration - uses: n8maninger/action-golang-test@v1 - with: - package: "./internal/test/e2e/..." - args: "-failfast;-race;-timeout=60m;-tags=netgo" - - name: Test Integration - MySQL - if: matrix.os == 'ubuntu-latest' - uses: n8maninger/action-golang-test@v1 - env: - RENTERD_DB_URI: 127.0.0.1:3800 - RENTERD_DB_USER: root - RENTERD_DB_PASSWORD: test - with: - package: "./internal/test/e2e/..." - args: "-failfast;-race;-timeout=60m;-tags=netgo" - - name: Build - run: go build -o bin/ -tags='netgo timetzdata' ./cmd/renterd + go-test-args: "-race;-timeout=20m;-tags=netgo" + + success: # Use in branch rulesets to ensure all matrix jobs completed successfully + needs: [test-sqlite, test-mysql] + runs-on: ubuntu-latest + steps: + - run: echo "Success!" From 7240e5a01d9fa5d42180fb4d2174f573b3fc5b8a Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 31 Oct 2024 15:27:13 +0100 Subject: [PATCH 280/708] worker: remove price table endpoint; bus: remove record price table endpoint --- api/worker.go | 7 ---- autopilot/contractor/contractor.go | 54 -------------------------- autopilot/workerpool.go | 2 - bus/bus.go | 1 - bus/client/hosts.go | 8 ---- bus/routes.go | 10 ----- internal/test/e2e/interactions_test.go | 4 -- worker/client/rhp.go | 20 ---------- worker/host.go | 1 - worker/pricetables.go | 28 ------------- worker/worker.go | 43 +------------------- 11 files changed, 1 insertion(+), 177 deletions(-) delete mode 100644 worker/client/rhp.go diff --git a/api/worker.go b/api/worker.go index c6117786c..1f653b4ba 100644 --- a/api/worker.go +++ b/api/worker.go @@ -89,13 +89,6 @@ type ( Balance types.Currency `json:"balance"` } - // RHPPriceTableRequest is the request type for the /rhp/pricetable endpoint. - RHPPriceTableRequest struct { - HostKey types.PublicKey `json:"hostKey"` - SiamuxAddr string `json:"siamuxAddr"` - Timeout DurationMS `json:"timeout"` - } - // RHPSyncRequest is the request type for the /rhp/sync endpoint. RHPSyncRequest struct { ContractID types.FileContractID `json:"contractID"` diff --git a/autopilot/contractor/contractor.go b/autopilot/contractor/contractor.go index 9c982816b..a0b4eae2d 100644 --- a/autopilot/contractor/contractor.go +++ b/autopilot/contractor/contractor.go @@ -55,10 +55,6 @@ const ( // targetBlockTime is the average block time of the Sia network targetBlockTime = 10 * time.Minute - // timeoutHostPriceTable is the amount of time we wait to receive a price - // table from the host - timeoutHostPriceTable = 30 * time.Second - // timeoutHostRevision is the amount of time we wait to receive the latest // revision from the host. This is set to 4 minutes since siad currently // blocks for 3 minutes when trying to fetch a revision and not having @@ -67,10 +63,6 @@ const ( // TODO: This can be lowered once the network uses hostd. timeoutHostRevision = 4 * time.Minute - // timeoutHostScan is the amount of time we wait for a host scan to be - // completed - timeoutHostScan = 30 * time.Second - // timeoutBroadcastRevision is the amount of time we wait for the broadcast // of a revision to succeed. timeoutBroadcastRevision = time.Minute @@ -106,7 +98,6 @@ type HostScanner interface { type Worker interface { Contracts(ctx context.Context, hostTimeout time.Duration) (api.ContractsResponse, error) - RHPPriceTable(ctx context.Context, hostKey types.PublicKey, siamuxAddr string, timeout time.Duration) (api.HostPriceTable, error) } type contractChecker interface { @@ -706,32 +697,6 @@ func initialContractFunding(settings rhpv2.HostSettings, txnFee, minFunding type return funding } -func refreshPriceTable(ctx context.Context, hs HostScanner, w Worker, host *api.Host) error { - // return early if the host's pricetable is not expired yet - if time.Now().Before(host.PriceTable.Expiry) { - return nil - } - - // scan the host if it hasn't been successfully scanned before, which - // can occur when contracts are added manually to the bus or database - if !host.Scanned { - scan, err := hs.ScanHost(ctx, host.PublicKey, timeoutHostScan) - if err != nil { - return fmt.Errorf("failed to scan host %v: %w", host.PublicKey, err) - } - host.Settings = scan.Settings - } - - // fetch the price table - hpt, err := w.RHPPriceTable(ctx, host.PublicKey, host.Settings.SiamuxAddr(), timeoutHostPriceTable) - if err != nil { - return fmt.Errorf("failed to fetch price table for host %v: %w", host.PublicKey, err) - } - - host.PriceTable = hpt - return nil -} - // renewFundingEstimate computes the funds the renter should use to renew a // contract. 'minRenterFunds' is the minimum amount the renter should use to // renew a contract, 'initRenterFunds' is the amount the renter used to form the @@ -1090,29 +1055,10 @@ func performContractFormations(ctx *mCtx, bus Bus, w Worker, cr contractReviser, default: } - // fetch a new price table if necessary - if err := refreshPriceTable(ctx, bus, w, &candidate.host); err != nil { - logger.Warnf("failed to fetch price table for candidate host %v: %v", candidate.host.PublicKey, err) - continue - } - - // prepare gouging checker - cs, err := bus.ConsensusState(ctx) - if err != nil { - return nil, fmt.Errorf("failed to fetch consensus state: %w", err) - } - gc := ctx.GougingChecker(cs) - // prepare a logger logger := logger.With("hostKey", candidate.host.PublicKey). With("addresses", candidate.host.ResolvedAddresses) - // perform gouging checks on the fly to ensure the host is not gouging its prices - if breakdown := gc.Check(nil, &candidate.host.PriceTable.HostPriceTable); breakdown.Gouging() { - logger.With("reasons", breakdown.String()).Info("candidate is price gouging") - continue - } - // check if we already have a contract with a host on that address if ctx.ShouldFilterRedundantIPs() && ipFilter.HasRedundantIP(candidate.host) { logger.Info("host has redundant IP") diff --git a/autopilot/workerpool.go b/autopilot/workerpool.go index b1e7382b9..ccd28dee9 100644 --- a/autopilot/workerpool.go +++ b/autopilot/workerpool.go @@ -16,8 +16,6 @@ type Worker interface { Contracts(ctx context.Context, hostTimeout time.Duration) (api.ContractsResponse, error) ID(ctx context.Context) (string, error) MigrateSlab(ctx context.Context, s object.Slab, set string) error - - RHPPriceTable(ctx context.Context, hostKey types.PublicKey, siamuxAddr string, timeout time.Duration) (api.HostPriceTable, error) } // workerPool contains all workers known to the autopilot. Users can call diff --git a/bus/bus.go b/bus/bus.go index ebbe6394f..d7dcd16e3 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -442,7 +442,6 @@ func (b *Bus) Handler() http.Handler { "PUT /hosts/allowlist": b.hostsAllowlistHandlerPUT, "GET /hosts/blocklist": b.hostsBlocklistHandlerGET, "PUT /hosts/blocklist": b.hostsBlocklistHandlerPUT, - "POST /hosts/pricetables": b.hostsPricetableHandlerPOST, "POST /hosts/remove": b.hostsRemoveHandlerPOST, "GET /host/:hostkey": b.hostsPubkeyHandlerGET, "POST /host/:hostkey/resetlostsectors": b.hostsResetLostSectorsPOST, diff --git a/bus/client/hosts.go b/bus/client/hosts.go index 7734d1911..f100f6723 100644 --- a/bus/client/hosts.go +++ b/bus/client/hosts.go @@ -42,14 +42,6 @@ func (c *Client) HostBlocklist(ctx context.Context) (blocklist []string, err err return } -// RecordHostInteraction records an interaction for the supplied host. -func (c *Client) RecordPriceTables(ctx context.Context, priceTableUpdates []api.HostPriceTableUpdate) (err error) { - err = c.c.WithContext(ctx).POST("/hosts/pricetables", api.HostsPriceTablesRequest{ - PriceTableUpdates: priceTableUpdates, - }, nil) - return -} - // RemoveOfflineHosts removes all hosts that have been offline for longer than the given max downtime. func (c *Client) RemoveOfflineHosts(ctx context.Context, maxConsecutiveScanFailures uint64, maxDowntime time.Duration) (removed uint64, err error) { err = c.c.WithContext(ctx).POST("/hosts/remove", api.HostsRemoveRequest{ diff --git a/bus/routes.go b/bus/routes.go index b64d50564..c9c93f794 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -630,16 +630,6 @@ func (b *Bus) hostsResetLostSectorsPOST(jc jape.Context) { } } -func (b *Bus) hostsPricetableHandlerPOST(jc jape.Context) { - var req api.HostsPriceTablesRequest - if jc.Decode(&req) != nil { - return - } - if jc.Check("failed to record interactions", b.store.RecordPriceTables(jc.Request.Context(), req.PriceTableUpdates)) != nil { - return - } -} - func (b *Bus) contractsSpendingHandlerPOST(jc jape.Context) { var records []api.ContractSpendingRecord if jc.Decode(&records) != nil { diff --git a/internal/test/e2e/interactions_test.go b/internal/test/e2e/interactions_test.go index c1b816214..c26671b41 100644 --- a/internal/test/e2e/interactions_test.go +++ b/internal/test/e2e/interactions_test.go @@ -14,7 +14,6 @@ func TestInteractions(t *testing.T) { cluster := newTestCluster(t, clusterOptsDefault) defer cluster.Shutdown() b := cluster.Bus - w := cluster.Worker tt := cluster.tt // add a host @@ -47,9 +46,6 @@ func TestInteractions(t *testing.T) { // assert price table gets updated var ptUpdates int tt.Retry(100, 100*time.Millisecond, func() error { - // fetch pricetable (this registers host interactions) - tt.OKAll(w.RHPPriceTable(context.Background(), h1.PublicKey(), h.Settings.SiamuxAddr(), 0)) - // fetch the host h, err := b.Host(context.Background(), h1.PublicKey()) tt.OK(err) diff --git a/worker/client/rhp.go b/worker/client/rhp.go deleted file mode 100644 index 095f9197b..000000000 --- a/worker/client/rhp.go +++ /dev/null @@ -1,20 +0,0 @@ -package client - -import ( - "context" - "time" - - "go.sia.tech/core/types" - "go.sia.tech/renterd/api" -) - -// RHPPriceTable fetches a price table for a host. -func (c *Client) RHPPriceTable(ctx context.Context, hostKey types.PublicKey, siamuxAddr string, timeout time.Duration) (pt api.HostPriceTable, err error) { - req := api.RHPPriceTableRequest{ - HostKey: hostKey, - SiamuxAddr: siamuxAddr, - Timeout: api.DurationMS(timeout), - } - err = c.c.WithContext(ctx).POST("/rhp/pricetable", req, &pt) - return -} diff --git a/worker/host.go b/worker/host.go index 2ecd95233..75efcb410 100644 --- a/worker/host.go +++ b/worker/host.go @@ -24,7 +24,6 @@ type ( UploadSector(ctx context.Context, sectorRoot types.Hash256, sector *[rhpv2.SectorSize]byte, rev types.FileContractRevision) error PriceTable(ctx context.Context, rev *types.FileContractRevision) (api.HostPriceTable, types.Currency, error) - PriceTableUnpaid(ctx context.Context) (hpt api.HostPriceTable, err error) FetchRevision(ctx context.Context, fetchTimeout time.Duration) (types.FileContractRevision, error) FundAccount(ctx context.Context, balance types.Currency, rev *types.FileContractRevision) error diff --git a/worker/pricetables.go b/worker/pricetables.go index fc3901f67..adec282e9 100644 --- a/worker/pricetables.go +++ b/worker/pricetables.go @@ -11,7 +11,6 @@ import ( rhpv3 "go.sia.tech/core/rhp/v3" "go.sia.tech/core/types" "go.sia.tech/renterd/api" - rhp3 "go.sia.tech/renterd/internal/rhp/v3" "lukechampine.com/frand" ) @@ -174,36 +173,9 @@ func (p *priceTable) fetch(ctx context.Context, rev *types.FileContractRevision) h := p.hm.Host(p.hk, types.FileContractID{}, host.Settings.SiamuxAddr()) hpt, cost, err = h.PriceTable(ctx, rev) - // record it in the background - if shouldRecordPriceTable(err) { - go func(hpt api.HostPriceTable, success bool) { - p.hs.RecordPriceTables(context.Background(), []api.HostPriceTableUpdate{ - { - HostKey: p.hk, - Success: success, - Timestamp: time.Now(), - PriceTable: hpt, - }, - }) - }(hpt, err == nil) - } - // handle error after recording if err != nil { return api.HostPriceTable{}, types.ZeroCurrency, fmt.Errorf("failed to update pricetable, err %v", err) } return } - -func shouldRecordPriceTable(err error) bool { - // List of errors that are considered 'successful' failures. Meaning that - // the host was reachable but we were unable to obtain a price table due to - // reasons out of the host's control. - if rhp3.IsInsufficientFunds(err) { - return false - } - if rhp3.IsBalanceInsufficient(err) { - return false - } - return true -} diff --git a/worker/worker.go b/worker/worker.go index 3be8ac21d..e93719452 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -94,7 +94,6 @@ type ( } HostStore interface { - RecordPriceTables(ctx context.Context, priceTableUpdate []api.HostPriceTableUpdate) error RecordContractSpending(ctx context.Context, records []api.ContractSpendingRecord) error Host(ctx context.Context, hostKey types.PublicKey) (api.Host, error) @@ -273,45 +272,6 @@ func (w *Worker) fetchContracts(ctx context.Context, metadatas []api.ContractMet return } -func (w *Worker) rhpPriceTableHandler(jc jape.Context) { - // decode the request - var rptr api.RHPPriceTableRequest - if jc.Decode(&rptr) != nil { - return - } - - // defer interaction recording before applying timeout to make sure we still - // record the failed update if it timed out - var err error - var hpt api.HostPriceTable - defer func() { - if shouldRecordPriceTable(err) { - w.bus.RecordPriceTables(jc.Request.Context(), []api.HostPriceTableUpdate{ - { - HostKey: rptr.HostKey, - Success: err == nil, - Timestamp: time.Now(), - PriceTable: hpt, - }, - }) - } - }() - - // apply timeout - ctx := jc.Request.Context() - if rptr.Timeout > 0 { - var cancel context.CancelFunc - ctx, cancel = context.WithTimeout(ctx, time.Duration(rptr.Timeout)) - defer cancel() - } - - hpt, err = w.Host(rptr.HostKey, types.FileContractID{}, rptr.SiamuxAddr).PriceTableUnpaid(ctx) - if jc.Check("could not get price table", err) != nil { - return - } - jc.Encode(hpt) -} - func (w *Worker) slabMigrateHandler(jc jape.Context) { ctx := jc.Request.Context() @@ -925,8 +885,7 @@ func (w *Worker) Handler() http.Handler { "GET /memory": w.memoryGET, - "GET /rhp/contracts": w.rhpContractsHandlerGET, - "POST /rhp/pricetable": w.rhpPriceTableHandler, + "GET /rhp/contracts": w.rhpContractsHandlerGET, "GET /stats/downloads": w.downloadsStatsHandlerGET, "GET /stats/uploads": w.uploadsStatsHandlerGET, From 1da6e3c548cd79c2521a23b53471ef2e1cc58a9f Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Thu, 31 Oct 2024 15:54:18 +0100 Subject: [PATCH 281/708] e2e: fix TestInteractions --- internal/test/e2e/interactions_test.go | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/internal/test/e2e/interactions_test.go b/internal/test/e2e/interactions_test.go index c26671b41..c46f90113 100644 --- a/internal/test/e2e/interactions_test.go +++ b/internal/test/e2e/interactions_test.go @@ -2,7 +2,6 @@ package e2e import ( "context" - "errors" "testing" "time" @@ -43,31 +42,6 @@ func TestInteractions(t *testing.T) { t.Fatal("expected pt UID to be set") } - // assert price table gets updated - var ptUpdates int - tt.Retry(100, 100*time.Millisecond, func() error { - // fetch the host - h, err := b.Host(context.Background(), h1.PublicKey()) - tt.OK(err) - - // make sure it did not get scanned again - if h.Interactions.TotalScans != ts { - t.Fatal("expected no new scans", h.Interactions.TotalScans, ts) - } - - // keep track of pt updates - if h.PriceTable.UID != ptUID { - ptUID = h.PriceTable.UID - ptUpdates++ - } - - // assert the price table was updated - if ptUpdates < 2 { - return errors.New("price table should be updated from time to time") - } - return nil - }) - // scan the host manually tt.OKAll(b.ScanHost(context.Background(), h1.PublicKey(), 0)) time.Sleep(3 * testBusFlushInterval) From 49375514bc81de627f55dd4e0fee64ea744077c9 Mon Sep 17 00:00:00 2001 From: PJ Date: Fri, 1 Nov 2024 12:56:18 +0100 Subject: [PATCH 282/708] worker: use new hosts endpoint --- api/contract.go | 8 +++ api/host.go | 5 +- bus/bus.go | 14 ++-- bus/routes.go | 8 ++- cmd/renterd/config.go | 3 +- cmd/renterd/node.go | 2 +- config/config.go | 3 +- internal/test/e2e/cluster.go | 2 +- internal/worker/accounts.go | 101 +++++++++++--------------- internal/worker/accounts_test.go | 7 +- internal/worker/cache.go | 120 ++++++------------------------- internal/worker/cache_test.go | 38 +++++----- stores/hostdb.go | 4 +- stores/hostdb_test.go | 20 +++++- stores/metadata_test.go | 3 + stores/sql/database.go | 2 +- stores/sql/main.go | 16 +++-- stores/sql/mysql/main.go | 4 +- stores/sql/sqlite/main.go | 4 +- worker/bench_test.go | 2 +- worker/download.go | 49 ++++++------- worker/downloader.go | 6 +- worker/downloader_test.go | 2 +- worker/host.go | 87 ++++++++++++---------- worker/host_test.go | 12 +++- worker/migrations.go | 45 ++++++------ worker/mocks_test.go | 20 ++++++ worker/pricetables.go | 2 +- worker/upload.go | 2 +- worker/upload_test.go | 28 ++++---- worker/uploader.go | 2 +- worker/worker.go | 51 +++++++------ worker/worker_test.go | 11 +++ 33 files changed, 341 insertions(+), 342 deletions(-) diff --git a/api/contract.go b/api/contract.go index 486304be9..322dd782f 100644 --- a/api/contract.go +++ b/api/contract.go @@ -246,3 +246,11 @@ func (cm ContractMetadata) InSet(set string) bool { } return false } + +func (cm ContractMetadata) HostInfo() HostInfo { + return HostInfo{ + PublicKey: cm.HostKey, + ContractID: cm.ID, + SiamuxAddr: cm.SiamuxAddr, + } +} diff --git a/api/host.go b/api/host.go index f5056d89c..ebb386486 100644 --- a/api/host.go +++ b/api/host.go @@ -127,8 +127,9 @@ type ( } HostInfo struct { - PublicKey types.PublicKey `json:"publicKey"` - SiamuxAddr string `json:"siamuxAddr"` + ContractID types.FileContractID `json:"contractID"` + PublicKey types.PublicKey `json:"publicKey"` + SiamuxAddr string `json:"siamuxAddr"` } HostInteractions struct { diff --git a/bus/bus.go b/bus/bus.go index 38b6e4537..0701bb1c4 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -212,7 +212,7 @@ type ( UpdateHostAllowlistEntries(ctx context.Context, add, remove []types.PublicKey, clear bool) error UpdateHostBlocklistEntries(ctx context.Context, add, remove []string, clear bool) error UpdateHostCheck(ctx context.Context, autopilotID string, hk types.PublicKey, check api.HostCheck) error - UsableHosts(ctx context.Context, offset, limit int) ([]api.HostInfo, error) + UsableHosts(ctx context.Context, minWindowStart uint64, offset, limit int) ([]api.HostInfo, error) } // A MetadataStore stores information about contracts and objects. @@ -314,8 +314,9 @@ type ( ) type Bus struct { - startTime time.Time - masterKey utils.MasterKey + startTime time.Time + masterKey utils.MasterKey + revisionSubmissionBuffer uint64 alerts alerts.Alerter alertMgr AlertManager @@ -340,13 +341,14 @@ type Bus struct { } // New returns a new Bus -func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksManager, cm ChainManager, s Syncer, w Wallet, store Store, announcementMaxAge time.Duration, explorerURL string, l *zap.Logger) (_ *Bus, err error) { +func New(ctx context.Context, masterKey [32]byte, am AlertManager, wm WebhooksManager, cm ChainManager, s Syncer, w Wallet, store Store, announcementMaxAge time.Duration, explorerURL string, revisionSubmissionBuffer uint64, l *zap.Logger) (_ *Bus, err error) { l = l.Named("bus") dialer := rhp.NewFallbackDialer(store, net.Dialer{}, l) b := &Bus{ - startTime: time.Now(), - masterKey: masterKey, + startTime: time.Now(), + masterKey: masterKey, + revisionSubmissionBuffer: revisionSubmissionBuffer, s: s, cm: cm, diff --git a/bus/routes.go b/bus/routes.go index 28141ed46..5484af145 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -501,7 +501,13 @@ func (b *Bus) hostsHandlerGET(jc jape.Context) { return } - hosts, err := b.store.UsableHosts(jc.Request.Context(), offset, limit) + cs, err := b.consensusState(jc.Request.Context()) + if jc.Check("couldn't fetch consensus state", err) != nil { + return + } + minWindowStart := cs.BlockHeight + b.revisionSubmissionBuffer + + hosts, err := b.store.UsableHosts(jc.Request.Context(), minWindowStart, offset, limit) if jc.Check("couldn't fetch hosts", err) != nil { return } diff --git a/cmd/renterd/config.go b/cmd/renterd/config.go index 56a5437a7..68827c115 100644 --- a/cmd/renterd/config.go +++ b/cmd/renterd/config.go @@ -89,8 +89,9 @@ func defaultConfig() config.Config { AnnouncementMaxAgeHours: 24 * 7 * 52, // 1 year Bootstrap: true, GatewayAddr: ":9981", - UsedUTXOExpiry: 24 * time.Hour, + RevisionSubmissionBuffer: 150, // 144 + 6 blocks leeway SlabBufferCompletionThreshold: 1 << 12, + UsedUTXOExpiry: 24 * time.Hour, }, Worker: config.Worker{ Enabled: true, diff --git a/cmd/renterd/node.go b/cmd/renterd/node.go index 2cbd522c4..db19297e3 100644 --- a/cmd/renterd/node.go +++ b/cmd/renterd/node.go @@ -386,7 +386,7 @@ func newBus(ctx context.Context, cfg config.Config, pk types.PrivateKey, network // create bus announcementMaxAgeHours := time.Duration(cfg.Bus.AnnouncementMaxAgeHours) * time.Hour - b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, s, w, sqlStore, announcementMaxAgeHours, explorerURL, logger) + b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, s, w, sqlStore, announcementMaxAgeHours, explorerURL, cfg.Bus.RevisionSubmissionBuffer, logger) if err != nil { return nil, nil, fmt.Errorf("failed to create bus: %w", err) } diff --git a/config/config.go b/config/config.go index f74a765e8..d97bfff60 100644 --- a/config/config.go +++ b/config/config.go @@ -59,8 +59,9 @@ type ( GatewayAddr string `yaml:"gatewayAddr,omitempty"` RemoteAddr string `yaml:"remoteAddr,omitempty"` RemotePassword string `yaml:"remotePassword,omitempty"` - UsedUTXOExpiry time.Duration `yaml:"usedUtxoExpiry,omitempty"` + RevisionSubmissionBuffer uint64 `yaml:"revisionSubmissionBuffer,omitempty"` SlabBufferCompletionThreshold int64 `yaml:"slabBufferCompleionThreshold,omitempty"` + UsedUTXOExpiry time.Duration `yaml:"usedUtxoExpiry,omitempty"` } // LogFile configures the file output of the logger. diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index ce8e5ff6e..7f154798b 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -617,7 +617,7 @@ func newTestBus(ctx context.Context, cm *chain.Manager, genesisBlock types.Block // create bus announcementMaxAgeHours := time.Duration(cfg.AnnouncementMaxAgeHours) * time.Hour - b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, s, w, sqlStore, announcementMaxAgeHours, "", logger) + b, err := bus.New(ctx, masterKey, alertsMgr, wh, cm, s, w, sqlStore, announcementMaxAgeHours, "", cfg.RevisionSubmissionBuffer, logger) if err != nil { return nil, nil, nil, nil, err } diff --git a/internal/worker/accounts.go b/internal/worker/accounts.go index f73c9f529..7f938ea8e 100644 --- a/internal/worker/accounts.go +++ b/internal/worker/accounts.go @@ -33,11 +33,11 @@ var ( type ( AccountFunder interface { - FundAccount(ctx context.Context, fcid types.FileContractID, hk types.PublicKey, desired types.Currency) error + FundAccount(ctx context.Context, hi api.HostInfo, desired types.Currency) error } AccountSyncer interface { - SyncAccount(ctx context.Context, fcid types.FileContractID, hk types.PublicKey, siamuxAddr string) error + SyncAccount(ctx context.Context, hi api.HostInfo) error } AccountStore interface { @@ -49,27 +49,26 @@ type ( ConsensusState(ctx context.Context) (api.ConsensusState, error) } - DownloadContracts interface { - DownloadContracts(ctx context.Context) ([]api.ContractMetadata, error) + HostStore interface { + UsableHosts(ctx context.Context) ([]api.HostInfo, error) } ) type ( AccountMgr struct { - alerts alerts.Alerter - funder AccountFunder - syncer AccountSyncer - dc DownloadContracts - cs ConsensusState - s AccountStore - key utils.AccountsKey - logger *zap.SugaredLogger - owner string - refillInterval time.Duration - revisionSubmissionBuffer uint64 - shutdownCtx context.Context - shutdownCancel context.CancelFunc - wg sync.WaitGroup + alerts alerts.Alerter + funder AccountFunder + syncer AccountSyncer + cs ConsensusState + s AccountStore + hs HostStore + key utils.AccountsKey + logger *zap.SugaredLogger + owner string + refillInterval time.Duration + shutdownCtx context.Context + shutdownCancel context.CancelFunc + wg sync.WaitGroup mu sync.Mutex byID map[rhpv3.Account]*Account @@ -92,7 +91,7 @@ type ( // NewAccountManager creates a new account manager. It will load all accounts // from the given store and mark the shutdown as unclean. When Shutdown is // called it will save all accounts. -func NewAccountManager(key utils.AccountsKey, owner string, alerter alerts.Alerter, funder AccountFunder, syncer AccountSyncer, cs ConsensusState, dc DownloadContracts, s AccountStore, refillInterval time.Duration, l *zap.Logger) (*AccountMgr, error) { +func NewAccountManager(key utils.AccountsKey, owner string, alerter alerts.Alerter, funder AccountFunder, syncer AccountSyncer, cs ConsensusState, hs HostStore, s AccountStore, refillInterval time.Duration, l *zap.Logger) (*AccountMgr, error) { logger := l.Named("accounts").Sugar() shutdownCtx, shutdownCancel := context.WithCancel(context.Background()) @@ -101,7 +100,7 @@ func NewAccountManager(key utils.AccountsKey, owner string, alerter alerts.Alert funder: funder, syncer: syncer, cs: cs, - dc: dc, + hs: hs, s: s, key: key, logger: logger, @@ -309,40 +308,33 @@ func (a *AccountMgr) markRefillDone(hk types.PublicKey) { // goroutine from a previous call, refillWorkerAccounts will skip that account // until the previously launched goroutine returns. func (a *AccountMgr) refillAccounts() { - // fetch config - cs, err := a.cs.ConsensusState(a.shutdownCtx) + // fetch all usable hosts + hosts, err := a.hs.UsableHosts(a.shutdownCtx) if err != nil { - a.logger.Errorw(fmt.Sprintf("failed to fetch consensus state for refill: %v", err)) + a.logger.Errorw(fmt.Sprintf("failed to fetch usable hosts: %v", err)) return - } - - // fetch all contracts - contracts, err := a.dc.DownloadContracts(a.shutdownCtx) - if err != nil { - a.logger.Errorw(fmt.Sprintf("failed to fetch contracts for refill: %v", err)) - return - } else if len(contracts) == 0 { + } else if len(hosts) == 0 { return } // refill accounts in separate goroutines - for _, c := range contracts { + for _, hi := range hosts { // launch refill if not already in progress - if a.markRefillInProgress(c.HostKey) { - go func(contract api.ContractMetadata) { - defer a.markRefillDone(contract.HostKey) + if a.markRefillInProgress(hi.PublicKey) { + go func() { + defer a.markRefillDone(hi.PublicKey) rCtx, cancel := context.WithTimeout(a.shutdownCtx, 5*time.Minute) defer cancel() // refill - refilled, err := a.refillAccount(rCtx, c, cs.BlockHeight, a.revisionSubmissionBuffer) + refilled, err := a.refillAccount(rCtx, hi) // determine whether to log something shouldLog := true a.mu.Lock() - if t, exists := a.lastLoggedRefillErr[contract.HostKey]; !exists || err == nil { - a.lastLoggedRefillErr[contract.HostKey] = time.Now() + if t, exists := a.lastLoggedRefillErr[hi.PublicKey]; !exists || err == nil { + a.lastLoggedRefillErr[hi.PublicKey] = time.Now() } else if time.Since(t) < time.Hour { // only log error once per hour per account shouldLog = false @@ -350,34 +342,27 @@ func (a *AccountMgr) refillAccounts() { a.mu.Unlock() if err != nil && shouldLog { - a.logger.Error("failed to refill account for host", zap.Stringer("hostKey", contract.HostKey), zap.Error(err)) + a.logger.Error("failed to refill account for host", zap.Stringer("hostKey", hi.PublicKey), zap.Error(err)) } else if refilled { - a.logger.Infow("successfully refilled account for host", zap.Stringer("hostKey", contract.HostKey), zap.Error(err)) + a.logger.Infow("successfully refilled account for host", zap.Stringer("hostKey", hi.PublicKey), zap.Error(err)) } - }(c) + }() } } } -func (a *AccountMgr) refillAccount(ctx context.Context, contract api.ContractMetadata, bh, revisionSubmissionBuffer uint64) (bool, error) { +func (a *AccountMgr) refillAccount(ctx context.Context, hi api.HostInfo) (bool, error) { // fetch the account - account := a.Account(contract.HostKey) - - // check if the contract is too close to the proof window to be revised, - // trying to refill the account would result in the host not returning the - // revision and returning an obfuscated error - if (bh + revisionSubmissionBuffer) > contract.WindowStart { - return false, fmt.Errorf("contract %v is too close to the proof window to be revised", contract.ID) - } + account := a.Account(hi.PublicKey) // check if a host is potentially cheating before refilling. // We only check against the max drift if the account's drift is // negative because we don't care if we have more money than // expected. if account.Drift.Cmp(maxNegDrift) < 0 { - alert := newAccountRefillAlert(account.ID, contract, errMaxDriftExceeded, + alert := newAccountRefillAlert(account.ID, hi.PublicKey, hi.ContractID, errMaxDriftExceeded, "accountID", account.ID.String(), - "hostKey", contract.HostKey.String(), + "hostKey", hi.PublicKey.String(), "balance", account.Balance.String(), "drift", account.Drift.String(), ) @@ -390,13 +375,13 @@ func (a *AccountMgr) refillAccount(ctx context.Context, contract api.ContractMet // check if a resync is needed if account.RequiresSync { // sync the account - err := a.syncer.SyncAccount(ctx, contract.ID, contract.HostKey, contract.SiamuxAddr) + err := a.syncer.SyncAccount(ctx, hi) if err != nil { return false, fmt.Errorf("failed to sync account's balance: %w", err) } // refetch the account after syncing - account = a.Account(contract.HostKey) + account = a.Account(hi.PublicKey) } // check if refill is needed @@ -405,7 +390,7 @@ func (a *AccountMgr) refillAccount(ctx context.Context, contract api.ContractMet } // fund the account - err := a.funder.FundAccount(ctx, contract.ID, contract.HostKey, maxBalance) + err := a.funder.FundAccount(ctx, hi, maxBalance) if err != nil { return false, fmt.Errorf("failed to fund account: %w", err) } @@ -593,12 +578,12 @@ func (a *Account) setBalance(balance *big.Int) { zap.Stringer("drift", drift)) } -func newAccountRefillAlert(id rhpv3.Account, contract api.ContractMetadata, err error, keysAndValues ...string) alerts.Alert { +func newAccountRefillAlert(id rhpv3.Account, hk types.PublicKey, fcid types.FileContractID, err error, keysAndValues ...string) alerts.Alert { data := map[string]interface{}{ "error": err.Error(), "accountID": id.String(), - "contractID": contract.ID.String(), - "hostKey": contract.HostKey.String(), + "contractID": fcid.String(), + "hostKey": hk.String(), } for i := 0; i < len(keysAndValues); i += 2 { data[keysAndValues[i]] = keysAndValues[i+1] diff --git a/internal/worker/accounts_test.go b/internal/worker/accounts_test.go index d33e67200..643e80721 100644 --- a/internal/worker/accounts_test.go +++ b/internal/worker/accounts_test.go @@ -30,10 +30,10 @@ func (b *mockAccountMgrBackend) RegisterAlert(context.Context, alerts.Alert) err return nil } -func (b *mockAccountMgrBackend) FundAccount(ctx context.Context, fcid types.FileContractID, hk types.PublicKey, balance types.Currency) error { +func (b *mockAccountMgrBackend) FundAccount(ctx context.Context, hi api.HostInfo, balance types.Currency) error { return nil } -func (b *mockAccountMgrBackend) SyncAccount(ctx context.Context, fcid types.FileContractID, hk types.PublicKey, siamuxAddr string) error { +func (b *mockAccountMgrBackend) SyncAccount(ctx context.Context, hi api.HostInfo) error { return nil } func (b *mockAccountMgrBackend) Accounts(context.Context, string) ([]api.Account, error) { @@ -48,6 +48,9 @@ func (b *mockAccountMgrBackend) ConsensusState(ctx context.Context) (api.Consens func (b *mockAccountMgrBackend) DownloadContracts(ctx context.Context) ([]api.ContractMetadata, error) { return nil, nil } +func (b *mockAccountMgrBackend) UsableHosts(ctx context.Context) ([]api.HostInfo, error) { + return nil, nil +} func TestAccounts(t *testing.T) { // create a manager with an account for a single host diff --git a/internal/worker/cache.go b/internal/worker/cache.go index d357293ff..2ea434928 100644 --- a/internal/worker/cache.go +++ b/internal/worker/cache.go @@ -18,8 +18,8 @@ import ( ) const ( - cacheKeyDownloadContracts = "downloadcontracts" - cacheKeyGougingParams = "gougingparams" + cacheKeyGougingParams = "gougingparams" + cacheKeyUsableHosts = "usablehosts" cacheEntryExpiry = 5 * time.Minute ) @@ -83,12 +83,12 @@ func (c *memoryCache) Invalidate(key string) { type ( Bus interface { - Contracts(ctx context.Context, opts api.ContractsOpts) ([]api.ContractMetadata, error) + UsableHosts(ctx context.Context, opts api.UsableHostOptions) ([]api.HostInfo, error) GougingParams(ctx context.Context) (api.GougingParams, error) } WorkerCache interface { - DownloadContracts(ctx context.Context) ([]api.ContractMetadata, error) + UsableHosts(ctx context.Context) ([]api.HostInfo, error) GougingParams(ctx context.Context) (api.GougingParams, error) HandleEvent(event webhooks.Event) error Subscribe(e EventSubscriber) error @@ -115,28 +115,28 @@ func NewCache(b Bus, logger *zap.Logger) WorkerCache { } } -func (c *cache) DownloadContracts(ctx context.Context) (contracts []api.ContractMetadata, err error) { +func (c *cache) UsableHosts(ctx context.Context) (hosts []api.HostInfo, err error) { // fetch directly from bus if the cache is not ready if !c.isReady() { c.logger.Warn(errCacheNotReady) - contracts, err = c.b.Contracts(ctx, api.ContractsOpts{}) + hosts, err = c.b.UsableHosts(ctx, api.UsableHostOptions{}) return } // fetch from bus if it's not cached or expired - value, found, expired := c.cache.Get(cacheKeyDownloadContracts) + value, found, expired := c.cache.Get(cacheKeyUsableHosts) if !found || expired { - contracts, err = c.b.Contracts(ctx, api.ContractsOpts{}) + hosts, err = c.b.UsableHosts(ctx, api.UsableHostOptions{}) if err == nil { - c.cache.Set(cacheKeyDownloadContracts, contracts) + c.cache.Set(cacheKeyUsableHosts, hosts) } - if expired && !contractsEqual(value.([]api.ContractMetadata), contracts) { - c.logger.Warn(fmt.Errorf("%w: key %v", errCacheOutdated, cacheKeyDownloadContracts)) + if expired && !hostsEqual(value.([]api.HostInfo), hosts) { + c.logger.Warn(fmt.Errorf("%w: key %v", errCacheOutdated, cacheKeyUsableHosts)) } return } - return value.([]api.ContractMetadata), nil + return value.([]api.HostInfo), nil } func (c *cache) GougingParams(ctx context.Context) (gp api.GougingParams, err error) { @@ -178,21 +178,14 @@ func (c *cache) HandleEvent(event webhooks.Event) (err error) { case api.EventConsensusUpdate: log = log.With("bh", e.BlockHeight, "ts", e.Timestamp) c.handleConsensusUpdate(e) + case api.EventSettingUpdate: + log = log.With("gouging", e.GougingSettings != nil, "pinned", e.PinnedSettings != nil, "upload", e.UploadSettings != nil, "ts", e.Timestamp) + c.handleSettingUpdate(e) case api.EventContractAdd: - log = log.With("fcid", e.Added.ID, "ts", e.Timestamp) - c.handleContractAdd(e) case api.EventContractArchive: - log = log.With("fcid", e.ContractID, "ts", e.Timestamp) - c.handleContractArchive(e) case api.EventContractRenew: - log = log.With("fcid", e.Renewal.ID, "renewedFrom", e.Renewal.RenewedFrom, "ts", e.Timestamp) - c.handleContractRenew(e) case api.EventHostUpdate: - log = log.With("hk", e.HostKey, "ts", e.Timestamp) - c.handleHostUpdate(e) - case api.EventSettingUpdate: - log = log.With("gouging", e.GougingSettings != nil, "pinned", e.PinnedSettings != nil, "upload", e.UploadSettings != nil, "ts", e.Timestamp) - c.handleSettingUpdate(e) + c.cache.Invalidate(cacheKeyUsableHosts) default: log.Info("unhandled event", e) return @@ -243,79 +236,6 @@ func (c *cache) handleConsensusUpdate(event api.EventConsensusUpdate) { c.cache.Set(cacheKeyGougingParams, gp) } -func (c *cache) handleContractAdd(event api.EventContractAdd) { - // return early if the cache doesn't have contracts - value, found, _ := c.cache.Get(cacheKeyDownloadContracts) - if !found { - return - } - contracts := value.([]api.ContractMetadata) - - // add the contract to the cache - for _, contract := range contracts { - if contract.ID == event.Added.ID { - return - } - } - contracts = append(contracts, event.Added) - c.cache.Set(cacheKeyDownloadContracts, contracts) -} - -func (c *cache) handleContractArchive(event api.EventContractArchive) { - // return early if the cache doesn't have contracts - value, found, _ := c.cache.Get(cacheKeyDownloadContracts) - if !found { - return - } - contracts := value.([]api.ContractMetadata) - - // remove the contract from the cache - for i, contract := range contracts { - if contract.ID == event.ContractID { - contracts = append(contracts[:i], contracts[i+1:]...) - break - } - } - c.cache.Set(cacheKeyDownloadContracts, contracts) -} - -func (c *cache) handleContractRenew(event api.EventContractRenew) { - // return early if the cache doesn't have contracts - value, found, _ := c.cache.Get(cacheKeyDownloadContracts) - if !found { - return - } - contracts := value.([]api.ContractMetadata) - - // update the renewed contract in the cache - for i, contract := range contracts { - if contract.ID == event.Renewal.RenewedFrom { - contracts[i] = event.Renewal - break - } - } - - c.cache.Set(cacheKeyDownloadContracts, contracts) -} - -func (c *cache) handleHostUpdate(e api.EventHostUpdate) { - // return early if the cache doesn't have contracts - value, found, _ := c.cache.Get(cacheKeyDownloadContracts) - if !found { - return - } - contracts := value.([]api.ContractMetadata) - - // update the host's IP in the cache - for i, contract := range contracts { - if contract.HostKey == e.HostKey { - contracts[i].HostIP = e.NetAddr - } - } - - c.cache.Set(cacheKeyDownloadContracts, contracts) -} - func (c *cache) handleSettingUpdate(e api.EventSettingUpdate) { // return early if the cache doesn't have gouging params to update value, found, _ := c.cache.Get(cacheKeyGougingParams) @@ -334,14 +254,14 @@ func (c *cache) handleSettingUpdate(e api.EventSettingUpdate) { c.cache.Set(cacheKeyGougingParams, gp) } -func contractsEqual(x, y []api.ContractMetadata) bool { +func hostsEqual(x, y []api.HostInfo) bool { if len(x) != len(y) { return false } - sort.Slice(x, func(i, j int) bool { return x[i].ID.String() < x[j].ID.String() }) - sort.Slice(y, func(i, j int) bool { return y[i].ID.String() < y[j].ID.String() }) + sort.Slice(x, func(i, j int) bool { return x[i].PublicKey.String() < x[j].PublicKey.String() }) + sort.Slice(y, func(i, j int) bool { return y[i].PublicKey.String() < y[j].PublicKey.String() }) for i, c := range x { - if c.ID.String() != y[i].ID.String() { + if c.PublicKey.String() != y[i].PublicKey.String() || c.SiamuxAddr != y[i].SiamuxAddr { return false } } diff --git a/internal/worker/cache_test.go b/internal/worker/cache_test.go index 2c2bc5d21..3b408408b 100644 --- a/internal/worker/cache_test.go +++ b/internal/worker/cache_test.go @@ -20,13 +20,17 @@ type mockBus struct { gougingParams api.GougingParams } -func (m *mockBus) Contracts(ctx context.Context, opts api.ContractsOpts) ([]api.ContractMetadata, error) { - return m.contracts, nil -} func (m *mockBus) GougingParams(ctx context.Context) (api.GougingParams, error) { return m.gougingParams, nil } +func (m *mockBus) UsableHosts(ctx context.Context, opts api.UsableHostOptions) (hosts []api.HostInfo, _ error) { + for _, c := range m.contracts { + hosts = append(hosts, c.HostInfo()) + } + return +} + type mockEventSubscriber struct { readyChan chan struct{} } @@ -78,11 +82,11 @@ func TestWorkerCache(t *testing.T) { c.Subscribe(m) // assert using cache before it's ready prints a warning - contracts, err := c.DownloadContracts(context.Background()) + hosts, err := c.UsableHosts(context.Background()) if err != nil { t.Fatal(err) - } else if len(contracts) != 3 { - t.Fatal("expected 3 contracts, got", len(contracts)) + } else if len(hosts) != 3 { + t.Fatal("expected 3 hosts, got", len(hosts)) } gp, err := c.GougingParams(context.Background()) if err != nil { @@ -105,8 +109,8 @@ func TestWorkerCache(t *testing.T) { // close the ready channel close(m.readyChan) - // fetch contracts & gouging params so they're cached - _, err = c.DownloadContracts(context.Background()) + // fetch usable hosts & gouging params so they're cached + _, err = c.UsableHosts(context.Background()) if err != nil { t.Fatal(err) } @@ -117,25 +121,25 @@ func TestWorkerCache(t *testing.T) { // update bus contracts & expire cache entry manually b.contracts = append(b.contracts, testContractMetadata(4)) - contracts, err = c.DownloadContracts(context.Background()) + hosts, err = c.UsableHosts(context.Background()) if err != nil { t.Fatal(err) - } else if len(contracts) != 3 { - t.Fatal("expected 3 contracts, got", len(contracts)) + } else if len(hosts) != 3 { + t.Fatal("expected 3 hosts, got", len(hosts)) } mc.mu.Lock() - mc.items[cacheKeyDownloadContracts].expiry = time.Now().Add(-1 * time.Minute) + mc.items[cacheKeyUsableHosts].expiry = time.Now().Add(-1 * time.Minute) mc.mu.Unlock() - // fetch contracts again, assert we have 4 now and we printed a warning to indicate the cache entry was invalid - contracts, err = c.DownloadContracts(context.Background()) + // fetch hosts again, assert we have 4 now and we printed a warning to indicate the cache entry was invalid + hosts, err = c.UsableHosts(context.Background()) if err != nil { t.Fatal(err) - } else if len(contracts) != 4 { - t.Fatal("expected 4 contracts, got", len(contracts)) + } else if len(hosts) != 4 { + t.Fatal("expected 4 hosts, got", len(hosts)) } else if logs := observedLogs.FilterLevelExact(zap.WarnLevel); logs.Len() != 1 { t.Fatal("expected 1 warning, got", logs.Len(), logs.All()) - } else if lines := observedLogs.TakeAll(); !strings.Contains(lines[0].Message, errCacheOutdated.Error()) || !strings.Contains(lines[0].Message, cacheKeyDownloadContracts) { + } else if lines := observedLogs.TakeAll(); !strings.Contains(lines[0].Message, errCacheOutdated.Error()) || !strings.Contains(lines[0].Message, cacheKeyUsableHosts) { t.Fatal("expected error message to contain 'cache is outdated', got", lines[0].Message) } diff --git a/stores/hostdb.go b/stores/hostdb.go index 606b66930..cdadc0ce2 100644 --- a/stores/hostdb.go +++ b/stores/hostdb.go @@ -117,9 +117,9 @@ func (s *SQLStore) RecordPriceTables(ctx context.Context, priceTableUpdate []api }) } -func (s *SQLStore) UsableHosts(ctx context.Context, offset, limit int) (hosts []api.HostInfo, err error) { +func (s *SQLStore) UsableHosts(ctx context.Context, minWindowStart uint64, offset, limit int) (hosts []api.HostInfo, err error) { err = s.db.Transaction(ctx, func(tx sql.DatabaseTx) error { - hosts, err = tx.UsableHosts(ctx, offset, limit) + hosts, err = tx.UsableHosts(ctx, minWindowStart, offset, limit) return err }) return diff --git a/stores/hostdb_test.go b/stores/hostdb_test.go index 94a5318f5..512aaba15 100644 --- a/stores/hostdb_test.go +++ b/stores/hostdb_test.go @@ -511,7 +511,7 @@ func TestUsableHosts(t *testing.T) { } // assert h1 and h2 are usable and ordered by score - hosts, err := ss.UsableHosts(ctx, 0, -1) + hosts, err := ss.UsableHosts(ctx, 0, 0, -1) if err != nil { t.Fatal(err) } else if len(hosts) != 2 { @@ -523,7 +523,7 @@ func TestUsableHosts(t *testing.T) { } // assert offset and limit - hosts, err = ss.UsableHosts(ctx, 1, 1) + hosts, err = ss.UsableHosts(ctx, 0, 1, 1) if err != nil { t.Fatal(err) } else if len(hosts) != 1 { @@ -531,7 +531,21 @@ func TestUsableHosts(t *testing.T) { } else if hosts[0].PublicKey != hks[0] { t.Fatal("unexpected", hosts) } - hosts, err = ss.UsableHosts(ctx, 2, 1) + hosts, err = ss.UsableHosts(ctx, 0, 2, 1) + if err != nil { + t.Fatal(err) + } else if len(hosts) != 0 { + t.Fatal("unexpected", len(hosts)) + } + + // assert minWindowStart is taken into account + hosts, err = ss.UsableHosts(ctx, 9, 0, -1) + if err != nil { + t.Fatal(err) + } else if len(hosts) != 2 { + t.Fatal("unexpected", len(hosts)) + } + hosts, err = ss.UsableHosts(ctx, 10, 0, -1) if err != nil { t.Fatal(err) } else if len(hosts) != 0 { diff --git a/stores/metadata_test.go b/stores/metadata_test.go index 0bac13260..6d03b85b4 100644 --- a/stores/metadata_test.go +++ b/stores/metadata_test.go @@ -660,6 +660,7 @@ func newTestContract(fcid types.FileContractID, hk types.PublicKey) api.Contract State: api.ContractStatePending, ContractPrice: types.NewCurrency64(1), InitialRenterFunds: types.NewCurrency64(2), + WindowStart: 10, } } @@ -840,6 +841,7 @@ func TestSQLMetadataStore(t *testing.T) { State: api.ContractStatePending, ContractPrice: types.NewCurrency64(1), InitialRenterFunds: types.NewCurrency64(2), + WindowStart: 10, } expectedObjSlab2 := object.Slab{ @@ -863,6 +865,7 @@ func TestSQLMetadataStore(t *testing.T) { State: api.ContractStatePending, ContractPrice: types.NewCurrency64(1), InitialRenterFunds: types.NewCurrency64(2), + WindowStart: 10, } // compare slabs diff --git a/stores/sql/database.go b/stores/sql/database.go index d223b94ef..cabebd5cd 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -370,7 +370,7 @@ type ( // UsableHosts returns a list of hosts that are ready to be used. That // means they are deemed usable by the autopilot, they are not gouging, // not blocked, not offline, etc. - UsableHosts(ctx context.Context, offset, limit int) ([]api.HostInfo, error) + UsableHosts(ctx context.Context, minWindowStart uint64, offset, limit int) ([]api.HostInfo, error) // WalletEvents returns all wallet events in the database. WalletEvents(ctx context.Context, offset, limit int) ([]wallet.Event, error) diff --git a/stores/sql/main.go b/stores/sql/main.go index 8abf06779..dba798755 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -2159,7 +2159,7 @@ func UnspentSiacoinElements(ctx context.Context, tx sql.Tx) (elements []types.Si return } -func UsableHosts(ctx context.Context, tx sql.Tx, offset, limit int) ([]api.HostInfo, error) { +func UsableHosts(ctx context.Context, tx sql.Tx, minWindowStart uint64, offset, limit int) ([]api.HostInfo, error) { // handle input parameters if offset < 0 { return nil, ErrNegativeOffset @@ -2167,8 +2167,11 @@ func UsableHosts(ctx context.Context, tx sql.Tx, offset, limit int) ([]api.HostI limit = math.MaxInt64 } - // only include allowed hosts + // only include contracts with a window start greater than the given value var whereExprs []string + whereExprs = append(whereExprs, "c.window_start > ?") + + // only include allowed hosts var hasAllowlist bool if err := tx.QueryRow(ctx, "SELECT EXISTS (SELECT 1 FROM host_allowlist_entries)").Scan(&hasAllowlist); err != nil { return nil, fmt.Errorf("failed to check for allowlist: %w", err) @@ -2212,14 +2215,15 @@ EXISTS ( SELECT h.public_key, COALESCE(h.net_address, ""), - COALESCE(h.settings->>'$.siamuxport', "") AS siamux_port + COALESCE(h.settings->>'$.siamuxport', "") AS siamux_port, + MAX(c.fcid) FROM hosts h INNER JOIN contracts c on c.host_id = h.id and c.archival_reason IS NULL INNER JOIN host_checks hc on hc.db_host_id = h.id and hc.db_autopilot_id = ? WHERE %s GROUP by h.id ORDER BY MAX(hc.score_age) * MAX(hc.score_collateral) * MAX(hc.score_interactions) * MAX(hc.score_storage_remaining) * MAX(hc.score_uptime) * MAX(hc.score_version) * MAX(hc.score_prices) DESC - LIMIT ? OFFSET ?`, strings.Join(whereExprs, "AND")), autopilotID, autopilotID, limit, offset) + LIMIT ? OFFSET ?`, strings.Join(whereExprs, " AND ")), autopilotID, minWindowStart, autopilotID, limit, offset) if err != nil { return nil, fmt.Errorf("failed to fetch hosts: %w", err) } @@ -2229,7 +2233,8 @@ EXISTS ( for rows.Next() { var hk PublicKey var addr, port string - err := rows.Scan(&hk, &addr, &port) + var fcid FileContractID + err := rows.Scan(&hk, &addr, &port, &fcid) if err != nil { return nil, fmt.Errorf("failed to scan host: %w", err) } @@ -2238,6 +2243,7 @@ EXISTS ( continue } hosts = append(hosts, api.HostInfo{ + ContractID: types.FileContractID(fcid), PublicKey: types.PublicKey(hk), SiamuxAddr: net.JoinHostPort(host, port), }) diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index db18795b3..f1e7408a6 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -1242,8 +1242,8 @@ func (tx *MainDatabaseTx) UpdateSlabHealth(ctx context.Context, limit int64, min return res.RowsAffected() } -func (tx *MainDatabaseTx) UsableHosts(ctx context.Context, offset, limit int) ([]api.HostInfo, error) { - return ssql.UsableHosts(ctx, tx, offset, limit) +func (tx *MainDatabaseTx) UsableHosts(ctx context.Context, minWindowStart uint64, offset, limit int) ([]api.HostInfo, error) { + return ssql.UsableHosts(ctx, tx, minWindowStart, offset, limit) } func (tx *MainDatabaseTx) WalletEvents(ctx context.Context, offset, limit int) ([]wallet.Event, error) { diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index 877a48648..8cdcee7ad 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -1242,8 +1242,8 @@ func (tx *MainDatabaseTx) UpdateSlabHealth(ctx context.Context, limit int64, min return res.RowsAffected() } -func (tx *MainDatabaseTx) UsableHosts(ctx context.Context, offset, limit int) ([]api.HostInfo, error) { - return ssql.UsableHosts(ctx, tx, offset, limit) +func (tx *MainDatabaseTx) UsableHosts(ctx context.Context, minWindowStart uint64, offset, limit int) ([]api.HostInfo, error) { + return ssql.UsableHosts(ctx, tx, minWindowStart, offset, limit) } func (tx *MainDatabaseTx) WalletEvents(ctx context.Context, offset, limit int) ([]wallet.Event, error) { diff --git a/worker/bench_test.go b/worker/bench_test.go index 3cde1792a..860164a8f 100644 --- a/worker/bench_test.go +++ b/worker/bench_test.go @@ -45,7 +45,7 @@ func BenchmarkDownloaderSingleObject(b *testing.B) { b.SetBytes(o.Size) b.ResetTimer() for i := 0; i < b.N; i++ { - err = w.downloadManager.DownloadObject(context.Background(), io.Discard, *o.Object, 0, uint64(o.Size), w.Contracts()) + err = w.downloadManager.DownloadObject(context.Background(), io.Discard, *o.Object, 0, uint64(o.Size), w.UsableHosts()) if err != nil { b.Fatal(err) } diff --git a/worker/download.go b/worker/download.go index ca8d9a213..cd02c5979 100644 --- a/worker/download.go +++ b/worker/download.go @@ -168,7 +168,7 @@ func newDownloadManager(ctx context.Context, uploadKey *utils.UploadKey, hm Host } } -func (mgr *downloadManager) DownloadObject(ctx context.Context, w io.Writer, o object.Object, offset, length uint64, contracts []api.ContractMetadata) (err error) { +func (mgr *downloadManager) DownloadObject(ctx context.Context, w io.Writer, o object.Object, offset, length uint64, hosts []api.HostInfo) (err error) { // calculate what slabs we need var ss []slabSlice for _, s := range o.Slabs { @@ -200,12 +200,12 @@ func (mgr *downloadManager) DownloadObject(ctx context.Context, w io.Writer, o o } // refresh the downloaders - mgr.refreshDownloaders(contracts) + mgr.refreshDownloaders(hosts) - // build a map to count available shards later - hosts := make(map[types.PublicKey]struct{}) - for _, c := range contracts { - hosts[c.HostKey] = struct{}{} + // map available hosts + available := make(map[types.PublicKey]struct{}) + for _, h := range hosts { + available[h.PublicKey] = struct{}{} } // create the cipher writer @@ -263,14 +263,14 @@ func (mgr *downloadManager) DownloadObject(ctx context.Context, w io.Writer, o o } // check if we have enough downloaders - var available uint8 + var numAvailable uint8 for _, s := range next.Shards { - if isSectorAvailable(s, hosts) { - available++ + if isSectorAvailable(s, available) { + numAvailable++ } } - if available < next.MinShards { - responseChan <- &slabDownloadResponse{err: fmt.Errorf("%w: %v/%v", errDownloadNotEnoughHosts, available, next.MinShards)} + if numAvailable < next.MinShards { + responseChan <- &slabDownloadResponse{err: fmt.Errorf("%w: %v/%v", errDownloadNotEnoughHosts, numAvailable, next.MinShards)} return } @@ -374,14 +374,14 @@ outer: return nil } -func (mgr *downloadManager) DownloadSlab(ctx context.Context, slab object.Slab, contracts []api.ContractMetadata) ([][]byte, bool, error) { +func (mgr *downloadManager) DownloadSlab(ctx context.Context, slab object.Slab, hosts []api.HostInfo) ([][]byte, bool, error) { // refresh the downloaders - mgr.refreshDownloaders(contracts) + mgr.refreshDownloaders(hosts) - // grab available hosts + // map available hosts available := make(map[types.PublicKey]struct{}) - for _, c := range contracts { - available[c.HostKey] = struct{}{} + for _, h := range hosts { + available[h.PublicKey] = struct{}{} } // count how many shards we can download (best-case) @@ -487,14 +487,14 @@ func (mgr *downloadManager) fetchPartialSlab(ctx context.Context, key object.Enc return data, nil, nil } -func (mgr *downloadManager) refreshDownloaders(contracts []api.ContractMetadata) { +func (mgr *downloadManager) refreshDownloaders(hosts []api.HostInfo) { mgr.mu.Lock() defer mgr.mu.Unlock() // build map - want := make(map[types.PublicKey]api.ContractMetadata) - for _, c := range contracts { - want[c.HostKey] = c + want := make(map[types.PublicKey]string) + for _, h := range hosts { + want[h.PublicKey] = h.SiamuxAddr } // prune downloaders @@ -510,12 +510,9 @@ func (mgr *downloadManager) refreshDownloaders(contracts []api.ContractMetadata) } // update downloaders - for _, c := range want { - // create a host - host := mgr.hm.Host(c.HostKey, c.ID, c.SiamuxAddr) - downloader := newDownloader(mgr.shutdownCtx, host) - mgr.downloaders[c.HostKey] = downloader - go downloader.processQueue() + for hk, siamuxAddr := range want { + mgr.downloaders[hk] = newDownloader(mgr.shutdownCtx, mgr.hm.Downloader(hk, siamuxAddr)) + go mgr.downloaders[hk].processQueue() } } diff --git a/worker/downloader.go b/worker/downloader.go index 9720237a1..00403da32 100644 --- a/worker/downloader.go +++ b/worker/downloader.go @@ -25,7 +25,7 @@ var ( type ( downloader struct { - host Host + host SectorDownloader statsDownloadSpeedBytesPerMS *utils.DataPoints // keep track of this separately for stats (no decay is applied) statsSectorDownloadEstimateInMS *utils.DataPoints @@ -41,9 +41,9 @@ type ( } ) -func newDownloader(ctx context.Context, host Host) *downloader { +func newDownloader(ctx context.Context, h SectorDownloader) *downloader { return &downloader{ - host: host, + host: h, statsSectorDownloadEstimateInMS: utils.NewDataPoints(10 * time.Minute), statsDownloadSpeedBytesPerMS: utils.NewDataPoints(0), diff --git a/worker/downloader_test.go b/worker/downloader_test.go index 8097b8304..ca004582b 100644 --- a/worker/downloader_test.go +++ b/worker/downloader_test.go @@ -14,7 +14,7 @@ func TestDownloaderStopped(t *testing.T) { dm := w.downloadManager h := hosts[0] - dm.refreshDownloaders(w.Contracts()) + dm.refreshDownloaders(w.UsableHosts()) dl := w.downloadManager.downloaders[h.PublicKey()] dl.Stop() diff --git a/worker/host.go b/worker/host.go index 2ecd95233..18db3c3cc 100644 --- a/worker/host.go +++ b/worker/host.go @@ -17,10 +17,14 @@ import ( ) type ( + SectorDownloader interface { + DownloadSector(ctx context.Context, w io.Writer, root types.Hash256, offset, length uint32, overpay bool) error + PublicKey() types.PublicKey + } + Host interface { PublicKey() types.PublicKey - DownloadSector(ctx context.Context, w io.Writer, root types.Hash256, offset, length uint32, overpay bool) error UploadSector(ctx context.Context, sectorRoot types.Hash256, sector *[rhpv2.SectorSize]byte, rev types.FileContractRevision) error PriceTable(ctx context.Context, rev *types.FileContractRevision) (api.HostPriceTable, types.Currency, error) @@ -32,11 +36,21 @@ type ( } HostManager interface { - Host(hk types.PublicKey, fcid types.FileContractID, siamuxAddr string) Host + Downloader(hk types.PublicKey, siamuxAddr string) SectorDownloader + Host(hi api.HostInfo) Host } ) type ( + sectorDownloader struct { + hk types.PublicKey + siamuxAddr string + + acc *worker.Account + pts *priceTables + rhp3 *rhp3.Client + } + host struct { hk types.PublicKey renterKey types.PrivateKey @@ -57,50 +71,34 @@ var ( _ HostManager = (*Worker)(nil) ) -func (w *Worker) Host(hk types.PublicKey, fcid types.FileContractID, siamuxAddr string) Host { +func (w *Worker) Downloader(hk types.PublicKey, siamuxAddr string) SectorDownloader { + return §orDownloader{ + hk: hk, + siamuxAddr: siamuxAddr, + + acc: w.accounts.ForHost(hk), + pts: w.priceTables, + rhp3: w.rhp3Client, + } +} + +func (w *Worker) Host(hi api.HostInfo) Host { return &host{ client: w.rhp3Client, - hk: hk, - acc: w.accounts.ForHost(hk), + hk: hi.PublicKey, + acc: w.accounts.ForHost(hi.PublicKey), bus: w.bus, contractSpendingRecorder: w.contractSpendingRecorder, - logger: w.logger.Named(hk.String()[:4]), - fcid: fcid, - siamuxAddr: siamuxAddr, - renterKey: w.deriveRenterKey(hk), + logger: w.logger.Named(hi.PublicKey.String()[:4]), + fcid: hi.ContractID, + siamuxAddr: hi.SiamuxAddr, + renterKey: w.deriveRenterKey(hi.PublicKey), priceTables: w.priceTables, } } func (h *host) PublicKey() types.PublicKey { return h.hk } -func (h *host) DownloadSector(ctx context.Context, w io.Writer, root types.Hash256, offset, length uint32, overpay bool) (err error) { - var amount types.Currency - return h.acc.WithWithdrawal(func() (types.Currency, error) { - pt, uptc, err := h.priceTables.fetch(ctx, h.hk, nil) - if err != nil { - return types.ZeroCurrency, err - } - hpt := pt.HostPriceTable - amount = uptc - - // check for download gouging specifically - gc, err := GougingCheckerFromContext(ctx, overpay) - if err != nil { - return amount, err - } - if breakdown := gc.Check(nil, &hpt); breakdown.DownloadErr != "" { - return amount, fmt.Errorf("%w: %v", gouging.ErrPriceTableGouging, breakdown.DownloadErr) - } - - cost, err := h.client.ReadSector(ctx, offset, length, root, w, h.hk, h.siamuxAddr, h.acc.ID(), h.acc.Key(), hpt) - if err != nil { - return amount, err - } - return amount.Add(cost), nil - }) -} - func (h *host) UploadSector(ctx context.Context, sectorRoot types.Hash256, sector *[rhpv2.SectorSize]byte, rev types.FileContractRevision) error { // fetch price table var pt rhpv3.HostPriceTable @@ -242,3 +240,20 @@ func (h *host) priceTable(ctx context.Context, rev *types.FileContractRevision) } return pt.HostPriceTable, cost, nil } + +func (d *sectorDownloader) DownloadSector(ctx context.Context, w io.Writer, root types.Hash256, offset, length uint32, overpay bool) (err error) { + return d.acc.WithWithdrawal(func() (types.Currency, error) { + pt, ptc, err := d.pts.fetch(ctx, d.hk, nil) + if err != nil { + return types.ZeroCurrency, err + } + + cost, err := d.rhp3.ReadSector(ctx, offset, length, root, w, d.hk, d.siamuxAddr, d.acc.ID(), d.acc.Key(), pt.HostPriceTable) + if err != nil { + return ptc, err + } + return ptc.Add(cost), nil + }) +} + +func (d *sectorDownloader) PublicKey() types.PublicKey { return d.hk } diff --git a/worker/host_test.go b/worker/host_test.go index f6ea236cd..1805b756a 100644 --- a/worker/host_test.go +++ b/worker/host_test.go @@ -38,7 +38,7 @@ func newTestHostManager(t test.TestingCommon) *testHostManager { return &testHostManager{tt: test.NewTT(t), hosts: make(map[types.PublicKey]*testHost)} } -func (hm *testHostManager) Host(hk types.PublicKey, fcid types.FileContractID, siamuxAddr string) Host { +func (hm *testHostManager) Downloader(hk types.PublicKey, siamuxAddr string) SectorDownloader { hm.mu.Lock() defer hm.mu.Unlock() @@ -48,6 +48,16 @@ func (hm *testHostManager) Host(hk types.PublicKey, fcid types.FileContractID, s return hm.hosts[hk] } +func (hm *testHostManager) Host(hi api.HostInfo) Host { + hm.mu.Lock() + defer hm.mu.Unlock() + + if _, ok := hm.hosts[hi.PublicKey]; !ok { + hm.tt.Fatal("host not found") + } + return hm.hosts[hi.PublicKey] +} + func (hm *testHostManager) addHost(h *testHost) { hm.mu.Lock() defer hm.mu.Unlock() diff --git a/worker/migrations.go b/worker/migrations.go index 13b31aa52..7756c1766 100644 --- a/worker/migrations.go +++ b/worker/migrations.go @@ -11,44 +11,39 @@ import ( "go.uber.org/zap" ) -func (w *Worker) migrate(ctx context.Context, s object.Slab, contractSet string, dlContracts, ulContracts []api.ContractMetadata, bh uint64) error { - // make a map of good hosts - goodHosts := make(map[types.PublicKey]map[types.FileContractID]bool) - for _, c := range ulContracts { - if goodHosts[c.HostKey] == nil { - goodHosts[c.HostKey] = make(map[types.FileContractID]bool) - } - goodHosts[c.HostKey][c.ID] = false +func (w *Worker) migrate(ctx context.Context, s object.Slab, contractSet string, dlHosts []api.HostInfo, ulContracts []api.ContractMetadata, bh uint64) error { + // map usable hosts + usableHosts := make(map[types.PublicKey]struct{}) + for _, h := range dlHosts { + usableHosts[h.PublicKey] = struct{}{} } - // make a map of hosts we can download from - h2c := make(map[types.PublicKey]types.FileContractID) - for _, c := range append(dlContracts, ulContracts...) { - h2c[c.HostKey] = c.ID + // map usable contracts + usableContracts := make(map[types.FileContractID]struct{}) + for _, c := range ulContracts { + usableContracts[c.ID] = struct{}{} } // collect indices of shards that need to be migrated - usedMap := make(map[types.PublicKey]struct{}) + seen := make(map[types.PublicKey]struct{}) var shardIndices []int SHARDS: for i, shard := range s.Shards { for hk, fcids := range shard.Contracts { for _, fcid := range fcids { // bad host - if _, exists := goodHosts[hk]; !exists { + if _, ok := usableHosts[hk]; !ok { continue } // bad contract - if _, exists := goodHosts[hk][fcid]; !exists { + if _, ok := usableContracts[fcid]; !ok { continue } // reused host - _, exists := usedMap[hk] - if exists { + if _, used := seen[hk]; used { continue } - goodHosts[hk][fcid] = true - usedMap[hk] = struct{}{} + seen[hk] = struct{}{} continue SHARDS } } @@ -65,7 +60,7 @@ SHARDS: // which we have a contract (so hosts from which we can download) missingShards := len(shardIndices) for _, si := range shardIndices { - if _, exists := h2c[s.Shards[si].LatestHost]; exists { + if _, exists := usableHosts[s.Shards[si].LatestHost]; exists { missingShards-- continue } @@ -87,7 +82,7 @@ SHARDS: defer mem.Release() // download the slab - shards, surchargeApplied, err := w.downloadManager.DownloadSlab(ctx, s, dlContracts) + shards, surchargeApplied, err := w.downloadManager.DownloadSlab(ctx, s, dlHosts) if err != nil { w.logger.Debugw("slab migration failed", zap.Error(err), @@ -107,10 +102,10 @@ SHARDS: // filter upload contracts to the ones we haven't used yet var allowed []api.ContractMetadata - for c := range ulContracts { - if _, exists := usedMap[ulContracts[c].HostKey]; !exists { - allowed = append(allowed, ulContracts[c]) - usedMap[ulContracts[c].HostKey] = struct{}{} + for _, c := range ulContracts { + if _, used := seen[c.HostKey]; !used { + allowed = append(allowed, c) + seen[c.HostKey] = struct{}{} } } diff --git a/worker/mocks_test.go b/worker/mocks_test.go index d93e18c9e..e96536d6e 100644 --- a/worker/mocks_test.go +++ b/worker/mocks_test.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "math" + "net" "sync" "time" @@ -271,6 +272,25 @@ func (hs *hostStoreMock) Host(ctx context.Context, hostKey types.PublicKey) (api return h.hi, nil } +func (hs *hostStoreMock) UsableHosts(ctx context.Context, opts api.UsableHostOptions) (hosts []api.HostInfo, _ error) { + hs.mu.Lock() + defer hs.mu.Unlock() + + for _, h := range hs.hosts { + host, _, err := net.SplitHostPort(h.hi.NetAddress) + if err != nil || host == "" { + continue + } + + hosts = append(hosts, api.HostInfo{ + PublicKey: h.hk, + SiamuxAddr: net.JoinHostPort(host, h.hi.Settings.SiaMuxPort), + }) + } + + return +} + func (hs *hostStoreMock) RecordHostScans(ctx context.Context, scans []api.HostScan) error { return nil } diff --git a/worker/pricetables.go b/worker/pricetables.go index fc3901f67..0bf3e3c9b 100644 --- a/worker/pricetables.go +++ b/worker/pricetables.go @@ -171,7 +171,7 @@ func (p *priceTable) fetch(ctx context.Context, rev *types.FileContractRevision) } // otherwise fetch it - h := p.hm.Host(p.hk, types.FileContractID{}, host.Settings.SiamuxAddr()) + h := p.hm.Host(api.HostInfo{PublicKey: p.hk, SiamuxAddr: host.Settings.SiamuxAddr()}) hpt, cost, err = h.PriceTable(ctx, rev) // record it in the background diff --git a/worker/upload.go b/worker/upload.go index 8fdfefe2e..2b07963ea 100644 --- a/worker/upload.go +++ b/worker/upload.go @@ -347,7 +347,7 @@ func (mgr *uploadManager) newUploader(os ObjectStore, cl ContractLocker, cs Cont statsSectorUploadSpeedBytesPerMS: utils.NewDataPoints(0), // covered by mutex - host: hm.Host(c.HostKey, c.ID, c.SiamuxAddr), + host: hm.Host(c.HostInfo()), fcid: c.ID, endHeight: c.WindowEnd, queue: make([]*sectorUploadReq, 0), diff --git a/worker/upload_test.go b/worker/upload_test.go index fd9a68251..da6cdea20 100644 --- a/worker/upload_test.go +++ b/worker/upload_test.go @@ -60,7 +60,7 @@ func TestUpload(t *testing.T) { // download the data and assert it matches var buf bytes.Buffer - err = dl.DownloadObject(context.Background(), &buf, *o.Object, 0, uint64(o.Size), w.Contracts()) + err = dl.DownloadObject(context.Background(), &buf, *o.Object, 0, uint64(o.Size), w.UsableHosts()) if err != nil { t.Fatal(err) } else if !bytes.Equal(data, buf.Bytes()) { @@ -69,17 +69,17 @@ func TestUpload(t *testing.T) { // filter contracts to have (at most) min shards used contracts var n int - var filtered []api.ContractMetadata + var filtered []api.HostInfo for _, md := range w.Contracts() { // add unused contracts if _, used := used[md.HostKey]; !used { - filtered = append(filtered, md) + filtered = append(filtered, md.HostInfo()) continue } // add min shards used contracts if n < int(params.rs.MinShards) { - filtered = append(filtered, md) + filtered = append(filtered, md.HostInfo()) n++ } } @@ -94,8 +94,8 @@ func TestUpload(t *testing.T) { } // filter out one contract - expect download to fail - for i, md := range filtered { - if _, used := used[md.HostKey]; used { + for i, h := range filtered { + if _, used := used[h.PublicKey]; used { filtered = append(filtered[:i], filtered[i+1:]...) break } @@ -165,7 +165,7 @@ func TestUploadPackedSlab(t *testing.T) { // download the data and assert it matches var buf bytes.Buffer - err = dl.DownloadObject(context.Background(), &buf, *o.Object, 0, uint64(o.Size), w.Contracts()) + err = dl.DownloadObject(context.Background(), &buf, *o.Object, 0, uint64(o.Size), w.UsableHosts()) if err != nil { t.Fatal(err) } else if !bytes.Equal(data, buf.Bytes()) { @@ -201,7 +201,7 @@ func TestUploadPackedSlab(t *testing.T) { // download the data again and assert it matches buf.Reset() - err = dl.DownloadObject(context.Background(), &buf, *o.Object, 0, uint64(o.Size), w.Contracts()) + err = dl.DownloadObject(context.Background(), &buf, *o.Object, 0, uint64(o.Size), w.UsableHosts()) if err != nil { t.Fatal(err) } else if !bytes.Equal(data, buf.Bytes()) { @@ -314,7 +314,7 @@ func TestMigrateLostSector(t *testing.T) { } // download the slab - shards, _, err := dl.DownloadSlab(context.Background(), slab.Slab, w.Contracts()) + shards, _, err := dl.DownloadSlab(context.Background(), slab.Slab, w.UsableHosts()) if err != nil { t.Fatal(err) } @@ -417,7 +417,7 @@ func TestUploadShards(t *testing.T) { } // download the slab - shards, _, err := dl.DownloadSlab(context.Background(), slab.Slab, w.Contracts()) + shards, _, err := dl.DownloadSlab(context.Background(), slab.Slab, w.UsableHosts()) if err != nil { t.Fatal(err) } @@ -470,16 +470,16 @@ func TestUploadShards(t *testing.T) { } // create download contracts - contracts = contracts[:0] + var hosts []api.HostInfo for _, c := range w.Contracts() { if _, bad := badHosts[c.HostKey]; !bad { - contracts = append(contracts, c) + hosts = append(hosts, c.HostInfo()) } } // download the data and assert it matches var buf bytes.Buffer - err = dl.DownloadObject(context.Background(), &buf, *o.Object, 0, uint64(o.Size), contracts) + err = dl.DownloadObject(context.Background(), &buf, *o.Object, 0, uint64(o.Size), hosts) if err != nil { t.Fatal(err) } else if !bytes.Equal(data, buf.Bytes()) { @@ -621,7 +621,7 @@ func TestUploadRegression(t *testing.T) { // download data for good measure var buf bytes.Buffer - err = dl.DownloadObject(context.Background(), &buf, *o.Object, 0, uint64(o.Size), w.Contracts()) + err = dl.DownloadObject(context.Background(), &buf, *o.Object, 0, uint64(o.Size), w.UsableHosts()) if err != nil { t.Fatal(err) } else if !bytes.Equal(data, buf.Bytes()) { diff --git a/worker/uploader.go b/worker/uploader.go index 410760b1a..30a298ff1 100644 --- a/worker/uploader.go +++ b/worker/uploader.go @@ -77,7 +77,7 @@ func (u *uploader) Refresh(c api.ContractMetadata) { u.mu.Lock() defer u.mu.Unlock() - u.host = u.hm.Host(c.HostKey, c.ID, c.SiamuxAddr) + u.host = u.hm.Host(c.HostInfo()) u.fcid = c.ID u.siamuxAddr = c.SiamuxAddr u.endHeight = c.WindowEnd diff --git a/worker/worker.go b/worker/worker.go index eece75ce7..0c7e6a776 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -101,6 +101,7 @@ type ( RecordContractSpending(ctx context.Context, records []api.ContractSpendingRecord) error Host(ctx context.Context, hostKey types.PublicKey) (api.Host, error) + UsableHosts(ctx context.Context, opts api.UsableHostOptions) ([]api.HostInfo, error) } ObjectStore interface { @@ -206,10 +207,9 @@ func (w *Worker) isStopped() bool { return false } -func (w *Worker) withRevision(ctx context.Context, fetchTimeout time.Duration, fcid types.FileContractID, hk types.PublicKey, siamuxAddr string, lockPriority int, fn func(rev types.FileContractRevision) error) error { - return w.withContractLock(ctx, fcid, lockPriority, func() error { - h := w.Host(hk, fcid, siamuxAddr) - rev, err := h.FetchRevision(ctx, fetchTimeout) +func (w *Worker) withRevision(ctx context.Context, hi api.HostInfo, fetchTimeout time.Duration, lockPriority int, fn func(rev types.FileContractRevision) error) error { + return w.withContractLock(ctx, hi.ContractID, lockPriority, func() error { + rev, err := w.Host(hi).FetchRevision(ctx, fetchTimeout) if err != nil { return err } @@ -270,7 +270,7 @@ func (w *Worker) fetchContracts(ctx context.Context, metadatas []api.ContractMet worker := func() { for md := range reqs { var revision types.FileContractRevision - err := w.withRevision(ctx, timeout, md.ID, md.HostKey, md.SiamuxAddr, lockingPriorityActiveContractRevision, func(rev types.FileContractRevision) error { + err := w.withRevision(ctx, md.HostInfo(), timeout, lockingPriorityActiveContractRevision, func(rev types.FileContractRevision) error { revision = rev return nil }) @@ -343,7 +343,7 @@ func (w *Worker) rhpPriceTableHandler(jc jape.Context) { defer cancel() } - hpt, err = w.Host(rptr.HostKey, types.FileContractID{}, rptr.SiamuxAddr).PriceTableUnpaid(ctx) + hpt, err = w.Host(api.HostInfo{PublicKey: rptr.HostKey, SiamuxAddr: rptr.SiamuxAddr}).PriceTableUnpaid(ctx) if jc.Check("could not get price table", err) != nil { return } @@ -395,22 +395,20 @@ func (w *Worker) slabMigrateHandler(jc jape.Context) { // attach gouging checker to the context ctx = WithGougingChecker(ctx, w.bus, up.GougingParams) - // fetch all contracts - dlContracts, err := w.bus.Contracts(ctx, api.ContractsOpts{}) - if jc.Check("couldn't fetch contracts from bus", err) != nil { + // fetch hosts + dlHosts, err := w.bus.UsableHosts(ctx, api.UsableHostOptions{}) + if jc.Check("couldn't fetch hosts from bus", err) != nil { return } - // filter upload contracts - var ulContracts []api.ContractMetadata - for _, c := range dlContracts { - if c.InSet(up.ContractSet) { - ulContracts = append(ulContracts, c) - } + // fetch contracts + ulContracts, err := w.bus.Contracts(ctx, api.ContractsOpts{ContractSet: up.ContractSet}) + if jc.Check("couldn't fetch contracts from bus", err) != nil { + return } // migrate the slab and handle alerts - err = w.migrate(ctx, slab, up.ContractSet, dlContracts, ulContracts, up.CurrentHeight) + err = w.migrate(ctx, slab, up.ContractSet, dlHosts, ulContracts, up.CurrentHeight) if err != nil && !utils.IsErr(err, api.ErrSlabNotFound) { var objects []api.ObjectMetadata if res, err := w.bus.Objects(ctx, "", api.ListObjectOptions{SlabEncryptionKey: slab.EncryptionKey}); err != nil { @@ -1156,9 +1154,9 @@ func (w *Worker) headObject(ctx context.Context, bucket, key string, onlyMetadat }, res, nil } -func (w *Worker) FundAccount(ctx context.Context, fcid types.FileContractID, hk types.PublicKey, desired types.Currency) error { +func (w *Worker) FundAccount(ctx context.Context, hi api.HostInfo, desired types.Currency) error { // calculate the deposit amount - acc := w.accounts.ForHost(hk) + acc := w.accounts.ForHost(hi.PublicKey) return acc.WithDeposit(func(balance types.Currency) (types.Currency, error) { // return early if we have the desired balance if balance.Cmp(desired) >= 0 { @@ -1168,7 +1166,7 @@ func (w *Worker) FundAccount(ctx context.Context, fcid types.FileContractID, hk // fund the account var err error - deposit, err = w.bus.FundAccount(ctx, acc.ID(), fcid, desired.Sub(balance)) + deposit, err = w.bus.FundAccount(ctx, acc.ID(), hi.ContractID, desired.Sub(balance)) if err != nil { if rhp3.IsBalanceMaxExceeded(err) { acc.ScheduleSync() @@ -1208,8 +1206,8 @@ func (w *Worker) GetObject(ctx context.Context, bucket, key string, opts api.Dow return nil, fmt.Errorf("couldn't fetch gouging parameters from bus: %w", err) } - // fetch all contracts - contracts, err := w.cache.DownloadContracts(ctx) + // fetch usable hosts + hosts, err := w.cache.UsableHosts(ctx) if err != nil { return nil, fmt.Errorf("couldn't fetch contracts from bus: %w", err) } @@ -1224,13 +1222,13 @@ func (w *Worker) GetObject(ctx context.Context, bucket, key string, opts api.Dow // otherwise return a pipe reader downloadFn := func(wr io.Writer, offset, length int64) error { ctx = WithGougingChecker(ctx, w.bus, gp) - err = w.downloadManager.DownloadObject(ctx, wr, obj, uint64(offset), uint64(length), contracts) + err = w.downloadManager.DownloadObject(ctx, wr, obj, uint64(offset), uint64(length), hosts) if err != nil { w.logger.Error(err) if !errors.Is(err, ErrShuttingDown) && !errors.Is(err, errDownloadCancelled) && !errors.Is(err, io.ErrClosedPipe) { - w.registerAlert(newDownloadFailedAlert(bucket, key, offset, length, int64(len(contracts)), err)) + w.registerAlert(newDownloadFailedAlert(bucket, key, offset, length, int64(len(hosts)), err)) } return fmt.Errorf("failed to download object: %w", err) } @@ -1255,7 +1253,7 @@ func (w *Worker) HeadObject(ctx context.Context, bucket, key string, opts api.He return res, err } -func (w *Worker) SyncAccount(ctx context.Context, fcid types.FileContractID, hk types.PublicKey, siamuxAddr string) error { +func (w *Worker) SyncAccount(ctx context.Context, hi api.HostInfo) error { // attach gouging checker gp, err := w.cache.GougingParams(ctx) if err != nil { @@ -1264,9 +1262,8 @@ func (w *Worker) SyncAccount(ctx context.Context, fcid types.FileContractID, hk ctx = WithGougingChecker(ctx, w.bus, gp) // sync the account - h := w.Host(hk, fcid, siamuxAddr) - err = w.withRevision(ctx, defaultRevisionFetchTimeout, fcid, hk, siamuxAddr, lockingPrioritySyncing, func(rev types.FileContractRevision) error { - return h.SyncAccount(ctx, &rev) + err = w.withRevision(ctx, hi, defaultRevisionFetchTimeout, lockingPrioritySyncing, func(rev types.FileContractRevision) error { + return w.Host(hi).SyncAccount(ctx, &rev) }) if err != nil { return fmt.Errorf("failed to sync account; %w", err) diff --git a/worker/worker_test.go b/worker/worker_test.go index 4472f64b5..eb94fd38f 100644 --- a/worker/worker_test.go +++ b/worker/worker_test.go @@ -130,6 +130,17 @@ func (w *testWorker) RenewContract(hk types.PublicKey) *contractMock { return renewal } +func (w *testWorker) UsableHosts() (hosts []api.HostInfo) { + metadatas, err := w.cs.Contracts(context.Background(), api.ContractsOpts{}) + if err != nil { + w.tt.Fatal(err) + } + for _, md := range metadatas { + hosts = append(hosts, md.HostInfo()) + } + return +} + func newTestWorkerCfg() config.Worker { return config.Worker{ AccountsRefillInterval: time.Second, From a14bf7adc6db5746893a13848474fdf0e809fc3c Mon Sep 17 00:00:00 2001 From: PJ Date: Fri, 1 Nov 2024 13:28:15 +0100 Subject: [PATCH 283/708] testing: fix integration tests --- internal/test/e2e/cluster.go | 3 +++ internal/worker/accounts.go | 2 -- internal/worker/cache.go | 3 +++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/internal/test/e2e/cluster.go b/internal/test/e2e/cluster.go index 7f154798b..761c8c48b 100644 --- a/internal/test/e2e/cluster.go +++ b/internal/test/e2e/cluster.go @@ -717,6 +717,9 @@ func (c *TestCluster) sync() { func (c *TestCluster) WaitForAccounts() []api.Account { c.tt.Helper() + // mine a block (ensures worker cache gets invalidated) + c.MineBlocks(1) + // build hosts map hostsMap := make(map[types.PublicKey]struct{}) for _, host := range c.hosts { diff --git a/internal/worker/accounts.go b/internal/worker/accounts.go index 7f938ea8e..94eae4c20 100644 --- a/internal/worker/accounts.go +++ b/internal/worker/accounts.go @@ -313,8 +313,6 @@ func (a *AccountMgr) refillAccounts() { if err != nil { a.logger.Errorw(fmt.Sprintf("failed to fetch usable hosts: %v", err)) return - } else if len(hosts) == 0 { - return } // refill accounts in separate goroutines diff --git a/internal/worker/cache.go b/internal/worker/cache.go index 2ea434928..2de374bae 100644 --- a/internal/worker/cache.go +++ b/internal/worker/cache.go @@ -224,6 +224,9 @@ func (c *cache) isReady() bool { } func (c *cache) handleConsensusUpdate(event api.EventConsensusUpdate) { + // invalidate usable hosts cache + c.cache.Invalidate(cacheKeyUsableHosts) + // return early if the doesn't have gouging params to update value, found, _ := c.cache.Get(cacheKeyGougingParams) if !found { From bf6aabe60867fc8ca7f0f46d017c16bc55f2191a Mon Sep 17 00:00:00 2001 From: PJ Date: Fri, 1 Nov 2024 17:35:41 +0100 Subject: [PATCH 284/708] bus: add gouging check and extend TestGouging --- api/host.go | 3 +++ bus/routes.go | 16 +++++++++++- internal/test/e2e/gouging_test.go | 43 +++++++++++++++++++------------ stores/sql/main.go | 13 ++++++++-- 4 files changed, 56 insertions(+), 19 deletions(-) diff --git a/api/host.go b/api/host.go index f5056d89c..163c08ba5 100644 --- a/api/host.go +++ b/api/host.go @@ -129,6 +129,9 @@ type ( HostInfo struct { PublicKey types.PublicKey `json:"publicKey"` SiamuxAddr string `json:"siamuxAddr"` + + Prices HostPriceTable `json:"prices"` + Settings rhpv2.HostSettings `json:"settings"` } HostInteractions struct { diff --git a/bus/routes.go b/bus/routes.go index 28141ed46..d9227bf06 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -505,7 +505,21 @@ func (b *Bus) hostsHandlerGET(jc jape.Context) { if jc.Check("couldn't fetch hosts", err) != nil { return } - jc.Encode(hosts) + + gp, err := b.gougingParams(jc.Request.Context()) + if jc.Check("could not get gouging parameters", err) != nil { + return + } + gc := gouging.NewChecker(gp.GougingSettings, gp.ConsensusState, nil, nil) + + filtered := hosts[:0] + for _, host := range hosts { + if gc.Check(&host.Settings, &host.Prices.HostPriceTable).Gouging() { + continue + } + filtered = append(filtered, host) + } + jc.Encode(filtered) } func (b *Bus) hostsHandlerPOST(jc jape.Context) { diff --git a/internal/test/e2e/gouging_test.go b/internal/test/e2e/gouging_test.go index 54ea827a4..3ce176da7 100644 --- a/internal/test/e2e/gouging_test.go +++ b/internal/test/e2e/gouging_test.go @@ -10,7 +10,6 @@ import ( "time" rhpv2 "go.sia.tech/core/rhp/v2" - "go.sia.tech/core/types" "go.sia.tech/renterd/api" "go.sia.tech/renterd/internal/test" "lukechampine.com/frand" @@ -30,9 +29,17 @@ func TestGouging(t *testing.T) { cluster.MineBlocks(cfg.Period + 1) // add hosts - tt.OKAll(cluster.AddHostsBlocking(int(test.AutopilotConfig.Contracts.Amount))) + n := int(test.AutopilotConfig.Contracts.Amount) + tt.OKAll(cluster.AddHostsBlocking(n)) cluster.WaitForAccounts() + // assert all hosts are usable + h, err := b.UsableHosts(context.Background(), api.UsableHostOptions{}) + tt.OK(err) + if len(h) != n { + t.Fatal("unexpected number of hosts") + } + // assert that the current period is greater than the period tt.Retry(10, time.Second, func() error { if ap, _ := b.Autopilot(context.Background(), api.DefaultAutopilotID); ap.CurrentPeriod <= cfg.Period { @@ -62,35 +69,39 @@ func TestGouging(t *testing.T) { t.Fatal("unexpected data") } - // update the gouging settings to limit the max storage price to 100H + // fetch current host settings + settings := cluster.hosts[0].settings.Settings() + + // update host settings + updated := settings + updated.StoragePrice = updated.StoragePrice.Mul64(2) + tt.OK(cluster.hosts[0].UpdateSettings(updated)) + + // update gouging settings gs := test.GougingSettings - gs.MaxStoragePrice = types.NewCurrency64(100) + gs.MaxStoragePrice = settings.StoragePrice if err := b.UpdateGougingSettings(context.Background(), gs); err != nil { t.Fatal(err) } - // fetch current contract set - contracts, err := b.Contracts(context.Background(), api.ContractsOpts{ContractSet: cfg.Set}) - tt.OK(err) - - // update one host's settings so it's gouging - hk := contracts[0].HostKey - host := hostsMap[hk.String()] - settings := host.settings.Settings() - settings.StoragePrice = types.NewCurrency64(101) // gouging - tt.OK(host.UpdateSettings(settings)) - // make sure the price table expires so the worker is forced to fetch it // again, this is necessary for the host to be considered price gouging time.Sleep(defaultHostSettings.PriceTableValidity) + // assert all hosts are usable + h, err = b.UsableHosts(context.Background(), api.UsableHostOptions{}) + tt.OK(err) + if len(h) != n-1 { + t.Fatal("unexpected number of hosts", len(h)) + } + // upload some data - should fail tt.FailAll(w.UploadObject(context.Background(), bytes.NewReader(data), testBucket, path, api.UploadObjectOptions{})) // update all host settings so they're gouging for _, h := range cluster.hosts { settings := h.settings.Settings() - settings.StoragePrice = types.NewCurrency64(101) + settings.StoragePrice = settings.StoragePrice.Mul64(2) if err := h.UpdateSettings(settings); err != nil { t.Fatal(err) } diff --git a/stores/sql/main.go b/stores/sql/main.go index 8abf06779..253057155 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -17,6 +17,7 @@ import ( dsql "database/sql" rhpv2 "go.sia.tech/core/rhp/v2" + rhpv3 "go.sia.tech/core/rhp/v3" "go.sia.tech/core/types" "go.sia.tech/coreutils/syncer" "go.sia.tech/coreutils/wallet" @@ -2212,7 +2213,10 @@ EXISTS ( SELECT h.public_key, COALESCE(h.net_address, ""), - COALESCE(h.settings->>'$.siamuxport', "") AS siamux_port + COALESCE(h.settings->>'$.siamuxport', "") AS siamux_port, + h.price_table, + h.price_table_expiry, + h.settings FROM hosts h INNER JOIN contracts c on c.host_id = h.id and c.archival_reason IS NULL INNER JOIN host_checks hc on hc.db_host_id = h.id and hc.db_autopilot_id = ? @@ -2229,7 +2233,10 @@ EXISTS ( for rows.Next() { var hk PublicKey var addr, port string - err := rows.Scan(&hk, &addr, &port) + var pt PriceTable + var hs HostSettings + var pte dsql.NullTime + err := rows.Scan(&hk, &addr, &port, &pt, &pte, &hs) if err != nil { return nil, fmt.Errorf("failed to scan host: %w", err) } @@ -2240,6 +2247,8 @@ EXISTS ( hosts = append(hosts, api.HostInfo{ PublicKey: types.PublicKey(hk), SiamuxAddr: net.JoinHostPort(host, port), + Prices: api.HostPriceTable{HostPriceTable: rhpv3.HostPriceTable(pt), Expiry: pte.Time}, + Settings: rhpv2.HostSettings(hs), }) } return hosts, nil From 87dbba43e1e2881c0774ffbc697443d56d14b77e Mon Sep 17 00:00:00 2001 From: Nate Maninger Date: Fri, 1 Nov 2024 13:50:54 -0700 Subject: [PATCH 285/708] deps, sql: update core & coreutils, update StateElement usage --- go.mod | 7 ++-- go.sum | 14 ++++--- internal/test/e2e/host.go | 6 +-- stores/chain_test.go | 82 +++++++++++++++++++++----------------- stores/sql/chain.go | 57 ++++++++++++++++---------- stores/sql/main.go | 17 ++------ stores/sql/mysql/chain.go | 8 +--- stores/sql/sqlite/chain.go | 8 +--- stores/sql/types.go | 6 +++ 9 files changed, 111 insertions(+), 94 deletions(-) diff --git a/go.mod b/go.mod index b97e9ada9..3e113cf15 100644 --- a/go.mod +++ b/go.mod @@ -14,10 +14,10 @@ require ( github.com/mattn/go-sqlite3 v1.14.24 github.com/montanaflynn/stats v0.7.1 github.com/shopspring/decimal v1.4.0 - go.sia.tech/core v0.5.1-0.20241028140321-8319d4147268 - go.sia.tech/coreutils v0.5.1-0.20241028141200-29e49cd3cb7e + go.sia.tech/core v0.6.1 + go.sia.tech/coreutils v0.6.0 go.sia.tech/gofakes3 v0.0.5 - go.sia.tech/hostd v1.1.3-0.20241028141324-e5eeff133133 + go.sia.tech/hostd v1.1.3-0.20241101150257-8319b75af8b2 go.sia.tech/jape v0.12.1 go.sia.tech/mux v1.3.0 go.sia.tech/web/renterd v0.65.0 @@ -47,4 +47,5 @@ require ( golang.org/x/text v0.19.0 // indirect golang.org/x/time v0.7.0 // indirect golang.org/x/tools v0.23.0 // indirect + nhooyr.io/websocket v1.8.17 // indirect ) diff --git a/go.sum b/go.sum index 38dc3a531..4f9c9a7ce 100644 --- a/go.sum +++ b/go.sum @@ -55,14 +55,14 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.etcd.io/bbolt v1.3.11 h1:yGEzV1wPz2yVCLsD8ZAiGHhHVlczyC9d1rP43/VCRJ0= go.etcd.io/bbolt v1.3.11/go.mod h1:dksAq7YMXoljX0xu6VF5DMZGbhYYoLUalEiSySYAS4I= -go.sia.tech/core v0.5.1-0.20241028140321-8319d4147268 h1:Afh3x9rg6pI183LQVYIGQ3quhrRgHWez4987JSKmTpk= -go.sia.tech/core v0.5.1-0.20241028140321-8319d4147268/go.mod h1:P3C1BWa/7J4XgdzWuaYHBvLo2RzZ0UBaJM4TG1GWB2g= -go.sia.tech/coreutils v0.5.1-0.20241028141200-29e49cd3cb7e h1:vhqvgo9X6VWiJblgXuTooUhercsPEhizHVGWfh2E5VE= -go.sia.tech/coreutils v0.5.1-0.20241028141200-29e49cd3cb7e/go.mod h1:YlsVY5XQRfTEp2FiaOiOq0KpmWGzJ5stnuESJR/pktg= +go.sia.tech/core v0.6.1 h1:eaExM2E2eNr43su2XDkY5J24E3F54YGS7hcC3WtVjVk= +go.sia.tech/core v0.6.1/go.mod h1:P3C1BWa/7J4XgdzWuaYHBvLo2RzZ0UBaJM4TG1GWB2g= +go.sia.tech/coreutils v0.6.0 h1:r0IZt+aVdGG2uIHl7OtaWRYdVx4NQ7ezRoSGa0Ej8GY= +go.sia.tech/coreutils v0.6.0/go.mod h1:XlsnogeYU/Tdjzp/HUNAj5T7tZCdmeBHIBjymbPC+uQ= go.sia.tech/gofakes3 v0.0.5 h1:vFhVBUFbKE9ZplvLE2w4TQxFMQyF8qvgxV4TaTph+Vw= go.sia.tech/gofakes3 v0.0.5/go.mod h1:LXEzwGw+OHysWLmagleCttX93cJZlT9rBu/icOZjQ54= -go.sia.tech/hostd v1.1.3-0.20241028141324-e5eeff133133 h1:tUoU+0VXeYSjzzXLo3Y8olaGVlPzTLxCupmAhTEASG8= -go.sia.tech/hostd v1.1.3-0.20241028141324-e5eeff133133/go.mod h1:xjTKgRZjou9qzvVjuwfAEO6qCJRBU0BSYcXfzntlRmU= +go.sia.tech/hostd v1.1.3-0.20241101150257-8319b75af8b2 h1:6fogOsOr7efjeDHCO0mqIibEa5cOagSSo3JXe1fuifM= +go.sia.tech/hostd v1.1.3-0.20241101150257-8319b75af8b2/go.mod h1:096sIYupHRUGkVyAe6i511la7wQo5LfRHGNUSMIKcT4= go.sia.tech/jape v0.12.1 h1:xr+o9V8FO8ScRqbSaqYf9bjj1UJ2eipZuNcI1nYousU= go.sia.tech/jape v0.12.1/go.mod h1:wU+h6Wh5olDjkPXjF0tbZ1GDgoZ6VTi4naFw91yyWC4= go.sia.tech/mux v1.3.0 h1:hgR34IEkqvfBKUJkAzGi31OADeW2y7D6Bmy/Jcbop9c= @@ -114,3 +114,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= lukechampine.com/frand v1.5.1 h1:fg0eRtdmGFIxhP5zQJzM1lFDbD6CUfu/f+7WgAZd5/w= lukechampine.com/frand v1.5.1/go.mod h1:4VstaWc2plN4Mjr10chUD46RAVGWhpkZ5Nja8+Azp0Q= +nhooyr.io/websocket v1.8.17 h1:KEVeLJkUywCKVsnLIDlD/5gtayKp8VoCkksHCGGfT9Y= +nhooyr.io/websocket v1.8.17/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= diff --git a/internal/test/e2e/host.go b/internal/test/e2e/host.go index 07ab7d57b..dccd68161 100644 --- a/internal/test/e2e/host.go +++ b/internal/test/e2e/host.go @@ -269,7 +269,7 @@ func NewHost(privKey types.PrivateKey, cm *chain.Manager, dir string, network *c return nil, fmt.Errorf("failed to create rhp3 listener: %w", err) } - settings, err := settings.NewConfigManager(privKey, db, cm, s, wallet, storage, settings.WithValidateNetAddress(false)) + settings, err := settings.NewConfigManager(privKey, db, cm, s, wallet, settings.WithValidateNetAddress(false)) if err != nil { return nil, fmt.Errorf("failed to create settings manager: %w", err) } @@ -282,13 +282,13 @@ func NewHost(privKey types.PrivateKey, cm *chain.Manager, dir string, network *c registry := registry.NewManager(privKey, db, zap.NewNop()) accounts := accounts.NewManager(db, settings) - rhpv2, err := rhpv2.NewSessionHandler(rhp2Listener, privKey, rhp3Listener.Addr().String(), cm, s, wallet, contracts, settings, storage, log) + rhpv2, err := rhpv2.NewSessionHandler(rhp2Listener, privKey, rhp3Listener.Addr().String(), cm, s, wallet, contracts, settings, storage, rhpv2.WithLog(log.Named("rhpv2"))) if err != nil { return nil, fmt.Errorf("failed to create rhpv2 session handler: %w", err) } go rhpv2.Serve() - rhpv3, err := rhpv3.NewSessionHandler(rhp3Listener, privKey, cm, s, wallet, accounts, contracts, registry, storage, settings, log) + rhpv3, err := rhpv3.NewSessionHandler(rhp3Listener, privKey, cm, s, wallet, accounts, contracts, registry, storage, settings, rhpv3.WithLog(log.Named("rhpv2"))) if err != nil { return nil, fmt.Errorf("failed to create rhpv3 session handler: %w", err) } diff --git a/stores/chain_test.go b/stores/chain_test.go index b8b5c0198..5d1043281 100644 --- a/stores/chain_test.go +++ b/stores/chain_test.go @@ -15,6 +15,14 @@ import ( "go.sia.tech/renterd/stores/sql" ) +type passthroughProofUpdater struct { + fn func(*types.StateElement) +} + +func (ppu *passthroughProofUpdater) UpdateElementProof(se *types.StateElement) { + ppu.fn(se) +} + // TestProcessChainUpdate tests the ProcessChainUpdate method on the SQL store. func TestProcessChainUpdate(t *testing.T) { ss := newTestSQLStore(t, defaultTestSQLStoreConfig) @@ -210,14 +218,13 @@ func TestProcessChainUpdate(t *testing.T) { // assert we can revert spent outputs now := time.Now().Round(time.Millisecond) - var ses []types.StateElement if err := ss.ProcessChainUpdate(context.Background(), func(tx sql.ChainUpdateTx) error { index3 := types.ChainIndex{Height: 3} index4 := types.ChainIndex{Height: 4} created := []types.SiacoinElement{ { + ID: types.SiacoinOutputID{1}, StateElement: types.StateElement{ - ID: types.Hash256{1}, LeafIndex: 1, MerkleProof: []types.Hash256{{1}, {2}}, }, @@ -275,55 +282,55 @@ func TestProcessChainUpdate(t *testing.T) { if err != nil { return err } - - // fetch elements - ses, err = tx.WalletStateElements() - return err + return nil }); err != nil { t.Fatal("unexpected error", err) } // assert wallet state elements - if len(ses) != 1 { - t.Fatal("unexpected number of state elements", len(ses)) - } else if se := ses[0]; se.ID != (types.Hash256{1}) { + sces, err := ss.UnspentSiacoinElements() + if err != nil { + t.Fatal("unexpected error", err) + } else if len(sces) != 1 { + t.Fatal("unexpected number of state elements", len(sces)) + } else if se := sces[0]; se.ID != (types.SiacoinOutputID{1}) { t.Fatal("unexpected state element id", se.ID) - } else if se.LeafIndex != 1 { - t.Fatal("unexpected state element leaf index", se.LeafIndex) - } else if len(se.MerkleProof) != 2 { - t.Fatal("unexpected state element merkle proof", len(se.MerkleProof)) - } else if se.MerkleProof[0] != (types.Hash256{1}) { - t.Fatal("unexpected state element merkle proof[0]", se.MerkleProof[0]) - } else if se.MerkleProof[1] != (types.Hash256{2}) { - t.Fatal("unexpected state element merkle proof[1]", se.MerkleProof[1]) + } else if se.StateElement.LeafIndex != 1 { + t.Fatal("unexpected state element leaf index", se.StateElement.LeafIndex) + } else if len(se.StateElement.MerkleProof) != 2 { + t.Fatal("unexpected state element merkle proof", len(se.StateElement.MerkleProof)) + } else if se.StateElement.MerkleProof[0] != (types.Hash256{1}) { + t.Fatal("unexpected state element merkle proof[0]", se.StateElement.MerkleProof[0]) + } else if se.StateElement.MerkleProof[1] != (types.Hash256{2}) { + t.Fatal("unexpected state element merkle proof[1]", se.StateElement.MerkleProof[1]) } // update state elements if err := ss.ProcessChainUpdate(context.Background(), func(tx sql.ChainUpdateTx) error { - ses[0].LeafIndex = 2 - ses[0].MerkleProof = []types.Hash256{{3}, {4}} - err := tx.UpdateWalletStateElements(ses) - if err != nil { - return err - } - - ses, err = tx.WalletStateElements() - return err + return tx.UpdateWalletSiacoinElementProofs(&passthroughProofUpdater{ + fn: func(se *types.StateElement) { + se.LeafIndex = 2 + se.MerkleProof = []types.Hash256{{3}, {4}} + }, + }) }); err != nil { t.Fatal("unexpected error", err) } // assert wallet state elements - if len(ses) != 1 { - t.Fatal("unexpected number of state elements", len(ses)) - } else if se := ses[0]; se.LeafIndex != 2 { - t.Fatal("unexpected state element leaf index", se.LeafIndex) - } else if len(se.MerkleProof) != 2 { - t.Fatal("unexpected state element merkle proof length", len(se.MerkleProof)) - } else if se.MerkleProof[0] != (types.Hash256{3}) { - t.Fatal("unexpected state element merkle proof[0]", se.MerkleProof[0]) - } else if se.MerkleProof[1] != (types.Hash256{4}) { - t.Fatal("unexpected state element merkle proof[1]", se.MerkleProof[1]) + sces, err = ss.UnspentSiacoinElements() + if err != nil { + t.Fatal("unexpected error", err) + } else if len(sces) != 1 { + t.Fatal("unexpected number of state elements", len(sces)) + } else if se := sces[0]; se.StateElement.LeafIndex != 2 { + t.Fatal("unexpected state element leaf index", se.StateElement.LeafIndex) + } else if len(se.StateElement.MerkleProof) != 2 { + t.Fatal("unexpected state element merkle proof length", len(se.StateElement.MerkleProof)) + } else if se.StateElement.MerkleProof[0] != (types.Hash256{3}) { + t.Fatal("unexpected state element merkle proof[0]", se.StateElement.MerkleProof[0]) + } else if se.StateElement.MerkleProof[1] != (types.Hash256{4}) { + t.Fatal("unexpected state element merkle proof[1]", se.StateElement.MerkleProof[1]) } // assert events @@ -355,7 +362,8 @@ func TestProcessChainUpdate(t *testing.T) { if err := ss.ProcessChainUpdate(context.Background(), func(tx sql.ChainUpdateTx) error { return tx.WalletRevertIndex(types.ChainIndex{Height: 5}, []types.SiacoinElement{ { - StateElement: types.StateElement{ID: types.Hash256{2}}, + ID: types.SiacoinOutputID{2}, + StateElement: types.StateElement{}, SiacoinOutput: types.SiacoinOutput{}, MaturityHeight: 100, }, diff --git a/stores/sql/chain.go b/stores/sql/chain.go index 6786aa68f..29e6bd37f 100644 --- a/stores/sql/chain.go +++ b/stores/sql/chain.go @@ -7,6 +7,7 @@ import ( "fmt" "go.sia.tech/core/types" + "go.sia.tech/coreutils/wallet" "go.sia.tech/renterd/api" "go.sia.tech/renterd/internal/sql" "go.uber.org/zap" @@ -129,42 +130,58 @@ func UpdateFailedContracts(ctx context.Context, tx sql.Tx, blockHeight uint64, l return nil } -func UpdateWalletStateElements(ctx context.Context, tx sql.Tx, elements []types.StateElement) error { - if len(elements) == 0 { - return nil - } - - updateStmt, err := tx.Prepare(ctx, "UPDATE wallet_outputs SET leaf_index = ?, merkle_proof= ? WHERE output_id = ?") +// UpdateWalletSiacoinElementProofs updates the proofs of all state elements +// affected by the update. ProofUpdater.UpdateElementProof must be called +// for each state element in the database. +func UpdateWalletSiacoinElementProofs(ctx context.Context, tx sql.Tx, updater wallet.ProofUpdater) error { + se, err := getSiacoinStateElements(ctx, tx) if err != nil { - return fmt.Errorf("failed to prepare statement to update state elements: %w", err) + return fmt.Errorf("failed to get siacoin state elements: %w", err) + } else if len(se) == 0 { + return nil } - defer updateStmt.Close() - - for _, el := range elements { - if _, err := updateStmt.Exec(ctx, el.LeafIndex, MerkleProof{Hashes: el.MerkleProof}, Hash256(el.ID)); err != nil { - return fmt.Errorf("failed to update state element '%v': %w", el.ID, err) + for i := range se { + ele := types.StateElement{ + LeafIndex: se[i].LeafIndex, + MerkleProof: se[i].MerkleProof.Hashes, } + updater.UpdateElementProof(&ele) + se[i].LeafIndex = ele.LeafIndex + se[i].MerkleProof.Hashes = ele.MerkleProof } - - return nil + return updateSiacoinStateElements(ctx, tx, se) } -func WalletStateElements(ctx context.Context, tx sql.Tx) ([]types.StateElement, error) { +func getSiacoinStateElements(ctx context.Context, tx sql.Tx) (elements []StateElement, err error) { rows, err := tx.Query(ctx, "SELECT output_id, leaf_index, merkle_proof FROM wallet_outputs") if err != nil { return nil, fmt.Errorf("failed to fetch state elements: %w", err) } defer rows.Close() - var elements []types.StateElement for rows.Next() { - if el, err := scanStateElement(rows); err != nil { + el, err := scanStateElement(rows) + if err != nil { return nil, fmt.Errorf("failed to scan state element: %w", err) - } else { - elements = append(elements, el) } + elements = append(elements, el) } - return elements, nil + return elements, rows.Err() +} + +func updateSiacoinStateElements(ctx context.Context, tx sql.Tx, elements []StateElement) error { + updateStmt, err := tx.Prepare(ctx, "UPDATE wallet_outputs SET leaf_index = ?, merkle_proof= ? WHERE output_id = ?") + if err != nil { + return fmt.Errorf("failed to prepare statement to update state elements: %w", err) + } + defer updateStmt.Close() + + for _, el := range elements { + if _, err := updateStmt.Exec(ctx, el.LeafIndex, el.MerkleProof, el.ID); err != nil { + return fmt.Errorf("failed to update state element '%v': %w", el.ID, err) + } + } + return nil } func contractNotFoundErr(fcid types.FileContractID) error { diff --git a/stores/sql/main.go b/stores/sql/main.go index a5db9f4d4..278addf44 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -2276,8 +2276,8 @@ func scanSiacoinElement(s Scanner) (el types.SiacoinElement, err error) { return types.SiacoinElement{}, err } return types.SiacoinElement{ + ID: types.SiacoinOutputID(id), StateElement: types.StateElement{ - ID: types.Hash256(id), LeafIndex: leafIndex, MerkleProof: merkleProof.Hashes, }, @@ -2289,18 +2289,9 @@ func scanSiacoinElement(s Scanner) (el types.SiacoinElement, err error) { }, nil } -func scanStateElement(s Scanner) (types.StateElement, error) { - var id Hash256 - var leafIndex uint64 - var merkleProof MerkleProof - if err := s.Scan(&id, &leafIndex, &merkleProof); err != nil { - return types.StateElement{}, err - } - return types.StateElement{ - ID: types.Hash256(id), - LeafIndex: leafIndex, - MerkleProof: merkleProof.Hashes, - }, nil +func scanStateElement(s Scanner) (se StateElement, err error) { + err = s.Scan(&se.ID, &se.LeafIndex, &se.MerkleProof) + return } func MarkPackedSlabUploaded(ctx context.Context, tx Tx, slab api.UploadedPackedSlab) (string, error) { diff --git a/stores/sql/mysql/chain.go b/stores/sql/mysql/chain.go index 35f1dc90f..adcaf5896 100644 --- a/stores/sql/mysql/chain.go +++ b/stores/sql/mysql/chain.go @@ -338,10 +338,6 @@ func (c chainUpdateTx) UpdateHost(hk types.PublicKey, ha chain.HostAnnouncement, return nil } -func (c chainUpdateTx) UpdateWalletStateElements(elements []types.StateElement) error { - return ssql.UpdateWalletStateElements(c.ctx, c.tx, elements) -} - -func (c chainUpdateTx) WalletStateElements() ([]types.StateElement, error) { - return ssql.WalletStateElements(c.ctx, c.tx) +func (c chainUpdateTx) UpdateWalletSiacoinElementProofs(updater wallet.ProofUpdater) error { + return ssql.UpdateWalletSiacoinElementProofs(c.ctx, c.tx, updater) } diff --git a/stores/sql/sqlite/chain.go b/stores/sql/sqlite/chain.go index 00ad9f405..e86047df3 100644 --- a/stores/sql/sqlite/chain.go +++ b/stores/sql/sqlite/chain.go @@ -350,10 +350,6 @@ func (c chainUpdateTx) UpdateHost(hk types.PublicKey, ha chain.HostAnnouncement, return nil } -func (c chainUpdateTx) UpdateWalletStateElements(elements []types.StateElement) error { - return ssql.UpdateWalletStateElements(c.ctx, c.tx, elements) -} - -func (c chainUpdateTx) WalletStateElements() ([]types.StateElement, error) { - return ssql.WalletStateElements(c.ctx, c.tx) +func (c chainUpdateTx) UpdateWalletSiacoinElementProofs(updater wallet.ProofUpdater) error { + return ssql.UpdateWalletSiacoinElementProofs(c.ctx, c.tx, updater) } diff --git a/stores/sql/types.go b/stores/sql/types.go index 66127c3ce..e1dd732b1 100644 --- a/stores/sql/types.go +++ b/stores/sql/types.go @@ -46,6 +46,12 @@ type ( UnixTimeMS time.Time DurationMS time.Duration Unsigned64 uint64 + + StateElement struct { + ID Hash256 + LeafIndex uint64 + MerkleProof MerkleProof + } ) type scannerValuer interface { From c83bdb5d13414cddbb1c7d2b6c943bf72b766113 Mon Sep 17 00:00:00 2001 From: PJ Date: Sun, 3 Nov 2024 20:46:32 +0100 Subject: [PATCH 286/708] testing: implement CR remarks --- worker/mocks_test.go | 4 ++++ worker/upload_test.go | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/worker/mocks_test.go b/worker/mocks_test.go index 75a0991c5..2b40cf6d7 100644 --- a/worker/mocks_test.go +++ b/worker/mocks_test.go @@ -506,6 +506,10 @@ func (os *objectStoreMock) UpdateSlab(ctx context.Context, key object.Encryption updated := make(map[types.Hash256]types.FileContractID) for _, sector := range sectors { + _, exists := updated[sector.Root] + if exists { + return errors.New("duplicate sector") + } updated[sector.Root] = sector.ContractID } diff --git a/worker/upload_test.go b/worker/upload_test.go index 8c4d0ac78..09b27a414 100644 --- a/worker/upload_test.go +++ b/worker/upload_test.go @@ -493,8 +493,10 @@ func TestUploadShards(t *testing.T) { gc++ } } - if bc > 0 && gc == 0 { - t.Fatal("shard is on exclusively bad hosts") + if i%2 == 0 && bc != 0 && gc != 1 { + t.Fatal("expected shard to be one 1 good host") + } else if i%2 != 0 && bc != 1 && gc != 1 { + t.Fatal("expected shard to be on 1 bad host and 1 good host") } } From 62577b8fc5a24abb09e7d7c0a866472394b08868 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 01:12:12 +0000 Subject: [PATCH 287/708] build(deps): bump go.sia.tech/web/renterd in the all-dependencies group Bumps the all-dependencies group with 1 update: [go.sia.tech/web/renterd](https://github.com/SiaFoundation/web). Updates `go.sia.tech/web/renterd` from 0.65.0 to 0.66.0 - [Release notes](https://github.com/SiaFoundation/web/releases) - [Commits](https://github.com/SiaFoundation/web/compare/renterd@0.65.0...renterd@0.66.0) --- updated-dependencies: - dependency-name: go.sia.tech/web/renterd dependency-type: direct:production update-type: version-update:semver-minor dependency-group: all-dependencies ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 3e113cf15..3f7d300fc 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( go.sia.tech/hostd v1.1.3-0.20241101150257-8319b75af8b2 go.sia.tech/jape v0.12.1 go.sia.tech/mux v1.3.0 - go.sia.tech/web/renterd v0.65.0 + go.sia.tech/web/renterd v0.66.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.28.0 golang.org/x/sys v0.26.0 diff --git a/go.sum b/go.sum index 4f9c9a7ce..d9a0d9e9d 100644 --- a/go.sum +++ b/go.sum @@ -69,8 +69,8 @@ go.sia.tech/mux v1.3.0 h1:hgR34IEkqvfBKUJkAzGi31OADeW2y7D6Bmy/Jcbop9c= go.sia.tech/mux v1.3.0/go.mod h1:I46++RD4beqA3cW9Xm9SwXbezwPqLvHhVs9HLpDtt58= go.sia.tech/web v0.0.0-20240610131903-5611d44a533e h1:oKDz6rUExM4a4o6n/EXDppsEka2y/+/PgFOZmHWQRSI= go.sia.tech/web v0.0.0-20240610131903-5611d44a533e/go.mod h1:4nyDlycPKxTlCqvOeRO0wUfXxyzWCEE7+2BRrdNqvWk= -go.sia.tech/web/renterd v0.65.0 h1:8erbw9fchikFjA6vUw4MPUbZGqZJZRECIjzFIe/Qxa4= -go.sia.tech/web/renterd v0.65.0/go.mod h1:VWfvYtmdJGfrqSoNRO3NoOjUij+RB/xNO4M0HqIf1+M= +go.sia.tech/web/renterd v0.66.0 h1:yqOPbGTVjkFsw91vLHdAXH1QNTtukOkXltl31TPqvbM= +go.sia.tech/web/renterd v0.66.0/go.mod h1:VWfvYtmdJGfrqSoNRO3NoOjUij+RB/xNO4M0HqIf1+M= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= From 5ccf76b02c4a8c784419c4a10387c66bdb43eb84 Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 4 Nov 2024 11:13:05 +0100 Subject: [PATCH 288/708] stores: move UpsertContractSectors --- stores/sql/database.go | 4 +++ stores/sql/main.go | 10 ++++++-- stores/sql/mysql/main.go | 54 +++++++++++++++++++-------------------- stores/sql/sqlite/main.go | 54 +++++++++++++++++++-------------------- 4 files changed, 66 insertions(+), 56 deletions(-) diff --git a/stores/sql/database.go b/stores/sql/database.go index e3a09ba18..0458d8162 100644 --- a/stores/sql/database.go +++ b/stores/sql/database.go @@ -364,6 +364,10 @@ type ( // the health of the updated slabs becomes invalid UpdateSlabHealth(ctx context.Context, limit int64, minValidity, maxValidity time.Duration) (int64, error) + // UpsertContractSectors ensures the given contract-sector links are + // present in the database. + UpsertContractSectors(ctx context.Context, contractSectors []ContractSector) error + // WalletEvents returns all wallet events in the database. WalletEvents(ctx context.Context, offset, limit int) ([]wallet.Event, error) diff --git a/stores/sql/main.go b/stores/sql/main.go index 0bb295a39..e2651c75d 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -2102,7 +2102,13 @@ func UpdatePeerInfo(ctx context.Context, tx sql.Tx, addr string, fn func(*syncer return nil } -func UpdateSlab(ctx context.Context, tx sql.Tx, key object.EncryptionKey, updated []api.UploadedSector, upsertSectorsFn func(context.Context, []ContractSector) error) error { +func UpdateSlab(ctx context.Context, tx sql.Tx, key object.EncryptionKey, updated []api.UploadedSector) error { + // ensure the given transaction has the required methods + _, ok := tx.(DatabaseTx) + if !ok { + return errors.New("update slab requires a database transaction") + } + // update slab res, err := tx.Exec(ctx, ` UPDATE slabs @@ -2165,7 +2171,7 @@ func UpdateSlab(ctx context.Context, tx sql.Tx, key object.EncryptionKey, update SectorID: sectorID, }) } - return upsertSectorsFn(ctx, upsert) + return tx.(DatabaseTx).UpsertContractSectors(ctx, upsert) } func Webhooks(ctx context.Context, tx sql.Tx) ([]webhooks.Webhook, error) { diff --git a/stores/sql/mysql/main.go b/stores/sql/mysql/main.go index 39289bfaa..1885c7285 100644 --- a/stores/sql/mysql/main.go +++ b/stores/sql/mysql/main.go @@ -1100,7 +1100,7 @@ func (tx *MainDatabaseTx) UpdateSetting(ctx context.Context, key, value string) } func (tx *MainDatabaseTx) UpdateSlab(ctx context.Context, key object.EncryptionKey, sectors []api.UploadedSector) error { - return ssql.UpdateSlab(ctx, tx, key, sectors, tx.upsertContractSectors) + return ssql.UpdateSlab(ctx, tx, key, sectors) } func (tx *MainDatabaseTx) UpdateSlabHealth(ctx context.Context, limit int64, minDuration, maxDuration time.Duration) (int64, error) { @@ -1137,6 +1137,31 @@ func (tx *MainDatabaseTx) UpdateSlabHealth(ctx context.Context, limit int64, min return res.RowsAffected() } +func (tx *MainDatabaseTx) UpsertContractSectors(ctx context.Context, contractSectors []ssql.ContractSector) error { + if len(contractSectors) == 0 { + return nil + } + + // insert contract <-> sector links + insertContractSectorStmt, err := tx.Prepare(ctx, `INSERT IGNORE INTO contract_sectors (db_sector_id, db_contract_id) + VALUES (?, ?)`) + if err != nil { + return fmt.Errorf("failed to prepare statement to insert contract sector link: %w", err) + } + defer insertContractSectorStmt.Close() + + for _, cs := range contractSectors { + _, err := insertContractSectorStmt.Exec(ctx, + cs.SectorID, + cs.ContractID, + ) + if err != nil { + return fmt.Errorf("failed to insert contract sector link: %w", err) + } + } + return nil +} + func (tx *MainDatabaseTx) WalletEvents(ctx context.Context, offset, limit int) ([]wallet.Event, error) { return ssql.WalletEvents(ctx, tx.Tx, offset, limit) } @@ -1267,37 +1292,12 @@ func (tx *MainDatabaseTx) insertSlabs(ctx context.Context, objID, partID *int64, sectorIdx++ } } - if err := tx.upsertContractSectors(ctx, upsertContractSectors); err != nil { + if err := tx.UpsertContractSectors(ctx, upsertContractSectors); err != nil { return err } return nil } -func (tx *MainDatabaseTx) upsertContractSectors(ctx context.Context, contractSectors []ssql.ContractSector) error { - if len(contractSectors) == 0 { - return nil - } - - // insert contract <-> sector links - insertContractSectorStmt, err := tx.Prepare(ctx, `INSERT IGNORE INTO contract_sectors (db_sector_id, db_contract_id) - VALUES (?, ?)`) - if err != nil { - return fmt.Errorf("failed to prepare statement to insert contract sector link: %w", err) - } - defer insertContractSectorStmt.Close() - - for _, cs := range contractSectors { - _, err := insertContractSectorStmt.Exec(ctx, - cs.SectorID, - cs.ContractID, - ) - if err != nil { - return fmt.Errorf("failed to insert contract sector link: %w", err) - } - } - return nil -} - type upsertSector struct { slabID int64 slabIndex int diff --git a/stores/sql/sqlite/main.go b/stores/sql/sqlite/main.go index 4e9bc03aa..a249e49e4 100644 --- a/stores/sql/sqlite/main.go +++ b/stores/sql/sqlite/main.go @@ -1111,7 +1111,7 @@ func (tx *MainDatabaseTx) UpdateSetting(ctx context.Context, key, value string) } func (tx *MainDatabaseTx) UpdateSlab(ctx context.Context, key object.EncryptionKey, sectors []api.UploadedSector) error { - return ssql.UpdateSlab(ctx, tx, key, sectors, tx.upsertContractSectors) + return ssql.UpdateSlab(ctx, tx, key, sectors) } func (tx *MainDatabaseTx) UpdateSlabHealth(ctx context.Context, limit int64, minDuration, maxDuration time.Duration) (int64, error) { @@ -1144,6 +1144,31 @@ func (tx *MainDatabaseTx) UpdateSlabHealth(ctx context.Context, limit int64, min return res.RowsAffected() } +func (tx *MainDatabaseTx) UpsertContractSectors(ctx context.Context, contractSectors []ssql.ContractSector) error { + if len(contractSectors) == 0 { + return nil + } + + // insert contract <-> sector links + insertContractSectorStmt, err := tx.Prepare(ctx, `INSERT INTO contract_sectors (db_sector_id, db_contract_id) + VALUES (?, ?) ON CONFLICT(db_sector_id, db_contract_id) DO NOTHING`) + if err != nil { + return fmt.Errorf("failed to prepare statement to insert contract sector link: %w", err) + } + defer insertContractSectorStmt.Close() + + for _, cs := range contractSectors { + _, err := insertContractSectorStmt.Exec(ctx, + cs.SectorID, + cs.ContractID, + ) + if err != nil { + return fmt.Errorf("failed to insert contract sector link: %w", err) + } + } + return nil +} + func (tx *MainDatabaseTx) WalletEvents(ctx context.Context, offset, limit int) ([]wallet.Event, error) { return ssql.WalletEvents(ctx, tx.Tx, offset, limit) } @@ -1274,37 +1299,12 @@ func (tx *MainDatabaseTx) insertSlabs(ctx context.Context, objID, partID *int64, sectorIdx++ } } - if err := tx.upsertContractSectors(ctx, upsertContractSectors); err != nil { + if err := tx.UpsertContractSectors(ctx, upsertContractSectors); err != nil { return err } return nil } -func (tx *MainDatabaseTx) upsertContractSectors(ctx context.Context, contractSectors []ssql.ContractSector) error { - if len(contractSectors) == 0 { - return nil - } - - // insert contract <-> sector links - insertContractSectorStmt, err := tx.Prepare(ctx, `INSERT INTO contract_sectors (db_sector_id, db_contract_id) - VALUES (?, ?) ON CONFLICT(db_sector_id, db_contract_id) DO NOTHING`) - if err != nil { - return fmt.Errorf("failed to prepare statement to insert contract sector link: %w", err) - } - defer insertContractSectorStmt.Close() - - for _, cs := range contractSectors { - _, err := insertContractSectorStmt.Exec(ctx, - cs.SectorID, - cs.ContractID, - ) - if err != nil { - return fmt.Errorf("failed to insert contract sector link: %w", err) - } - } - return nil -} - type upsertSector struct { slabID int64 slabIndex int From cfe37b1883eae3d81b94fe891ae7146911250c2a Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 4 Nov 2024 11:23:47 +0100 Subject: [PATCH 289/708] stores: move UpsertContractSectors to Tx interface --- stores/sql/main.go | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/stores/sql/main.go b/stores/sql/main.go index f1d834f10..e64942471 100644 --- a/stores/sql/main.go +++ b/stores/sql/main.go @@ -65,6 +65,8 @@ type ( // selected and scanned by passing them to the method as 'others'. ScanObjectMetadata(s Scanner, others ...any) (md api.ObjectMetadata, err error) SelectObjectMetadataExpr() string + + UpsertContractSectors(ctx context.Context, contractSectors []ContractSector) error } ) @@ -2102,13 +2104,7 @@ func UpdatePeerInfo(ctx context.Context, tx sql.Tx, addr string, fn func(*syncer return nil } -func UpdateSlab(ctx context.Context, tx sql.Tx, key object.EncryptionKey, updated []api.UploadedSector) error { - // ensure the given transaction has the required methods - _, ok := tx.(DatabaseTx) - if !ok { - return errors.New("update slab requires a database transaction") - } - +func UpdateSlab(ctx context.Context, tx Tx, key object.EncryptionKey, updated []api.UploadedSector) error { // update slab res, err := tx.Exec(ctx, ` UPDATE slabs @@ -2171,7 +2167,7 @@ func UpdateSlab(ctx context.Context, tx sql.Tx, key object.EncryptionKey, update SectorID: sectorID, }) } - return tx.(DatabaseTx).UpsertContractSectors(ctx, upsert) + return tx.UpsertContractSectors(ctx, upsert) } func Webhooks(ctx context.Context, tx sql.Tx) ([]webhooks.Webhook, error) { From 9abe887731064398e172fbae398831a0cb392f6f Mon Sep 17 00:00:00 2001 From: Chris Schinnerl Date: Mon, 4 Nov 2024 13:44:27 +0100 Subject: [PATCH 290/708] bus: address comments --- autopilot/autopilot.go | 2 +- autopilot/contractor/contractor.go | 4 +-- bus/bus.go | 46 +++++++++++++++--------------- bus/client/contracts.go | 8 +++--- internal/test/e2e/cluster_test.go | 2 +- 5 files changed, 31 insertions(+), 31 deletions(-) diff --git a/autopilot/autopilot.go b/autopilot/autopilot.go index 5d5b75afe..17dcdef74 100644 --- a/autopilot/autopilot.go +++ b/autopilot/autopilot.go @@ -49,7 +49,7 @@ type Bus interface { Contracts(ctx context.Context, opts api.ContractsOpts) (contracts []api.ContractMetadata, err error) FileContractTax(ctx context.Context, payout types.Currency) (types.Currency, error) FormContract(ctx context.Context, renterAddress types.Address, renterFunds types.Currency, hostKey types.PublicKey, hostIP string, hostCollateral types.Currency, endHeight uint64) (api.ContractMetadata, error) - LatestRevision(ctx context.Context, fcid types.FileContractID) (api.Revision, error) + ContractRevision(ctx context.Context, fcid types.FileContractID) (api.Revision, error) RenewContract(ctx context.Context, fcid types.FileContractID, endHeight uint64, renterFunds, minNewCollateral types.Currency, expectedNewStorage uint64) (api.ContractMetadata, error) UpdateContractSet(ctx context.Context, set string, toAdd, toRemove []types.FileContractID) error PrunableData(ctx context.Context) (prunableData api.ContractsPrunableDataResponse, err error) diff --git a/autopilot/contractor/contractor.go b/autopilot/contractor/contractor.go index ea1c5012a..ae366c751 100644 --- a/autopilot/contractor/contractor.go +++ b/autopilot/contractor/contractor.go @@ -93,7 +93,7 @@ type Bus interface { Contracts(ctx context.Context, opts api.ContractsOpts) (contracts []api.ContractMetadata, err error) FileContractTax(ctx context.Context, payout types.Currency) (types.Currency, error) FormContract(ctx context.Context, renterAddress types.Address, renterFunds types.Currency, hostKey types.PublicKey, hostIP string, hostCollateral types.Currency, endHeight uint64) (api.ContractMetadata, error) - LatestRevision(ctx context.Context, fcid types.FileContractID) (api.Revision, error) + ContractRevision(ctx context.Context, fcid types.FileContractID) (api.Revision, error) RenewContract(ctx context.Context, fcid types.FileContractID, endHeight uint64, renterFunds, minNewCollateral types.Currency, expectedNewStorage uint64) (api.ContractMetadata, error) Host(ctx context.Context, hostKey types.PublicKey) (api.Host, error) Hosts(ctx context.Context, opts api.HostOptions) ([]api.Host, error) @@ -824,7 +824,7 @@ func performContractChecks(ctx *mCtx, alerter alerts.Alerter, bus Bus, w Worker, wg.Add(1) go func(i int) { defer wg.Done() - rev, err := bus.LatestRevision(revisionCtx, c.ID) + rev, err := bus.ContractRevision(revisionCtx, c.ID) if err != nil { // print the reason for the missing revisions logger.With(zap.Error(err)). diff --git a/bus/bus.go b/bus/bus.go index cf83eba6b..bb7c9faa8 100644 --- a/bus/bus.go +++ b/bus/bus.go @@ -414,29 +414,29 @@ func (b *Bus) Handler() http.Handler { "GET /consensus/siafundfee/:payout": b.contractTaxHandlerGET, "GET /consensus/state": b.consensusStateHandler, - "PUT /contracts": b.contractsHandlerPUT, - "GET /contracts": b.contractsHandlerGET, - "DELETE /contracts/all": b.contractsAllHandlerDELETE, - "POST /contracts/archive": b.contractsArchiveHandlerPOST, - "POST /contracts/form": b.contractsFormHandler, - "GET /contracts/prunable": b.contractsPrunableDataHandlerGET, - "GET /contracts/renewed/:id": b.contractsRenewedIDHandlerGET, - "GET /contracts/sets": b.contractsSetsHandlerGET, - "POST /contracts/set/:set": b.contractsSetHandlerPUT, - "DELETE /contracts/set/:set": b.contractsSetHandlerDELETE, - "POST /contracts/spending": b.contractsSpendingHandlerPOST, - "GET /contract/:id": b.contractIDHandlerGET, - "DELETE /contract/:id": b.contractIDHandlerDELETE, - "POST /contract/:id/acquire": b.contractAcquireHandlerPOST, - "GET /contract/:id/ancestors": b.contractIDAncestorsHandler, - "POST /contract/:id/broadcast": b.contractIDBroadcastHandler, - "POST /contract/:id/keepalive": b.contractKeepaliveHandlerPOST, - "GET /contract/:id/latestrevision": b.contractLatestRevisionHandlerGET, - "POST /contract/:id/prune": b.contractPruneHandlerPOST, - "POST /contract/:id/renew": b.contractIDRenewHandlerPOST, - "POST /contract/:id/release": b.contractReleaseHandlerPOST, - "GET /contract/:id/roots": b.contractIDRootsHandlerGET, - "GET /contract/:id/size": b.contractSizeHandlerGET, + "PUT /contracts": b.contractsHandlerPUT, + "GET /contracts": b.contractsHandlerGET, + "DELETE /contracts/all": b.contractsAllHandlerDELETE, + "POST /contracts/archive": b.contractsArchiveHandlerPOST, + "POST /contracts/form": b.contractsFormHandler, + "GET /contracts/prunable": b.contractsPrunableDataHandlerGET, + "GET /contracts/renewed/:id": b.contractsRenewedIDHandlerGET, + "GET /contracts/sets": b.contractsSetsHandlerGET, + "POST /contracts/set/:set": b.contractsSetHandlerPUT, + "DELETE /contracts/set/:set": b.contractsSetHandlerDELETE, + "POST /contracts/spending": b.contractsSpendingHandlerPOST, + "GET /contract/:id": b.contractIDHandlerGET, + "DELETE /contract/:id": b.contractIDHandlerDELETE, + "POST /contract/:id/acquire": b.contractAcquireHandlerPOST, + "GET /contract/:id/ancestors": b.contractIDAncestorsHandler, + "POST /contract/:id/broadcast": b.contractIDBroadcastHandler, + "POST /contract/:id/keepalive": b.contractKeepaliveHandlerPOST, + "GET /contract/:id/revision": b.contractLatestRevisionHandlerGET, + "POST /contract/:id/prune": b.contractPruneHandlerPOST, + "POST /contract/:id/renew": b.contractIDRenewHandlerPOST, + "POST /contract/:id/release": b.contractReleaseHandlerPOST, + "GET /contract/:id/roots": b.contractIDRootsHandlerGET, + "GET /contract/:id/size": b.contractSizeHandlerGET, "POST /hosts": b.hostsHandlerPOST, "GET /hosts/allowlist": b.hostsAllowlistHandlerGET, diff --git a/bus/client/contracts.go b/bus/client/contracts.go index 0d096cd0e..bd93d9be5 100644 --- a/bus/client/contracts.go +++ b/bus/client/contracts.go @@ -142,10 +142,10 @@ func (c *Client) KeepaliveContract(ctx context.Context, contractID types.FileCon return } -// PrunableData returns an overview of all contract sizes, the total size and -// the amount of data that can be pruned. -func (c *Client) LatestRevision(ctx context.Context, contractID types.FileContractID) (resp api.Revision, err error) { - err = c.c.WithContext(ctx).GET(fmt.Sprintf("/contract/%s/latestrevision", contractID), &resp) +// ContractRevision fetches the latest revision of a contract directly from the +// host. +func (c *Client) ContractRevision(ctx context.Context, contractID types.FileContractID) (resp api.Revision, err error) { + err = c.c.WithContext(ctx).GET(fmt.Sprintf("/contract/%s/revision", contractID), &resp) return } diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index dea3b376b..89073b928 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -192,7 +192,7 @@ func TestNewTestCluster(t *testing.T) { var contract api.ContractMetadata contracts := cluster.WaitForContracts() contract = contracts[0] - revision, err := cluster.Bus.LatestRevision(context.Background(), contract.ID) + revision, err := cluster.Bus.ContractRevision(context.Background(), contract.ID) tt.OK(err) // Verify startHeight and endHeight of the contract. From c73e4bbff92b531034bd5f36f3862caf69931d0f Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 4 Nov 2024 13:54:21 +0100 Subject: [PATCH 291/708] worker: add ACL update webhook --- api/events.go | 24 ++++++++++++++++++++++++ bus/routes.go | 28 ++++++++++++++++++++++++++++ internal/test/e2e/cluster_test.go | 22 +++++++--------------- internal/test/e2e/events_test.go | 8 ++++++++ internal/worker/cache.go | 2 ++ internal/worker/events.go | 1 + internal/worker/events_test.go | 4 ++-- worker/worker.go | 2 +- 8 files changed, 73 insertions(+), 18 deletions(-) diff --git a/api/events.go b/api/events.go index 85fe857d9..ea237cade 100644 --- a/api/events.go +++ b/api/events.go @@ -11,6 +11,7 @@ import ( ) const ( + ModuleACL = "acl" ModuleConsensus = "consensus" ModuleContract = "contract" ModuleContractSet = "contract_set" @@ -28,6 +29,12 @@ var ( ) type ( + EventACLUpdate struct { + Allowlist []types.PublicKey `json:"allowlist"` + Blocklist []string `json:"blocklist"` + Timestamp time.Time `json:"timestamp"` + } + EventConsensusUpdate struct { ConsensusState TransactionFee types.Currency `json:"transactionFee"` @@ -73,6 +80,15 @@ type ( ) var ( + WebhookACLUpdate = func(url string, headers map[string]string) webhooks.Webhook { + return webhooks.Webhook{ + Event: EventUpdate, + Headers: headers, + Module: ModuleACL, + URL: url, + } + } + WebhookConsensusUpdate = func(url string, headers map[string]string) webhooks.Webhook { return webhooks.Webhook{ Event: EventUpdate, @@ -143,6 +159,14 @@ func ParseEventWebhook(event webhooks.Event) (interface{}, error) { return nil, err } switch event.Module { + case ModuleACL: + if event.Event == EventUpdate { + var e EventACLUpdate + if err := json.Unmarshal(bytes, &e); err != nil { + return nil, err + } + return e, nil + } case ModuleContract: switch event.Event { case EventAdd: diff --git a/bus/routes.go b/bus/routes.go index d03f3c98f..ee589dcea 100644 --- a/bus/routes.go +++ b/bus/routes.go @@ -700,6 +700,20 @@ func (b *Bus) hostsAllowlistHandlerPUT(jc jape.Context) { return } else if jc.Check("couldn't update allowlist entries", b.store.UpdateHostAllowlistEntries(ctx, req.Add, req.Remove, req.Clear)) != nil { return + } else { + if allowlist, err := b.store.HostAllowlist(ctx); jc.Check("couldn't fetch allowlist", err) == nil { + if blocklist, err := b.store.HostBlocklist(ctx); jc.Check("couldn't fetch blocklist", err) == nil { + b.broadcastAction(webhooks.Event{ + Module: api.ModuleACL, + Event: api.EventUpdate, + Payload: api.EventACLUpdate{ + Allowlist: allowlist, + Blocklist: blocklist, + Timestamp: time.Now().UTC(), + }, + }) + } + } } } } @@ -720,6 +734,20 @@ func (b *Bus) hostsBlocklistHandlerPUT(jc jape.Context) { return } else if jc.Check("couldn't update blocklist entries", b.store.UpdateHostBlocklistEntries(ctx, req.Add, req.Remove, req.Clear)) != nil { return + } else { + if allowlist, err := b.store.HostAllowlist(ctx); jc.Check("couldn't fetch allowlist", err) == nil { + if blocklist, err := b.store.HostBlocklist(ctx); jc.Check("couldn't fetch blocklist", err) == nil { + b.broadcastAction(webhooks.Event{ + Module: api.ModuleACL, + Event: api.EventUpdate, + Payload: api.EventACLUpdate{ + Allowlist: allowlist, + Blocklist: blocklist, + Timestamp: time.Now().UTC(), + }, + }) + } + } } } } diff --git a/internal/test/e2e/cluster_test.go b/internal/test/e2e/cluster_test.go index 32526785a..1a0e019e3 100644 --- a/internal/test/e2e/cluster_test.go +++ b/internal/test/e2e/cluster_test.go @@ -2616,13 +2616,10 @@ func TestDownloadAllHosts(t *testing.T) { t.SkipNow() } - // get rid of redundancy - rs := test.RedundancySettings - rs.MinShards = rs.TotalShards - // create a test cluster cluster := newTestCluster(t, testClusterOptions{ - hosts: rs.TotalShards, + logger: newTestLogger(false), + hosts: test.RedundancySettings.TotalShards, uploadPacking: false, // make sure data is uploaded }) defer cluster.Shutdown() @@ -2631,12 +2628,6 @@ func TestDownloadAllHosts(t *testing.T) { w := cluster.Worker tt := cluster.tt - // update redundancy settings - us, err := b.UploadSettings(context.Background()) - us.Redundancy = rs - tt.OK(err) - tt.OK(b.UpdateUploadSettings(context.Background(), us)) - // prepare a file data := make([]byte, 128) tt.OKAll(frand.Read(data)) @@ -2658,13 +2649,10 @@ func TestDownloadAllHosts(t *testing.T) { } } } - if len(usedHosts) != rs.TotalShards { + if len(usedHosts) != test.RedundancySettings.TotalShards { t.Fatalf("unexpected number of used hosts %d", len(usedHosts)) } - // add a host - cluster.AddHosts(1) - // grab random used host var randomHost string for _, host := range cluster.hosts { @@ -2677,6 +2665,10 @@ func TestDownloadAllHosts(t *testing.T) { // add it to the blocklist tt.OK(b.UpdateHostBlocklist(context.Background(), []string{randomHost}, nil, false)) + // add a host + cluster.AddHostsBlocking(1) + cluster.WaitForAccounts() + // wait until we migrated away from that host var newHost types.PublicKey tt.Retry(100, 100*time.Millisecond, func() error { diff --git a/internal/test/e2e/events_test.go b/internal/test/e2e/events_test.go index 5fa7dd768..b87170b89 100644 --- a/internal/test/e2e/events_test.go +++ b/internal/test/e2e/events_test.go @@ -21,6 +21,7 @@ import ( func TestEvents(t *testing.T) { // list all webhooks allEvents := []func(string, map[string]string) webhooks.Webhook{ + api.WebhookACLUpdate, api.WebhookConsensusUpdate, api.WebhookContractArchive, api.WebhookContractRenew, @@ -132,6 +133,9 @@ func TestEvents(t *testing.T) { settings.NetAddress = "127.0.0.1:0" tt.OK(h.UpdateSettings(settings)) + // update ACL + tt.OK(b.UpdateHostAllowlist(context.Background(), []types.PublicKey{h.PublicKey()}, nil, false)) + // wait until we received the events tt.Retry(100, 100*time.Millisecond, func() error { mu.Lock() @@ -148,6 +152,10 @@ func TestEvents(t *testing.T) { event, err := api.ParseEventWebhook(r) tt.OK(err) switch e := event.(type) { + case api.EventACLUpdate: + if e.Timestamp.IsZero() || len(e.Allowlist) != 1 { + t.Fatalf("unexpected event %+v", e) + } case api.EventContractRenew: if e.Renewal.ID != renewed.ID || e.Renewal.RenewedFrom != c.ID || e.Timestamp.IsZero() { t.Fatalf("unexpected event %+v", e) diff --git a/internal/worker/cache.go b/internal/worker/cache.go index 2de374bae..4bab86a43 100644 --- a/internal/worker/cache.go +++ b/internal/worker/cache.go @@ -178,9 +178,11 @@ func (c *cache) HandleEvent(event webhooks.Event) (err error) { case api.EventConsensusUpdate: log = log.With("bh", e.BlockHeight, "ts", e.Timestamp) c.handleConsensusUpdate(e) + c.cache.Invalidate(cacheKeyUsableHosts) case api.EventSettingUpdate: log = log.With("gouging", e.GougingSettings != nil, "pinned", e.PinnedSettings != nil, "upload", e.UploadSettings != nil, "ts", e.Timestamp) c.handleSettingUpdate(e) + case api.EventACLUpdate: case api.EventContractAdd: case api.EventContractArchive: case api.EventContractRenew: diff --git a/internal/worker/events.go b/internal/worker/events.go index e0960fd5c..a0aa2debc 100644 --- a/internal/worker/events.go +++ b/internal/worker/events.go @@ -111,6 +111,7 @@ func (e *eventSubscriber) Register(ctx context.Context, eventsURL string, opts . // prepare webhooks webhooks := []webhooks.Webhook{ + api.WebhookACLUpdate(eventsURL, headers), api.WebhookConsensusUpdate(eventsURL, headers), api.WebhookContractAdd(eventsURL, headers), api.WebhookContractArchive(eventsURL, headers), diff --git a/internal/worker/events_test.go b/internal/worker/events_test.go index 95a74da91..2ade704c0 100644 --- a/internal/worker/events_test.go +++ b/internal/worker/events_test.go @@ -156,8 +156,8 @@ func TestEventSubscriber(t *testing.T) { time.Sleep(testRegisterInterval) // assert webhook was registered - if webhooks := w.Webhooks(); len(webhooks) != 6 { - t.Fatal("expected 6 webhooks, got", len(webhooks)) + if webhooks := w.Webhooks(); len(webhooks) != 7 { + t.Fatal("expected 7 webhooks, got", len(webhooks)) } // send the same event again diff --git a/worker/worker.go b/worker/worker.go index 4f48e7e76..942243cae 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -334,7 +334,7 @@ func (w *Worker) slabMigrateHandler(jc jape.Context) { if err != nil && !utils.IsErr(err, api.ErrSlabNotFound) { var objects []api.ObjectMetadata if res, err := w.bus.Objects(ctx, "", api.ListObjectOptions{SlabEncryptionKey: slab.EncryptionKey}); err != nil { - w.logger.Errorf("failed to list objects for slab key; %w", err) + w.logger.Error("failed to list objects for slab key; %v", err) } else { objects = res.Objects } From 6de4abeb0692ad6dd52872a7eda989ac10a1689a Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 4 Nov 2024 16:02:24 +0100 Subject: [PATCH 292/708] all: merge master into dev --- go.mod | 6 +- go.sum | 12 +- internal/sql/migrations.go | 73 ++++- internal/sql/sql.go | 3 +- internal/test/e2e/blocklist_test.go | 4 + object/path.go | 24 ++ object/path_test.go | 28 ++ renterd | Bin 0 -> 30688192 bytes stores/bench_test.go | 44 ++- stores/metadata.go | 6 +- stores/metadata_test.go | 272 ++++++++++++++---- stores/sql/database.go | 15 +- stores/sql/main.go | 132 ++++++++- stores/sql/mysql/main.go | 145 ++++++++-- .../migration_00018_directory_buckets_1.sql | 15 + .../migration_00018_directory_buckets_2.sql | 3 + stores/sql/mysql/migrations/main/schema.sql | 7 +- stores/sql/sqlite/main.go | 154 +++++++--- .../migration_00018_directory_buckets_1.sql | 6 + .../migration_00018_directory_buckets_2.sql | 1 + stores/sql/sqlite/migrations/main/schema.sql | 5 +- 21 files changed, 805 insertions(+), 150 deletions(-) create mode 100644 object/path.go create mode 100644 object/path_test.go create mode 100755 renterd create mode 100644 stores/sql/mysql/migrations/main/migration_00018_directory_buckets_1.sql create mode 100644 stores/sql/mysql/migrations/main/migration_00018_directory_buckets_2.sql create mode 100644 stores/sql/sqlite/migrations/main/migration_00018_directory_buckets_1.sql create mode 100644 stores/sql/sqlite/migrations/main/migration_00018_directory_buckets_2.sql diff --git a/go.mod b/go.mod index 9c47a08c9..0c491ec99 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( go.sia.tech/core v0.5.0 go.sia.tech/coreutils v0.5.0 go.sia.tech/gofakes3 v0.0.5 - go.sia.tech/hostd v1.1.3-0.20241007200428-58d2cc50a7cd + go.sia.tech/hostd v1.1.3-0.20241022083902-7d61fc09be7c go.sia.tech/jape v0.12.1 go.sia.tech/mux v1.3.0 go.sia.tech/web/renterd v0.65.0 @@ -31,7 +31,7 @@ require ( require ( filippo.io/edwards25519 v1.1.0 // indirect - github.com/cloudflare/cloudflare-go v0.104.0 // indirect + github.com/cloudflare/cloudflare-go v0.107.0 // indirect github.com/goccy/go-json v0.10.3 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect @@ -45,7 +45,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.30.0 // indirect golang.org/x/text v0.19.0 // indirect - golang.org/x/time v0.6.0 // indirect + golang.org/x/time v0.7.0 // indirect golang.org/x/tools v0.23.0 // indirect nhooyr.io/websocket v1.8.17 // indirect ) diff --git a/go.sum b/go.sum index 55115cd4f..e367c6fea 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,8 @@ filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU= github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= -github.com/cloudflare/cloudflare-go v0.104.0 h1:R/lB0dZupaZbOgibAH/BRrkFbZ6Acn/WsKg2iX2xXuY= -github.com/cloudflare/cloudflare-go v0.104.0/go.mod h1:pfUQ4PIG4ISI0/Mmc21Bp86UnFU0ktmPf3iTgbSL+cM= +github.com/cloudflare/cloudflare-go v0.107.0 h1:cMDIw2tzt6TXCJyMFVyP+BPOVkIfMvcKjhMNSNvuEPc= +github.com/cloudflare/cloudflare-go v0.107.0/go.mod h1:5cYGzVBqNTLxMYSLdVjuSs5LJL517wJDSvMPWUrzHzc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -61,8 +61,8 @@ go.sia.tech/coreutils v0.5.0 h1:/xKxdw83iZy0jjLzI2NGHyG4azyjK5DJscxpkr6nIGQ= go.sia.tech/coreutils v0.5.0/go.mod h1:VYM4FcmlhVrpDGvglLHjRW+gitoaxPNLvp5mL2quilo= go.sia.tech/gofakes3 v0.0.5 h1:vFhVBUFbKE9ZplvLE2w4TQxFMQyF8qvgxV4TaTph+Vw= go.sia.tech/gofakes3 v0.0.5/go.mod h1:LXEzwGw+OHysWLmagleCttX93cJZlT9rBu/icOZjQ54= -go.sia.tech/hostd v1.1.3-0.20241007200428-58d2cc50a7cd h1:kcw3S5gVN8uOnIaVBQMt5UNpRe3z/+xwpmQT5B6+Zbs= -go.sia.tech/hostd v1.1.3-0.20241007200428-58d2cc50a7cd/go.mod h1:ZDezsW1NNGPhodtAWMuzhxQdPg2fcDOgZPi/eSSuPBc= +go.sia.tech/hostd v1.1.3-0.20241022083902-7d61fc09be7c h1:oGRzqksT2MFoS4SvkrGbUG1LXNbnmv2KBzzv8uf0R4E= +go.sia.tech/hostd v1.1.3-0.20241022083902-7d61fc09be7c/go.mod h1:EIuirLN/+714h+XaIpnJkU2BFdX/JF6Q1VXhX4N5sbc= go.sia.tech/jape v0.12.1 h1:xr+o9V8FO8ScRqbSaqYf9bjj1UJ2eipZuNcI1nYousU= go.sia.tech/jape v0.12.1/go.mod h1:wU+h6Wh5olDjkPXjF0tbZ1GDgoZ6VTi4naFw91yyWC4= go.sia.tech/mux v1.3.0 h1:hgR34IEkqvfBKUJkAzGi31OADeW2y7D6Bmy/Jcbop9c= @@ -97,8 +97,8 @@ golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= -golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= -golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= +golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20190829051458-42f498d34c4d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= diff --git a/internal/sql/migrations.go b/internal/sql/migrations.go index c4be4c189..348037fa0 100644 --- a/internal/sql/migrations.go +++ b/internal/sql/migrations.go @@ -9,6 +9,7 @@ import ( "unicode/utf8" "go.sia.tech/renterd/internal/utils" + "go.sia.tech/renterd/object" "go.uber.org/zap" ) @@ -28,6 +29,7 @@ type ( MainMigrator interface { Migrator + InsertDirectories(ctx context.Context, tx Tx, bucket, path string) (int64, error) MakeDirsForPath(ctx context.Context, tx Tx, path string) (int64, error) UpdateSetting(ctx context.Context, tx Tx, key, value string) error } @@ -220,7 +222,76 @@ var ( }, }, { - ID: "00018_gouging_units", + ID: "00018_directory_buckets", + Migrate: func(tx Tx) error { + // recreate the directories table + if err := performMigration(ctx, tx, migrationsFs, dbIdentifier, "00018_directory_buckets_1", log); err != nil { + return fmt.Errorf("failed to migrate: %v", err) + } + + // fetch all objects + type obj struct { + ID int64 + Path string + Bucket string + } + + rows, err := tx.Query(ctx, "SELECT o.id, o.object_id, b.name FROM objects o INNER JOIN buckets b ON o.db_bucket_id = b.id") + if err != nil { + return fmt.Errorf("failed to fetch objects: %w", err) + } + defer rows.Close() + + var objects []obj + for rows.Next() { + var o obj + if err := rows.Scan(&o.ID, &o.Path, &o.Bucket); err != nil { + return fmt.Errorf("failed to scan object: %w", err) + } + objects = append(objects, o) + } + + // re-insert directories and collect object updates + memo := make(map[string]int64) + updates := make(map[int64]int64) + for _, o := range objects { + // build path directories + dirs := object.Directories(o.Path) + last := dirs[len(dirs)-1] + if _, ok := memo[last]; ok { + updates[o.ID] = memo[last] + continue + } + + // insert directories + dirID, err := m.InsertDirectories(ctx, tx, o.Bucket, o.Path) + if err != nil { + return fmt.Errorf("failed to create directory %s in bucket %s: %w", o.Path, o.Bucket, err) + } + updates[o.ID] = dirID + memo[last] = dirID + } + + // prepare an update statement + stmt, err := tx.Prepare(ctx, "UPDATE objects SET db_directory_id = ? WHERE id = ?") + if err != nil { + return fmt.Errorf("failed to prepare update statement: %w", err) + } + defer stmt.Close() + + // update all objects + for id, dirID := range updates { + if _, err := stmt.Exec(ctx, dirID, id); err != nil { + return fmt.Errorf("failed to update object %d: %w", id, err) + } + } + + // re-add the foreign key check (only for MySQL) + return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00018_directory_buckets_2", log) + }, + }, + { + ID: "00018_gouging_units", // NOTE: duplicate ID (00018) due to directories hotfix Migrate: func(tx Tx) error { return performMigration(ctx, tx, migrationsFs, dbIdentifier, "00018_gouging_units", log) }, diff --git a/internal/sql/sql.go b/internal/sql/sql.go index 8859f0a2f..c2834d90b 100644 --- a/internal/sql/sql.go +++ b/internal/sql/sql.go @@ -21,8 +21,7 @@ const ( factor = 1.8 // factor ^ retryAttempts = backoff time in milliseconds maxBackoff = 15 * time.Second - ConsensusInfoID = 1 - DirectoriesRootID = 1 + ConsensusInfoID = 1 ) var ( diff --git a/internal/test/e2e/blocklist_test.go b/internal/test/e2e/blocklist_test.go index b2c55fdea..355054da6 100644 --- a/internal/test/e2e/blocklist_test.go +++ b/internal/test/e2e/blocklist_test.go @@ -12,6 +12,10 @@ import ( ) func TestBlocklist(t *testing.T) { + if testing.Short() { + t.SkipNow() + } + ctx := context.Background() // create a new test cluster diff --git a/object/path.go b/object/path.go new file mode 100644 index 000000000..c13f7323a --- /dev/null +++ b/object/path.go @@ -0,0 +1,24 @@ +package object + +import ( + "strings" +) + +// Directories returns the directories for the given path. +func Directories(path string) (dirs []string) { + if path == "" { + return + } else if path == "/" { + dirs = append(dirs, "/") + return + } + + path = strings.TrimSuffix(path, "/") + for i, r := range path { + if r != '/' { + continue + } + dirs = append(dirs, path[:i+1]) + } + return +} diff --git a/object/path_test.go b/object/path_test.go new file mode 100644 index 000000000..04dbc00f3 --- /dev/null +++ b/object/path_test.go @@ -0,0 +1,28 @@ +package object + +import "testing" + +func TestDirectories(t *testing.T) { + tests := []struct { + path string + want []string + }{ + {"", nil}, + {"/", []string{"/"}}, + {"/foo", []string{"/"}}, + {"/foo/bar", []string{"/", "/foo/"}}, + {"/dir/fakedir/", []string{"/", "/dir/"}}, + {"//double/", []string{"/", "//"}}, + } + for _, tc := range tests { + got := Directories(tc.path) + if len(got) != len(tc.want) { + t.Fatalf("expected %v, got %v", tc.want, got) + } + for i := range got { + if got[i] != tc.want[i] { + t.Fatalf("expected %v, got %v", tc.want, got) + } + } + } +} diff --git a/renterd b/renterd new file mode 100755 index 0000000000000000000000000000000000000000..25f016cc091b2ca423cd87f1eeb8dbde6385569a GIT binary patch literal 30688192 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
O{Y?OMg3UzY78FdzbCa&@foAf=xi&8 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 zνefSEvue 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 z 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

X9UO<f5@?7)I!; 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%0DZlv{GS3dUvKooT4((bxK-j0$Js4O_< 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 z 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

U=u99$K}IdS7gIuwJe^>j`#oV2J0!Fiel zcN_P&qPKGSzKkqiC)z!AqkQJUK!$3qKVs?e1+8;>&3nd#o`7le5#E#;INWRQNf`R+ z;P2vwZMD(pC;t0-wfo-p-`Bg{2c7P+K9LzzdD@$sBy$>%#v^)1Ga?bN5Boj^(=dYId- zZN(-IkU<)MYjLNinjWY-VdlUe?DKG0V%zs56*p$*!f>P1h!qx#mPd1F#cSrfKr_

5U3B;@y9Fj!&n7_ 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

w(!71}X>Qr4fEFfQ1zSgcSjVdPN}A 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

fbi1mp^uBqL<&=R4@OHmCnX`xk;B<6DrfNm(Q?_ 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 $$ocyC8S4>7uZ2;d_sza{% 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

  • 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

    x;7M}le8McKl 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

    V3oC#sSEI6O;99kperiC=$w*{sxwVaB62 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%0DN_=W^4i3Co{7}*Gm5(lx02cOvA8~8~yVj{9P5m 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®`&iv;fWdf&wGpmmg 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 K^p|zXPS0pcYU%>nsR{%ULIsKnpFP61Z2cDiF<< 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

    wgZZZBRaRPTc* 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 z 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

    fP(yn#RecV;Hg= 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

    s9-+PpbLHo`+(`KWDndo^J&Wb^NjZZZD+h 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ˊ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

    w zLY@SEm%-iZg9$H(@yWhi`>*`Rr2p>H$lTLc=clP3Gvjm5d(rlX_7J=e)`U`(pIFyQ z6|4>TY-di~P3te)jU3!XJXtOW{5yV#mY4Ntd5m9(`1!z-a!SFk&Z$5E-)M!uI5{ zw=}-lUvVZ5iyl`#coxLgNe*F#s&R>ngYe(mZ)hCWAAbM-v(&G|UA5Cv-0jui z^OaU;;&b;#eZE|`p@7GLGx>_DG3#P{HV<#d_#AK5AF1`-1D;t(VBAmo9LXon??JDe z=c0Pce8t@a7#`gH9z69>i%Kq*h+i_rc{fFaQbMo%S((B(x*TbtD?;5w*>W6yl3@yS z+-j}(!RTLiCv0eN*RAaJ5MzPXqMSUszf^B$90RJSS$SP;45euL}I4d)^^mUlQ)W6WHJ5?knTJ^BSb@lZArdcU^Gk zTKmTKFA2W0LHk$JJGy`6wB41@ag2lb?9bx%>sy?m^AJLb}#|L>*HjZFjaN>=(Fu>+_|6 zX5jna=OAFYr_bH(ukq94Q^p6s0P*?!Q#l72)1#M}J0_|hM(jF-`|a$Qf9l7v_{<>O z9C=S_^P&C;JPto2Bh*c(oKCj$i3oeC+wzu8OPHe)b@|_cfPm zz2o@dj>XaPgzagkKJR71_Oz3qMD1z&pGECyyWjMR*wc2u3fb*wD|Stq?`%&S*-ksj z^e_Ff;l_ubw)?}}nEj(`#BN4vfK*;wiQ1X#m$e@eZhtPr_s0GV9Z&QA`1jk?-}~o>&tsL zPv7X*ReaJ6{CKE1dT#Y`pH!u9pWEn|e|*f}bCl#?*6qB{n;3U%6Z6SMvhH?M)jVLE z_|45#{@=y#h5SiJ?@!A8j@+N@CGW)~JSBebvnFOy54r!ky2kxN!o**;r^FY3Qv50L z|GTU6Wd*G>;d9JAvcGVjDtuD){%`RyUkW}_roW4iEB8BcKk-S3-xIuuPfGkr@e?2S zE5S$n@vAb%nD>vx8-o3*m+SnW`m@jOwM?pBqpH~TGuJPB?z^>coWf)~_*-=yNLhX46Nh8eoztkaoj4v598zH|9gCx4xh*2*RI8LHxKwyj=vWpR@h?Fg_JHKj?$As>aSXYGI?lhmU*ge+HlUdMWWCpU<24 zu%9eIIf)PXh2X~>4-DSdxYese!}u%#J_FWZ0EzfzjsGS-r>qJj#Px^YpRzya`9dtO zgLHYm5c$-TI6f}o$MGQ!#E0Vr>IrU3JEi!=@Y>h*xIB!{a^T}V8^vdSlfQ?L|NkR= zh-Vxh>W`O3B>IDVx`%Xp@S-q2KJc07Hj3Q1yy@S=$HjME|5y6M@4H>(mij|{SWnXW zgYhHvBT`85kWY8t_ZEB`#wQ2gPcGiGYHn&}tk3>?_*8d(mxuGU;`Ph>Uf+{CHc`1) zzno*W9nMv@iPx`u@QDxgB#uvNsJ`E!Ug5U1!}xUXysPDPVSF6mbN|!PvD3C@e-9t0 zo8~7AIbi=q9OC$}UCKdx;=}!@x!@BYbBnI;=7FEa=iTT$gZkqaXn)}%e%$fEpxf%E zeeMh6Qv`epe`C(|hU^x951;Dv$2~{$$yC@r6CdJ`#s}xcQBQ~u&wq1Kt~5U1%S1~q z>H+cbx<3=}3xoeV|6_c*TlXw%7skf}KK(W{joh5q^6%lp@@7F=T7PcS=Sw{yK5kO= z%|U$PlWe5?T=0pH-%{5JcG907iUaW^J_hHeyO3ipui54F$@@<&EiNnBKYg~(5#!2B z#!Rz^`v^-;+;KXcF?I5!-lIB=Wx%LTo%%RcX9hV|#<=4BrnyY{>yD6cp-1KWD9(Yb`?dJP z>oQ%QjE4V1{NZrg?{zorCU)L;Grx#^ps>8GDvxh5K3HXn`etqL!=6vj*fdPz!~MER*D(Rfa66p8e7WCyu#QRfa{_up5=@AFBJWTqpz+sf zxasd0OP@U^dmP06kt4q?-B?TJk$YFIYozTX9qx!6#}syshSOeB>Ig|si1w14!$h9Y z*HVh`{?vsZMDrUIQvPj)0{F6Z(Oxr7s&Q0!e!Ao;-QQF4vEaLu+9GQzIokfz(%TGO zYoFJiPgn&0^M~vF(Z_j?V4GnT0)Sk8p0*b}C-EfkX`ik6 z@VSN7A3nFx`l-ME69*etD1L4s^T`s^^(t50FZi_FhV?PpM|g2>sb9@%o1fO;y-6Fz zr!@r8wf6h$wGRAK*T{1kUe{ckG{N~47tIo!m((%Wit9X4$80-M{Nm2c-aqT*t^JpDo*XJCOe~pzVa!mutm+U*|#d<||=uJ<4 zoT+|w{8aBqo};)}`%sNT=YQCBT@!lWzh4_kPwa=;XJs!bLXcne?bu=MMfsulfoY|X zf8~BreYf?4_gZ(;+Ngho)c3Hwl=$7+RrRsih-iC5`(l*2H72h*d~(k2_f{r+=GC`Ini~ht@R}Qp{n?& z+xtWQ^JD(^3Tj5auRKuXh2wu+BKVyq>!?ND0?Lx-l@h&i#c%044eXs_|| z^AkE-{CsxS4GJs&hzs3yTPM}dgwN+=6`#Z(Iv-N~srr7nS7&)YCh41Fq+$q_%P`*) zeMuZ8_VI+4+$!yY_)~-T3#eT}%bQ%YpRx4RXBuvn%Kbv;uTy>Uj@{2#dVg!Qd>@~$ z*1>QWsbPu2eTo8;AD zP`|ufsaUzD>wsu`l+zLUlQ2(c^QHQ|qvmeMjz02g&i+n*xtFnY1pKL=_A-`Ullb;~ zuhi$_7utS^%H#cm-i!J>-yeM*j_eom$5r)bKZrbgZ)&T^6Y}dGk*5<}Q6p>kNR!|}Zn-8L6i2t}=DxZ8G@elb@-bcM# z*Z8gEh3rQsnQue^lIPbm$=ycDK9rM8?jE8q67J-TGKo)5GSh#Q_Fz+$enHGm?a%SO zAGeus9k>xu213N#hvOmlB{)we6jionRN`6A~(ZMoprS4ictDpMKDv2m$ z_Y+!v^8J>^lHD(7{k-h>k-x3mah&>{+gln-H`!rLsdqDqgf8lu} zqUGWDYe~7^689TAr|oVmaX+Rjzb$dUp>M;4xZlt_UG{Sd{jc{M#&97{x4ho{{Y?0L z{kZB+YS}Zvoj1N{^`}vK{7n6^&&XcY>5uta*DD_|3-^BJd0liTx zir-ktpi0*N8~a54)#;c2tE4Anq)7?i|8`71^~>0}ma4&Lb@OjWWWvWhq4;>q|9AK# zTDLWph)?SHw#E|i@p9T4OaCc+Qf)-O&@SU+<65c)pSKVCbZ{noS^%Ha{}LbPM9~)^ z;*)%#t&Df7@NtSHTlr7KD`I{NU!Y ztl>W+N{P$wqWuo*CEXUc={#gT;!W(Q>%_^}{-}!}d~aF+exL0shw%%+CqB9GfAGVr7g~JgU!wT9*xy^$ zMf$&uRp;lWx@N|Q=XVmH_&E(o#*Br1I)8ud_lZyZJO<(uKi9#5p!m5C#OJklHUE6? z#pmzB-cWo#(#+TR{((A9BW}Ep`F?Nk*x>u*(n^ib{XgwG$@;-zRp&37{dNtX6L^jV z<~vMhM2t^-M#uQX=X!n*201wpv@phZ!2bm2FM5d2=l?y=Wdxsi=AHg{a3}RyRvChe z;ST%-o1bf8^=I4VicdE5XVYvMpSNqCwlDAOpBW!JueaBFbqwvrn@e=u1h$FWsU$wv zEY)~fGKk=cxW3E#YpL3s3IXuUU zIBeP+#evUz9qhGneSr03Kcq{30SbD82mL|2R|I}#%ssUBuZzO?IKXGvNYS76Rr=%Q z?HWFDJt6M2@0@r<*8_-8KYoASN%g_S4fD}o5YIyJz1$XY1) z>#o4_jp)5NV^9T|AY#eEq0NFc7aF8C|)U1;Ll z)d8mf{E3(^r@*IvQg8S?zOHk8P`^sA(&xqRlV2Jq?a!?GY5V(r&&>GH{yy=!ne+7K zT3%$wJUB_q#qmZK0@i`gdXx?RdX&rS6~%3AY(3CH{Fz6iee0s_Iq`gal9r46MOp5j z_`LSi=T!(fWpF*XIfpG>8`ht#(4PjfzUs}c!Y9>h*YGjGne_$9n0P*k&oO9!h#Sk5 z1v#mniVw>b*H0G-EZq{-w*v4-EsyFO>rFP~Q=dJ=UkP_P+&6A`cfT+`i?IG&EbFDo zt@X?Uw=4eUpv?H#^=EsnSI2C_^YU+u_U}A*oP6g03Y<5<@!NdJ>GFxDOa3D8>z^Iv zC&51u@!bNgM@ztW!FPr#pXELvOYtQCLBy|wn}9p-ffkpA@!1G`KDkHQpN%cdW78n# z;LP|u*0M$*iTLn53EFEwGUg$S>sXI+5a2D;@{;d>UpN`hcN4P?`FHa( zdHT_>6R$;#{*dF^nCDljpd8C;+b%V+P4zsEk8@*`Pkef>jq>^Y2FLiUkE3FI2kCBV5S5b){%0|M9{3%%>T{3p zvu8Nv79N!PDct^KVgB{fHhCvlShYtp*+=oI4f%9`5yLyyzE~Of7vsE4FE&5jhVu)# zAD8&F!?~o)XEx-_8=>nD<~XfK#HZc4QGLkoROL@B8)mi-uJW7vhM6}mjOy3=&bn?% zoqAA)^X@|V9?Bmk_LPR1Qlwu5_o?f@?-IsmIlfQ%rBd46;Y2~!g8F9GAD-W^9`dSt zf6DLIcpd|BsP24%Jzqw>o-Z%n<#K}m##C@TgL4b=z@NwcMMbLvP67BAQcwO+oD0GC zsn2+h9{80pcjAwK9393d2j>&47$WuNq$+$;hi1m7+i%hOm4CJ7gY!WoXHI@6$|pXX zUr|2i5e{xB{wx|lAN*MlMc2oO!}uSgd_Mo%5ufv1>c`9An+1wz0`e)(g@51i-$v|T zR{)><60u+7)i%d9(t2$U%Z!hGuWGOL>X_X5=r4Tjf5A2_4^TO&0jdvK2pIIN@;M$L zZi8{|f;nC1v$=>r67jv^+7IS|KYf;_o5c4yF8I#%QGS2$J0d^q-;V&l5^e?D_BVZh zZdiY^U>|(MGQlS+yXyQ8H#0sw|AY8+|3dTQ4A=M4NXE=tfqY^;f%q&(KHat2&*tEU zzK|0i7mYx_PdtfRAQ&F7(dSZz_=~hUnE7zuKCNlw{PL~yb^bo{ z2Wg*6nwY^jPr~h&8K1#zq@9wB_~hU_LI1(%__;mTG44|RVLlfkpB~zoQsi?9p1Xs2 zJ)bAfyCQ!U;?o{kYJ$$c65z+zLlP+WmYDt!59W*RiUI8deAX}4=er2{v%J6T59rts zsYsjOKQlf&zk&EX9K*GvmYa8;H-k zgr@7`JO;|$u}1mc&D!n~pY3=q@p^PH?6sN3YXT9(=XuOihy(GV{W9{2PhHskXMf=` zLpN%E*#5-vq5r|Rr#>5Qf7Sz^?89aJ{CKnU{*B}jyN1t;cu&FnFgw-RzmA`8;oydz zEEn)3KJjx1T*QytS?dS>)6{45u#ZO4dP4)V`-iRE*^H;es1 zLSM+ao%mqiiwnLNbMO4U*|lN)ad19Cr!(ySo zVf*7Ce>Gvhk9^jn=3htag^T!8W-C8+{xboGdQd_Bh015WITh>qUbfcXBFJGn#Qpj` zdTk2hjv(RLOo*nW{=Q*ob8NEFM?|n&b=VN3;4v9ZkxmFZx7?M9QyOb<F%QDu?xm zJ9i$7ofkqp*)KSEt9;_N75#`gL7$h4{1?XD)*ZUu8OFy4K1U1}`y1Vwn**O!eB7fl z<8xq16raEDhn{y+eMWMI=bI*rbX-Jy_9s49YJ3Mb#Me<-F0&)Lj-7}2*DnOWjh2_~ zPv0-F4u)}*i};O(MdMRnJcQG2GqY%T7@zGp|6`%pvrnAZ*i2fe_;`ae<74g4+iQLB zU&fS}U!-FAq~90Zs_iQAiR0iv&dl$$Uc}d>xS?rx##j|=%` ziOT1DF}6QRgeTxG8IpTk7@v)>fBo8@@($(G`lk1E#W`_wW_)_v1t__Q&(UR?PygMh z{v3>TKM(US;`9D!%_qnItQVVL@0)z$z;j;7=X0<1y{1dP7vxITHtvneuK<7Lts39_ zsPnt|;1eghQx0vjG>p%7%umk}``2FAR^~+5cTOIY8J`nj-6;a;U)?aza*F(P8urIc<%$o>wGN@{kS^O{ z;yjS^HI!Gf6I^Ng>ENfpf9@fbpFp}>!S4sUoR8$-hWI(Dx!~{dqvGH}em?l;oEzo4 z;5UN(V#X()onvwe5uf>@JHE@nyEE-Stp9=D;P=#VfA<+Rj9rb+hMdb~;9=Kr6AOA9 zOQoHv)_pDinE|4ID{7lWrGyLJFj~V?SM@fQ)+4@mX>U0@x3~GLzQ*_G_BNJk!f$2S z>mre7UGI8{FI2k${8xxyXd&}+nWQIl^P*^ewn%~P{jSKiltB9Cn%>6JZ07G;$)8Yl z7jdI|&{tE>&xGHTHML&(M%Tfr!_QwKQ-i2P0^n>uvBwXk=;(sC?o$lw-=n)lpYI#8 z)MWL|mf2nni=+Ox>(q#Z-;j!i7w!|4*GldWzZZK2_^I?AJ3f%~!r{v$Klb}oh8Kyv zus>J);r!h#>D%vN8Gqp7sJ!a%+a~GQYh7b?f4aH-mhku?cY&@?p0P&WUpM1yLdIGr zX#1wUp)qvr_tDn=WRZ$9Yn;dR7wlDnz0>#6w1XM{K6*YnfPZC|(w6x@^}V!t{9u!K ztorYznSZ*}JG$%ldANBd{rgzHFSnQbn$AzH9m*!MgP-l+&1Xg5t1hUi^_S1H*4U^% zeK$NB|NE?{zbr56e;_755ex6UB`UwBe3#9%tvf#!|F^Z#@U=1di*JmE6R)_-{)qfL zKWdR@^)ER``zMaiwtDh@w?GEK8CIgr2MRGn{7z61V!w?_H7;C~g1p9g-K2n^$$6hZcTET_W>^8L*)#M;?m z{^&Mc`)WtQZ>R6~rwx?(V|LZ|`^gcCUmJ*|%kTF$f`5hRU1~@@^OC%$_2m2dE030O zvbaqf$b3TFJ;Zg2>YACK$Xrw0+tx^Yai33$u8*i|{wZ!!+_G*WaAaL`oyhaVy-nOi z-MVI}xW4$W7rD+!bxmJM#~oVFTq5$4;%*SX{cip?2~SA)ed4CX-E8BHs%yRyH!1Ef zHs0vE=20tO+z%yPU)=p{{-hnP?kYuq2lw@}4x1cq|CVEa`2;*n4 zzo-4(c72(plxICk@ngS1*X}P2_aE`K7+{u zNVvX*_Z?V%c;A8b$M+p@pMedtS4B+T=U+wTGv9HS?GD{@cN?71enR(F+JAWS6bHLc ztcj_Y?mu3U@ust;s{hZE@szcL;oQ|CpmPq;@8dPMJ9c!HVYqj1Rs2_F>u`AdF*No) z^4AwjeG83;?D*HICEri3Xc5qM3AeJnyIaV2_ASizy(L`q$GcDbLf76M#bcr5CkTH? z!iBcqBl`!%o&xjdN_oTS#c`vbxY51o^$7zq^}mOFqxc!~T5zk~2b8J*^$J|+XI%5& z>VM5(*I4>b_rH(srv0xsP|71z-Nkz2Ai{%A-*>|Gm-~l`?~~`_SJmGX>LcqdUAuoM zTz_w*Jyz^DVm^HIgPi~8A>hR++HaEI3;cgof0GXlGk>@Krq&EI{_0^STz^xK4l{qZ z{%*c()t$0`?~skyzc(M}?|xCImhroC)m`dFvDRa1CEf32pF~6X%SE~KFVJ?}pQ7_- z;&*q2)L;2tll7&y%wD`{zlvQ(_;=-z@Qks=HWk>CRp@x__qndkywI z_^;{w_hs2<)Wpn&ZoKOkIx_rZHd2k(=Z5846Y_=3-m`zQQ2p9!Mo;D&{7MDc%OS=2wKebm2xUey13 z+o-?r(5V0H;Zc84ES&j{yUaJ;2TL|B%A|kSPS6^fJYMzhxZmvhLFjy6=`U^lO1|g? zM0*+DS;fXu*8$P|<#bei@FmRBD`IcJ)*t5u&sgeOB;l^~uWP)3rpktME8o2A1r)c3 z@gD9^JntDx&EFFJ3auZc2B`eRY6%y5Me^_bBK`APPiY?+--hgCblRx#lg~8M9FKbB{& z)l)TGeLHsiCh={1<^MW7Alg@9_;6{@_}jXR-;VnGtcd#gJ$q`$aARq-q#tfiPm?NX z<#>M$H?$Ui;X&tuDnuL9q`F`Vwg!SXJ|Bz}GTy+1P zefmVR)j@o=7qrj%KebQq-uGM}Cs&hC+drmV7>*}tzm|L#@oAqmiT5HheG9H<`93E0 zohpKNa%9*OTy#I4aKip!{5Ar=)U{P>r}l>I@qZ6Lem@w;kLwFLnjMq2Zwvdy#EJH8 z&7Jxjh!gGGlAjMb#4i!EgG~I$FG76cmw+9fGVrT&DiJ{ZHq{(?VHm&dz_0)6h7l2k z6aG8+5!X0=3@w;@?(#c``vatU0 z<>3Z6G`6GyQ4TLH9yduDG|D{A z2FDB_TcgH-wd1s`u$kjN&N0Q)rk9VKHnX5)-07v$96b;)9d}|RR7KA$+sQ_=&2$iW zMDes@$C`-Ve@O9}$CON+T6}s*TG&_#3}Ou_nNTvLc+xaE?oW%`Z|vA|iJXpEjtCL6 z&QX)h#Fct`zLp0rs)UKZk)^k%qI+vveupiT@k0ChrULtp+$ovsX9a-ViX{4u zLB9IyxP~dejQ9J_pUTfhJ~rfNxxF9O22pds{|EMOGkz}kC;p`J89xvFV%UpFG}C(N zg8wn(lV1cr_v3lXb^KZeetf@K1^6rn#})MdTyNzHdp^~+i?kekKlF;|RAN;va{};4 zlxN0IrX9gW{09CE{9^Bi%G*TsLr34nJPe$uXBbtQEXlZeAcweL^S_U58So0ebwwO&pwf9e7x^8l(5tD!MzvB|EBUKDeK(@vR)LP z&un+1^Vy^nI2@joaL>+HPnUj2=%*v2@$GX?hSr}i6Zv8P+t-Lcw7zw%4G;NENAZW| z4}ZnvPmRgHB_{vlnEZR=@&gp)9a79)a-O+6Tz_5Ik81I_tY^<`X=ZhMQtz0aS^s9e ztQtf8TZ8AFnzsfisk4rH(B;{H!FKKyj8EM><+I(Q-3k9WU3V#fv~8#l{)yTS6oJon z!;F0~;CSH2_j6W){}b!gV2wW?eE&SvKj(_o0cR!nba;O*7_~+YuM@^^Iq+NH2rjSG zGTk?5y>n+|#?S71vDa3}n~8mGiLTlXfo=BKu5wJ5==h_DtLw{dXN~XRh6$sU&whot zp3^?ccM(5Xsqz`W0Q|cSjq=$~)Y`5%`Fm^q;&T|hD#|Z|96F`=L3hi8CSt$d!}*ST z*OK}4$W~?uzE??{nHj$!4OAfU+Xnn-cZTW4zsJZzK*a@`U$%2O;3vROEmS>lz^{z) zbHSg5eDXWYJn)B%0e)Xc$9wZB=Y6dw#I@se;5S#(^&p4NayGbN+_$3R30D8sU847~ z|JZj}4dZleYz8iYyo${D(Y_h+tBLxU8ld%#>F)Sl<5_4tET!{Ov z{AscVD735ltx{7&p3vXjZ{=MeYp6opZz{k}uIb-oj0@NfG2Omr>T~5jV?MusKwrt{`0A@~PhrpZR>C498G5(+P}Z{ ztZCd|IO;McF)K5EcK%_nt-*g|-pJGbI*IauZAv$x-N!y*;`ihIh>vnRxZ&s_Q8_Hf z_JP`tvAv`oaNiKWr^tt#^N}w3F8Gzr6dw=i7Jy&pBTbk5Lh$MExzN3E^u=ujzn%66 z-91a{Z}Y1CLH=yTuN?%@<^CYz_y7F9~|~6ZQqPT;52ne|&z+HY=a?(FtN1bK2VId}4bylRjU=kux^J z=WDndx|{I%8VNaH<6oVZ;mCOz|LS}U?_Zpcu>|>}`}yPndxh~^0{e)Cz2yDO=MB^L zBNOK-er(_A(!Suk}#s$bP_3u1<=ad|x>j%W|o-t9piBo)ij(Egzby1+tpHlqHR@LtU z@Js7yJ54_En><+Kdx#&$FAMk6Eqi~?>`e0y|3cL(=LBu9dLC9w<{wSd{p&^Kp#te^DeTv6u;2iw&J((TS#~5Zm-O9I*&iiwEj@Ov z>~B9s&eN+=7SON_l0WgAnj%l=i&E(y&!}gT^4roJ$zM|LcWadebY!-aZ<3Tx{FZnT zH@aVSx}hQyext5e{LFC0Z}5Q3_<4(`7)!*@zj2DOMEv}l#4kkrk~dE=mWW^K!70WP z@$*)QJR#!eCB-j9{8A4~d?DhOcyx+IGooU)geYbt1Q~OL~>1G*kTYsYIna0wxJEQ$=?nSyE zCecj7g}N20Kh^w9W9i-{x_{7Xd8V=Sgxnv<-%aET@#6Dxz z%J&Xaz5{+w$f3UGf`3Dn=9Bzx;9vKG%HcRK5Bz&kF7msBpAQ_!?*Tp?`D`h;9JmAe z9I`Il|EBPMJlJ3VXY;guRv-K9Ic}y)`>e#TJ=Rma57scrz@=RieuqH(()N8}AD4J6 zj^Vu=(mFf{Tv6{VqHu9$H?D1=nr$74P)(1b-R$v{#w~KE#krp z5Vwa*Tt{Plo8_iH&0nl|P;Xez>aC69qI&$$5n9K=sz-Rvmv=_K)EKHPdA zxnsikxv)QZ-*)LguAr7lTXIEa{AjOa_KKE_9^cUcH)VW<3%-H;WG$_yd_H@fuJYX+KZu!+__Y7xzNdT_d^+p#!-xCg z(cK1y^=}>U%e_g)>nod8+5fzH*YM*x6iHY2MWoY>t&b4DSqGpU8WHV(7Xd%o|8yYe zX7K$r(e?GoLsX9AYd(q7-b0no`nU*kTCY(2%*m?*&T{ZeF9xo#PrDL)I;D&U_v6>L z&kW;dV4rVqS%z`PG)dbBbr)pDkM=>gLf&?)^SR?*V3L758hVo`RX*{15%{rQXXCC3 zO|>4;UatdwynoLHKW>+W`gAAo_E3La#Eo;-7xX^Xjv`pT#n6lH8!I;Mk!k!~ z=SPj_x6=1-_WPLd{tbQ)KHoThri_Qhet^?+L_j>>-QRnJu{8cV4Npn9 zrOzbW!S^wF;uqq1?#Tm27)w0A-IXv){C+6aRpJXZI3YS-UTU9z==;L2=16+-JwmdV z$P>Dwjqbls94Ozz2(^&%+W4vNB2P$;C=ABW?m?2C5HFWM;9gm~!^q(M+a;>!eE<8C zRP3b{ zIIlAYYyU)jeI9a>e`>q$ApS>XDxdsZ@VA1WLi{}NU#A@8pL&eo^!i^B7$ti=eL=YX zmZAO@zAp2zUM=T%h%cIMME1szlpe;#7)!dMD`mb0G@=cOzUM?*0>|N5(Hjz_0OK!LMDb zG=A=NyN2JCSEJ=dGUllm9vs$l{m;2r@g}a{P(P;V`T=pG{y85;$Khw6sp&cmwV!3V zA0q#l=zgQrEqHDtR9{yjqwBs@IVtGhdKLgK^^Wek-X|A@^=~`ytCa7{+}&7f+SxZwb{qu95^avzNOp|jZ!VlG1b zyT6IH14;1fysr3p;}xeR;J*ZWpFFqR2fxoZz1p_|=yufCc3-|q!KdpVmG zH*3eUX~@1yp%loj@9=W!M*S~0i~39VSHD?1z*u_Vm}q#DH>3WdJ){0hPmKCUwvGDd zG>Q86j^*d$2cqE%&XxZ7SJ`Xx(tv-~e;6R6QGR8m$=b=xBRq> z=Z_zLh2G#LwB4}ZS2i_O_6<0GNsTKumb$$a&EH?K^3IcG2K&8a>Qsp@G*9wp*9Q|P z7YDRVzLyN|A8l(pl6kV8I99@iMo50_vvNiii>-=cBS-fH=ZiaMh+pXUM`Zn8#vcjE zi>0rx(C@*_$YPm?7Mp9{mijcV>V4W=`F_*N^G_+3b$!XxVUnNF`OagJo{eKKz_-)* zZ`8S?zR9G2(o}D zxOcRl-3#wWQ-`e$VoEa-T#IhecFW%*+8<29dSr6G_U}?ngR2$nlQN$x!Cwt~xc*R0 z*9SlCs9KrrU<}!(+vVZ@!(1){ce&1-D9^V=cG^CqxivF>v=7PW!Sg+xtmyhP=jF7^ zN}PBueBuCoPvszA@%NGW;K%Joy5PUHRPl4VX}?(kejfT?j>8k+$LDXA;1^>ZEV+-) zGZ%qRhtHkviY9lundh}-tZ!A@GlKQlJReN=wv_Pzj)=lgi_0L-n_4gPIc}I&pp(VYd z;n&9Ezl!|(y(PZTl6|DT4(;a;K#+gLjqc+wcRM8$e!D-e_$6v6ehWt0`ESECemo!D zEEHgbcs_dS@^;2j-*V{>LhW(x5i*|4mj2+Xb^+z}*7BIea=(y0FW%zfKO(<{?0NBl z|90^U@qF~eEpopQzbChG?A39c#&<4mXDmH0czbWiUeXKO1;q2v-7DJ3T5vmajO0)6 z)c<*sKl>{s`LmQbR>M8XizQyfjqbKZ4{gkZUw`1|*8JD_x!<=nmWZG8bz5VpI{ch% z5-vpi{9oG2`SU`+&uu8>6C!?zzuFp0#4q)GTX|pKwp#q$PbEJ>7C+~Gu~+hm_=SjH zLh@#*I{Xrnw}60Os)67s#EZDmJ@)?jm6`A>1%9U1zs4^m71I*&bBm<>Le=4yJgJ?r zMEp`?9EW z60C%%f3D=kl6gGzz2&ruNmJ7wAr31qo;0<1%(QWnC-re=^oWEF?-2==4=u-yDVgd_ zEG|1qzhDdn4?1G>xJlFcIO8VGD4sBG?68VSLrbQG|#!Q|x zwPe!N=~MSVX584J(~75+^l{D%e~~HCO2&>Wo;0AO#Ob0*9zMOiykydtnSGqHV)-%c znBuZfhL}i@l?laDrwu8YQBppwWNha0hGPuxk&Y87cjN<1>K*m*;L94ex8J|fz7W^1 zj(AG;hlK1SChpe$m-o}9eZ=(;_#^BTay^CVTzK0P!B6rr3^0#ie=_+x8#LxV?tjL5 zjgFFxc`qiP>tGw|>UuQg$jl+Q-iQ4~@?}~QT*+7Q9tHC2f!}(pj_cVrwm7kdNj;!; zk<6#Vg55YaY8m1WsQ2^1;ql87*!MeF?E85k`+ojCnen52KjQa4weJ@{7sWxoKE5CG z&>Q@KlM6oW0j5fIoRSa`O~L+rfL*f|j| z{J4%u*V&-uF!mEyIU_hE`H-J)MKo#QBOX;2Jx|9hMra&lBZ6No?b!ziEQ;!gNJlJB3FBYypBqw?2-KOb%a?xnNWUKhqMnb7&i#(^?H zm#a>Dl~ZsFIIuCcjuYmky>^YqG0rFF+@e2`u9{8zSRDKcoj~%Y*GXEa23WRA%;53mu1H9-`RKZCM$ldue1-recstfh4x8Uza8*tAA)@1P5Th! zyNI8*4}tgV#E^Q2$xk4D+@0LD)6HT0DuG|w;dZuGb!}Vz z_waLZenlL=|EYZ(;*^Ul#qp!Q5MrzeT{$U7U@W>Xbe7_wf6F#Xb}Jzao^H_z_p?A8{l8gFf7{DU9Dr;5WTfRR5N* z_ZMuRTRH%5C1*BF>w*98@bgfAi67CKC4TJhB0lRc&;R1{nUC-U+@J2f=F2dCWmvyob8K_OP^WC=-^0)AtNm9T zKc|kar^oS2J{%n{5-Yw7F zl?gxpm?(bBAN%j%m#PLo@*R|q_&NV&{E|q&6z)kCubdHHKPW=|{pACh|27R__=Mue z{V8;7_f`8>TOlt#KLgvu=V#Q%`237|6rZ2vLD1MyI{)LoTh_z)ysZH7K04d3)HNY2xD!W}>x^9eTfT*X1=M{&)YZ3QxY0!P+sbt4yM!0D!oCrbj&VNdU@i}Z+jz%Gc^Tij=SX?zPi^TyxOQ@jz#+c*?>D^N>TfRWClKG2H3W|b zxvD1bp;l$qU)pcm3b}bWUxocMGcd0>y6(W|bYeZ7pHmHWa9E*B(1;6F|z(>*Wn5}1~gKlS-*E=$AE5;`>mgO`m0@3-|m%ghFP~&ZP`yL z`ew>H22@9?pym6e9gU?0qF-To_Io=U?oE*NgdUEi*ZNkC?@O4axs|Ga?zoP|67@GZ zNPY{|9V+@S>3fpCrPHN6)_$-zQ2at;r2N+JPLcbCs=G=NKzGYg*<-`)?;`BKe)Iks z#uPV6@4rr9Uo$nDuHC<0+f<#;;$WY;H(d9bea1)ZewANBItJcs0hSo>rc( z@wxxdMSSiL<-U2=)Be~um8hxnKo9XZ%Yr)JPkMcF%{!OM^T7Aorf;rkTUn*A?mu$P zmQc8JXfCAe>`-s%KHTDj@=W@>Uf$Q)%R5EKM;6EIkp1q3|MjWzyeivcJb(-ixA0a@l=6;r933KceNiyk>}hvD4<4@<@sMyRbL)_ zM9Z(K%XZ4HZ(bdhU(`qX>`=JZQS_ycUpBemTtUC{caZt7dq)-(J%Y`MNa2{mLS||C-H@>{kG(#(yQ(-@`bYA zQTfzYo^R{K@>)C35XI_gSZT`1x1Mh5*K9HB*+$7G>FJ3 zDp5e9phP*!C@w5|Kyl%q=pdjdptvEfjDm{W5qDIS|F5Ti^=4*#a}W3a?>*o5Jl~x> zm43Ury1J*TyQi1x?v_eJ9?GxIk97j#16F~b_6PW_;W_wq{w2OXU&z(>$FxR#z)0jr zhq;YfDh*f6GyRL;D8vU;^oU%=y=30#-_yzWVer$B+r-HCLEM9l+fqUqYy6z%NG~#e z*arDW{XLO@C^rA&PzMT`e(c!xnB?HcR~Hs`MlOE zW_(eL@x+z$d6iLzl6}u2&PEbfjOX>$-kE zc)qEzUtqsdQNEup!1+ZR#Oea&cyoIB)>~}aX_4>1%Q?Q{_{XGzD`xKDxF~V{&fqdb zFYD|g_dy?VosE1fGOBZ~(VNhVKE~%6d~#e@b6=c)F8RDsjrJlOzuClh&y3^qh|gK# zhrfh>KJiJXl!#)w*Ie`1wrKfX!t-e_UyJYc=JNAtgDvUhE9cXSe5bLT`ZN7l(#i8+ z(R_qY@;q3J_yKE8`EtHAau&Hrc~6cniW1|F0`hSZ_#)ybOfvj~FAV<@;)e^K<=|%G zMM#p}o<(qM%Nl)&VYt#?&t$DcWG2GzoSB-q}1q&Z>^}LThe@pWH z3C{&f+7B<{eiAvCDU*B-JZ$(&eYc2Do-cMZ@nS!s+d%#F!FMS-ZqA(of8^d}**9sZ z4;+wvlj8pz$?JWS;+K7s;+K7s;+K7s;%Bx}&L;j6_nOj1k81hmaDFF~=krg&e1`vZ zdHdkKmcIPT`Iu6EH?&FLKJ4N=j>wVCwVL`d>u+t-56ocxHpu)-qJ8-Fxj4O)mrrDV zhx9i2?A;ot&m(?6>7AR_hZu+W1I(w-{1g(u>Hy1G>B}L;B|hm0Ufg}Z?Fi2wEtqZM z=Us2?Pl9#mfB#ZXEqr>7Vexu;`7VTgTKLd8X{_Pnca6_Ke3Q7(K+5mUI}N?a9ovS& z=j2BW-dXWN=+7eFPT)np$@871J^794Ix~$NMZSYJkpD`E-*| z+wuOx5qwX%A3_qAb0z&1rhbWhx6(e!*=x$X#R#eMUamLuA34NlmzwwVzcKod@|Cm$ z+(Y^vVt+N)@YzdzQXf)2`tkfK_bpUlJQ=K)@6jGJC^Ps>;>j-MIQ%8Q)eMLmstt+&(5chP5Y`M%Eg@jIJwi6opnmoI|>BhE7A#bLWCa)01a z_UG7tlJ;TsCk8L;t`_;c^-CNt<^5aYz4aW2l0GS4X-{6+6)*2L>5pqg{yb+fkNBih zM1-_AUk?6aakTt;v_H6f3)bJ7*G-+j=59|fUpaqG^e^Y5xrdwbBI!SpYxE@VDRR7k z=PC+b5nX+ww+IaVaEi_VVg$tIs~cuu19XGLCXxZm2HYWi*Y zq<<~ZUKJ9bbe0ey?xeG(?2pQKALaZ0*BDde9-fkK@Xo=>_a~{3E#mThX}2jCa_@!3 ze5~PqH?i-LanTg-H?{FLQ! zuKDhj5TC4PWyC+o^YH8*rhV{;PddU!+^4JkVeV%o;U=Cx_6xFUqjUR@N#;H6chk#P z&L5NVoBWPT`pZ8va*=U?l;4p&?@QL}vKgW3332&~+-tHwF5jg*(#yG8GJchEC*vL2 zXI)78r0K2XP$Q^`*W>F4wO1{nu=#LM^7yTp7yR}!B*cXBoHNk{mLzHUE$=e%h9 z;8MP>ULSGF&yP|c9GrY7$apUy-z@IWl=U%@?>4cc=6P#JFvBahm~tfc0Y?%)j_2_R zpQgm`;5?4#!yF7E7O(o-oB2(3!ehgpFzAsKB7McryP&J#C_q6 zS7P&LSv=oj@ed%Zm8s62V$yRyOfTQFv91z6bg~v0x%iKpcF+W(pCk6pAIAIh9i|xi zWPkn--s>gxSKcStZ@q#E$h=)J$b1hc5dRwGqHZ?*KbQC=Jh#hY|3u22oVzUe*`!bI z$1Np3=}11sy=nHdGo$6#=J^*@_Mxv|rGDyuZ2zP5@|E*Lr2SobrIDBWhM8}a^w&ze z+1b>)3dgkiP!q$>9PKUL-|(5`4~a%jFfz>;Navtf#<3O zSw>!xejCM}$J+Z*ZQOdi>aXa-I9Bb;6%?y1` zIjV+6ULxOJuNi#{ACc1^Q{(*4lNU?4B42U+o~ND{Ex$`BUw!_FcWOO#^nBBAb$Jd+ zE%FmrpGy)xY#;XW+)*#f2*d)6lX4C0-q zOuC|{+l8L}Jd5;a%egM3&mn#*&w&v>Hu0}tXwr2*_Ct)woxv%`KiyTj7 ze^L5j4*9$*{T$9S6cc|Q$E5-BrNk$l93rylwy%*}MVDXu0rQ@PTz~ug6xiD=t*WZt zVDha#PcPr9u!9O8IDkJwU4xk)+S`ksWLzir zbc@`-ZDi=BoXUGw+iv&^-eN{=>F4k}kxhJZyeIRb@_yo$@Q1kX-SX_zX!{`JfCe$=Z+uOW8yFi+`%#(0YdZopVOxTib+F8 zT0_T=ACrt3UaO6C!=n`9ImSs0)`St4jTtd)(n+jH``VX?y)q|ioOsZZkeKXY}1boM1RO}9*Wmzj2SFDmHaur85$ zm)!v4kH|Wr*8=lx$CR%V_U{!BZv*MTn1GGQ7KS2AN zPl?;xME3{i@aX;ky+M#ZU6mAvk;>D1vEcO>o4ak zt$pUoKhnu}H10v{ISKk-bo!C|tQ8+Ax8fc$snUJv zSKiv&|mcL zw}+tGtFx}<`@e+vfU6c6zx{4|rQwxz#{MgK0pWmwyQnYxR)DN-RYLjMh^t}Xv&KHm z+R$EUm_)y`vAxo82Ivp*2=jba73crKsL_A5AcQA(qrEx{ zT<=nxpAF%Zp+~=?#{GNp$Fb({4 zxV^9-gcsMrkMz7%1tH8rcmTiqDEI+-O@|-xoqLcT;CG~FS3&qg2nW>gkp3Svm3=e# z0UiNAbzTkS-2{Gsy48^1vuY`C9sGdvH9zFn+XO#g5d6*s@UMU$P!IgKE(V?&4%J;{2rx7LiOEk+o6IM!FkLcY~;|JD8D)UPutDXUL)6~OO5F-`?1 zV|}m=^ic!%aXmRs9d|eKI}G~Dfd8p+>boy7KZW>SP29ir^f-0FiICqM*n8J1QugX` zs@_AWMm2CBSZ(l!|Ft=&uZ^&u>yRR)-W;c?kN7kTf6%Bf~Y@fhn9_S{r&Rp2S32Eed6?G z?GV1IJikRP&|biP*+SYHmN37P2Br0v{=;WAHV#ND-(O4&tD7medLI4o$o@C`sCa&6 zp+6~UX}4t!7IPBN$raeM<3T!n00O1IOsQs_^n0bD>3E}?=6VWr~k|Ir?}o|kx}aW2IA$rEawlX z#xI4GIi#2KFZ{YDKl#MV`3+Y6=R=J2cjWvAhv#%Sq<@+DcjvDSF@?l`DD#vZOg|{~ zWqUW>JWu~oV@FJ!G-Pa%rRRV~4LNDjh+&0o^r@92CJb*gq-fMhn&SMP-P*Tr-`Q%e zXM;|;r1>O?bxHH)U94{7$6YpR0*=9q@fbFK!iYBU12I$aajK??5ytOVG-BNFAw$QE zIOzBjB}N#30OqRxvpK*-jl>Cg^d38Q$fU^=4n7N`7y+^4Gd_E%hk$P3wqFKE=O=S{ z{zJoO(ci2RDZ_u5@>`4X#Fg_Olxa@X!jITrJ~CdOpZVJ0ZJw)#?m_tcLVB0P9oqFXzV|R~h4(Rps*a52Tl`oc|!@cQ(&wknZ-QejohtDTf-Qs?;7LF z{vol~&f@xt>Sp>KBvVTt`bYTFxoutOW-wqo@iy(oMDFhmHR+07UN-6Xmc;S7#J}Cd z;AOookND;LOuB;aP5dXMPwL}o(hFYnu|9!!$miJ8O}akcOZ36uzc}*V;(p(2Roe46 za$2#$z0t@~&kxs)%&+Z11MQqr-and*&#?bzxxd~{^ncKwmHyIhoWBx8#&c&3j`uH% zk1>9=ubI+N|7zoRyI4xY58$VH`AwSP-lt~j&AW}?KCYS4u#^6vbu*Gz?<;_D7b|(ClhMujA;)#`|m6eFEtN{+tqjpEXr6-xe9K_9j0aM?ZfN zJQ1Q#3GbhO*lyjvWZtwUL`nPd?E{!!TV6x;T4KtNRW*J2*YnEyk@El32P|)_hb9zL z$}hz6qW?Glh~uUFs}JM&EHXN^naQWrbBp-i34Av3wG(`Dh@Y9rkJO{v5_p^RzjlqM z%hy&pv*Y-D(pTgpo3AHj?K8~z^8kH~)^!f^73Ef;N&m+k-Q({{X?~x`k%;!{oVk#iVbWpm&MC$B*+VC4O@vU61&I z2|g={A2Bx0$0xobCx-#qbYFP+gzeGxCy(-fYbFTV*H5wWYNwa~x^E4M$p3xXhe|sj z4BBrt^;GZ~3@GOQ9gE+KOyWNgKD@VGa*|K`bg|oq*+KXewKnBP@K`<$pD)B-^$tJu zH!^5-Hurn`%MD)2LxI@8^L%TI^xxA?&trZ>emnIBZ9D<-tw~>zBYG|&!AXT5*4Oec zEi-)bxc^U||K?v>FU7{HlV1M%TsZxR{9W>q{W>O8sZD$@!Hb;FmwP<(P5reP;RCkY zLND(-e5}c*;HAEdSry0UkV|Dd$4cC-03f zCVt`?=7;(!B|dk8d0+c{lm9Z}D{@3mvOl)@qLS01^3UY{pv_NU{qo#8s`W)CT`M!a z{9FGP|NiE=rX0$CY{|#vEa&cNW}YI00i&;qmmhhrv$;P=>^(iwyLZLQ`D)^)vmfPM zYxr*>z8&{p$+>{rh)Je>&(R_Ay;Q#XO1T_Z;W}E5P3#TyD?t4E$DPJT3QO3C|;|A-%|Ww4jbz z&#~7xQW|7^&+{884XyD((d$cU9li(v&q936)A$I}P>lRW*PrBE4GXjyoS8M_~`h~+;M6~$RsH?{xJs+Yd}%l<>DS50}&iku@L z`AC)@(SPz>$t;P${Z(?_fkpf=vaf*WU*-`1ca97E3!e`$Ht}zA-=o#Y4>5Vf?<8LM z7Z88W6Q=x2eJLbf_L1Yd*@+#uOMFF+ytla9TAlt$y7fEXHswF~U~|Z- zuzeMj{+g-sFXz1YkF-)6et0xqzWbn}N9TX0e~I~wr_1ZdHt>(m2VDqyU6!q-txykI zsbdDj=|9uw8%D~%lt=f`Rft!||>y#Iso2Wwlw9;}rbg?)d~ z`f|ieNDt*d0Ii12I3H5`{grq>z(+hU(prW50p4n0=)D!KU=P$vt>^o@&mup7iXN8% z;{L5`vzpQNKacwttNn=j-m#wABJF>}^yPm`qWw?qGmw1jW4Q{rA5*^UAMm@NhQ_}O z(mwn10S1uFy_{(^^Z4>`Qj`_aGc?nYfFK0axd_L(bJ!$v|f2kL3&LE#N zOh3&b{hncQd=c>#IUWPb=q~uR@^Ml5FQNQTn2q-A$;kXqqxAAG>0%g3`y=;w2Zbh| zOh*0kxOp#cp&z28{>i=-YnA!VWHQ1D(+s_JujyB05#QcVVxh$fa zzctAB&;>6IVm}ZdOoP}D_z2T*E|xNNyW@TYdO$_?1onr>AK<@gPY@t24F_vakko_7 zUEB}qY`r?2{Byb)`FmYWxvWtBU%+q&Ao6$cTSH3z`0WEk{_0E614RB7erpi<+xV?P zHQ!BMmrnkRR~XGX zH<@}{k^JqiATNN(-@|VWB7gNY03!bY zzcu{3B&r1#$?|10OVotIAjJ8w1ZkIFal?>IvDKg-8o({9ChWkq>^@(r}Vdi)~! zTRJ*!e|OZncz9VN{EkbZ@8e)^eD)^MBHF%$B z{*vv!_@&(!H}|+*hozJME6Bfo{1OZV@hlvuzrVFo-`|xzF+Yv{6C&?N5ia-0YMj#o zW9_0o6;~FT{W!_q2G=25Y5j` zW8(UG8uHh)UO_k9*W68A4F1~h_UooJY+$&?>E|iDpLX3MgaiI@h4DM1yTN|Co0>P* z@V77QrZiOaNdHLsPx<~FC))ok;r{s(=R)>582@trywyB?|5NtQOaHT?{qq&w51acf z`*nA`5N28WnaTb3*?ggCLrK4AeTcD%-+Kk|^Ue1vpZMu@P5<2IeYFL|C(r3{h)W>mJpOSvYyzc?Ahh`Z&o z7miHV{=78_1A08(3?p}aetTW`GefLWr@m|IpUQ8kG#q-n@#{LOpDVBcqUW!IUO4X@ z;NU!PjraPrR2q6SzBd?tfSkXsY4o$;$v8iKzPg^zGoc3#e982z-Yt~|Id9z>2tVN6 z)h0bP2>AmPA^$qAe_2bV;pzJfKkqE05BQ1vg7c7Hz(qJ$K+`+@kaxfgoL?TDFZr7M z-3wYO4Hxiz{Gs3vsOZTyVpZY}T+^*#wEXAZX4ch?jr+M-zXCnIBVNubne3*$e|Mn8M zhi=cN3+|4}-{ScbSB=H@Y-0KO6IOP5`OEneBLBa$J&|+GQd!`9W{_vvZK+3XH<|ZU z?Kg#_(*7sg=WH@coIB%YMEZ-_n5NMEA?KtfA>^FG_A9#yHVrmWKF)*F{8UT$0W%*Z zfBX&rJG#W%Bi&!r^zs}%%J`iI;175S7HHlZ^mkNj$Q{%N#Vk@bbQ!C!}49h+dD55TLN6+PP+Amwc2kJ}$iXa8{TkyuM; zTrI`MIw5`eAAPYQk@Ek)_74=<*OgnPjMFY9GQ-gAR89^cp{T zBu=N$M^Km}FtDv*(u5&64I>c=8wWys7_0mEtHzBPKjbf*hZ7%TonSQ5q!^OqPnbMT zr=B1wGU$+GKvBAcCWlxMSkqFk6=i(x_(@%d4I5E33Ebt4CMJ^^myRe*6w&()8!~R( zUuB0l3<(oYmD82{CGO&h`2(Z-cZ%7+EV)i$~Vk4gQL{X4QBA&2y`e@F0n#LNC2N!KA>_V36&q=m%G{vB!0i-?!~J91BK z3GuRjN75}NzBBDl1GdV?@;4ms ztNXL=&vioBf2B#^{$2GOn>c0#IF~zFTV--jgIGQ^fZ2ZDDnpgtoZxr@xPX*Jhwa(|DN^5uqnEp zJ@8_4o`UDpQ5xRr62HIaYxp(2HyGi7+Y|ZeR4LBC|5en-DCiR~n10DmCh{-8wL3oF z#JBFLgZs?tsLK=djrqR*81MsR9Btw&@YYb4cwdqKUj7K^o_)@`3DN$g?7w>Dcj)ub z@;1nAw>6BB++QL4ujKoh+JD7;R!l}!wEs%>P5Gpk_9eM*Dvyj(`?a{A${{|rU+V}n z{+IsZ3EX$$5-;t=vs=u#MKv+>OUOs|UrBr96W?&Vp|fr>hfJZxQH_#V2=&zl*ZZ%?l(=Ki;<_hbFJ6_hAXhl7*hP)?T{pTN-u2R zrT&Rt#BSJP1d+4gbBRyMnSAnzmwjFM1LDCgNpZ zoZtiEMgHm%*sDBMF8{p@7rL1vj<_UU`R^B0R&Hc}oZIo>Pn@2`AQM37SN#l5)d zk6)zw{(iblOBHj>oy_{WJ||yyAu>a(QmuyK`!EXYALeG|sR%h4Y}DjJsl)9|z21%E(6N8@*&13y3)q_6o| zeP?xy(ovpLe!-)H~Px*=@Q;pjixMwF{pEa*xw{v=o=*NB zjWY5NXqTback4y$tHi#+-_=8Dko84tcMqlE+zaCRm-R*$VH!%%UkK0Nz;7QQ>x}_^ zYmoIu^=S{K!LvY*^%Li7toH(Bz0pFL23c=(@LR*bYrWA$S{e>^y-~`&xNG~>9-U79 z4(%J%9T!9l(mFm16C0&1R;(lK2nl^*gkm;vci$j3>l@ z5eydPw|4ssguQo!-s%i8o7VFU$;Ni zQtiLUCwOFl($Ep~dVK0!aX|=Te`zlrfOC8Yr0jwH#-Plvg zJ5PpRk0h7PW~@(e%b49i7S_^IgIT&)(fDI-sTJs4*jCauHN=Ow2IO zl=ki(&L!rJpE&945mPE+l0SLqm{G$tfy6H~5mJ#a7%^eusPW@?N^p#fK_RK0OC9l- z8CgA*I%0T8aQ=v~Lq?^WZk-?jAzAmy6NXIE>FMKcPD=SCcf%PB+UN-|nQXW-=(aol z?fCtKb4~kiXID~cy|nTu^W986Krsy;apnHq9FXg0Mis6{a{b$2m0Hewc4fbi)T0l1 z-ipjuT8yw(?(rob6z}jE$^D}8y~rj0n0KBDe+9$Me3ec7BFWG4jUi?)@vk#K7Vj0# zWd2VlAE%Z1eiafw`&@np*BUwa#P7eyr0cgecK8KcU%c>oLmxb1(k&ytjOn{{7oE`g zw&?h)g!l7)wEzUW4kMLPZuj)^m-975{%^^C<2`1+L>Tntz6*=@;i4r7p96A#0Oc(0 zVsqX*E&7svgU$Uvf)~A9K>l*Bhv;P@&+kwzO@3^q+gZ-zV7djw_e|gmiSL)d7Zd-U zyl=w3BrmZ~sg(5MmeAkqhc{#U>$dTHlft!VAD3sQ?(bDS)62gH1u631^`Kb?mGa4C z)E&LWU;&*N&HCK@q1HDyI~RElIf~>CjZ&QKSz5bi}@7&ZcN}s zzgvj6pE2!;O+IfX@cG2QA@&^qF!T=br3u&m<<;3Y#sZMrUs`Fj|7WF_zwGZ7`OoCOS*P$treK`pzF&)>Z4&!SMb6{4 z@O#RAzc%SRy<+6%-|2@Kk=xI=5x)uzCmtvKuhjd;#_=Mzzj42=*!PIsdi-MO1ut@& z$^1CfyG#DbeZM8duiInf?{eR7De-yy4(G`CxX}l>(eLl-Qq%wOu)owF6uJMePkQ;w z{zj4iYJPVd-haqsRnsp_dm`_Z#el(E4Bl?whZu|aA7sBe+oeGI8^p`LtUbh!A|Ju; zCB7Q>l}UTPkNABvn4f;M_o6(;Y+(Ijx?)FlDEY{`OeX24kzVj(x3;M->mB*nq<8p! z;(TRq%+~V{E9aPW<$NWpYbBi1i$Mz?_nh?de`%I^A(4NJugrT%Ig$7$CGZ&x*u(vA zLZ3-|=LEgzt9t@(k-l#NpH2K5Q_OowyOcxx`|K}Cy1B$Z!~N2Nw~4=q{Dn^*@wc;| zCiMBl-}#P_gU}ZcUr1N{pY?m_glPHS%l&opn?SAu>ZIMZ7$V{5O8hblJ}l`QMkwr^9s1=$6ub^w&2(i^^ZozPv5$ z;r(@otG6ea_R!5wFaNjen=zWmzcs(7L2L7!WirYl-hL+mYhkPpf{+=rLymc_+iz3oD z7Q6FA|I=l-&=pXOCjkC=t{mHAKCCdE&pQL>E>|#{oVQK|M#w~p8V02L$_ag z`9BFd{fPY6N`I351SY3?PhmYJUgUpmaU7q?2up5`kI27N`V}9Va>Zm+i|s}}0rMkrJ~4q8IWJ!pr?<%H zWYWty4%x)ZzK-O0O2&86Kap}L_o_;ML_Q7qz3{7V3ON^$e>0w+B6jda#1~#|@@c(n z%6T#I?gIvI)4rmV_>6@6S>w;$bo0+Osu;Q2t4urlBDzBLRr&e%TL+dz8(Ak`uq|P_YY{CesW<-qw{OI$Pb|QUEqiL zYz1B#Uc1Bi{aMIAK;Jju^nm@r9S8@kxYEo|2Xm2sz$th?JwI)OmxiWz|EN7$a=*w= zT3+B6z_40FMNd*c=l-*0Njm)m>kJ2Pn;Gvf99RkZDc}G2&#bsS`_zg1RqMEa1?kmo z?UaT-T;C3EZ>Kcq`_!}?-FfYlhVGE3_Ise!upyD&XXqB_aHq7L(je=f&V2X*Z;;-b zjrah4znZ3(=cfd}p-4~5*FszkHs8la-ZbW{zJ%x_Ib`K_-irPgnxKB!u4aSwT0Rd$lepSL{+>&7{1 z@geyB==GXI+lFx8Wqkib;0Nr0ess9kqiqQ7YMS*!|FE`7!(McMb-3yU{($9(ukAsc z+HFI4l76>NTcsiMey*1t-d5RwCJ%7E2K*IZ1O`^o`&6Ds{BS*|KEeU}dm|j_1;@4x z;rKn~ef(_X2Qc}1;}1F^9I)mklb$m-M``%;qWJoc3wq7pI|=Ux=m>r~|EdGh(@?=9 z?Yg+vPrh+cIY$u(I&G+S4@)h^7?go)-Vu!~e>2_q~ zH_*r3)zz&iciNwY^)#KopYx6T0{`-R zP5h(5FMz)erlG7!HPm(o{Xe)rAij<_1?k%hv0hAmD^R~QpSN_o23O8++H)fOf2*$A zXnu$<^{&w_<5&k@Lv-=(@b4gCCh)zvL{ zKL_?H^Oh-U+zD$etdns-}ffIwc{AvyK#(Kd$TEz z-h0O=4R0a7v`yOGmGEa`e~xo?jTB9jqpHN#FOS?CkN-X62k#$)^FoeMccZ{sFO+|; zs{Gy1yU2@%N?GyvKffOLuYi1_`FlX?2jx+4Z$h5>ckmI?161@R^<%B*bZI*MH2S;Y z;C6U1{1Mpt`%~UO*oOC!w6*)hk#WDQR}0O=ZSn9geu(>}e7j$_!1)s`)S_GB;VqCK z;icU+3BQ}*-*;@B{+C30%M$!&Hjc}C-zo9<$@_=qB+|PO>FM@N^4PFWJpO7lI1;Aa zgVoQ~=g-MWryuJL!@(bF`fm$I>iScDKVKH?!<a!k7!|Nc|?XH908bn?`erphWGW9v=0b);P;kO2{C$sTegS6WgZ22^Z zJ(+_r4UeJ;kIGx@%RC(yFbesPmgj$$y_t`+H5{zHSyE3){q+3xpD(1-PnCTprt{I3 z@Q2Y)`ToxAIdS>u?`~9H$@{hDB+9R!DBs&K-x-a+6MlXFllO9W1D4Uhy&3020S2PH zMCngnf$+$EQF4Em{|e5Z0wnM6Ivnp8jlXaX_K)NKEB`gn1DYkm_a^Gs7PKEazPk?R zSphbVi1W+D_$$hPDeAxG?;`ISDteOoxv|q3H>cCj*1m>=`-#zyo(HS14oUT|-7ff^ zqQ2PehlKFNq4E55ejD*|f2G@bNC?}(FPh(NJ&iuRlZPk`v(RsfhChb%wBI`g;eZ~6 z@$j!Pe;1{ni}pz8#{n-5tqzaV_e6f8^cT)G^~-Am{s8Ik3(a$|FVyufXgef?QJqZx z+l61lJ69n7bC71vkPr%vH~mnF|Ls_lp3@Qe0Ss;m{XCESA+Cmso}_*b47p}mI{nza zDupcEJGX|ew$n_jpJqdG=gv^2^`rF>Y{mNkL_d;Wt)JlL3}wABBm~iqglqjcTA$nT z{s7UBglqlSw;=xeh!3bpKbAFAY4}(A(e|9t_D|b$>hX`HH{ywS`2CBFekA-0lpn1h z>u970cS#kMkw~PZptl(e``a zwhSR3@%4Dg+X+8F+ZXEngz~=Q=EeCZ_a`34{0RLN&`0(0?L5}sPr)B>%e#hO@G;KM z0PJ9XCI07snsDojmP*4<^!vMze}LF83Vjy30Q$H6O-rSrNg_WK<6j()m=d}R2iNNr z-Tzy3qgns0xlUJz@@MZTqo+DViTkhi|Jvt17silsA^U&rlh=lL(Rca&UxUYVNcg1o z|8Ck4`YnT2vj11?uyTk`?f>OGv`xJ1{}uXt;${D@;2q*+|F7VSh?o7pf_I6R{l7Aw zT1x!s+!rkPGU6+8@)7|%AO6nL>%;EsHDQRX56`>{1hX) zN%|qQ|C0L%q&&E^w-UTX`lo5nCHQRO>yI#U6MPQwbB~JSbBQ1LyUCBx+r*2L&mW?v ze=G@N_Cqf1xAI}X9TQtE-_;t=AuQ2$P1-6D_t1uy!^mG!4(e#pThpK-Lal=GxTKXNX$ z$XoPqEbXP-Z%qHnCZ9^QClmRI9vH03q~H=U^vcCy{VAFguRo=i!oF)+`TbSFxP#Nr zTfDzY-doZg^#aQc7$p;(RP7@cI)hujDWC3uYO-N4%8p#pEM+ zk?SYqBY2zqe-Qk9V-F*8-O2YA`ohX4!rnx>MZ_z%Qy%#g3!do|B-{qWzRioSziqqT ze1C3Pg!!{)>Z-|HcXEr;>qpOP>qpwRbuElM0?NaL;vA=u&xAj%gnoYiF^-pV-|(k6 zUi3EaL&IPA=st^n_O~~73R2%hpRY1MVn<+w)Jh%Efp%VOKSiG}?lkEJ#J47WM@4*7 zqaV@p`<0j<+INVarCkV`n(wAfK6lDGaJP*iM)b^JRmLCUR(i!<9Mz9K!|10BhEeu+ zho$smO*lCH?3rWAw|qY(-A{OLiSyA5Axh*uu?qDW7`(*@)_j8(d5b(UM;W|BJ&Qbk zHpB8<1-caKGUfbNC+L$O|bTyY3F?c(V#dkO1D z8KBPwJz&er@DD0qf2f%mPw)D}(4JSRg|obnUqB|_&#qcaIc<)CfQR+_o>fcP9g9PF7wJde_lyKTs^u^HpHKWa@6~krnRuhok8_G?KlM6X z1N@18^tB|>`RFOr;_2)4w`hJ!jz?P(xnJVK0de`rI-JBgp7X!r{~^I|Km2<9D&bGx z8~0DG5$Ask{84(neizM;UdIcNzo2`q5M;f>>QPH+sCIVzePsR4L70ZN$ZwRttk3xf z)36@-le}uT3+VMao!~0cPuB)-rky|d^;;9eZ)E1L^*v|*FX+cZhh2l{C%|tF73s%9 zhekt1`f(Aa;b8T%mx|g$_qyQafzj`eOZ$E2G|ab*t*^e@Z2B$s)#<-K-;J&ua+2>) zMdw5I;XNS!d!{~0Jv?-{X}`t3$zr~KnQHKIKS(a|tM7>89pcZ~WAH)0bs?sN_&J*m zUcT${-92xW!MiQc5aPLu^fG>v`$5dtSES*YTi5I7YKg7N3 zqPvD_{bVmP@wUw}{p;g#UbpWbuI4W>CCHtYUO)5m(2(O1{oKWVlymQTrevIz)0khD zvy^^1#PL~-wev!QPmWvu+-&f&pD3I3-;iGHoJF5WJLg=|C+(c`h)>oZ(c9qHjeJxe zGe0PL8%4a-PltRu*5i1IcDaSbKQD5qYxLt1FHRYMh+FA~i(~tP_fbEES?G_PST|*# zZcR_GAF)pt{cL5w)!%N~F-dm_^%hWXqM!TNpLMS><28#BlJXOIf6~dkx9CmeoyYPO zG&AMGCZFVfFOheXYLwqBKcsX>fBVx$529z0Yf{feq)+P8C0^0KUi}zvZ)?$R-L7xi zky4?jD|#uR|J(&@cSYN`QrfR~n~U$_Y326ozMEb@V!tl>St{}#z9p7&UD}a59A{@R zbS&+>gFE8iCD~sj?_o)PWYzi@=&*VAxqR*d14;)vD-jd%3hy35) z!g|Yb+7RM*uv|#}8A|-etXBcgvo9omLgIVt5-*O(McgY6y`x6D{c>JxK;^BP~^m2Z)|Dynkoeu6rj@0R&UlB@5yUq?8255($)IkO>^JzvJE5iZ&H6G zjr&0_zqPB6hKc$&CHz|x{!h~3%WfuA`)vM!M(I|u>(ChgXAASup zK(Ej1w>lym@J1rNu8H*CzcZfyRf+fc@RE3bME)*#Yj`KYf8L}xzaEv)o*+Nooee@L zPQ2ge3I3w5r0Z6SV+Jf(Jt$oNo@vUPtbeWh4b zgu$*mpACQ7Cz$qK%2A(l3|{E78DaX`I9}@AtWgGUEj4^{Nk999IKGhhBbOPxl*2OO zyC?8Vh#y0|%sWW^YH*$5BlsPpuereBCI9<~pHDsk-&axYoykY=Ht}+vtvwdy;VpbD zDtJV0;+{~s=~?OO-xrk)W52`Zkdr>g2PQbF@7FSxU+3N~O2dYpDDSZ6@uqeOArq?C ze(RbpA-o2`>AGV*1V5nBNA%BvAF!vnp_lr#7k>R)J{kv};fAqBOkE{5aE)e?W842e8j_kzWnj%)gGKA54XZ z@%`mUAMhC8-@xRNP1;R5AYrR?rekuRx`eTKllNj7k>AFAE2T~^d{~# zcf7PGo&KJiRykx5G%)@5`nz@eSudr(&#G2d7K9qiCdm0MU4!jrp|vd+p- z?iKI@77VGZg8sFYbz?yYyB48698g=?R~LjZcNgX<`_@oiQ9%e>j{(2^HI;oW!U5C3 zPlr1b3PN~s9sEe&Dh5A*9v=koyOWU~K(BuUI{rk&2k8F4T?OkQlMo*;WgzTpkUurH zAcPto^79A6$0Ho@2>7e>ke_kL51?)}N?N^&e!~rf9HD80|vqGT!8h9D?tya z2Y&V}gil8};Lv+bduk6yegNx{UtKQz%L;IQUV(aD%j=hFNp>*x(tx&7*(4JLh^hwzzJDYPFIuRi}TYVX$Ne&jFm{o2ZCZoi!VX4J+Qvi3gLiL@jbF?R#)nnHX(dB(fA$sHOP5_su!*F60kz$nhpUH4T1%zMo6W&PU!fRP>16#Qmnm z`6`|MhQ4O>=iX=LpY{4jL;Piu@&DiTDZNiDx<2%O>w1;a9ch59huHY7p~CeLG+P#+ z!u1fubpZ#v9+K3f=uO;H+YfJ-PJeIBG%@Ykrr+{Er9ThJXb}BbC^j1YZ&`12kT(sY zKNr6>RHQ#2dDl>p{uIJA{CDZE?u54|rqf@(-VlSwTd*Z`^*Twk|FU?1sqdC^k<#$a z-;G}lxkzc4Q3LO-?VAfP3SkiV>Gnm*QOD_rmN8HBNn=c2wZchU6(r^|0 z(e>z_m;llHBQ=eFZXmrg6zKt0BPop!@LNM6`ajz5j7B(M?JSeNH|-*&;WozCH2N8b z_CdSBV8jPlh#yVA@z01~tK6QtW)l^DAN*px58xB_M}mon57d){U`PhY^>4s z)O7XlrTMy|qf8z5YUt{7P#Q+|7drDz`7x#Gz=7INoAT#Y>xz3*yQ)U;OPF>i9TxZB zH#zSA_NaJ&;?fV}0%zwQ`yt1+}k4!Dj%a+S0%M)Mgyb%nm;#?UYAL$Jim7mMAoWysYR#0&py;w#De z9MhHY{$pIv6F#}5KPo|Q6MqTUw}n2B`04hV@R#4-tZ(KMKg8#}Hq(`M=y%%3%esw2 z`X#id7yJ<7w;g5p3w|i^Nk{mL``S}Se5>2f%$rR7BI+;a1dNY9EZ=`%{q5lN*HPqE zYh5hq7YogMx~G}<7yWHX;H6!^Q}jx?WRctXO-()>t^-)a4^H4kuZ6VFwn#5}J#C%I zkI1V7`TWUqUQ`0|AKoCPJhXBRVCr1UPXV&b733->Gkw1B>`G$loDe^nKiutOu=4zb%LK4UabbrQ8$} zf6j*{pZ?tELrf9z8(A-%<$j1MCjM-BuUdxQC4Qjbxqe(ie9{rUiJNuZXG^2{+eiC& z7vooVFFsm)yhZ8tC-(8ue&)}i+_^tW;(ty%@__XqlL7aLy*TMbPd_B+MZO0T_#E;{ z+EYtCNZEatt`8|~(kJb>^NCN|YZnlowC^q=zD-Z+o8{mN;*)mVqQ7&+zWYMcuW(7f zZUpP`VAF0@q`%dqUqbi%lLj}B>QB*r{bOYLp zh+f4m(Vx0Gq!hhYC%tun$!9+K974Q*g`qDXzF#6g4)GbcGF{rW6cPWJ=wqIlzY=*@ zWG~e9W5Y+Nd(Px+} z!Xxdcw!^olW~ibZ)ZeS&K7f8~wVG=4b?C3d{(asIi~|rpaS+;P_-7zoU6Y~g9MHl4 z55#xi*Y^89+**er-X%5E^RNfEre&xuUxNQVwbg4EAb*$EP#<7Q*#-VX@DJeXdFKH0 z+~2})SFfphgWdyOHu!k(m$pHAgOSbx%#XwEza4fQaPM3X{!R^bvQ7{4$c^E;NO$|o zps!I=^@QI?x}{KueQky+MF-r2dnfX5!*2f`;9bPO0q+&Sy#ua2q=s6Ga0l@pg5QVR zrzYIq8LABO@en=$d=>T)42SE$od{RQ{}Sn1*guebRubXS9sG~IvHKxbbAQXJCt-f| zj0CH~Fo<~!sPFM1s)`;FM25A)|GJelUFM67lpm&+>PNwUT zzJ&NX{9ZV7O@B)Cw}ay-o8{6YebU)Ogt%3vX1x^E-yYicFKt-``-f_%pRX|G*IJfd ze{w#*)W80#OnFS6&wspw|X-2D2^M^XI+)ZZ)H@Vyw-Af>-x`N8S$nLQ?dQtl)N zFLFPGKm6qomBD})NpJoA#SoK4{M_0`ug(HfPP2*cD({~-U;E8Nj6S4(+oTV);S3(> z7vvG&X)DVU_1c^GRZLgt&mz9Moa0YBDk(S5C+G`FzjhPbgJaBl6%jA@{5gM`ak@+V zX7cf88U2+KpL9GT#2s4agYbN4p(~|*roJD~`lz1z_7c87@5z&SGja93dHRw1C;LsL z|7Jp!s`9XTAN3tR^ms&nvOizsp2-MHu4g%5{S&=93B2g_LE3W)pIq`eP%o}OoA}!G zTlHzK{@MSrP!L%kM|k2Qw*Uv27{=r3tMT|)Y#-DXAl6FKLi+oPWY z!!~z|)<2i_fjv*b{7XhXm9GuC@Hi{d*T4K0hLQ07g6BQRI4q2ef6Zx^EqKw#;6`yd z<}gC?{07m-ahzvz-+3jZv`H`JM(lb;E)96DgSy<*`!douCf-+@LX1azyX8jiG7j5D z{QW-~d{AcU#~$LVa^JSw&eW&9#CPGmgwXFJUcP_92BTL+J=7u}XNP&OEaDk0<+us_ zugi})GoAfemuBc+Pp_4VXFX>0S4Z+eSKFWIzyGyAGx`uc{a5YJfcI;`+*l4zPpopkA6{)_eRh@B>bI z!T5taJ17lrHjmpQU((h1gP{lq99~P`qA`+|D$3yGH4H0*gc9WO@Yz|(;N2GHyD07FNo@>1+0QJ_F?jnmGyZeP=iK+%AMwq+Vu6`fP|u7p z^wu?IKDw-miSW0@@&3zR;(xq9j{lDM%EJuaeRy5SU?1^k@qJVMHOe*bRpyi5#SG&6 zGhJz)E#g~&ZPcEs&hWUOubJvMNd0>_`_v`r>fiL`oL4zwLm2g^p}PJxO4%8@B>QQV%`D!&4U}^ z2YiBg3J>A_%&ZW;gI}+&`ZvL^L6si>Z&&~>={ik@%fv|tP4)lOZ1;`)nbC>*gMYy&{v*u)lutLZGJN&o8 z4|oQC2l=z-f*+u-riVYc4etXOr2W{xukc&LXzfS-ty07X+^O>yk(a6kdEq==|8~3| zKpxSXxY_5ukoJ7}&0m-peqS>W_}klBf93X{*W=Tu*Q4!kFA72KYxaJGJqh5z1M&JV z_g6ch*N~0sre)*p13louJ*K^JenmK7jrc2FjK1x~YQ~`^+*KDV4RczV_R6k&vC?qK zjCgvrA2fdZH{=iCc8s@YKe)zkA3!+ZUA(W(k6i`)0F4-5FVE#6()wg*7S$;`Lc~7_Md;=VDc~d>oq#=ZvuM#e*OnNLV$Tt zsBi1T9!kTg3*z*0Ua*TW4axIoOO8hT?ck@w0CIkCfZrPA{9yG_52Zom?cwZT4QJs~ zpwD-;5T-%S3wH2Z!~d!Cf?cGo;b6}T7QKnv_Wl=+NT)v=`?2(6y=U|{pmmj4{d<}A zE7q;`(SFodvY*AfuD;Tc+z%%Ezk=EIai4g7RnpazKmYprO2f>jpr6S3+xxniaA$6P z+@DZi-I3UzmBIK@eum?PK>0T z`^7BeT|+6;_vRoz;Bs`-b$oebznD7<`~dlh{ceL!G3|-95c~icOwV^AAAme%{837G z%BJt9M#q0eyx-W#hW<8Ik!Z@{y~?tpE3VuxU2N2?242p72j?|}!4}@bEd3EFKMP6k zXPf@FwDdvd^I=q(cb0z5*nM&SxlEvXbz_$y^fvJ?zH0aiK9BfSd2#;v#9N2Q@dd=c zvfc2Jeu_i<)tM$;!50$0Nb4TUHEVwqlEa19FeQI zXCBq=jCA$$aU(_*e7`e^?>NeJwWp z8npeq-KqS1s9kr(`FRS>xEINP>6Cc*H;|hCzDS($cwhOg z-CKIa{das6_g{5s-2Xb#i^d20v`-naQh#3_GhuxZ9=hsn(M-X&tgDX;@niJr@P5V>Rm4BUwRITz!R`u*r89UeDas_ zpGSPR-weIrdlO%f$dA2H&K^1KbHci%9d7V{%=J#Tn?UJA{5_&AAt-a-7& zztC%i@j$2Y`?uBl^!gS1MA7dU z+T{g3H^fqELVF>Rg9L6|LVeM0jKxJ=!}Ip!97t(z#Ewt+zzjQlPNhAZ;4_IYz0vR& zynLz7Owdbtdx!ZE`Xk9l&es*ZMf_{>zRdqI#FsE#=lADAOg8c7^SvzMTM}Pc<{c+I zA7WY&|0(&)`L-tzUy)P7?3LlT$tQh&$f$MI4hTU0lA`%J^%VFI&Bueuq$)USJH z82aGebs?qHui1~1&#{KSjC`IT-Y0$~@tc2*r@M*x&-ne7bOYkw|Hja}%+EgJ$80rt zzX}F$crvMnb7-FP+K9ax}kpA%m zzL5CN0rPo}sn^BCSL8^zxcj}SlcM!^HSHg_{D}H{=%Fe5D{oVJ{fhmg=ywU<*B@)j zr{v>ou2*=p`xE`jd35eMuZ5(d-#N7Zkae^yGV1B@yT|8C}!e>36Falv`S*J>Q6KcD!$^9)|}UO@Z_Tl;AydSUhYSTW4=c6`|uNC^1JSUaSi4s@NP0eP4 zn@Ww`)b*x3NIq)x#jk@nPt|Q&tTgET!umW_-zpB_V9yh>n-}9ep5pTJgpMgz9zc&` zeAquZI8RkWMdt}Q$0HnYu;&T+Es;NfoG0X-i2MT%_B!snll$LXP=@Tr}kuTA`GiF```uwjC}4(VI2kH4?j4KVmGj^tO| zRj=1hdp>|Z|5HD~6r)#t&SzHS{M<835EeOqXx`qqe+M$6$7{i_rz;IIUUq*!U1?~s z9OKu>e)Dh7#&~f>`FL^0Xfu8cK0$oIxsPDJ8}#nSh!1FwY(>X|+uFqamGF6phTr#v z@!P+gt~A_-{6@n+hnn*t(pq2B4#>=Y#zpPY=Q7`}kkN576_)j^5wC^Yjo_Fu%d4kO!cmr<4KW*6!5r zwCMLYpXZ0(*%~9=aO!B;z#ypet1q~9`SEK zYVzaMcp=2(6Mq%Y2^IeGJ-vLSp_lU#9nx3gIiW&dNPOk5$UkweXpY!Xvmc07I(*J} zp8U_)5c*w%uJFIqTX7$Fr}gl3^H(pwK^E_tev)1v$cn5F$o#*v6Z7kUjR@E4JyQN< zJ-|np2ATi20?f|?Dw_Xy5T+qD|G%@l3IHymhV^emH~0BZvp zWPQLxTn(~55a73loh#z=P5-CX3)IJ$r~(}9dO=drqE~S@zPM~{I{nJ}f&alPA&c=} z>-M?){CQbF@SetbYyeq5u$GU(c{G1LPfpekoTqT!8$i|%>_>2(8la-}1JU1qb^Rb% zjq~jQ2fKb?J%RiKaPm*8?C3nmdV+d>j0yn_f#glQvYz1K-8IO1f(6-VsAxSwJqdn* ziq;dn_237P^#pqvR~T>jFU^tOHav{-A9uwf4_A z|IG>iD@Vrp?L@w#`T3CdQkE@RceGc{|waN{l z&v|Gs{y^#Liy8^IYXRoJf5G`!mm(a{D)0m3VEr=C{@dXP{8|a|k-qZ? z{D8v-#pN~#{DWRKlvR)$LQC*dN1*?DS#Airdlr@Rs>v81BEKH;r{OCM(7cuC&yE9s zz$3_?gZL6>Bk1L~cAq#6^Fum5-d)2x2>0;5enX@O_=5Cqb;u8JGV^P#ME(HJgTLkz z913{?p1j1AV}Cs21NJe$R$I^m#^w1s&}-~ zaPE}&cxUci#vdR|!~e(Ld%$N=tnI@?O$aSg0}3uh3DP16f+(&^FUkRtP{gH4P=QEC zMHT@?1&soVg0LzG9$W07D2o(>ibPQaMOi@+D<~GQ@m=@MeLvY9pB&HeJ?DJ?|M$I{ z-<5ghnwfj6$J>#H(1~E z@taW3kT>wa$y>;s^GbbWCN^r!rltGM+?KLhar#jQX3wcrjU)*nxVzJRPh+9x4B zz}F}sb3KvHACvga^+Q@ObRzD>mG6&JR=ttz{=G@=-{$|ge7#hZ9Z+2PI_2sqLUHA* z(vV)DxbpSkMv(G!%cDL3Ql54NcVbimsM(FMu=&6j=Qi2uoE791@d9H4`zgT z)x-TY0O2PiJg@_H4|ac2Mu^;|P;+2WdwCD^b71$U!X0=JcDF3z!*9Z4u={Ygr$9b% zFZ8trLH;zz2hK)%?7o=K90&b@o1mWudoTm~0XyNY@SL@;L3rRngm)3%{v3ATQP>06 z<^KDaGjDSaTA(R{$c*Z zb0H6qOWI{I$MwvumhArZTbBrfI6K}5P1@gBOBH>8UG_J+KK2^|TLgv{db;)JfPr0e5r{gPNmqY5n&ouOG?yh|c$RGch>e%l|}| zvu?F9b;&%vpHm(CmTk5_%li;K9uG3D)*8IjFPRsiJfQ0zofEF|s;lTZ;nuwB>fd=z zxWAyf%0+h|+?R_p!WHDtLO(TePB_ly{zvD82k`%o&Ixzm{*TTH_mRFoJ12Z9^wT+o zy_@r^EAw3NblvQ#qnzm`0m_JBoLQ(K$ox74>9RnX}a=Q z?sT4KP&fG@FaJs%T^s)NPeDV5OUk#$OL5)`U6ty`yz_;gPiV`0T^bnBb=pgzVTb<_ z|6I-6jkW)-%=bNq`O`J;FhA7br!qgz;PaTDZt$y_&*AqmWnRT+zT60%F5!1E-1d!>%a7V zmfNSAy0(m7UvT+7Eh$$qWq*#8@5Q{Y$vtU1Yp#v_N3=e{{To8U;f1uUn>Ft;pTqnC zem~UrwEtY@&l;)yJGW_mD)Vhwj>U3Z=6g-$c$aDasIuX;+S2(Z=f3ALf9J29pQmjO z{ZYT4uJh~bc|4DKpZTv?Pn-Ai1k8UY`ZIr&`J>{W_ZOveIoPbf?DNTF{#;J4?DMgi z@5sFD^T}quK&z{KHqULbdwi^XdH=>&T`)ecQks3C@A5_R`O(Ii%}@%*%;@ zuQ$YbsUK5T#CeMYEHn5l=4k0dB{EODdK27s^%=ZekeAPtriO`O5w)Dc|0_pUMh!{g-(9 z8+b?5n&R!t$M?+ohb@x_!>0 z@zE(o_pkL$^75r|6J1iicdgTMWWGIg#J@5h$N5xtSY`N^a`zT#|FZu%gZ)2MO1G23 zTg=yF`NC&1?`(P;y_Kw^`1FO8Pz(`CXacZ0IBP;m)yIf9YpReOPfz zT)x9{KI3(5k)OkS>qhZ>kou6$>*IcZT`p1|0uHx}&9SZh{Al}}K1Y{t|5=!iXkSCE zPuJ;Ehm)7@`uuqLx*TuNbQ8y*jhVcD0vhceGgl5$Dq^LgYs zDCJUA_v?6N-QQ#0{7&L(=FM}L)-XT42g~7o^*;0FITgE@_t~r9f7o+8S@Frcp zPJ7(H_h3A-NasWFZSwLhXsrdw{Tqza{^hyA(WnE=yEEhEdphr5QmgdyErSCzqzOn| z(hgXmO{v@^oL+7xGnwzxMDy}~gwzM~ypgW#|1$B<{pxJyca&rKypKZ4w*~8CalBae z39kqF`*fn`ROX+2Ev~=IyvzDaKUwO@&ttTIr-Xj4-pu~5Vm(EE9`k1z`@R-4@3Xmv z&DZztsS_>VoSSv|zF!sntK%u^q6#{_{*mP6d(op>kd$x6V_d$RKOBvEzM{S_BwhNh zSE}*n?4SENn05-UN1N+-J(eR+iaSqdIsCp=D*OMe8uz;g7Ty-k9&viBLu$;zyw0{}zNco<@=@MSbWv!%(^<2$z&Kbq!JK>d( z$!GpGBj2Rl9^!mZ_xPbttp(;tIh>fcY@Z&UpUt!?;PZPoU5xp~$IA(=ydRR6@5^uF zKF1~HyY?Bar^V;cihx&`cUtNCDdqBQ3$2-a_cWaY+&M{?qkP{~$}897{N(SqTI}Ct z-dgL2OeXW?U+4P6@k%*9!Sz32zAgK|>>|#oky=li`P8Ny?`}V2q}*3lj_cW*{h#tB z`>&_{XET2$^B(gK^H27Trz?l~YhI1>xy-L;{}%7#n##Q7tC*+ETedaX{Bz$n9$56Xqe?>3cc; ziIqasnZom}6A&KAgq_YeuqQ%3Fc|uf-D(7P;7YuJMe{g*2ZRSk!kz5)&F~LYAFS=} zluC-wisjq4!W|gP{;g(^2TWnR-xTtIlR3Q8s*)m1;rQGv$OHBdV)-p#2O6-u2U&z! zY`4!sd_V`pPwN{_OUMJ{`x>ei@(0+XFyBD=*Ae;vw6WRaOzUqo0Jko83$zX`>y@7iUs z-Uk%79_Yi3kXR3V%Tg{N_1P|q@W4-oe&+k7BMg1NMy{Ic!O`^mr`|7>au;)Lg_7%% zm4BJNx&{TY@-O%ilv-LUHTI0o(|(Kfqdv`UFUMJ3m7{ zAm#1hH$m2uy@z23WPd=g4)TD1*Zu(O7w7{NSARUX5fb%h1?mqV^~d@Z;eo_@@$AiDok6Yam0zqO?W z))j$PSnrJNzkR`ruP;8Z1@q<4lu_;*_+A>e4vpC7{a(CB;-xhH5@ zkJkIVf)*jN5MQ{?unpfc1J=Pm#cyLHJ>dxSCwKQl$Oj(T1pA{!^4^AjC-QxwDrhp@ zhGmrpzXTidqvuV$&?~NAFaztQ*!QJ^79pDcpzZEn#0P9c`lIokaD6;~Iv$AIC%#iM z)*h7jOzSV{9{~SRc~fUEd;0t_Wi(eB}N8Ra71kd!5F} z??`>Pdr&-opN78CeSL}gaR%fA4N#s@_fd-=@9CoYb%S9q=R$tOy)x+&v7gBK=Zrvp z0UJ2K?8}fpz}L7x{L8Ul;ymOBaQc>beSQ=76V+cSkAJrOA2{vKE0dM~s1kZ4WoQ0t za{JbO7wlX+Sq}T&J`;Q?$P#h*7sOLiL|G88206c{V~J- zqG8{S_@ejc%rSBKTj4+IeyicW$gsa>__v|I-=gS#`4sL^`w_!l;)l3RWaD z?|6Fr*P})$lz*i}`Oo+@uK!I>qkJOmY1{f}KNq3B8qz()r+IixZY?@5W=}=9zgA?Q z4|&n>Pi@uVy(hZky}It|m$7JXAy4IZ4^d$p>gP>G`;VS_F8;j!pc>>w+?Q{N%g=6) z@`$)Q_3%8xOFmL2bqB=LR|oNl8<~DLZMU87itxbuY`-3M;5oMYcO(5ka}Mv0?XC#w zJ=EXG`-dBme^L1r;qK6Q7x_mxuv5D`NI&5vm`YEnoapk{Q-_~j_n+JA(@<4R{ zE}PG%NO=g)_sIDaZi;>moWO#`l=bh`Ebo8Mr_dSn?>e928a}_nqY8`*-H7lyfzR#q zc)nQ5(>%{Y=G}BCbjdh;7MsoQTppe;lyeIv5OB4fspoGC8{q!`PG(aPZ@J{{n_-@NHMc+4Z%O@{?`M!yi{{@%pdgRa2`{GXKHMD!{Q#K{3ND9yU}25;e8A(_??mA(=t@|0V_e>X8t&+e8S8Wz>`;^U#mPEdZRY#E5x<{L zVt$USfAP9rUFNHbe7=7y<^!4-$0h4%namI3?`=qXVKd*%Sl8>y{Pnz!7VvtX!~Fig z>HAsaqgcahZf-muLld=kK$Gh z>+778lm#>yuj{9CC)|OJ3*+HwA8}OPiyU4!*+=ZmLU^FwXzgF+pr!zIf7bG?(TEQy zZoDM&^3I9Jm(ek9KiWEOuU1#Tk7rLfNf8b-(DA9Mh#zPr@lQtlK(+bt_fWSP`StCj zxO|((bE2PR=yT!~+P{4T;s<^i7!NM=b`ZrF|V0$>L$K81 z2b-TiRrUQZ&rdNkN9q1wzJ6S&1EpcdxkX3u*l-4xS9jciarUzE%58)BU)V1sxy#EZ zzFYU)=UDf;C`J8pDFob*n)r^L(-?~4J8pLm#XNAI@`>-(eOVdfJovl)3-n2y6m=g= zANHTY`O7>&8kM3d41wMV|0~iJ^ewOUUyJxJF0T$YfqrS_R5^6`>}eHM9@0m4`7Yig z(952ks>YT_IK;cX3F3$Qx?b290lD%Wye%tr`q#q02mcw6N9L;(zHFLmMDk(QfgbeT zzBaJ?SEePtk5{Gu<7&wB5I=n6x_>`p!vJy}6uhHkbamH+DX7 z0gwMCqW|wcnZmUNc~(7n`%nG<68Mw$|KHXB@7ZEq7`L>Cy;&2p-|jGP_Rn*eH~Z(g z%$xmlX}8V(xy$~|{`p+y&3^b|=FNV%$GkZnS+UP)F!D*&c?V^`Vng(f)wK3aG~$ z&_BY57zxd4#oH%y{b0uo-G2IaX5o7PS&8)n?{dr^1BWto`{_=}!g_ud-oMj!>)tFy z*o*l5-&2*dJ}bls%;!^D)!SK$@K74=1Gu}-AUyEx|G=l5etR|S zKpy71qy1}-=fACdq!*Zo^%s)oJPG;0q#IBSSZ}efL3m&V$8T+ee;}X32Z)VuV{RKtQne-dLiZ+GdFcfRzJSg(+JAFc3T*b=8vflC(j+bpH9ET-?TQ`+3V3i zZ!=JX=9eS$iO0W%`#VMJD^+t)9SM%D`!Prts~y~dtx#5UBeNmmBmL})28QS~FRowq8EEIBkJS(1f#LaDKar7# z^pHOO#REf>ET{Ez2O_<|ID{v^sz3Av=5uff(tDBVDn&_q_$t3QWEuMd ztsLMl#K7M>H@-x~#Ey#`AUpL%Q z1!De>o*%cX3*z<#zsK$SkLvbJ;(z9(czeRx@CQTchnTe=Txln3Kj{1*x*R??h|UQ* zNfo{Sd@CwMbbr7$%m+mCPrm0O`pJBP`_y>spBS%>Ekb`Oa&F5O6lgSjnMH^@(%xs{ z`9`wr=f^9;>1=nN8;|p*z~T844d0jV7m5EioNq<i7vLx4AEnQ`2kyY#$S<-xOA#M% zBKmBko3{$?z**3T^3#88e2A=zba<6N9_uZT$#x&V2}4*v=LyII%KW1JThN8joBdme zoA4mwm%JeJ4;6z69G?@rhR)4yPv>{4n_mcddA~NNKk7$CxjWI8TDtv^@M2c`MBni~ zHwc49YdJFRm&hKi7w4t@NKtWK+K<~Wi1X5ZJliqOi-yw;UfPc?d%6AK{k+nC{Bk_b zOM7^$AxG|`OAR?_F2ZYzkuFrz@Y-+4$8=J7ZJYgKXiENI8ZNx58u@_byYTWl#{E}f zzK@{~X4S&$z=*hi=?~n!AR^9PP?}X=db4eBIe*NV2 zW8N?E`tfa{&Ub&zhD4n7WA)X{*LpqVCEv?&`yX8Oa>z@1R-K^hf%L;OLsz`=Fd)v` z%x~iT+kR~=Kb!fiZ*;u&f57@^ zSEVMuuH{?pw4Md*-(Jb_GGEBNX&hui%onHEj(tBmmA_wm%WjMpT2@hG7wP_o(=d7c z7~5Lk+0uR#_kK~Kr}HalyD`*2>cKANopzeHSigsdY5&eyn$KcB@%?u8Z!>T4`~Sg% z+JA56D{+6wyIAL!!@T+alGKB{ujhKe??1TgzxQgLzw&-p9`k2^!S^N4t4jSa-$(M; zzr%6@ejh2HdGoy^sR!ozjFk7O(my-(l~6(<%c)&M>l1vZ>+3G&H(a85m;DFKn?@!# z?CET7`gD1(==^skpI`XuLOjpfR#VS@uk*z{HF^Db7XIjx`td;xuBX1f|0Mpu*W!HS ze9vHqgLzyY8?^sS=5K$2>l5=f^J6wL&+@aGZ{cg+dPU30W&ZOwH81VZT;@MxJ!O8y zWB!Q2OZoMq4Xn5vt_OZ-Q|i1~oL=Uo{EoAnpqs9*Qho(IZ!L19{O*2N%lBJq{R5V7 zpB0yXl=)r;uedx1GB4>(Wxo44I{zhJi+L88FjD!Kn1!dce+BQK{^5Lh+8<}#U#;l; zf8Hl2V#TC+k=hFLs4O>~-y5}#>v6F}Y|e+seoE;xU3>$4VtgN*)jY)i?x#b4H?n`S zxc!upfB&xibW$(GoPJl8?#ae4^=jxE;CruzMZDpVQg!f`&IP^!>#5Q4^|a~n{_z*x z)*cssy;#sIPi8<8K;@a^H>T2oXWT&#(6Tcm!hYyVpv zdVgK!Kjixo;rWZ#R!e-pE8ue&WqcuKCk!CyTt=HC==Pp&CxclVCCboTx=QobFY$II zu}{BhJ>^#^{yiN!!_fsiq&1pOc~6JVaI}Hq-qWBn9DTUUx;vfW=!28@H0TURADq0W zL1#GHfV`(6amsrdV*hu&r$J{p+CXvdY0w#tHX!e5&>4<)?V@x4=nO|6+}FtMXg#6t z!u>1fI7+<`bJ6tS&m^lKbbe!ST~Yl|Ep-1w>V=qQ{aF7aKc{E^YxRT9fV6>P-{UD) zPbr|d`ax$v`fx9fkUrupu0GHikUsoKeV{WS zeQ>g`gU*1o0okWPXF%G(|FnMKrOMMLOdLOH_(bbktM}0HBganc*3p_cEqCOE=AB1h zHS&USV<(OuI-JP*S4A6bJ^G6`t{pe{l;E3Zuph(HDdI{(c{KW;Gln?CGaG} ze<*|^nlSpBk=CTqV<)ybBN5Z(%qKkc8ae*Tt48)2H*O-w({<>CoR+QI#6lE#3d8ju zJ$A&nDSamn9Y4{OKc&bi;t_Va1=GvAAjZx-|W+ryUNfxf%E>av>Ki&naQ!L(&~ zi7DR~+@-rSO1_h4eqXT4m0FH!r{^hHjQWNl}eX^Lp>F+F`=iAyc-}0(B-;VjV27eaw9hjH> zH)k{7k$Fk4&3rf3Ke$RipSv=@Tk^*kUw1d;cis5)P=?-ri}YuE zw=5BxkN+Iw!7aUZeS+Dhx-A)hkW2y*55ha zL=g_LzV1ix4}4^#r^QH}U-r9A6rmmL;e7p0ga^#=O@}S<^}vm+k6ov!B0O?`ydPIT zMXwjQ2M|B-!esPg@P2`$|9SYQ_YK58pUUsKBKy5$kCc}x=E`SY%>8+LvZC#e&*!gA zLH_s^i@u*1oSD4+p?XD^v_JQ8J(us{X;+*B!o1v%QhzhX>igQCuIE*yotY{3-OWfC zE@@{9&iz zArGhuJGp!BKpxO{rIzPcyA0#1%hW02ei-h+_7&VdJp%c_ne6Tyfjr>%t(>0vmnjA8 zWB+#3%M@WE_MuUH{wa_T^lqd5+dmIcgl;U)E)D;{Ge~cA+_T=W&x1V5FVzC^0n2VE zso&S$2Ym^gzkYkf2Rx7ceiXl3`7)fZewnKBnzjc=hv2&oL(~t@H_ZRea0kZkggorG z_ID2nQC$5=X9qFMO#0@EWcwRyY=y^`rPZhtc>e!vU60yvcroSu25Em}f8!IQP(QB4 zemd;S^RYiq_BqnIezDQXYugFhPYM>j@< zk$sMK7S^rcz83OnzaQ;)w91!D>~lO3@_q38m%|N6(AicX=*qo#9i3;VEpe+PgPYOf*tWbx&eA)zvNn&KK6C~ zGy5U~=pp+aWxwMWNVhjKMa{>4M}>WwbicXKXFTm|L_W-d=|NxF=eS}z>QnEO#6HLS z&|K1f&(6@7^gadpQ8*v<)*X?edX_^zBOhd+<2|3Cz9M`-#G{6#s3o|c{IO|j70dwX zD(K}qs%|oMYjXqMqQ4$9m1>5)p0(9c@FjmBb6C3O9UfpC3}9o{dX30 zw@&BUY9;Xes+o9x{ioiqvBy_a1lbQmZ7^N(evJz^g1lejPpGB{#l2tSOsu8|@_tQ# z--P1cudyc~e!#QPZlOJQ@taWG`!#BEH7p8OD|){Mza2p4Vbm131M+^2PR;S-#lBwy zzb+v2Hfk!u1Ky4C=i6)yfSt(sBR5~6pT{D9Z)a@}QmZP$dni9~BXj;Y+TAH%RS`1N z_48Kz{Gs9)^+xK?%8ycdB&$C;wRQcm_Ue8u?XQfEzv#I_ad}$?pnozTd`^(ve|>-= zT#_5tC%1h(ec1@_rI%H~+XF(-zIn2f47#4henb6B|GyFX&@bzq0gBM96!NbO&Ij8* zAVi}d(e7pxg>MOWt0(qT7Q!8P1sg=7^16+M|Hyv0W%!_DFuy3gS3B;%6S{-Z@O=?J z+F$99{hH+NzB@n>E`>bmUj+M*KHw49qv8AKX#Wa+336Un@G<-YhaQj1ul60D2a)p+ zO5-^i#pkQrK>IIgf0_Fs z+=1dQbRWVilg%L?Z5SCHe;u5s_s49`gT7O%t9gUD|I_KsFr3W$h&k_9-OrZ(k9;Rj zeWvT3=#jlTfW2R>gQkq^Cb>x`A+MNAtUYo z=ZCpH=jY2V_P?!DoDZ0vHAwTa&*32RiT#~weaOi3LcW9UG5yNKlk^|gO_PTkMrGTY&KGnSJ$ zr!`IUQZHDoKN$H2^LzWx_fY+rdcW33_TPPa2l|usE2z00`1#l+dHtFDQM~>n_N%E-yI;pe!F-!10L@cVDpQtiJX^HLA(F`Ca}eg*G`3AjGwGT)28b1(TX^>bw#T_1#> z#{M_({v6TgI_5VUyvzJngP+ZOW!Zns`bhoXX851S{@*hAJm#wzauzaQ%i!fcde@M% zl>P5Ec#rwIhMX15H!%3s%ok^*vV)lSZ~gJfWY4cVrs)bQ-$|fzBu>UoiF6MCF4m8u z?f>N)bbCx~CS9M<`ZC7X+IIZ-C?C(8$oID|TOM!EA2-&=&&2z`&f^%rA8Hk1$6&Ot zusb!|gjjF*Z?!ZYe<_T+ByKXj=5c-V4f{2Q{u7~ZG<`n&N97e7_7f0a)cX{R@#_G#?^y9zprgdc4@1Av`_5 z#2y&w<6=+j^IyZngM~M@jy}KgdH(R3vKT){&iA)^>h=e{x$qKG&i6me?P2zOZijii z!`@Y^61p8wQ(p=xsfUjE=k7|Un>wV6N7;PH45uUtdUNzA`IM$3_Q z%wqmr)>GQ6Oy)Nk{HZI$Z)Ytp+P~%SId@WT#FY7GsXw_3b$b0_8#zX8bm!-_GeYNcD!W=QYX9C~ zz3wCR>KA@qJGW{%Qm^(k;&Ch2pG=nX{63vt$sd|FqHE)E&VPQsVD%!r7JL}zr9S-f zy_PS}wKLd%jUVE?)RQlbay*;;pU>%%ew5ApjRxP9`G%)*zMZA}jZ%Mp+8gJy+5ZPz zKjoZghxw5_k73u;_j?ZWcX!otg0i}wlgs>XG7r!B>@r`tNvGF$b^Xa>K9e_|XRuk} z{K9ji_2=M1U4K>_#r))*RaDlaI$p1L^7bbS@BPpv^+&#M9juDipTCdS&m&1WT45|o9h2ufueVD5`Hgx1`>ml*sShQ%zb$-rsut8#)*sjD`_xU> z{G@ld9x^|d`Fz&j{XxsmV_y1c{xIE7^O-Lgr{y^3Xug2?>%P;xw0nijSD(T0@_n(3 zdGq_<0rR^a(EjBdgu~32k?(KK*bpWtmCL!D!KX8Sg6zYU{AYd!=Y!~JG0)kT*a!B` zZ<8)c*8l0TSLdhmovsJ8kH=DfJYQF-dhl4U*nKw++z2v%s=iq2QN70t0c zd&%4!#Gmi4-xGI#`Q^C#m2h{S!g#bqy%4f*$AO(t-1*7@+z7?(vvEoyJRtjQRDp%{ zlcMu+1Go_u8~VQ=#Py^3950gI_l)$sZKUUG-w15A0OA)R|#zy6v_2JP{@$z}mu$%SaNtQ1fNG57{vE={VMZPNz|{R z@5A4HJ)C>sy!)jXPXX8L$9Sz5_OA~-GeiqIU!o)4$G_ps5S6E5eWwfN18;8=;$nKx zT?qfTvu6GjwO@iA@w?3t9{3IE3*g`Da%PA&(4YL; z7W4z29*+B?C-UlJ8Ttb6Ab%-7y8!72@(~}+m-_qQ4zyzVb`8W2JcjUe|9X!jeqh~sJiZ(ScR(() zejQ$U%LB>Uufu7&epyfGeiik@>qVZA$6c+j^>}kdNSn#}zujE>u@$>qk z_QP!!cX!}U>6dHNfw=wVk#T!<#OGsv+xiUg104s%^V5Pm<%jhl+=1J+aCz**`x`(L z4lnVwFOT{Id1CK@_}#8W^<_Tvi?&ab;7;GSwst^1FpKRHz76C@{Wsne*Pqr;#4ni* z9*En&NB)xj;-??dN6*UuX(hCQyy)}u4#Xd|U(WeqKiOOn{FbPnk@@ijMt*ij`YF8k zdGioA@%zvUcESkkUm|zsVDk`(^9Y`9u3SJanI}EU#9iKFtE2t*fWIF{`$zoU)ztFN zc(CAdcppi14ksq&|H za^8%O*V}V{-=C-3Tbuo#%Dj7{UPtW8yu2@H??gf2>dm}!SA4wXFfaQk-P^UC9OgIi z_ub_CWoV|uYwU+w&w$raUFOa8;l<3G-zi(oyf=^KJfPE?&-_Omua~072Wyx&*O`6h z&*6NN@o@q3gZA;bko7ENzThR!hrJs@<{HPsr41!Vuy~ro^7Y= za4=lLNcHU==AY`W%TsutdC!nj$oxG$;&KA!>(t|X z;CaKt%zsci&MU4LyWZ3J?Cj9xn9lq!W#ay`m}hZ+=zqO(^PTgOJsu-IYt_Z#nzO>Q* zf6Z|33w`N%=>3fJ1GRB$+8v9YuT43;zX!5`st;@Zg4dBhz?+;O&b#S2lO$aYfjml! z+Kn6sQd_Zq{0@L#C?82HnYD3)kZFAh{ehMo-v0pc0XPygHec>p@#nXBeqpB)cwR>G zllCLf{JMV>@__EVo{r7aC@85FN)>Yb5VO?s855(=$EmzNT+ko#=2ll14b=739iF`X zy69&uP@a#|#Q&YTJ>uw8V*U31jUkoF4i$L4)Lx+dXE1NJ^A__P-_rM$_o!~4Gnv1M z<8>D5=bg>`ThD9%0k><}%x_~kvcBptpI9&Dc_!Re;q~n(Eyt~+@8?|R-xvAJqnN{M z5$hxIy3Fqv|E$kk=8vAC^I7Io^O!HwI?gX>>q5WdOWS|L8*3VhuW#P#`FE9+9?ZY!2W}ha0jx){##oW z05`CF=l8aX@BxQcwICm`&SQDi@EcI)a(s0l52$Iy`}?OF_7_pn!tb}G!9Q>g$M2@L zQ-t{(Kc$hbo6!v*)34AD@1?a<{Uv>45FY4_{33U6DDng7&hqR_+bP1QtiN|L+=1C+ zdAudCnD?BP=Z=E@zy_@U(|FM9 zhwy-3UhA*QAUtsKPujoV8g9U7wg)Yt50J_E>sN$3kXKWOr!>;_5aOrjff@jL1iobd z-BGsZ?DED$+b@^T_xSBswC`!v)uF+<-rG6J+pk0LN0+o;`TRXv=|^f;oNf5++VE%M zTmg1i&HEzcJH8h4C8y|kt>YU)CX@N{mugeEvb^4~&k>k@7!B;^p>E`d@OcytHdFF0}uy z^I!Clei=vehyGX38o%#I)_zg_qAM7s^O@>VeU*~ve`VFj^Se$_eieSbgR7vghx^h0rC$g-UyR&?2A705e}I1etA3X#Lf<>IJp0T` z6k!;`(|zUkzeEwP<@mhpOB8|TKSTE%xC8lee~!9D`M`3cf3*hg(f-Ue152}Y`>S3+`4ft{oD$kW%;o);olNc9t~_1;5A*!Rd!vy4 zp*0fcGh1VHJ*>fU#gy}zEj(Z7GRN(jMc(Y!@|_Ddgj5DQnDZKKng94z?caV=_qVz- zU&wko^a2^KZ05(v`1Nm_Lnep$ZQQ=u7h?c{3)viAiT&^_XD;)Jd5!yY`?Hw&RF-2c z)N)oc|0V0`+@|$e!~DCvj_fqo`WG;N5A$yR){xo7{B-6mJ_q}t@Ym>kaGPrhN15Nv z{(a6LX@BnG@x6bWp2v~r*;3(8)%sgp4-}76gJxRKOy=eL5AG42pE4h@f1d8Q1w4P$ zmHnIZP1z!!^%Xl3fQvb~QB=P>l?;%LO zq_ab*6y09?oG%&7ALI8ECTQx7^l7q~f^L&SyH|O~j z*E6&J$^F2=5{A@osekv}d~NLe6m$9e6!#v+ddac0#P{W`@yY9-e4j$<-;y^tA5Yig zM~V2+T+Pclu2Rnm7RLQs9AM_>abD_^`F)Ds?0;A#osV*^Y#-+D>BIGd$D4hbZ?rki zU(Ec@_Upo5Qt#zS(z!R6E2k@){db+HdGVjiy!pL}smz<-t(ePv`!84@-tX)&-<-eC z?l+0|2Zy~Gk5}qnFGG&LEAYxSr&soCNWC1w`U@}h@9wGb{E>Q=es8>7q@F#*{?$Ex zsClA&<#dQ~kT&k)3Y0cqZL)J0+P?wf{t2HCw`C0~_Nb~w`+p`TuYa=tN9y0ABU*3& zN`2ppTzP)^4fS|9iya=UuKins{E(4)cGeY~&d)V(hpyN~?Wc{A9n(NY8Xb|9KI+RkegF-7PL}RU~~RZwdTI-}kv1^5wh)h42;b z)$=3d*SofqS_}V@e{SoNsvr^{`KdG&@4NE&D7ZkWO-LW{a-}yZN{@@Z9>1?IvXh^x zLyG)crAw%j5x;~bvx;A2SCvbsJ%)U)Hh&oZRzLUMN0Ngk)bT`jMx2>t&a&)@rRD$*ha3KT8}8R~d=!>0Y?+9q z|7OGeW!6Xg#(8$b;_-ct`ABl}?yIW^xe51uKS&!})hT;A<)r}9&)28IZ~7l8d19?}w`cHF=Deq`c(*hdi__;if+ zZ$CK@`!@!vhcTf*`rGSZ2aaP|p6vbx%(1%ias~WD%uV0asTCdn?&9}P==>x5-J!{Yf+=`Wtk?^g(a zHp^Km@}JQAENtc%u>4??=B2-QHowOr{c-6p%KMfgKbPf5zc%<#r*|szh5WvX$eGK0 z$y4Lw29Npt<2qf^pSz#=ZEG}dSJVCG)y$jkMdUMo%4VIpBDckpId!7- z^B~vHss~WN?<=aG_Drq6)JrkV`gsG7D`b5_^mvlX-FZ%zV>&xraz=bSYBAscW6o!O z?xcTrT3jEA#0Kw14TB_h$Y*mZM(P`JB!C zFxE48RhO5;{C2J<{ulcBlEeHRtiN5L{pT{jjQQX>KV+sde`QInkC&#$$1d}$IK9Hp zX8y)2S^u)y|6JxjW&NccSj@b+PQIG?F`O=k)0@xy6xPRQehu@pM9%@}=;QLk|4J=l zePmzQF6N6fQrSVw&)jX7CVPIr(M>mq_C8%NsU9{=vcFTe?#GX(&5S?4nsNU`-2YSi zJ4JqR`#Z&5_IHZC3G|Kb=lrYtJ4N1qYk#N2SL-0gYmxo3f41MVN+s-9ZCJFvBKto@ z-aotlQ~b}r9Q_}R|GddrA!I+OxXXS}vCDo?vH!F6bNZR{rzWeP8Qj0LtnHyF>R&dD zeE)PoM!Y^AIf?s68R$;{@_vPP0{SmNtHDSQ`Wwzq1449+jCV=r^^eEL$0I6g|B@cB zc04}M((VD|5r#n?^=JJ0=x+hp=+8=6GI2Cx%r5=ApaH)B1uR8+$)9~9^ao~OVv+0~ z(n6sA9m#j9q5lP}f`95?*>&L`cnWs<{+ZhdeQDr=w>bRo1F#=`fa-${4x#+xIPU`( zvP|18h5i^o-!rE7AN*6GKQK98um4jRy5xNhuQK!j#@(;uche9b@bM4a-zy1uz&GhS zeucCVen$C_e76$(1Fs=}!}l#pK_1X#toH9$K>Wa5PQQh?2zS6v{)39hFJNjjogb<^ z-Hbn7hX$v|FZ0R$YlO5=0%Rpd^YbtaJYZl zoB6!ux<4TOK!^Fc2A|9PnN?m0f7#WwJ}&e3$v&wmdLM&42Ul=Dcv-q1=&}D(WM9|> z{TyG-ym`)JKJ)W9UGkjuna`cA^|yFGav}5YexrHmhsg7>mF)lOtMw1qe?Q)b6)=C4 z`GDm(ysu5xKh6{VTkHOYtdD%j{;jh#pT+gXdx-Om=T+M>|98$eNmp;?znZH1U3QJl zp(YOVtkxe4d9I5&^uWWNleM4M9MyvCUOM0V<2!y0aY9i#OZ;R&{QlToFFyZLa{<;D zBkS*e56rhk&SRQ}jP~$8qTFNE29(5mAVu~se~Y`{4t>NgnKvT5%(s#K{Rz4~qTh7Y z-4l<$5b;OlAB4UZ_9toI$B(y|i1rxz`its>_;?1|hv(2<-dQKa5ti@Y4R@f{op6tw zr&?j6j$bXVqX=J7c(_{&>x4Lk-6g(;6h0FFPvk#he|`kg4}HA6Iw6`Oe1YjpXz z_ta5@#wdT%&qiJlQl8c2PrNsGW9)1&^n5^~j?tvYk{WwT(ne^@?%sO%2M!>=NS?a^ z`2p;P{^Xxz(v?g3LGv}skse?w>#tpL-V5TV{IZt89rz64LwPSk9*}>E&M#*r@&|Zv z5c;E(-;hPftKzE*d<8HUK< zaANkTfr^W(w;oO@*VXO6jDOj?TEhDvg_rwd?O`Mgm+;a)m)a5MCBEfVwS1W;vBJKvv6{|;5 ze?ERd_ut)V%@je#L;l=mif}$|3G1gaN;PR7;(PY*UjujG;v1k4zIWy2H4AY$)&Rrt z#-wIAKeCyU^O&uf%@l#&-=+IauCE5+`Mjy9eaU=RKmWWZArB}yGQNITdX~PwgXzr_ zVG`n_=bLj=vk>RH9RJOTA9x7UGo+6@1L*^He5U=opTiEkgYR#XyK_6j1Dz3nwEdV3 z`J}7075W3g8QSjchJL_d*vY>I*#y-Z>7o9>N3a7=bNv1UkqIK{?p&@I)eB~Uk`B+rXl&1pK|@#_q)RHbwOY8FW>8O ze!>~nfPAmZ!*7E5y{?v+pP=Wpbu=YJ&Cxo4UDyc+YRB_izUQTmA-@0%4QaGI%RE*GG}RxobQ>EA@!m zJ3*gh-wQMAvD8~JkFMUgBw79K{GP7A?h;*pv%jSJdupQo?iv!;@0xP;?R_f7 z#|Lj<04ixC^SX=T{y#9>o0W>Yclt7JzwPz7JgG14Xj>89ME#)m-F^Hf%)zY^jsJm4 zaeIIVbkzOEoVfl4wM)g^e;5__e_GkNy(!|4%9~@P_jMz`er_6%?*Suy$Bpl3lwK1;WawC5}Hp(jx70x>e=RI6uhwu#f<#OWr zW7b=-OFt3f!poVotRechG99Jl`*&1-{kGMW!}}ipZ?3=ouz39qVE^Cx8?TT5)%rW! zR)4kr+PYa)GH=%7jx{Z4e3r`lveleXp^w{ezd4i8Xz=AN)9tX-e=+I({u20;@!7af z^>|MD`x5@kUzz81d%1tUx+Km^|N1_W!~P|{WoNQ~eox)v2tI!$E(gs`c&!uv#(se> z$Ho2I?7#faJYG3%bI5dM{(VCZnv3wNbh?(~e6lUH=Q3YsZk%_Sub3O>^O!%+@b59d zqUuZGFOi?me8(MeIX?3(4Ecr3*ZD2(KVbfSmM`AM*;%JoGys9;y72BRSS0L+Xu~b5GcOezN|< z{L)&WJ$q{yxD&eijqp-bI*S@~Z@j&)P1$@_(frmZ!~M{Zxc{wt9{_i+%>2xbZMV4>%!1-iAI`+#(Fw%3LVZYF@zcfYb4l2O)g4Jf1MzYa;y) z^22Itg?JC;L3Y1B6JAG0 zt_@A+#aGy;Hsn29IagHfgS)qA|85^WPb}^1qEw6zS`rO_n4o{ym^j%9`mP)f9`)R zX1+JaE6=BUn7?9QTpy45%B5cje_3U(P?t*~ z^XC4RUCf^}TDO}rZy7Kz=QqeY*Fom@pThd^KDwjK&o$C3?~CLad^xU{x9-()oLV}) z(vGvZKkT2LwYA`rWbN;|_FN(N=z2Q`0x~1tf7y$6p5{}ejXD6k{3i2j!!Gk{PEb)1 z9)rB-{`AE7`{Rnr0%Uz7z;8mKh4B~GFM@rr14}yLe#QAH{{D&~B?h zG}{xmUxKbt0D11G6+?W6>O<#8ItQR1Am>RspTQ2ud6LdS*nzEIdJMi>fut(kx{>8{&+5aHn zGfKptA0@GV7L~t?^HcoiAU!VP6T5l7Xy-URGr6$Jh?Tzv% zFyzyInW#SId6B3-Nv~99#q3Z;wM$mNI}FnG+uHkYuHSE?yn$lt_YTx=AW^^ZI{*^( z`yJSUME!mj+}1l&p@I+e*phLvGsWm z^aYBo&mY1akp0}jM@TR5zx6xbJ|wN&Af;Z5S^3y2LzC5SzXd-K#_N6ooqw7c=|3+T zj`{O0=%?qj39%e@Yc1x-FK-iK%~I@V!1s@=VQoUpT8{P>{;kol19Bd!e^DDnpz~0@ z^HXt_CeGsoPCvjnE9ftg`yjXjRi@$mL)e4f z&2;dIKTwGL4)tpRJ1`pYlikgNe!y4f zX?Z?m5k7%D`d)^WiSz^CBELibt>7OheV?{lXTlwLmCCCZo(GK)9{6@Y!qfS%ry_m8 zTjY-N@teUND1E+;&psROz-msv)dBK=Lx`X9$4A_Rni5}YxC5uL-ERwb-~-5~{8mkn zA3(tA^}E3x*n{#7-BC6Q_#F0VfBM57@%%$=NP5XQQq1d*51SS3UmxcE<8=P2cdTgt zxXb6T)@G?P+xBl7+M_kS~) zKW^|@%pau(IxdgDGuxK=eZ1ez$=et*HuIx-KfA^IzI!vDJ{k{NTn@*Z&HPH<*Dw3v z9Ol2D!0~cFdMfjKjD7U3_-B3mlXbh1$NVJOZ_fN;=9|iX@L_s9;W6Kd^_TRnX8y`! z@%+zczNYN&=J^Dl`3+nyGF~ZUKC$1es_y6RVt$5$WJW z-_BFIpCa{IOtXH=xKG`r%TFTiA^RZ*XgTuycwvPu52=6Y96-J&9rV@tYcc;@hEAu9 zzogzz*b(O&v;UiZh}XZ=9WFLaOrz7Lgw(MWNlWi~6TlLHoF#4)Yr&ANan?VZI;Bk^3!|dHL>|jPIs0zmwA?`QtLbz{rQ0%%9bP z=hyiDyn*={{5>$KXLFfPtHt_r{&>v4!TP(G>hi*JcX++ae89ZEOO=|nQ8!NPj#)+6gkg46cS9kp8$k z0pS4|U)oclA0Yj4ZxYfA{MG)rw-w=mzdGJ@UPbu;GTwB1LSI0}n<@|a3&?oWnuGiS zWW4F)H$ldm&W(@<$aqr~AUq)BP4`;J2Z|eSIvWulkW1>dnBylrx4m*|YCAdqK-Le# z{TpqnOE9dh>vmTj3u4N?j!gEs>?(aKV7IY>2yY_onKS3TK>-P@QLMU#(hx-oF56FHGAASkN?f0*pukQDddM)O_$N&CNviAEFobf=H zHAVNA`=lv#8g|f2`+YjrYiK+pS2o;($a!}|U>7$s%Ngr0jk?6$s~YaV;;|VGe+Kl4 z+Ov%CUG9ndA7R9Qg<)@F=>HSOvr+kV41Ibxh`VPS_FTx1)|cNQFKUhwGp1=+2j`}?vi>hX4$1jzDZX9hi%sNKd8AW6t$#(3Do~aiTbb5 zp|v9K4|MB^`OL`shoeTs-TN5sPh`a1Qz0)Jeh~ae<)<6&Bj7H1OJ+~Zr$+r}82-l? z@+`wW6Zsbn@1gvo`dp0sj=ExYMIL8vkk|eU}>PYip!W`e*71?6d}K#21yf+enXXq&G0!JF~vQ zV=XaH)KXoI`VviF$}4gEVa^Ym;s!o5(sunBQJmQkB8q|L!l@7UqkLAOClMiLNLA>i&{E3`6NX zFu%sR%HGmJRY0~z?~9U!Mg0Kh?G9?n;UahYoerw}Bf6hOVcfzFT8YSiY4^qav~qsi zWbOa?tMrZHrfm;HA8S-fHNg`=`akCW)(N~{(O=g^5&loz?;5<*1?x{;68l}9ce~(w z5?%gZ-!IsL_rt1}(GUaw?ftJm&f@;V`Yy@_{*T!YyA%2VvumS&jrTb{zl+A7?2oOQ zqtoNRg8B%^CG}oRHDlPQWcB}WJMRCq)BT?(J7QTtHAvKdbG%CLBUtxhJ-kg?h}-b! zp#E>rBrQY+##7P$?2oJt_S@BxLa9iAu7Ix@Dq#H!*@EEkB!)mAbyI^Z4LPVjbH60MeE3FHpVQ$Vp!X9T(yuA(fQ(nImWUrX*bMGVi{!N+{UY(pc)@R$hV`Db#Q4=i zSVD2*R}XO!lD)4G)&Dc3*Ndd*U=<`VqEBt)kKZ2oHL+ZXbD*EU0Qn0$LEd*z(2XGP zH~1)Tf@dLp81LHnO_28&0(_H-Amdqod^trpj`|>ZNv1iz{Tk&PzW>mQ(w3&yb&dP~ zXWw^_dM{>1wp~71{eKP58M@p@wuR=8CzM3}FO{hOpMxeneXGAB{K$6V=)zDrbhm5w zSA=y{c>VF={&=sezq)9Qwg->&$3B_<>ODNS!f@B)zyzTEw`}hWJJ5~o_SKLFe6p0+ z8%H93pg+3@T_F!Bh3*>3v+sg`V5Ee<1$LnOA^jY+Z-*Ty`xfdyz7OfX)IY=l^#4MA zIv{@FGWPGTfjjWlTrJ<}h4cXXS%1Gf^Z_d4{-E&gW$+JV-Bc3a*~R-m_4|i-8~H(Y z@i-wsr2GHbGe(6KpU!vnYgAWVR`a-E8xnx)r0{={ zN$0-OmCx(1B^~WQ=&YX`+EuA7ykF6utmO#*hQX(@!!7)sAOG}MLq_^t=X{{$JKw$> z@-hx7m=otMmZNS(hZ2`}vmct7;eTvZU^#N$b{6x6EJt`5Nj2WZa`^mdS-0Bwi;mah zb)~i}r!UJ77GofX%MSl5wVnM7&)KIwFnBbF;Wf$E@-1UMco*v_JTJGX&qN>A(_uM7 zM4ygYpJB|WPt@{*V;e(eIP)_kUY0Y0`Sy|zyq-0Z`PMUeos0eB_090QndL}%(;{OGJir{ozKo%y>2v>`2{S;Kbtllqg@XF<5oOb$7}b(0}Iz&=0|gSWuAR8^O+^} zj|?{bYd*E3>$3%Uy8aJ3jN2e3J#oIfDokGg<$QOk|NrUp-TU%+?LMEcBK4$hOU?)8 zC7*w)!1b2b#a+$^^W675=F4o>{;j+8{U!Nko{yf-{>^jZ3z$D=s+J??D;6@pM$V64 zq~#wJ{}a}QzdYuZe*7x)ym{G|ZJsx8v48Wtd3lefr|84y3)$>n&YPF@+-&Ac@p<`@ z&*(0NmwCSXROaXLdHf#dTORXw3(xnLsyW^}wXaH3v+4V~Fu$yf=O*M09EJDa$E2yrh}VaC`xj_KoD_8*Odsw)!=Hb7 ziaK!y?2xm6IZWtB=j^((Qq{JG=&uYaujt%d>L)#j^mygUsf*LK-p^9{%A~11=nlKn z;UDtsktu2qOp512q{oK)qZ^P8gkKBO_R6dCpqDi&MOA>_0pj@;`4{vpul8RHy>V#z z!6ry=8v4tK$DUSEw4ik=!pLdhG?)Eq?yQ`@hBAJHH&aUv^JieioYRsJ!~q;`SL>uZp_+(4XvT zX5A3UsbR&N~3;Bofr*%W!5QXhg zUtkv*>rae_FN^nuJjAbtLO(#hZ>omC4wSeu?*Cp?p{Tq&Z;F@q1&8AH`waJ6sk|fQ zfi0vld()%3e=qtjg#T!Kjs70D-)FeDLo+O4$vnrfZ!yyU4eE2$fAYKIkNcB*t~%+X zWcSDBJhTgRb<+38ykAS={-~H3Kht@Y_Qz#a&}K}Clx)~Hq$;ofm=NcUL3!;(eHc3? zguGwkw;hB1s$XFKQ*EQJ1|8<})ImWBH2odx}YUr#`Li1#o2 z3n3pkSYL+^Ad7GZ^l>{QJ$>O0oR05fk{sWH9a!|NuHW`&$WLH7=@0p;1=0(whCBJU zIzV55)|;a1TlYghe{@lMb~$bf^6w#U2!&mAczYk@1CMihf-j&SaOekiFMvDn=ti|`-j-<8Ne;6=no<>6fceSjnIPxrI` zKGF~D+=cd~KIZfGz(0_7CXb&#M0`MnTeaN@P(DEVN9?{0?mz+LhwZ~g#7`*ZlIMn) zCs)t91N(<+nfr(6{VTU~bv4J){XmD`!@_MEUSiIHjo!<$HLbe6$Nt@o%xL2p`99?{ z`hF9~zq-$k-r)-N7QfHV!aG|5{K!5#dWXva3N6$_evivB-s5ui7wxm7cepH|xP5lI z)bU*dJSXHmF6+~xeRlK?R{*>0v!i#o0&ud=j^5!4z{x&4ktgf8^bS`5KeEq`-r@4V z$v!*rFZ=B19WMJ%-s7^r`s@4ZB)-48uTH|tzB;kXzB;kXzB;kXzB;kXzB;kXzB;iN zbc(lA#qFyT|56Xdl>0)=D$gvQlI;GV_qUvGMfZox?{Ud}A*OkMtp8EpAHje6{=hq6 z!CU{}{@4L`_(|L!uscBF{&)v=K=z^1J75m*Pu~xC2h1|w0}EhJ+z-1DKi&&V+z-29 z2UqO<@IKt(CviV~fcpVlvG)Vs0ki+)Juv&jqJ5|I4wwV{)qST@pZ>poe{|&=Ma+5Q zC+&>RPc7#6&*}Vnw?Xy9`{y2?V~=isc!^2x57fiC_G_3g|G2(CJbq7rY1MrS^Sqy4 z?$3Pw?qg6%KW}8-ze#m4pZ@x#J#k~2wvbM}0cjN6$+RV7US*^Hz zb}u|9BIm`s&EoD3+@%hYIqE>%e)GtG}G9^*nu_hZXs3 z?yvYwTJ-)nc#EFDwJ*Rt!T1^~WxKAA{-?TMbRyR;F;m7VRa%u&i}`_a{ngsPdUgx@ z)W&#TkMJgK4hgwG&S(FAEj=M1_s7;z9B*yS%l$E%{o9kZ9E)SA`H1!(^nK<3Veehw ze5$(t@$EhrGAT8P4&@dyZZ#B+$R%NlY6>}nF*7bR!?>p$B~;2J)kNhWOh_cRRF3(O zNeta}Q70;*i|Tnw7vFyGefCw-_$J9IB))OB;`bzeodo4Sw27ZW{Kmxhh@VRQ_P3KhqhIzp7V*C# zdkRW-GV$ANQt_>&D!xtpD^gXuW(}oJ0r9I&Q+$W`4)N;{U!0@j7ZU#x;=9CONBk1H zpWglWRiCqk_&<`K{2qo=#D9VGG;1pPF;tIE65k;{+(iEI6Y-7ZDqo4jFVF9LAF23B z#4mS%>_G8*5>HXLiJTaz^QTZ0Q?e z{{dz9cPFm5d_G)p|Ji3+zZcV%p)pLgn|?nFacSWDX8gSg)={qC79yS3AV#MPPM@GnP)*Pk!H3;)2DQhndh=+lUA1^hW@jS16^ zmi}avpG@C--NHQ565B~1$&*Lae{e~fFn|QIuV|JAzkHflivpDK#7Rp?)Oud&=X_!b ziSswB^{e@*B_w{E2S2Wh=e3VpKBPZEUT;-T6B5TdE80m&!#X!je2)AD{f~E!g?|

    y&)#*PQ{z~WrIb&MD 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

    )F4InR{C<0gg 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

    {Y(~x!CN$lGD3v05R4U2UoO%%S*j<*oA%Y=N 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%0D(Q3w4HnI^Ll7btUVe{{9 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≷V!&a(QW7fO|jCdPl1$@9I zq!~?EPZ6i;#|hgV;bJVV8eB_ot-`et*A85Vah=3<2G=*Zf*P~))kB7wcD{Oci-1;~ z-t8Qz3;p+LAMj?W6#&aV+G5y#ZxcP%l>YMnTg)!eB?(LJ4%-nzvbxkn2k{ zOf4#mBto-vn(g#ZRS1!}Xz&=8rc02h!YB&~;YH*Pm{Zb5cda#!YgEH^c z!`UHy6JT%dX`yp3>LQJEdbpc$j;wP!gLQ6yQ`WhSsE(i)B1;h&YeZzV|Fm^ZXAK#+ z(3}D~OBck*IydRU*13&>jL@KYM&zgw8EZrgQu`~-bgwsRrW1CP^V(2QPJl*x{fIHn z7*Hxu=>xUJ3RtnD6H(y?nMw?l9-Hc2!$uT+jX8pyulr~#EjD3SNJS}vvnZ-G88T5M z4Okl(d^TZD(0x26av&xI9;bqt)4YfYN+QF>g)#Ur*HRA>$Z5+6JrCtg?1Ha zOj-_#QBz?Nm;FibK8u*(A>Q}bni2HrjhYe2jsUoBw$P+L*%8VCm*``U7`^GFj1b4P z0zm3){~hasK39s1#;ps0bm1jo@UJp8SbQ2aHGqQW>bmx+fQy!PDq90t640Yag)&VH zVjlFQd_sJMUXj%7ZDcS8$-;2tWn>U-Y8V*+!{z)x+FDBjS}`80iv?{_(WXs76irHl z=;n&*2!_Tr2kQTS!n~l*Ys|a=coTrLoBssP{)k~gw4z~HQ0;cqLY&a1RRd?VR|t4K z#IvOZcp}*pR12EM2GxSfxUf;YBFzV`28KUoP;jzI!=QlPNnB$gc9oJ`qfE9e@oUkL z)G0l=#$Rh*IN6AKf%vwrtpWDPy08Fn!MZ>cXW9}J#VK>cNjy;!h9Z)eH*Qvtd>sSU zCd>+d&X8cy8!;rH{TupYNDRjhX4AV@bnVvqy4DMzsE$PHuI~N&4Jv=M0F>j4d!L~0 zgNAh8$hUo~X^y)z*hu;f%4_{l?}y%i0{A=LA3L<7PgPy#v;TzSKb{9396!Cfrp0ev zPr;P315OF=kDou+9vY=r<9%=ktzuHm~faE$(Jb^9z_>y|Bi&vo9tcSSjAO�b0aZkIqX9LzLsAG?snRDh2 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 z zH%a(6$^JJ<_&3S^H%a(6$^JJ<_&3S^H%a(6$^JLV`sMl%j>!7OIu{5FegvtkU#=Tr zxo(8zx)GM^Mp&*J;fSn1BI}RH`XjRbh^#*%>zC_HSgtc+xz2>;Iun-bOjxcnVY$wP zrA*=_P<%y-z@8Imi0Hw`kQ6_&9Z(;Ps5U)h9w;hOS&4C^ex;X;Vk=Qw#p62aH5wKr3wsSnoGz<-tkt$x{*BSABE5D65k>AhXjuHGejre5@7rzm28P$q=qwb9OD3~5M zI-jkB$tWS7WwbJ$Wt5w1fZKT0lxg(Klxe)4W4unI#oLynx5Wg1)5}Jq`G&zK8F-(s zpX^&4h?;SZDSd3TmA*&`M|J*PX!^D}yg(5REJf5QUZl}%ZPz$2nY-98iE$y=pm#RmghUVCZ&~|6R7NuG_eLp#vE493aO1xVTuc3fy zC{RkM241C=GOVJ?X>G9Li`V5!GQN0C2i_O(^3odbL+K28^p&+r(ThgZfoE-amRfxu znabd6!%lp3(3QdPvFmWCjfF!VSB1su?PT}@VJQpR-GQbK{8-9z^VnY+gNcb5qwOO{ zytTsD>a5Mw`!vc(Gi4-DMuG_(xs;JBGUx-~4h{}F zal#?GjyyZh%S1tT!L-cp;b)SK7b(Xpbj+1av)IXK|h=8 zy1LXiqmPO1_HXEOqQlF1FKg?ruB%nh`abkEpJR64ehgkY2fRLGQmDBprVg2>Pzu^= zpkx7B?eiz%gO}k@r%D53Z2vZ<}vrqTHCW1mAw;G>aX!ah6y z1pRdEv;E&-A8R{Qaya?{{~{O@C&r{$;9p7{|5AW|C2{=wlF<>f2H#ml4~SUM(At#} z-YXk@3v~xF7=7)w8yE8sRD3i$>mU&`1P~k>-gJNvna8wDEoDx7Zk`-ZjYc;Jy2F|~ z*Ys4lx>vL`FYl^|UOd?48^|9n*|MUk_b(k7+I5{>7+QD#n%0{1<^iu`xVn`+2pL6k zb1yKk2ZLP2XWQg{91sG7Kr~awz*HL5RMV(R5@L|pJbD7(8R}d{#GNQ44V%WVQgMav zKJh$!J`r8h0KsgeMEi3N`uq_LAGS9@**0c(*@JeMEogVn`u+_!*eWCLTOWGpp&O#D zr|$!UKv zwG?)aaeARqhNfgwh6_!t;3HL!tYThNJ&n{F7*x`y4K+M4$RD6DTn+LEBJ?@$hhbfL z5P?3S+NGqUv-Nm%hm((_-CZ$w5Jf4)qym>9PeT{_~d1X~=Z27~% z+Wv+@Eio}KyCBu>ZK}>MwmFL{+0l)jB2Oca1Z}9}D^n>fPLJOYlIc_Y95Q8qzDCfu z>Ci7BV3(MnpHCS$c;<74gFZM%Sd$O%Rdbl9Ben68X<`TxO-J+PBM(G@fa~!_Xl7u| zm20xTJZXn5PHN7{Cl0SI9|+Cu?j*XsY^z+P-Z8CF#Yde~;}~t~ZC~5i@~xBi>;>hH zZljgzOj@b>+S{;F>3En03tKu7{WkjaA53)xZU6@f%SYn$Vj6cc4Iw3Y=LkutBS?oE zr3&uEEfCVp5t0}Y!ma&){anS(D{T}A*$9Me1VY}cxbaYg!;(0dPJY#ht05q&PFg+( zBQXy@4;k&bmZ>-$F$LDqx8z`k&4(}(IAie4a#b}ZiJUc@iO$AA;&XW)5{qk< z(?yV5`bF>t87M9ngqBr!z_8Gi0K;NoM0TA-YT4|1x4Rx8`sbT&Vm057HmeIg#RbJ4 z9z|^+z0olk?5jA-sG0p2TAYHWE}_qS!EBtjnE3aMIF?UaAS5J#)YBITS}Ia`53uU=xy24_CT@?>+@sp|NlhdW2K5~H=mPr?2l7O!stu7GL+Fd@@~ z2XcNH9AhHUphOc5N~Vlt6UUfN88})?;6b92&bzFl%c+1Wjei#lT60`ptKBtck7d@$ z7d`ujORw#qQ6CxI^K|sT-fM;X0>gw;UZvP z8AV$v(}jDpC9S^N+h9#h4>q<0HWe1;mv1g8EWk(nW>om=t6jm-dC~LP>iWvE^61%m z3U~s3sBq~2$8>R|NAL>{J62Q^{EblTtp z|5=66%YiQhb_EI;6BjC=iL8&|m-3#uoXivNSf8(z5t2?ZhwMrAgQsz?`;AlN=;p^*AmW+cq6r zRA9^DJG5LZ|N0J1ppI#WW^?6C>ExH~&=TZ+RBX_qzhxDsEgJ2=t&^)E{(1=pZ6k;4o`CKN}jaF64qeX;h*nUhy ztCEMSdzFgD{qUK>iHNu(HVV9F8AJq4*o-x@22F}a_zoPbdpRr9z&f#-Mc;7Eax94W zTD^`1j*iBX<2KLQRMD3=+`P8RG3rFd32EW_ewWALEXhqwPt2(Zd*&~$@ysl6ca+$9 zM#wX71^SAwKw>qa?b>?UTEdmf)K|G@D~mJM(`KBx^Ca@XA;DlDELd3558?yMNNFod zARs1!OS;0ePopUXGR-$>Z0^j#i#L=P9rOJ2&yRGnobf`(iFfnu8QM39u}B97*_BNs zU7Jd8lW3_(GOaGtm>h{?#_D3QXG9K@BC&rc?`V6i0@YON_YjZyh_tdp{+F~%R`DSP)Vqp$y!E#1yf%e*c zrwz1PTL->*pPKN>gAcyKYs1;t@W-L=!eYln2a?miM#s}>)N*Ph(*JvAY^nB7F-&}Zy~ z=&68G1=`(&cH5L=Xrg2*Ii_~2)Ckoyrqh~fh7zap<~1}C@6sAd1t)PzM@&*8=MaQ| zIE4V4$19lZp@_x*(3hveBb)n-H%1z zNSbr??YFD@4-KjlU>SWhG|L9jcoVDp_3}aQdr%&HSE5XQSt7j8Xs; zu}*y)vj`kr0UT{fx1i5@iDO1T48RguCNfOmq}CSj)?&rsYfPC6F|QUE^LDC`^J=W~ zjJ!H`>Z; z3M#4x{3RFw_#cB>U=)%7{#k@1IZ7@c11ld*z0K2LFK4_U+VM6g;VRn<;aV1ltZn$E z(@#D1^p_3}4Gav;RrlX@<4t#NTDAPRWvikEG)oqsC243$D(yGvqYSk9((9LW`SW4M zP-_BerCz|lnm0cQQ8%#CZ7O*Fx2beqh3a>T#0@Yd#Y$*b^R4YdlXDzf{de0@{G@7;U`Sfz;ef$n3bdMzWMz<7l8BAiPIhfl za*-$K+`MhisiCt{8U_JvwjN8w%%{RhUFzRjMhTtt*`>KIFcWAs$wn2{kxxJK8F#gAwsJ`};no{?N^ zH8OS}s4KYu9;b94h1^Eubcx(VoLkG_A4rdoB8f1BxggoWMvgNR=RdP|FaCq5zM$?0 zVXZhcNPQSVA5wT9FkcSu!!#;t%x%(M2{I|L^L^Qc#4P=}o;v-jF!S27} zinZ+HwQHj(Yw?~x_96Qib>=8t#8pq_0Oe-f0F!|sB+Q^Xb1>9mUNW0hYe^Osj2`>g z(Y7GC?x?I2k{kW?zIV~t#Ku{n()A09>RQ4rY|mD-fat_Rw17)mlCW@_B`woNPOf1_ zlctTFS<*t^U=brnOev!!7V;Gu1!AjmT+BYacdups1sA^Z)`cvv=6N*m@m-JOW1)P` zu1CvC(6U4&Oqv0Fbn>gw4N?XOsz7vM{azNv;&cb~)rS&kWy(^Hq7rRNwyDHvU6VaA z`Z|R)k}BNT;es7Q4~a#i#aDwmJQ-;s?n!|`GA0&rr7~AOp&@Z>n0I$ulK1UPwoG0= zW?g&!Bq%p6?Xmb4z&MU!0DrjLUT4+TJbNCz~S(wfBK+2I< z-GjhBil(AHsq7gT%t^*!a~J?r~V-?Qg*m#;KEGB_BCr1_6HZSkUgNBAH7(T^V7QXCkr zKW6zxz5r4SiTkL<7^h$|EuvkEU2gW$(9NVcSM((`p8(C|YLkl9hSnIG&!l3Ps|{x| zYH>;hC!-`ipU09nY~8xyv@PL=hVT}3|E~4xcSS#DyK5UgjnEJih$K^d#Ql&rT6B{zvuIy9N|7BVGNQj{nH%^>ybRd6fWuY5;VP0XJFvjkn5cj>r7&7-#$GFjaxNMoxY7)y zf-52UeELBuE|-%joP&ZKCuY^*QUy{P#`XF_s=)PytaACuRdc;7LhaqYmYHLtr|cX( zrgBcnNO;oMI=o_OMekTzXK=K>wkcRso1A9bGQ56EsD9MxT~$?+l5Sf+;-BB5)mV%8Vu99u3iBx0}6S237B*d9r=*Lpm)_Qbu} zp_Q{{tqf&@5Y6#+))o}hc6!;J(XpA^XS&^p@ZD4fVy@tn3__SM-u)Y`lEPvm!x&}| zMsy#$|D60_BqyjHeCXUIL2GE~84scUAH4c18v`liUw^^59JI^9J~|7Fuz4Rnjk-(| z=9uf_`)Dbw7c&F6lK^bOc>)r@EL=t+I15@!v*Jyp#e|wk`~RNCqwNv?PnjpsJp}3+4t>7&OHA3GjVp# z=+Va=cXae-v^xo7JP$BWRhAQ5Fm*MYMr)>VnFh@1Z6T@v`2=WbPfFyJizmYIHre0# z!};^Otlgt${~^W>+;Gl0H$(?wXot>6@O{5_*luFl95bLp@-j20NV61Xc9=e5suF|a z^H<~4BC+vTtD;G4Mf7&|TJ$Bb!XHK#>H5LOCcaVmv#X-FbXg062E(uviOSf z71v|2xqvEOVq6(1spmpC&)I7SE_?{YQM;kz!*9>w0=6$2Dwh{oba9lfkLKn}d{H;s zSVg8PFsH2WLv3wC6kNr{E`%xT{HBQ&-&irhqsK~e^KwggGzAs~(6eAJ8hREX{k&Hx z{3@^zRz8A1p&dH$CuF3T!WFu-VCz@VS8y2Z$6AZcJRh^Ee2fPEMa^koq-9sNGRCHK zb7sfCGMejnJf(~3w#`QzQ_M15ot!36&|dj z!}`HZ?D4FE94>crIZpkAKKFw>~8hYOkxU=<=18M`qX84)wH` zoj{N)$I9hEnM)7ef znh7ynV7h2H2n`ovZcq*xZ_v9%NSpY(v_)?~9@g2of(u5c@oqwZ1ziK#DK@B5DM7%1 zaFS(pwY3C%Lq&_S>stov!^^r{d2WA6c~ez^XJD*7Fw$OU8!H@WZ|@oG9%NSrJl0xY zUDfP@+Vbo|Utf*0sjA45Xeq8~b2rRxDz#TO7S5_^iujX!!EL|>5*@VyxA0vmWwjvY zgy3ScVDNR*Xq=g}^6x(Kml)VM5NU7}B(xToB?v7EuR-I&uwZ~5!tSR1(CX*|tn`Pg zRz-jGV$!}N*`v|mhJAl!b1-f}j9WcgRYMY_%ENR*Qc7Zso76+_m9!dgrrkNcmaSCt zR#l=^f)0~?MX4ACrxmIy9myoraj%mut2f7~TA~lzlF~}tjpcPCtxi|pSeJiJYhBjr zw9?A@()O}g4gbUJe~+3A3E1Nubr zxpJ7H0n#aS+#hcqStmNa3dIuQp8YT*#@9Rft6ubsb^^4rJLI;<)@TsqNH9aQ<{SMy zOoQCmvAWmQFuc6}j;?jX{*g<9 z(WK@=A5+#cFA!eZ?V9LnO>6D!MASvI4PWb1E6~FvvXuZIs-&QiI)(TW3=%sU517FR-^TfwnNtO6#RKvHGL zh0#-?EydCCt#0R<-ikS0O+AkGr7bN>+Z{bkU2`gW*L1dZb+!}iBdx6wgtYRenRNpT zZAm%vI;#47MMb{8s*ZU%Nw$Rpbu*jFH-sB=eQ?OiZ49%{KwUw4PvB*yWL_#Ok_q%oTT8#z#zO|-iyRuVZx9Dsso{yUUDno{~7q0UOWb2**(mT~utq zgt_Qv6D(ryCS`B0(kJi${cMfnz%*)a#sSWd2Z;O!q(TmzB>OumFH4E=@@PpY zDh#Tb!L0c%a$Nvo0m?WlGdJ(~#u3xN97i%pyls$-|X;|U>-@$sutxlN!HP+NdPg{R~o2N0= zI;-E?US-dzpV_pdyR4$3%;9t%8Ql22O*=1NUG3>z5sIGGUg4hDv17vHELt?XxO2m- zZ?>-LtGuV8{M_=2hPLiDuu2Tyulom1!`uN{l}|h>J_d^Z;mdCHT}|B9!iXA_?L5}> zj}uQMu1`J>t`CAYJk^dfDofag|L}f0d;Q;Aw$Sqmo?ptJPoGjt2lR>RQhEqw#%8D` z_yQYm6aPTz;cd!Cn^5L`qReMvAF;D=o-C{#sSi?Cd;pvgeLtG|0BMKWKCv!TR~JG^ zt#gz)>Uc!o=B|i+sy5;LzI4!&YSLY1#65vXkdk_kOw8_8%Hy+j+T@(FTP9KL6iYU| zYlR5bj&exbtfzWzTJ9Y z-#+hCPn~@3xeM_o^`-~kKB!Xv z$@Zz4Xc`Egp$8JSJou8f9AhaPhEW4a&Qf47tik9OxD8L^e7iOUr{DJ1_y+^k)d7UN zpN_?zRtsy&O3G?@BI%<@5!f9dc1zOMhOrt{>RY@yxC0V5qyG~W6 zp-TJ+$}dFn`u015Hi(4~tUD>urvilqf(zT7Wx?Lc<40CB)ik!IZcVO?%<;$;{TAO_b>*$~#j4xXY>ZcL>?3FjALs3!Ppg>TZX2kLXgjrg8lPE8 z9Vrzo1vx;7T?j2;mAqRe9Fmdn=k9#1cIy=2zGUt~Q14i)?8}=|dtmhJ@20LWeEIZf zoO?{)55~+$!&)o7hDa!u4GhnLOAqZD_@bHbYS8X+w#=^CQ$O12c6W}}@2Q#H;$)HG zeY;jV9E&G*cdhB#J+atPzG~M#ns@VKM`Jf6OHVaQr^TM;kIo}v$-p)@Sf;V7zM%M3 z<)-2tD^WbdmsgKwpQ3cDQcY+amvl2es|AYy+Z>4~WE_X70*xSPVjpFZ=brnvcFNL2 z4NIw|t5DWOyev0uI^tznQI-m}O*lf4O)zwtD2Lgcq&p9@i=t0H_ni94XD2OHpXVj5 zK}nyWq!!xsq$xP8UC^3x*{X7sAv}~akc$092Ir=U@u>qckv+9QZelt0H5KE~3Ecsi zC*cGJkGDaig_b)U<>uv+xr^LrSgbSyf_65ey(u*-H`$iHYsr#b>9*wDtkkCV+Yc0E z*~(g5T3X9&Sp^5a-CP$a@|G2(=9Xr)FKy2%%}p&R^A-i_nwK_vYjW*AM@`Ubu?A}# zK6`GBw|OaGHKm6+Mh{!iLkB_&df1GX)5K_&9;i0-Q1~=B@T-&mT8A7mngcYsI|KF$ zy6@e1gO1%!AMG?;A9Aw|=1Scpit z-xa5SaxFIYWQG8q-o*;TF-C(qNCHX{I7RzqTDYyWcz?L+##NUiKppVHTG*ywEs}ME zzud@IA}jVy^Fh;6u{9~h2-U+Y?=dpGYF9dV@ovzzWN=iJk`ExIr7|s-X-j;qnq~`C zM6|ESq!@BihEwjZh+I}s2KHC9(^T+_FwRqeIb<113lq5}5MEWGAhOxLSE&MYOQaKe z8PWbME9pECTEaR4Apz(6O|9sm=bfTb*}X&4^SvBEiFc9Wl!Zsn|{2An3a?jbQqUq z@|m|}%FbOdG(0*wJhWiYTkI+J@@VfRotH#kTQD@VpfE45P)|({7>|Mid<4qBPNx~4 zLjm%^mVdNeOn%k$H0&6SHAgqgPz2>j;3i%;TO4~UV(T?t#`f*(JT?)%^w3)r6E`;) zTa0fKJPz5{e6mN*rVov9$djezEW!|4(aqcxrzWKG6_cwHS3)+Cjgzk00siaU_^++d6Oknid2kBX`oqoWg|jTz2uX)_!=9dOHND*6oV&+F~; zmFQ`8PKB>5x6D_O6Tk4^S5aJ*)!*i}C)oo;vohG_svGkOhqfqtNx`anqLM|FVZSad z3=QsQnt_7ZW{S-16vFYCD$>jxT6SY#ZsZB+Q+gU}2ZP-Q4^(E8Dp<`uokxFS=;?X6ny3 z@r9r_fNgZT&3R-UuAgpGfJ(S5t4ycC(uW*a$IwA_-}Fi``-g!m~p*foHohUUR^%#F8#R#3j4 zvRly2l$P42j`<^?LfjF4?+`;2+shX>1w%Iny&4u>1c*QQ)oMR9IJX?1_^)dQE- zrRUm9i)#oDC*nIvuSl+DHqAI;A%w>88K%R);1D?sFj_Q0PNrc4t)jhs8s``U+n2_> zAi08RRt2nXbmhuX3ZCj}4+0xqw`9pW3WE*Rt3lqbt~9kRm$!|GZ4s_MZ=#VG8DNYBjn#R3X*TtG^|Z$CuR&l-OZ+r%{3Uw2 zI8sv+p@8+~1$;&7TYPtr3o6goZYkvh-uV2*;O<{&-_?$%7DsOaN52JEf5kU+Jj&7E zB}VRODd(%e7do5pRU+)RNYV-)BOnS&q#by~i@$uJJ;}eU-u=sW-|4*l$lINF?p{7w z*Kv8r`pyR)=vjh9GaoFzcJ!6d0J(XcAe zK`x@3!bEP{UVKs(2v75(DDb<)mLZAYHs+IYf7*1FLp zZ=PJUam|x({n^hiFdz=)5WZzaR2@=kGTEXt#B}^Mw7y^{V6f&TZ=&a~Nxo+6iPN7r z#D=5yG_vnRCkfZ8@tycae2uJ78K!PYE5if8YuMvrvqJkp002s)WaQB>o(MRSGb)h| zu}_39oSU|RR_2j+x*Hyz{5T~^_#ieBaze(=tZFT?m*tk0q#Thouit!gm)BKNHM1rA zs4ejeYF{V5+ggNKm8y7&#>u&G03!{XciujND#xOT2w7!bSBQ>+M#3=u4{)n*{jis3BsmML`CXu)SfBqu!a92r?Cf6N;00Itz9~< zV0*{6cF?GEEZ|y)FKJsMbUvbe(U;k)x862!8~)$A5n=-Jz@GdBR%|9;PuC7bx^s0Fgv7#F)XC%6j$gmPF=vpnsD4pz`!QL@;P`;3nRuCkoY2u zhdd7N7vWtO$|PSo%n=vOks`cXkCHIeBc=7^8x2qgGlFh?MM{(@iFrKK&7q8fWq zS^5!~b6UUJ4I9eIO3$ryRCJESFJ6sb#V^EMYXG){Fsos?kg3yr(mT@JCp_0No{s>m z$iYF-wBwv$Iew)K?)U~+Qc8rK=m!yYnx{nA=>;O}UE~)90_eo~t%CSDt((GYF6()P zWrnx$i|G6Kz|zFg6JtCACM;5tRZU%n7I6)eq=7^d8iO;FR^{9wTO2q? ztQQ>^2G%NQlSj$fNC8mx2%RE#+aoh(-nLFXz)z4nG|&mKyhasHq3^6np7B zNky^ZW28tvO{t&O5u&PsTA)5K6hvQ(@S_)&_R08_Y?nYEIS)a!AssK%*pZJ7(a{Dx zmxuQn1hwQG1($hne-3%vjag6`i67nQj2oL+%h;7eb4F(cXXPcN^w$`d<<9!lj2dTQ zc{wXaRLE~nTD54=s*ZuaE1JwFq+LPQLT>(y1945ReN~N3x=D z#b>Iq>qN&$;%-<`kcNu{9c5rkg~uL=alJebp6MJm1f>iq9;O|p3%_Er6AvXkmZzBC zI7#M5drbQ+xqVgccE2afm)+PtyRmb8$m<;%@1!)kBWmxhs_L~L0p6=JP*&`0t1F7E z`PRtDx7I``_5IpjTx|a}`dEuTmZ|Td)&{bdw87BNhk+3CwaR!OrOwsBGc#h7&b5-S zdWA>@>rZQ^I5ngSh0-2cYTRI6g;QW7go#{00`(O3a*|)v$U{x2Y1z=CiKN2hNKrVu zsIkkvU`a`2L8Q{*YAD@MHnB3#;foZf9WgJ_l9jkL)0NH=B6IwCYnJ#HFBq+>X{c&! z3C~)rp5^g9RzKF7=5d03fH4`q>-tmRb|FRpawd`x>Gu63)YE{Fl)7bF74N;VrPA+;v&N1I{nOwtA`m|^xh=^_yh#jdQ#PZ_0%?Jms7C`4HJGMl|( z&6*VyqIW@gbxZV9bs79v7BI`9>)8d>o|&}YM|8uC8Nd;E({le#vML(i&(-rnL{@^< z=EtEVPmwWTV776jW2JE{-kPNXac0)FGR=ClZ^B!-GkKZJ>Q#KBheBv8Nud zr&d+=9MRm4W0`Q`Ktt=Cf~2ymk9oLm`B1}W@{A^C8{RUb!ri~Nqh)1pWw=&bbY@ra ztciWm_ja z$yCwHd!iyo*k}^BlPCuelo4}30|hwvloCc*q(;zlNR40z{VR*VPe(%*V^wokc){}v z?JPKd&_d$=g+3Y*1^9GM(YV!xs=Al;7Zw*6_Al$M3I(f;yXs&=n7k*$J2JP0c9)F? zgQI1;L)$W^-mPwJ#vhLWk-pe>aPIEWK*0)SCpAx;$UveqY!Koj{zYelam|>SFH8YM z^aG_qT5v~xpL9^A*dr6`Q^<3PuLh;iPXP@=i$SUluMIQnJ z>$>LVtxENjl-Fjg$Y0p=qpB)z_2ibUv$kzJD{IT9q#j?e(3=#!J*lb~pWjH@#D?p; z)7i|lo_gYx!ocew=zFDt6S~OV#)Dzf*Y;_1-c0dmQtAgY5zdlLbuLoEX7VKkqBJ6- z3xQmFa=1c(931nNL~`=U#06;z3h)D`i^h2soVas&DV;JY=%U7E?>qP0eSzU7Z|2(E zc7OYfwAbHy>-Dr5xXfLf>1`Uuu@$%6pXY8Y?5t@R>{>XouxqfPrn9ioou{zaL2wWg z;JWOB!cRSKXd25RT{SreAw)^ZXgH~}Xj_#gT}ep}BCJ4YJttnDeCMn%C65GQN6^Ns z5N}vr8lC*&cx3n{+fDY=;hFc@9x3{9*6n?`ymuYDYy6v?1LHp!k8bW9pz$F8FFFOJ zmV94bk~Zt(G0p17JRYJ(sGP`6U@_ z*~zYDmbApRrCpweIgzrK;E1!Txy8{`v^FWZxVECenluS0x?|_4L9G^@tVXY|C(hEZ z1UT{#i{wSiC~b((v@fx%7Ve&c8ddS0TgjJ+7nX%Wva!5SO8iz8QkrL?aI&_~(TN*= zapD)^%qp<6^@2u`r2rXP7jh8-@D%efl9wNbkqq#ajKXMgdc1bsPR2!(Gi-rJjTbv~ zmN>G*HMe(hzJEr&ebd<5o|TTd4MT-%mu_0Oc5YR}Vy4wJ*4L$4+8XE2OnELLxiZx4 zUbHcF<3v)RYJMc`!G!FIS&NR!+^inyu1dWvEqX##b;^TD&~cE-paQE3GHAvLAW4{I z<`cfA&0It5jQ$aWX7-gOCYcc1!bMty$~t0`LW86wX-M_WEP;m*JrX3T6P#J`r-|9> z?7Z!^$s5nOEa|dSZ=AgCwrJ)0z3bVI=y?=yiG9ZmjCvzRy%;Nv8zb*m9w6tN0Jl^p zg`u!QptJ;aQtFVYCyoiz&WnN?o81i5Wpc6fq;pF?$8BkesNB;|g_= zj37vaOul47u}KXeqVGmZ%t{SX!XiI_kO)(78yCIt6WsLEfoho+cG)AeK6&|-VCcN; zh_!d#xt7(>2o$w9b<8LY&2C6q(f8e%GZ*%Kx4yBl{-~qW{YM?epzEsY9Lh?_nmb5` z1+jCUeO5~zb`2*-6JLChsnvB=b=BDYc+kLVG?da% z9CFhfZp{=V5fICaLkf~l2`OU4>iMin1JxGJpqVH(9na@r<+jUQVvDNztRs(?G7`D)X=35aWUibFtA=B*b38Q5a%c%` z)(Q)g`csAn$HtTUlCp}@lKN6=J9F1tZK<9jSK9ibrM*f0>6V0Qdwxo7{&g9)%F6Q8 z#4V?|Z#em)pX6^FSJh45$Q|%E<~Y)#p|nOvW7oX&&FTy6P&7$Rv_v1Q8!lq^7p&~Y zj3d<|(dI_w6e14dBx{{EPxJ0K{1OiU&k{lBxD+oFHzYD5Bcf`)CMIH(2%RiQT}VlQ zot_F6B|; z94e*jBF$Q&5XRncnwnu6AvaH7PMoBx5H}`D2JC2WO%$6HC}dZ_PzkNb@ae=|2JTW& zC21Oxk&Kq|-Mm?2-Yo^X&zl zJIqRUtPSGdjYBeBIY0TMZfxEH}&1QQa{kBXdqpO>RkErlX^_b9U>{Gtmdx_bR>h-pWS_-{?HLS#f*= zouf^*oA<2{kR(|Qr4?~H_n&oL28v0T8@eu%x|0(>;T#x6)|LCLlBZ>Zt-4>mhy$$(R3lb$vk;oQ;pi_*!3!U_19J*1f z;tu|bFinCnb}h5rzigr1TbjKJhkjM>KmP!oE4R#6>aj0Y3!^P*#Wm&ZlW1CCW}rab zUw|Zf3tLiNQ=E3_62gU<=v^4Hz#uzgnV8fhL7>T99q*^)bPTyoHBBaY z_*o7f&4#82Cri-C;)*P&X`QF}MtKR~1j+HAPMHwrCDVR3MV=WbcCWN)V6fKb z^Igjxd(RtQH@;zA*mL?3O-)BcXD_HN9V)F2Ry(VL@2`eQ3WIb($Z2!vn>g8Dn$UwM-7wtydyps%pg1WwX{gs&1we9n@-CI?q}eD2bW zg~|+LNay!rw+SYfj3*CfG)Yc+Eqz4cwcy!2a7X3`QbR&(>4mVn|DP#@0Xo9s!(RHQF!CB%P#0bDZwbu}_~Ae@Yl zK&_&u<3L6T-(TO%(14{vV*A7@qXjnDH;GLt=-B$Ju!Gnr&2`_inJm>t*@BH?K4q#MH;G?~GH2;tl)JV0d@{(#xN3c|FXoG6Nb#iJA z)R%vc0kJGduyWOHcr$_@teSSP2H3&y2jQ_AZ+6N*7zL@mDDHrXl?pT@*Dq6#uThVW z;gyG`-aa%^1YzSW;EIsnKr$icH5rHt35Jk;6bnA}mM;AJpfQv|W2gWcHF@r!pl;cJ zD=`bopnPqzsi#YmRArcO>Uf$E(JxK}`C$h1fl{1|Iw6vv1g>DwJRg;+(n%w(m$CPa zpdy8W(voqPB#p{~vSecQ^@BcFN4-H)DoS@Ejgcv)lq3v<2O z#%pKIZ|&c4`8BQOEBY3RJ`Clshz&u?@1}J;8{v=4$+l>aE7d?tYL9>lpn9m3^4su- zz??bpMoOzV8Z>-CV#8;Wh~x>ppv#=uW^@7-t0Wy7N{J)1hS%Yhf+}qy#33r6RLZ36 zw+OGyI;0Ve$?zh;hHg9=CME+?WVrxf6YV!qhK^a`DV<$wdMmP5Ty;zGcgES7?afQN zCu`3gY+un;k(R#h%3F;5?T&eD||(^nRRo0|GpHZ+yD4%Y^% zvN=>z)zTTQU)j2w2XgII9oK?7q;`YgWGXZD#)7 z!v68Vd0FM*m1(|;hKeHp#Vn26mF7>&-*aSmBwUtRbNBUkJ>s3cq>c=<^ezPS?uGaSq~MRz zPN8jf2CV`*O~$W|PvGC*&OQI&?9uOhXIpn$TlcohFTZ@(=q_XQ(5_t<;ni$vt4FC! zASS3%J*ZM8%r_mZ)YM>G9vkpH&V#SII)ID&X@4Hrw%}Tl@6k-dy_OcmD(tJYC{}^b zbqLbVZX_Lmk7V~$SxMhm--I>mxJqe9?50WCk#ZSCNpwri1_XrGfaXU7qbqmpSUI|K zd`W-r*piLQSDwFK)ES@c?dj>Am3G97uPE3$HMk^@Ua)$}%5!s%z#stwSN+LkQ%6ll z6EGkO45&uOCUj-=+(;+9g#m{r_CAj2GpJmvI;p1~ha@W3s%a z2sz4h`T7A7>d8=>L=vjXYDrB1-`LePJ#+45M&I0nbH?SW=aX^A?1tf0vsa=e!5zt6 z&OTMdcdj-Unj`z9zMExJMm2H4G z_`DDP6)*O9mOcJx%6PFo{>WdP*XP*d4?C|nU$V#Vx5rUW(=1Tqe(!gTh~v3>J`dT~ zziM`S1NQY#JFhpNvhRN{ug5<1ooYqyY5^p$QP%usxt(!waC!hOU2CbGqC&f)ql8m- z5WAqFQuMYsBZE*m64bjEcaSneEh6;Wu|aGnDDxb;#5<<1q0$=0D02*A4CgfuCDbel zN;>ILCx@n3rSH4bAnJ4$gxOu!6847*0%h49Ig4AuP0^y^KBJ*EZNUb>zuw=PXd4Pe zOA9lL^YU}rgJqdTkx>2Oa<8{7F~2MDTiFp9je%_}=(nN!SjujE(;ok#bKJ4p_c+JB zpR#xFd-m=D3%nMV#l6Hbg$oXB(BJz{`+LNOJM8;CpE7=vJ^p>i_>}k4_V^F&aX#O| z+PIfk>v;aDzeA4ic6{$e`+FS!kbS?GQpVqBkN-rCi{8rOlrh3VpE5bl^~-VVl*w_< zOO9KoN%m;wX_DjCX=*{G3iNJP<6Hsg6!vfabFI@P$9bA~AHVl$=k?+=$@^QUsRgI0 z9jB=o(SPr!E7QtSYr$#Kxlpg)ebbflt4@7fSs3ih*@weI9V%bt>QZQup~2-a z$4EyK^_aNGbCKE$&JkE4j}dhl#C$*x2J3eoI9E5T$HL9x2-RCnmQ}mXIF4C3zpyN8 zQO@EoJ6d->Yn`CfKGV)KW;D<1dS&kjPn3kPb)w{s@I=XR>qO1paqC3M>v=Nd4t~$x zL12P7Q5@GN3i#l_2>rePw7-YGR^mj-`#qmB&J!iazwa2I7AHfF|Ii-i^DWHPCrUm4 z)N43VMUL;iXn*fjvsRoadB2w&<3(PcC^`NUjzbFb;XX@%k!^5?Ofqvai1hSnLE#w# z*7=N#1sk>H55;da19o+W)oM6I3c9zQHeNA=-4KAE=cm7wROcR~j*!udus@D#6As@v>|^Us$u^oqa2|Z*Co}uFhUl zu)4o>IFQz`X60G0)+ef?nVT}o5?wW2>x$B{M}u|MG5C&*U|roUbvY|mtXbE0Ry-Q* zA4$Y!uDoEZaCk*)b$R)scuC*jVBfmlwt>2MVWif$qOZN7p}h|{FZPPm&kN`QYClxC zD7un+D>4zhMpOhE3L z3|L{Rztl!MfF|_v@wJR9XgG)CsPLEpP3Gc7xmUDX(jwT9dKa+o zqbCQVV*}wra)!k zRT}e%?q!13=VOvg2Ca5dl+^Nl&2@7zE{v<1a3hH;b!x?3c$*_B2q^LK4QSyrx=xBJBnQBo3#aku&aCR}uP& zh*u-jn;P?Kys$d5xUsZ$9D%Pp$6}Q|D_Z+kg@HefJK8qJRyTbmuQLCvx!$p{Ui_F3 zFN&<*esFl^;533@cMUDxHXiG4O6%OxFwomw*%8VN=JcMN9UmEBC@g;QO!fjwQAzU* z(lAEC=y6JX9PxP{#ix2)(7Xk%7iZf&PD$H){{rJY^YZ@p+4mntY%V24j#ENJB#LvM z>iUQ5>p6c)i1PZU4Ok$p>xG0U?|(0^2UhfgHsk(4h7sC5 z_-?2C$CJWhOw#!_AkGYn|FC8i3|cZAv65y&a@0z2)JkwvQZ9>4Gs&EWuMxpCZRyYw z4Xvb`sLe4Azf(#ql1b8)hH-!z)=;0BQ69kd*TzP-F77*fq$YXm^ho7i9-uGTbY!`#s6+PUnU(RbL2OI4B7<<& zi7geO;j6JU_@XHrd13H_1r|ipueLNMHZr9^0NoPu=nokoRU{y0d`NCg#rf-o&l#(+ z_G^wC^D84N_n@IaKD}pHZp_Ys#*Ow4bf0QAM}-ufh3DgxCh-DD%W(l|j8Oh_jt2or zgf`*&$6s@d3l1#D?>i~STX26Vr87qp_g8wd92fV;2y=;@*Yp1J`p2Eui~Gy*`#26s z2_=0+pZZE_YoU1-Yo&7O{ZY(YlWG_9)}|=I&yb@JX(@sqFGSW1OjHJJv-urUq+pZ6 zcF{D?HX%%OQ|SrWOi!Q&$M)Qe6|&itYRm0xVLdP~chgN)V^ub}H&>7;ePn(s>r3wJ@IHL%9MAoj5FcuIc4NFzbihQG+-druYdEM7Zg6eO)=0K2YwOX*=%Xo_ za~A#3cdJhJ>=BIS^}r7CG)eO#*geCNXXQ9(z8Jx7<5Oaj90$!;okk@rdYRj10z9C`D6XwtjAI?w+|NGankY?BnU`4f@T# zw#Pj0D1Py*Pnc%(^tN!IW(+$=X$dLtzXSH~$2RtV^Ce&Ufc? z&l_8&XTGw>G-vsE>;;|!Uop;%flf=Hs1Gm23&vL_|Jz&&89(8D&gkPO(Ed2Dl|bxe znAe&53TmJ$%Af~a(WWY}2)ItW!2G^~b)v6ekbMQwRM^NFnVa*iy!xNN@#FWsGV~cU z?ZxfK|8Mds%odY21K#IA$AI&m`wb9Qyk>hC@B-xl*~0i!T{nq(#0l>cMi@ilI*wzt z0kzs@$M^{DyB62SJ^A1ee(!yrZzpd96!^RXTp#fK8+XU9872_R<+0JRT-NT;7el?8 zeoH7i0>N45G28x&9qME#DPzsK`O;5AEM@+3n(f83-sRfYk>=8|fg}NVECt=Azp^tJ zUHZ`zCq8P_;#ab7_TO7}H5@Gab0{3-?1f`~+U8=b8P*b@t*b6V%|xhxW{!>y!Y&3K)XlGp>M z(q!U+)RnIS0U;ly#!OQNLnYnp6COW*?EGWCf{CG}o37ka7%MM0w&$|pQ8NwQ$#?ER zJmkQU>|mrM`Em27U+0NfjuS*Elrc{^4dj;UmvvHIDz9?Z=@X%63e=_bOvU(!vn=zU z*v~}ndmb=^QE*sF9;-SqqngF<$^P|Pc+|iC)m>!$b8}JEkE-;{A+gBpJ%Wn6GyUN1f+_K5pP?mKUM7+IavtayKN zUz|Madd^4PpJzsoQ?ruSKb>-Y1*G@~=G~uJqu|Qkd-XWZNEM1^_nV7>gSFtxh{_1s ze3|k%W5oEX<7Cu%)?22rjfX!&=-0A=0Z(v-io9a4bjHn)iOFlE4^|p$qV}gXz#OTe zH{0)8)Th|tUOT-2`IjOKj0Q7*k+e-PGgWEm31nHVS@N#jgg#({%e5YLlj*L`GhS^`;T3JO94QwBa5o&FT6(3fKyXIx**0-6Ft^I^e ze0uLNUvmzhd~srI&Dezar7*Q$pB$m>Nw^FH!!857sBNZVwzyu5`@Bxf?x)Q_UGK!~ ze)C0O@aMsOe2)90rmxaxCAR|n#e8t0q&|!1TIWQZEAcsN0oRM~y~wj8&!}2QoA*PY z<1e|!>xDimPux$$r^pDvedt5T#YPNx9%DX^RZTd7-S9qxXgR#<7=~J!Jw>H=MdM%= zXNb4nX_tRXX9O_+i;$uZf&O3wvf>?6EedU4L8tH)v|)rzS73ssui%3?-k-$}Bc_ms zDx3)(Rc3^tj-~spH_q9gxe&i?hYv;v2Y65B91^-be6m#Hl;RHBT4g zpk_VLS>O>xWl}_7`c-98i<{MP+v*(K*3W@{88J8_eE}mdPK*HR2zZ70foW=f_yQ14 zjZNzZR^$Ua>acmuLXcquEWHufuGKI??W7?JU+c#OCE|i2jL7)#4m_FfaOo)g6Kn88 z$4>+9z|bB>V9s|WIQfl6cnPWEe~Dte=d0+p`{|1nxG?v zxFb{~MGuqpgmpt{+`~`<-{PX3M9)cxSSodfo+5Td+uMxhS@;V!2QZG_aIwy6tXb-7TAUzx(p>!6g$*RtDesJ##Zx zxBKed|2JpX=KUA$?(7NowD106atGm0+u$1W_dx!Cc^C$LnOkP9R;fLDCtOiXI@nQB zMCVD;K})iS1lQex^%J1*yJ6i00v070Ozs+?9j;K@nu;VqZ8v}Ctn5J8i2O} z#Dtc6PB3AoLQLC&n=3idWfIjEHc}@LIizW~TyfQhF?nxY34u0rk5QZNifmUBram1p z655y~wDpqE)&uM7ahLi92rW}tNoZ*+E*9s3A}!NHX~$p=CX-wv;(W{}n{bfRyl4Z0 zogC3!&~n!r$KZQy&Q!kF{AE)LHqTz4la?LMu7rEG#Yqd7uNpRrB*2nS&MvlnvXB#} zKrxy?F-jmCz%CvFfsc#*3}KSG^Ss(~eVR_E4{F+>V*;hglnG5Chr?9T4TdDMXet%K zfMD>JNgTXC5GzWN45sF+0GEocWzB=jg8sQ*_YDp8HIIy-3({BG`l1u(PEMXX5$$VB z{=lf29Dv)esrkdrO~i$1P>Wp2g-?;2hk*%toH`aqpkv`vJx(1g!-%>}Q}>}H3T$=GN8SISl;={%;&W-?)Ylh#p<}7*A8=kTyjpUe_i`LKJ`EhF z{kVnQ=uxsRQCUQ4B#0q`NACx+=OFVQ36S7o{WCCT-3Mewd=+D#bG;7-7 zf-1}js18e>N|!WqVb{z+9~B)MIJDSkuq^3CXo)%Jv})RcOjM?gmC3IN_1f5C!xzy? z-pA(c2k<~>OcGxA*zkH4wV^HpRlJ7TgQ-+eMF41cx%4DwV6?CyXbUneOkvTY6M{J` zO!U3TPBiR2PTR4}1fn^Wm2Xf-4+#xci#-Q)x;xGF6^+WAFt>})*m8lHA8$=dE)(Vi z2LujVIJREnys?R>Az(AiwL;tBNGeXs>xqp%$Mt}X7dvO&5 z*f{)S2M*_o2r7x&|8<)2AEb|(yJKAV+&F@$8a18^c&_mNA3V28jQ=WS z{9b$fw<+U~+2g-S8Nc5iev}QIN7Q}%-ak?s z#(L%TN9_CmoY#ZjYf@>fOvG*|uCmzGnLMRclFbPD#%9sIj=eO?viZfWVCEOf=$KL4dc)I;^^`g^Zh-{YR8Ewk_U=aliq_V`~M<7?A4+v9(;#>Mk3+=_dNTh8aR9?%NM z_g=HUC&riC_dA&~K4Fia;y7>y*}S4YX+DCOZqPMx>DqHfRw;U~aV8~5j7DVb++u28 zx+3{(*TuHkGF`?eQe(1lL?uI@%R#oT%L7};71vQ(W=eS-aHWX((+~#fNXSNxgb_WO znERA*;`Uo^xjp&I(q+5vxyO8X&wuRs<{oor@;+lZ_Ft@rXWO_A>+^Yk1>!)wSOj^f zS)BQZ9EamwkMnHH@!xP9Q(lC##Og1@v?s=4TNs7dX2}y>6d$@AEvU4bi$Wh*ibpJk zR&@4ymqB15DMW{GJVOwoLqdpdhP5INYXx$f)n%<%yCF@jR>q>!U_evs{MbcUi$rH% zuQ50|FfdtBUtZ|HJiD%ES%)?jggbg2c7}@&9)CyI>i&54<^IC*dUNZ(voGJWKTzEm zuBjhiRJm{*<9NY?x8MDRijJv~bc;UN&(okSJsJ!_fj!5LNK(cHje|~OEzJr+fnFZGO79h7R1iXm zM~STQ4_a@2Z@qbuZxy6aAS`>CZzvJvHw(R))w&w{M1p(7%+$gYe zJs^@Ju$6QcSPZo0b#k0kNsj+EWt@%V zq&>&9P`0x^Zq*ZdNF@;E_wYQQ?4iHlF$7)pNrGB9;dAV7!YI6sVc>{tkdS= zS5DP*o&$^9!_8uLwI8oBTU&<%87GWNsH8YlSXtVIDeQ$JBLURL`fow@6BTFl;u+N^W z-j!CEDB%|?vj`=8mameeoLj+4kJGSge zn#OJD+zq%)0Ox|lNgxT~YstK;FrFnSR$Po*GPN8h#ggN{RdAQ%q*!v?lBwl5?=Qzw z?@x*)$1Ry!UXOiJF2RvbMaQvcJ5KC2PxZQY?ABC2PxZQY?A>&v}1P ztW}^`2|=+AxG9#4Q=O4wktRujLE6T7U}O*_+_%_0O`&8+o3M;8OrchN-~+~^ANarm z)X7Y~f4A|M-Mf=nyB8u)*jc$!4PhZ61LKErqB614BH-RCN{C@m-a|@=TB~qT2!+oY z$CMHcv!1&HQN%i#nUR5wU9*P^u1PBh*Os*`N?1@JWC z{ne=}v5`JnQz3GY?8)wk^84aC8Mov4fcU<&OYOydE7W~Qoa4N&z&GBHaXU9A?*^X4 zCM~9$HagU=}ohRut9_kbh<2FUsv%@-rZhj3c9EMS3hm z7ZH5QfKT)j5%03?Z?Lums~NR-pr|0Dbvgr#)rp!F$+a^x#~**(XnrlcH*B1p{N~8s zkq7KEPcF|>?L#FQ{Ikb-hB*Rx&Kd`df(k~|GQ>CR>w#fj;+DD(U^D^y1FtXiyoLBx zBno_3+}~9v!=;L7R;0k{%2ZTFePOMoUXzAXMY}!2on%%vE1W`xqg7VKt6vf+s__93lVrB>=aX5(t9GAj{5hFT2nfzes;3~s)#`ClJ+XeFJ?e2nOpaR+ zllKwaNkAs`K0K51dW-7Sg1UiYt8q=;^n6IyeBxXBxsTv92)ZUevFDHbcz?OT^`v_8 zxsvL6J>{pq0*~9DK?$PRb40RuaDmM1tO86a8tW)iR|PNUMzN-rtp7s>Ej!Y&%#<{! zQgWyPjuIVmh4+ovVZAHoX9BA$Xu%Qh8tiwC>QlOBt%~CGN!iuJQ7}GKBs!`odwaqQ zp<{h-=Z3M$^6Ig@lk57#+qvZ5P481xUDLf+P51I$PVM^k{jGCrH@{-^1xeN|L9LD zvn4TC&3PB$)uvb}jKu^X(;%ctX_yX~F!W9m45`3~?%1l*V=MA-1-Kv?7&0%3uwt2g zb28fQZ>XL-K>>|`YL9O^n0z_bUYXlFJ>A=DKH1RT_>S#&Jw_RgKtlXVXZfOKEl1DZ z2hg0oPhs4oJ~75O0UHUGVXhv~;z%k+%j*S3JFX|Rz^~Qy7QdEId?zsaXYgS7Qm%)c z1t&mQSR5w+CrQfKc&@~E^>i^WMzC}#8C#qMo(SvYC>h&5P8pk{ey?R`0b4T1LE{*; zcOESymX6D=uDU9aiz7JC41Ll?*i4j5L9jkLk}0V>7iN?!G0tLr&wuh0_X=Ce9^=*BI}h*Nja5SXHG8>RFjxp2<`K2W zNyp^)Z>(`p{$54-`}hrhj_YH9V!gOeySxt%y*5?LEJ%WqmZ!)>_|`m0PfP_4dm$ zT5WHq4PDC861uNgP{%G2x|EHC6fZtEJe}Ajc9D;=8hr)GDCva-b%lr;>MjeQN;MVX z6SU{af?YJdvtSpqz$E8oh=EiKiLTXvKTIfyln7dxfsh9YUt~na5jcTxiCCxcr+3th zbyk=4tnI~;ha3A^63wlfZ~P+!!%IGuZid@ux>{EcM9ZURHTO2w#yj?Z{^X~CN2S1D zR+!B9?4r<=+DS;oOz0IkO_-t&n3y)p^|4ft7n4Q2I8PtmNh1R50MTH{w#){H-Uo6(s3uF<&XiGv59*h8!rvl4bN28nCAsTBLd*>YbbP2uNQ1x^FU zYdt%x-Eaxl+W!nd%QH|3*fLYLa)C1-%UtpdSUJSu1u&gTBB)0o#T&mk#Ty^x3S*~n z#G9)Q9z1zZiU*z)g?dvS)ClxoD*!NC zd=&PHnopUaT8qR!Svsv8r*tRBe~VA`^`vHU+>-9(^;){)r}}zI0`huGx*LXchyLJd zT=PPEK3*x^rQV0SD@U}SNM5g{yVUC`-O1-#I_)sQJ7GBXJBSyqml-pg1-7VtukklfLT#1Y|7-Oywj(?!I3L+Xxyioo|+ld9$ThyV3 zbP{+XJ=heFHwDv=`$}5stD4Gl!ucs4bhDsr*|yF?2<$5p!%g9E({RH0d~#Rkn(_XM zlIn1Ac2T~ptW#WF67MQaPm9l7wA8r6-f?)9yuSw|eF8oU?Ua<+&|wW2vKca4wPzcP zw#v?v))`f9HBDb!5YxpqNm_`wj91QkL1vVf3ZyPVVPPkDV6UOW+zK_;(Aapew63sg z`|{=6yXGzZ@OiP;^yJ+$7tYkx;g`MA%?>&2RU0RVxgy9_97)AJdA*dw^!0>*L$l!b z6eKr$wH)TWzATOLClXhaq;wYKg$-1W|MfKE|C2Jl#lFvftMNk6mubB&ATj>o{&HNO z!PIe{L5}#m)*00Ik!Q`iJ_Gk(BWOa8xZa`(a-6(Yj=!Rwn}M^uMx14iYk11*`CNIu z_1yXQ=hHcVInFaK?_|D~YQYH_+OL94C#E;}(sQ&2(!J

    O71`F9tlY3QEf)`R2EDM98;x|V0!Uc^Vcl?h2cvXvCq8-qCr|#x z$jm(U+97l1Jy?fmla=i3T`?Kmsb09{7}@S&?%gZ6veO%5iS{sZJ9Fbr>44QmfX%_fwKs8WZYwN z7paA)6^KkH*bD{rkhQ7!H&p;r#OTM&UxRP8u)m#0#mlithBb3_lywZGmcX3GGm7wx z>SO?RL>;3N$YHWeToGO)0Ebnqc-R~C)x zTRb&70i@rI#g>Y_2}7OvFnP4q*Nug!4M3Q$0ejVIk$S)M_ORa;*I9#C83bHIuge`6 z5Wbm<_=dH?pT?UX;Rp4|*@R1c%oI^betSB>xGhr;+$6-bEiCWW*SoIfk}C% zj=-*w2J#|$trY?d;^3-<`iZfW6lXMLZr=En6IX$=c;f(4=9tH9!Me0l$Ko%A01=G3_dHr)*uF5gaP{P zmoW~9u%GrwELBRs7nM$Sc#LNwJbwH4LDzf4mpi7;(%C+9ca7sDdQBOW2~@g8a3;V z##UA?>t5V7dClRvn)dFF$+G2%gX<4m+}GAQd}U5Y`*f_Pwko4yw|hJq|y z(F^y(imS4H&s;8knQ32sud(suYhQkE@-E=Bn2#4yv{?>(_Iba6-`u-(m}ed48D?c4 zCOuQPw(#0DPgk~%P8-LeBO2?Hs-*80-7ArF4;gOU&WrE~HkdnDf*mXo6pkgpSz*`| z2~?o4*g~BF?Z8*T&(K^b7+W{D_L6rU2-JnjVuf9O({)|JmFqxezVVHRs!G#+=@m7* zW~1?UKZjL@PQ3@QM23~&$G`mqd;FJPc>Ma|FdlsdjOP^Gdw2{`QB9H>QhXcKAU=<3)`rdgkl0PvjwtHH(XYR%Qr5XI5e>+8vjN-ildR}r?066ITzt@siI1a@gC>9h*`9S&EK^UD3j>s!MCByIA-94|qBv5ljP5FQRWL2Pz3Y z7}i-<=%yd$l4q1P8Bgc8{i-Qa4v+2{4DgW3Y7hqgVmyIW&XAdFs*V?quJP9NvWdkX zpKI)F@1C3cK~?QN4}7*UURC*(ldoZp@HC+JFd-!L(NqY%K4o;(M9>7t>NvrwPr`#Q zffcPgun+&8{39T>&G;yPFcHk8279#$Gs*XyPkAfVEAaYzrTB-2=fayu3Qhk2H!(kD z6S)yY0A%0eNs zz{6e*P;L*S1{_O5FQ9A5K<>#^JKp2*h1IdE3>Eu zu*-_1%2x}74dF>r9}5v-tq?g%Aovq22mZpSiX~EilZ-|<1X35s68v=+jaqB`%w5rV zJUVE!U38I|W-oJVEM66leb)E{5Xtmx$4W`{xzgRVTUovgdJc8mvTJ>MIgIpk%$|D_ z!jwa{40W1`$D(>?w$HuOnso9nf8x$u;+V0uF@|Rxa(xhTeS~?i1t80;XkpQaGn81i zC^{=7%Pe5jtNBK@%F0HotZa{{nVgR|{6rK9yoQ$m??6Jw4Ipsevv1Q%$kX zzA39{2G36&*4m4;mcb7CPBsRzdQCTDXLJ>GCGToPQ`Q+hp!N=krkJ1><+TZqfn0#Y zMNlreHdz{tYBQ^YNZD6r1~T}S`Wbyv!-#m3%XCzK%`*{aQDqwMXn^0sJ9EJWGijyG zLy4BLreI0acvF5T-|xpS^_mmzJ!|B7Gwqp?4V@(wBm0&w-#1dRJ-ebkzAxThk!`;r zL}0%b9DuYKXt`iSxGHD#f)8t`Ly0Yz?=k8wa)?=*fj!}>`aKumLL zyhXlELDl|hxyZRZY5AbNQxZseuSAbNvCuRuv{ad35jbw`CT%v#bsd~GK9>B!E$u6N zDk^$bwkLmSc$?eWn&%KE{;}%bRqgGodaL(0G_^K0d>1QNgBjPuQ{cmCA(uLgzw@zz zGg)l(yxkTXoKpv2`;e|zR0S>qfMiW9RxI|}kWo^DeuAc2 zGX5CG$!AEO0G$_r{igtGp$6{6n~U%x&ihSrl+FA2vE+zUwGhn(xRN*0@ocGFl>cGb zVO?}6UY$AJMO7s^#{Q+3Cm*=nIDBblVQKz@2SXF*T)qCwC+|rnZ@tz0#rZ3aZkq@L zej+zQzz?z+;0H@5xIE1}Pn_1qqgSW)T@Sdzs!~*jH)rFa;zJ<~lcJ)$6K^gOe^4nV zRymD6mZ^t)yHNF^XFpAC^pP@7k;CXiY59+frmpDEjz=qNv$`)HTXba6*u~vhwUyC$ zcK;Pqi;fs=$!{e)TK(x6O|8FAe&2}m=MODS8R`DkjwCEPOAQQs1=%DPnRjU&dRlV(mD=56B*wqM1A7~zeV z#aB=5>>KXv-?ejBPfz<)`Rb+%*B&}n67Q^v^r1HN^TE^Fa`ePp zA?Mn3qd1o~?##30&|+NzLmVwP0y|5DO-EVfoHiYzY9_A}TP$rlg3LgmE$Z}IHb~2+ z6NpV5-+ATr2Lm;wrP09Dz)WLL@ur=O<^G{jlRQ-)OHcPj>pyX@q5a#*?_kAQu)Z26Yl^$h zu9_^YD9SS4cHCTb?3^3+j1_ksDq6hx>a(6ZIW4RY*b7OU8>Rk_zY(zvS`BFzdnn>= z5sxb)Zsp!FqWMhL3B3{*Ql*d@%sO@?h}no-M=_g-_`4LJ zBYp_8lkr4h{5^@;1w5N6#H7}eRL|D4bA?H1M55YHoM1S*Y^Y%(#*1ng_`J8X2qr0_ zg}2GL>~Q$ycU_$D#?CqZLQZ9ETh-=+gJxm!cSkQb3Qj&0Z7E}Xdg-YjVV=)pUZs#y z&}Y8XmQtjbMtW;REG#pPM1EgB4-3sn=Lqo&Zw~Q|v^M!bbm8-&nG(${OFKxCzGUV&6sx)<{9>!O9V`{P`f<9>PYK}YpTX?X9>$M z_Jrd1HDXWj<___Ox-CzAoiZZ{Qw4*JdYJJLGj2`~k2dwM?J1-1ekv=s zVrb|1e}2EACz6+yX>7pZhqVAR?h%kZz1>1j&_#z`nP91Q3xayS-J<3&!fy|sdXrjo{4LZUC>>4(^KshV)Nmzk(;mHRAUNC*2~A{!-JE$ z`O?1en`HL|8}Q%A9>+rN`a8gh^X4&^VmO*pvG(CKo(4EVOdGm()B3-`*7s>8nkEb(konH`%Z2(&n;nv&YFxZ5UkcDf{y}l z)GrwVE)8Au6@#5=TR=KcyXJ7$)_wc7e(ctkwzig9qx~@Wtys@&L-TlZ!z;7o9JtkT z>;W|-uIX$N4y!*Rv#v8wzY@)N-`qT%HjCxQZz9B#zfBV4S6VZ)A#Qk@Ac->nzTUH* zbCWf>Em2oKe*XLBUkH@3IL}g(Amdpd`NT9Dw z1f%is_KNmxZ{PH(M*-s+tYQGGpdI3^^X(8i>i={sRxePS9l(XCeCQREg=dPE&_G12 zmFp*~qWOXED5k~nPOX~3LO7q+Li5Z8%n#Q$kF|u&;lqcAy&=49pKK16G*7h_gbFe; z@JqesR4zTXJ^2ha@B3RWo34zmyWzn88`jm#W=Hy4f85$1$+q7R62LZUvtbwoz@e&@ z{fTWBS?|HxS*2v^g=>PZ7OtfaR%Ev%kZLeQdI51ifPg22U@1~1N@)Bm6Ci+GB7Nr~ z$wm11ECU4W4+BQc&|rQ|c+;lJ?v?FE#_?r)Lfwhw#(_gyw;nopd1XbKFMaP>P}{2@ zzLz}N7B$yyXxRX6EaPq12gCq3_IdCB3tp^o`f1hp7u2|n$Kmy+y#BB9dND4pm*Zbh z_gWJbTr)C-JR~BEl^V7N08_!&EIICFWt0 zUafN`;s_}h7((7G_Z9JkAt&TW0pSk?N21Bx>DmTRaX}F-QEk|jC?`xi~$s>C-C z3dGr{-kF`-xCkB*q_r1ST>|Q~S+G$gT*F3F6B$Hj0Riks z94g`Q{|uI_?7Vm*?Yt$h^Md74z`lkbQzFdAn`$x2JR1gZ5UHepK{kPq4n0v8)yM6% zo2we51H!nweE_}KcI5T64#4s|Hn?bU!PfG9IhKWYvad7NIMu&pV5&LV(=!3+$ao%{ zClk63&mVzcjf*%5Ic~*C_~8LM2RNMYe2FH#dQStEX+g(TFkSI(4K7tZQ4c5ruFb?L z<~Y)8Eo)IL%v6R^zqA`mZG)kfG>x%*A`>M1DsLu?IG}0>A(Fl^^s*LLfJfuNB;Z(z zikKf*QXM8DS6mRFj8?k{{yA-EP;m5|=kagB(4Y;k5SlVFh)^z*P=+^+xYh$`GGeIN za~FHFwRl<`&{S3<4J(anGPE((Y6L{0Kq=%+@x~D`WW@!E18GMK(R^XW5lP2_Wpg4J zWB5!}g8{f20b(j~O#oZSDx~we0Yp&SetPNR(?<~PIO|A8{;D&?5RI(MIu1B31rKBo zhiuPs27#q|Ko#ZG@s>_KVSedczgkCzP_?De6ix+nTllE)wU4sZf>|~@d-CV(u^{6- zxN9<2$T}NhT<{P%P9n%%me)UJUw^L}7qLa+`bvzbn(SN^cAx&fQpOz7JWgw}b(UOS zTUT&h3KN zSE|!LWK1AE>!cLo3@|28EYLO_bNv{-SRNZNOR#HNC>RDrLwXhH1a)HRYh~34S(uog zMS$?V3Ibs32o-|ZBO?YaYh5t*?Y2uVZQB&P;Of1BSZQTV-lCp?cyG}}?WX4ljH5@t z@jz91x-YFFa^CJp!wnZ;GOUI&0*I6`wl)NT)7go_<(+m#Jt#V=$)*lOu=G1_X&6$H zOcD!A*n}m0xC5UkLr)l3fXjddGEgBKuaaIe(~WLR%eTGY%HMX?$+5%NomWsBu88G# z^iI|FmQ0K>{sz%!m1T%NtE$>F8*O>}bC`(%E9F|Oxf0w1{*!>>9u%}ek8Md-;kBlF zt^&+XNtQX0Jmjo37EmZ3m(Kb)rVlw0OOp+|$RcF8J0*L@S<~Dm44QC4NsW+^u_|&+ zd!vl@?1F5cQCYWo&z{vct;!6P1p=LkfN@8(wl*3+r=Vf@?9qR^ecM@QAyA@c=EBuI z1%cx2wTUW3h7$X&2$y`%t<=a;qb6LkrRz92lXQjnrRf{3@v`w4T!r$S=UV3+Z{#t^ z#SZ5RFwnD)xEL&6reg|y75L5GDlEi>=wJ~=HY&now%;S-$QTfeNHXjn;}f`lEPDDO z@>wf7fg1c7q7qyyau$6PE7Be^dei{3k~nNixgo_EuN z|2pxju9dn(XD#m#6|j3^r6L-Dwm`LI+1N4|25CCFgQK8aa_=lfK1dAPeTE|v(fV4}otO^sdTS&<{1nC65Uv!5t8W<{J*#$I{y`l)_@|I}Nb1d)02p@*J4`P$dGKh|6Vo=Yh1r+Qdi$IFGBE=fVL3Nbn6 zp-Xv?ndy`S`N~K$&X8>sLeQM;NrD_=p4VMx&-A+M=C*CKX1nbmX3Kaua`B+&9n2I< z^}DH~t|6xgxgKyya86x^F|kZ@qpdenMSo`Cy_9v>c#?(5sMN@+&=gjJz`~+W2KDJ412ENxmnQrpckg35k25sSUw~znWrJr9M<4=B=Dr)vUZbf zw8@nP#d+h(!eV8r)^$qoBp3Je_VlvpMXNTb zDRQPov}>5Ha;Laa7#Ce+M1(ahT!>c3&M^Zc+q3C^7p-pbAW989JX(67Srmd3I1%H| zKX&9}GQ#%cYd74$8STbQ*}KyR?A3o`<_2THfnyOlbM{gEs<@6)4LZDnE)|L{CGg`j z<*3#{msHq^*7{tg1uZ7wfKzLzq4B%MW1FqUAcO-U80Zwi4}0L00qLY1oX2rI5B>=l z+HwUVQqEzY3O1SyLT3o!TIRoka5$Q~(fS72!?tDxMO`eb$(y6&Yigr6N8?vCdn23* z05_~3wM{|5@i+Yr;&1FF|JJ!#|0Dhe)KGbunbB2Pn9j(Sh3zK@VkRxrl> zuM^(~hcxq

    6hv@Ba!;6z+o@Ujqz3y=_$6ol}S!0Ohug21I04?3f6xx;2?Za21{c zdV~BAO0;usNlVcW{S@s>ku;DlOHxXUv>*gK-Sb5ZJdGa}osk0riTa}rZ$`u)R>@7~ zjOJjvGz=8M7AdT!Ob_lp&LFV+?mNE4xY1}qAreuNgfpHxwM_VdYCKo-WZC#xLk~L< z&J`Nv6y<9KH=>_`F>=!I9tJHe5=aM0$`9Euj2O`{))5AFg4VEvAVfr(4EaVDFM`-1 z4XLdrK zNjjsMzXmQVAXAIuD2qO_V~R{#E)ucy!zSb`Cbo;hLb9;4uq}569~fHVa6;X1-E}uO zoK#DOo-`UW9bTwMKZSD5+C`OqfGfrsG&k{dp&z01bjfi>A<1zSg>>q_;d8zO_?+gf5Okbfj2Zdd4+)~QGIX{pe?bxJB=m+xi51B(JO{Y9RXEvP@SILVL zGSVX> z)ba0O{9PtsBje>>CTQ$&(tSDp>y+^$_V~}$xQMS4d;-~9fbp-A{J`)G0LF-{fp7@k zcp7`A#%E>a(*r4t!)?z*a+o;(uxAp*(t%>MUg8gJ%ETW}WAsPj6GdHTEjuEY%+2Q4mX+1y4G)Yr_7$$K-eI&Rp9N%I zc+Y!`+Ebo*oiE*2oA~&_#G>ckLoC8S^DMxp%=5|9T1GW|T(LS@QdeZsZ5bt{ORR=-forQYne-R0F6Y_Iy`X}tN7_`@nw zMY5XJcNCF4_0wo^iJ1+*3n>WT`sCp06W9T`t;eCYV`hY;4s^5Bv(h|oS6;lcf; zUG>xRv%a)lRarmuqFn)UF4~|Ct@HdOr=<-RIbawtOAS)6tx%LVOQHruY@h~1WK=zL zt`GmYVyX<|g2RU|I2<|qyz|a}@7oitt%;z~F2i0BM4y5H*mB5=f_voBNRP+9 zF==4DaZ4-Lt|Bib_pq(4q>I_W0GeK@?Q-9x#np-%V~_&H8I%J(c9T*4@5gRJlxFe; zqxQU$pCVlYHDRDZ1bERufY|~;*(-phXiv<|ome`U{O`d*BV%ys(m~ND zfHi0zyX&sU_MW>tCkIuVN4&ewJ(qP&?RahTV}j=|!ntL%S&VXh7-BlxXj^iX>)h&9 z&;iGg5rUX(Ijr8XRELzFVqh}Do{A!&4q2WN4?@rv236z0tg|0Wh3?`~v|;9$ulWA= zIU28sO1h#~%hc|?n<@E(fpe2yN;uPEuYT^si#<+RUyi?=GLE`{YW$ZeFdjWY=bx>($mEe?y>Kr<` zQ|*~>@cjBG?_E3MA6<9jPfnb;_QWaUkvng?>CWWTp7+0h4{w@*9o-6Q6!d(KlJbH! zO+6*0sp$ci6z4SkF>{!vzc*sjw1{p{5?wMR(AraiGYO(AMtGQmAm>4)Z9w$Mhwal| zGz>E_z8ZKtv8CWmc+Q zWfB-=7BJMCYDi1Mb+i+2F2WDPileZ{2(a?jxvCIqZM^dD(yv88v2 zH#B=hz=%nTo+(@$mlj$^;cb9%&nLsznBHO58NWswJh>VDY&3G6?! zQnG33@lYagoLg6{wTtZO{g*PNRHK<6!9C5Ed-{g*1UiMx4Q>l->+kMHGRxgomcaC_ znD=~*PyEgGQ3G_WPxO8ebcwwmc;=TOK7*nr;sFc6LfD`V_|3w@!jh%9t3KvV`I&N7L?Sv5XVLKzFzLyyx$-9A_w(MYh z5EJow-eXL_-v2mGRVmaD(LYIA$+S~WSMPTnDz)@t2BGGl7Os>iibRjaGR#|g*2^Fp zMbRP-qN=hB+VYUt2Ifxpl0=GHF+m;3?!eMCg#5nvv>?}E%%(o zUDym2Ru)$!`bIj!4YBInR?hd`z=KCI-xkk5 z(*)V-X>&l$71yp>Y+}B$#DibJ3l(BjGPcfbqXFlOq;D4krI{LzFf=H8Kt1C4(|GeE z{Lo%Y9B%@akb-$UO?do+o^q_a7Wc+#?fN=)lC4!Cjdhh(S3zaqGb*afQ6Z-(zb`!6 zHNL7PQrEg+s=6&!mNk(Rk5p8}s%p)~l7h5AFcj>njP|s|8q?E!&2@_ga*E3GJ403B zVsEHuDGt5oChX&X2yDvp>?ca(tKtzd(a6Fp7Z=ueMI`hnk1^xLa|Nu>pTr!n}c_Z?WYXp?W}tg&p#@*n+TVu?}o4(!^k*tI7xyBg0C z*1Wg9AA(;*=jWNIZ4|o}1!Rfu{F)`iR#3M*#Q|)EPxN$TC=VJE;<7@#GCq#>vIo+OZj#}J)hhM6TS*z z1#Mv|l84n&G873e#C}w1$^@OJ6XiWas(Cw9Hg&v6p^Ubrt4r%U%dV~)Y^w12vf_!3 z@wL;7tIEr&tBi>?6N$--tGAW zVbY_3Fk8@9Yh7J7@b5Yz6Ek`TNwE9I}jxi#hNeQ_`$l$khNOo znZu8lnX5PB%?I&A1-?z3Xg~fUL6HR;_)hLeJ)U841zA`FiYA$ZDt?$+AuD9l0I?s< zOI9_;D(aSuk1wgKh&8TSQdVAGCVna_%F8P%jftVwSW9MFRzswzx3?+Mkd>C%5^EiL zv7{)os6_m_JyeukTvCFX>L^;{xdp)d5@=u$=V_LLm^@Fk(K)kxTsA+&7ICh~b&$9t z;gvh5MR^L`$ zT~*#+ZMFdA+6p>0EHZ<&BS5${dj+-;?SKvMIrTT=tH#kc#o5ai%t>=|cF3_}4>e~; zF&sI2%hK^?IlJ$57(33;hrmXjGA=$NXJ2>)Z-%qOnm&)Sr|@;m;W0q!Krk- zQNE78W^b0SgR93w3vzYfz@wOLi|3}(a&$pv1YlPi~% z2n=D*To)&o99(kq@^at8jC@>k@7py`C%)Z+9r_aJ-W%iO8gh!0i*tS^PHx2^Xii@D zzv1LRJp&^LC;y-^Ydi?K34>0t&boE$atAlv4d(9na?PalkgON+ym856$Z zNK4h=Sblk3$>5!*JjUnNm)3^7fuiz~vOpx9-`^OFMXK|gNARo<0~0=r88Za7PZ6!N~ItqSc=-;m2)zY#eeYX5VYq)QiY!@L}nQo>yDWTwk7mqbpG0p|1|(ME*8FR^B-3`#v%NTm)crJHJ!(bzMT zzc{#8;*P}|quHQrxdk`*d14`r1=%rQKl z2F`q1Xw)MzDVdH~OQUw#W7Kjmd+AO#Fk7oLgr!o)jO_;}49~@z%(slsO(fxW@_If7 zNZo@IN9$;}=hA;nrxq})7w{>A-G^b9QlCDPek^rxZ8d#;t~y^o9$A7C(6yt3gQK-5 z2)$$^T*k7|W#Q6t0J*%}nC)$>iD#r`#H$jWorx;(wx+T7sglBsKuJj;qp;-WP+>+< zC{&bDNd1_n^mBj(u?CjnTpMc`i>-TUpU$!%V9!-aO!4DYT37u_AEtS&L>vN8&Us3) z$Oud|2Rxy%W<=sq1`vm9GtSpoqtNKn0&fHck)uMsdeGSTrZ{TYmc6xPN~^cUkBZd( zdX$6hAJL6Z!%=;&!%%S={vAi+v&L$v8=r=w>J@0u5j6*E1+ULhd)*v$#A2v&4xa{8 z&%{sl9CTn5%PVjW3|TxgKOHfg7VkI4Pp41EPVuY{0}non8J~%t>KQxt{mt=HyHxQ1 zo}c<&kDcP20vGNVxNt^ps%WHMpT-LALzG3*^ZVaP`M&-6X`cV0^?mWV`}ywAQ}3VpIoJPO%Jbcyr^4r@ zl;`vN-%a_x{rPFu|6|wpQ}6$il+WGpN&VdYeD~-7nKD27^V7`lr+hx>LLNTfWIhLi z(o3J0>{AH|T~t41a)C0B>zq$#evOwJd@qufdy7IwEbr2>0sr{zhmya)(fC>Pu}2>@ zZcLn9$ETDat7#n3k8t$U{UYOn5Sdiu?JYM#-XedtQS!_)yY9btm-yXbv>J^=$^S9@ zL&;~8-yJgi$^XG!ay&=T2XPE@4lyuJ>YtuRFl|OIr!`?NAv8trMOs(FUv2mke^@fv zYHTzj$rm>ot&>ZBW{xeHOr)VzOIiYd;f_nN`T*vY=Ruoi)GQEck)@xwJnA}R51Ny| z4P+hxIK7E{bZa*Q&N~|~i3cZVjQiz-34)hYg3ofrJm?U{_Kp#BUF%ICn8_a+ zF+%<&&PP2jmw112Mn9_o zid)W~r(^B3Wk4>+JyCr()QedH^%5u#@-s0jPLsDdOFV%$luy7Np;L)i!2(Y`PeW=4 zFU`6i0aC+UB0(V#8{upLfSIUmm}1L*bKtl_?T5vdp(*SKZR|edb2P>+^c*}X z{6;>f>%Qi4ao^-yjbO@s|90SJecxQq zTFiH=oUaXk=X^=iu$Rmam1izjPWPJRuhngP#B}v-4Fp`Q#cb7G(-)epbywV1-u10= zvcER2Nx7>Af~+Rb=sbZd_FbWekv2PVB@;k#9&QHT11-hz-Xtb#@8R#|W6v?Of;xT4c@*MdXNFzC??nCBv8o23y(Byh2YsK zpJ7aVhHLm4X6Ny|%iL_XK{5q~g`kRx3Sf`GYL`m+)q?$UW)g#+UD6IF(1Y!7U-E3q zA7)2`)oswmuy%%e2;1f(;H502A!wS!)-D!3R56FlU8n?&Bfm%& zk1Fe2v1rkX&awj??d=`%xkiq7*4x_F4%E~PtZmE7=%1eMzgis>1ajiZ>#ZlJ>n9iE z$?{w)j8<_3h;_84AfNmW@nk;mfc5y4CtuCyW#n1Uf1CYek7o?~eGGn9tT|%&Ss%d} zo44OcaS#EP-Kx_~6Zj9wqlDtVU|nS(P+1pjSvy=?JG{1KpL~LuEhd%~ij|heLfLyu zJ7zjMmUWcM$q9UOJm1jICq*k4Fqa&ZZg8>aAZq&t(N|{xJU|?|O9W{5Sr4`*q9!2a zkWxGoPcGe?Ehl0fN5d0_tT2jG-|AV*RIfHqyTfj(6fJFGcZT3HM+BS++Fm~1Mey!n zL>3sLaOs1dmNtu1S9z&r$oY%1JDj~}eBOn$M8U(&;T;2JsG_4bSif|3X!zWj`ib!+ zi`vRsM{4Vao5Rg*p)~(q^WnYzw8E0Ei48q7m#%ASUVZV@mUs1xHk?1+xvHn4vTtqY z#Cc6Yb6|%th*_kpt7_i5TIfG-anxK^*m%80~r2mZ^(ZH#e=jbf#y+L{~{6V1QG4>W4;_dCXV^{K$n|Rn)R^x-xz|_)t3Iytyo~D(+1F*ct~+!B*BM#K4;!mcWz_2lGRPEdm5BjdGg={# z^D#XkYjV-uP2Jx_KMm1K}VL*HZNsznel7F5yO%! z=&r2S0-l2*R%@Zd$B$Q9l~_+#UMgg(7_Bw@iC%yG*Tnx=H~&#mjAHG*V(o9_sS+~( z=u;1!;6LmEAo*QD@~wD2pPJ7TJLA#u~tct3ag5FImeM30Qs88bsMg>48!fPge zn07%wRUTe*X;Z;^WgQdIcuVYySoEYh_`-htmv+|+mr3-c(#?oZjfpHDx5&xQ!=J#zo~$}XRL1w`IB9srQ|3adr2@C~a)aaI;y@U`gB zpH#skfKtQ2%V9=L_^G{WIVDl~MdR z_?5Kpd4>1`UfaF#$XN!g4; z$?r@8IZocDsG*>m3xC(5p{d_JbmAmDfr2u=f#(*9=e}&bH~E(n^0C%84*|Lh&DeTs z$~VPBLFGxkal*tm)AU-sSSyt}i#I?VEcc+T^mE52(z7uyBy2ks-jOLV7~oOTqoUS%Wb zWW^m|F*3Vv_WnQi-UU3a<2n;WHz-piMZGCXq8^PF1$B!TAYOa{Y(XSQh@|*3L5Y+p z8g2j=K#Psr&F|)P&LoO6iM7r+i6`@o;>?%z>`c5#){bmPc}$XTJa)2KJ5TS# z&LmoUCvp;h_UAlyydIJJ|L0WQTes05DM$7Df0<%J=}{mEU!69KTylkG|0-?{ZSyaJy??yb>haUHRSScI92$E;SJu zA8ZXFD~nJ3$DX&$67JoHZh|4k1U7RYus7GSn)~LYj^sEe>iA_&WHTF4$C|b+ z2~Q=r^%4&51R|}(dI`@`)DfiLM8^LQ_hk)Km~3vHkFkl!`^k??twEjim?2)t)S1%y zgql!amUK*Rfzj1|QVY95Tv@mTs=tR`rd1?hTB)Cks~hMiF$c!5azEFgpQKxE!n;i$E@&WQk5$cSfk+k2646aMN^G~D}~BS^iw=Z#->D+B?I)< z!hED+&k59`v%(sbvK;IoKFXOvO|@d0(_v+nv!xlJ8qGvaBzrHkmXK=F`_0r;V-DmT zek4_bj1k~!AO^W83hYqpSc@*Ox(zs3p(d>5@k|Sv&W;P_?CYX^GxVGpj_|Vz;tn7*-3Bmac^x>PA7@A3edW?H*T|JsIa<;ovIdm=CR$$eR)KZ$&m*+%BhQ$_81 zUCdkzw=qmjI>smnvIjfcbPi~1+f1LXyu>+xUj6cmiPo-#wPpR1Nue#Z#F}t6qemKD z;jI{xwa{+A^JBtRuKYbT%kRpVNNWM-#&>E=4A$Z?G5Xs&?f|vx)Rw+na$13s`Js$; zR%pijm5QRu4Vf|t*#WtRbCp(XZ5e$v&6~Bc$ZOG_4pTyUNPCb~*5hY;_azz3v2ZM=nMqVP?v*9Mqqqv@5FQ4wiY4$ zmI+0=F=dQFE6Rwm^{ka8a9oQk#?8iz#7f-j&8ln6;T2}pn{SOei-Y4>Gm1F=Tg!um zx>O4j_2s+4gX1<=;=x$UcBGp1azKWF%xU4$1I-nlwYa+4i?wwVbZT&j@4Q00TyNGB z&_dc+Xu5c^`dVuTx;F4AeA`d|_>ZSN{J2_#Pz0Re{yOT^wSblCRNJ0&T%p!=spWOj zm5(}8Yp=c!s>Ekt&#!KKloC+&V00A~w8x%$PWpJ24O7H;-qWAC@>Tqg^|o}|>!_>x zrs{$xgs~D_g@bS0R+WbK{3%#k?-!^ZPOLoHmE4;|cU757wgK&!D~htJ_8- zen>v{t*gZt*gnN$%=1jlccC94Y@gb-uVORAm)I3Q@nKV~tsJp2@Ut2>KA zYJBi{iMV)#Ex|VP(AfI{{m;=T-z?sIP&4RIXa-U0k%cDMhrdI7sod2icBR3-tY;gl z(e;5p1kt<%ujm(rzCkm_f)(#Cd=7EF>Y-E5ujK>|ZOf6X8#+MU`(D3tn0{8#s)S}Z z^8l-%864nZXojz2?Him0P%{Ltc|6rM#8X6dT-D2ozYy!6+6Q;a;TO@`AELFB`_f-W zC&Wtrl=%JyGY-wX?Z#+ER|G&VvZ4T*NpF4wAHD!BVv=#@3ufTEvzVb@H}+jNW2Rm3 zLh+yFT)J{t&3WMFBu-WaPm($fW~>xe=CPKTxmlnFU0^)9-peIpsurLk(2jmOEw&O= z(U6s{!>>)ZNH|$y{sdSAqmIO9R5xdPYaV51 zIie}m!%e@4P@G{?>CNyZZzg>hX~T7TV02Y9a~KjLGpE^$ugUB&p`yWN9{1)Od>bzR{=?4%AR<=nH0GmedAohM>++kWc+Ptj~gG!$JPM1 z>Tl(|y$!fEQ8cj<{0P;LD=!I!g0nGLCjE61sd6{zw~^KB=t;Af)sYn`L+o-T%5n_l zr8EGDU8_}D`H0!4l3d*bDk8~8*>jPR>&SvE&lX;-k$<`(VM7kIe|B}k%1Pig{VzGY zArRODl?Z}W(+gtt847b755vJ>WxUEfr$lSrA96mLHY}*pVm+>uO^o@V%UmVJqe873 z14VHGzqUwI!Ku)z@EhU8q$lx)Sx!ua)X)=MiXbfZfR_p{+MooS8_|#f_kY3+xe(+M0?2-1tYErJ}-Rpb?b9ep#t1GGDUE^D#ESK z4Xq3jHEffnb+g>HZ4!ofz96C|qFRBX1M>z@+{C^L!B#18uDld=nB#4vr&1I6!Ch?! zc}ko{t^k5N%$!-y57;s}4?}d0eNSIL-LtQA|3u*mx4;PpW+aQ$=YDSh^>Kw3r)e-6@eZ7FDqn5Ehbiw!t>ydK zEUSW`c&F6MCQzm7D~y4V8rR1V-ijI-Uuz=!5uGX(BEa{K{?t(i!u06~#?(6jBlI7Q zK9L&vJu=4jIej)Y-XZb1=rm$>??@euVQhcp%FjeFqDsV@UwvEpbo&X+O^LoV@hnzu zQf_QOxM{lgu{S>ZSo?{mzV$6^Bx-t#CsRuljJ1_;@(x0{w)Lk^^R16Qwd$s)oOf=c zMS6>co%*B_erOWl;Z>9H%{l0UrlQh)Z;l@9rH zrQ@m8pW%vwv91|+ruGL2XTt+eO?ZEM*4(g9Gvseg4_2MNQh#Km?mDZ;JW(x#gBBm*LP}U_J0*_7BRu+b#7{6JM}sFYhf*G9 z9w}~}6YY#I;dP`>zwvKS@B-UwgLZWK>OPcWv^B#H2y0I-B|ppk3VD|)^%qTbK~hPX z`>ya!sj2O~O=Y0}N}2awx!0CSc}-<3OjrwzVM_7SD6Jq*efGcoK?GC!{0gPg=l@%8 zRH~i(ELzpoe)qS2G%mF=t~4^7JzQ_+a5U?!Kd7fy`mz3vzp;_zD4+Vx>y%IZ=9MSh z^7Gd#KY!(i-16S_%7eU|@@=nOt32k{YbX%)w(ZBSQ~JkIATIs%bxJ>t0#X_@52~}J zBi;~WG6kx^RE=PN{OaphzLLJT{ZBB88?lLGYugZZoQ~m34CmVB+unnd4u7ic!)+hM z*~`Dv_W8Ci;n>!1VFTq|*zLImn+Zo!$5LlfGpTy&ds07~`ia!PPW^o9Rh$<32dO_x z{Z;D!YX4WioI0QSuc>cxTBXiIOu*QYE0hYkK4h+&&2_uE?lso~=K2nEEtzZCT;FZ3 z?={z#%=Kr?^%u?cW9IrPbNzjDea&3|(p{JGuJ1~^^mz9 zH`fVs4bAlj%=P`|`jh7RZ_V|i=K3q<`oEd$pP1{Po9j2A*`+?e^%JQt;rBK0DOu!w zjk{7_Ym=J z9@iyY=W%_Hx&I+t--r93!u12Ve#qQ^*xY{v*N-Cq*Kz$MuKxkoU&r-#%>C~{!0AEx z=FDw5G=F*erWNuZbMoCXk2?7~ob*N~y;7OCsvfs37f!cbx2=`Rtae~_`{LH)wzX0j zx2=`Rd^hV!eQv{Tw{76>)5{X6owu�gG#I{q(X#>UCTEO4X*K8mhMVl_(X}kjmKN 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

    KFt1-kYQ)J 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䅗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�jAQJ>GWIiRRYT@aZT0Xm{sU|Q$sYic*Q0&5 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 M?s*4$Lo_J2b=) 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∨gV0 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

    #53-)Jltiz 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ɬm)Q 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

    Ho4Nyls*Us<1{M1 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%0DA6Hr-w479A0s8Xb5d$Y1B7c>8I$onihuSNMQx zH{u0Fz+oq_MwEvYtG-ssBR>Ee}9HKPLgn%z~B=EqUCW_$t zaMIJq3|8{v?GNbHYa3f*Z%2s%-q|Pd#T5;^*^d51u_N{6CI*)*=s|vhxtmY(L42`A z1_-yx0JM_cc6x;-0~oBkxM;KhZH}W1VB2BZs?b|Aw-kW6sZ|P4?4$rY8NmECAW7s)R2d))#NLMtV1vXq z&9t=qxn+RtbIAaIom~Vtn*hMgpP{Xz0dFeXt!_=)$M|o9*M2?ndB=YzIsUIfC&8gJ z|1lZBvXLI~gY(M(mtBYqaN+_)0AcdD6{rn<;e&u;20B@dfRuP~a zoLH~bUXuZ0t(-U(ZQ^2W6HNxN;lb7>mVS3`89;NI&Of&du>JyM0Ot!50n~M}C1_VE z0bnnfz9fLY>eE{S!0ExN1Q2PH0Bqwwm-r)YrH%iE*73g(7^IC)=x(xNQXBvKDw%ZC zL_--g^#KJyY`}O%BRoz1Gqh8=1GShs{*!b7ov-F;XjT2nLx8O(5A+)C9VLP_eUAT; zJx2V(9@2pG*@yojJ;(cWow9#LhWG{5|?{{IN zf6j%B{(oM`;E&oBLoh6c>=~z!H)cGW$H@UuuLQ!2pETvg=F@$?4-#1VfcFV_KN8YW zoI(~I`aL-o>Xjf7t^WQj`5X92`Mw|Cr^?@ZXuqE#e{bL)Sj(^K1HNE^iK15i^$*eDFU0Q)(Hs9^0^VSNuOHqQ^Z|bu|69JN@=N+CKTN28q2YM%Bj1x(EwxXU zgfEQ4Q4#r5`;&gFclqHW7~gTW2=BuLd4A>7JlJ~vnu|q$sVyG0Io{f&9P<1kBQ8#_ z}sna{hk7(YM~>w@R%YNDsPR0lWcZh2*zl5gozomAT|Ax$ zmq#(3*bZBo7p=;*NEDWNo`X)`=B9_T^yyr0@Qv}!kEgTl#diCw`3YHa_bC2|TCyw) zdg$$F*FMW~K%q@dnUPt9LnQL!eY1V_h9YjzAGI&)gI;x{l6qi@+b~6^*QuE57hlBV z^`=~tAwM14Xo&1y@Gh}00y!RJmEs*S7qADCkYdF>?b_mjc`gr(iPsyr9+?^fV|=-} zexNAgxg)z@Ez~(RiMdTqy29>PNAlbvF|eM~9^5w~$99Hq`(>#8>0g4Wq&S8|4&=q@SUKVOo1Hs}wC2eIGvrEI~|b2dwY<0tS8Qa|$@ zzt4%NoyrFN?F0SEvS|U2R<@g^YzJMf&G@NmlhwUN)Lxbia#V|s=U2(HH_th(5<5RE z%jWl;`A(KCds;PXNAF#M(!+?OSWEXo>7?&nwB1moGp1PAu?|(j=t3Lwjfc1yAp6u1>8~Oc438^T1>)@Hc?^s2TuhZ z0CvzB_0wvZy$I|cucCqH^=P9nfre^km%H7`Da6YucgtDPfL_ZT`K!6}(K7q)@glHC z_SR+~%wT{J&s*rt$p*bE@|N`Gpii==H*%q}=NBM0Ur;=841T<4Go0=P43!Ofd)`8C zeUC9Uc9OgbCHE@Z+Dsm@Y#W|2hE|(DLaTi&;uQ>MY#XE>ST5;|zaH<% znn~~QjXeKP<(#n?V?t<*F~G#6ofJWONfjE6`c*9GRnU42H+$7ip!P@YK^u6~c2aw$ z8mBfoD#wKvP$tHp5L=nDeH?cC)x=ux1IxIe^%R5Jb?k=-$MV$CqRSpc?SUW(VhPFw zaR)g&9>g@#>RCc(ct#`mBG5)A+TQajMdB!7c{*kc_D`gZ6(hi3iTZYt|(2LI4mKdcw&063R!PhxDA#dJ6LF+QbFh&E)0t??Dfe9fPYVtznBmyJ=me>=R^ohj@3Bx9)S%9(t18Az*5YW?dV5VOW z%s5G`SkBj?Rf_6vIU1EMX z>I;>k-3&1yAu$H`rjX2$nVIF88tzn%X9tfRc8F($X|zfUoYjR=bb<|y_m(3~vjfpi zfdRDnWsmXy9Sa;5xHNc%sMrGt03@WzU4_d{#U8LT(|k%HU)c=WxvKZ6WtyA3ZA7yl zRmj_&RveKo%cyc`DM>^s>VehdWrdZ*q+^W)nW^X`!3#o$__1z~Fp_a1cgph8vK7;E zE5;NL$crti$;hl380{UA5FDfEngj-VCESobWL!>3$GEht35!amUNvx3%FN*zRRf}< z3P-1#a?_FwMlrAsf=Q3sV2n2Q+PgWO{Cd;v7Izpa!ALu2TbBE!qfTj73C0UGv4AdJ z`fU{(3=v5RH~iTqoe~qA5aAs?usSQFrYJUVK=GK0+-WPyN|#T`4NJ}qHHtw1k1whl zD2#@rv|LmA=)$Pz0aY2pXQqrAc-7RBMH8~p#&wkBj2n_|2v;Bwp(dL|Ek7x~0#kwS zlVZnNNVnuolL_*IY*!h0DZPog%&-^s@-#MI}FY)7|}-?ABz#or*;A&H|Y682jS$4WE>>)n+1yGSi`~dl9I$e;1|vHJoaz zu#_IHEq6Y)W@qhwYQAU!0fi4|tHf}e;)_j{Sf%P@K}%qe56;h_>d}!oh z4)+=~p5$_ne7qE%nV26N=v3zIV~h$*jtD9DiOU!)Mnt3)hQ~xl_lt=$#zhpQgab>r z0LE^GgyRaw{_999XNS>M!br>S$@>%>n1pl-MAV)0vrGJan*CftJ-i?(HbfY!#fbF$ zjQDy5fAxuJIiOv^9ue96MP(?cAwu=CQ0-?BC9FNe5vn!|=ElkhNkcjy%!Lrvj{YTE z+9)HmeU**~N44o&Pl}OlC1g>;<{>;KXIOAjp;2B#Ln58@$#fCfL$hNF6N1$1un0qx zXM((dGor8L^6!+l5c7u*1a=|UX)AVAisc&R1{`G=$aLw!fQ(L!f^Uq%HmP*(ExQ1g z%E&%Zg!@le`*oaE59cU9jKFqG8>4=A}nvNBifc8?&PQ2dBGw>-xzHXy=S5<98@n zQLBzB8hx)M0;l?^)QgC>rFnj`M2^ac3a<-ED$y$Qhk1qTr8AG-ndcR9;hGgu5pMDb zzzM>hqAcCX%{{Tw5R?=yf_!!E?)|BscZ(qYh}_pMQZ=t>TuRPfG(8~p1VAD1i00#J zQa6a8*YUeM%xV03U@45e9_Scr+RKkx$D72AfDeay0^I?yfCa#LDFDt(0dQUlfd4VJ z(x@F8f?CmzO#x`E04y*FKw|}#Oo0a&RJfL0BFlT&~-6Ax_1H1`Rq{ z-D0r565S&#K&L7Ujx_Gi)jw;?qS^#?c@2N8@283;oVDiP`t z+7Z?uxMI{+B`zYgAT*k4(9g>Ug^`S@Zn@*dpD`px`4yKcMLvn?!Op(E-r?>Uz6Ec( z1w;nK4-NEn_6vy(^VfU%cz9<7V6{5$k5T4FIa>&BGL7p1{3 zk;^c9QIv||GLJy$v*88kudNhU_Y9`qN2lMe+1Z|J20;oi&z&VIX(6xvZNgm6IcsmFugL`nzjhP zeHOA2b|tZUjJ2k{B}&;nz?@#Gw5DxA+Axg!dZo&mHbo3)&tMGKE90zb zonkEe5F@N!skWxIixKR7jCp#c#+r7m$Yytdr|XpoY8qA>JS+yWEs6nz+Kds=h1$f& z!l~C-BIy(%zBkqq@m3?QAX68RsSC)|1!U^Nbn2L>eSZ`wBxbtHzD9zAy7mrEMe+GD z11^t?i85pi%wMD!j6soE5&4lb2)AznKg+<+^va~}cQkw-gU#n!a2LHY*$Vp={0Vji zcJgsShe4+xPi4&`OIkcgE}&%%dh`*0+Ta6DBiS7;iJ2RG<_FCaeo4ur=b^NV&1q~Q zxQ||$V$FG{xd`W3ya;yWj+~{A44F7mT(mKgB+wZ3_H<~Flc#q`q;>;#FNeJ%)qDiq zpr0ylI8k+EAE(9lG)zDOr_B>-(LPGZg25GoH2jQk(hin;V>tBa#eOp#xi4ywhFbW8 z>*$rKS}lZmmKeg0DG$QaD}*g3j;f9aYXAX8Vs|+nMB#x3@*)HpwVl-AO%sLMkRls? zlO;mzNDkw~pE%aSd1x{bNd`0nbY>ptx+}FAAUPbPuSTNT^Q1&X(uh~m!1zF?VsAIU zfDqq^^qAmc-?+>{F2m+b7ehi5b3)_7{6c;8k#S*(;W_b!>tYW=J!h#+*Z*a0LTt4O zq4}&sZ4|JfzH4(u%fRx!YQu+Q95PvJvkSE`v0MI~wz0N^wQcrZVB27?Kug<1LNM^e za1seAI});YB!q-Wb{OF(f-^|dgdQ7&rtPcJ7QaAr;l3;1vN|q05*@o>exE34G#VnZ z!waICta!K{cu2>N&b?`r)}(3_XszWYHRT-SdrlgqF%!o*V3>)5tU<@tqR=Q3HB{$m zlJH5Ln25?BgcnPUJeU>qoYE%+Pk|3PWA$Vb*8PDc(>T+Gxu9e& zn=O%c8388&&Gn4%0-!v zn=U;k$imzp2JtbHUfkGf>SOSz1bmy&AizI$BxiI6XY@dIH;b{j%WseADRifSM5lB6yll_KtTeRH?`V9sh(iV~z7?=qOZmO=}m6F-@zs?@qu%U2= zcsq7~=BmxPbLZx622YqRhO*C14w_P}?Lc&sq3nVT{Y8p`AfUM<_xViy+B= z6Czp*X^}QdN+m_qoG7?V{1z5B#k)SC2oYQPCB+(5MQw0FwIr<%R(u z5$OGCuRc0$DI?PtXGBQV6B%x3@rl(Kpfy-v1P*lf@ecDf1{TKHKP;P5)O=b0Ta@jp z2_Qct#v0jmS>BvEd6!{|x*3|!pOg*2##%?K2Al)cs;65bB;umRPEaK^mikXvan5c5 zQMlFcVU1AD?pH$iTS_N-Un=Q2ty%`TtM?`(??6DqSj-`g_70_!>>a;~)BGxBGZ;4Z z$?a|L&|2DCN{{vpyceH7g+Q$@6?tYvWCux?5jh>xLojxQ5akNN7}`{V#WFv0lr?y6 zPwU8ON9zcv^h>lQSx0KmW*zB4loo9W3fACrB-8(f%|v0ue$HhxxdD5ChAGdZiS%^N z*V$|)I|!N7)1nX|%*qBmuBMX0RYSV`j_^A~z9KPCiU`uA@`1&q@{Pr$LKc;;VNrPr z<&Ww?JyJ*2Gh1S9))KXXdI6-Cs%n!|gUi=sZ~=84L^&O$k(VDM%;ri$S7OLAj8>e@eL^BVaPeq6w;zs%`zfLI^F^7 zYNa5eA`@HKB30&z?Vi-Kr(3=oB2&mHgI}MJMOwxzTG~jcwODDc(5y5M+pIKO#VV`rQpbEz}>ueOETPZG?t8ECTlGSGbIV4y*3 z?GWDsL-(K`52n_#x3Ko2D{B>07|AV+B!_d@WC|T^GT--QlX(|5nJ+NhN3dChIY*m} zS;Y#S7QiHmKrFqWE22-RcMublt-1*jf|AoB>}0``ANUc+^Z_H` z3ut|@pFDxiI`L^!+t?e-%mvKM1;U66R3b*0vX2E?(m<`#BO^XyMxLy z+p3!z*QXj*S7y=9b)Rx<8EbtDAe*MMRj6;MTHjC$<;Vz;W+*-gmGzC2^);&XHA>1M z>*)VX)K>SQO`;LTenx@Wplz<9@2z&8ZLewTp?15dPb?@8S`}{A$m@NeLu$8vVK0D6 zduiiH6(Rf5Q5pF^(8ei?E>Iiy3p<6LuWI9p(1KDMmk#+ugO?)c+i0QxYbBhr=|Yrn zG>5mxc`EAA(}%?#=l?C$n=bmisyFnOTJZ@V32ZBH9;pJH((7f16iLwgk60qp)d+PP zRSzeR5X2~a!RoXZZ0a;+shv6vFf_t$c3d|aIfuf3Rl^kxrLw(g9%OgCsLF+sIw}OM4iiG5Iv_ltEsm-3%t3P zI!og}uj=#~|H-$sZ=d|<|3ZzW)1OC;rS=MTLRTd9Sjzx$q>5clM|H%aqnfTp2;Zu5 zi+V)_u>1dsdP-Mh)k;|-7WEWnV{6QRDE}1CLN2IekCAUn6&nZLrg}<6KkG`~SaKYW zweuuSql7fOgprgml3a_ylF7`iZ7CxYM#5M%l)3&!0vcVNaE0G7QuF0=ki16VO7s{Z zod;>pEH#E5-SK6-e479$hDrbv;5lB2Gzh5DXIXk)Tb;%&C%<|LuJ<+RV*=&T)Y@kK zsy{h-Xsb#;*neY0c0hD`Xmo*ZQN+ZYCpk**N@=ogYI3Y zA5_1hZ1N3RMSd9rhQ;PJk4aA-)0`JOY(R!zQPvHU%U0A6(y!yS;TbUj#?aKnbjpUZ zOHWJlO*2E4;DU!NTqLzeUWK+>L)2RyB?2r>l5ImuRW zOs8cRx`5Pi#c8f@yy2QwJTBGW&pFV2lF(%Kw{WdEGn(gZOr zGOs*&esXzUq%xQD!Woy08g43ndf;)m8@1sNWPKEK^e5UEHn*?($8FVcu0VPG155}Nw7eTe3n#2X^2Re$ZiTr}4}B%J zc|e}Dm=|P?Qe?cEPXdR|>ntJ1|k;CCsbpp~th^dRR~ zPu|bXm+faI5mKcxy)G5oeWVzTr7b00ydDoC1qn$e#FP|cS(nnUY}}-n$;J)F4dqQ6 zjAh2z4NYCTe)5hN%^N1C8@pKbq!wIjCYid1Ob)X~n5L4}OBrH%vwjbF>_A zmr3bo@R3u>C}WorS2?L_QrDW2u&yB`lfz6VV`^OTtW(C*vz;E2MyURZFl2 zvmP)zC*i$|noISht|4JvZ1RQ;lxOv%7*p4p4I9EXpdQ-ues;K50%yGwhG+@E1o8kT zO84_MmBoKgv=lpB_Ev`RcRXrC5tZnBaT)-z}FbTI;afs0B}iR*YV4c9s`9oHFR2ChwF7OpL#1=m*5 zj_X3K^yQ*cbmF=g{$*S&$BHj5E)o~vdNEE};^Il5M$T%Q)t;rg0*4cFHNd|<^};$2)n6d&XIh4=#3pT*C( z{we-s99|G;69vwTxVk71AeB00E>o0NWfiVhDK|3({UjM{Jh6uo6Um&GmZQ%l1Jhn? z0h#`UFpCX z4iIDdWFS!Ol?TBNae!y%K`6V`dy#hEsoj0(j(t?+d)(`R6OO%_edvzgwP|;6y5oJ3 zc9-dR-l094A^y_$$F=)Y+I@$1zewIu6~=-%H7M7S;dP2rf)?j2&Iu}MnU3u?b-!zI z*i&?mYH=OQ(XG|uPAo__Pm4RVG~Hk=u4lWItyeHBVPIQwi7N?kr1utHrUv z2eOm;jVJo~ZY}P`a`-|m?!!X)BrWdCg82|F?hgWaO^t)iB%xVlJ{SpN;hUny1vcZ= zehcD{1?{Tos0-@ffKjRw-l_{hMh!A%L`oZ5BGVd?)`6H2p#zQIj4wJdgKLxbX2gv6 z-6Gb?X2|c2@|%Tt-+^4{x3iIcuCH3~+je|QW%O061>Vm>Ej#gTIj)4y7UWnCS$H(kDrMa$r)pUWVT5ql4$hyBe;xRCA%4-0v<^&D zsN8wD6ZEt2ek?|e3RZ((wcwo*Pi-ilN~=a}CSpsF??Q<`^$WH9W_(30N4Q^vcoX6a z5$}{OLccCYzDDHVjyF_$Th3IcMwv=E5GR`;e@(Da>9lw=O$MVKWIf9@YVbAyqYa1? zHO!E>FaqKh35OABRPIo4P>Oc~C&vE~etP0`2})Q32wPBMEAEYey0urnmTzX@-8^8Y zRo1KtP%N|lVl;A?i<%n&;SBsE+LF-&P^hv6B#CRIghN69mLTtYvEK)mAuUaTMO%pJ{kcay31>VX35@W@u%53EY z-Lp5Js28H%H2N4P7!R1DO=C@~Om~=Gi8e$xMz4;(CHl$e z7hGww5ruez>pCxQa_$_gGVpC#!;w_0^C5=ovl^l*q^48=BlYdVM zNm-h5d&-`apHh8NGg4=!ZclwC^|jPfX?bbm(ymQ=Eq!A8!Hj~8pEH+d`DR_7oteEl z``6sk+`V~s6!;XpRJg2v@&GYl(ZHmEw++f3+^?u*NWYDJOaO1sL|m2D~8S$2Qf{<4?K-Yz>)_I=sEhPw<87;YS%GQ41T z$?(eI(}vF;-Z^~D@GFOJ9kG7I^&@T@@xX`!BVHcy&WKM&{4nCra@X>}a#MNg$dHl! zMrMv2H1f5P?~VL?>9Io%%L$aj(Ka$@iE_x`D5%gV_zNnccn{ZK&7!VrLv&1q_VPdTIK9Y zbCr9Qp{lg1s;ai?p{jSQKC3!e_1CzXarNWojaxeI(s7%|byvGp2USN`r&af_E~_3_ zT~|G)dT~u)jj1NJ=AN2IYM!q7N6q^+U)20Oo{#q&A2Pn*_&+B&P4Jx%F(Gk6?t~8~ zd_Cc}i328nJ!$TwFDCsw>CEIyrnpTBni4%FZA$+sWmCpYshcuq%Hk<&r{+%`Hg)XO zBU6t}{c7s3Q_a)drx~WjOiQ0OVA}9$)zhX=n>%gEv`eOKnzn7)UDF<#_SCdjr@cGv zvuP)%{Z*^4^{4aQy6IxN z*Ywcoanlb>e}4KK(?6>3s9#ZkMg4X4JL>PNf2{u5`Xlwn>c6W0wP9<+9SvO#hZ|mN zc(38}8B=G>n$a=iq8S?-^BRjA$23l9oY}aradqQ{#v2-MZ`{*(uxUWk@TMJ2_ccA% z^la0SrejTCH5WFQHdi&*Hn%jt-26`SC(S=J|2flXrti#%nTa!VXAYhD#mt{)o|(0B z*1B0+X6>AH|E&G9o}2adtP``opY^ZVJ7?cNd;jd`W*?pXVaug0n_ITeahr3|oQ-pC zoYOt`in-U#-7)vRxsT0#cJ7h6$L4-D_t&}Rc{k46HE(aLZ)-$rVry>e(ALqdlUtix z7qqTwUEg|r>us$Mv>s@EzV(gPk6OQJJvE=t_naRxzu){_^FL{eZClj#Q~TQX4GT;Q zRxB_tT(bJD1{_{h z<#Q{KuKaN2*DHTp#a4N&3SJevDr42aRU=l_tg2r%Z`IOOm#*5pYWu3YS3SJy@m0^Q z9aQ2yfyc%d2r1W7Z132{lzENCa=w2J7DdwwWHRqTzlyyjhD>5>y7IZ*8jMnal^h1Pi`#OxPId`8*kcp z+r|$ze!B77jlWzu=*oAmJbsnwsx?==balkl%dY-*)4)x)Z%*HQ_vVK;AKv`h=Jz(A z*!=x9QP(WI=9_CyUCXcaymrC0tFB#t-Pr4O-gaht=Jt!X|8a|Qi}x*Iw_I||rdzh%I_uVsTTk73W{2yJ zz#XO?sXO-U9J2G7+e&V`^Y*0MFTefTUHV<#yXNm&zU%T`*Y3J?*X~`X?-+f@J1g$oeCO6X@3`~+-BG*O@BV)GZ+Dg7wf3$L?w)w}ZTGm`(|*q#_vYSv&wcE^ zg8Mez?{WY5`yYQG=79+he7$GNo;iD#@7b{D<~{fBIk@MQJs<4(cF*a(ZhJ%bChhIN zcjVqFd*|%kzW0T_C%eMCMszLc+Sc`a*U1M%9vt)FB@ga>@Yp{6zU+Oo_if*I@4o%} zetD?ip`{NUci0dPBA9>}GzaLF`bk(E#9zFJ$@>ua>mp*oEf586c{a+ji zJdktXngie9kdR3SXB?b&aPh%42R9tta`4uJcOTq$@bQB$9Q^g*nM3+RNr!R{)f~F? z(A9_jc)b4c_nzo{;vY|DKDqA6FP^G;YR}>5!>gb6e0u5ApFZRN%*bbUKlA!C-#n{( zcHpz~pMB)n-<})&+~d!^|GdldbDw|xg|ZhuesRc)dtUN-Y355Wy=;7W{mVbT()vp4 ztNma71fwTuRY+S$u1}cR$h*#EFz#PV*QMErd19n4#1wN1#_r{8HNS{&;@9%qco+YW zn?;z&7n8-~;zjY1qEkE+KP6BJ!@)fX%4%hUa;36axlOr8c~E&-d0pqNOV?%S#_Fc) zI&`<_?$q6LG8y^10)i@Y`RPa~A-#z1) zg=i7&9PJ(L7abTK8XXy(96chsKDxQzEAjsE70JHepE&v2@9+I3_wST7CF#6Bq>rhP zcvrBUvZg!vUj7e$S_I3Q9>SS3??DgZY^`Y=YI-SZdbM(mvP-#F*{8gsgP{^N&D2%u z7DCUtQ+Ka!kM2?3Vcikkhq_O7KkEL4nyx`jcN+bT!Nzc-QPwoeSSV}SX zuJLCu)4rVAU-yab-B<~BrS>=pGngu9W7*$W0onaJ!p?5!M!RRx`|h^xv~F_CIm_QK zGZ_1IWwhPZXUPaU$kK!lyUk-*qSWar5!+<7XHiBQRFFn5Y zc+H8QjuZ8jYWs7pFvJ)-+u(DryO?gu}q5Oz1Df|vK^loZxOK!dIx|@5a(6erX z4%pUhMYy}?d)>~S&+3!zYP#z-%O?dhnDKBP-+{TtaLg%bcCnJJMVpngF_@JMz+7q^ z+W=+PM$Ae^V3so%J$VfqtyDpuDxE!{RmGN_pn00HU#x6{B551DmEFvCV*b8R8H2gZ z5?05qh0<%0QUOW+QpFuus}z2a$FBxf+%Vstt{9aF#l&Xt<&edf@HKoXU(Gk74{hhy z^R4_Q{xE+4T;oB$g+Iq%<1g@+`J4O|b{Rj)f8{^$pZL$hg@4aSu*ad#J;0uUM(i+J z@N0I8{m6c1zd*C=jvd{-*$+I1r|>xJsh-7?*yTI}8)}Z_<9Icn!^iM>d?kC5FJh1J zRqQE#75kEJX5a8@*th&@_7%UDeaEk3-}779AN&S(lHbgJg{J>s{6_W@zngP@7mOVD za)sZ+1;3xW^827w-Vbf^quihG;U4@k9>Di;H-3NzL4O>~5AhIanIGq2{7D|cpWxyA zDV$Pp7`tOW4Sm$Jpt@(ciO2Hic|U%Hr}GziJbxW$Pk)SaTaNQ0{s|w-Pw*l9Q(nx! zz-~&P zUKR*n-XVPWLOz_og|lBy^J#oB+YjF5$zS3L{3Ne}o9+z3d81Hxvk<(AU&Nl~SF$ho z8$6SL$;weQ&!mO{o>* zv7gffF;PqsQ$;OiUz5c&Q7%S_3Ncz#LxVm>jDxnjO4LB3{1MDA?}_8!odVl?=)@1= zBzEZfMtmjyrI1$o9`S~_L)-^#^y}h?I4TZ^L*h;G2u`4TPW%Ht!B2|!#hu~zKm$4W5TJ{{@#(v|su;2Mk_9wrMo#wmP-~0}ChTqA$`R(j4{s{Nu4{;y< zDprdBgQxQMc_Hi*12EnW~V9`-Hb45;1*LK`#! z9IpoTst1>&FR_RYyv-YG@-T+wv(O3Vf*%eApBxP>-ef4`o52I|C%>gd1YVGYLZR+Y zfOa7VvcM3jLmUT8)d6bTw{$cfwittA+yskdDhvmOP_LI_oU8(7Yr$!4-@+6ND;B&e znGyQr6zFXVU|TN%H?2fFOoMi8c0uZ@kZ?c&FCUz_H)wTiFLeVw_mp;4ST z_jO*&tOoJHd9H1Z^TgY*NzW6n&tKHKP`q^RYum!6`Qn*#Upoj7kDuq-GJmFcwBy{@ zj*Lukf5-W*S>kqlbM9-l*otq?ea#V9lRm^Wf{%$$1u0GBaO`icA<8MruT zo32Fh)Gz2ta|$kJ7hIa@1bVl#Omo3i&{7L|r>_i7C!B6~T7!Qxol-Irrrm$JJ z5~uEbsavVMr#z>mDPFL5?nYmyqB;7iK<|VP3r1su;;#f?<`JYAlwc)93B?>FT$u}t zhm%2wqj*eY>W1nNzaFRd2kimL)&IgD>JnJ31&7UqSK zu8nys3t-(OKXaJ!APd|Kxuzac%H5a^VP6730>5c?hlB|ND020LefA1ea=o~fxnhKQ zmqlURI>wCRxH!(DF?M~*VlaAr0qfPb;wKh|(d{>uiZSaimVwc#n`P4|$#Nm3x`0<$ z${1o-hE8O{mds#9p2UL16fu>BV+5`RKcugtB~*kZ6(S+)!(>e$;DD>*xNC64SnyeS z+$4Bo5;!gnLLOQ<+!AB7J*rg}grPE$= zR1etJC7vzysZ-`b-lmq3yUl^OTBwk|K#piR%GX`u!}0A*ywib({J`x~G|GiN8*Qq9 z*QbGB>u6I3z~!cNz-gpKS%_}>$nql#>VL7 znA46F)5UG#cI4)Ua;OJWkKh<32O#ZHvXBxoVM84OnvaA`X8<*qi*itNov33b$WS{a zy{UatE%{d+a*Q6FcmK2!(t<}je2 z5ZoaW?obIgjz`tXBe(^gsOFY50nEDf#aZmW2*nq!ikqAdc`9Ctx8kGtf{(y)Na7G) zVUQpwcj9_+z_O(`r^%94dgdsFJjCc7?ZKz=Q_DNzON12;n}`jzaOU1;$@5T-(xdD- zm<8I?4IP!b1T!|`&pPm7Tb^EU?<(UJ=(pb@RfoCAX!PRmke{V>@dda;5?VZzz5uNZ zz+3@d<;r+v9oCjA$|&eVE<(-&!DZypn|ApxM?d~I+tflQ_SCAZQ7%^2Dwja-av4qs zzCvo6t~w{D_q3-5pi+S+08wKnj8Ih7Qq9kP)l?tVrMPn{BfhA$CGmRxn9-1O~ z4!I`1$Be)V+y>PkhO&GSfL@Ucf3we79zFBFSuRgBALPH9PYLo|JB521_-r@0>Tl+~ z{13#>usqDLlPO&oS+2-qLgeGOGmy{g%!?PYQjyAr@ng6jW25<(=I{A2^SAtf`HW~X zetoCgb;-5@q8~!#Z1_pe`5YyR3rWgOI1Aa?jD34ct29Rci^7MJVXMU zfjp{38Cw8;G+zuee<8BjT#;=45o647yO4@_G(sFg1VVp=3WSRhau7PjZNS+~HWV|T z3JR!CEY?ZHiUjj3kT2pD4;IgZSti$+Kjp!w4+3WTm+*}UI(8MpT(}Nhg)mosa}eM4 zW3dQ1+a zVh*AJj@+jEjJ5GVMQg|+#kGikpbJ%D+)AuC^Blt%1 zF|==hc$vlVk8sk;S7?_k(8DBiH~$6ngf`}%n;#OzzrhT zf%?aPDJTP&kplI--a*!<1oZ+wWuK&edA@*tdDd^vuqf)w_JR6$kC4GqWM4-<)W_{Y zii~$-9@rz@dI zx7KeUcjZdnMEq$6`Y!RP-oXWQv=VfdfNzS}AmU*N*$77P0)_b5za7%>o4!Ktyuc%g zPg;WHmBcUm3gDr{N3Fb+`00NkD2vP=Q;>X`c(r{XzI_#V0|nyW|Jy*ko%p|f=)%0h zG9J*FaDf4BSZ+Ul&=_J3U!fgoEU^zLLyj#3!})`PZzx>Ix7KfzyYM}YS(ZR!SMP8D z?-RjyX-u<((ddsfzWtX1jhXgAj-51q_7!MMwS-*Ypvn9%aXH4cpUsCMO*7O@<-ypo zn}3Wx9f>~5!5ePHxHFIq5OFM;d*U08{`DTl4dlUbKsLt9EZLt&v!No&{2hN6V?ze| z>+@`gh{bsIIOK|>SlRs$;zyB>CO_~mfG>i9Xpi91+L7plWCu}a{>~~p^k-hO&9)uj3vj2r*UpC z_=5Ns%7R=4{yhvhEm88Z+vzaGlYzJUP{wx%Cz-dP`x)Sg@K%SqL-vxmyW9LY;Z9j+ zK8d#QmiQwa!hcMxGruo!XXzUjyb%u|yd~0kI~v{|$8Tn{S&*Ys75e^V)~F1`eJVm7 z3sg4XJ_j@qMuITBdC41O4Ng<(Jo>g0<{md3Gtj;0H1}IlAL`C?P*4st>(>} zSq-nk_*V^CcRXmUiosTeH7V0sH9{jS2h~`gQjhQac$N8YUTyxBk2n8}IPRd)>F~Fn z&idgy1HLn27BWbgfl$XXmC?9ovjU|S_sMu3hWKcfA)m2`3>t|+%2N4l0lqI$N>~kK z!$H`o=wgJ66a!AyF|Y$#NW^_zudoWw6zDs8Z@E8=I0bsPgab-C^koz*Y0+$qf*@+x zZ3y=uJR)j%2<}fHyo9(n?#B>rMR*KhKf+;z_YvL|lXx(`(Ib8kp;L_HIp8<%LRY^M z0k%)`ZwRoNns*_5i|{DIGK6apu0wbj;V8ln2%jQ!A#6c-24OeC7zE1460rM-`FguR zN${{$Z z4wkSQaS8*qJEdPlb4*GfDJLC330Gi|D1)_Q1Z*fH zX(kQ(LdUPhzw&BKA0UgFfs9SZ%&$mt#h^5mxOh;i+&dW{vLL1NNA;uo^qFp|BKr zVQcp5a3sQh%+l||wrWw(cy7TWjAt?aTmkFy9qdk6ysjmCGWTIy*%Rzi?hEbmWlYa* zfc?!McHThPcnv&QT6n`?*^Pi@H;Nl!&y9u!I+h(~PqP--b>m=BpU30b9N1YCc@pM# z$*dI?>QvZy(_x*?gq=E@=fFaj2Wwpcta<%m%^L_y-e6dOhrj|{42y3GtiNTj-j2XY z@*`pSt$_c@XjlXp=Bi_0->&4GeaqT;6(7eIvJP0gYuExJ zf5P@x54+zC-UusiGoQ(4q2F}EQrQB}*(I2HF5+`xCvWBRc^hx%3t%)Z0{8s3Zcfy z!S94l`7YSu?|}{eKG@$MfX#g``3%5fzmFY+uK8hDM<3;n!IHlp*3|=$cwU6Z!6Ehl zZ17L;C&5#nVtb&Aej0Z7XW?h?Jp2q^ga!O%wwb?zIh2_-K}Y=>?5eM`Z&)*I@<*|P z@fFy>--OlnE!b7xfnD`o*i_$#o%I<15WWE)L7RP?pMd218tn9+NuA_rjDJU9vHy~P z1s(S{nwI+q*yvBPPsx`7^SGJ(S9TN@*;CNV&f>qbx1a<67ypx8!%wrlu+shwD{VJ7 zLsiHH4p$I5jN4tpS?Gm}aE0FCFX0B;zK8G>Ucy`Wupijl!WTXl@37gzpZ!w=2%NtQ z{Z+6C5uxzJ3KtPrsTPHGY9^qTwQSFdO5|Dy027ifp)QzxT+{|vm zUQ+2;#g-|uM7GGmO13z)Cjks$V9CV;x&LG{>r) ze+=yYWaA$Pi+>I55vo7HWU@)X8=w|CwdtZ>G>93ZQ8bBWF;id+#VWTsVy>7cTE%?P zCfdaUtaa-Uonnz#ES89+Vi{Jttq?24DzO^Ylr^;0O1z*pfd_z=7U&w_X1=kPvRe8}qo-UY|uS?~$0KA(}z2c89A!NcGi zSbn~P*TN6*S~v->g`Z&q`W2oFr{HPuhxiw4L8sxn@Hbh5gc;T#u6j)6ZHvcpwUCCg-!P1`vf1BT7?C2&Ehv;8D<*j#kFNYot=CQpPFO@FW=z?de2i zk}_GDf)fCy!WQu%mgOC1S3wGV54MP7kY_$pYRSU{_K6eH$7F`m2+K$_Y$UVbZPEh! z-CSiJ{7vS=7S|5l>q4bN>4c}jVr2<@v6jIbYlX5>Sw%W$2dyyl(a;QUgm2zCbi>Lv zWxH|CeZQJP(*{(NYrcF)o7 zdD^`|yBBKrq1wGzyGwAgGKQ*!WE5-p6l>rVYxxyxU>0ln6>IqwYxxyx`4pEqH_TYr zyttXN&&V7mv&}43!NWaU-_Y97xUg-$zM*Ya+x+IaZVd}t=Fe(qT+}Ilf=^_PGE0l| zDGS^sM7Yc9<1Qh=cb2;>8PD4HLnUN*F7{}U*{TiUp@OA8cxu3@PreO}EejhLwa%Q^ zyi`r`{(t1137l8OmGAHW{=5IZH{DHl(=^cRyJC0KAd8|b-JqamjK(F)K!6BFMP-@9 zaU7$GFO!#-)t7mbahy!X@DgL3Nyex##+U?6f*TqT1O#kkQJWnax@oxY`#V+trJ);_ zF>l`I^X~oJt?s>5r%s(Zb?VfqQ}Y%qUU=)mrHhxQzbD2z_f$CVx?AV1SlH>+SpVd6 zmwa-0bWa7AQ+HpI&b13DoVRT84GTKQ+2mt!XgIgilLti^5o$WU8<+Vswe!=APVYL! zIdx*EchlTc&b)<&#e(^1B<0Uvuw>c1`STavv@Ee;{ya)EvCs-VvCy9K7pC6(GW2CK zZCcJkU;GOlYW#a&hSPl6Pxoax-Ix7zU-r|j%xmk%O)R)B4Nl>8^OxLsBZV!1@~=y! zU3i@VOQ@q-H~%lyp+m85@m0a=SaJ@3|nMd`E>i!-QuMy&&Xx>csS#_1Dt7W?ci zcG*iTwqgwzU#~A~>&Kp3aD6(m!p~*^UievzpBCP9!@QdoES{gZ!H}M~!SGplL&kSm zH;}=^P44|o?)^;}?+b34Cyx%dF1dNp!uZ0Qu1hS*gxIPzka~nqZz@`{XgT%o*5xy4o6(>M5PnzfA5N-VP& z9lq-f-rBnHV-w3W(O_JyuCdXB(|B&t@=j=2?u&7`E5_{QVp56aR+!n#)A(rg`D^m| zZA{|F8}*fCdQpIoQAOw5>?_$!y$ze;B|@2`^FC-GOtX$n4{e(B1gX^cV&zb78I@M)0f9k3H*t76ymIauN|JAh+ zJbPSDOe{*qO$9U4P!-P1Ah-OPskF0Zi5<*J zf0(!^6S+z5Wo;srY(maO9=3}-JGjWPgNrUMxHuh2;p~jm5_1eki8-!b%*l9_H3vWv zm%8_ty7!l6ypK0RqnBj>l&po*Ju;>@7G2hf%rA4`6H~_Y9wrMvp8b?>FhUp%5C!5Y)qoV zqqEV_KxKBVQr!%zg*MO-hJ zE#jQDm?k{?v-57gc^-|;jh|jH&yYHH+Vt?I<>BWR(-JI}oEE=z(UQc{#n;_9uP)mz z@n!Rt=U`f>IO8`jS{$Fx!DIH48y8+TFMFy0%9^HhW(o)w>%@kfMi0id0;7@FR~Q%< z35?kW#vB79ykvQJ>GJUE#W|Nb2*Qsnj$giLN%lttMEnX;ztX4v5mKJc@sXvAT{2TA z<{K)OExBpQ(vtM8LrtN_guTrL47 zkMa#a?$(gx;_+y)hg{HNH+jN}d#}4>yoDYk?v2NSJ@oJo$uILSQ(@RE!%V~2T9bLX zI$ZcrYqn||T<3$URUNL5D>jUEl-)4aNRV(x;SFP5GuANHnm@u_O>7wJD8FH>)eyq1 z8RY6}N`vdI)HXC&jpFLlZ!m_zvroUlr{CbyZ}90i`1Bim`VBt)2A_U|Prt#Z-{8}4 z@aZ?W=D4BGr(fsOuk-1>+roloC&&Up6e*ZK78eEM}heb0#+ytvU&=hLtA>DT%6 z>wNn4KK**1e!Wk>-sivGr(f^$U+>ee_vzRB^y_{4^*;agKL7PT{d%9i>q6Ex)cf?E zI9A&*qs~#qjEoM1LNjT^bGL?Z9=3@d=84H?592tWr*Zzh=Y|dAd|sTWSlck&=XIjb zixVAd8z%a^O!qK4*{rr+3IeGSZo9Od8(Z6?HOy2u==xVB!Xc*^l1rFAlJWR5bp6xX2G=j;>fbkcJh*-<;U11Ae;t>^lh5Bc zU#8>R} zcdanxI3^vARNug=jO&+flES8sT>{BU*f)Hyoj*~*ctl{Z(z zGgk-ixn4bWuH(J+b&d|Xy7zUCU-0bmRp;o7X9s_stN%QEcwG6_*Lh9UG{>v!r@8W} zpXPWt&mIo1xvF#ZvA)hp{9Jwh5kZ9Cx`_^db&d{*->2{NMhKNY|6a3IH*H#hNrsLm z=9{27MzfXjI(3w4>wQJ7pEf<)8s4I0W1Mb=$NEY-)>pc*wU&78SWjGIYaLOI^_6sN zt*f+SYaP*z^_6R^C(g08j`+sD*nM$IOt!}qi1t*P*(I=$d;`_p8dP?hk+^$h*>$&`7D%>- zzlALRQeYTu*hj@FDslf9G1zUP*f1q$4=#c<1nxNvMscb@GCoh^p)859bPTDWG{C8# zbiCzh%%^|N2ux=&BQX7Y&-CvqID@Tc5|)gj$oM%8w2@$~YZn@uTqm`0dSk6dt7UDT z&nWZv{QSTfHa~E@%?}*m=Lc#Yg68CfjAG|78k~I6Jf!rKW)7sE7$OgHKfCbOn}R8) zpKqLZ>t}=d)6YbVFGEX5F$uQplFGdNL``rzqt7l(b1**57D)OjJTY~XiP2RHA5KDslxj}AtONnqeO=pLE6pe(q=}U)-WoyiV>?-j9~qY z(XEw?e0`Tuv9B>=b{C^*D;Q~8!N}VJM&+(%#BL6wc^4ADQkWGo&z)4xV;pb{`v}sh ziI;_glon%)mFy*?mv1TVWwbJj6jz67}q>Tnvcg0lImTg`aMhaYuqc{PjTEH zYq7MIy3%)hlTv3Cbz5v>ypYk?7nOt9ABgKhgZ|zW8M9hmq^sh-sza;Hhvy?4EFr=BYEzc{n~KY##TnZD3OoNVJKtdEE9`u)o&VO(|7ho*+Ifr4Smy|yJM28s&SiFf z*v@}%=fAe|ZFY9>FSq+I*tyK0>Tl=KcD~=v1MNJ+&Ivo`+If-_SYO zXtn1Ri+QAl&$07RJ6~YudOMG>^K6~50Lg-TiWJfY6##{zwch_PUG7c+{saStBF?;(OEI2-e zUB;Pa+F|8@Wkc69?NYPs%qpNS)&K*r0Kmr1kMO(keU0vGZ2y9As*UM4rAF;FX0P%3 zPg6tPNd4l}2>q>$&aYrp{%>t8J~Pr2Tmt4PVcAcbm=l*GxwF z-;jTc{~O2mN$33^;>Duz02-m~VPyJxKg+PlyxUf%Idr%s_AE7T1Jv^rRw)lBLhM$) zkFSgGVE^(JLf-rSFjg+_aZg|#a;6;^y4t@FWM|s%1Mc^_e}^2NY5xZKKYjlSI62e) zh{xQ0*cIKu{|=+Vrtk=MT&~HT;B@I*D)6F9DC-!uqB_sFGxL+Ve@5r9%I>%69Q@So zAGb3$bd>Sg#s>oUfIN}+V2=lV*t4kf1K|)u*%Qo;9SN@($DWJD+EaY{G*&oeSXFI@ zs`my*dDDhv>jl*D9@xOj2lZ^(j|H;ax;prXth0h^vB+8&d;&|W+p+n)10NBK@r-hR zup;(7d_UZYwbP?`GkF}#rf=X6r8W4bSquFm_CfLBpRn?&!t$^VyVLJur!y}2SFCg< z1`nw220x%Rzb5$Ks=HWP(!K^irk?(7@DLU=UkrYN1(Z=QS<~3h%NmcT zqfvwm$*Re!$|@tQFe|}gG3{C~ChLm$-uUi#b9^(`SL18qtC`9D6n=Al7Jn$d5{rxP zGAH|MeDP)G^W9EdbKlc`Eik<6j*Z9);B@<}tXc893}Qju)n27gY)nqueI9Gc=M~!H z*OS-xxW^ZO72$p}XRViA!mv8UVTWpy|VCS?34*-?Wl;~ABA0nzvQDrm#y=pYL7r5>+ zs)M4S7*{?+l6a@&&LgbKuztD6;TrzDojeIktK&`Z8tipBW8q8P`J>%Wx3fH(vz~y3 zzhU>A>^#6i4%@xFMa8hs(ivN1zE{f?i|w+ITkL*?-S4pTTNd&qJC|EXvz@Vl<}ds; z5YOdyUv1~1cD~xex7&TT-G9fjCU5<9clbnXVYfY>MOVyIAlx2KUK&H~1&`{zrp<#y-<#SL}sXu?JYau4YF4^Yo|^*t5Qd zmGdV0SUqLGiaqlV_C98}+LxB*0Qo$GhpEA|H^*bcV<+$`H5$v)(%1yGIcC}ij z*tOVyUKjhgfZ3)*!8q${~G(O+OycrTFC&CnPHZLo7k5)3kXH(p$O%$htc91QG3~088P$Yfzzh8OzgmDW-Hk1va z?GFnUK%+tF4-3AEKI5Cbk4M|06C7_u?NDoOw3++O%#z zmCXMy8>_Mm1h)f&ifA9bt7@<~kfWG8?Ey~;Q%x_7e#sqv528a+YjhBd6-OO}=R{BP z_b<6;27mM8yv!*GGSF2}Cb(|59`;nOvkfRByZI zXg_a`+M7g>7wrKn$Pdvw#IY|r1O~VB)Isf&k0jf8<8XU4#UtGdoqLe)eL)E`t_rDz zZ2DH1K5dIfk_cR^V6>}^66^8j!Bey|S_{>zjb4FM93iJ0xZgm?KHyD2F>9k;(OaUi zpl`H}H;0i$dcx%s(Hbz44@cSnh7U#S$no#U;W5KbeozW_TEX72XeV!u^VJcq8~9SP zO+aW7X}1Ig(Tmih1Zf}P+g4%uv@Im{eC@!L56@zYBrW+6uG;YH0-V}gTpAYoVVp8) zJ6%EvYD~f?ARX2zHOfC@b8u$_yr*0J)j6K7eseWC`364qUbbvng%4+|iXNg|9*TZN ziR$L@}*J%-ZGGnnidY)(E<@~5{6FnC_&DZVGZ=m9ys_W5VsP80coQ$?ouSLl} zpgz7}`-`0S*euB(@Q=cfzoQp8-ih8+teG3UYDaW{cJr&zJ<$K}IDaMjMs#PiD*6%E zFLGT4-M&ML>OFL`k&9AzODVh$o{Y?%&3!gpWtet&VyVJ-4uJA8-ev>!I>|+}^+%%3 z@T2yK1*D?Kl{0G26I_2pcnSQIz5(yDsF|fI`Di!iEaS63;Cg@<#o>!7gWYiMis(LK zQ_teGje4`$_G84H6>TC8`X34*R=sHjZ`+8)HtO_o!aIQMV6wiYIqRvBYvw6mBa;B% zZc;i(4l}R~z4Qj|N^-8zpg~BPm89Lq9Xolhbbpj?k4 zEuFTJ|NW$-eJ?TRM6X60!R<-@vk=Z3XwT14p#mm`PvWv*>M_A!hc)Bt;b_H%*(?6pX@1Mz7( zn0+ihLx*#gUh#Uy6Gzdj)rv-Ad0)p_`)BFdHUO`*jw_fiKOSiC3q{xj_HsP(O(Y+a z*vA=;zQ(-XOM)-h+}_d5?)?b!tp0+1H2vO>a<6&5w=#nHv0y2)eXqi&^VRH2!NE1$ zYv%80MmaUkIiLM@!|bg#H}_ie19uJc9(RD-oy zqcdYO(Ue{kyD0byJ?TrBVSgD~)8))!T^x+T!}HDf!MG*1l$rF)@LpWUtkZAeS!QMI zLC!y+XM8=gLVtlyRsG|7`oUWWZ$>-(S^B&0;F)$0+SCF2f-4#8>mB?ZGb^iu9A;Pc!Jmj$157Z>vR}~0)&v~EY|H*ZC8I0@ zf?Jq%Igl6zg@f??G&mg0{Sdrc zoJ{x>W^8^+J#xaQh0}r(dgRlCQf6+>2=bV{*@)MSrmzX$1vA5$!6!A3lbp^DXOpiv z;T-%#T@qeKUg*06)n9}k1)eLyD@gsy@XBDkW_RNM>gw=nyj)&`&UrEOJg>#$#mB>s z2W8Cn`~<1U4`neu{!igujipHNM=>{?8%$+v^V7kXGz&Bs!06J#U=VXbKNBp}e9+)# zW`r*0?e*dH=hTCs6p_)Pc=-r$~P?YkysqyC<}{{g=i zA7w`Bb9|}w92YP%^#x*Mc51K$yMQ&pO=v{^L@I0X5;nl}|AWmp=}hxVI*d80&0v5z zs$f7P0*jcP+CskegnPio0X&orV|MB>Frc*{tFQ!U$Cu)9e3r(Ur+P9NBArTbgN-9B z!gFaBz9yKh8Zhz~&&8ivUOW%K@%i!m;IHwPSP`7mgUh&((%x8)wWho|t3YQ1%=jqjeBB%rkDNmO^cXxM2>w z{S##Alk8deAovvbf0=5964nYOtQ884SH^;{^hxy@D;_CZMw@UI?OH2s+6h|6owREw zX?;(yH`DTN<=j=T$Tf=pMQ63T^i0;8WEw;-BT*cS_L2+wMzs5F$T@lBgDW{{13z(E z&1|0c@?{$mYl5R3iH80PZ)p~2u__5I(i>#9ICpVkpj{`14!-t%$`6#`awLtDU|6zP zJFTxY)#_8Vv2Q~<+K<#hFB?2#n}fWw9Z9hTe;~u7?a`{BKk`sNZTqmVR6f zvdwzrEge5aX57Xsb+^&l@f+cAp`guKrV(Ez_!bUDkrw@(F7O9LhJ1kEfl*CECDdkN$*skT{Tws)@ z!u4;ouCr}m0gWdAB{%3adE4C;N$>@5`$Y62c?^)r4*)Hr4oLmmfkay#{bRiY+l0h{ zg#NMRPWn@FL`bnhk(cEqR65mCVC66gn1L);1E8j3f{-mvY%Qh{r55=ukGNypp8;m- z)J`B-i`;nB`kM**+uW&FOn3`8wD^ppW>kWEV<c-$EbFN*}s`YLnEXe>!jI1AfQ* zC*eT*`S%adZ!_n2!1fx#cY~=CLfW`H%olBx=Z|3Wx(31MZ`>D0cJ*7ijo8WUhdD{Wz55h^MjiSd&$Ufi^htJ${_@fmX zl0Lp2jxNvIDj|I>Ef(#7yP%Y2c&zkPBS=s8$GI=JV-*+4x}eV zL1UTSZa}z|zc*2P_i?ZN5U?Jhq+cT*;YHX{`L!88P~0uF99dS@f*YX1o+Wi}_xCc4?2q!Q9u}b-hKuhCXwsN56+!V$uC@g$JX5 z0iNGRf1>{GC9eLIZou6U;?LJ;4{`5~eh7RCbRNagA2~L`1A0Y2CM-MpJ^ki#{;opb z)r;Kbqj%kGxkkf5ja&<@vf6d#)bP6DhIw*%c(7oYf6_2?lo4>YUPhci#*y_JVSqk zs~nBH*uR`qTFN~o!8>?X0Do24=U6Kt2`ks`vNih1lhH*AQ^mmOO1hMH`X7q0yd>or zM^*MRbxLxE9O`I*T;iU4QaU}!i`wdtmhGn;s)1{{+e+>G9g^_A=qdcPl~N9mlJlRE z`Xk71zku5&;NAbh`6t|$aP*2EB=^n8WUJxmt7&;QQ2vFqn@@q0e$kIeMXR+Gp%H^_ z;qgyUyI*vAsOTw&Q)pDO!BY-$S1aAUot+Nd2Y5UL((t7>qhxC{UAR#KuelzltX$3| zbNRR^SCs=B-wP9G+^j^-_yzGe3eYG`zPl$(JSRsGarJGC?z9;%*4Mg6Uzz&KptW4& zBqeX&8rSk)JIEb{7#1>O_k7WPdFt840*%ADNL3U?XV7@BILdl)O!S2Nxf3@N)$XE) z@icc^#Ecy7sXx1kfwlpf-f8@oScpmTmfF8f&;Tt9I~-2^D&E4AlUStY9jET?g7fU* z3eVuGZ^RqWnR9h#^<{*oV^$N7LV*#-Vc?a#^cwu2+@ze>JWe&TzYZ#GLn@(%L0uCx zyG?=zX6|XtI7{b#f*uAOoYrk^w3Sq79|>(k77=Dn24%(_dhpG9jy;y27UB|D+vnhe z%8zR7+iiSBO9cmco%1emps&@Yzrs~~PqL1$t$fRP7XOvQb(DWmhx&1%jT~y_3AoE~ z^7=*;PExijz1()e5X^b(RY~};}VR{+qj5Y@`u3NOPt#X z-C@`k2Q%pleA5dA-h-+;(NBn_0Q}Ok;JO{zIuH2>T`gE-bvklYK%QSzTKq%%!u2qD zC<2eJ1^)#>Ip9$E5?6Lxm(cn=sh9g(F!3Z;ZBJ14FTrh2(7J8Y@06(TB_v~nvtu2? z$d2Ta*C^#?I8`%!%nHVJ=<^^kR?z|cSG%@|q@VfZa5h?>9~ zwWP}19?D4dy&XQkl`9A5L(peC$1c97{&CQ*5x$e}-+?yNf0s@~^ed`3435IHr?P5ywCkl zbY*y-Ls#~Xc!wQfn!wT6!~Y;S+w5;^<#R3=YkI$NX#9STKK3zmdXv%MJr`Vr*6t;I zm%kFeh9_EVm(ad$Ll^gP{KXwZ4}2m#!RidM)V-CNF1hIKLwsP)WUpb|VHVy!rRkE^ z3s117@4CQ70zPV5uM2D>zI}BO2E;mavTdLdHavqc>T>USL|XDTd_|(+ih^>$zw! z=YjFdO)p$wdf{H7^up(vUiebe3tw(};WE<;Uv7Hg3eyW;ZhGM>t(+=MFWg|IRcU(R zai$k8H@)zsrWc-Udf`h=FWl4g!k3#~c&6!vFE_pLc+(44nO=CT>4kGlFPt#FaBnO1 zYAf~X)AYhKGW5c+483rn>4h7O8cIwrTxxpZ%S|tQk?DmmH@$F$>4ke4eVk`{;g6YK z_)^mgUv7Hgo~9RO)(v{$%S|s_VS3?8(+i(#df^GC7cMuw@MO~qUv7HgS*91h)bzra zm|plVSaT~9#mOu2B+|(?dyfX#!grFlLQ4UShQaZkPQ=uvvi2>}QQC>MJSp8~V08MFHN@>kwUh0O zN}b*kUs?an+8_NZy9l*sXy16B0A|X;uyYx-K^4=#yxj4$49y z4TA3Z{%t2?rNiBwgU8=@&{Nw$9$RS9H}ZW2xh=<1r7tm%zTXn2X{aJJL}KnM=#+xt z?rm-hfoDIK4zh3Qi*{YM9_{2@nq{|1@8VXD%O{0CP_F7u#%8@5{|tnA${!l91IRsZ z(>s5QkY`1krlD5at}bUm;nV`8=xi$?Nf^oggzUF8s(}>DSGBy6l$w+(lWCV&ZB-3W z{nnAO@qfB*z#|N!j9ZXK0(uv%ysn)3U*H3Tq9d2Q&o^L!|Km`JZIbKJqE%TPE2o4` znAOio!-aT=uq6%b+59Jc%1b7LDo>p@(YXR#I27;%_iKUZX*7?==wEao536VCWbD0s ziryLgWD5t#d!|DsZ?>rqM5rv>G#2za66I$5LsWOjmy1?fln%d`FW)w45Iwg2o;q2b z$$WB9<)a^XvJ+H_U1ic4s@G3}O0ahYm1>DWCArW;#TtJZP$jvxk~yWkf$@35q~SaS z#qVWr#Tv`#**+H+@zkv=w3^=F>ZYv&0^1U%nV`q&pW$!GH>%Z8Tf)X%T2CuKrFu-? zQh)bC<0s9d{Ub=)_eVeE-{11)1+J~p&#ZsA1#F>rlhzHX_;~bldMxYs_n7gARz7M)%;{b@o^m^7oWEIsHPiHV-7v=;|}Sz|+fLqb>sKDM&I#Qhsq?wgSj zULhvcRjn*5&My1iEpX1g+&yTNz7lvJgQg#YmS5ri4bFcE&f)wZDIJoY5i7fuXpN59 zcUZ#_&oQJ5T~E+UK0qJ;m$V)0cz#6ojKE!vMOTdVM9Q!ga^Bagu?x~nYk6Ex&bF2> zb@@@Bj781`Sl^u4V>+`plm61l&jRbwRalR%m-Xn1tVdUGJ-VsZqbsl;-Bjz*6__ENOg+aFm@$xA|SEJS2Eb*@=X2}890W;r$9 zET`gTIdy?qPGyIK<(U0cuGvo|%vx%K zSx9Nc&^%W6l`YI*>+M`zkXZ>P?B zJ7cW3BhMgJL8J9{MrZVPv>I~XU;vPo(QkJ%>zurxx~e)T&Or<1xwhm}^%l~b`a0T} zC1BS)EJ1jVR&lWVTihr6BrH zHsqvyT8f{dHG`wmK1vTO{{1B5^I5d22Y^r`>Tz*DLf+;MJ`3#YIX1%ubAe8y@v_%d z&qiZJj2R$-WJ(L~16qs!Ws``Mj<`B&(}T5FiJLwV?VBufN`P1r>@iBi>~c&hP*0_Y zm9|n8@5V~lN=!Xk&F5(652OY-^eGaXe&})=50BP5FawYzSR2`n&L3*rXa?ML4qr6E z?{cu0W%fjHAxD3{chpnme>#u%4Zs9N1T)~vPRDl~?>qbt_FWHl2y4(x?wm~W3A)Iq zeP$Hcg$Vn=m4&`{6(e{%DKFQSlu~{@31@}|U*<{@=Xetg>OJ+tWCdvvONl{r=cQmm z)MjZs>b-3>v`4FfyoR(@`>1PRx*gl#a?igC$DQ1J#F^2Kf6^FRJlF!Ad#S$jZBHb^6hw zOY$E8WVFzPs!Zrx0C@?R?@Q@bs}-fa5$$MIYR4(E!9{}i(nyqZb$u?Sp?^!2Uvz}p zlv+7;x|4)tZzNq{FXCif3&|pe*5=!Se1@EAj+ow~n%r#iV-N z)~~hH4gtNM>0eV82_R3mBJCcU4!BARE0$OWn*N4r~8)k1-Lu@0!Q#<8{ zMJODSkjz;*DF{xvAy$nO{|?Tql79;bgzFq;z&u4N&jXdlGnqkY_Ejy!naxPDW_}BY zSo;}9PQt&B@vJdwwbda#5f_uCNBJubKT@3rp=)m8Yh{^1Bz`Xmjh+{2sm*pWU12g7 za(x0!WkKb~;pAuAU#?y`Zk9`YJ?MF=P0}~gR?51dnt#%@FBx4|Ty3(wEEZ1rL-U<7 zD9YZ6G6n)=KdwXUJdp4N5x(DrWYjqbD>p_0>Fa%~Pry{Yqq_(LtBW*8rb zKcE4n4Wxx6&Q6;faqJW%%pPX^H9<>E4H7JzWz~Sb1!|(Dpah(?TmkVSl~MmwwsQ1J zMNcXZm6D|E5}vWB0}G5b(C#zdZ!!#H!+iC&eU))Cs?B)jR(bA$M4qXOt|X2Pgl7X0 zx+o6SG3lkW=?T4=zv?-?Av=(U?7#&Pe4d)&sBDCVq`&lcMyZ`b;f=fDaMEY7QSYz} z)y~NDZ-MKN|eFTa538o z?JRjno9ueoDA5>Sg7 z$U>scg}QRZqpb9je~J!GXJY}Wd=mO@TMD97?z;TLxSEg6Y5Vk2gfKDlC@+EkEkve6W6BnGTtfSDPV;G>m8BTSk_nnRf8tcrfo zEhRTRt+BU<1#*;eHtG+x9JNn;ks*&%yVQ~(gHvk2> zP^nufM#xMWRj~0aa;g!O{mQZ8ql7gtSg?%Xj}w%zS(@>to&U7&;!axX&D?FK_1%T0 zk3TXX@-2!+FvuSmu(TEXee}e7bAHg$YDVIL*TAiR75xfGpCVM;=_UBjf53Tu124)) zdKm_PS_wy}$G#@ttV}KUXd-_DR=-8;tMnc1zbv%3QDY@bblPNxM*70TflO%=9@c|; z-nsV64tuBRI-8+Y>J87L1oX1V1WCIu)5H>Ky0;oP97>z)vDpcP_x>PF@!`&&BQa?{ zgD8epz^<~mmNics5Ot^y5*jnhu42aalAE}K9q)kyCI30?3J1?Z^RmOeaCHp2*lo2R z+1>g+ZtOw41q>U6N4cl<0=hk5kP&OXL=OVITewS7{uaKMC9&cW#cw+`c`G$p4zs1| zlWOpK-XvQB`-v9+Ey8`BHBPK?4bix0(6vv}ONh=2?H8pPGw6gxwLwYV$`xq+$cp>+ z4Cj&9%svD)R~aAK1{H3kmEDhgBhE*QhQ#rr(e((fy^*n3@g&WOW_)YY5%BGU*w540KbZ{jQ(b^(&YLo6l*v{cuW3wEh8fx-!Nju=+9Q#62 zeLbZo++?OQ*uGSl;w#s;eq#<-QWmg~;mH@LUD1Cax%397XsWC>i3*gqpp#sQ6*?Gx zlX7?y*>pToLT_N%84RVwn&Ajrf!6uDk^OcRa!&=}XF;dKCHX*6MYM)J)n`)6?YCld zM3PzeQ);40jorHuI7Vb-+mF;HJHP$(YNc^&@$IJ|deCeTR{|9yGK|A$6lN9oZVcuf z?7v@vB2>=u%v;QxJjQEENQ=2Sv<9z`)&^3oBCa)#JM*o^%Vn*<1*^-Qf>L8eroY27 z9I0QuR@zKWT3M3V9}Yf1m9#L6X6(59d};R(vl z*r?&!)Ta70T|fw>WEqE(hkzT=4D*dpVwf5M)DwVFz7dLncM`D6IHa9V`8>Y1uZG7Pqmq!8VpQ#KzJF+gRF=U@rSC zvynW{M%1R+h}skzQ9IvkB+oS)$#ZRVt*?!%jka;M8b60vYoRC1-$JeVTc|UC3-#u2 zq1OB@)SJJB3FdF1*8DBxn7@T4)q5b4UKfU$*M%A8b)hiB z>%wsJx=;i~vL3y8T^M0r7qp^vY0$$)!p^aguqqn~8=qnKH_k@F%55a9kBx-&wvn)r zHWF58BVmJVB&?T>g!Q+PuzofYR$(JyJ#8e6IpOi@;4HKIE3=WXQPhpkSgk0qS|R;A z*6~&=@~u{&<6_UYT7gv=d#=?AdY$YARx5I>RxnDyo@ccp-)cpH)rvx^6)~$7(wocM zoN7f6s}&_y6UwX(^t3uqZgrr->Odu$ksx-ryh#W1TC!}06!2s!>adp>lwogBT1caJQiwh(H2 z2d>$|o)68*o7Y~v8)xC|BfI5)>E}=0b(_#5OiIAt;JXjGfQ@l-QIY%jmM$=(2~=VoB`M*roUr z{X}eDP-+xeW)#`eD6$-i{7O)v73hO1qsz+Jw_^7Oz3{F41435DRt7b!D*s^6+x&x6 z8>J35O6?Q-C2Pm`#f#=sK|k?P&d;(Ed<`qXZwUJ1H}iGwx8OshiWT7B2nLuZk%30j zgYcZ$77UKH$D&{e=8189Nyw|nP^0f*M&HAO@cjG0TQI$B%Jp!8OKA~g0V&<3W=%>) zM?;ESDd}@N&ud*%@n3TWHp%M1)^+;8CtrGKWB87_pk06UX9|_}M7@)+>-g#S>;$Ga zrS}lVfl~8%WJ!aEr>_6`&_a=vkzS6XR}d6CDNl5Yq`U3Cq+mTWeXY5LX-Vt7{Q6$L z>4%j5BluE=9wYNN#g!>yzqR?uzeffWb?&s8dYPXF*od8`bLsTK`+QJt8O3-T zU0-UmQ4N({axPTrO{W{*2kI2&dX%b3z9-cA?fZOU#MtQ|y8aJ|Q$Er*O7?^<)nnAG zBh4h;g7%`*)=B#B^yULTAj2{rN7j5`N!m;{EW2f`ha_)01`F%*-OHjOj1ZL78{xAASKOPjY=8tJqTd znA_oES#Y^cPVbQZns*;Af0I?x2KvFTQ&PTHs5{j_c*TZv%BS7cAo(S01AnIMY>Q9( z@`DDH!LfdgWLF9PnoS=js&A#ul4l>I`L3d-ZtMYr=rn-p0JQ>di~c*OP3Y>U_Z!BT zDe-FjQLU-$osW=iQVZT~Y_6@(;I{e6njrnyhqOs6lA%>NHCDKX{J-wv>NRkxH`da< zY25DAAO2j=q8duZ%CrMLOS^Q^JZl6`*EXKhT1i1cXlj!LCB1uc(;UiOP%f6;rqSJl ze+{(PoTc@9-&^t@;%K2>?m=gm(qD4dqUWwR{$PxiFI0!b3yt~=ztZ|MVgUbHW3j$O zyqiqgmTYYl+fAH%G+u}7_)gdFNky|Qq_dW86-}+%y5?lbyd}T-&tAdspU78gJf?Ge zP}+8@C%dR4ThXDm${xsVr|0LrNueq}E2-&faKY zp93rM1yanP+_B3Cv0$p=Nb?SNC+n$QmQK6W3-X1;a3q;mQl zt9ZAHGKDMgM+H)gC`NNFy4`%4y3(oUvl9F847^HT%}5K+Hr{Pt+sShSjV>uyZqv6lK-5k>$R(~Ep39IV{>0yZQoCnbgc`0T z=*R zX!-Q7>H?OJ;B3E*|-P!9US`BExCSIstZ>O^QCrIESR<%AyxU^P(?D-^olReGfKw0ofZ|UxS{1 z2(7#XeQy@uIZfwqB>mq9xl5Hn#?PsiS8bN$FL@}G=fbtLQ3+}r^RtZ;wON}*Njki7 z6{lz8KQ{wRGdsYls}Z!kYO^HQ?IXUIv8p>ShMv=u<2mZ}X<7uD9rEg^M=YE z(^qpLP%oi_`C~J2XvGt4{qX*R)J(|J>Uoe>5&WYF-lJBi+s*fZt8BbeoB-Qiu%Py| znUPu5IC-O&t(4MHJ@9zr&Ot=`Z?# zjA{OT0=>ikb6fOHgYCZPfBioP8XmyF+AhsA?+!L4SN&I;~AB4*1h$NU6tbAmb zsGg+SUiCpVJ6twQt9Y+|Rts&PzC!!1yE6gq+lJjp;q;_b3yAL#bCt}P-tWC)BVU`W#=XnW zz(y~Q&G}I2WV`Qv?MiZWZ$9Wb9V2q7v>MIG-+gHRx2hk{bF#kov3~uVggCiE?~**v zW*Jg`M=3{HbPwj;c9oM^PzS{K60+%0Vx?bikg8vgM=5gbO3(sNJ^9|0WEtl-!TR;Y zpQU~;kQX8a(*I?IMy*FRM_N{Lck;WhE9^waHzL0VXv8_iLYG3`U0`Z*e-uSpm|f$`@?5==X7EA(&9VJ zS#}iiMqVMk7l&vy2RhnJU3kHsMo`NQmxRdMXHtu*wqDX~cWu3VCKd1xqXwiRS+OG3 z)^Fpf)0U==PQf4WL9x*<*q7>Sofc1KuhaVZNgrh0=I691{u2SIny)?}bPt!@LJ#Q) zG!gf4l?|#Zs|3$UJ)}!7#e3njsj{}#0jh(OZ{`0j+@0k5qDgD#4I^EU3&icHIUowM|ZFV6! zQkk|uS5>rpyOC%LtxTO4x++OHsyP}9u`OMu?hE1Cy(?GSM494a-oC7&jnZrfEPky_ zv%!?j+-5vUrP0mi`={krb}G~UK=u|-#r&mtsG6CkIX-XktTi$+H6~nKJ*9oOi&NkqGG5%VxDt=Fh2n;~&uj(F1U+jm#(B0LRY5mgYs) zta|{@P@D7)FV}fI@8lZrrETP@hM1-AK4^AS!rKFkru|QH_ds+zxOxD}dXD_%MN9G1 znoq2c^1j_r9_?9v{WQ+0I_mXK zJbRCN78C8_>6^{YI6e5xA%)P=88_sx1NwmUsUJuHJ2>xvd%6-dy)YrCO6i^AJav{< zrY{W_yfV|V|(mvB->%PNkkGh9=;?(GH}wZOtiTX)@T^h%r^ zS2yoJa4;j|th~S(4h4p`r$%=egM#+ZaRd7%dO)S!Ch;zIHQoK!m0eBeZ?VMDYP-MY zOZ>viCI_CUwY_@+bAs?!;eOlr2OiN`wn9RF-f{#^k-fK^#??C~)YVfdty^EbHe0MwF$jTL~RwP~T`wjS7RYPgR z%nz+WZS%Ga-25nIbdty*{!8>2L7gA5hIVK*3U>r z`kt<&_wt!Oq}0$M(r#*HdsdXDChP>BW*}oV6X2CJhR)oi*)Aipk&_+R>OR}$>oWz$ z-c3>kg1w}F05}e^Z^y2tgOr}*S!)4lJsMjvsM|!WRYStB?DmUpUXa@B-Mq43QdTP} z&5my~O=@3lWh`H~YT3JN-R*b%#kekc_|2cgik)~xZ%`C>;v4I@dl{)v)Tde^$*IfL zYLd`#jl(1P?tN}&%rmJ9Yw}Nw?%bfzO1tufVU~~JEd=T__FurfEWq%B@;)Ks^E1nq zyhppmS=?PM`ytkIIYtS+z`dllVtaE&35hSw{_g$5_Wu3=2a4g*ys&(zfoK8 zam1M(s=k8CXn)}&4mPZ@2t-;i{^zJ8CCRxQF>bxh&13F9m9E}U^YBmG)th9Pq*~g| zSIEOoILA8ZT2#-0G=c>p(%F7dl4$^GceOdrLhW|B?n%gRkmaSteP0{#Bg=NbSvrhx z@P#aWMPF!(p+5P}QO`zWC3~n(-M23v6mQ$8e}}t=jC8Rwr&NWz!{F^r@Yb8}g*UAi z!zxTbsXn4~4n}#&*x-A#!)(IaD}Oe;$&1vP@Wwo}GvG}%raxbtaa752(fQOLn%>Yk zsPhxD*#=7Ph{eo2ZSJ9XN#lHnCvRqjRxsDQuZ;_I{?+q4>2jE7N)12d^}9V1r}f~v z{f;tYohm;X>TF4=J6O`t{#)xclyG&naC*hpsa+ad>u!_Rc6n$`Zb{CWye7jx_%$VyQ)`TeC!<1AXgw20mP~H6!w*(2 z@0WWg6FS2cnlSHoU4KG--U@!SdN!+;qANH6?~t7=wf6))+zP@T^AII_rr!RI)bh=$NIGlxPUFHyG)ke7MYh4TBu-EMGkcbA z2INZu4zVzUsKya)%vUd37Uf1|7ae5JO~ZSGE^C2GlK$CZ2+ zgCfM882^IXZbXigZ?|$F)?AA=zE2>N$eyk{o9$lGiZR{;5AJHCJ={ngd66sn6>Mw8 z>*ZgB?KEFVXxl!-Eyj%OzUbixVPjj17l{dYikO9Wh`IP~n2%TD>w}wuC3rwz9<0DK z!bP!Nu@*d=_rZ&Ke>|2C!aMnJ{E?5u5BX?3kB`CQczrk)|KgLvsdx~dj?eHWe1*?v zjjCH%k7`+XXZVHi>#P~|ZB~g|$(m0;4j*QPr$BU(d4F=2R5l;p3^N~mYfjR#+S^~|m7Xrlq=CR4QM-kr+hDPM)WR&?bz=J#c zF!Nt9%KR6MGS3C0&2vGqc`i81JQv9Sh&+(UpU2te!=rzO_l|xU-aGoeXYU;~=Di~{ z?;SPfy(2XL95c;7$IRe{;6}Wd+!ovpFP2Y^f##DVVLmwqn3sec^U0AgpBy>n6Cu}p zA|%Ww!bRqjW3c(;Xf&T3gUlz#Mdp)Zu=(V;*nDyfHg5=n%_m2W`92tIz7K|&PmY1+ z0U^)4apartg97t?P-wmnhMG5yBJ+AM3Qq?Q2BXZ!!ASFQaF+Qv7-rr$Mw#b=(dN0J z*t~I^W!?&Un74uw^Hy-S`STxc{``BHKmR`F&%e|>`8yx}W#+xVr}^#gZGQWQo5%j) z=CQxpeDznDXZ{NF$zN$6_{+@$e=qaE-^+aO_ch=9Bh2@HFY~(J*F5c4nP2@r=2ySe z{OXsPU;UouSHHLU)vqwW`jzHazdZa{cvUdnyz7rJ@A_4?!rT~JVeWieTW+?kEmvo2 z%Qe{Aa${|6xjDAB+-zH0Zi=lfH`~^htFyJ`X4|TAb+(>dy{#m7fvqGr$5xU%$5xV? zV=Kwk+DdY>Z4J5EwtCz+TQ}}JTQ_d9ts8ftts6JZ){UEH>&8vAH3KKvig8oJ?}Xn8 z#@mW<=h`Z9V{DbU^KF&5*|t91Y+E0$&en%(u=U}_+WK&_Y<;*nwm#hK@bU2Rpw`xh zn_}z3&9?R7>TG?udRr6j0$UUA99t7^wyg#?$5w-zVe7zMV(Y-ovUT9Wkrr8Q`lWf(usbNQWG8k{`y-l!{-X_L#S+Q^$ zd};w)w=Z>0Hc@lo0K@2`*0SfAC!b>T;p6=Fl$zh3GV|Cog>UD=ZM62_+2&X0EMi)~ z-&${QJiPiQc*_#@5w>bYg?ZN*W8QTpn`fIEc=$zl_1G1|8(FL+))ExiN)eKDRlt{nOKFcbvc}-1a8q!F(ZPkZ zO>L}7*&enB*IG$`!X^t(wKe^wQPSDL1?JUfzIpW-YF>TLH?KaEY<-J<=GCWo4H6`o(leV{<-*WzM&;P0&3b}{^Bt(df6(wIrP6Tde3GZSY`cy_`K6Q)c!Yr?Q;S7@Iw z04N?meV-6cef+|`2IB*KamM}JJIRCX=a!L|_p=YX(Dn|OO6>MyT*y6#i8yKASM^U#=`W4?TL>)Gd>J^rjOkAC&+@uLTfx_0C@M&2_r7;)|J zr-xrVtmW+SJl!+wo?&+mJvg*w=+5)+8MKzjDx`L5qgA47;=c7i(Ur8N%P}{k}7F=g^&f5BGih{CoP&P&o{K zh`1Ld_dYB8rG{4+ft>RDfLu;O6Z;j*Sdi%M@Vd9h?fkGqPWE-ovYQFv*=o%xUE56JsW z?wZ{3Irrw&B)*#c+w37(x53A*LfTOuNZ!&ylbPbi*|LnYWg|fiLb{SCryS#QxyU`E zkdw|q+9^QFnS{h8iL(O!b{R6&U$9pr!F&Qa>Qn6UC$<3j=`-x3f<^43jn|z8e_H_$ zlyp)X{F;3%vdEsG!K9FLV}-H8U~;TD)+0DC))Sv#Q({$kW}0T+n5LT_rWulF@$@x2 zHanOZyC!x`Fe~;qvA+o}GS5jD$No9?&%q@zc}}_%dE$xSGV_Y`N%MzveQXz=yOtQ| z{H}4%e>Bc{pK;EAl4Km*Z#?sR@XXP{zrY*M306ur4t~U{NaKSa8z=mUt+?|r{BUOQ zZ{elkWx=DgI5`?|*X;mh#DdxKZP`&fbZRo32pIM`r(?@ijs$AcZTi%$e^g-^12>f7Pd z;qQZY!as(83=SFhJ4{>nr{D-{pEd`_)y~CoSbMi6mK*L555)>;;f}{j#PMRiXxp-5 zRkUjIay1G)ioA5o2mN!wgs3I#1F!EN9mwt|b|a7xq~ zPK%C()1xQCM%s!dzMUC8A706SACFdrpNvj~w?ym0yLtXL_xEw!&#{tL4`m@`Rt%J_ z8BlKYP;LUs;o-EP&_M_kGs(e~)tGLHHiUNvl|b6+A>0In z+r#zz@1SdrqwfT|igOu@smJ&9Eb~m zcuTmH+}s`Qqy3D5-xlz@ALtX{w-xAH!EGzhKL>6%1AS{8zr*pKKwJr4dqs!i*e{Ti z{XQqh49`Qz$y$%+-y_o$lY<0!E;Brjj@AP4P9Po(ZhLs#9toTHZf5j*@LLFe1#K(P zJ^{2xfOIRk?FVj;0cAVTy#{pKz-=F(dj#m#dEC-7gaTa2AND2RPS30_^yy0ek3drl zG*up&Z9uaFXli^(uL6qgK#}W9S+w|wr^RNVC<2P(;3x|yb^*m6peXlHZ1Pa_72P3? zDb?}V984hZD$V|^qdh37_NAChtxzd$_odk4p(p_-e*zz6K=P{L<65ZxMd(E8D%4Bjb}7s z0=S^|Qb*r0dKyXz2yY_^8%@cv8mZOIbE3UKCTg!X$Qr4WP5e7E`Z>@QgTvjP+W#Hs z+QYd(a|?BNDRg!>>#Tnp8oQ5La6kBbCVB(N-U70IK=wT#`z??aQYTNw%dJidm#UNE zeM#=pVfakaVllYP_qa^*zI?B|t1LUEpiTE}$I@w2uMp4xk-iv{>zU9@2xAG7`arXn(88lzpb>cCE&L;97D;U1OInz3A_&o8lkr)zP}PKay6^vUCZ%tj!$yj z0{t!JzdMNcZn%x{J!;|o)TWh$Kg0dA9M4lO>!V)*bqi3p!1vyYVxccKjrkra>>PEa?#6h+>aRhQ|g1@v_rYK91!zJj?qxS*<8nvlkucJ zg_57fH!cU@8|Y^O?WN@KGLEitGne+pazs40lj}Rg52%&jriR|ny>Thxf0o1L=s9xK zN{&vDqg~|a2st`JP7afk7IJbhUPif`&m8vM(7L=j(;ksCYGAN1>L6zWDW83mPc!AS zlk#aLce}~mL1@37@@b}gnxUj)lut91beQrHXX^p|hvcp%Y~)+j&P%CXmvLN4SzR3r zqnw6OPQxgtVbp=Pa0&6=!gVP$e>?YgK=*e?Px<>@WO$<5p5CpDRy4$3c1ZmP*i2RRu;PWFF3+z=024P*EHl6Kwcuqf%pv|?f~K>w4%5+pgn{%-xvPsI6)7f&GEP| z@DLC4RE9(e#f*TrjO4%Jt6f2+}Jz^%tGlyMl!I1GfF zfw0{uqZs$BtfvK(ZQ#0b7jpdAd0^R0O)ArJ)o&cA}sc9iKtP1{d5GbmEA|EI!DBV|qqL9+v z4Z2X1~^Oe{kAUfE8fu`&e&$uk>>lA z;eF)ve#*_|tb&|Xkh5~ABu4Hwdj8)^PYJm&+7f353Aq#RI0)V^33Bk_-8YzzeulK5QYk6V!8mU6wF;|`9yN$K10{dC_9e3CQAk0Vlh0bFi_51#;+uY$`x z@Zp1`xErq34A*J~pRbepOW^Z0@cCN2XV41?p*UW_wKAweVr8_4qc>sI@bo@GDWg7B zL66`PWb5m}twDl>B)+-cO0Jz)a^e+GekDgQI6s~-kce986YQgx!YX|HO&%HHUk<(8 zLf!eck3n+QO0e||wDc^;^E|gfq3yt~K9JD_SSx@I3ZVg3t0x~FzMj29K8}%(<3Ny4 zK7fKly%P0B)ejvL%tT_Ch4sNDc!!@C6oc(!jL1pHF)3KayX71!NO>+0ErCLBp{KEw z`#a!6cLyVZbT?((mp0;r!#4D?hWf;ez*PA%BM3-4DBps3fy$Vp2xyCOVr?7&s7iTX z78C(#DUkLC(qUk{252k6cm)_Q1?rPvJRgi_p}(2QjG>3l}X79ty5Pbn-% zyR(8iIhV4ZPu+5DcMDK&gH{exLWih(&A#o9sC#PRjspEbaC{IPZ=>z*6Rsgg>!Vdr zW=lLTCX)&@&duwInzvUdnwL-}IzJ@%2GzAEmVSQQFPOz=tXEqde9Jbm63~9a67n@VLSW8`7AN@P^Ec=w)RFRvKGvwwma`PCuSxIglBR4C_%_HRIL2~m4 za`Pa$c?|k|iE+k|b8)zqaq9kP)N;sOE4kZ8x#U1ix#TF@*V~g;Z>61Z{fG#NMc0R* z>qAK8IpDhhd^6?>UYP?+os?`8f#Vz~gppUS738LpqZiatMZcpr)T5rHX!-=HcX$p` zk>()ClW7ie0-T-%r_Dff0-T-zrzboYX#=MnKqm=8z3an3D5I=mt=5}QXnn?;u6nAih;TWnl1_IfP5X0?*nfSLJdWp zrhfwN63}!4{GEUrnt^;RkZ%R@7l8aVAm8lTlW09$Hw1E8Hr_wOx6g7s&;3imXiDb| zC;=^nT&072+%c06T=(+S01u&O-h-nAT;o?Cy!V8*pMx4+h8kXm8eWDPo`D*k zgBtz-HLQmkUVs{2ROyq0Sy1_W`1ryg?)k_%_{b`t-T}=X1i$-$Qar90;@)?e&~j&<}Pos)x}^ z{^BXlQ^GTTSCNaZpdMby@iD0PDtI4qF)K{K1L4REg8{*HJTK;0M%Z$~RxloZ8{hvm z$L+z`@H1fgOUPpP(58J8nfzPu!S5i+{sTRe`v_Ot_iudj?^ZVkh1&>wgM&4*!|nX@ zCPxe39^t=Mj-wpMIItV0gvvtvnuRAgPQv@J$ckqNL*oe!$BlZEqrQ|_H8muk5@U@9 zjuPH8mz)wCimvGjYQmKqA47w26{T@C*K4@0;JA(Ozvd9-e-rF~3o8E(b@Cs$#}9gV zglAUj3b70fk8!k7a%dkyW*3JiIIy^mXHzl>j(nq)fK=rVVJ5w`ORyff9=xr9XWe4_ zN*aTGP$POFTIn`=PwmkwuC}X$C|B1Ss}*abtPfJwdnoHSDeFCy*vr%-YCN2v7i(6S zW`XBwD7g<|YRv|davPL)f|@^$)=ah~1At;86c_=C^chEiW*_zD04-P^wOu+5^cl2P zYQff+bP}iaDh9%xK)4eKi-E2KEXRT71W*)Fn=7Ea5m4SBpy@|#?niAdp&p#@wKVUfz;Kv+E2MlHabd~1BFp> zf-+A4O)pkE14ehqXT zouIp=6LkB#fbM7pbmAfJ7rOmGCu!)AhwjiR&>f<0FcZ8v9zGO4a)OfVK}ik-(gN^U zNNFB6Zg>kgTZ&9_JFU3W_eg(+=9qA-)}ggFN;Mz620*HSeLbhIIEef!p33)zBsVaHF@77$ahg(62h4cLd7o=UTM=reFx##f;SK96TFf@4g+r+^&=DBSBd>qFf2*$BrwyHqO6PH2a@un@hRil zlQ3+5iK6(lC zS<;WXw)sh*rFRc>dC^Aj^}27HcfwN+fU|Azl#M|AC(3#w5U&T~VjwO6;wm7Pgs;(U zCvQ6GKA#m{W@0~g33JEigSUlX^Ll39EQ3my!(&%~v$;qKw;;MeJoL{N7z_QpB zPiC}#As7~lCCbL!i&s<%1U}~8$Gp3tQn4Z(ib@^eLF}ex?53y46|X>hDvVKsN$vxi zU2KJNXtxgd=Ai};7%W%Ra56BSMLs}VX}8-}+V6n(0kHV2?Hd=uZI4(tp;dLxYy@+0L#J2zi!5m1)75z8pfpa%HnkhF2yny&4sNF@9Vh5lR)zfe04X_JP0(80L_y?^B~YX z4>V$WQDOL&3m#kj}Hj?OtYOtmwAcvXD z!|3%DROGK=?}99ki)MOOVJ6Mj>1fV9K*Y}ZK=226;}u)pzX)a|DBf}TV_gXCz(UBTYA`kC{_Md|GABOfHhMMk!_8$gc_kgd* zp#A&6*CT4)UI#9T9%zic1dR89vB!WbPkC0FhO~F3t;&~xNi?M7JH?_9yIn`zbPh=@ zil?C=A~DdCADynTL1HUnTX0^}v`FhBX3z@_iKXMVX*%DgX^9N^6igoC z-&@epTd7|-fqomkSQr7UZI}hXUJdD5dF#gWNz;z$E zdKO&0il1{ge$L%CjFNMcT*33$dYj;$&9p7pFkA6{$U@^o8a%B4$`MIAZCuRvm(VUH z3f~HMOXg{swgQ{znj4>o*0hG}W7x|EkBG;+QBST*OhELN^8eH_G zDSVn~yh!~NB5*tjTZX6f@RUxTlE+h;c?uelrCE;xuZz>8Y=M`rZDm{Ez| zh;Az)4 zPPoAWXX4|%0w;)tozLCYVu`F{K6{zZw`8{f<3r5vpTXp>z~s|*M)e@Dk}u{v-Xsh* zZ?htBM>l;B8a7Ifm-huSw^d;DFw`d5)MlRC4o3gB_KL*E9)U6+MNbtQdyz3`s_2q< z49GvMfve$JowNTnBe;hVJP)>CV+4O>1k`_V+<{dV0rGD89!3>KP9>p(aYdyslEX4u?g3=? z(@^p6sTo{>)%^xmmvJ>brFramM(`r^LcNlzIuLrvX9UkPf)}8fLPqcsG~)+)q3Bob zoXtVzK)kiT#@hNXXi2Os(Ky=L5+6vY=zehDj&u`$p#;1?4bJZe;+LVC`+@i|aQ*^3 z=mO`|NdT?J`TgMhQ6PT6rkeXT)j(x4%ncDE@azH4Md0}mczz8$r_kn7ZgJF zNuYiisGT;gzY30@2I7~1_-PTIb<4ap2NAj`xi7wboI8f4}8 ztmAME@Tv*4tQMkG(gHNraG_Ppu|0}`Ry654xK?7<5&^y&8FI`BFmOK(+)o1ck8Er| z0ewi-gJAn^u>CDy{}!+x0QPSI`@O*a1NgHHxE})U8lKby+;27N`)y>igP zZK(QN(8tYS`@3NKJHUSnHug~#HjusmlrI70D?s-e(1|R58OUA*vLitD8jwl7%xh5Z zYw+D8K$wE>r1p}S(qCzL2Y~2)aP5i}Yl+4w(z2xm)Rk3=pnTe^u4;#?>RACxBXs6;sorxCBXidgUg(bLn z0$e-@6qXePFPf_#x4By6(i3oXKDc=buFeNHFWJzEHaG}$zX7@@f$k8qmxitiiW7TV z;xI2maTYq*+QVwrz!6y!ZAHEYo*rQ49tKJ( z6GcZcLlI`A2MChPlCEwd_l_kw!$@Ws-3p$T&x|QQ3AwY_27k`B;2wbww2!3yZOPoY z;Dci2l~AdR-jX+zFh1}~WC$KU6Iq|d*LDtV1^bB%56X z&IHOwfzl0>FWMB3uL9-k_(~Am6@WX5{t51gVF87o*_Zk?);)tesV#j0ikBGWli*G& zIUiQ?MXc}N0^zGbSdLr?fVCuQKI%En27J^wF*6Y=6-1mmxQljoT4!-_H`uO(ixLs=iEl65{)@1sGs+fY)K_6&MOss@h$oyg~xpwyRvP^!|N2STYzdmT=H#?~z^eFRAV50E|zq+;#;4oIc$Rw~iI0;Km?x*GFl zNB+Xs9A0vPzJ&uwfCG-gh5vRG(TdR!B@5pG;;%t--(bcI9OdAg8Y{G+WcZtq0%b@6 z{5VE~Bv6*V;9BCtmJPiJYWFhpLh-Bt2B)>)O-od#jbo{8aRT`vAb%F9pMwG%K>Zp} z!+T<xYYcd*mPJy9C%pM;W;S&+^5q;Zu%i<|CQ+n1a3NN&_+w9ii%PT$ zu}1vP^N;`+U@u&ae%BW7@4>~h%p#fvE>J!hw5DhAfZ|te@utAX{c0A+6;7z}CI>mg zwW<;r2-jj$t|Pa|ZoEJ$Sz$l3N!$xbQVdij%$Tm%kcfrgDUaEd`~x-JNEKZ{EmrTN zHupSvOsOJX(eI8SRj5&3q-jK2rZtU3wXo}9wdJxTqZ>8#4YE^2PGi*exyd*nv3{tbQlFw`4!85T? z$V-|ZTX@*KlGu;7+NJKH8LSgG=PnW>)l}(%f25YD9E|5!lR%*2Y0Q>X{x(r9`--ls zBSJAq%u`8E6@7e$aX!ftUobADTI}5mPnz%;7<~@TeF4sW4$gg!xfahx#`v6;jP$%o z#vW&ZJ=b|~uEfynycoTXqvaWHIQ9kBKb4zAr&$42ZUVE3^-G0cxnyODIm+KBz)cC5 zIMuMs0Pm#-XYkP`blhgzR->3mN-+`kDn<3@V^>`O9bL@lOK6wUDs^QrG9t-dV1r6a zh<8#3j|3SLoW?j*{Qy{0kq*x3cx^3MtYj=@(5=|ylK1f=g`^(CpTQ#QXOXCbK)ME7 z+*nPUqiuzPwk^D7!sAeiM01*jv@`9gN{sR`EB0p_j;pH<(Wv9p+QCr)ken#l>nli?_E~{N8fYJT#tQ zLA4g1jYZ9qg;in|@l+kHYUjxkN2<4Jw1p=(@Z?#Z9N@`8yqP5PGK5_5(7=ubb}S!_ zcb{2>G}%k8kYCjUQ!`ZmBCd8SINpm{VXq6x$Udm_Elc4@^Y1ztGrz0 zH44YK(zoKH? zKj!!jMlei8{;S+g_6d2Jdq_n-x$cE80Z|tabpcTq5H$c%7Z4?Re#Be_Znd6z%Cpy$*a8)(ULtY(1*fQMXfJ+ivZk?WFDD znzLw9MfolwJeP9+_u_S3PF_t{oE;*Q@h2kCI>Y^Q;JS;d-UH~$d$49+q5g)^5wSmn zO?ely7qG|Z1@6~@_jRSw$N9a~$?DYuQaN2_sr6#Sc(>Db(00=Fda)K2`MwL?dVq7k z1kbNlAB#&cc(Hni;81d1c`iVB>u$k2xt}PHLEw8s?*f`6xl#T!Xf`20RkkVmv2f+1*Ke z<1X@zceB%@*DPSg0UE$W1DF*HFLA|Zx#F{2;bf!+zx43SNBNYVi@T_Yk|#<=={H6X zlG)1`z5{HmMIj!_+B;Jst+fkZ1dlghr+gV)ev-NWEqb<)x&I<_|0!&?FM{6^=Kfn& zl9=Mu!Z(=vFM{VH^zH?$_j#NZNe_N6ZS9Q7c zx?VB8Vp1}7k|(=Qa%6@FYG}5pL3DB})X)rfhM3=PGQZ!nVOc@!dU0hy37S{dFP9_z zo#-9$Ro`l6--A84G_#)vEbYM34h-$wxg8iD0EP#M+g0*>sZmlhf!tkzmR*UxvW9&% zvw8P)b>sm9ZxHyRnL8G9H!^CBFn#xG?tUA0zs=TOk_8b9s|oETp0Q{zd~Nzt^k^C1 z`N^pA1|LTSt&$d?j@%}G5_{=m3%7ISH-P$Y8_gA{pXJWaD)OR^$d!9~%K_BhtTtxou!>#bywyk$8l}UZ@)) zek&0TKXGxL`8f!drJm&;uq<&Z$#+Vw|6Z{CxPtOApnMFQPq;<%sMyj1$D+(WcG&+W zV=o@d;*5P2ym**V=4Qm5(3r}IGm^hP+s)1^Xz(N&M(j%Q)%6%&<0;L8N1jp*zQhl( zxs1G>&ec_80i>W(sqmC~bG$F`RY9-ucQ5#R7X00-eQ9Fn5)nw-Vu!KC4r7ZQ#uht_ zEp`}N?68HUiY;~+n|uTK70W_qQS^8Nd{k^pim32E65hf#Hq8CZqeHBLd4}LI@=MEx z_8ZQU{f2SC;Lpqn{E61y!tYDRx9vB~`}xebPI{BxeSa*TC=Hgj21|oY=BHEFnv+ zY8aLPw&;CHp0i^YS@ZT)={W~j&vHTPKkedAW5 zw=$3zNH`Mi*52g6ID1DWd#q4%UNL(=RFpSZ=GSUudxEC*qpc$ym5md-#*=Fb9i;;& zuJxv#Z|bY6?eJ8&@*DcwR_-hk7yY(h856xU@G>;m}(Tnun0VZsodEr zXTTH}9g;b_1@}SFAzPGn=sQQ3yNt6q@jjZhlMhi2Cek0|?A7w&oO$d{vdrqDMs8H6 zZq&vNHLmkG7c=s}Ye4Xt95Dxy{e5j<&mA5&6TJ;qMY$WyhMM_OVLjYCZgId51iO|0 zKE3wr^WNum4vY>?*N5tMuk0M}@H>as(+Wj(8!x|&ZZXh_cWOuu`3-(E=svgQp0hh_9Ln-4IX@&=?U=Mno6qf3!q6|~)$p>2;4D%CU@+RjCahk0$x%qzQ# zL$76=sZuv86EP9x#01ScXE_Eh2d2o2n>e^l&hDH?u$HL{gb6aDK;)`$f03mb-KGk^ zkjc0M8F6s?-nQvIBh4dSH7%R3e4AxXO(nN9v~};xpWR#P+I7KXV65Pbw@qHSt-mzb z+Y}n@sxiIQo|VTXyBn4z%_mRYQ04G9MQS4OxygIe2F>%J7-}Cy6;v959LmlY44{uQ z7$}nyWjQB`r!q5IBfzm`QwCa>oNx)W--D@LMA)2>{YDMY zty6HiIGW^W-WcV~q`LKJlTP24iZwS4gI$V8L72(8pV}DUZLi&(j+5hZ>77hEuyq`C7+TGrOs`2 zq<&-mxPIc)6{nn%OqdFtq99Yxcknp>lHPsvPcX{g@2iNoj{N2%p)=M|79O@qa za$DE<@{Vo0J~2AubvgQzqciy~XMb1Acz5;aU}UT$ue7^0=F2Nx-q|ykY$z_Qud0m? zw)J)M!Rc+T^;e8e1lx*YEgfCM=E||&no3VcLUoCL;5Rd5oM98^d1a zJDQpAC6c*V=DRqD0CHJc$vNAsf+F@CBD{WjN9DjPVX{9SvNZ>edon2N91QBsLwi{|LBtlda)p-@xv+{W|9$9uDiEUVmX-jS$VFEx6{n^p5h!q{kRQo~7r!!W!f{rU_p zm+(%#;Icjkmsw`gEHnz5_8Y=N!c6nVD!5{udcrErLaWj&vSH)kf~)Dk`lFX0^jBF=)3mYue0*J(B%wT6U`%0tE1dv-Nw7K+3b z3*EVhZ+@0$s1tTaT93^_ZdXrBT(eKGw!C8GSEC8VG;{$^dm{CxP-{`NwWDiD?3oCE zUPS7*7-!A%vDIi}+-ZBp=83FKUt-g>$keyIiA|@iUD=H;YtxBQowek^T%NXX+xkb% z0l(OB+O~B&LbnY}I_uVrOintS$+h{bD{HKT!?Ckrpt`cfGcthL_8-GTt0s#=rKuO< z8I6ZAqta<2Quk)1K zrk}ZR!rN0*>)m%!t4w~)_OJfxNW3iY*cK)S+Z?nVhL(Ls|2)PDB_BDky5+&{9Q!0I z@WrwbicI9p;2F%?hX+2o!OJYUJ=W(jA~iM~eq`mK@uhhLllC&x++xZT%pCf$ADP95 zZ6jq*WMQyruuJaImBUX}a-vF~a6@~&Kq?c_Ya6O!NwuhRK6-6)R&h?-R0)5=t=uKt zbMcyTc}<+jMZ9Kn9=4|25jkzJ!dbg!cxcS&s@XWQj7?ROYrV$>YAmbQ;n-f+AE<0{ zj}0tyIJb;+Rl$qwSv@$iynkqHhfv)VM_QkhK%ZQ-74?`JZvQ1a+l?DK-ih_7zOA3Pxe7-Y8X!RLZ#`Jpp*Qg@(*B}&7$QgQ z2!S%-#B4*w-fZmy)9FFN7di{sXe6y4y&Xo7Su<}3eMa$bm%I6K$fPyO+^tVxtLle8Z_sA6z7Hi|OQk0NFYunLfX<;5_0>{(a0zrxN6{(V;YSL8JR%a zk-_J(ILP89&9m?3^^0Z3rg;LNi?zWLo?YTJ=JKpKgGgw_q9lsd@U*yci0{{o(<@Ra z;4G+b>kT&ff-NIm^?9R~v9BWBP&!cEInsOhXm~2~LT=tgyLjo+uq}nBii%4V63!Bw}*m0g1=p14YdqylzqW0e6qY-w3`n znhg%&#b1n_+!!9%JF+Sqi_}F!{@q)~*4BpoqkW?j;hso+tl3}JJ6#Zu1~&{Po5MbD zp1&c|IJLDi)Lhd#5Dm3)rkpcvqn(wEX@-HVWmWSYP_jGBLYMl z2gMwfsbPz&!d3#d+Upw-zgy%93d0@3gt@e?%CUBnHxVdtR`k`M>pf@VncnL1k^=LJ zcv{Gq(b$28U;ZvMoxij50I!4ntFp=0|_SxnmEBzs~BMPw~4 z+qSStMB&;xu;1_@!Sd)OUs0&cE&)#dIgqiA(3<{w=K}*B&R-{AoN9OeY8GHe%^#)4 z%^#!;^XsXN#Ef`9qWKaqlZBke?4r0f2WCrn&&uJwB^n|dO0+@DB1}-gjk%qKP4aAC zI^+*0B+=mZhlu-@KXKW}KIeCrKXk>&InM8!?pN-XH@7~(>pD%|y*Oyf%oQ5P3u9*> z%TIIAl8C?(6fZTc^TAXBm@*SYNF-P_AQNi-pOMr*mW3MDdbh3JoLu3=ls+$58~c09 zml^{S-dJVc3MBbr1vudmUk;9zOk)-UY5F(S6y1Wj6={{n<3j^xa3JV5gOu}{??^qC zZ|=+|chupHnb*f-slDP)JOedVvAeXqTb_8H%eIEa3&%ak=q;OMYcoF25;c_tNE_^; zi1r(ngf(wxh7QoIo$1^11>8!G6R{Eu2i+kv;fIuh<^#>C2hSNd&t3D*&pCf!8o&FU zHGgE*dVlI;yj>KLZCJ+vtDmT8#Q2=RVS@x5NZ}f$1PN}}2QC5x4Fm`%AvuR}?cv~T_2Cxa5fznB-@x_a zn}`uzWEGp_btQBb)EO_-L&S9W(@sCf`(IqUp(NPXV#fM|!yDqM$IRM^H3cr`(9kc2 zQsZlVE=OPT`w44)Zn|l-x5eZ1P4*`?PlWoG4cFCrx(8B^nCttJH8q|{JcWQTjZq@{ zJE=WtmdryPCV_~;v@EizIg63(wCU&-IVdn9LZ21S%#JIQdCn3`9WiH2#O)Gb_#Ct9*XrA0VvFXc~Z}@cO@UqbI69;!xb(U`1 zH@m!QiwH6`r)M&!tkgGFi)^T|Lu4X#vh=rPCKrhWpk?0-;FkCsJ6i#F8vk&g%7Tdp zBbeWR$2pfow!ClCQ&0D9THfU=b2@fz{rCme{0H8%@%l^G^o1t2C%05~ly2L59YZ%fI8R7$Rr0rt{VV_5f>T2&Ws(FL%S+5N{}^VzUZhw zb9L{=(V)L|Xm0QDj&sWU$~Vr%HZJceD0Mk@ozS{+B$8izL%}^W1N)N8gOhug4V-oQ zw#l{)D=LSUw@mID-dxd9y6eo!?&+S@{i!d=$c1V?uc+peS&5n+xjoSA$Zdt3J+VX~ zI|LODL4}0goQ6XU))X3gnG-e*nb44#rXh7!NX$O?syYx;R*S-l%rSyq_nR8WZw|P1SPbnC--8k(Q+& z2^-0i#g7+h#&8$K(#3)`??2uDj?JsKI{TeNeG_YncRUZ<967S<)b%TTiIKId%^#<^ z=kI}_&^TElZ5i7@IjKwL(e`4pAQj5AvHMU)XXehMyxUCAqm&+)Vk{88VnPxFtqIc~ zGMoRthv``3`a82|b?QHVIANY~`QuE?WgkeT?oOQxcA+x!dZ2Sj6w6{}-8uMq6W$h5 z(n16ZaCcuh{C=}rMt^ai%r|#+$|}LKSAn6nj#czCxL|xl%v;l=IS|E9d^sVTO*sa>#mnYO{Ic zkxzh!^UaSzpt-!Z_y301vQuJPmbuI)2Cu-Y4PbPN4VU5UIz>Ms(gp7fYQ^TAwwj*~;o+9pT8tbaJWz%y44M zL@2WL16%BV!zmxCRzl3~3xdn{j358yD>kM3zAG=<80acJ;k0ybYvip^Kmj`SBuQGO zBg~TP_GWCWH=!`$bFGm@b5<$q94v|{D4TblO|#As*09M?TS{UUX-7?I>h3FF-L$@O zWMkhi$5-7odYsSg>>aton%^;#*fidp`h|J=c(SS97a3IeK8bfr-GL?6Ymg(aA}iCU zMC9V^yiJ=~V$I5o{YDk@Ec0D`zqWkjleP-?8xmpZP{0Nx`X|nPHsxN7CyY;-DJ{vF zk7q2aG_taWU-;k_=dS+hucv1w z-RI1ZLwc1OAhpSv9^g9q2HV4IA?hY#Rz+BKZg!l)HX=TR z5_G~mH{zo#|3e$kZ|ZK?J{?~f4fKz!zPe#}>)^)I8zXfaCpT{G8#->~>ZXaE1*4-) ziFj@ISSU7JSkm;Nj^hTJ24l^U$cD-IP+>{Q#;KkSqaj9h5(4HOaHrcC6Jua;q+y9Z zwn;$Ecvce|B5RSeA#o1h_x|DcKjO7apLNBNi>)jAlor?s?mog(YK>WWl%}t=7N`}y z#+x%Udd()I>3}>pEkQ)t5(ET^tTpn8s1zIo!U8m z;^}Vp@rd|MO&$K_tEz`~OqyRvZCn4&>H6KPo}h|3Z=xa3(&41)qeU_p*yuoxO* z2k@~Qfh0b7k(f&=d>|o&gb8DqR|kiy9cIIdHiua`mb!f!^8W+ye%yMeYO~gPN3O(z zdJG(01l%g>;yB8F`JZ*UJ&>%p$jT21>auqboFGO5Aw$IzL0|(qJ9uS2H+F^d$c)+k z$*~VQUztw*-t0}?X`X6sPW{^KPJNy^+y{J@0AIebeW`b{M0(klM0QfMSd*)XoB#x3 zo4}0@g^;op-1#-~Ovg_LKRI%l(=3`w-9E^hP5&kJIrHSy?i72WvDU}1AUPmGU%QTq zy)2o~EFL5yDY8PsWLf@l^VkkE9egqGPSq4x`Ke2M=1+Y`4x67JwAS_w9^qBV7S+tW zWkXpC?7tzFLOP!De`P5&DOOX}q2uE95O;9u8c-!hC01@b?+ZJ36gS1EwTESTobb$Q}$88d*9i2&fE8{ilqBQ%hc|Xtu?)Yjk~f(5|_yx#fb5)c}6j6jH%h^ zf`Sc@BYk;BGrdL2N5&&J^V$`#UE=X9aKctQ9GtV?=p%>yR>tg?x>yuSqF1tcMdn+< z!3AxW<@5*C-?xSj(_7~(a1~eSzl*UGM0s8)NrRXXSJ-K`u_JxeTfd`@n`D(MX#OU(rqHY( zU+G~(uezS*WgBY~!Lzqe!&_C=GZk4d%y%t&HomvBw9Z@65iDQ6tYXc^n(on1=c<{> z<^znN4XIJZ2olD>i(lGj^yiGgj^1ZS&@9@9S7VF1mb8vYta&3&FD1$Qjks{t?VP}d zDcC$)!Xb8s0=6(U~4f&7}Nm6RC9vF+pP7Y=ND0_r@Znm$eG zX%m`a!KHQULWy>qG*k1Yent4sj81JXaxNPhT3_GMbo#pR@@P$UWR!^URA^$yz=ks_ zqvdO6R&OrMo0{I}Ge0~!8So_ryJErKvC8(LP}{P2Q=Zc^HQmqHnV&iSl+*Ly){wf#tUAH*@j>%oDnI`5 zADYm+F$@hzWUs~e&^+ep;(S_2raY8mq2;>eA!tCyX2h>y?_nm2Ft<^ms6oZOzbPlQ zv2O>!FH4_M2ZRP3oRIu;PDm+TIiiY5?ZQQEz)P7{*dMeKsk`P}^(&I=cZCR?tv#b6 zTE1@C+_qw;b7Cew)08;L++$sl`fX?H&f|yo&W4$;SZu>;e^ueoRBMyl6g18;Zi!C> z@W?(r4-)_wPE4%cUF5K4rgc}aZ`a%>uQ;o1!!2i-!|}bF2X@Vb`?gM(RC*>>+8uNE zekge-Sn(JegdAA_2Q+D1EU{m*xX@OMrDz~+LgDr~qg9$T#ga*oKT@8;73M#rzF(hg zH^1#moojvg+B*i1u&XC4uMhFQRFS6%^3lJXCjvWbtWa|jQFF52kiIX&Q%hoZx$sET zZVY%Z8#vP1F2Wftt0G!fMTEaZ97UM6h=?N*ToGn0g5Zh}Vu>KQA_y+F6giivlmm6i zH5|wHPZS`5!%!KX=PFmYKlWfUz7fB=jF!iM85?UeN>@&gKAoEf_m2I6zp35xpX9 z<{5xKBHxk0;6R#8?G+)&AM)VT1GxhsM|vq3Cy81R7I#Z+ibUPa+q=)3+Pt$iv8uba zuBLZocVmAz&@iwz_OU?Fcd2hpVQbYH6QAsx$+sNk^(X8~e0tReuVcl;@b1vw#PFt7 z;mN^xWy?&cbvD^l+7xYQ8%-cX!nTFhT1#V4s~{?Zf%+EFD)7x zO0tZ>SibOK#~^#YuO+te(mb)!lZ{iQEZY?7CAA;Vi*?U z+>a%47i9M!?RlD7Ua^jY-87Y5yM_a(Ru)|}BEC7x9VGTAEAG~*yZAU-rjFX>evLpB zrA^SdpPO}j?GS%E&sQfL+@@U%m)kiwK$C?!b=<9;VccSD=UyTdx7(Rz8CEw>llCv z|E_B{PoK3u;&geNgUH^3&Hwhx469H~@~G_*`ke(~_FNmG3)sMM;6v zarwnh=6}CB+E(qVar$c8tB2MU6ghh@`obqFhnu#2;_agyb7#+%bl3NtI2}H|plxu? zaV2em)87$opG*Chr_|Ga+SYh!Q}OW5$xveZdsh#YhfCjkRoAorU}x23<*jw4tH)OP zD|-6TUUR13JkFGT!YXuvOTr0;9O6Gk2p&Pea|JK>O#kq(!TTfZ-&=W9{7WpT#SB<& z=5bsf$hrP|d{fBxPIZT%yTxn1>@x$2gnh*yk8uTNE8k|Xux|G1D;EBH;WYDy3!l)> zaNvR{7{AB;UG^1jqG?I5`MmeKC`&&~Bg}4xSMX-^Vxw7P?=kCilu_7Wh=aAJliqEtWj_}AKF*V$u=3@5wpii3vDf@M zQI3ZfE>IBhwlIluWU9qfJ}cKmlmd1iPz`8T*`b8AO^G`@Ov~l3YYW8MdkPzHkIPSN zauw&5cSj?o%~Oren!I9H3GYr>c$TMWC^lrFc%$>+>vHp6<5{Y*u`IJjvrrwW9zwNAX(;G#`uI9`xZ6!Eyi~g4G1hh29`Fp&o(>h$azHrAA$z< z0b~7Q8bHS8g7wy>e&4a7g3>-@j`EZ?q@K*kcKvj`m2E`c*ge50l{uzTPB@(qY!qS( zPnZFB;6Fd-d(d~wMccm7e`DnO>%nRT*Lc&{$RhfjYbMO_K%m&Hn7_E{bKZwO_|Mn3 z-qd#^Sdr)4%QbCqi9F^+7ElVd9M z?lfQO=&wKX>^F*sDiKm71SJeBqSE0$D$;dYN6%<irvBPm z7A_>$|1tq$G^7tgsnmQ^2G_cTceJzIO3?~{))3xN* z=4X#}Z=-zS0&^Spb{id%sLAB2OtI%^x<*PYH?iS(*ACbXu;xO_ip#(K5Ba-4zsvJc z#|OGz|1FW;g+ttJSlz8vf`FO3xw(^taqLhwo2=;2cOt{3s!Yt`Z-3mo`}4c=t(RYa zZkUGE&wtMd`TRSos7YkJHc`s?VAFU)MhKa6Vf!%?e7cNK zM+=?IC%b_%p9Rck14pu0%v62@+mV2ycFqr~U&J_?R5LC~K);Sj*xB-9)`I+xzj(j3 zbNI*?dWM%(cF#uD-$>7JA@PTB*zV1*y~&q?Vsm0{qI>(wZvD4)dOYc^^mg>7`_wgW z`ZXef`EXvdXg+ojLU>NRz_X2W)SQUBBm!9aV!M~Qk1JoJ`u>|C32$ zGJ$pzP|h)pC#nhE#L;Pg(+RZ$Rc}HRf8~^$fA{~C9$Md=TJZCbjUHs9@)I*Ym^cR_ zk(BOmw0t}EZFI)#yq_=U_im$F>`kpRP;5dca+Q;-a3}CA6OLig$;k#zc8EoZ0Hw`({j)&KLX9Q7;NM1)6*$eS0{oJgcc>XGcYWV%2b3xL%| z1Pa*xqrn_d>yb=CZ1#C#Kjzhq$>TcTHq;iF=&Vn)R=j$WA zlWw0YIg;*6+Lv_&hT1BsOBy1zZSkVYijmmF`eJv*Q0NW6dAPHyw2~ZP`BZmjcZog{ zEwOiDpY=B6yx$lVX^fG>*qI@J8n4-Wae6xt@la&}b0IwCr!U6V^ruVJiC0T?izAe3 z8j4i6F5l8?R_9OtOX7y}Zs;=ytGmZq;v0q=qpv^YXnOr2sEHMr*6)Zw`7sn%8DE#U z+HuBeVAyX=b8pFCOaGSh*CNrS61_<=x}@^i#v>of=~}cEhm+7#6JPepm+OcH?WUbY zdmqh7x@bgQ-^HD#Ihsckj2P33EN1Pa-1_`u4CkFR~>Kn>&M={dB|5H$+hu)`e^&y=!&}D+0MkcuQR_R6kG1gcXV}( zcZCA03nJ^@Iep?kojo2|ch;2jot-Q94$QR<@1AbW9$hlGGO=xWYcfo3afFUlomC+Qq^7p67QVl=0uz2t+bvY2vL$@1texMC>m z8TF)D`ly0&R)XORKu%bZ7YK0BNQ=@YXzOS$?lhvV8sO82x+=;@hM-w9O|$j}J`%!H z&V@aH!nF-nIAhlZSkENJr^Ig~rkj2ICwgk?hc+hdzBe=)ZFI8{ds{#I_@obA4V~+2 z>zb;9P4&^il5&S-)%F#eoi#nz8moBG-+R{W|i(9q^M zVRKbMNda#YTP;%Ybn`3LS@5iE0Q7nBTGjZA8mJefJNgXLM%Xh|_tZt<8z$}KR( ztltk-#Y1P31ik7&_E9t74xTS(iL&vv_R(d1nnYBj$h?Fm8ICe~@mniIHVlA5*(u1c z)`j63gxstQyC%Lp?>_hT_$LM;osLsu1EFrmxp7CA`IQ%f!52*bwb!Qp^uQOs@Bl!~ znY+xht=owx^cmloXJJCWkyPXD;R)HQ*ak5o8YJ^7Y2^l$ndf_*FyU=*lD2w~Z=R=F zz%G`JhzeeI0j0U=b+o^Ma{+a(gkCBa8J85$UIVq>Km!AA=#*EH(U#F1ka-Qi)vF`K zwQA*huHuMSA>k^JV_CHFkqzX8j8t;gPEw*V5@DPM#706@g_v&(w-Sjg9`5Rj&28Ag zwi&Zc$pp}o`Y&0VX8OPWf8 zLtWLYhDw`Cnufco+a_XhPqDkLSNbAP8|xJ;;}Y{6^L8c4LZZiHsjGOE$JQHCWGo`x zpqKSoP_OL_99t&fdy71mkiNIEudT8+J{7k6U|lrm?~C!btj|2BvVAbvF_WmTY##`A z%qHrim2G_u-D8zu{;~m;vDti&DOETs%9>+C<$7aKua2^Az9@MSzaLBekl2}A`EOj= z#-8#LQ@hxXvYu>y-29RC4E`u_TMG%8yJEmjC91fsKRiIR4mKPh%;yeY*LJ~&D=)8& z2mdku)6*Rj=Es{Z>4^4ScU_{V>!P~Lm|gE2@nKw5SnHEfE9W8KPnj2npbm2*l?;^h56tdSX5N{m@UW>v|r2wCBia z0O7G=@*9^gvQ->uTg4V|S-6&fVN-S%&^LxFPgwv$)Z*wNvX7f zlAjKADhImoTn=Pc7Hx4!v20fCH*j1*lhr1T^p!NJ6RQSqt+E-Upv^{|MxRW)JH(Ee zZu9-ut&Ok!NdDC`v~}@yi$3k1xo+myzy5XP)(C%9m%8;7a)!+3q@6Wo%?~C2X|8h^W+6tO% z>~&N&FPmxelWAM+HGl3kt79>q<%gQ1)+skMq){fmi(-e zeLw>pO*}-e zAd=mv#Ac8l-!q$k)YMSO5Yn3lS907aNiD!up#fd|YNxf*>M_09Pm!rGntCBnMozD) zN_TyWJ_)+-EiIDdSGnDpA6WdE+2}Lot(bWu(5tv_dX0i+KDWS3YL9=;NEUh`EoI9ir!%B0dMBMgG>3s+y|{qpI5_L}*tlXLno^_SJ_&x~CYJ5&7u zhTZJ$KVl8>JYw_d-JS7XEi{6gdG`;rx?TL+?KOW@klJUO<37{fe`Mm`y!!`b4D!A+ zw>7xrdMRX=>jzr-#|;L|PnfA6_{?|sQqkG_UH1;X-j7{up^pt~)LIX|c_XeCy26Dz zf8-GA_oa1HHdrbpfU-@1Z66`Ph&C5f3xe`$zP5B zl4o`CtZJSmy9My9^onTBY03%~sFl3SE~HCu+a!TTEH4zty~j-{pQ{`UG(c@!%%sTojS^CF)4N>7)==@}T*-5qUBuA1_W zUb_Q3b6}?z`R@WdD~_Ityo?-LlF7?XixYQ63`D*RT-OXouuL(NM zp`p~jn!oN&C9Dt2ib-?fK6c^w4whb_NV|NDo!tFFmRNeW%c%CULo4tou^?o}SUVqL zCuSmM?Ro#gzOZ||y8DzP+};&`{det%+XLhF~j&qu2A$Hc;HFvg7u#W@W?-pV9M zKPnO{3`SYKZ%ZuRs1uQrjxZsYU+U-saupJ^?pMN`(u0)rWbcV6NzcC zG8?T)Sg!{czsQtYLRmhj^Q1xB%~xkCzr6Cey8bo2b$y-nE=R+uL-KKLJpHjZu`O6| zM*rGEw=-d0uKSpryKrW@cgsXeN%LTM^=$5OY;xsChejJ~ecj!5#|e=p#KJz07gLA( zxLN9J)4P#LeQnk|vp1#6l0fd7CI_0QlAi~$P3pKsfx<-{lA%>ZK-%P>$SJ+6HLv*&M$9{IERh5CKRt=d~yJbB}F$S-W)<}jYnBhdbRz7R1=Mu8y z*mS|2lU`?RBu`nTEGw}!B;X;jCH<`w=IL{)qHBz8GQ`RnD3zU{WXTE6o3^za4sqp5 z$IUUbug%O~HB;PJTvgsxK0EThx9{wZ_D%%a3xi#QJ*Bl3zNro2g57H?3M%s33hPVF zm8Wj`-09!j99_9=qKEx&TPm$z6gDNosRw8Nd0p{9Ov+|t1vl?c0hU@QJ7N5{6ie$h z02xanhiS?!XjXD)}E8&z5tck@g z%X9qzA%WZ)df9%eP1*9oNpT4QH4+n-3-reKW+sp+TdEMW&ul`(ssddTC){E$a*~29 z$Fji{f#^(+`uqBAS1y0VaY<7BwH}R*`P`P(*=6^a@Hg{-air7^elH_E>%sSj#fgd8s~%);;c$l9mQ<2vsV%)jx))1E z2Y^(_=(4n@^N>D}h>zUeOT>p)Zix?MsBa|1Bldn;CQ0E%nzt$g13eBB_iFnw6$4Qz zY(bMGiT@Otj#al#ZtqX7Ds|?CM^<;NZ=4xv3$Hk-clzXFpKESn>J;e;>ibuBPrhq& zEE=&Q>sO6eRZMI>dv?709y8imC-I^-o@gX@4u*7WX`C0wHeCMA4Vh_o%woRLU-fHTdR z>qY)HB6nMx!&u*T1)Esmuw;NRgl!BFp&2mNhzL_m}kUZ9A=@vp87VIa~9NrZeM5e~ztLHRua?lF4)r{UjHzGJj>A3%|A* zr^~KJVLJu9csC=P_p)&V`~4l-`36g(hkOUpDUxb%mfgZl?>sLY)}-`gKxd7lFsFgC ztG2KMQAIj{O(+~xkoe`O$edrsrbF9?%6lt&$BW|rnJwK@O39ESPfY@BJH_?g6rf%ad z*%L-fWh_)BIkNG5`$U#MbdZ#{^g-j*SZrDvS4&jkCQc9yaASv86ELVIU{Gy1bijab zK$33c2C;;rOP+Wt*jlLs87yCqxH%9sCUO1rJ+Qysbe_I zI|3GNUbxsQNB&e8>t(TertYvJZHs4v?%%`k!S%v`(Hk0S^GWZqD29|15|W&nI7hO@ zE&+2f-t<2EvOI};mxwv_&+oj(_m8W6-I1$&U)=az-}g={=<2#+v-y#@nHTPer|yfV zJ{4(YzGa2gO6EH*`!aN}JwpOyrRUpTC7!h*vh)2tq?%aK0;b+ST~>tn04fAnYTH}M9<)Nxt&nf4Q6lMtVh$Q<*12Hh zfL?IVz2On@nPB%)G)5^JqZBeOWg$~3!M9Qt&Xkf&C?%OtN@T8-bu*<1=2F(pl(Jlg zYvtaC9MI(6QUN!hIM73{IZ!lr+5O840YYA7QN~F08!Xn*@22tofqaHj#&F6QP8q}D zO;$UX7psGt_;4HTF4}{%=V=Qxw;q?irGB=A(e;iI;0{P+KMpZ4%I(02SPbF&x$m*I zaDRwtIY?9Ym5S*S8mor#!G_+`{W5yF640b(T>qkpK1N$cTTja)#nO(Hmax7|aH+i) z1T-gk`GB9;nk*4Y3sp`#2(YQ`-`pX;gNzD98Z{+9kAVHz)b9F7&D_vX$(oh*Bilzy zx=P2^2D<%Y@&3Y%bB*IW$4Vpb8SI|w4kU+f=uH+SHf?r~_J+C>F0;|;U%Na!+uvkv z*yKrc2SZ)%6mQmDHyK$o+IYk)g)eaM5?7BR+@euqYHaAu+>xH*z8%I@!RG ztozDpL8+J38wpRq?7ewwhSs1!oEA}-f+AQF}JxgsSYdC^FcxRrQ|q~gR& zk_4foKSbN6+3BM-XW>@2I)3?1h2X6L$@_l0$I$xhkz5H44cLLw>UU%Jf(Q~83 zNN+J$q`t`^&x^x%6YyO%vZe#QGGvZRJUh*M63>?99XhV9d#UJ>&+4rY60eZhy(!k_ zHH=DWjAb$gQ5_3%AR1tI`rxkg!S(5bs6J3pStyHjbaLela#jw`RtH+NO3|>0SP=)Z zzl`kGEW-8{AQ$_si!*vdL)N;>#)16xdNQ?Q-=bvYlTm^1v_{cq`C-rh7S=Hc+ zB#^L4W_mL--3qP-EvnZWGjH!|1a=vV^t~cso0-u9En%DaT{Cj28S-yN!ZtIN&4{FC zL{c*%sToPsjD&4Q5;Y@hyD37?OElxyW)}OiClO z$!!a`Z2`9}0EPl!C;)~6U?|}31>C)WyBBcx0`6YG-MLoZUEf6RUce|M$|Sv4q~`S~ z+?!~((e9$9bJPnQ+tSzzB1y%_TFYV%1-`U$x1Y@}kAGkAl-apYzGrj6rVZX5XSN+*H_~+E z=dRhI#?|Z04ad7m-)8;p$d9SJSdr&SozgK;ZB>^WSYV?G#9SZ&h=2?=B z*#{DBefCn?OwC#y>#W?N22*ly;(G+mpQJVy^$+BomVdID=a|hOG(*d_56)_1Ei%

    is|7Wf9Xne`R1pB3j>D9rdvRzzNG+l(ANqnCWhH84!ETcW&HNPG7BnOUFa-mzRc2Y^ro7eVmT1i@_hQB zG5ysw>WpCCIwaavuxd zMmJvGe}Ulv;?e&s?+Hq;u$A`%O&&1FQxXoc%?#V<&w2p^QbIG3Q->Rq6EQh4Pt}cK zzuU5(dWmVJH1p|Y2MnnXOXu?HIMSQqm($0T!PbFt)tM1-9Hx{ToY`;;JB{F+GS80k zAS6g)*Hf}cIVu}4`7_Zb)Zi_jnps&E9%*0U?~8^K{_@6}>WbFB#+ts;dS6?4C|+9G zSW~rT`SP_@b9*NT|1h}9mv33o*si2CKReO3YNE&clVo?Kt*X7eskXnVCfZV2TH0Dr z*xg*&7HF&)XdIgxp1B*7=iP(Jb{}EDNa`RK1yaNDRd6gc9OjMTP2%~bcMp=#h=@?> z#Zi*J^M66lOFXkB@4w9E{Uu)iR}nZIaJ|SF68UdN>6MH_Oh}=28I#yDB4?B}$FZdL z>*>YL5hqb>fiS%uyQX{*J*uf9u*KBh>JRzZdBYzj(_&Tq;+*9LXM0b{+u)rk81&wH z?sV}F-#K#5w0C{~Y2I_sT9*3ar@vZYUj2!$m5)_AKljp0FGk-LJ^UB`JIuk0#|bY; zyVu;3x>0cif1Y5riZLn9ms%FRE3<~WDKj%m;;&i9-R71h;nv*E+QmbYh_zTKT0@fk zY^=HG5e%$v*st471R`^t}-vFF6(YNa-sOZB3XBl#i@f^`;4E9 zf=XA(iH4Bbkv_WTzLp{RSJXWO;knZ4kWJ-SUP!ZP)qw+W4#|NhhoK2s}|4dUqB`#b7f<*uS&ykUGpp~o|NQ@;7R{QDxqTUJk;wlW-Ry`gJzvMc2c1=?cO zr&e_|l&+czbr&W_zd$}5@SDLjn^qGo{*v%trea#f(UxqKwj{8YH6m=XvI$R#Sk_V5 zR)s_K)$L5I(pLxdfs`PMcjHLA9OB`~2l4xa+Qhdhpa~;NbYDud+1U|4}7-sIghK0LnO49}!~^PuiOPbMwV%(r!QhZW;B>GtPeb7|M>)!26zJ=CH2uI7_#j@?UgsSyb5~`~- zc28LRFPp4{+ylkdfZLqu8E*fK@6#2Z_I@VD?u>@_kVVv*W6(J&;_A{@U+vd$$mir*0fY}N%~h+LP-UhGTRQrH6N7Qk6J z4=f538)!WTP?-x?#)81)T>(;}VCoA@E-<-3LKrO1$Dt6(FP54RngkSNRO!Mv(GX%A ziAIndm)J&f+#@dj^#q-d{j3l;}I7ADtVI)(zG~Cyu+%injH>={ZGJhwlL(*}MA;u^8kY2?Y6)P;6**cN0b=tOSu z*n@ZJVLm)~mmXN#!<2ZK5)VA@!MpSz5j=R89=uBr-X+(HhhfM8t%(++Eu*>cG(7<1 zW-LGTkCoNaW1U-Kjj^)|cB~2}{n4|dWzj%%w6V3VyM-F=X5tQ< z>BtTd`2rVSAw2{B(Ip^G>(M-br zfB(Rpd-eM0>fUqS^Paan?|VS^A_;`-7Ztxx3DGXKC|q$T;d4j>TB|akh@8MPMZ)7l zGi{64E|yl*#lqdgMTy+@=5ORxO2#eL}nb5{LruBC3rb!cRph*R_rMki@#m zIi*<^O-5?8v$h!BLo5^t!;VX{@Qh&DmnC)GP#XnwRTZkf+^3~{sg?5v&-*d2^jqWc z_ohmfC5A%T3PdA6?`4sg{io4?7?^3U0be3Fd2}Yj1Sl2xC@7f zDE}50LV2LzD#8)O5yLT#L#RPd;)0eeOGQ8hrjj{^KAOX^2Ztyibulik$8i@46nanK z0=M;wi|6p+1@kXL=a!CT13$>jG}fCk@PpKupsGUxN+XXJ3vFb|I9e{8O0>9ioWtnL z5X&KuXCTdBtDvwZ1JhVtsKOXigAcw9A+>M^{yY&E(waP0&``^ z&_-;p0#}A?Q6CFXpcJ9JWZ&;C#@*1FJG!1076Wz%=C@@0=a!}ft z9#9B1mhdz73&HYU=%g~Y7XE5=1^l;YMPH!21GRSZ?p&fv#EKG74+)7&V6Rl$k{rJSEu{M7f;*d?8_BhlP}{O)z14R9J=s=oxOlsuQmV^%lytykQ`0|+cRh~d?KmF9@i81=ah7_uRYPut zoulNHjPy|%H(fPkLoUpXQjXd2KGW+)h1nY+C{C=eQ4PiM>lS^R{4fls|Fkq$Ke(yq z>wZo1edlW<>vOZP1H>2ax#ym)qutul@=SbbG<>w{>tmwk{~+~aGZx6*!IBzkFlAe~ zBd++gfOzhpbjrd?$-He1L_Ra7D&v33)_oAHA@mV~&4s%0oO#h@UaXiGw1d#b1BR5Q zj|kTtC6%*#TwF+#g=KMQx|kX<%@X=#qocf)r%qp)fJX_hu#EZ%l~ceKW#F$64o}Aj zIj^;{b>;E$3vN7we{oeYFvhrFWzT%FJih*)#^)LI>-p!4zoG(uPn8`M5x+whW>5E< zLBI8bP1-^2+g&jg^E2ap`pRR-vUtzWLqj&yAH9d6Wo*!p`lc9Wj}#$~`Puk-D?c3Jzd zV}Een_0C8%{t2=DBsT=V^Ymx&SwHx=b0==pJYm1pqu-jb2r*BuL~9kbuaeN(^9&6+ z6mD{=G2es}up4GVwco(@ke11n1n-Y9!+O_$FoI@QbBSV1#w|@GO4B#$*kw|M z6>J^}u|>!ccu<>!z$>QsOgUQxj}SQvWf-|fSeS}%1aZW0jN_Qcu@}ct9LI6wzz&qP zx7|Y1fG`5<^oVI$hcj!=vP>>3Pjaeu;w%&LxC;sQ^2P#Q00gH(5X*9@eaQ$ptY=J? zinIZra7`Ksj}WV-W0Gh-rjl!~MY`*9{l&#~dDVFx!Ej=9TC1oE7}=S-0Pmbl{q(Hc z00)}t0(oU61$p%a<)P-r(V)As%vTWQPRZ8hz^Qod*)|6@$I%E_64f3<%I-8G-i>>cnYJHFM<2;N076-k;LBGsFztp(g zYJZhQ=kJ^IquJp6c)j00W_|B9eVyZXu5r-)#sTYh-m2(9?2q<6F`qr)LCj|zC-kqN zi}#oGB?tXyI_I;bFFNSo6VEH@o6_i<&yqfC(GO_f!y8IE-|Ux;-{pLk?H8=}cup~& zN%tCuHTWv6=j42r?KiMJ=5uf*!TV#@%xNALy)f&o^kc?(t@*r)vvrkYK6jJQ?U=q1 z5+V+Q(l^EQ?Z&*4;KxzCQ5{m|3cku(4-!5E?iNDbQKqz|z z&sHR*K|Q2FJ*0uGFFTI&JdV9Mj^a3ugVKOXWxz#gPz|LNN%5ix@nfj*gc}QK5J8Js zG4tgPmR4ej=bVB77?K%XS3aUpEi*x4a)rhKN{|; zO+(YOM=!hH=S~jyPuGTP_N-|eZ7p>VZfq>7ZL8YT)mB>UZER`G6b6AZcebart$U(> z^KxHtSw~+>w7#RiB9f@}`%^EPBQGR?9QiFyP7xA7(ziP3F9-=B>FXTy?+FP&IwgR~ zS>#Yk0Ma1=&|dMW&3Qrs$nRZheUCGW5j{w z)a(8JG3$G;=@G~8Tw~L<*MtO+zw=hop{io08#Q94)WRPBA;F1TUE2inP#?*9URKGn zvv$-Jv6s97PLTn}B$_8--Z5uXK?@O)lkh^O$Z^Y{)@*Kp$vFzDBcRxIesI3L^~!pn*HnhddN zNTDgz1nO60h4hW-Dy>1LHp4+b3QLuqIv}w{@gr)nK)BP1idphxU4LiLQ*^`h#%#CN ztNo&BG#<(}c3(c}A5Imlo;`f@)?9aTv~Rkmv1ZTenbkR-;GU7tU`JK+mfH{L#>`aT z=KAK2Bg50%i?RYonu_Y$Yvw%ehDb?KR=7p`bX9D!rBpAiZSi+SQh|xl_3J%ZW5s3d zeXXsS3nQ__U{NR@Y#MC!Yk4&VWAl9-b>n^GLqp?AG8#2PvcDwwdfxRB!MA;o_|FTv z7j#JcJe)9}NPk60c1d3(9p-BvB z0liS3Z>@7;DZjIF*W`}E0^JxL?_3*f5AGZ-)3XY5szL*u4V}4l*>x3Fb^f~g%JuUN zV>|V{$==fK%d^Nc$RAru^p_8>awm07uc~c|l^4|I7FL!Omm0=&_QhMKuiDXL_S$#F zES0^s$sL1UUPlpE*SMI2<>;t{ zwO*-Mw>|gN%(8>ucE)VFStImM+R@DMfdTHqZxrDO;$YM=8-I|ScQAyI5HpB-Akxbr za~NyrhdK_UOcxxots8wxG-I?j{nN90V067eR2^%G^T(PK_?ncV+0i zGW1=U^x-{;i|28?XcES8F^^-fBv4Sx!cwvrd{9-8szKTl(|l@hZ|U2SS1wRxS`*V9 zVqy&aIP)2pncAp!#ioOpY=F5X6T0jiO6GZKBF%|aT9Ms^jTB_nRuL&8j7huE-xexC zYS)mN^wqPz*qxndJy^OYF}|s|x%5cct0L=b{kTm2((kGq-?*!L>871=k^gn+=B`*& zAHJw_A~+gr$gL?^)o^;NNcv&#D{SncurLT8oj z4{M`V`ycDnS!MeTY!4o!r2QczZ7&wC@6pFN?V1tX!w6HKB?C&xawU%C)@HfSqmk1uQ6zUJw@Lk&aiRgIhPyg=8cr~0g{o(4^R7=1p4MwY? zEhfkPUg(Z;#Map(tRE1%n;hY*tPwt-*&GM!4eb@b*c>2qNBO;D*7vX zgtM2yHZjtBad8xfphB#G%H&_Eq!C9{q{JOLi0Yc1K`MQ-R_qh2Hn%cj$XVDSPd5y= zS2k|GURQue9qvAt9KDlVwl=#5gMYYtZI5k&aAPC!JQUY`^W#PC8d{N#7{jBTuVc&lmUS zvX1*Vi}s36on6v5rO|nRN#7Q9w&(pNeIwgL=W544zlS!^?s|k3Akuf8b=Hp;j!U(@ zn7t^qQ$n;m^lv+zT7uDZxs*$g%!6PgF6Ek7${FdQ&QI@d&huEcxMg_}jvx*L<4tEK z*LFr*8dbSI?n1)Yr$V=g;#XdwItvG-!-;9uih~Ajgg-ozmD4Us0te3}aVava+HvdpM~dZl9ZLe|~Ua?PNi?IQ6@Dncw3@4Y{Iv-+q6Uf4V94 zUCvQh5!$Q9+t8NBcTYdZZiHu_b&Pia(FS2i*Df4w-oxzztxusy13MhKS-OGYSZ9XbI84>Jomm1Y z>toUx5~`A((J^{P<;a%M5AQB3L)M<2r92*0w)fKBi*s*-b4o_v!bYzM&-y8H#%=P6ARFoMCcObR~eWBP|h4WG`!LyXO z4l|NkDs8z^GJ^#XBQg@|(zVA~n{w7}H|IW@2n6v6l#=qemO7Q4jV}9k6u4f=g zuQkEIPe4#J1qLgi2X4JQc=N;u1JVTX*rLH3sx9JF7l~H1geH)M~Yv9SO9!3VmW*X1SC}A$n zj1&^+$RHTADVa@090fD|iL+H=$vei9*2zL_#{8*uVB)@2*=trOrw({87+HXn@@8xK z6>&fIKmJ%lcPRBWzM+)D*j?0^Z^fJAk>wkb3kvkVfWDYcUkPZhLW7BbU;com;v4cl z*rAdBdfp++Sch-%{zq`1Z#s6Qq46ZR3|#qR+$ZF^SeDLVLcPglD&k@@RfZXz5y(@9 zo)9TCi0Q{*QH3nAUnNT}OO!kyUdU^g^-sl`hMgxI3m@~`liI4?)^awKJlJ1uE_U0p zn_H)S_i5j8EM+K)Yp!(DE#WxdnRd|2!VW4IeKB7l`$Eu#79#0O4*Fk&9VF?C4*JW& z4wCduX>@8Kl0IwE4`?q7dxv!Duka+9&m-&|*?z%lkLMKjj%1f<3;reoGLCxtShz$x)t0 z8YclUqSU-(1s)His4fiU0*l6tLFvmUkfT7v(pVS7Y!^{9YPqU12=^XTB|*eiowA%v zM5~CD`NeL@qO8o%HpN!gZmeva+Ba-n^-k?A&NHyX_Y0wsY^|X<9+rf>zKzw3U6WH+ z?@ID2Ho>d--fbfV)rECcsV}$RT3f9Rlm!HZqa%7xXbiOWpfObAq(<#kF{5N}uM@p3 zJRf?KeiXUSU9LAV>)DKuGrJk?3H-yzwpt|YK2}zzO>lNPg-#xpQ=W;UW`|b^5iQH} zP|OHRP;?lRAUIPbR=_Hu!s^v#8J?dl>|=K|1@~6OOFjPDhRSMuR-IN9jD=)xjptps zn;n#Q^nkyrYD3J?S+(6w<+9s`W>tTn)&e!FgzP6SXQH1Dus;+%jq5?D<|ErLSnXc} zoth8nj7*J~{SEq8toG~K?Q$IS^MuVPXUSF8Ea7aU?Lay#6pWAhb@O|W0*pAy?;W$g z_nJN=Y(`1H#zD^(Hlw7!m2}K5NDX5nBxN~f*PQDMEX8Za#+or&UW^vcHP*<#vA@5K z8d{sf-e@GDQ4-oP^tR6*8KYRI>DZSr2xjFVt5Gz%o$>>5HU8=O};|>S6H5D%UBh5weQDDFxKP+LPXyIW~a_ z&)T70>CgAVpHDO*chf`}O^l^WsM&-tNT4hSUj~6{aAvhW?rG7e{LsYX4MUlOoH)a~ zA4w9yAk!>Sv4uDowI=~Ib!1tJB2|v~z{eZ9d~o%bSJnIL>nanARgvVrp|z1%w5BUu zx@XJCY;~k`xMz4Q(iyFdHI&xGCY#H2Pf<=)u>Y$LzyAzU*g^{feGQRZUsh>dw0>%9 zTezXBDcKcn2Bi#?=ApIcz81a$w>cJNMGj-u;pry9BzJD&JyN%J|*&QVp^zYi1v(4~ddti1)mM=8Ft1jH` zN1J<^hg&P+U7>~kzF;`7FuSC-wJwxwsmLj=D;ON!y7Tm_+H>)Oi!R$X8w_=K_k_ZE z1=)z^v1g+Sm)1zX-I-Y942Mp};_F;%1(PT`3%(--nvC`J7*D z+5e8)hI9I&Ym!ab9)0I*h3}=*uXpM1YL3SKr7QJU&;0C_*TnOKy^*Rw?r^f_&nZ@C z#Y(Bo>36}pe=qHuIsx7Ve{n}T@meY`&*mVNRBRJ$qetTD=!eM{krB)SI<4;l;e9xS z$@UyBUJxHRKZv=I$$jK2#!UR8+n6EDdM`AOsv&`dK}3L*%-rH?qg-69HS^-Wnt;)q z%ua@ud0a72JifC{bkI2WU)X_ zZ*PH*4fF)$_j>&v1z{dbhq0@DO{%$ijk@?wvOJh;9!gwUav!G;Gg2#ti)bX^2$Eea&o=}#o5&x~UZ zBvWg473b+jer6_B%vwP~}x-YV=u*?umqJ?%nC-#|KM!W1+U{4UZJpJ3E;$Tf^%Fju2N zt|WsFFJXq8Ji!(ThnCt(g4%LjFoD8u3a&_Cz@-pv#g#;%w1Ue@Bt9zyQV6m#1am0_ z-=dxHXJ+ovw@7(fC6u08;Im@*bq1B;pF;Y)f?=YdiE#g(6OQFTV^q@=I2M&>nr88&3pbq#}tvVw#;GAb?Ho_s;}d(bgd8LOEc(R>v8 z5oaCtUK6Fe>3KmK9^@O(Ezd(5qK{j}nkBFXY28I9rn8@woe4Rm-B%fKbW_sVuZtD& zGPl1bxU?~+vfSA->0JpEvpTg+cxW&a^<`m8a;IR-!~jmB9}lo!U;~oQnesb}^OuD! zDcdht?b(mCC1ravVl3`2Y)RREy>mQ_R%>QmYtJl52BKOyPF~~kH2PH*{Ysmz7a12? z^eYq{@h<&WLc*X@2;b`}`Cfu9B!;AKN~2R^NcwCVosvP)7bJb<7tnV9Tim~1-e1Mt z1YO);(l@2id4EZtO`}sHk&b@WRB#>qdx=2Be;J^+~>w+c^}eyjJqxREe`sW z@vud|*+FkJ9#nNmQ_aXX_o0~hZs7$C&45*$JtQyI~v z=zZggloY*kt7V3D@*#R@WK|3O2IXE^60Z`TEtYWo4CIGQabv~SI*~bzTKQ*_#vyMQ zSu7!K*T##0LUp3w`^Q457cLpq-tK-{b8$=4bP?M;+VK7F>nBpTTRr|Is|Rm$^mv_n z$)exxp!XZsSoG^0^lo>(qI-?EnInXewmGTUASbEuwnnhqU1xpoF7taB#%_19MSr`4 zKJTEv!$E(VWiFef}b z!b^+-2HK4sb7P&kNHtzwTC?03?|92XIcx|Y95r1goD)8t`pS;=y>-#eZ(aDu_TJ(R z`a8oDJNuUdZN=M({)_IViT2zQx3O#M zJGg~L zH;F#Ikw6}_lXR|^l734Xog6ReH>c4#mXdxdjn4H_(od$*ImVKH!lXmGtrqJj>5ywK zCq+ux}jbF}9=D%&4td-Qz=W+v{Bp2nI5B%N^CoO1=uNHtTX z+@)2E0W&aQ(g>kEq7rSWEk(R^vHuYS0cxq27nEgQ$TF00Bo{qnQt!vbhXs|@ndB`I z+L5bqB@CfT@L?s)n@Si$mEg5X@LDB!t=vWBOXlJTiMkxNgcGzRocs9~SGD9Fcp>5#h)Rjf!-vTWGJw z*B&vkZprW6XMPVOe2rMQB>jE|eVtghB>e%>F|X)RJptL<03!)_h_Hp&V`&UK+NMU* zmcq7)MBfAlGY4muUZ$H%c5soP6NSe@QPK%4VZI)*j|1E^&JrX@!j;HN?ihm_^DvaO zro@)f29L+By@D);?UPqU+e`abFUI<}jRxDc+_3rJEtM%GDD2D&PwXBFbXS*$6UEyu zShHB!G8IESZqMMt2XEfobJq;BUJx_#0xo`o z12c@JA^ZT5_~D}TQz|q0#g8AsUn!XbxKNlgUJ#(ixtE2fVdgh69Lzaqo_sOfb8yIt z`e?9m)#hXPjPeY6D0Tbf;NdknYbysUwaf9(+MKl)4sNJR-BzouO?_G~?6?m9bzond zYv1)QbM8DO<^nT>yv8ZlEn*aMA)-Dkq%px5&@-e}1C__6eMyY6q~GG8e_O1Gl76#; z{kj=ey_pNm-G`RedU05uaL&1bGF`QJ?Fg!rLk;(li426d9Oif zEZg6y0c`{B;`2W$tQy(=INPJQbK!5o{UO}m$NY$pKsK8^m7!TGuZA7lP@qd8jR_Z# ziW8S|DVM2L()eJ>8agwSKn-C22Jo8!aCZO#H2{GcfItmEpavjN145t@aVZ6A83Zbm z!ZGg5r8pZ}t^B+z_xo0S{8x(7U={GuQj&hPTi?>%efpoeGXQC-XPy<-hwPc_M9=81 zwUA<0s(H7Q8^)OPE+6kv&UxoI{nQzCQ!>hes-8s0vF<8aT-L#(-mJlaBQ~~@={7n+EmAQZ*M{=5HGe7Yq+CZ_z&5lez$! z^Izd9{juOU;5op#r%G|c`*i@bcBkN=CFb$Ov0I(I6|sJv*0I2bB|kP*_IMJ2gM zmJasewFhUiQVtH{;26)LoS+dx!zC7P)lh6iBD%0Q=DSn(4IIqAVC~?{Q#ns}Yh7AZ zFcH$;l=|>U@5rC{PLQn+i9YBQ?{uTO6y6!VXIYJWpod+Mh0KF3K1#~Lf&#pwP73SBe&*g$2mJgZqTnYs%r zC##woVn8x#YC1=VVK=GA=s3%KX?k*5#g0Z&zACru!L>wX6dpSjh*QnERzq}>%e3=6T}k9v+a|nKT+oK*GxCJv+ELD#=<=NTgu*6k$NAx zt=MDi-lon*^q{{wc)<*NEi|!rlxL6klE0q5%zzo2Is&ROsTXMt+(oCQx9$1M8wt{be;_%~rE$XRobHES^Y#7aUs>;ycI z`gQAjCxo3KzjvSYz1Q^j3Ohm4?|0Bo2s=U2A0S=Y3C8DOC)8ooKTBKCL_jjtvcb}9 zl@zo`J!5sv&}^NvP=>rI4mtOvhoKs3C({WL`j+mkYUsSx(j=_M1vSxtSf;t-2xcn2 zEgy=(W10U+XIYD2BG?s*cic2L{I=!Cq|ee$RHIZ|$Z7vjJ6hShW1_Jr+&_P0x-i_- zSa60Nm~vH(Rb7!642KIZxh+tfvp*{b@$w%99vgnk`l76#E$7;4!tY)NBGbj}8^Pu^(iTfnveYmLMK9bJ+ zNczpBW0lK;Mc;;T6lki%8EC3zy4Db*v3zaLMeToprm7Hw(2P#+z!k-3heA^&aC^BS z+3TUHDE!o}LKZ|0-Zl#%Bc!GSPxXCgWIwR#Ky63ej_LTCE`RUPdKBN<+P`?HK3cOl zxwy4wVBMPa^`kq7W!80isDCF3hG=wQGCq)BRJ1tN zu`nD?!&AwA=4vVX`IOcF0rs<^Qv>^j=zs1a@BwHU4X&d^v&o9-rVg)y{&xSXR1;f= zcMeD``j4j%2|O6Qdk>O6QxBF|DZo(47?_qJjV+*xtJH1 z;$oZmrw7G_41C}>F)g^R2u0g#dYn+QkFX&L&Wmd8cMjA($+|H0gNr@i3`U?L(G^|~x?*)Nx?+pSaHt7x zEb5xxHM;X)=KCK#SW%riK7Y}4?VcUtl}+A%S!l|LNzfj(-uVFE4H_=#Qd2VWMN zvTX0<*_VZ;EZaMI_GO_d%l6k_joVp${aw|kUgO=`{We`_(Cllk@y;|lBfye=cN(1) z-6Z{8ihdD{&ku^Zo)q`F(e@u`CH(~HF8H1VhSCK9-EEAUr&l>vYlw~2 zQmdp*P>YI;F)@H{*LG4XtxB#FN>m->15=%4VS1()5+sr%Tv%M5f5qTXfBcSj12ynR z^kF&VDD|JU45s>2eH$*1UdyV=SV^6@b=j2Kj12R``-)(`H-s(VLWZ_u;}PHKUuieE zQ_pDcP3kwCzOG+CarzVZsdDuDqxkJy*Cu+CWuN91f*)lw%n^nj{^g9<-UFiID z@MTd4F?Ej8kWv2dhFpC(cm2bI52v1c_!(msTGYpl*}r}qqrdVbo}v{`k?%T>m5%>5 z&m(@6&yCH(u~nz(Pn4cVD!X*7G11G-hYPjb`?f0tVXs)J5Uk z}Q)2UQs4BTQ;C{&Wt>WneMI|16dGo$g{vtz5wv~LVr!aVQe#5<2t_zMW4^CWr zcp*^Ov$f{v!g5)}zp(fCWt$2@g{yY>x8j9G{ijQib;CNIx3m7Jx#tnt3M(r2n z<+10d4V_f1rI=YvN4~JkZfCU@nR-JH8!Lx0!6PaF_;QT7MH1?Th8vLXt`;i7Fkr(o zwc7BbG$_k=M3f0HR(d_$*Nduu^~v63{n~}l`0`Lwf23SDItNDYD<4UHw5+kYt*XuE zDXwk|jO`})d9e3g6N_EN=kJ=hcJE+C_rlPg!>N_8<>m$lI@hdi>kkzW`&?VJW&$gX ztTCIXV>=i!iI8N)$WEz&gu9VDHAqCTM6BD$Gc|c_G`LDju|=4(pa7>egQnaUC8BKS z0a$r;f|d_zoiLnOC?F>p^cznf{qdVGO5OboMi{w@dIWg?YG}S<$1SP(O7DHU zC9hSq+#X@4tCP?Jn(b7^%!=3syx82(mOKvuA+7@IN_w%F@PIm4ezQK7^ou0BSn%HH z>C__ymU2roMjKtDy{V-)m>-_pH@dK|ZNrgCt>##sw#|2;r?9H5cWI=>=k<(FOzbJm z_UWH+>u+wI8XXOfT(N85$gb%twsm{!kB`Pv?Xh(HoL-*uTeRE)@Z)PIf zNcJ4?T{JwGt!u;MLz|oCE5jAOvc_1=@WyPz*V7ytXbUtpHq_R{8uN<6EnOXLx%t_V z&ISbOG*{=!GU^e&1VdwvHcxu=RV|P9h&$u;^ku?3fe~kHj7Gc6IxPh&77O?Z>KL=A zN45*i0 ze59=07b>c}s_e$Hs%_JuiJ951ZyG3+?;64^`yECKo1{=8$vr{Mk;<558955-y=(`R zGf_n@`+P5=u~c*;Ub6zh1<4ConxH>` zN;^ZCeU;_eg$*hb;Pjt#ucI&lC2j-eV+kZ~0vUmLzdV%@C{dT=)_hbYa_!Nv4N!9| zSh;pYya54-v^p_T;7ytKmwELu%0_ZPT6}Bc5KvjiKX)pf1om;Y55-SrA@=}NMX^%iJA6NZ(&8z(DsE*6_LJR!8MQ?V&sPBIb zufN2Tb;-cmTtnAxL!FD9tX0+Vieohs7i^fTXi0`jT3VZnhIVfqd(Yk11{YLYlvs+GM&kR}ppl{u$CdBPyW8I~b3yL~|=nVokWW z0c$7}VzjWtL2xr)g?f?54=fG;XlFQiFxl%q{QiQf(hgtW=RY{6X$v1i=E?8(-jnBx zKazTpn&*GupMS!9E^*88HAlIXNdcs| zm=>@vAh^2pFse>zzufMd>&)8J@9XT$swwuI_pTu=qJJVDJ$+R?`u)d0mpZL$&^DBv zgeoK@cwAA(M*9PLyomZce66DJj5(qiGdrWloip2>$mducy?;L;*TxF>)?*C=;ae}} z%J}^+T=7$`jC`7INXI{+H)HHgGbU(0O(*%Q(@~Vtxno-=dWiePV`;|7GS!yJ*kqzk zm3Wb1Q}vfqkji;5NoA&!}OkfcW=jH?$X>c>RSxX zD5<)<5Qwen(zcI|YA1Z!PArOR$IJX(UGa6J1!cLN4gp)eWvY2~f0M_k+A*~3_h73Y zjE<~*LS3+2jLrn+!+wlTsS9`%L!rUV{!r?GJs&cZWasEmO^^!);S?;5!v&>SuzyIo zuAtK?iwo}Sds(M+{)L_WyY}Sj6}}6X)*){QQbW5l700;6k;Dkw^JT0IKgY^Yiq-fa z4KRS&govZBC_`JdpVg_$2*pb+bwYjRvzCd$q~0obH7y3ERt%P{k19P>Bqyp0$09Fr zLvG8^Z1<*J^<%ro`ZiGOTtQM|Zr0e?@Sf62kFTy*t4VGjZ8*Gh_^SOQ)G(2ZI9L-N znA^Jhn#x!c)F)O5Ue>;fHw(Ge)22>Gttu3T{XWjFCLDtuE4#Q_UBRu0RoVl~!mQUI z%Ku8O!(=wCeL6PXR#rc{JUp>f(1kL;+lsP$BWnbE<(CySc2BksT(q^96@9m?uSdby z>2kGZb0wo@IVAX{h5AJqAYpP5D#K_LTPs;c?wV5!F~vl7z8UMFk$^d(a0WtzkLprq zl3OP*JzbfU5$&UTeW-D2@9@I@=9&G&r*mFgcc?g5*C!^X_7>;pp7L7lIZxG^j* zR)|baw#V8-CMVR2QH+H5D_DN!9``5sxiG)F8#rzBJ3*VjQaUBRzcyH@enYXs++ z^De_U&5(+=+9t&|EODhNO!CP%jcSF-Y@KPfFI>THsSaREJ5 zd`2+vN6oR-U4D8`X+Zzg)d%Fz`6$+Ysc|ectY;LX2Z8(4566yq^RmC@4v6UDhPHSE%B`x51b;)o?_&!&bQ+ z$>*lQ2+xsr+}qYv9tqdwW*crmIXa?MJsW#2HQfI7iQ%cL?)8G(y&iWg0bk zwX?m4bKj@H1}zegg9Qsj5v#Aq1tad< z1(tX>n(op`$8oRGN=>HPbo14)kEOVU7aFw8l%a;hPu7g#Cw6Z*sY$Orau(gWTKrRa+CTeJcYQYXoOaCDueE8x{+`tLQs3#p z)9uHv6N8aO3}>P^%KLbe;dkayK6`*VuiV3*NEsQq7S)&G|yr`yC%#P=vkH3K9H#k;sAhRPEYgRt-Z5V}oARqEE?Xbn8`j)JiDL2Vv zM5vZ`c@i)AJdPJ}{1yi{ZYBfZChTThMa5MI-nkxM8bDV!nO+QRwS%HEDkVp31|GK4 zB!_fc%tkdsn=Bn!9;xr%ecSeO-=I%@xP4oB-r!ATqvx&d%JI4NJ%>uyIj-LvYD5;~ z++A-P>+a^&{M+6%Hmbj^X?%06yR5o+=Ry1G^p7F+5Y^PL7US4YE_1yJpZ^Fh3)2%D zI%CDnKpUx*$DT47aMUmtt1u%soO~s!I*|)Ahbgm!P)Xg1I#ZMBlw_Sis!VceWf>lL zERmPJVPJEz+M697Y|74B+PQsj`{35Gw)~dCXkp*Nn`T-EzgE*d-BLH!{K#WXN&l)f z+GkTURfD@GpZV^(!&CKN1J~j|fvV2ZQFafX8Ed$N8UH#x#97A9Je(BWx&NI>7am&C z9{xDC|BGxd{DFebk`16^NfP%#mv#tx5CpHWbLE&t-^$7XI_X))EUbOA{eDOLT`N}z zy0C*uhZZ94&sV{73cXykmzfGXA*3z3xWA;&Hah5z_PeqqUFaKvPFaKJ$8^ViROJBv zE?>xN+_AD++#kH6A2Lw?)zuV~bi``#JfuG@=q+c`wQmc0>zK1W*OZStbAhl3i~C?) z-Xq#~RXN-9{$CgLfh|tDkVfJ@ltx*`$w_%1jH-S=+v^p$N@ksivWrpw=m+B}r)jx@d}th@TV`)Bg>?09o{tgAZK)m)PsYT$d0?nku~Jg3M}9|v=-lQccJ8Toc>$g)dRcvRd~{y5wtvT z=9(C{G!G>;&&Ee)m@*p+s&pjLZztnDxj0Lj+{m822AHDhPD!Az5b|IoN7|k$%;i)V zxiJ>?`~O*i=_sRh(TnesFSTSE<+S9-9mf#u{>b zSrg!w1r_2WyMl2WJzzKXlES`0l;ovby}y4S}xdXrj7ycq8XE z)T9TdZ^{(-? zw6}ZQ*R?0xuPX>Pch)9+8%rWZ#W~(tUuQ?V$8&u=8NaR|)Y4Tu953Cuy=|hVwmC08 zxTZ8#^}-9|TM`xVlFgep_l4T>;={9LBY{_6o!K=IAlLga79W9)*~MrhwT3aR>>~LM3MWB7K0;;M1O?P7c2n$7^DRXxZs9@BW1xx*%6|`pq$9$%!u-e zWSOz_C)e#LX=^w#ycRyPzP{Z#yJM@f-95cMs~bYWol|r3(?cEIwY?kih7&bAVo_gd zcDS`G8u8}_BjM&?v}>w&U?#`##ygrPx~jo(qIw#tm}No2kOSrCA7MqqXRH*P(HBYv zV6P7s)H&=^V8AG=cl1Vv49E!WWI)PoumPb^xG!#}axI<*;YA#Zr>enI{9x8&@S+b1 zHfQV>bn!j>POB$|h2`(TJnu-h?|pA^eMOgV@Row|LangGx4Pfg zTvL}jzb^){^ux!>isBCy7og;2ng8KcRl&g;crs75b=CfstOGZe{iB=HvU%ifadP2K%0TMEE zE16SClaT0jIhxdM zq-IPm((tsol=i3}BW%sT{b|z-PD(5LX_@v8ZAoxL4(1zccL;7k7C0PhSbZ?|n%<5W zT|9MKjP(ywu2)_$r7kPHizo`_09SQX?9Bb3nlbSSqY4@v>rcTxccGu zdlG)X2!#29>zk|txXHCBUcM0n)QN%Od84(0W`x)?e1Qr*Vn3&ykgS%52xVSGI(r4L zC?P0#g_d&*`dsRD(sQPPLeCis*d|;p;_-+>SuNU87RuOn1t>Iy`5Ggx)wrTTX!_2O zF@+TXyk^Gp=~@$bqDVJpdis8O6(K9K5N^O!65$B#d=OO8uUQ$6FB&^ld85^LSddVRg}N|7~q+`<7MF9ZT!`gV8pvF!c&QPn^1V zRkSVjn_ovtTdJQ9MC(g;E)P|8SG4z-XX_8(x0PRlUw$uSF0COAGWRl3(Xp9cvs!d9 zyULsu8P3a$r6*%nXdEa_uHiJi<%&ZMiNZme;MBLJS&pbCW(p8)SYZ*ZRNW3Vw&}nX z84COeIja3j?YS!kCUxR?{IxXB35k{f@MpZSO7Qgm$T?c6MNV#&Fjq>#|}U zEyHcF7?OvQT4i_FWM@%B@jZ73D;pv;ZSjg*Q*!KHGYq`Tfa`-?$Oc_QjU!p;)MsaX0MqgezJIOiiv6OBFrVg+ggp`tR8WSNWzf zqtsA4`GKD7&yS9vk|wanMoULk++Pv&4)a5ETW`C+NtWSUD|n-N?Le~M9^yd)w{AyD^GIK6u z$fyige;<3R&(WW1`q-=S8_pI9XUs_Xh`&DAvHd02K9^H=3j@-GJ`DN|KHTt z`V(?mSzR~yMxAZWG}&=~OGkeWYvMRq_P5~H0$AF}qBbBBWIaFwt3{!;T4bzQYWWbo zXroMszmj!H-MF{x88@fl9A?@c94w+0KsSk{jcz@GPfD{?zjVs?xyZ>4ljWVOyPth_ zU^vGc?YXfX3*Q&Vhr%;`4e{=1b)c#7`&{*~F6+nf^m)K5R=aMIsbErZq^d#yHqX`8 zdt~T8uOmy;bW=tZ-qfsgj2~2c0_yVJbi5m+H{OjEqJ@%iwl@Ph7&=Gfn0&XVpO)`- zZM*hE$P?Xl#`|f{L7d>W)II*UddJ;#W}7udgp>B%Z}$J+bK{va#v|i#F;fd+AAJV) zQP{PWG4FJYUk291u5)REh=Dj&AYvE%-Gp#R#FFU^V#g|whO~mDqlat1EQ5l@>VcQs zW2@q;>ccR7+NU}L4HLVDrv?UM_8H2sPgG~4#ea@$82Vhel1 zQ+s+R_i!hj(MffNKcb)}?{~0q;#>Eq_jXDf(5-DLY^$_ep*E= zn5bY^Nxgq(MXfe6THXPGMB{I*Gu)n$-rz(}DCPR< zgMo7Gxx&g|aYcD+(>F}tt?=yAcdLU3T)@Iep|Xb-znNdkoN*fqqlVUY>8HInUO|>M zVj{GxB;dwb+9hthbTz#C;A}*}tSCn~oBD%RGPWVt zgFJ&LM-U(TRb~4~Q{RrUaL;&ub+n*;AoUz=n6&6FW+y)*y8F65JNq3neRk$k8sSH^ z{l3)qPNJv~@^Qf*kFQ*a7yxid+&W#-*oHYdk@b9?0R@&%$qRg+RAURtb7pfl61XDU9#Ub z;LzTbNVVTUDV{bV!-!I4Lv3wCDJV7}Mg=7%b#t?h=wrb4<|(9aH)X^a2y-|nBNzsv zd@WXce@RyyLqo;rx^i?|wZ&>7t5pkVtX~2*8(MXWuB2+$+evGk2x-5t->nTU(tITn zj}kUG>AVAk;_6~8za(d2$k&CxEgzd4 zoILhSNpo#`&uM>!?sogDf7#=&N&Q|MO+Bp@R+abswzAxCyUT0-*i%uX`BR@p?X{m) z!ORxxiCzbrHYWXTveJhsgB9$=?s{9oO7s?ouR-Xz5Tlr9h+5+1iA#|l^cGNP{V0E% zEOaBi<#rBsn#0X>tiL*YSwm;t&e55D`B_ub2YtIXZb!z>%=p-jx|YUE=e8f%x>oBM zYMNZm8yF5Hx+cf#%6f)+CI|B>eBA?`?G1^6P3txuD0b(rO7?CU4yw7ynoos%Q;jHE z2iIlDmyAMK8LN%6JOh;=;+6A+j|L$Uq~*a&0|}~yAMM}MU~Jbukhr6NPuSRz+Lb^? zapbnkwO^lJrG5Xl%Tpz$Bzefd4jlT;m?K%nt=Hm&$3&z|zYR}a>w5b+J%IN3WK946 zi3e~DgC?u3m>GW3>BpIHrqfRdD%hq#_zNVqWMptRoqmFmKQlOX^Eb+a{%+skQ-y&d zt)L|P;sIY*d3Em9w@k8D+S6KbbxF^kON+5yl$NGaJ>^weRqE4_4^TUyaWV$AM9-gJ zY?5d4WX3DnKFxH^LCk)-C}rtF>G|Vxo8k>cF(B8(8dp0J=;~;%h-lZ}F?cfdYF$NZ zTWdw2JJ{S)GIscZi@pGK$EmxI+;`zrMP->9t#cqefXczTkcOgAyayBo6p(dX9MXMN z8N8=n(H386hDIJhx!fnJ~b*Z1D9O`N_ah>)@qztIWteEc!|GwzxY+Ts}QT8(MP zbCBy_9;^Pbv@A^(0mg`#7kkA8Qwa#UkY{c|O1CQS!86NnP$wkti7iaz#3=q=hrf?u zYM&b~0mP~Wn5YBl)KzSS*>(yILC(T+;!%n=Cw8I( znge-HmLt}4L+r5x-%AaJWb zBAzJLvB@v~c&59_gaFdX64t(Dgcdsv?a$7s9<29fub=B)2(KQzV^9m`6)tbC8fd%a z-3{@w$+7%=?a=8}xF@tagSuC)YngK+y$3U9ZwBZ|0ebECvz;NPpk*4h>PU8G=+VIw zTHZ!DKF<0MsL^BY8XCGoWhM4*xhq}-?)M~hm%F|_c zIG*$5j+Q>hgJRru*LfKCccJGBq}FO!S}Q#tm6q0;@yxc?>h#vr^HC+n*^RS|K~cM} z1dSt(n1gZ&q$~GY?PIyG4t!zToY3rlsnsaW{@D?fyGgyUbA57qnqqH=5%0lsV}DlI z5!Z9&HSH2Uc?G(KXM3N@3@*qhqHMbgAZHjwapuKP+yum%!30$M+Us~T7;Y5w=Xx(N z^P__UkEs`f$uhbjH_MY4fyr_U7#fRg#>)v7Qg&C9dcy^>cBPtCXZ3j4ylcP4|CcAm z)1Gx0&hns`cjfRDj6pYTrmw?$hKF9Ui2Y=C^1T$@bU_!WoO1d)$UUqzBgK5P>{(|` zY5?KSaCR`!FZ6Y-!=vxmI=!PQ7QJk1&*qVab`gn76*gTrMGVEn49R#EAkjym#nM28{X>gC`M^#Xn0ds?dT1u zB8xqZQ~O3(VsZJr#_7H43gThq_xNW&II$8gk7LAJn7K*BFNZA|p)?G;XVeU{wIrw0 znE@~AeGG0@Dm|nTT~a1!UYr}n8p2|M6e$Enh_IFj$NV$1ygLR*Kl-WCrrHi|JE}%`Jn`W#4)%P@@7Fy`ldKyB1;01-r>Zjj)M(P* znAe`v>Zu({oELC*Sgok*&(bWm=tKcX`eue5L6P6cQGl?InHlX^U>uh)C&6 zq8+`Pj|vPZiSu1=;Ve$C`jHVDw=>SDLIMmch6z4k)(F$7*RhP4j^c3A87wm| zC4!jFJSv-(f`U~wiB*A43~mqM4If&Uv#x_^sKyUwe<+rGrTr)IkGH=f`U25rqOBsX zE17aA@noikqC5_EUpQG!2=fRX3?fP^kp_%Pm8!rWN?G#ZQN0p+ip*_fUO3&@tO1Z~ zTF8jBrp-OtC&+2(J;B*$mG#GAyb2ktB0 zFm|}8Hm@O4)eZUv3j6biJCnX0K&j zS^zSa03*ryDC<}tlj-N}Qyu=$IDF7c`JI(}S8Xry{LJ@Xx?WfxZ-}i4c7*rmnQmw% z?)|r4feKFboW&Zuf}^T#24OMKY;i08ndn&*&m9I_ZD>Ea;_8az4C{Z%LGDf z)b#?BBw&?*P0jaK8R#~*DDRU^$Oxci@RO~QVRfLkV8dCcl_1(G=0zU;R?ma*A`XSz z$#Xp@KFE1M=e9(JG3#B%DyeNWqYlGoTy4*@aI(y~krC=4jD%b%Mji1r2L>z&hJ>Uf ziti1;WBU1dXJEm6Zww&Y8%a12VQ&B)`y6>zBE~p&2QfI1rau>B1o~wHN!HD30fkt0 zdmLjF;(UF5Bv}bmeTgKKo-Ou^6G?{p&teQ{JjT$ERk^o_91t0<9wn`Pxe<@k3EHy|KBDkD@&+B1aitGz$`gIvM@oi%n6c(3BnJiFlNwz zQ$z}5Zm%i_lSM8tiSSqKtOZd-u!g|1odfNrz0;>4ZHNhF0N&=B69l%MiFW&(T!-}* ztUXPxPdznq(j|)WF$qZl}?y&T1laH__Y8j0xOVyi%CU(2F35^p&^c;z1lX z!q1KMT)Ju`LZv`-2~Zsh8%{K@+@d%Pj%Vr&&mq<{A^Pui5rBk{0twbt8Le!-r#M&< z^9`OTgy_yM&6xrcu(~dHeKYS#0k6Flh(OmkxMu_U zsh$7D;< zf-UvNff0ZadarF)uuB!NH?fx%Fo89tF4J}NLLu>6XZrJ%8_Rz83}qxO_(le@mt30r zh>8myFrbOZ&Fq;%B}+5#s!)jp>XzVt;vJ!vXrJ3IaE=fFn%N)a25G|;l^((Dfb_E_k6C$IcL}bZ~Vr#VUWHg2q~9~HlUfO|SIsa)q|M$;^yr}RUMOeg5Mg;@WZ znXy@n-pSdm(!YVgc*E^)CTMo=Nfm`*FeI|6}# zXa)1nBDT-sXAApaRS%1Qd#84nxl>=kCfk$US}!WKO@ILS!PM2eP{D!!0(Vg2E2u&V zhd<=Aki(vBO5+zOT>bNSQ)={=Y0u+LL$1wSiPP(8yv|$6g_3KATs#RW;FVk{s2hb$ z-N?)YQR=+qn-xU~!q2YR&@i@hXo9-@uIU|x1-dad(YZF*UcY@1>W}ZDCE`h_$S=>X zDyYmKTT1ko53b5OL492!cByyJbj~t1{23>U&T*A=$KJiV2PLRY`dnIj+B>rS=GSl^ z^v(>d#Qz2l=Q4(v199N=r7Hnqk9mdwR%^MP=x=j{o%)*ts};gT1xmc(zuVT=6>x8T z-%#oYEkH1(e)ho+YLzMMkca1~R?kyRPp}UYpU!VnbI4c`Gloz3RP5)mW#DH}LsR;G z&3$~NwMG;=z#$2&WWaF}@g#;dpWwbi;0-Gzs|I_K*8Wc}5;>-1Akold#h-}_!X z>B_IbSF8Y7?An+4r041=yDMKuT0aU=LSADLnqnoDBY3LPNCL5@gqL|N+C6>E4In07-JmPmnX5tlsZ)OP#L;p_Wsfn4bC+ls2`%QyXIfGK=`cb7iduHeMMX8qo~-8GT+vO6%?$~HMJc;J}if%9sy!e?qEU|T9%Q}|< zm6a)REIC94sZ4<&sUXQBP|O%*T!;9cN|YO^LR%X6=u@H`%u;?{`i0?Agt9nTpr>@T`6=e{;~?cCtxl-t;z-5i;@Py3Few4r{ueQvJ( zc~$o?HQf?MuLAXfT!ojg7j3r5o5+p9XUID8WIcHD%Yr9YMDM-~#ysoZ>!8PpD#3*2 zXxzG4j>Zq6)L;i|-2ZlQKY?3geQ#DJLAx81IAN4XA28-$*F$W3kGTC;jFVz zw_(#iq112t8J!Fo2IEOkL;wsay+#4~v;jPA0J0wvu@D#Z5c@=|Mmi-Jz$gdZCm7KK zc9R}rLZ-lotmJ!sFQ1g)qW?Bec+V{yuMZj{oA-y+=zo zt&fG`Whe3qQvb@@AHT>iSl(RT-Q0E65%3nre6`rYvPtkl`hLQ!F)!&Sm+)t+J$X#h zZ=D4leMSt-c_Ld1zTpt&I5V`(8J-b?b_zq*pOJMKq~6G02;dg%1ps0(Wo5+It~sOX z#4>M~7*D54sWtU%8EJ@azHV{b1r^wkdu`Xkct>uQ*5ONi6T08>*7exSyYtFCM(wx* z_r~?uf}4AG*Y)@U*dLm^c5m4T2_{gB%;wi`!uxrRlP(zJ7M;i~Nx#+gE585AZxE#? z%5lK;f5|iHIVvjnYx9e$NMRG&DA3v*J3lx%N-P&jos-k;ObeE^StY0W$Z2C>t2rDx zN{D1Z$}#T6EqkRSo||hEZsk)BPZnk*WR?z3Y^aX*ZJ@~go#Iw2>Lh)l6|uSlSbgXr zbD|g_C;vwDqfuO*j%4)xO#sNPt-Ve_;~T;sp9Q}HL9f?|aXf`_LRE%goWQSzz{wB^ znP5(5p^DF%{Mx|LaPGqqCm}8or8NKI=nT1&Nio_nRUbi zJdgE3&H0BYBLrH}YuuDZKi{GsS9F156zj{aqR($!lzrZgJ}0`dp573a%A>>G>~rP7 zv!_IckbT`5aE24u+&@|ReaYLli1owWBa0_Vjhlbv#>@3-JWZo4&6_9Sj@q9q6sGZx zvmhR~w)RO_<5>WY&ywrdGY_H%np_`Y3^v{OtAwK60~t^$+tsV|Aln&yhVPd$APgB` zx_tSLnJ!g=m}t-kA0!@Bposn~xCGGw;|wmzzz$`w z&EMenWH~MA?q$;=&}CrS+}pu~ADyc|V4VPj^xF6>uLFq%7D-`Z zMK3rpu{tra29Z?QFTr&k_h>MyyhXvMb~Q<*g4rCC@$yceFGGSWLtm_h-8!qZtS?=Rf5!%78$_B3>D*bd#pBEj&;g6%c&(F7}3kzNgRL^;whu zXZGwZNdTYU_y2x>fj#HkQ+8)&XJ=+-whZ+6N_|OPba;kP`?Q3b9vsyN)Yu2aSzv(4 z0W|jUkE0h9({|?=CBu6P}i8H(1uC7tqE^ zZKz9q=NfyTK%q!xw5&_QXknq6c~jhXof@Y;9#e3rCQ0+jk==4lC#;W0)k+%xn0S$FBpQlES6E0vw~TaOahTi?l&pJK%br}1-%neViqUvC zr@^wHkX}`g;T7nn&7D;Nn?Ak0+9PVDyWihB$gICYS@rXV4G);Rw5&LM`c!cq>Qjz; z*T`bISk~tzvIZUZ$=cWNODoZFAG_zN`zimG9ohGECdVx~;K^l6!=PZkz+tPqZ2!H- zyYM>sg|13#eHq?bFLZ0JKJBSGE9p8gCxMHc$szm$G(Ep=5`XCx?vHb@khZ zIQ+ID)R9_bjs1H*CF5i)>-Xw_3AoUkD{hpIE} zJWA_1kT;fAh$3gKM2)<$()&n*>|-XU#-zpEriR&L$C$4jmX*hdTO>Q{<)foHahVsh@uED(~`hAbo5yN$^B!>Vz1;4{< zcT~!P5fc6ec$LT+NMxN<6As%y(e71JTHeX2&gPG9Ik-*tDn+1q>V5qP()WcBqxw)o zYGyP5On0V)z^fUGXVlZdg1vAYIffhRUQIbn((chz?xY)MnX`NYjqVkb=TwxBR-4CK zr9Y|8=pGc-1bNO5 zAs+4#qhov~(v*<$(GFa|r<->aCef6TzH6ujfxitWEyFheku1Oiy22 z@9s`BTih!2nJqBHjt`#M(zg?Q>(JzU4}cJCCNJTu#3Rs67FMz!xAf>Qddd!~Wr#vj z$cE@~ZEr9f#juAlZ?YdL;xI6VtsLpPB7Y`-Z19NU40%jV&-L;VVzPe1uFM6gH5D29 zF|lA|k$aHOEOi3?$MK1LGU)F`BbNuSI(#ziBw_RfWbjO*k&|FEK#&E&3mk7smIFA( zxp$5+bcby$Ene)-CnoX{v!iPJ_9mjlER?tqw25LfXgZ5N8^m7YL)xhlEwaQ<@}4 z(7t32=z}eJa1Tw9QAiNN)Iv?s!It*r=g8v8;kLd%+%FoQW7Lu?iRnH`0Y#&-3qump z!&e^R6VqCvGtE98k(T6W|0G*ZMr3MIT)=d|I|_AK2Y53`wqS(?W_96EB}SZbMY$sZ zukIRzFa?#!4Hz#WO@nyVR|rkZl#!J*bR*Kx6HjAWCy60KhlWhh#%3U?edr@rgR6rUTMkcsV0$_lxY&! zw$II73yaPi7GcRrO3pS4wT)Ko2a!xPnn`C2qUh?e{# zJIG#NL+mUk7wZEh^_2r?29A%U1esJ6J|N|w&x<0y!9GuV7zq56^P&Hvrhnz<Og?4!{&o(QodIA4os0GKrnFp~Qo%4YG>4gn{~MA(GHW zG)!GV>wPtyze1!iB*p9qOX+KN*{Ka;%c<6RIehUwBecM*==9vcgi(pM(LQlrDaqCm zCe0ilof42T>UFW>lJMZ1%*gDdP)Xkr79XF;IDdb)=ZL~HfXzH$6Nt2k+8a;jk4+d=5?fT! z6sE-$WaWh%#N)!rg8zS@h6L_?OnH7DEP4jHH7%l%~F6CdSE|um+4iG`<&S4d%Pvm^^XTmnh)aw!jn* zF`P_73T7>otjQ_K6bX0>aai>=B@>NpPV%_{<4oy1@c)C0ARIMn?u~(a_fApRyvM^BF zI@j18u>S&@ysmA}IjOdFlWI1-RH|I1Y-f(wbuQWmt?|!2`3haz8U~GeQrgxDqv{Jv z7>8-jA8Fc9ho+?^ryUlci>j3#JEx|VuRzmY zU?oj!wwSF!k)cqvc{xerE1_w9EZ(Up(6pQ)>FeX`T2xIru-y6Rbhy2t=TQqQ^#(z6x{*;$wq7FQ>t z1$9AYj4mmIrTlQi+xj?KH^|l~d5^{`k+Bas`lo8v)N^Vr>&`1rre>uj6AEl%fK4!Z zh_Ga$RSyvZ(;+3C>&Bf@O6Wq4bggbNkgkoEn0Vu?>slo_Ty?E+h^jq5e_Z0Ik{Dgp z7FzSB6-q@Lmmn3baiE?ZH+iU*1xmaW*qlnsI_t*CCxf*t$q%Vz$Gm#4e{vXi_jt)g z$A*Dsg=me#;DwbsHqD`9(?B(!BM&kalP9&&ZV~wP3W23#@!%^h|W;=svv`X?7w5)x` ziN4N-a|D~xvQEkqToFnuFLlq3Iw z6FiUPa>N?eQvOv-JOTWX{3H22l}{d)ByC{%_UAM4+)F;EXcyJ*c!^&mM;AraKds;} z7(UF4#(SLo4eB=#NU3Bdz@;$GiTWP%w#;wxcA-!_a!OsE|f4?wD79yT+iLNA5+@vuBgh$Yz+ z%T39@#kJ<}CgJtRk4-$MHSSemjcZNE1Y(1hj$gOyZsKeHWGrgH^Oz z4O(g6HjF`@$V+$f5rgw|sVU4MffGBS+wFiqEx(ZB~OQ?Yj_}OcJG6@Zr38 zXDQ;2xUr&CGgxJw3jk-c4yTV3bBurom&w}C2{DD`aX<=Re2C>-%2I+!S@ylj&!sHs z#x|Md;5_Z#5_SNM!VOO)HFI;q@&F~+DmgbNfG;B4C7gu&0z#dy03`@@J-WLAJVj&w z{8sQ6OPs&>R;|Kn(VqUv~Cir!0xT`^OKmq*q8{q_DHm@>)?6S{}FKbN~{> z4V)+IQ#OzgG(FWs_zQ#bp^VWQf6d~lj#e@p`F?HB*FmcT;AC1T%$aWh*ctpHo8H%h zD53K0d)-be3GXt%J57hzC0{4JL3y&-0bcM7HM|s=t?=$k)CtVT52^y9!*I3?@Tz=W z=->jc%oosFRD(atWUv3#xGGVY6JaZ-FlH{4eCAsp9vm`fNpnzx46iB3~lAILx9z;9npp^a}L8&K2 zvW9q7|58{VR_ROj5=_*~<0CqJv`6VRIGt zyjo|kS7rV6^{NJ>i+;Td@Ca%^uV>Iim(@?gZpK`3tOcZ(si;3>O-|?9D-PkUb7q*X zBV6UUUc@WT;*?0|^9R6)y$DG?5&pg`OS6be;S>S>W*FSGRtxaQiWzn(r*oKnzsY!8 z26iX#715A-#K*p}u%yWylS|sF)3TCE=I0eI93P`Y!VQur^`)!k zEoOK{ZcI#W#qhp|^g{S&62bsWmIeO6W($2L`@L}reUAFH`p#eS=sW{t?7IDcG0$BZoN%+BHk zm!~BSUw_)@`U%M?6BdrlnOuND6E4?@ zrPwj+1qce4_3Wu`D1?b2HF^m1h<;&W9k|$pv>l0N;uw!oydIHH)aV98RWieI59s+Y z4GtI@^dE#P3NZM{8I9{P^dK`Fl?acPzIB-H>I&0`O`{(9rZ7ujaExz2Oh8CbdbH~g zvDDw&*VE58DkRczK{(thTCsM`a}cl+2Yto&zlMXm69;!Y4)85290DZ{a3x9qGH?iX z#X$weBnrfdd~I-4VBj#{XiIoddZf#>X!Y~*@{WlKj0(8Z8|%fzBS?Z`%-iK-a(rnN7{EBV!`#cW??VT< zdtpUU+NoDYn)Q`i^D{bSi}*PFMhqZj*NEx-Iq?Hn9?Obg zH$pji9qk2sPiSc22K{S4`^8K4i(dQ1c6p%(-zkWy9mR*li!@lpC|MA?I~k#P-ag;l zaAEW|@xysxt5=6_Md=TSIs7B>8{WhI3{)MozKgxJ))A3ueGUhqItJ1okMtU$h2p7w z3M#t_H7q}Sgf76sG#r2k3CwxWe9OY^G26r(1p;7rP}D$Td<@})RZM9S2Xd*}VetP8 zFnCHBj08hJFp^~VqYJ{JL*BvITmlB#74S$g2gAl!ksf=^VE zRn&wgWQ6%e#mB`aNBV`OCtz1m&K?1@Z;KCLfYCh$s7C{~T`CzpuK`@ymM`*Zj@^0l)j8X~Vo zRlz{;qpw4b7J0G5h}OP@bPVZhq<$o~+9FKV#YHSqCX$9pZoa_9MEhc23t4eD(qW{R zkPKikKnBKgbHvABK!M${RDgY86%UEa^o((j35kdei;XcSMGK>!M}&FQ3n9KSUVg)Z z1A;VdewE-NB07=$GTnfj_LdA~i^#GWxMH~qWjI$^aE?_k3IZ(9Wk_ZuD^ej+HBuc? z2ht`a56C96iUK6N1VPcNdEQ_XG6T_0$%J?|KBu5e8}5;u9pe=iV2OzIPJh9Ylu%&y za|;Mhj0yJ+4vdKP4M9EGpd0R!+9rg284le*>um|rj(b<&-Zk>xRL8v=#3c4HtN@c% z<+%45?p+Len6zrgy?wZs3XN;hraA7d5!2ZoXibwg-Er??F$dE5H{6@yxOa)DVZG2T zCT*tU-d<70&W1cSX{YJ;5N$ppO4(YBy!S%X39Xf6`C$lesY0sk7n$;c#<1FLJAGkf zj08x|iyzSw6%-MX7CU`|_%75pFgYeCpc54OQp{rWBvdthuPds3C^A_k+OtWUVE+Je=ms}az`e_9~9(P91<1BA%246G(+&ND1*rq5F|N( zzTeXy&Vu_7LApgrt*lElkE1Yq&1jWYBmu+5MDtm|Tym^OQtnt<&d_(DbSw7vHu?_~ zZh(0zU?z8wNt>r&7T~KX>`tu%Wrneh46+K66jEn!OE!>ZuOckT?rzsFNNUmABKQVL zqoqwZ;bJ?ITy4xB7t$p7hAtqt>~;eg2Q>Rx5Ai!VYNiZT> ze*}8>(NN+vbOH?`n((HXq!wvn(q6pDxT1XqEpnr9@b8Ed)^^@WyZa}iPmybdZ26l-DcT6pDt1`cG>5vZSoIZp$`JHR0)b(0H{JgdlJ%&&W4ygvj z*zJrU)^|JW#aTgY(j^Zq-is zdZKH9fjZj_mFEtd&)qKhRaW1~4@jHp(x0qqPucffFIA210Fm2A5U=Uo=NsZyT93_- zZP*gCMH~vgA!6lOVJlaLp9#pJQX*IvgUKuQ1~vJ51o1w;C`MGaBQ&JQ~` z-kcig?`HP)jgO7VhzySNre5xIt-}^Bj93;;ipwX;Vvb6T@(D|e$6T!b@nRyoQEUHy zQzOI%JH&BiE zOJ3T9K7msGxX?Q|WO)0d68!DFB%e?{sf#N6g+E=8x33x(bx5*et@19lecA<(BrxqA zLStV6IkB(_oey^hBa)-mZa@MoAVnUDAp6V{7?O(J=J!MfMGhMgJ7bftLa`BMWm0TT zVAm{#r!HF`(1xoPUh&sjxCV$}Afc-~Si)-XS*pH}!|6C!JWb-VP3u^0_*@TpdB-?sBE|giWF1G1+s9IuBEiv}C zuCn?@KBk?B$n#Iw(q2VD4&3$4I;q|;gvoCC!FNu6a%|wIYg_oq^>JLJe>7}3Cw)iM zJEVyh4(B-q*uj@UC)Js&R8=+))s&l5rNS1zP7CMnY3o28tVv+s*A{gvy_RGHg8*)j zdJNrgSSBPh3h6HKCjF6xE0?4pR~W6(!B_krMh3KSM?k=F0pQrJS|op6TMLW+48m$) zWI$o1NsMIu76OSAVPujR+1FRqfEk8%$$A4D{qMyKv`BlLz>=?p|4q9Slr*s<8UlUd zhyry82`D*1O@$5KM#vz-vMOEt9CZD#tB~*t4@Q0mw7ZdC#DIF0El|%zxpPLwt+I-r zsguXq2l#5Xc9;Iu;Mjm35`d_O^7CdU8Vc{4`@dIiFPZ>8-Eg?KXE2i=5Zuh z%x+vzPubP3)$s>1JanG9Zd=SY&3Jy;nl<6)5l#nD#@pJZ5TLSM4D{*ixeYF(PL*Nr zjYD*u+Gn4C0-wERR6hH7vy0FEF+g)v+XlG^j0gMd^>PP8vs*#)XAb;vgB|#qai9ZV zu=m9G{BG?@G^R*4m&zaPzjqbdz*=W7TC-@B@uJp_k{EB6XQzgq5;-XrAOi^otv~aiMto=96 z`UO$*k}fy_UfP=>i=+DXofx?RUfP&JURnq7Pw1}Y{m;Qe*rV-6Og6@^$kjdgP{X9(GKxDyT=fVHWS7=b!~3~ zWp#CK##y6Ykm3#>2QSp&Ne9vmy2*Pq54dE^=0BhnjZ+$*m00| z+)(!<%jv!U)bB-pyZ^w6q@CLFrLFrj$Cs*~YYfq zh41m3J=By{2CeAdD1PD@lD|9=|B$+dTAkC4K!GB1h;2tgt0TQ2U0M|7tIxhQB1%RomLqShn?PU7q; zYlvEUe%Lw5QVPP^l|UgH-PxtBX^p6>i)f7wiBApniMGTHON#bJlm=@oi2kwSC$>lO z%>UmsALz=GG}l0Lsx<1KQ&2z~Kyw!#*W>6aJVZ2)KG$HBJ}xKCf5N)Nq@x1a1)#ZH zmF@^=DH|*~w50Jx_5=L`eW^d=ak;81wB!L!y;2-r)_{YOCke>6qp>FP2MaWBVDTQ*WLs%NUF~LZ(Hqu z=ii!eYX8=o*2_-Oeoq(wW=9M`(!X^P@QBHj#E${-bstp+&YO_7BdPWv-C3k{UDj9E z+XOxNKXqXFom6Qm2bLjdsGhVtums!G|8MOL@fZS8)$9RU>}(pF4hu(L1wQcz=pp0V z2{aft!DV!A2HnVTxiN`uOj64MQ%GE`=Pc(+PD045h`IkjT_HMRUI*kv2JYs`-=Xpt zjUyRZ(ToP_(dsbz71qL&Av1cK0w{_kfGL=XT8%HzxpnS@7!RAmvAYWS`g{d91z1e+ zA##sbS|wYfoA!ajx?2$DS-i*zj?0XQ8x>FxJ=>N#d6d~aYI3S=c633&sJMvCxZu7W z6+Cm?ZReWC)vYU^b6Ivlpmj`1!pP>SnVD0YM<$evu?7}oUpA+FUEMg-xx6;Y8Xs(q zNFSa_*-&JUq~n8j(>}oi)3= z6f%w#_WxkW$83-|#Nl?(^4}$_R3aV@%PQ4TGoy&^qg*ONtsmuFu0vIotO!||t_z^* zn_ihv8?+-QMk9d6ZlJrqqCCy|cE>%vuCNsru14X#@wfurK}b_hNPG;8-MkR;uR4hz zlH?|9W$1k(zacn%dU1xw%P)Im6i-hN3N(gzO**3?KfmFONnRnwz~48gl-1gX+zztU zmZe~Kfsqqa+fpZvjM0{Hp5L%}^5o48`J6A)`g7-(rwqQCQeKO8I^>VzP5=&2XcJ1y z%6ArBX-2Q@AUf}RCsbF>m=_(qjj>sn>G`?$gc-AnulV(BtYj9A89JUHSIx-GK5x}x z4BqCSAeXwv<@Fuew`_w#4yl7ipWe8#+w2t}GVuHsJTF|-(X!k)=PGO{AS!ULtEIlH z1J!B4HD-!3|CZJ@i<;V>{DASoIQ*`}?}Ww6 zyH{_&=O&bwauqgsUftT>SpVZ$7X;(l4BKz~^7_>sZVzdg^~$lfGBdZ;FK>SIn-A~C zv-#+AKHAaV)jfU0){hy>!#6PxcXT#)XiTh3fMAN|*(=l7fY6AYUT704LFROl}L!j$lhfKrQOt!y$V7tGF=(mI-%Aq~dh zEpP0t;ms#9BWBkd`R~jdvnISTY6p%Nkpoy@YGIY_n*MLuWIAItq6I91TXEM*)7%7{ zx^NYUudA7va+7}(i>H`5p#Dv0-u($Y&A@q(nel7sA^#ouGn6hM9@8dc{C;)KJ)B=S z=Rw|o)`P4xnpU;Y7A{CfP(00SE?ZLC%j@t%q~XR03$C;@b9t|pSU$ZbevWyodF#Zc zt>$v`;`*juL!vz6LG#u*ndV+Lqh<+?Gixlpg>xbum(6qLj7B~N$_Jm|^{sP|!%~$4 z&hl2~A9%?vZL+ynORBD!R@1wwG_tp_bWWtjVlL}_q`Ic}k?eY43Jvpq=WpRJ{JcNhg7{Q^XxtZtVIEI(wI0-F_^D2(&;rsbv9RH3n zUYx(nKgRJB{uz#6iU7t%mWkBe^6jpItO634Y-Esm#)({cP8b}-@MOsq@K#TKyz$MeJmIBvtbtXy1*S!G;Y zCN9JAN^vEQ*NPi(yhYrGuSs$8W{A zIQ}AjVH}=j)QKiE$O6q>L*GVQpe}D+E zU+Z|sgk`2^>`pkq*K>A<=`$A3;~<>$J09#~b`Uu&L9ao-;|Ui003&fXK#1vgya1sY zxdf0nl@NNfqhQ|iSrc;8@AxQk*zp1t1JRW?rGlh-JKYb_9Ljk2ewh0Dxj>zFtFu3y zd(?BB>rf`gUgZ9C#&_-NEH_}m^8)&fv%HV36% z+(2R4xo&gSHD^}05$YOihPjbXhThTGB*Sa!+Q7yeE>qW-YiQV{u8nLIG=u)WiS0oQ zM!$Avq1yTC+Ji09lGL>q%f^^f{T*+XASl2`W%;1p_o{1OX5;JCHJoR>L0x123SOwL zgIG7JUw#X*GXfqr{hF4r+o-Mud@?oaTEl&tx;99ju7}p@X3g*uw}H**%8WbhY?Zv% zhXan+4~O?Xb{W?Y%^T@PCh{--?5@|{jR??Nv0?czUqYYD#Xz`G|aw*|TU zXAsu23JJFvaMS~icAOh<)rd8o)7er9Wd|6(4SoePTZE_Wxaz_+VcCW=L9r6471v#O zb2ZNN#R`0@wmibej zGh}&08=_(dbV4Tnb>ZDke9?h>UFf_J1g$s|9xZrY1qo9L58-0mC#cKuqz&&Z%9VO}M6->XvmwUr$87X5`<2CqxHl&V*B=yh}Nx;n`{O zYl4kRH)EP)hD>G`$Oe{cho&C1t;cu77Y&jYW;e?T z1Kl_hOvHJsWNt(&sy`|>LzQIbaXW{npRj$nwvNI4l!Lso9dO(8bG8}t33D9S;`BVm zIC8OH*>n5Pp>u`QPD^_(e+CoLyaTi(D%#~jHsXC*=noIAnGD=30v`}3IlmxkQ+-kE z>y)yo3G|`AEcNe6z7D%A&lO*4YqU4r3~o0WkC?`rE;7C6p5xx&Ve;tqc*}F4=f_@F zuWP-2@NV$F!uvZPo6j1by}n7l|L_~*x7F`8|9Jo1{$B=+2v`ja?MGId)s@vu2Yy$Q)~)Wv(}`Gw(28XTHmX6(p#F5}0H{>+rjrI}}E zK51pvE!MBHR%9n;@5;%{xy4p#+nF0Ua>>Xy@($!@X>w*B5_TQc%iD7nKE-eO|t$d`J0p<#(1pRQ^Qy%jNHte_H{zv7CD8!LJ%4pux}@mj_4iZ3R9H1XSse@yb26f!As zQr4t#lO|4@HK}>hib)$LZJFFP`Si)>O}@O+QkheQ??W&KezODMB+M_z8+ESffonL)qnsHk0w4!NK zrp=kwJZ;6a4b!$v+cE9B>7%BXPOqN6ar)Njmreg-2AknMBYZ}}jI}e)o^kPvYi8Uw zW8ch#nbw(OXI9LdIkRqN>&(?N&z!k^=2f$bW=)wjXVyEjKA!d6tiIDcPYXRQ?zHUF z#-BFnw9{sfm_2fK@$9Ly=gwYKW2_0RiK%Ix6FTS0xni#G+=#h1&P$z_H?L$~)x3H0 zTIO}lJAK}H^Dduv!~EIv8|Syr|9bv!wWivj+SuCE+PvD5+N#=lwJo(>wWrsfS9^Kw z4YhaI9;kh)_SM>BwV&7idx5sVZ$adO&ok<*S%Bsaou-yef5{sUsHcu{l5A~>tC#Yr~c#m z@9O&+JR3qAb~oJ7@LzmGP zy0mF`(;dxO&EuLcX}-4k_T~qgA8UT8`Q1esi$*UhUo?Huf<=cGJ-g_QMISEuYSFJP z#+JaAn3fSOBU}E_@^#B^i#IRcws_a#n-|}=`0(QA7QegrUyHwA+`r_*C0{N1b*XV_ z;L@0-hn7CO^o?be%br>G`mzsNr?lSNdZ_i;);C%|Z2hYB*X73Lfy-l-k68ZH@>iE1 zYb$D-(l)29xot(;hPEwjJKC;myR+?~wkO(NZhNoo)3zVmdAm>hu=d3EtoCv36WeFC zzuFPdF|*^Q6>%%>TXCSXrt`k8kzIFo`*g4E3Fs;6xw7ZGo?llMt$caq+pC7Jx@y&L zs~cBezxvxXXRi6z+C^)BUuRh7y)JlN)VhRqY3pq3_N_a#?#cCRz59Cq^$XT7THm&Q z<@)>AKfL~l4Ldhnx6yZF=*GB>85>7$EZ;bNNXbUb%74#(Os&+W73o zH#UB_@vDu$o^Cun@brk&<4(V8lV#J?O|NY_`nQYDFrMLiM#LHCo$==8jLmB{|84V@ z%@=Lnx%t`6ubjE>%tL48oVDxh!n40Pr}CV`=Z2oUZi{Klx-FZxe6;1utr1&SZ{2iW z;d%Sd_c%Y~{4M9dbN+|te|G+N7o=X0bHSJkN-ntY!jucG7j|Cw);9CDo^7vfpRj%B zMf{@e7kghEesRLZ){DnpTzYZ!#hWjFCSAGi%4e^9 zV^`&_=XSlh>)2I|S1r40)m5ioJ?v`B)x)pOx_aEz6R)0jb?wy`UH#oPtFGC6&9-ZH zU8`N|cWvagA71;_?w;Knc5m6eWA}Bt@4PPMy1mz1uitxv-wk_i`0Ym1jc46>!Hr+u z_{&XhHwD}jeN*C1>u!4Krg!&D-Sh08H}<@LbKK1%ZXS8__?z#(CG?h_TQ=PC%B^0v zHr)EgZI;{4y6wx`Ew}Hz!*a*!J9_Ul-nsV9$L~tH>*BkfxVz@=C+>dz?vL*NvDd9P zq&KlQx3{c!R&R4}Pw!d1J9=;Gy}$Q~-q-Ij-II4u-8~oF^UysX-s^qu$b0MV-Folg zdw;mka^KYZ*4}sXeMk2O?2X-CO%QVYe%L2IrU$T2(p&JQ7#)}< z0n;;q>4n-w+6~%m+P&Jd28{m(rdft+L#JW8VYlHn!(E1bhDQu98IBr0G<;?F8JKPY zrn_Megqx$xW{GLGIbUMhZQi6Xy~TWo`5yCL^Mivht+vdt%(HB_+-m8y?6d55!8Bk1 zrcDY{Uy13Pzj0v7`+t= z??t5DeekdLwb0|f_P&fha^;-l@4E)Z{xOlUK!jt@UxaJ=Gp{PC0zcjDhA$N91T zV|~Z|VC>kh$9_5X?_)n6`{CG`$Idu5^Y}N%i2K+FDDi`bK3e&R#y zPy8`>m7GHI4_q6n#W;S&p+O`dN&AwH+Gwp1^08e`)CJ%)%Ou z*P>T40liP^hpdMqY#QwTsp!9qL9c5%+Y0yDdFa1Xpg*(>EqN20qD_N)PcD!F&ny;} z1kY11|8LqZR>yX+YuJ@+H~RdY+Eny7BdG2CZ8S|x1xGc_+zty%=aBEL|Zt9hdL zzfd!4(VB%d@U^^~ui~5dYQB-5hc+gc$-m*>3U~emuYf~tA69#O6h5>^P=lYaAK6#zTlO8i!(P}}%a47@<9QlS!oq{u zd;~k2Tlp+_g{Siwd?}yGTj4D_#CzBSd;>eoFJK?@?d(&25&Mi^$o|DIW}ov**cbd7 z_HTX}`RhTpUR*|Bx5+k9ZmXC)OVR2QT5D^C|pOJ{ex^N&FW+kN?DL z_*cA||IFv|ANg$lZ$3x3VGVi@zD#&w`;8SMfOiRh-pMEMSFst#uY5jV$sUC4^5IWo z72U7-G{Ja-;Ji_2yjcj|#7}2`=jXGJ_{%(tf6UAIXS`CIsZG&N)8=WDv?{GhYt)+I zC0?ktXmwh>wnSU3HE4^pcKD1twE0>sW@2v>r-|93M$E(BYE{q#^Tk9lSyYNCVg|hM zQ^j<6%%_Q&@Jhdj5YAiT7-Xl=G|eEs6klsb@u~Qi_*o;*_O0S&aih2$9_<&!OX7%l zNE{Hai2KET*roji@trs%-WE5Bcf=m?uDBVk_%5{LUh$dOCq5Ssh%dy0Scz=E_y)S@ z2k{7e-cN{MA*+9bX8J=sBl^U%nh75AkHiP!PH~TT1G|~N4zK!~;s)`)xJ`4%8eYf6 z9pWG2Zt;oOD?Y}KN8iHJ{=GOXeuS_6C-JEGw|GqaE}j&xS^?VRNACHo!-^9sd1W*=^9<=~|2ytHnWwCuoUUl9sGlHH@~^vbAEZ1p8g( zYI)j7ZIm`%%hw7-2-~cU)5d6HAtigXRgg$zMR;FcD0%@#^oL2t5YAF+S-?kPfmSY)LGvsj-UG2x}>FEyz?i=_QqE68sgfm;>EU}<(=Z` zQy<$qo7%*qr#^NO9S;75vFlHc9bIB|SI?=AYnwaUMdzuHvYo;zLTjby55;ATI0oR7YywVg z5+Osn^1~Hv>qYBLBETxId~k)&aG;PF2XE7nS_icYI#Qp4%kcqR2KH!$Vxzq0j-x;; z!w^CBJk0I5+x2dn@Nbb@n&F>@dtozE+HP2H@YX&ytk>Ss9@jE7U&KuJpsiEU9Boyg zbz%$*v~idgqy?kr5sD>#!nI*q1o|LR+A>5nm%=XJhF-`;+Qr%>u-tZNmuZ)4S7JC|9FQd?<41>r*JenaAUBklR_ngO~pn+>459#eV z2^CREhe$|#Fyl@TU#gJS%YJXwid@GZ8eUKfREmE=Cu;P7ePexP zEQBw?WI(W408hfl6Uol~Q&GMfARWtIU@v0Ps3X{a@)hB$X2RCpxZp0Gd6Va!gBo>P6#P!JE6Xj3~rWV1WCCA|2K8mWMSj^hv z72x?8*mPmw=80k=xOstCz$~z#c1wQKq0;38KEc~|NI6#bAlU72W5g210VybOA9|lY zfW=KUX@85_w%cFBYydu3>ssPNIM9d?EOsT~9wyIiey?*rJ%%2}^E8Iog1-m!cQw$~UwjDrIPzlsPoK=`ChPevEygCozVN7LjbY$iW_r zAK)6l`L9Uk{=@vU{$GTR`SZ_lPJwLw4ifdV{=NJYd7Y0wbr#(h5iB3?c_NR|yaxF^ z0qvH}Dnv4yz+b`nRW_Bs-~SVTrTUA+FzM*_scY;l8*W&nKvJ56*GWSxKx>Y-ZENSk|r8u^y4#|4)&~T17(t z7tk>iT~a2lEl9~okw{o$kxfH73n>e!6JwP!AfJoT>zP4GjDo)V2`R1r8TK<9fe}h0 zxHq)R&;1{A@BS|+K|Wo89{UA&ehJbFzMEZwv;yyZ$#)}JSPD`Ae-r07VX6E9yW$U) z!Jolywa>7*d=hKollq?qy&`#b|Bt+YnR!9~cS!f+`V6+C-%JUzca`BS@c%F9Wgv-c zmMLbl2JtfTeHHj4>d2R|O6D| zewYH$_yzcBCg}OE{<}p9@}c?~$Hw5hJTaFQ$a_0kfOrd*Lo4X~1HR3HyeojUQO;UK zJ@|4X>U=R9Mfr$IRwL$Ml;v_r^f@p!<{%&M{=*^=iTL<`D^dISUrJgPXof^>Z*Y?M zj0awzr)-ndF8{lfKyBGIQTrZ{($FsLZJpY?GiAD5yWH>p8TZrqQC&9J=pVR-VSdBLHN&i9E;(lU*5XAMsKlTyKLcqKpy({zbvl6dAO2|Br{=SNgeSRn@Dm&e8I+&T?IR30_G)DXxVIn zRstE70=nT_{!gUOSt#t5EdEpf_qvQgxv;$??RND)LhV*t(f=9hBFNDu7U7+Z{ck&H z=Snw{0YtY{R->h$ETY?eGS6kOpR?hg$Oau6wRD{40{_`83cbl}(F_@7*Uw6qO1%d< z5H0xa=$UbxUG>}N-~-S`rgwB25uMm)poNPpmh^JNy&$9l;Qmk0t_autNRK1A=n6@{ zAu<(m{uO57KcEcIQ3T^Ror#9f4^$TPn6C3+|AJ;VnNTNyH$kT>cnz|W=ql51EDiR_ zK)E=Z6%(yxTBB$Vx=Vg>l}AMXHYAc2Z-SOj^}hu?vbArJ&cQvZ4|}5eKwS(-dfS~L zrl4*xeik;=GCIpTA(?|VKxN8AcJ>db&pxC^J#XH`YIqge+;s3s4J+Xo9uB*&jMuT# zcr$B91ZEEAxHRFtP+o-{A*aKZt?B; z71zNye~LuUA3=ItoW`EP`6Hx%;&}{`53V0YI$fYIDoPn5to^4WU5bRLasTy5h?(|( zf^-P!Z%8|kb|PW+PygFU-y?mfeqWCBi%9n%%|yD)CDC_?Y&+5>T(3qdK%#4Uwh6F2 zgme(;MZib>fR~Yg6OY6BGo)UmCy<^I(2uNz{`@e4-Mu zkEw{LR3lO`9Z`^(Y?h1$Q7mXKn}>Kr?O*c?!q-53{UGuwL8gSjYX)BnlbbWao8iIY z(eri3gpK>)@e5$L!>@xy=s3lk-OwL@0N$kArW)n~ev? z3s@ZsM0DjK#{!1zNknZvVP~^*5zpR=Q3_WhQoR|GVQgE7Uf!edv=kvyLbjo=XJMDJ9f-#HAQJu%{IxeB;&m~_les^;f<4U6q$Z#1HLV-d+4j|gxfBEZFn_?9C2TaM^$1@^t0gvf6t z#-B_%d5HPeLQedG*k2vu zehs`4QQl_0h_|peSvMk;OE7kJ6~`O^z6^2l<-Coz^A5fOQR6Pe?0fi1z6$=q)$sJL zWvlr*MAFIUyOFJ9>mh^IBBuX0L@=*IL~{c_lb^-U=I8Kp`4+wve&O@^1&FZUgLwaT zei7pAA0etqp5h&B3%`tCE=K@diAerN_>Qk)o7mqF13jHz13&U^j3&CC-@tF=H^HZT zGve^KA_jju;_r7N=6*Mg89>DTUbY{;=DmoH?&A+2lK&v0s}Et4(o-05aDd&382rQh z5NpJ2rMuvZ{yXCCk71m_6BuXk6e8fypvV0z{004xw$EYo!3+FF_9<&dO#TRF9zKg0 z_$!FozKXc&>xiqqiJ0o!h_k+n-q_EGxxSBB{c&i#=Mks>hxAGQ3Y*|1MC?E2|ALSE zQ|0CU5;6L(*@rZi0sE^i;@`6)h{*m3zibQtiMuzn7R5h4|H-_qH~B70e^w8VK&@IjB*-9^Wnr8nhz(&vt5`GS15`^vA}FNQHI%Y6EGKUB0R@>oPR3f z{uJY%j)?zE#3S_a0COlNfzbf9@Tn~nb)sH0h(^&Qn#Cf~A{Jw&+)}Yjv|_GYn`jpu zVuk1wU7}m`V6NOMv0AJVYsEUTUThE>5lz`d^X0^5%$GY$oGs1~=OVVU6*K0}7Z->N zF=uYOxJXnN_{TP365F-E%VFbV<7y7BQgjF>>KYj5PSS_!+UFUom#!cZvpyenf+~K59a9!^kre z=I@=r=X@ehHAdu6G~Z0)XV~|eMT^s%as3o+xHdvd)zT32&(Jb8EBgVF{%nl5`3doU ziu8{}tbY{Z{IDnx;U9;Xe}Pu070HnRrCOO*u1(M?w2ANlPlmsAiZ&IaMyj=G+H`FO zMv}~e_jI;aqs@W+@wPUPy@N=^h2-Z$O#dy!BHo2p^*ybYMwlQzaa@iuX+X@R32~4` zh@&iq$8{;9c&!+3(uP=E2Yj!cT9?+1kp?TZRTzu42BWdoY3sEO2b_1|rc|gTH0KIop%Ms`@SGWw!oRQK>xV zRhDG#p*1<$+i~hg;0VwGR90<&1A~DJ; zE6$@VaF!6^EYZhVLW1|~XIV0StM`i}WcXd|T`#lME5cg`OaI}cfYW~k)Hg2aZ0uRS zsI_^ue#fuAX-RWubJvnC=ljSpOaJ9v-_lvXvU$Lx9Q8|KXaA++sQ>bknCjR5POSAC z-u2x}TAK#uS*~)?$&feTmjZX zl4oO6dv|?fV{==#v8k~hwP|dYm2Pa7zdV~A&s80&Iw>wTHLL1x)=8tDt2!)Jbzh?D zvP9K=iK_b&S?AX5+N~v_JIgXIapCS#s}6pNY)n~YCHbZ$3cV#ddd4NPTE&v3^rkgCC(moCGc)gH zE`WP4!{Ddpw$}Q#rX`KWR!MYYtE8uQtIK6>)1SBL&)Zy{d$rZmst}#+9gCZ_ z=C&4NyDP-9Sp!l<@RD+$_QgGDf1N$cTkCteP3=1TUhQ42^<9f)A#Ux9+dJEIOiLA} zWvW6-RX(Mv;>uKomDMeXGTnNd^e9vKl`DM9?DSD|DU)=uW|c~DjI$JBz2fBI~ir zE`5xvq@?j$<9w*sLwT-ojeMkjs`gTzZ(J+0^IYp_1;!#5#O?K7q&T-I+f<}bEz(i- zEE+72l?X4EC_vb#PjwA}--?z+_OnC{(o(%&BvHoiB2!VBj%$e%9nTUcprx|njHOTy z_1(rY3AV9J-t;VUyryHU>mih0WGYh#lnsz53W{O{eTjmm#NK4>4M9R}%^FqiHNgp$ z_XHPq^PJ!)+fYH`pu+j0aiS}6?b1u?L^QHdrilu+iAo$y)WyNXNnVqjnRrijDa}|Z zX=JR_+eM|zBSR$sF;3N=Pt~7Kb$PCpfk&%c0J68j5=D%XGM}meY+j{<=T+s>+N+%0 zU8)c%Q^eA_Hmj^u5w%Pa(=G>f?#6Tb`-&w>M;fQ=P*2yPp6&v*afZ$mGh7HV!{xbN z-}z;Rnbf#v$_(h9H9Jd!hsK?4oaKtOk~L+j^sz0o)&Xw7D&UG-PTYYQC;(9N6R2r+Hxx3!2r5*~=t*N=SyWZ5?(Y2(tz0I%| z4>Wq%y%s>TM+?dD5i2I5D9bVn)hM|Hsk&>4UQAKGrzAyp zds};#zw=TjjkltNeCiG`ioD|^1)iX!?GMFsi8PyMjJ=~+dUAs+H!Qxw&h3`#C@H^Z8^Fcv*k$jhx>XHQ{~%K`8HL)O_gs`<=a&GHdVe&m2Xq! z+jMno%TncMsq(W_`Fa=2YRgjP>zy?({A^Wzwkkhcm7lHf&sO+ntMao|`Fa=9YRgvT>*ko% zR+^=AMX5^%g6_KVh>~u$Tm@Ucf;r#*TfvyCaLQHBl{B>FDqM6^(P}GExaKQdbkosl z%U8IRC>V9y%xcS3IOrxPekU}QM zhkC9nd;C`L=@t~|XwTPPKdL;dy?zwk^VM(NUb2Pq{iF_W1%j>(t|lQC)> zW8ylOapRJg)pEPYN|r za~-dqJlB=aN9nnn*E7z2eIHyc>#5X0ZR8zu+Y)aU0O$i$$e0o}?pAt4O ztb`ptPj?w|a;4?XB+pE{{me}_ea^i%48${JU&o(JB9A}W?|BK4*1k=8wuqCS?fcxs z_ewK2hB+swCw*;jWV!OV{@Pn^?4MLL;}wwYezE)9xR`8@aS-h(Ke<-#C7v{M zAo0WyxtH;|8^82LZ&uIq7q0!%=e)^1&%}&BL`z383AWV!C7C5@)y$#R91w+R4#sti zaYq;@&tX)0bU5#07*{s~q>Sx-fQDluFU&L7DYQ`y* zTAI%GRV4bkM0%;;iY{X+)@IUsf>D)4jJV8XG-e{>HNzOuDZ~3f4kJMxqeRV&ARX}Q zqN5pY+RVJ!b&OK2W(4aIMz>Zm@^v?(Vn1NS?3;|HJ;LbPBS5vBk+`2QGPm4c>R(Fy zN@0Hw7@^h(wgayXCFy=LoCHc#-v!ylJs6>+_9F}enOg$ljZ}A zN&bRess4aem2Q7VGP4-pRN6{i>AQU?u`gj1v^{bpn!`Myeab;(Cox@W(ElV3xnN!H zzsjiWMrKg2jXW!;BTq+XG9LUe>+9SPMhd{mT>qWuXvUK7jm5;s^N$&w{thv%G91+U z%OhXsV4gZNm7Al($Z-`AF9kN?>jBE|u#X?i$ZdAM*3MtB^C~;vpffqrH@ExD*oc^~ z(a3na&$sih>^#WMPuiD{*!e;`ueI|(*m;?qe`a4U)Y|N*=gsQ_Wf+TKTl_DZvQ@7wuCJO2+mXB#ACcD~2X1MEE4&UkMn zl`K2Yu=DkHKG)8d*!fMJfk$<0gT*<*!WY|lpq*#gd9t0)w)01H#sVY-?vajlimXif zVJ}j^e1c@_l}c<^1~9*Cpf?EHk@r1Y&U*@Lme-kwB@YJ8SZoIo<|$%HB0G{Hkzv@4 zjKMZ!3RWSrumHIL+mFkz;wn8}AL+dRL%dit?m;88J&a5*4`&(nGY`2H z2@dTa!eS%>?d9NYVhz3^9>rGW*VwV#gSE>K2|4rqN&Y_5{ZZ06)&5;<@zCm)1_~zz$N4jJc6CH z+Uiwyf4QA))*5y~g!{~0=9{;5#vV-fczWmj8#}+p*=O#nc!CE{kZ1Ee_9%V>DhVCT zp2}R=8rtho?CIXw>={_Et>)V`SmYF7VYM3yZ}i%D)8Tb_v#IZS*m}yR^U~s}TFh6v4$IDKu)4b4TSkt*izV4VMDF!gM1FxEh_7S$^anhfJP!0f#5YQ-_an0$ z`e$r~qTat?@l)pgD^@#`y!)`(Iotas7CYy7zfwK+{*89*D(~M_kG=m;E9?D+I{P)O zEWhP{%X<)OnESkk%#-vZ<~REHvRT2NQ+}f#r@rp>o|3JJ_q6Ik+Hua2s1}Gwu(sJ$*}e+P^Tr)RRCg)PszaIaOaDTBWE@sy6+RYpDcRjyPhHSIq*<9#G0tTJY& zd{xrD?fS;;vA4^y0n&a$Vh>C5GU5?ctxj2D^z@53E!__NP%69~f**hqa`6cGyTRyn zrqZYEmVnIz?tlJUXEeAjdOPn#cTf}*<0zychIdMCV#-vkn}qeVLL5H8pEr;zVQLi? z*%8`(aTd7-k3`HfLS((&%g0m%4=<`ociR20>|AFdU$pZd?Tj@uU;af8)4=^-*u5O6MI@eo= zt>tXyz;D9pc?%Y2AHn8q2lmdpfZ$RrK96GM+yalj0UmwK`?Pl)i_p(TwEDmoj8orc zocha>)3A4~j#OjmIw&$2t5sS2emycA``&M2+k2Mxw^;L@19v_*a=!NyS@3#yW5GM$ zyGPc$-oL=>|HAt@_PI;FU%~M|;r$w`+|PRtM7|jLGM21gf$u*D-~R?agI3}>Xgzkc zKfqe_hj^sgLaTQ#R;1X);+^T2kzZr&dO!BB4YYxOz;BRRg$}ie-Z5Fd;xXtMdXpz) z^NPK2ExU)+>pEuCucxn+hCS<>SUJBP*@;y%_N&-4?`5wvyVWXMmnQOg6c1BFX=6Gg zBO)j8Dm4bn)BMPEwKS30S~nqbzN|zeb7*g-MdryuG_pWaB>i1hOo)60S#nNfvE<3f zMf9f@M3!I``q9WGv`N=QKC0FzvQ({6JQ?bh_wrp-nBRz8rxpu;RjiBY6y`p zt5u8qwN^ujd_}EV)R#|P|UBjOTSHYg()nFILX3FGn&=73lehVQD ztY*+A_S3&p|XeWg{;W;IEG1vj0X$@WvjzL#jfbqY`<1xcdmRA;>;N3pn z9pufiU@O?k<6I9;*a*!I_VE8&>XFZvt$fo;j6F8^SC)3*$qFe~GE^ACRjm`xiWfMw zhiUYP>VpQT&5Lb`d%B=NuG*Cdi+yER$}DMv+kT*}dn~7mBCMe&eFg=wb%%g@{{bO7 zDRP#bXXas6@ay0y=;Nv2Q1CnMe@Dn6cFKyUw}J!GZ*!8V(jxHfo+ z7)yg6^5yS2c5|=m+F*CEj(2(DLc#Bu!N`2N;4!ZxK*PaT%F!dx=?lTLeA^ZLk=k4u z&~FG1TAkelMX!Y#+9{({wHMN7JuSXcJ^I~Edb@(STCh48;O$;~+0<3d{IR_@rj7AlOZ z2c*yNHZ^$HYTI^rNC$PRANgY?rQn(12xXZaJjwOn30J$_kH7Tp2yJ{D_YIsgjMx5( z&?aJ}b)W?Hz`Kfqdx*=pRSY(FrOv2!Z{hnbUV8AR&8+NH2r(*LGc6Co3j&p>wxCnB z5xBZ&Thv!kSd+W?42q$U z2J-wPLf-^Kdx_;a-V4Sb!0&s>2f6&C?T3jqH`qu#0bf2x7$NMtptsk6=Y(1ni>bx1 zM%^>4y0Bhi4!?fQ{@E9n#3nGbkNqe-vk7=K;-__aJo<2dN&Y{@UPABiGtkrLy)S^D zuP{=_+UOB*!+xcx$h(oh(&%He0+%-yIWU88Y4ye$PhE=6KbwAF4*QkRQ9tf;+3&>L zTYuurXTK8~E5IwN#svOO@*@9AM*W|pTgtsg{Ql15(~pyS1#~P;;cX^`E~M=nfDgH9 z_C<^z45X(zh<&2z5ho${4#l_L2=*zaOG$v)@O`{HPhsZh{hS}9Z@ip&p--SmRS$VGJ>l(y*WpXxbM$!M#q&c0I@A?@ zil6SC#Z1dw5C6%2J|0pEm|OX`ej#%!M``>7pC9FZx%c)_4`_MSGX~BbbqS zE+eTUy=DF==4D>Xyv)&rkHPamF=I7jy(|22%+ma%MqKgbF~OgJ=c$SKmAK3_zN46@ zc@_{(^{3)RgWVf#+TYJIWAj|XXEA5<8uiHupX<-XTgN+7kXD~CMP*v>@Ox?7x@>Fql^7Z$P2x9p!%5q7r=9we;KJ??qBXr)%;E`10C~H z{2yH9U*&z4nVuiVPsi2%)p!%S#=nMC$0L?9tnZXNA849}LVQ<^HezzxJv%my{T8_wkF)jMBg1{to{R z{9;KjK9qT-EAd5o~RF_n3y zcX_jRDV1U`DVBkOf|HLQ5BmSen{Coc~zF{;S$e-|^02@#GPZRQA{u=($x{rhX z=ltiq3z&=gJYJSw@LwSBYyEZP`X&D*zSOFa*D*KsWnyD~s&^A(;jemML?`kFsciH& z5|6b0L(Mzs0`p5coLQ=MV1QYwU_j#lpJ9F~JwN8CHh_&Lyju)serh`y(29~}*a95$ z%9*9w2_BC7UEVNhRqz6%(Sy(6yEMf+PxDnh#{Qxi-f-ruX5xDyE1Knf6@Q7@-q#ti z&+)z%?HBFm{WZQ5bGu*cWz-7!#w#P9pZ_#p zdc}_x+)A5pB`shp(q0g}jYQbUwTmO5U(rSj_ik_fBG)GVpE?7hWUfu}kOA!LkS&^m zcevXeY^N98frORCH*M^?m+eYEGFuy8bs}x#fd~28E=SVJLQjK?M2k6?&}@5?3jT_a zWr%^ZdXdtLeekWw@ToqvQqowx`b0jG$O-!VjYvApB1rID!g&X>SRqozi{3~|pcbvr zn;d`SX+yA;yH_o28$G^MJ03&Jw4Z;XR!-6w)uLrm->1!+5IjL!t-AtpszbV^Q*Pks z736f}a6yU0L~l*zDC1)?aS|LdB8TP6I1nw?YG{$lDvpqa@)bpxwn?E$~Z2iro~_quxOc zl2C!61nN-VPtrL#B1AS7CCJMeK(25}Qyjs2Jf({gxVjkhkMPn)I?ddr+p|v2b1Ai| z?~OWjhVlWZ`IE@f=xF#? zSWv$n3798gNx0Qm2|5Gx39axlVJ1_)ZFtkdGxZQGXQ34%7mArT>ENRk3RW*BppL!@ zJ~9chEuI@`#H3H?b)%o~5+(McX>78BCy>jxSH#~ zIQCn7rP^0(an(UrMf8X)Ci5s{y+q1xcZ?47UEiDmp7erZgX1;;?Rqf#4(9{(@ZKhT zKQ*p^*xR^kF|O%D;msU7Xg}z^@r~#nZ(E$zmusUWG_nBBxGUwK0NCrSUc3h_@m@5= z+f5ut$Y&}o(>~H}Aza$1dW-8I-<_aj;hsrbCU4c(lRlo_IJFvmI`K48ZnOuMI-G?o zJ#9jo!BsjOX^1dFyRsjM>fmys?UD5Jbl=H+ksY;Q{22d4h+Q>+IsoS3=Ri>9FmA9o zI&eHLq~s(Ru16!3;b7w#oRO+9QouK&ZO2pfvEDj5Z=%%2u@%;8ZG!MAZsy?SMqkJN(04sI z^f9kfTCbr6s7EgN$KXGMyMuoPo)@Y0S?C3j1&ulnTWgi2(H`3SJ$%y&wth!?wH({v z0oB282ulst&?hdU&8f0h`8`^Rq2Qv4R3s-1LF)k?fa-B;D^)voLO+?JGz)hn6oi^= z7Z{$QeoBedw<+JWWrz3|F3F*Am0gkf2#b}KIFS2h57^pCeL6%OM`*ROsAY|m!A@G< zRA@R%{)-LUrMwpn90h^A=b*iXmq^De95t9mP&JhDIK-h&!0q1T|5n8i#=4ug8j-X5Zz*)qPVeFU zUcM!i81;?PlWeMXQD^!H?riPA2}c*kb5B5rjMu;uw(3dowd|{%&KS9e(4@3WQ zb$Wha=APD!a~DV84JNe!3f*Gucs*&VSF+jUUaXFRunV3L5WD2i_kdQh3tGbs=}9Xd zmx1{T5AyIJe0PF1^2PU!+;8Hnzt{{)PTVq{#Z3{l{Y{=#?wwGC@{x(u9)QJ8uzQ%= z*GV6aJd&E);lyU;uSeqA%-O}RoF%qyH760w*XtOa4;b}$%1Zwsa<&1vtPLIYLA70q zC2VDBF-iF-p~M#amRPdDBa)U~vpN44Z?dR?l586|)GuM4Ns)AiSeT5euOVpW(iWR%sY=a3x0- z=O^KWv}V7)#^b(O>q{Se=?e3xl;vtIOKrR`be-f&$R{054wBB4ytFW9K#%}&1CN!scis=jyexA-Lo=N7)`;y6Sp zQ~x+<*9bpE8P)Ry@3Dgm7>M;#+Dy_Cug(PHnbdFT?rr0lS^+KdM(J{|-oMJ8E%}L8 z@C^GRFshGHvABhOd(zcM+a`^r=PyG`8NpWRi)j3$Z_G1IV}G=ZUqg@jO*Dj6_@DcG zv~bc84lxbkP}2<#!~fhrpew`w9J;c9_WuQKsx*OPu!#RRZ=6}(PDJnbApU%%_d6Sn z-|x}KK88;3Tr_wu;dA$8^mP~GP3}$B2arwfQuK0r(bFD8^L8!%;7)iqn}+R6%yr2? zZ|~y;b0NFN8Wv&iCQVnBjRZ_Ieb;Oo3HS@sdd;?x0O#{_R+8>(K$7ljfa$(wo9+vZ zH~WRA`>HhE*M<1jyp|X>PH>Tp6U<{o;6^-qewzI<@3ZWeVe_|~QHNXE&u2{JHby#D zuxFc=Y?fiUzv+eZ!Syn4fqyL+ztr@?#ikc7^`#e{X?o!$rWd}{^uh(E7rxZ=!o{W+ zzSQ)>ms>d%n_l=VE3FdK3!iOz;Ud!uFEPFFxuzFhVtV01(+gi}df|np7rxZ=!c$Ez zTxNRVDW(@rH@$G0>4nR!)GMsiD|+aKFG$i0N0RiyIi?q$Z`9D=^uqb37uGDNRjkAy zz3`=`7cMrvaH-M9Ow$WrVS3>urWd}{mtMHg^uh(E7rxZ=!o{W+E-}6EG}8-DH@$F? z>4ncVz3`=`7hYs~;U%UQzS#7_A7kak*S$+jJA8#{hl@=+TxQzgJkt(Wn07ebw8Lqp z9X>BfJ6vws;ff^fa6i)y=O$@~86rYRoMg0no@s|CCuxT(OglWow8L{uJ3PU(!{bal zJj}GiLrgn7+O)%2rX3z++Tl#o4xeM%;o+to9&g&=v8Ej!YTDt!rX3z-+ToF=9Uf@f z;TmfCC-F%u`8Cb-l$sH!S$+anQk^!flIkQ8*XoHIX=Oop35UiSo!srwPPv&x<%CEs zc3ZJsBypA5U2b?T;aWmpLhlVdTvMpg*1P3SyJXxP&TgeLedXZNIHx$H)MM$i`|vEgV)#JiG8+;Gz_HN?#l?IL_!qOx6P< zH9^))`zWbL>DD11W?S#@6-vPMAC7V5uu{T|ANbwh=+R7n(L`?OlL2Wfx%Yt$92h*Z zn@Qo2?nDxJ0k}>JOS>0H=~K4H+ba5Y>e-l7idF*&FhFzR{fl< z9Mbi4m_EjRbwt`Fh08{O>k%N`hX$z;sN$RMiFJpQvEsqujpaRdAJ9|V3Wn;5=^ehW zAh$)qI(qY#e)yR$ILPrp%56Uqhe$h{r&tL}fBG7-St$}_3R+93JnRi9x2ntXSPjJ@{Yv6y<6p@! zl7{nuR-+modio-78u^x#dUB7h*y^b2k03f3DzvqP#y0T8E#nrHe>O2?kjHJ%kEltT zv}w|d79wF`HOMzepX6Gxvq`QeCskH&i;Onb6P#)_QIeU`>W_AHD*p{4otNl?h+0h! z;$66j&UNe3g#w=B{#7XTzf3bN>&n&2XDDNJE*veK~>ldsuIN?+q!F%fa(pUO$;qaz8#!f>E|S*cR06u;tSP5`aAJWbfpm= z;Z9ibO;X+&|2rj~fA|A+K-Pxn5>3*NN1_{gWk+3orRE;CI{YG`kJBssN4&{rSb4t2 zwH56e6vz1EVQA@h(z+oPccQDVCaf8(99I)b)=2Gfbhn-B zHneib_^On?fNBpG*;dvD9jP4-p*qYxeM}1uY1i)EcgOfkIFQ~oSx?c-Khmg(5{|ns z>?`ODd?~#=M|1ooZm2KaJGFDMwl0y7OHE^#R=+5#PV#J&&!4*zAG+AUo^XX$C;mpI z5Q|0ag7^Z~n1V9)hT4}!3JMGDVfjjRt{!?!(1k1Uc*J0_nL2Qc-C8-me?9(E`9I8? z?GA3m$G0IQJjH7>kVbgtdXp}X3D}*!S{OJABGnO_f#=dgj&?|;E z&?K;n+8dyHqZxZGYF8=9hP9LYYHmXSzk<@)GEBcJI$$0Jd1?fbt)vM>kWP+$<1}YV zqm0naIK*@ zwz4Wj5yuezl)W3{L2$>-!GomKLU=!V>Z?o}yc(`+B}i`etE|aOEj`gHv(MQ+9^DM<(JinZ-3)IT`y%VneZ+cn3#~_Yq4nZsSubv;_2TAQFK(js;&QN%yA!)7 z*-WLH&D1<_QG)G{ETq#)68;eidjyjo8?rESx${G%PH)p{Lxrf$#QC(Sx#k`<)}JhPm-z$~ZEG0Uj}vz#h4%c(41mQ&}N(VPw=>v!J7-yMXNdK7CRuN1y!CeE8>EcYUStb1CaJfh^^mKO z2_lr&MPa+Ao`qUwR|i#RRrjMD3YFxgUQcY31g0%5USzt1p=1@qJZ8Nix2sRVW zOb_D7lN1NyQsC{?ZlKUExZp%E&g>T5rxt|X%x{n zdIyfXpO*g!xX*)&St|-oon20p_w*%c{oMGFQjAg-d4y!}jmnjK_+c9|dnbLBWLfr9 z@J*ssD58w}Q^x5~l8)|ME>h}Tc>aahH!pzS<)SYt4=7Aw=%ZCty zXgrJ2kzI@=>_nd4i*|1eV+sAC@a@boIRKQg{)%LbkzlRRMozb*Q>G6LBP|eKq=-my68gjt=P+FN`d^?f0 zMEZz4aO9{Y8(d`bUOI^)>kmq9Q5w=Qs0Zg!(%QyxFj^rQ!Jd;&q9a;k^+4Pv`*`)& zcGIFW=LX7F>{=H{d_b0G&caAGC)4;YsYd~1MS8YxtgmHJ5*z;_eVpk=zZmNaz82>U zx8M)ZQ95-k&M_qyk(N8F{vV8eo47j3E%E%p?vQB8s1u=FOB|E{^t~Nvy&U-^pZr!D z9`};ZT&O4?zEcA(griBEWz(lJmM*=`?)q`wD`?_U3NNL@K;v(#c^8Yz^j zdZ>&&gP&a9m6C1|*J=)p=s1fe*@aoD@x9uG_{MwNbdB8`4H(SfyCg~5LWaBW@a-Pr zEMj!|O_dobqGb}5GH$$vz6`w{Qnb|3WmE#^HlFrVlZwz86nPVcqeOhXS1Y4&D(IE( z5?j3V6G8F2?hvix?*rDe6-7#_jiXAEQxwZOYZ0v# zIT1qBPOVQ+f)Y=HJPu25HyUlLr>v3gW1Hh`)@N-a6+D>{w`MO>+i0t3k@+%}Kl)48 zL`uSGEcGbQ@Nc->G5(Biz#RJ`7SJT$+WOV zl&EN`-aCi)n(^CAeM~dT#7c>JmJY>?gn}oKXf?-3!A1FD5ekPS1U`G(jkr(1rCy+J zS;?z*P$mV;g86Uo@)GaRwSk#DTjx!5gnboH9j1$G<{k}-!LABYik+c|~yosAOO+2adQMg{bX)`hl7XSJNr zGk4XLLwAZD%>R=)bk%pUt%9~wyxVQk;;CGF+p1^_UxF3~TJ1-t%179CB2^v*_p-Lx z&$$MS6_MLAXnPMWlx*u%Bj9cvu4W5IX>is3%*|@GmbQp`E1iWjdo}h~qOIx;78h0p z_0`fk4k6c}#75a21ENMaBr#yC=B(wMeOH9~AGejGSK8qqva*qs-j8Q2>L^+1WUxP> z=IT!y8)!Lo1O-8*0osAqL6S)<-1n! zEC{t(cT>04 z08vq>zdDSBKuN3Cz$*@;{pyshnd}G95*+5NdB3vHf0O$J>>($hTvhUX7vIVh5>i4u zklNzLwA;W|hxLETfh_~+NcQcLm?ZP0+Q0H(pfGK&f24QXup!h1-bn9&J=WV&VEjHT zHTBYLBhEb93Uo8E5Mn^)qtv#O=Y#MoYZrmAi&i%s$whO~rO%Nkimm*m5uR|PmbCNM z+I@oJZJDrmnk^1dJa@hR0ENcw(4h(S=GX)i7g1FVHww0m9Eh(;yTr!T?c&`0lO%h) z&+VJ|t=+)gvdH+YTx=a+qtw1k zmPXvWlPK5%dp#xV9upr}TM$0F{Du$GI653jeg;qB+qnFx5;FSIn{>X0n!!{Lxh$4e zZ*OR;x@~YHqa6j(W3--W0xI31kvANeJ#CyuT_h@*-b%+}>$M$o|HaSc)bd>V+Uki} zxsz|zsRNQ8?7;tr<(AR9upD`0pn`8PN_8RK$s<2lKUa__1E#V7TE$V zB<;dv_zpc#;O0yQ+5B&(C0dIt(QOOu%l7<9**rQ{26$lZFhT`A*`) z>RpI(B!R2t)9mGT@*&Hgv|yt_q+X`m#DPRtn)C93H`=arMzyxP2t=`@+YFxH;kutg z+cz>vmz!a7UZDhFvOz$Vynbv?smscdUehzJ<5<1>!mVSk65+W5hVm<6b% zd8*TN+2_%QR|?NyWj#iAHbBeg(CR|vcHW@*OT5Qh2H$l6 zSp||xEu3@%v!pij$1~c=hiY0i-#i`%MHb)t(Zz4z-ztStE8Ym(#khq%!8xJ=FrCn} z#G^>QiR11~qnhMbiTjiIlwLTRNPJ>?ucSx29n5zsF>=60zs5FctTdX!VYNm*LiK9t zSL;2cul`A^jiDJ0*k96nxV~enNlt2GVw>jAMUx<`vP=C#1DUc&q^)T`caZ*7?F`}KQU_Lu^9>Es7e1;wg%CI*ei%1+K3F}FdBua zMQ`fHVBUk5z5qq22bv8;`5K==a_aJ@(T{yBBQtE| zY@fp{tw;%+25eZk<80Dv#^f7j&k;|NNy^na!7$VW%!VJxEct(AX8ir$Gt75i9T{XkQZ>_kAO3`y9wYoAQXXAmyS%E@ZEcq2{xbZVQld9o0iPF>WjL&>A((AxC}2HE$d zlZyg;?MZfA0G^A9LB0_dQu3wT%Q9#I`6~C$hZ-x$gM1^*A&*t$S2@oBU)6X>kZ*)c z@;iw1A)!82)V#J1K4F9 zd6tc(&9$*K-^S7g*;rcC#?ofnSX$J^(q<>k43<9$d6dvtT8fROrP^3p)W*_=+F05! z8%rB%V`;;@W$cU0MslW&sLitxwOKZzcAnWtPBRe zLMKDL1?F{Ofq7k+Y+e@@nAe5#&FexMtB)_jXRW+0)R@d0og!^13j>ye{;EB3Y5%ye^D1uM1k!I^WB)k+2Ci5>{p-VN;Xr{?4|M zup%1?tF)1@avKR7Wg}rFHWD_(M#4&MBy6CKgblEfuwoktE3}a?=7dKpys>8YS70My zqp2I8vRaXCwIX7*!nax>y%m=7Rx47iR-{?2$go7i09 zvaMF+SgnXyt&sQ1GX7Mp$g^6}-)cgE)dA_*2l1ckK(W<<66*gj{*=$*GUE;9@P<+R zDPJL#@PaYarm^e;tZr0OyC+enCbJJR?;(S&h77S9GSun@Z2g>+vXg{ylpZ zbhaCq_u$8pwYmenC_4_JPHh(O;U;Uxv|NHuP8QrAJC4WnKo9 zM;ipqRpM)-DpJMb)dS#LS@13N1yJEIFWaav11g+MY*QlBy?&8%BIj{GD>BPVF}ln( zy38|L>>pVYS%OE=Ya-Wr`9_fiMv;X^kwsACcfDe*LGP6rU6$bS|0iB49+m%%kX4aY zUN!5=-|v;1e~=2J)S*VHm64}dJ-$jSGI#^TM>#)_XYXp(g5T;5#B=60?ziJZq>MG- zcX@-%lgMDB=^^;e?C^$0jzt1|K*%%mP^0e}qwnEH-y=N#Jk!C=z4g5HjB_oaRlwGc z7HS9Dhr{e{PMDKEX|ZM1_kV5!Hp%M1);kQqhi5&G!zRoB?}b&`6ZQ2ZYxJ_Ajn!zy zUd~N?r?y)XJ+d=)Av=2c;lm7)M6w#$0e!FS*g2B6&6z)aGW1PV{^|pUmU*ZD=Y4!p zjfDLm+$FU8Ir&fK=H17fo%^}|5y{F_je5~0 zS&=^Bi{1Z8lIXj?_@GbHTHLR8M_5A6*Tz~Frt2Nt`$$0|Dc4g1rZnJ=)pVndFs8(( zAK*@LAgOoLN_LAT1^6O_(5I!8U*k>^xhv0ZePaD}y1eL{_p`wj*7W^7b&wGf>aMKR zciDISk@*E}cU`ca>3@8vTf9trkJai!8nuNIgJVcPH^k(PUOxZOVbjQwEb))`k{Cho zk6OySmg_5gg{NaQ2>8^qv5Y6W|3ge4M(s>QIvrh?=`RvN$#>`<9;NU21lM&?TNRc& zJAgo=KHJe!blZ6MC+M2GMP(1vv{ceQ$_za9vD_v-q0?$^>iI`Jq#CI&RvV--+8e&f zkALx}-ju_!o}x7^1Ald<4`a-pFzmabc%%8=lAvzv1%v2&fU1ewo*vTH;?bOW^(n<3y%W_@Yc<#={2#s%&phDfZg-PQh&$ZI5 zOIQ6oceR|m&$EsHe!833h#RrgQ!g7$@`&>V!jMFI-}pm%bT=|9UTCeK;a9MUhSyu1 z8#uqo6LiBF8t*+mg`yQ>UJkk*G`YQRytNS#>G`BG->c{V7kBoV*ag=a#cZ@BWBq$!@LS%y@Pigt+Q6j`9fBnt^OyfdrHqy}* zyg@GH^He(6Q*BriTVC*5ZjvNE$8AL0{Ua@H@(i?COm0+L|D3$pALu-i-Z(iq{4go} zo>3+Vf=yvyt3s$ z+o#-|X9!9~vWIYm?i#*|S0nB}7We_Ka8_At$sgTLa)MNC97_JfT9fK&kC?&H9=;Wq(v~z9X4WGgj&!cM zm%Uh9YVl`wF*y5T^AXwHokW=z%;Xiktj++?MRDgLL=7v`HK0Le=_(5wShDU!-EdIGiHUSpk6lT z<4L@UFUyHnzDCzT&GJ9j%2=snSG6;1cy^X)@F{ITrrL&AN4|moXb<%f3RSDwDvm*H zu{KNIOIVc#+SZ>hN%IGPL%W}>$+F0kPW+*E{wTRV2tOYT4{r{B36GM0KY3KyPuMT{ zLN*3S?rw89;Jzp(*O^pb&sxA6fo4-zBWscL8-M>4t zr#Kfpv(I~cMGLhFsq$@hYe$&%yEWz&5FBmN53y&H5cMqH&%6+LX}rg!ccR|#k4^FR zP2aELq^q@b;k~}cz1y>kyZ3YVS`pKuB-#`EOD#jJ zW$q;!W?COd&cO3RFE1?!IW0zCC)d*?KI;DN4pCn*zMt@r|8^j!?UwctnpeABi(c|| z!lYrAt&756=S=O1<1d^yM`%+_j|8`uU1F;BBj4hG&COTqUQ26L3zx4)-jX-g_o#sl z+@GT7OuTR{&e&L~W#!*v#PpbY4Ny@Xx-NN@sU!R`o*i9;^kVI+{;0E*oa{rYM3+Z= zl3gU(@8M58G!Uv7)wb55dlziXmVx%hS(}eMbe=vIA{cWBjmlu!7fI0aIUHZY=8 zD`?-5&h)Hv^4629B)@&X_lgb7zL{Ke`ig^mT5TmiCdc<2A?i(X?JKr33s1xd)$9jW zFwVTuCmAcJUoY6hcn0WMZ9{_Q0+zbiI+-C6#Jkh_%`Jx929GfTC@3M{7<>6X`n-C2T#< zde=Ai~zN8-#)R7eUfo~NXxoD84 zrS~lv*VfP1dgV?&j!DVA|M;PV#%sR%fN(D468S`x_xgLd%D0Py#^*WNju#%R@3m2; z@v=7BhU#c<@ZUvT>Thi@*-v%BJX2HC@r32_Xy02bJx_`8JW`UTrHFcEJkO{|dQ01= z3s9BmxLknF&U=AoUeiWfT}XbXKL-HWJJ6M+0h{jxFG6pLWGEe1KfX8{I?0Z4(Zuh) z-NDDV#UzI0_q~NBzwiCtcupvPB!7_@t4I#*aUW|F=+9Z1s+We>b?U(?`hhA_*@DXB zDQQ?c<@BXVWeT4u4nQzU)<;x4%nqS{s#!tZdu%RWD${-ZnY_u*wf?Juj~%8=CH1>9)yi)2w;MnQu1p7c zgDCsnHtQ>3KXadPo)=BCl@dGv{XRqJBWP-P$J%ZwJRjof;W^1RD79La)L7KKXFkb* zh52bO1$SYIeP3`V6nYIM_5>Gwv zl(shah8szSc$4MOXoqNrE%5~pl7o9}Hanw7=xG9MX4a{`0S;?>Li|9Fv{FqWM+{*T zyr+yqz0N=DrnV)-8}eo>DR9QznAlU#tJ+eq`~n^=-tXpW=qdgp@Y_A=(WI=yfqqsgCcv3E5y?~ja^OryOVBuv#aU;3A|9VIiBImtyts~ zqM?;7Qz;N<68aWznW4u&@QChI2M1gyDL^iesRy|S}xMvUIx zA}y_$8Qau40!1I&Y3x+{_)8j_)7YuP?NxGzpt=??74kV?bTo*(OBnq%gFF7#rRRF< z;q0|nt)1!3jnvsrhy4xys*~Tb0Ot)Z@&^&~aoUTDcyt zP8UG?e(Fz1U872Bx3vD+%fPmpGw|@-21bFrJEffzpXAd&LaC?IQlIo2e>I#uF4O%J zWDoika5Ls9A-`0C0rm2wfjEKYKqV_rxkqC)xclFFG78;|t?p|*-<>w(G-XQ32{W`? zKvBn7Qz!NFWuDX*logO*I~9L3zC*ssP7BFNA5b=@Z0lUAiL{NfUogHvTcvg#oc7wf z#}YFCxvl7;UyX%)cvr9^dXsLZkvc%hFsiiyTCi0pz@o}kaGq+zMgq*e-|dunc9CJ9 z7W$I}I@UHvigW9{G0Fvup}lKg2~*<7p;f$~^z}tw;iBoj-nsA)Z`4z`VGFvlW7wo` zFkCSTtJ=z&SkI%6sAz%ri39#QH*#_WsE%+IXG@ghsia!12XYEK{J!9YJMBC*zozu0 zMPVK-?df{(BR?kLnmp)Ov_jcVl~#;DCsG2U&Gs~bw@=W=dH?*aOEs_WjarB{!1$Yw z98!q%AQ8U7VKw6nH}SKr6qA z5JqE@`ZB~4Yi-??FW3mxAFPt`ey!^Gr^R`q?gMtks`Wdxl8MrJBUr;3UPTE1k~20- zTVv*`6-k?WR-R-5b1FT5(ocz7){nD)6Co$v!S%HUPuL#-ke$H5`kL1NY(jtD=yX>} zvBagNu&zk^BiN8u-q$AB=neF}(SE9@AnvOkLYH}BsztY?zOmMV*M_tp*g{wmusQh! z|32Y7=Dw5Z4_9h$rHnL#K|JG0PtGUeiu2UmD*}+auS2=6#H&pJ}BPylfo(6Ia&dE zwP9vBXGt3aIfOga60Jqs4Big#q%x(P6B{{DTVfh-INhHMZ>(8J8hzuf^OSg_zF;RI zA7$@vtAVd?Kh-ak-F9&1R+5rmJD{X?2-cz0j`PuaRWdVlsD+#qQOHBYSq2HuC%r!1 z;~-KyHEfa~nPX-VAtjnL_MAOe0^10}^O&nznZ!eKVu`9|vq1r96tnSap!Lo|dse8S zjUKqXP4~TNeLY#%#(1^EwZ;t2VbMoL>X3&$WH1&*CA+G%5Dm8>lahv??D-9nR2;mD(T z@_{-v)>eRKxd>Y)jX=v=xQ#HuudSBxg==vXhr7f3sr9L(ISSudj_{I3>b}{67U>-^ zN)BnGr9k4vrUOf^KJB85&8{HLH1JC6q>Y}$X5xF9>kg=@nlhDtj(7E$>57xSKgm)c z>CFeajWFw3qt!#em;Cci#~Z^UJTNT7Kf?9ATkd_)y9qDjw|Oh@K5$`Vf21Do;gxs_ zABb1*A$R~EfzR(z`1&4$ckl6d^`7ic!H4$@e-2){=i!%o0sgqJXC0`US@Y>u|LguY z{5x5f=`L1cTE)6bzwsaP|G>IP&$AxVde%F7&40^(n>CF(SfQvBBk~khA_!lU|uRt;W1WNHEP>%lqJZM8D&toHyf@OjHX$&$OgA3u?+GQaspVsnt ztZ@Z-v(P#(@~7ce+{v&plndc&dER{U954j=M{Co|%J(Bk?DCT5-TIm5fYIhHV6=G)7-il9hMR|g(dHpwwD|@Y zW4-}$p{BDLgP6uH4xx#lKf)~IAi}9)#e|=H~$#b<{!g14;Ty0 z1I9w{^WGQm6Y>@BcE-!(^E?AH!@Lfpnb&~}&FjTb z^LjDgyj~13uNN1Z*NdU%_2MJ=8^EWC`5PE&UN6$kyTDNME-=izUJN!L1DWRUBFnrB zWSe(^9P=(vWBxAsnO}j?_!79^8*N?$Mwu6ZvF1f!xcR#nZN34d zKY;$`4`7^m%pYMM^GnTRex-TL&o^KB&P#rQ`NuCb&-mr$8GnTN#2;Zk@hi+5ezEz! zFE+3DCFbM4$b8(FnveTZ^KM^d-t9-4cl%QFYhPu)?90q^eWiJ>&o|HY1?IWF&^*_d zo9Fss^ITtIp6iSJEBq_HdFH=TQc{-L^@#V%ua}t8JF8)pn7s)i%M_YP-nRYMW?lwJo+) z+7{dTY-icZZ0Fj_Y%^?Sw)1Uewz;-4+gw|jZMv<>caE*eHpl;||5H}n`x$HVO|^B{ z#@jkF3Nw04%Qu{PJ%SUcC&Ses#M ztWC2u)~5OmeuHu2o)>WJ1ANRXhMZk|ny=k_V+Vp4!YXZ)NPhAhst)k}1 z>gX@wyu)cjCbFlSubf=-lH)w%0X_|4cK!QWS;K2q=Xv$Y@!Z549^RUcTco=OfJWQ|^9;O(TPqq~vrrFvKqik)5B3s*G3@yQARy3I6Phq9T zss2>2Kdr(HR(qJ^&+)Qs4To%7!y(63Z^*FK8+=>6ArpGNp4Ap_@^A7!V(SJjwiN>} zGAg{7R^;nY{5Sk>;IrmV|4whd(bEE2mAkx!Mo)`u<-WhLmHRHImH7=T=sn~=U$rJuekS`w}h7HEmr+|+ke};%qZY|TBQzFd_3kK^FD56 ze2o@O@aEWhd2=b_RByI<%(>1y=G2(Sob$|M&J0^SVt{$fsWgu{XPd{IN#-%9%sl1{ zHIF&hn#Y`B<}qicdCWP-JmyrH$D9iDm~)nS%$aB&b4tx)&Jd`o$Yw{4rX|vP4(b)a zl>PtY-nZHqF$%VKgfG|Ek%{xt=6UnHxo^$=%-pm&znXLRoU-$~&Tl^d(D}L&hxuwt(cW^-bc>6!1l@KO+GJU=IeG4GIKrqBQqbE`JI`!&McYPe`f!4 zho9SjM&pck_>O(Xx)~45xNpYyl$Q1xSIii6&Y^RjKIi^(Zarto^o=tfnEr$5Iny4R z_VsCBoc0-@V4rp!5Onq2r(HnUSq9@FzBuJR^;z;@`_#+$=Y8zt+V)vHlXnNr*@w*!C8`lpc_ zM%Ip;HR7L!cMboi;iJdi%2RDkZO!VM={1vU#?D+{Gkn;?!|unS(EUTdGNgUT5%$Xl zZy&sN@Uw#-AN+XD1aRzSq9GdSmsF0k^uRs>YhJHDjxm&Rk#lq)K7P zk($-S7VecJD}Gwhf5?&YpOz0Qn^jg+dUwt6n&HH}cJSJgjU^S_u@^t8l#1`4*omC}tDW*{An zMw*&{Oq7i*Gy};@QfV<<@De1ikFi%E=Ujud^+|U5^|}Em>r?Ebz0a_ZF^)JEF1P|t zDH&#>_YC_KB$fv6ER$8HMRFoJ-no(7NS-${QWz=mW<|>IkTlo4BF!^@NEb-v#pBlE z$YO6{Djy2IO{LqtYf@?g@aD;R!M&L{)5$trh30Ie)*uSeDe@obD{TJ ze~EvI_Xk@1E4;`3tNm-dC;VmpGVdw>I{!xRX=}~b(01SE{kQ*R|I6NsaLR9b>-=x| z-}YX%RdHXjR`^xpnyf=;PiV+RZ1u1OC(g)80XUjsJpo z$bZp)(K}*1@+fWP8(uT3kJfp|)DA|{SpBv>lI|b&k4Ca-0Xrjk;){`zs2@#@l+x-| z;caR(y)XI6uE(?B>)!OB-mio&4P^aZJVE;-cpk~~D2_3~AN_G$#|K-%LcTvMX!Yj? zP5!*#Nq;^o3N7H#5j^N03l74y)1&x?kK(02iYM$SzC@#y+*i@t8v&&FmEvw{@LULGE~Qlfl&win zz7azCCQy#{=d#k0K?oEJgU$ZsUbeq9=<+`fpz6FH4 z{ViT@2;G4w7I;86EQ+r(pgRt9O+eQIbjR@^R)zI%HOEwXqgVj|VVXaHR0b03kf718 z;eG^AIDDpo&$U3B20r%yX)5?^2cLU^wibM*g3mf2K4AD<8gv5jaUgyngg6U`-|}za zyOlu$P7NC6+Xq$m_ z7q~40$_}9H1iH;Yw*%Y`0J_J3ZcB*U!BPBRh9!S6Ecq7tZB@{xEBRM|rT}QFtklN@ zn}B9F&{T&dUF&cL{kl>XEj}L7VjWOq14UsH&l?nu)^=LS-45M3 zymWz+13=T{uct(}@GmPLg*Bo8ni~bpWkgFjN})ac#YHQT6I4>FyQ&dyC+aQbKLV^L z>g~F)M(hK^BJh-ArKY;-N-Bn<_OPU~tgfy?8hMU*pN9^&5NAhl4-mz0q&nIT{lx02 z)daYG6}lqyMuG^uWdT(#cq;{OIU!WJ;4K%t394L5@7)k8-za|p|11nPCee|oUL|;( zdRkx*-hzC*lAJiIk8u@IeSKJ>RY1E6Xq&)YC2dU=n$l|Y3R4*mo6etTNU59qjE-uk zf5O)&!o~zI`Qx~%PEH8+1DUA2#2}jw#V+9Ag~4i|s|0rqPsfWU&>Y?~ujH9$0E@Sjp03Nfz zV=}+X0*_fhEPj^-#Nu~}S}-5la&=NXZ%9}hx`0+ZuLE3)gKU8gvw$`SXk(mtKhW+6 z+EGBe+GsF^RnbI$74W%9$O!#h38RIX9yCYF$QNF5z-cQu-R2L3j}75kL#-b{%p(aO z#W9Baaa_kk;S=EbuKj5A=K;ZdXl(&ya5=SLDgDilb6m~w367hgy<7P24)D8@^0|jv zcQ0|QBJ4T-d!A!Gl(8jP1H|<}TyK01yVPh7yp9#TqPgH2%lK&j;BYh_P52aYQRGea z(#Sz4Ip`05Gl9Mp91jHgw}8IYK~GCJien5VKaT5oaxs4^8S`XuQR>Kje&>=iL}|kh2QPrh&4lBX_$fn^tnShurOj=36M6 zI?ARFDr%x^>Y$<{l#Mu99=Yozch&xU+Ah_~B|vxy$K}Mcl(hpt&T%!zCpeZ-o;MNa z&0KFGp4&;|4rqR5@GO*7Pd#X-ZR(=TTBr|=P*@{vf1UpdSlvPkzo82TkO*I;k8-kkc*XlvbDW8VTg1 zIL45(aa_j}HWkQRtJ^>gZ-olWD95I->`KXDDLE`9ho#h)Y|1W5eTh(Zepq%JDZ3(a z*GA3)%C3~ME2ZoT{f&ITC3uJOJ4pG#hk~~$zhmU+C^_mNM{VS0JGnVdZVs4d(pYXf zRDR^9lrn3FB8QWc{p2FgsBkNULuf^DZ9v>Mq3cl`W1z-y zT&)g)@3~N$t3QQ~S9PmDhkH^PxOO?|PZ<Z>?0TT z;9Z>Hc(k9_-#CD%ht?grqMEtXQ_%&L(m#=~b^Eq6R>0pBd41P}7bA5qJdZ`N$s&_`*f!l0&ent|{Khg_+#W$+qiY-PN37%g}OD4Ww5az4^N-2O+ilCA-(Qe55Tj>=c z1Cm4LYmhtfjrZu0Urb;8T1GFfM@n6elyfW3w=piYf_Cs`xXwyq>neLn#1_L0&iaJK{8?T8k7l}G^vQPw<&mUvZ2qLoOZ zm8_XsfS>3rB+^1gd#b!#?_x%=mxITZl$v-WGz0uy#E=;+hQb;5L+a^7;^{=DXhY6# zr03B_9xi4aO&YM<#Vt5W(d7gt68-V)=aJRbhroWgC>^YQgzu*LLw*z+z zaPI}~!@%81s@cGu3*4F3yQqNsR#ETAdkYySUj+6pW@PDF=;C@WiqG*;KrqLnb-Z7gg%*%Ak)0~zWtZZW18Em!mmg(hE6TbI zK#D{H)o>DD3B zs)SEa!Y3%OAnlX7sJ92_DC`@$ToCkKbf!G3bE z-{IbJaDW^fhB^)-QS6N8U?bAVmf&IPPWDMTsUj!+PLY$<knYz>o>0wu8Y;%D#xQr+!e*B^;&D4ZhE*UAdHd#L7G%m9DVfS0>f_R4CQe`(>nf z6UWVz@hx0$=eUEz@q!c7r7kCjL8;F{3*rUq3G2=e-hdw*q+T7OUhRZhH&L&)Q|51k z{9qIHY7-C_B=LhnAT9*rf{-5+05x9Ysa2CG^Vfj90sK5fS!ajT`de`1L#;m48c^1o zfqXNN?*j4-K)w~oce+*}cnw||wnw~oJ*qk&-$f~mq7*h!*1t!Bj8NX0l=lJfoEqY} znDSPXo8_0aYWo-Aw5>!Lu6S1n+{|7I3R} zsu8@_gV%cSx)m<48@%p;0wPdAgc=_q^)@8=<(yX-Ju5c#2U^Kn1RC1%xoEPtC8 z=sO%g@<#YShP(X~3E^k7g7*-n*6O!>^DxIN$fY|8+r?4Gv6};1LBF1FTlkN;+I|~H zJ4Xi^jbj|gi3=-RM&Jr5smf@oHzJzGkqPx@LGjsM1vx6AW@J%XtYN@`w=YVoh|(H? z#C93^yqx0-^bA*05=*&W#dQV8R|x+q$L-+gM_~TPl)z8X8~lv>dX5&J@eJUzE~nql z(Loz^j1~n?VEze?F8FaOrGjl4&}5UcN2>A|un=3ji?KCX4&GKknJVw+DC_4r)}!6o zf(+9U{5P>}rj{2_&Xf@4noUeOT>DYpx!mVbr~1?0=2O24pf)^KL`!IojMH;1=eYtN z%c??9T?eE43n}|Wj2T@_NvQ;vvxdkDYOLC%n@Rl^jysSeR)Tf$ntN$`)E9XbUBO05 zX$vLR0pC1E%7RSNCY}U=A|Q3OjFnK_NGNU)P++$KwppbZ+7GC~In>|?dM45S#aMza z2a;Q9rycD?NWImh#+5*H7cHdqVoBXnMr!H+%aYHW1apFN&H=Lt%I)VBhqW??GWNl? zZ~94Wv8j;(xap!s?xIF^Q6rCnmuB$N6^Cdo5OwtdQFAX4N%Dz7BtG$eAZi98$u2D+ zL@h}WwLqH-!H?t5gW(YYrIki$4FtM;@Rd)gbsDErtKiz>HcCyJ7wK*rt<=`jUcU-0 zZDcxk2d$iBv`l&}>cL<&MSaMpT={2E`{sxD5!mfk#PWK}cJL zPQ*Dv9RW94K#&at*+9VRCS1!2bMk67)SX2S#>s(dS&P6; zCne_tQ4JjaI4$cwAbKst%_c|jl%Q)>Gr`YZO3&#apQF8!MtMEY9q2a=H>NX_)9~0NHc&oS)}d4{kT|?H1^)13BOrwLv^N z#b|D16#G8-aVq>c71|pKj;oRc`ZtNCvz_g@+L-Dqou~(y7bP`Z(78F}(5R`CV2Gn>)pzI@7_EB&l ziDx(x&%2DkE~M=CUlKXzIrB< zuiggUeP9v|o%KcYp^$_AZ_%k>RSYd3f|fUv;z;0shE}|aR=f%-Ney|Ys6?%HHCP=1 zm862zSgU)dT0Wq?1)eF5h0_43C!HPkr1PNfJfj1L`PE=v?K2i4P@U-tz^?0& zWdV5>kW1dkf*#-@@KJp3LJwI${u+?K4dibF`CcG@63F)f`7=P?0OU^rIi5Vg5&d@h zy^@RYp$eq0`u~Bh{kM$c{1?|(Jb6R7m^>{Fmyw}!1beO$>A9Il^x#9AiF5Te@+@V5qP zSO1W9UjvG_fkJ)tqtJmQSm+jPxl!5{py>h{$(_4GX!Zb&B%3`zvzMCmD$u+QG<86; z2WZ{~nua(us!gJ0@&7We3GOSJ#_I=II|OcA>#6ps3izm3(D4fCTS+^{YsJ0RBd2YI z19SkdX@219nbhKJa-74_5BkgH*(67vT}eiPC!M;LLETbIsqx!JFw{y3wo-zv))wsr zLu*3Js8*{tQg4`v)nr#btzbkP{v{yTgIwR{dUi+#PSYq^Pvs*$#BMMm>3la3_&^W= z0w>>>axLR1=WsQ=z&IiL2xgTz&b}XLhJy~zXa7>kY2>;Pl* ziNS0kExE&z=q83GSs~^FCe@tEb8FlVn>e(wmk1rgbo$(J!e3t~Y^eA2_0oq}QFs;b3%{ zcyI$>ybQ_Za*iv|nO#XQWhvLIxZX(r&hgB1=-Z9)zRGdCH^#4_E!B9=1sn^JFRy_b z@Ki+!OooGxgAdk(9DE=cV5|&|o=;8-NUOZh)LcqubxUa;t@8yM|F%@ne?eba-b7Lv zO)5i4#fR<&xEeyLtd6MG7fN49AIo|>!S^Xi@qcMj)QS}_j@89DRy~^92K3DR(bP7R zr=w_VBWP>u{ZSla;Kbu7Y3c4Kpktm2x0uT@k7qZ=h?I&}O`5oVTni~>RyoeYL^JPY1hz*{LbAb{%j0U=|vaEpPAZpo&nhIUXm8%5X{ zuH(3l2e(s!a2C+cMRzohkuzt5aui6LsTGpw_fRV(S7%TgQm75GNKl_ceX}-`RI1S3 z`sAyKe6fD>nMx?YxS#TE0+TO;No;0-*_AJ&u;{8;5f^Me12*fx<}<*%5p1sWXCc|l zW87vwbg+;%e+jbDCCI9o93Q4+A|2LdD03U_Q=WG%J*wrV0cr)y@IC7Hozz)3(z=cu ztR)9~$Uz&}ew`d_B?m3!U>!M-g~2*f3o5E@xR{kep? z;B@zJO#+<^+47A=n3T#mIprb zISQx=g|rP$j)3}UvzT#0TaXUK`+&F|JZmgh{aQyY!+{tLo*?$3P)ZR{9}Mw)0I2r> z^)aB%0BUiL4j?`N#2Sx30K^)PZ}(+!FqgVIpMTvLq_~E3X4OC|=^LpBi1UCjp)XS( ztqW+GlfzNMf!9HxEuu9oLgvT=TD72;P-``&AT8~y@Q_}$w7`7`xc7kVTHxLd+=rkK z*%Dyq5v&K>4+Hzd!2TkzKMd^81N$GTpM}7^3Ajs0Nv*+|YGxmYH$MSyegaHC0aZT^ zRZA297}$OSY(EbCPofJtNva0YMxZb>$Dg`<^yii)Bl; z7HgL+*_LhDmTh_8*Tjh(XWs(}AtXQ&DA2N|P)bYLrpvSirpW-)p=H{n9llO5|2Ap= z-RMFxEo~{#hO#dKQkqhhSpI(J-uEOKhc4gDN4S1hPkQg2d$xPFd!K-gaP%smdlb;U z2K>AS3Tn{#6cJO`0ZNjQ_W&s}ZmO7JxU(5|ej9f+^LT>B_4o3`Gb&H~?(gCWic-GK=Y4@~(&Si~1J3kATVpjL zw6`9-KvorMjBreVC+fI_V1^zyz&ejOCFj7l1$v`0gs4y z-^+mXBx-}i?DrDK**UO{&VxMh2ruY+8TP`weD2eL^iDu}8jw!AgF&;kKy0m`vcp49^_pu;FAVlH!QpKwhPVJo1|0Qw?uJH2_F zI38> zledE+h>-#pzXcUv1{MDVToeEom{~A>LB;bbLOmEQyU-=9URynm)4ZAleNG}Al}KKtL9X}rMe8Bp*9sAq;$Kz@Pe+aZ(0 zPjTRhQxN*P9ioQ{GAL@g`LxD@xZ0SEbc4#ckUnPyt57AXhc!cGLmTCtYD zjj~kuyaY116IROQbF=JIbI-6_5Z@7&dm*r139KVZj=NA))Q)%`kC4;cj`Q;@NStWcHF*I2+LSmo88X_k{EE=nboD48C zSiq?DLi`Qi{*M2B6n2Llm^crWqb^==N$a6jK&!4qTP;!M+=h5MRoAE)JV?Nm_uXdah@!AM5>Bo4;9wFPD z>Z!`0iHb26&EAmCmGp?=QpJ}O*gT1+JOOOJ1Z<+_0dx|v*^_wU zb3$rxPE;6BY*zE&%kX3io=jc=R_j9#YF>dC8mAoRiI%j=-ibB#PH8dP1lnrQbM4%p z8MHOHg`$aAO^FziMG9kl6iu{3k6Gb^6oO-rhl9@(K&B#vF`UAR`2eu=D%Q*g*h^B1 zy^Qt>+N)AZ#;P+JZzGcpXht*>8lE77b7goqGOCYcSSB)Mp$hP{LU{OQ)TLWsQwTl{ zok83BZs546u|{-gz{ScUr+O?Re@cP;U*q9TPMmVmr9L0M{4b`T|^E zfa_5Ogr_pVb_Tz;1Fx^*3OkMnquVCHJe_+J_l)K$ga>zEXrdNKhxSys)Trxa%7ST+)$}= z6_$n3_Mn7%0Q}Mk?Qeqir>yheo6AQPEw@tU=kg7Jr3$cA0fs8vxe74+4lw)<+FkH} zMo_y&j2(uUbZ5)d+BbQ)a6}gEQ6ujwDDMJ%cls92*{Svm_yRdDK!M6RC zB;(F603vUW3Chqe6otst6uCjnU1I3X7ahF&l%;^r^Y; z;L863)c?CtU4r@~?u=Rx^iHAofQ&QVEIqLGF7oW0d9F2SbhRn zJ_#&84lKXIp?n@tK93j(NsExtUjcsv$GogQ?67|%en=kP{EWRDviKH8sYUoGBW?nZ z@r*b|@;}dZqfVdbkBlK^Up$E_E+}{U9-a~-JmM)H;EQ|#Rm#AzHgIJT&fDPwiHc0B z{DubxT~dmpz~AG*-$~$)^2Kief4}G6s%DG51^ebLSSoM9Qh5uO%3H8h-jd%pq_QR5NT*9B> zHTaV(e+ctINzdBD5_<}t@vRO=hNJPRhQ?HJxVSQ091gKBWUgo1GIuMMGpD`s<9I>` zw5bgH%`de`pPHcwL`w4~IB{)F_6bgUf>ZL+6Zj)Nbi$K&qL5A$3K$juRcL<*vy=Yx z490<3N`1gX@T=*Z3&%o!PQvfXaju~;9BFB8?PXCLi$?0@mgXKg)l}w6rBh1ESlQH? z?!i7yt@Uy=Vkp863Z>3~%rGVd*WTyWue|p-Cav;N=an%v?23mDCPAh3(NI| z;f|VR+Z`s9O@tf$`T~7#N53yMTr+UhmiBbR`b;$FaF%%%H{Iw-)s$bfsn#BJhT3a9 zn1->R+-dfEV5(l~ksg|XLC`DpaiI0URBIMf3lLLDh^hPl#CR}Z1V>L3%^m_n5IXcY zlN5JO_UonHIB^}Cyb&Mp3p`i-a1fm%{KE_^L)?a6REZlQPKO)S;^!U}#D_pw1MupK z#9Ep=S-Q2QnXqS*jqx5O)fA9RodzRt8_nW9-qa(501<#%QQ9 z9x8GdRn&LIYC7X3veGqeSR7`|p!2Ng40ShE7@W7STvecx`z$@_|7df$+*N^Mb6M0~ z;*OOUl~y(d%pP0jm%(zKNgs}-0>$Bm(Dvp!r^8fJPnd25rr$w@bs2E|(HWT6NvVMk z!wyWlvY1x6K9J=}17X^b$CG7rqAU;fb~<4fCk((-l;cUk(XKw=A#fw%j(lDN&NVbT zz;ZoIpvVT4#o|$8G~EQ|>|p|lgrOp42*^K(3@zlppKJWq6v^X4`MJzj=CPh5$89+d zg!q$$vLA!*qSD|D#I!=H1X!Bnt5TPf%Y0QpQio`U%3OZ*i2gZgGS(A$HTg+Fs$4eq zOm%NfS*T}yN6)m`ZyjhH-)=W6vOSWDwoXTU73W&~EsN@gKe8^>pE5TzY+uz;>?)3S z*LgcyZC%4eJ<=!*pdM+IoBnZ)k|SsSP`F0PshIyIZ9=5|hqOswDvevz;HH zPB@m>Z$MQabl(?ez@!POma||Pc-)`maT77DDUYS|kzxXUiK;?*AkzcBwc|{g;N@h$ z0_9-r^Ik>THWSxK6XD?^+#8~HsKza2pV|=is(xlsY!??HCvhDn#53g+==<>JK z2W3;aY1MRhYw=Jwdn?$swB9MZE9<>=DeRGZWUh^E1@~a@Fq$mNBv&4{7Z5fI@~}}t zClCP1ssJ0EfK`+|p`#Nz$=S2^A!tg%RROSO;yqhdK1$HTdL)t$8%wZs$`MVcFvoN< zW7G(xxJd5~Oc^%s+hW)f)q4W#3_IgH3_Cts?g`2t4?c*)BSA^Q-mEjYn00cj7Qa|jKyg%JsgPHf}bDNUg%d-1b<=-_AA8;3d@(b+>C;)$ox zIfaG`5miDbgw}wj-Czs)^y__SCYp<$Mu%T<2_AI-9}b}%MN=+$NJ>doKv{@mCxjUWK%2m=5L%+!OroSVkNijl?+*ce183V{7DiQXIgTkj@yuh(YvXxK&J(&KRUK zrb%Z^lTPuIefUO|&KRThn1&P2CaLpNHBzM|+E+_RNW(&s4;$_DJDHo=|CTP3BRu#DD)ugkUt+P7_+(+Q6N%Gu-b8XUV zfYO9}56=K(_@o?43qe?{L8#Iq2cb#}ZWkB<6~TuQ!C3|zstq8(Y~@fIjE2ugKBjm3 zM~y3HY!)W#ef%#wGkZ~aSy1WcAi6C8)P!1h&KW1c870yMPx#X3=@!+n z$#I66eu1UbJ!@w`8@*J5+i7-;49M-r1yA&{l+i(MTnsS<7X3lwJl(G2iBmUr8j{7u zrmHT95#~V~o*uTxdp=*=c^X|@QSS)YgMmk~4JE2;1Im+dpuX0}v zT~d=LMQ%EQ1==K5MsQsNpd=zRNHuu$VTtTM;UQzSzvSlU+&CvJz!cEO9X^B`R2Kap z37aQxjoTxoO8K(Ru3lN^UDMsu53yTroQNoCMYlcJ<8=m2y^%gew=LM|bwUK$nH{Y? z!_Dn|BYi~?d*=5+U!jdz>=E;Yme zT)vbNp2R#)`-l~DoRGv)Z~_$0;^YI>4IjRLMR)&TPTeRwL%sfz7$56jQ8qI2e5ctT zz#|SAc%$Sq)=G681d2lC;#>>to7|8nIz>`UHViChz?}1RDY#*iF`MMM?3&m6Y*lZq zE8M@SM;te|FWuoRP~_rBOGUP4@ih%s4_~vXO*;m6ozq|sl?2ze=MlRTy z-T8rw%yDu$ToaIT@T@+`5$=-I7OcE|gWfiU82k-cX%Mdu-7{cP8hIUMBhqDk*X z>b%J>kO>BC3$bN>M!p^61i80#(hCpfOO{-4Hf* zf^x2EMB99g{gs)=2_`G#?jCLxFQ0++)+jaMUYh;lA~Lx0$dChp!fYgME>+rQka-Vr zK%t|zh5<`c(z&{~D^YE+7##kZK%}+OSsyC1c^&4?)|y(g z#aQC64#Ya*P8!`9{`AYYK(C)W1Aw!!1gmBhEQqfBRey=XEy7eNLa&4)fLtMz>!_1p zYntK)q-QXN7^4U-T@;bo%JqicVw>WM_%AnHzV>26KyTHv`-8UPy>|pN1ALA|PLsV3 z-iS)OW-txUkMTu`4$(Y1Sm}f{@5BOY!AHNqmLwGQ5R{?_M-c#}7>_}Ua+bmRb(q`~ z&*@>p{K`dtRe#!X2s74B&1i%zHi0;=S@AFL?t@v`$IfKFTg=VIvYr~&1d|Lgbwe7u zzRwo5vp$UqFJf#)X^0{^B7>pv*aE&^UHup5H;-A z867B2S@vh~EYvQNjM@1_raeo&Q%>uuY9)7K0YBudF4fjh8H8&h`S@YU3{7Uhk@7KC zZh|=g9{p3I^lxdnN;w%#D$hsXtEpFBNC4Ja_E@Hl{W7CtKgzTt;)OTCu;&1?Ra!Ol#OR75YF+s34V70YKd5>7#>$T2HF)=I4n_aryx61 zsm$ri`fCd&rW`=ROsA>muq2cJe+qQuAvc;DxnmzfrvZ&;cBs=wA1L~D2%V#7$I%oK zrlX5BcyLFEb0KB`B+BApW0a*F;I=S(xhnJXE8=WV!?kzne!&9IJ}b}6j>wt(I z4vi~6GS8w-%R9rdWmm6Wx!Dmeo><(pdZf{6Gbrb77~K*JCihx`J?lG{e&yEn6T_B{ zfvQCp^bPx)oSSx!3>Ph51deM0r)&eKp!P&sJOh#Ns)0Y!b~$NSz#sEe5#V)m$jKu2 zaL6?>Ai&OZi&>n1`_jv+rmtD~!i#O|hwIH&y>8pKf4Nqkx#rRp_gy~~su?@CZLmD$ z+_Y=<XLjo-h0l|Y zc`VD5%m^4qWkreZ9VgbcM_U)4)3ttwBV4j#x@GNXla*Lvb9|yNS?Ktx@#lk)-96pJ z!>K(xw~W;+8RA^LvwzUn=sf4*vgByf=5Xd~l1i7mIj@|T)9TvD)q&NS3!eCigiDK#x)ATPlWOfc!+)^>X{&@fgHl6vpJd-)h#%4!w zE#7d-Zsm|c!mwEspKmnC7R)m_oj}nN(z^OAFPosasnDZP*Tin^ts%i=l_MbZNbF+MCynrbrcS z-IVQNDqRaTv}?;)BG|L8L-fK`i+2qS(3E;n_2QjsPn}m+fF~>%%1RoK7OST56lU$N zzru4Q>0(}``OmH9=*-YRc(;w?~C)BG_rI#gZ|5z|2Tb53$Zg4ki#)(^)n|M^Lc8+wTywtqwip=~*=WviOdqz%qimYQC7`PorvT*1&Zmwo2N~>mxdr;&@ zQKD?(UNsbWn21~Nudm(}^!wLMwoEj*(mm6|{l4__wv}6azVel$$>BOzOXt*W{?2ul z?v_#*?@fc1&D}-L;-$S+x3)Xd(pBV)TwOQW86_>f6%2ndB+@8#(}X@h zHnCt9Rte7Oo11?n(zwvJQF1b`xUu5KQwCXYknfz`F5emAbHOw)cnzLXE{)KmupK*) zpv?tpS~-V7b$ZL4P*e1HEIGL(<|1%|$Xbs~aT^=LX}tQu@x)4#ap|&_rRlhBWyMN+ zZU4HS_1gY zlOy{47|ml_D%L3MoOtFYX!VQa&+wV%GVC>a51z$iH2U|&Xcp+c1wuDRoxyhXd}~(3r5JQv4TZsv5UX+#~a2pas}o2G>cB;`7lrT`Z2^P~3+X1!t>bKL8&rbAfqanz7HD z2m1tuJ_s2FC8o@$dj@}qBfGd~kkcN*irOkR3yCpHa3kOE`z_EU`7{>3pRo5SrGc0? zXL$oGKnhuqeVFG78sofPK56*%b-FhkZ}!~ys4*m8_YKc~l9R#^wUcBYBq$`UrXrKD z6v>;H)LAFTYx$B(^EpW_UFMX690sZs!>U+L2^)t?NHTH@WM1=HePbNe6e1mI)Q1rW zUt(fy9g9$(V-Gi14sY@Yd+$y3CrX{wJ=K}V+09i<->|vPTVCL;k2w2BEO)yT9g(Wx zfxZZ>pol{QlmY&fbcE`;nx&RJ_!roxVR93~B8)*csEGeG;wWO4jTHYmg!^#w%1)h2 z`b!a}Y(y-k5wVy?gee;lb!_CnI*Q|Qw5QQdp%scajX1&MG;{^O*A(y23Jt;ztajCn z2?L5MoP+(KS!Yzd6DNrzBtcHKnkcQ5PP5_CtYKn{O(!qvA6OA64{o2V?5+21m|)F= zk=`|}6T4jgvelzgTWvaJ(c*PRcJ07GvE9_sSC=YDb(O~3qEp+fig9UoGvb!*ttCzM zONPtJOr2vP=+$y?MJc$m5Y)Vu>Oq9>O0j&+W?A5)=Xg}u{WfrhjO#@_i-*6T#tCl9 z?$bJU-qFGe3bdV;P0<`##O>k7)2akxWf@jH{DTKIGmB$g4!~l42TQ+*1?_|@e2_aon9fFmcoR67Q%6U5= zcq1U<*;Ban7Bn@UO=n3E0zCPg7YcHzni%! zw~g*{`CRL})@&`(DLp&Uxo=THvA0;q zJ_3SaXQb0Iq7U$u>!hDhluwK8N1+gMzVd<)SB`R;dlJRGENWt+$^K&SeH45j1>Z-( z_fZ7%qqtoZd>;kh><@}YCU--l&)yu#AVb-X9`FszyYYn-pf^_DCgdX6L+8; zKs$tX6ixf#DfFQtNyGAc>G@6V_`vJF=~B)>A?@os(4iZt86FOv0)C+mEoP!Y&{8|9 z04Jp?dfN0Zr&~DVWD`H!gFGAGIPz65=cISf*-_p&QoAkMvof`MldGnqf_*49yt%Dr zQCrNQlUFX&I(JTNwdmv}W8z@hxTI<{U1`w!cGfR$^-m91^fg6Iy5JQ})1Bc^X*?Y% zb(p%wvmLf`w8vRuO!uk>lHyD7Cl0!k6wlD8G%2PCku|G-OG%Sq@ARxD%a0D0g2p05 z?^ZMYhb4Ei-zeRV`|U?Nh{ltONpv{U=cq%3#wtWQqnD1Ma{`TrBsQb7TYR8MrW8r1A@YgkF4!f!oNnf$G zr?Zzr%ZMu8r1XF)%kYluCuXE+>3nGir^z&EQOjweRprbJfB>_TSc-(m<5S?zW8iEs zDrLu_d}acF8s|+S3X3e^zi;(+@kg=Tp8rcB5O%=5i{3jPxPV>ZD$0l z*CM)B3wf!9oRA$c&DUlxV>2-q9(Fj}CK#&@W2=gC<(RqC2bBah8= zV;!p&qv19IU&so|aGx@}6ccL*X(200xI|Pse|>8i+cms3ggi`2>)s^>-DSGF{%aT1N#TM*STANpu6d2=U+j|#%{K5&lr64x4t@l;K|1D3| z`1O9h#a~-KxVETJk=s5}J$dOOPg`jH=P&GxPwXB|G_`CPjK`xEd(d4pF>H^QU36hX zbS(35k*$8`riN&wciV79>*gDlwARH2c8te-PddYO?%OQ4OGT=T7N<(og(sLm2n#&B-1w@I1*1{Cn@#&YcEuUTFOXbhVY!<1;d)oz^;E5F z#rHaX2h5>HHiycNU{Jl{#j{)is~g|uu8_ZN5Le7SGIufi(cGuRGZZ*e9L9%nf4zEz z5iz~Ak^RN+X}_PKs+oHSI(i6cvk2KL^K)nUQ!W*fa|c}b*O-0C!5%NRk?-sj2cxY} zZ`GMg)B|Aw_m|h;{xPa#g2q`Y{Ru~-w3NLd(f7@G{^PPj-xu=p(sp(PF_>rO_Hejd zQj9E7WEKe9nC~e)mS3|(h4>c0mKKp==m%2Me9;sPs^tWj-s!7whHC50#TJ<@66 zjpZ=;Z%u_#>{-S#xFKE1uEmux>{&&lULk!6M<#tnwzDYCpLNt~>|NBYW7I`d+OIA= zP`Euwz7$?M@xf=WMQ$H@GZZdLwLoaEW(NUG~S#`(>o>w*FTelaf#G6YW6-Xltq=09>1FY> ztB4gpdUNps;|tf`e}Czr@Il~)p7RS_6O%UZ$83K<^MLv$lb9*<_MG(40+{Ab&$Y5kffpBIXvhT^u&{zGY>{j(&%&ezQ&9dV)Foc3 zfQ71I!0iS=Ml`|}C8LEFq>5O=k!p-!mF+_O?VsFm=@q_6_>ods866y*_6B_CHO&M3 zCo9J`e8hVD1J+v#%1xbvquu6_dj)aG-s9{}Kw4QBCjGxmQORgMjFq`yBTURL6 z_w>pGpV}LbtljaUu6kF(b>V-G_kwlU+>hrjm)_Ct?#SJ}1a~*!?hawhD{AmNo(iyc z7T%rRcDCCysT{Dcz}<~f^}Om|M%EshsL3MhjC@n*8T@8y>`7_5GJ7l{Y ztF+lO$Nd=Jn}Df>!-Vl!b1>NePZ;Ba{sN{bLS^Of7*kk+Bvw0%(sL}QQ@F)%geRaF z63ld7cR_c9E>;Zy44Xr`cBQt`4B)zq73W;U8XDX2{CK6cm^JtTUFJm%FioTok7rqN!QO^Aicz|f|Vra&Gcux-h~v? zPsRdc+SPL*+~NSVq9Rq&Gs%KcpO^E{a;6sQdjY`H@}|fvl8Q($VlGne09z7SGH}8b z*jF|JeW37MQCeCoeS^}E6YA>RB4`DQKGLyVJXB$epWD>qqdTBjI$V4p$00E~R`5>gQ%O_Gz{~bLZ@H^p|YJ zdtD6ZqSw6XL?PesrC@pP?XHZs|2B_MS_Q7MJ3>E@-ArwY*@1J zUT^lC7iW9G<7qDY?TZ)yU;?MqNtYiK2}tbS3~nrn#yTn zac*JLw zP4TXpQXj7M4EENw*xb%^s&|P~7hgi>{T{c=Jo*^kmI&wVBIuXSXkc5k||it&k-LjzzF5nOX+V zXJAy{pnyUj?X2}w4yPv9g&tuOM&Ub(g^NNS$8`A-C1{KC~&cEoeGK zsK`)meX8G#SW+vZsI7=`wW9XC6>6|m(rtY<7EGy)g6`sLv&zscmJMM zoua#}W05a4Qq$07E;rZ4TPLxYprtX|?sPfFEHz6m9@=#G-kzGJbllTZUb|#_d$P&d zwRJ3BJF&f^t{L6Ys+*Q9YFXP?(G)K9S1uY2ctBg}(oR>Pj-6sblSt)HP1 zB8_Q};;4tEG*Cq}p(CwPp<{nm_kN)g5gfwz=^v#C50m75;}OHCL-iymeG?blqj~g zt4$)dcnl{_puK@Mho&PKsKW!8Md$?4WEArE@yq*h6s}f3Wn|{C(GPw}F?n=oQP6&L z4x$}F0|-WpqaV!E59Xm06oMo$Qurjc@S_w_3q-|{T`}@LMnNrz$|q$M&=oNXS}I1> zg0ONE%$SMw)p^R(tGi--^`7#!)$Q^Arie)|FCV6kQLiiyl+{dmeNlJR6>je?_2`sn zM=`7M)b>4+M!-tMlZZTe^QTT@?7 z2O5=2!maLl`Kneq$sTyy<$9YH9XOErlg3n9-ghF=KZxk@U46^m?8 zOS8JGBe~1ih)^xP&Ud9*Do%XK6CmUXhdv%W4lG`+rnv8q@&?QlB#>ryRv zC0^YpeO2BfMK@TMhB0 zEdypU)|2XyZ5!>Vp6rf^zn+nnYLnem+o2tSh3nXd*!Q>wj?%20!@}8SL0VZ%bCQH3 z?RP`C5H3w_R?eT3$XfuF4+dbRJMdTD}IRq7<~P-U6038~yTH&F!8FGVxh4@*HD%h0G=&jVak(w3q` zK$VDskVH&l6zbB*ZvOgIXzF(TKTrIV;d9GE%fzS8E#aTmFZtS%#~**(f83A1{P5@F zP%TVa#Jc1FpG_k)plq~^TiN*)EHXeqs0<~LDTge7Le9Ka&ccf>o!tsEcHvrFF)nE`4=Vs{V6vq|EB9d50xG|-eQQbEQ78?UQ1*W{IvkkHX{99*I0Pz6_5F$ir#YKo`_DH#XAdGKOhigaOGfa5gt zx}!*zVP z@;<{icV{vNW}l4kK9dcZQ^F~#WtEUA2+gJ1p;!-G38kJ*~qha3_K}G_TyQ!g9DzWtqTX+0j=DECaAgQ z%dN`NHc+EI($jcGny>--!pzcl*(&5I zfmcbZ0-$m7UTGxuh&GkZ5{&-~xak1(oH z>0H?jO^U21VNYFeo0AC43gC4pwV%c_D-G|)p{2td01NPm3y@2*8K{e*Qok7&O zJZG1vmP^h>%pZam~(5f3=@{5SL%|wxmiNiP8ejMBWl?mhT}q0yr#YI zo|**B#1(udra4$xUqm$*s6fm2#tESIUnjVka>D^QUaFw*wF6Y)osn9+7wV!GyG z#V|f*{kH)7>gZT`YEeViN|P>dL3{p(*5)ly(_p%NmDMPBuz$kQpmd0nSB>bWhqVBN)JCr75r43 zGK2YA@WBjH;o=;H4`bboyWQ#HW-QC##e_URkK$^KULl{YxJT(`*bPM<>xo2)oC#-7 z`z3*vaU_d;iKyS=wT5b18XTcAYeiR`Ct=w<74SJc*g=&o-@N8CEf;Lt5N}*OUJ|Hw z**x_XW%BQfDmrR1->+D)W<#B|y%|uWI8dj6o<-ouIz$(KKtZ@BDaA2C!Boo3(UCH8 zJh+<0%!0iN7L>*2Ja<*~t3Cj)oZy-+m-3&1H!BL?uRbjKl5Q>8N{r&bvnl@U#gUBJ zN^anjC?zSPgm-XZu1oS*9^QjVagJ=zm9WZ4vCv|77NxyrP(Z+4VnpdFWKT6_%98dW zSN%{O|9j@}EeWPqt`Fam$h@aqFVD7)n~h3+N*wkYnccuH9_ffL?T(4RnNK4P!xzod z0(y4SSZl;yRM&w+v8}G-L);pr9Twk&_M{Tj^^}j$a7=st#6B3OIc_7jpE%8g`A8J3 zn&9@w_&GC1u)0Rm&lhQBHu!uZUixP5fF`FtULo$j7Sv#mRdQRQC^#}{k427GQJU8 z@soF;KTb29wqIxwuAxOz(53j!0zK-;o*~n>3}-^w>q9u>heoZ8#9?D2-UVezrZ$Al zg*XDrMo=X};RHiIezetj%)YkjBc<2aOof56^`5m|>*jx4J+akZC@cMa>hZetHqZIt zs$i^P$h+5haqIg&2G&eAS=^SkUhN1xb>Q7(kH{B;uGP}{G!(7YhlUc#@`Nfyxw+L# zVMwoIMO)(K@Fs+Y_G1Kph~j0c2SQ2;YrNwMkb+DE_U%wm{OWR0 z*T%j#G!*P!*XazEruxmn!q(WP*2!pj&6ZwgaN6pv_HP_J2k)g&3d|Qy4qvgZnQh-; z>aH_aHyAQCa=Ohn(1VC-BG{G)=-6ZOc`G~Ym``&%G1XAypaQ{uBD5CoSr9SE@jhtH zM@5ScJTPNLCf_6C^d1r8+l+5`u*1JRN(DuZ%e4$KYxRV`t67OoD0%D&e zpT=+Tnq<02kK}|8Q7W9p?@`~X;*)l!XFr>Fox(Q3?fHL z_BrMC$nBv`jA0y+DJI^%Kuf<+UXx&p9{BJ*rhC_$y#9MkhqnC4^vI>?-gQ2^JIGRA zPcZXPF!N!b3lt`wV+iv}E$xvT!<15=M`3lJ#IqTN50h;Mvrd-)4I1!)ld=J4C<#Ej zCt_a((11ezWOk7~Re>Yvh8lcB&I&h$kUU9c3-qzFmv;m^J4;%dyp7}a z(M7RfY3bxg{7MMOwa$HAcH*lVPqwKo$HkToi>Z6wcB(-lwlhrwmULbRI$ z9C@@!w9RO{(XK-@CV+V?` z1eh#AP`d=KObOi464ZB;Nc+(4Ks$hT2<<4^akQt=PNDI8OVmN5dlUBCIp3RTuWGJ; zY1(o;)o%q54glf6NE{f610!)@Bo4_y_5Hiixeo1iwEbwP?=Rw=gZOX+?HJk#v^UV^ z(2QbS;+Eps6tyGiB^Z~Xq z^Ka-O;En0G*}I9^Mfl5h~9m)k`T&+M9=L zJ5s{5c_LYPwKyZT;6^f=F6DV^%225tJMV}W5K)W^E-DvH(&MxM$B!e0ynQ%U<5-7d zJ&v?yrX6T^A>i%c84HniF4efT9EJeBkwvIe+Q?}B=aW9?*KYV)sjt*JwxWM=OS3Dr zytA>k<>r_wYI+l;mw?K-sE(e|SqL_30Z4DAHk8)$QA3)Cwq8Dy_X zZAc)71hpZ7N#HyQwSjpEA3|siXnkl?XwZSAmL#x%1hphVEs^~zK`luDLoPL`cyKLxwOO@a&wDf#C3%n1+bz6D zDK1)%N+~U_hIPHP|1y}=EYzPbyS%HE*2xhneF(OByb1If%&e(&L>m$-@y%JjAV4SmV& zTi1^@nwC!)4I6iqbXD61gR@_fM+b_h7EdkHc`lY;o4v=Y$QN5P!}Vicd9?Twd&d0D zP%@gm)I{|bHEIk(vxwDg)^qAtt$F1cG7DL;TqrE0A@%|9+-{vhXA2r>V56p#sd@z; zaLT}yvdC|cdM*R@Xk$}RRY4{dQ7ew45l6CKC@@X|D#Cap$1^sFfztp(s~IojJFB@x z))wYP{N)xG`&njrLGO@mw_%r2KWacFT(oCJlWKR>jHdj`E5<({xc_a#jDD=0u}>uY z+lK;?ZhycYu%(uFgt+Zh-ZWb04+H`|p}^RMUa;z3QM8h1@1s2}N?Ww-*rq z`2jf{qw29zJ=SFXs|9|?KbEPa4MaqyvViFD2AQm4o*>(m>u&YT9sDaIfjU(hKoxud zRglC21sGr>%N+Skd?H%Vgh>)alO}0%8bv9Zmc$I9uO%{xR;2kg`q3)e1WmB>lAE;j zkta53mW?X$DE6gKN8_n@6bBdE`(i4bT4Pw_U2Ry?RC~_6PrDj#^}ctj_wfg=!M4%% znrkLe>y615fBAv=uD||z|1V|_{NfiB1xWEazZqDJBhr^BX{)UQrgvry9hZ=u3{ZBG z$AMH=FURTa~VCNm^r)aqR$&wieLC$zlkP85SCF-b-p*&T^!Mx0RCzd)p zT1#X8lCrXx-|eVq4EP%DrIxs>Chc(J%#yzT#bwKP4@Q65zs!mX-csQol$2%zWJG9nOtru{CI9IdQIEu5^qH(6IyR}tmVZDp7VJ`^mPq9y ze7P(?MeYBFsQgU{X$6e)rGzA;7LBBYB!MKQ3P&0xjgTaQq=jrCk{*(OiX&3$pGHjj z!H#|s#~_X=9La`CtCB+sjvCpf>dx}QK2@bB4S@=~QkZh$QPiQi!f0~r4_72?ml$@L zmKsKFQR{zSRaf%ZhbylfHB5G0WVr0|YG=XCJuepQ>zX}exVAfaWsx$qX-`pR&pEpb z&zyNL@X-L1GqX(LErXBmG0#WEfBq+C_x}w4LB42N_e-F95dv(NQGQ#zk4B6vl%?T< zC~Yn@pvvBYpltqvRf@}nAtYq}P}Ge|`RJ1uk$T!1M%x09C1h>8LkI>1SRoT^s$$n8 zr8O1hrVA@}m8=WcTdJRa5dzN0-@U%Ur_# z$>VH@&z?uNpc|t+2U(vGwijxX-kbq2?NSGq-!P~|)Tbl&uDK>r-y4^U*SC=3Xd%Tx zW&*)(prG+}(7d;k_C?_)4Uk+Sj~bA4QEk~VoH&6->RH5#Y&g<8X`#7neB;R7m}{;> zL-`qY!$xNh+CH>9&<>#K$(^;M6GD@*`!j9&MClGK*oha@^IOuZJjCi3S|dlAo_IFI zc~D)tE((poZD2;B!WFzeh3fOfI(4zSkD}S^Uv!pGb(4STbhLYUW2mXptyiK43xUSj%3K-(ic^FRgJ1WYH*DW15f3(u>370(R9~<+}zE$F` zZt?H&B%`Ivmd4|j{_&gmYVQc>Lc8%fm?1C2u5#3Z?e21A!s;(_hKzb5_bwz#RKrN& zBvyp)qX^69D84z4#;g58=vX7JEkZwjBznd$y4Gi z)eQ1`E0|E!-_ex^(D+08w6E>FLoO{bkO}m$ppl*+yO!$VvE3&KgDe9jF`*%-B7R-P z=z7EY-iqF}tTU1M!71Y#KdS!WMz%S~y0GahS}^mkY%`eRd|(qBu7lg2rXtVzUU_~k zZGL)~>sZ=d0ZC*4<-lIAWg>>TpBNTwi+~)y(1~pqbeI?5kzzvy3185Q5eU(HQGoY0#me=1r=Oi(F$5Gnhrle3_*NFc0TPp$M6;Q zLV#;T;_U-y#6}beAuwrzmeHrFi>5P%K22?8@KL``KvV~a>Y%&oU_I9H=TN#4RtzZy zt{mu1?Zzk;*W)imZ^4b>dK{H7LZo3AeEYER`n862Zg6M$cNZ-;Z8WSl6-*gcdbf@} z+*t8h)?w`Fx-Z3s3kowwZ|q*`%zWF)t_oZk_~eqVK%mzj=o>vPH`aA!=0g3Rxt1od zuYw&$zAmqY*G`*Bb;yOZWy-LOY6PC1vq6I;YThjk<)6oj&09#N&myJsqvWgBE)SAA!kv4DAHk8)$QA zst0Yw2(h`a@Sw#9xUd+m6~nb+xL8Xnf~8iB*@`h+F=i`g6M9b3aT072ak6K{i+x>? zJCUPx0hKgp?9W0fFbWkYwr05lM;>pb&H=PTXh+eGqdkpw3QY|_h>gGiVi9mAK7?>= zK<@Lqk;-G(^J^j0~ z(sOSuw;6Od`~2~dj_N|k53R0U>zXg#v0=DMw_<(KaHFlJ)0X+})#+ueUY)Xjhzj4&x{3}Cg-C%MHMMc}-t875lB2DX&wCaD&3s+y}l=Dq;c_~^XEVc>)JJ4Kp z2TpMBZx8Q~E2sK;g`g=F`D+@K6gReM1kQZui4E`EIErEj@>t1wwc<#sp%6#1YRS4K zd!492zW5Bxq5@w2uce||xe7o5Pqr{5x1S;R`*?ba*BOX1PhVm%>5i73ufOhv%!5X@ z$5%SkU%j%fv~gQ~yeHxEIJXXFgV)^Ii?q-S;5&>aJChk zZ3SmrAv9KK11qQB0UQsZ9Ys5i_B7flG&P(iZbHg{h(pSNjy91Cu|d{t&}KHkZv*@` zz>o54A>P7Ryd5X@qjA}!&Ox*zXvfe_puK@Mho-6zaZBxa_T%Dhdl(m3z|GB(D0*JC z2X-N~bO+FV0PPSOEo(WB_B7flG*#vi<-`Xy7ZL{s;=n+hUkT6bk76pD7p_DX#9UEGb;antIok$vYUU7(TBbf)CR{T7y6I4h*V|yod_&@+c@s$UJ|iHwuVJT@=oWxu&EQxwKsEzp{9dq;?FbsKHbW3-5f`HQXp?B0(e(7JeduUb_965+G!5vGwM};x9wr5g z$)PvnNDe!xKyuc}LW%;9VcJ`Q+)wB_{vIhZCn<|TMvszU4)*!4f5~v7s=L~yWWHcv z+s*!D^uG=4J;P&>%1aEp^`YkR`tn1pE96bI`U38TDo-dR+ZH7Q@xex4=KDkeB$nhf zC=jIji~@)PZB?sLV1XT(i+zxBOw*wRn;d?{X>uH7{55igPdbBgKU&(IoLCBf7ZY~~ z+ZYR7U>6r*M{*iripF#AjfRiAZ!&zMwxZ^F!wYV-mTQ|=^w(M{tc{D#?fxJx(4?wqa_=F1El6=a)ksvjCEG(`@t*l=v?LAf*fEj<;PtK zBb0#-q|!kd-~~Li4w5omAvF4eZ)|u99o6a5f$7NWz|Z!evk&bKG}2RBCsSzL?mCLjar!_^qkXdlC-$I`d0oIc&;;-)w@6mB762lCp|k+i=0Oi3>aW_y zTBHv)ampB{Izv89CfN0niU_P>_d3J+;dhqucXhnre%J7;XGbZE)zSZ3{7P4T54Bv2FCEj0kb!z2+sql5BL4L1Ysy87mq3#`psh*hToqvw z!8YJf)a2leXwYzc>v+T%$i1UwT$KxI-WP3&>b=1=hMjR{+_Ky_9@Wdsp1)e}2`)8k z-nWJA&%WuMVb?Qu=D~7LklyJYG?W*x&(7YCkMhSKR$u(iU#o7mBG9klj`nk>*mDUB z@qNBJU_s0BTUd#q!+C=;h5h*90HnW8$Zc?mcDre0n`NN&g_<)+-+v`Yv{AR#^E zg%k)Lz3Y;K<3k@Ejyu&LB=-6KA|dIVarL9XCxg74Hc*qQ5+#BD(oucqz0o7qqQ9OfTBpe zVt94pHHp_oy!PXD30^1g%7-##WENUctoXEhWvr8E$bN+*Xaj8;BE@bu)2e|cac{k# zVKwywD5^{|m}8=|#X#D*AFYYSMr?u6aF5WPX7EwAzKZDDAJhHul2EWRQdm~hTo-FY z#c5irPiR^(wsf9o7;UPIP3#>TUGQT|=Y30=-^O}F;f{hjcVT>}Y3WdTzHXGnx~r0r zaA{>_NnyFaJf19x#uMcRHn#OlaO3MWP1D!y8ye`?nMoD}tE$&`-C5PuRD0pxw$f;M ze5kp`k|Lwf8qKZF(Kqh1=-Zrhbfqw*7Y(XxsW8q}bf57WOIj#(rc^f=lxih=XZ_xB z>wAzsW1DroOC9upvB9EW=Ad6}9J1(FS#2c2ijlziI~+MFa)z2g@xp=r1SYDeKSjM6#aKPXSJj+7uxini2IfFCCB+c(K)Ln zebJ&H$M14hlg=mmg?0U(=$zH^{7u&Ryid+*dH!Lo&v8CywLE`4&&RB8TIu8UF?Y6V z9s;_yxwea0J&1Ydvu3qwPGnEw9!}yO$0Tkdp~*o|HlUcqJ(yh*Zn+*uQ)2E7;$0%> z2AO0yhTpysFW5M=$OmCQt3Nt$Fd_b+*~o&{Cfr-8)Cp1Ogec~A6mvNWoe+gih(aes zp%bFe2~nXFWRC#qgj!TubmCsti?Hk(+=FagK#0W_G5_U`U#zbXl_j26R0q%yNE{>4 zqq?1>&6d09d)D(W12qiu&$IVU0iYT~lI(Mv#)Q)hRhbBS`u-2mKd9BS`u>AJ}JIhZ=!&Y6Mf#D6!^@ zfJVS|l-!>6d&jNsL2|{6l-Ik|L4Q$b1WCWlrX$KqjUee)S#4j%$D-)IptC+ynk`VKL^yIi})+-ZP(dcO@658f-SIn>J; z((70m$4D4+5SB<-a?GI!2@w*^`O^zImAE)B-sSwEB|QduDdbmLv9c_LH2|GBt6s?Z z5H2KfbhLkGaC=Mm&b*k5i%9>^i?i6zmBl~s6-4-vbpc`?Xd*Bnnt6+wlKu%@iM+K> zNR?fsCBGx9m$-wov+e4bmI&@zpy`ciqu;hWdiOq_mx?Z$(L-&ai8 zPfg54YQj6#Hw>nNx;uJcdS+*I>7Opu-Sg{4c1LQPkBrakEOzHN4y-OOOZFx=<++>F z5Z<>2$_ZLradO;6nZL#}brQ_J+0Rd~YIrAjcQ{ev;_iE-pe%j$(*j2HblzDMD|^x)MB zf4Ux44sy@Paflu2RJle3ZJ0znvxJSdWGkIBns%Wch8SI~ZG5RPTs+;i_7Ex<^wM}w zs(&d_m)tc`t$Ry-wb8z|NOOL$AW{*juZkoi4a4bRYb7Q^!eiK64s$MrU3NNLrDAQf z(-}8nARij!Ie6=4f2A0Hi(S}#_&|17;zmQ=Vggm+ox5^K|F)Jvu-79a_fEV%ikAT& zJtUScLXp^WfgxXJx9Hv^aS7O+bYv#bpB?kXX<>>y7UR`$cI0N^Ii@D6T7^|Po_1K3 zP4D!+Gmt2o_D)^7jL2H7hvsFiryxGuyy;MRo?(>4yDU?3rg{3>{X+wt-wbcx9zOlC zXnC-*X1@E@nx5v`i}tpbMuRchli0OiF1!#$@wpzsfr-l(gh>!K;a3{5Pmbx&jq==RFW(Ykq190VbKO9#igsKvW`vi&`rDi#D_< zqB1N9luF>hiO?>p?X0grA=!{DFzZ>Ya2Jnu9`|2ZJC^9J>Z-oFN{Drc&i0!6Wkh04=I=kMzB*A~rhJXgLio3rQ#LPK%c zhK6F;TFtIsh}BrqH<#J;KMTzz>B|oKlVX-i`jUhG12Ib_eeose3l{yj_5)$J@_erU z=pV1{=Lf=WmDky1o&Oxpr`;;gKdg;g=l@uz-73#t&-0}>%Ijm=O}c(XeAkp{mnQLB zJ(e6QFomrJRMaA8(!)#@J|-q4t{=mTR^lXH8}ZtY*ClwJz>7X6u|Pc#8wpaBTV>RM zB0Ex{8jH~X8ch8fhN9S9uLdS;4Whp_2x!&7*hQk6VdOvJUJj& z1FD{`=@68MDrxK=NPBHL6t%KqfmT{SYvnDs7wx~q+S@0zU|`#x`c-=d*X#^$deaq} zzD}&Eq0!jXbZxLAN>??JUe#Bh=RR`t+R((;EoI$ zd9d3s(n@a3?`c049;p1@HP-i@(}#rJCh6BY=pJFWN&5AqLvm7Bvmb%v)FDxOm>5|z zz{gBu*peJo!fQ*8y*iks262NK9=;QEc&w+eR~$2o~b;4LDF5N zxV|B-k19l7ADJ4CucY((lD?Eh=k+ChdlsG7m-GeFVMF!epFd!oZ+3l@k;&`|NflbO zM@MZ0XD>L-TyUBlwzOSfEpraKT%>i(R2?%FX#p(KnpmWnSfTyS7;gTzg$ZESA249g zkYz%Qbs^qmV?gdM%;2ShpD1XtX@RjLH)BWxs3+{}mENV#NPZm4b08UbyXPIPMr3(x zYPH)KUh*!)jDEv?G(J&R-jFwz(2sFdetc+TcA_L%nt3u>msg?{mnI4>s)KaWU~8Ts3@>KGR}EJ%N77J!3RXnd^_UCE(E{4 zd?1EgDL=TnHpG=oV_X$0*-5-9`c}%DqHn(0rk~H1OwpH5NjlmlY8$zdDf*J*{3)(v zioR&lSB|@Wr+*(DB=o~;Tzu5JzDulF>ikXS`M7=yS1dvI8HZgTvF>w$E0#KcJ;G!HQX59V{KG0S^xiaYbH^?O7)46-(sl=Vl zPnEF5qA&ewQS6KDtC2#O*?fEA7Eg6}_Cfu9r!T6lM5G_r);0-As={xf&gB+)FI_7s z?RUaMp|RyNj=7%Uy@HXzQ7*!i=n<#dhAU>K$7`JA_AgU@B zD-&+XVjsfY2+BuF>E6V!`{EzB{NsiZZzs0Iy8LJ|p}m-Sa^IJJdOBKM`kP%JBAB|9| z{xjjHNcxiF{GSOwMbZ~7`f>a&tSVO(AydOR3 zxc?1V=hIJ-*I7?GqJ(8DKgX|zVA`i)(Y%K{3-l>$J@c6^h$-LWmffi^&i44)>nHJ5 zCPbf`B+KX@odvlKAd1(--VK~sVNr?2mIx-TOMQdwHA)3g?jh)X^Qc>WLpT|#Nr-6k zs``VV*DKJ8_Kwtm&Q54FWw=@OQ%w_<6Tww=@u|Jz*5STK^YXRcK!3yH1wk}Xxl6tU zGT#XF7uAL40t+2eGuQ7O6o;LYJp2q?Ty0-f&Cvs$rLlhz|CY7ZXWm^IBIhM1X&2Bl zvprl&$Zy5$lAK>hGZlIgbUmP7i0Dg?>q2_z-*MtBNi;udJ+Qv6IJ9$*JgIQ?)#b4K!7ovKkPURFCAC zC9B8D8E}&HthoR>a!P{kH8v@aO>&Z!jy(UchK=>qTnOm@Zk<1G&t-j|@bKi^xyqV5 zoP+cXNQZ}q`%%AcUQhd(@bKjKuCc!NoZc@yJW0RSLDz+cC+XLdjyZ?>H5Q>is}QAH zcKvV8xy`OEV(H*qb7S22Zg*(yr-JNv1mY)1m~aqUNoaK#U=1W-aidOc#n8*_RzHqp zGm!}#Nlan`juwQ*odsn<+{P@5_2hmlP535z|FAl+NFYrfg55nU&SMN-&9W?safITH z1S0F%0Yhe=gkPBz33$emAzPZXXN0TI5PWFj)_bdr=mqmi7{}IZE-?H}y^{@d+v_&H z@k(7=KR3K55^6qNel}@i=-u}IGX?*=cFB~~rRhk2WA&<`@K6Vw)|$Mnn-Myg8KwMi zeSNdgrPbg9X7o?+rs$6doiFLjPYU|VpRvAPq`e6Fk@REJ^88|GfCt2NYUFjkXVX6; zt|RHoTwbxh79%?U0OVtx3(YJFkOE;c(9{QNVD0JetO1+B)aUf~A^PqT0UDwWBxHr- zOtdFeO^0a7_YhP)WL=CnyEIM0POHk^K0~z4AlN{(#E@ZmMi+hU22=#BaO{^M`c@^a zO{cvdVo*LmS`kTAg_DuN<#6rL1=AZlJ3B*dv9eJ6M8m}T>Y9R@cx&Cnx{l6{+O~LE zZRcdYi0Ox7eP4G3=x5zsEx~OQqb*HEMc(pob0pDUA8e0R`a|V~BmK>-g+;!ya8smV zC|zNO_c1=?_j|-VmV8|zUj;oyzG8exr~UIN`AwvZc8;+5Hkw>kOtme&95j(~=!J=n zW~eIE#L<$OMzAF`)c7lZ*gdX9N$dY@3y(#$gil~mxywb*d}7zhlF?p_%4Kk^|=iG z1Idn~X7TA1#HSFS0x^aqLnLm_ln*ymw`@}jat$;6r?dr$vW`$?pP@V{;A6N$#6+LmZKNOmnRl^{9{S(?3yN6Zu*s^INU5X|(Z*E29$|V%7PHo_J|o z3uNFaXvj~wwAK1uu&l0Shw8}_Q7S$%T3(BpAv?O{ zLCMtOf$8|rDp8IPvr4icipz;z^WO7=^Aoz(I_aHA?eb0rijAs7_zLe8sdKysJ1>rS ziak$+J|6W4UUN_M(V75+!;!(LC>PbqZa;o2;^|QZ)x`J*3d~ zHq%r`3^6IhEOBy?NLD^OQT-?eQ9mF#Mf<->l-kOu0V9-hHx?=z)M{oM9k3$M9WtUn znph3oT2_W}IPn*iNsM(T;&y&fe>(FZ@o8pKG4sUZb`sG}EJC7Yv6B2jtlTV7g9Shb z*`hOcE$N$S;3@j^VnvtqWf}t3`Lrx0eaUhDAA~n3>5CTqxb_EONsvw(^eM-6h^mt3 zZ?ewkebO70=O5Ol%=7go$Ng`}I-lO4yv};kF(YO%Bk;Re0KPy)C3B~yMo^6&>>AjY*vx%ymP=<3tjm2K~(-5Zd|sThPWCjQrne<$(Uh}V9+F2U;rUd(hc zHc%rhojM?=2)!N>i&Htm0b3>_J0nADXD#Wo4lJW0QvaaBQlsydL2L zM1IqKi4ta>3d#wRY#&|}5XnL#ygW9EVE7~=R$mN=NO$FUv(}9mac&q9S#0kB0u7V? zWT`f3$%DW+N&atjjLV;duPEv3%FS_kPG5qr*zCHInmRkzkds4H$!&X}UJ*$^Pe7J4 z2gF=tdj;<6%6AsEnLd0r3P5sm%R^OGQKJl8S#yOK_QA?Zs@?&5bPow+DUU(BLYFG%_(NniOjwD~jQ z`b=8k`o9y`QFLBk(wBbkr1ScczUZV2eMCC=tc~z~)OGl~^88KC^MyW==O5Of2(9xG zHCN}a`>p)l43y6&#eK#=zBK5m| z$Nk)Do{#(S8*fwB@fmk(S6b(%j6K%%Pw;%?W}XGM9oNU`#$BIeTL2kzr9ok8XSE{R zwXX_KWGmww7`sv&Vu>b6fQ_%mgl!3GFepK4oUM_IyDP2lz25vDhA-~Uv*`CY=&RhiMgJ!U{audhyxFAV_ic%6 zFes5{{(g<)d-s~(!|z}2`2Dv!=+o|e>-X;?9g_A-1gP$Sq?N!5`y!D~a@R>Bkua{7 zv?(vimNvV25Kd#<(hf_omkR30gmh?xo|J&VE(@q=W&IR-FB}JTKMpPtR9S3>$S_O; zAH;|;40g_-v*r_rQYSK_fZKzi{H(+@1&+l*2 zHSGak<~^g@f;aQ8W7lewbZQkzzm0S}*)(SHGHTaHh`Pk4o??FjbN;I4H#SFA zp^BKleRv{SzslMW*+rxc1HzUjeCJm3t$5YL`NDn%aI9nu&I!DEIk=^0i7Mkdns#UR zwl!VF*tqiG?%Dkf(e{hhSL?o#yil~SHPVt_kuTwviSVA|4V$jpCVM37?`vFlcycD( z9o&0t%}mLrb-EdkaYS?0_^y4;;)8eZT0c`XJZpiYcroKx79}4<-29IQS`E0*}B?M0H=xJb0D|gf_SY#jKuX5gvgYF}xGE5f_px zThz!vDg1tcbyfwC^Z||QHhVWueE#^AjZ4>W`Q6-H(o*#t>qC7VQ8$|F)_@C=>3 zIS|AYaR@i}c0uEKxRY9{dwDeO_88jV^W5j|oxiRr9PC@Y)Y-dvG!{tq&mR~%{D!(r z7ba#=Y;4DHs4pCB9tiHec*}BW3+ZQ+|rH4 zme|!GD$QtfG^dC@XUSKM4#0D2(L8&}S1J!;%?O~Eh15}a>Z0)cqd52iUZ|@g4%Lga zmKQiwuPCfOhIelA>=6M)Vka0&_2XsMkh4EE*ZV4rC00GO8W7EudVFdVF#L^f1A0&9 z$m-P5Mel}CDx|%+HdVX9yWwbRT|9Fnt}SIgq6Z_lmOz1gNa#vt#-J;o!5g?u`Xgf0B>i>={hMOVlJwhtWuO09aeYZYl->sEd=RYDm5Ba+%cs@qa zkBAVikCphHv^Y^NR5n3zRH&^&v2qZ~ zO+^LaMxaIHTja)%c-ka(%F!=Ar{d-db{_J?y*uW%A1mAakoO0vrIh|qrsC)&%d7LI z#t-b$z8cS504ZJhE8>~|C8VwyL*X?}X?Vl4b+4p!^jLweXaRvb#4G6#fwu`MY8B_- z@kEP!5 zf(w#u8^-?%CH!Ti>F@0NH$=5N?!No=6> z;)mL!59)WGzJjAG)@Z?>4m=NZ;^la==(Hat{q`(6`6lVN(e<>>r~N4Dr?SrHN+#(i zE&6fV28s^dry*QwU59p}JpWefeAp5~_mR%1%e$@fZ#Ld>!?S4gAK=IEfA{eu>TDqQv&hh7NJ{-n!+~X9uqGm zTG?pzmyYkK-d7T!A+vwf@yCHbdE6D+$Ez3ndUwwD6l?#9KQkN5KZ_R53m&ao-Q07@ z(fxBRS$}97;2@5-XunFNn&yv8`|;OUYo7Ge?fZ z4Pqpub@*PR3D)!=F;v+dXYHM1Roh6L|Eg})CfLym*`tq2gx+HeiiHD2r%cAP+Jp)r ztXRRO+^QT-Y%J6>pxLgP*((c%qW<2XyR2eeOQ*03N4htUVv8ZNwX!8}M`h+cf{}3G z&e>}n8BON~g5mRLB_E^XJ4WP@$9L?--;rU{^tLY|Bju6e(|ZN~zAO26naRK7I`{;> zlAb+Noaf(ao&OxphexH(zgv5kH4g7JF1P46y6&*(UlZ28oLO(SW)^0sSZ_#&mw<6o zzixf+3di^EwZ8Y9{!ZZ~$m_k;LBB$H36g#v>C#IuJ_9cS$QG@e6?UBhKq$)?V=p}q zbJpJ+o7Oo~S&YZ_e>7QGFUk2?0}9Lc;8Do_J7Oa%4}t2({_adJsGP-jle(>ngEqy+ZazZQI1^N{pU(?$2##YCMDi2%$ z>E(L5S*#;C;ySX3H;c~oLeg(D=~!nsi*=TCS}mpGeBgidkho5dybhBPxQ?XrI+A`H z>9j%+4+uee)=Iq9I#FtFuD@xTv}xDbRmEzkhg`gsWIT63;#L^!N!G6LR{gk=+{cV~ ztMRks{86uoZHlOXCF05%nX}L{0zQYvSXE~A&NrMufbjgja5%hkL*M$&s)6yPnW?&g z<-slc>*{K^%y!JQRrQT*d|h~C=a^_p18dv65h5aiVc;f2_AN z*xnRs9ZU3$mIM>mwQU$ln(;l0uUxk!Ur$;5PLZ#QPHXUK!S8O2&wa3W(4CM$JGn2Z z$!`TSvH6`7f3e+68FeAFQFgYLi)RUkI?b}Dt3_G90lw4%-D*H3NhncrC(u3i_cO!r2E zwPi(~k;#~re;PfuQ<>B5h4sVxR@e7;RWMU71-lSwm@Xb0^RIl@J*9`HGB?aY?#{}noZ4q%KPa7 z*#dgtljz!)xlcP3(JEuH%x|#MgzFqWxv-9Vaf^u7PT-An%v$(MkP6Z%6+gqf26~_1 zRKj)Cl!ctmiB1ejSR!%4K;ndf!~vjOB5}f)Z{f2babzQG3Ilu35zaz^s5%4h$nXIl z(Sfr059j2Hdv2AFe5>cI&>H=|SnTv6C!&U0jhzWgu{xozydO6g5yMJLyv$mga_oHP z%0m-f^q-4DhJ@zd#{;e;e-sohNsw}c|E0WB>vJPEVbw#vC4dGh!-A8c>wouMspt>V zBk5pdaAWtc;^|+`Er||#|D!+jwyLIqcpva{@A-GtJr5(dgn4_t(5ro7L~prJj;N&5 z&X@Gtv*^^fl78F8&hx1+B>hy@`Ly#T{iH=du3s-ChIHBwD6%-q{oHDu&--LNSe}2k z_EyLFwDaZlZ_YZOcD|&aARQ991c}7&LQe002rH$mi!f!gm+L~WV_i^a7<)216F9;z zQ<_Y;Va((B#Oe^lJNur9;BXvb630xAV6 z4ht(DAWWz>AYJ@M7O+|XTNwYaF)oj9>*8)VDC$;NOzk;*U4?#^%;LKrV%~ZAq=5 zym0Ti`FU7hGg}(FE2h_mMh?tsAINN-+C7mj4$sA`u3!FWG+JV4+SV`Z*f!KBG|NL8Q>Imd9Y<;Y1{P9@!bdW@|MqF!m)G9$}^X2yl6VS zb#rJ)J+piU`Yta(dSJb%XI@669M7iclwN72oO!+}y^>Dbo7bV2Dy3J_X?x4--*_WF zwr0V16;FM}+nmxaY-{q`XT0Gh=x@rR7g^VNqoQ99m-hiN>j%VjZgD*>epk{tizWS3 z7M-(L(obg5>6J_Rt%?pd=|{!&hj4xHZA3nor1Scce#)eSpGSo@ARYV!9Fu&I=ks^v z`6tcu&$#}rS#)X%d7Znp^BvcrjLPfWAkSa<9j>!Z+~=^oPrf0hCh632l73qjo%bW@ zH}MTxr2v?mzX4;Ha^1)2552^s z6O9`XmQpP!44tu~gFM1ANX6lVaWTn=nnVj6mrj;w1$QR|hHE+$Oi6UydWrDbFwr?$ zsFy__)4wbMT%l;yRD(dn5#BX8IM&{C)BQjfyZ{~+K%>&OS<57Wtj(4QP~S_hg-#4R z*FuJkWrI#GaRUfj`QjQf{n#qD^BOPE-`BXY`O+f^{jH}DC-pa+yUw9K`065_7;N5m0qR}tIHrtvvgfi4=gGn$B5U)- zt$A=;p7?+^V8Eb>m;1n-3o{$N+7;Tjz1qipnajWB&b&#x^|7e-fJb|KG?qDBmAMdn zD!~|C18=Cyb;Pa$H~Ey473!jL?s8;D74BC^Ul(phM*O*VUAed|+9~WBQU%U&Ujjx} zFoZp-=aVqSQF{jQ19DTA@L|gVb1QUgdyUr74;qz?k+Rg{^*b)O^4d$>@Ao`bG=IFz z?{Od8-LriSyiP+8gd3}hAB&X-ng?duX5M<^^5w_g`IDZq*kt^sy=$vFt9KnttU5Tc zrlhgFX|lV%WD*Z8IyW6e-Ax4R`fIuWm{|$gf_t_tH5D|lr=)5dYZG$tmTFoHrZDiz zjx4gd5BvFYJ^(!~reqaubl+&6M+gPEP+9RS(X;F=%JaoNo z2+m7DXQc1FKV)>4m6Ose_Mk z3#Db!H6?6Y_6)GQ+^E@Qqs3K`imk+)Qp4FL3r5HBF5TsEQIJMf6{DY)w4W(cY;wbR zPmf48Vx70q;%4(=dUf0aPS{7RW1=+q3_!*OMS&{rtGIY~dLS97XSjV7??;W#>< z4kvy;m*{J%_2u=CM~1rU3+LFMs-jJc0;56?595*t#el>SJb|c=^67ydua3%`_s(~C(@`TCH+J7t zpK848!p4O5L^Slo<5&Lnl1o=ycRa@NW~F5W)d68dr=h=GSjuI4$}UTHD_hJSYh@P; z*(V?n?ka|?2JhV5kAo+Vn3HFt2^wuwDU^IIT~TFrwrWR21Qovn9UAnRfo7IzKe{1v z(Gnfy&~!{okDb##6f25O?3-krVC%+9X0*PeK5e~sr>CSQIB{U6+2@09kR_{m9{o|b zesS-{)g#e?OZSYjB5>`s+q!&H*Vbc`^k73%N1fI!Z;deMP;+_r`;;?J>; z9?>XtMPkr{4GB#RnNucXuU%&ST@ulHx&2WRV%>mF^K=V=b`n#E3w5n{`g%@zJ~mci z?#$A!5L&3b^Rf1hl|p74P*w?P9}hNnkJPtKHU&4$Y0Yit?3&(OS5v)iXx&VnG10%r zduU=$fv!!@PHssqRK+U`E0P_d$$6hqIM}deLo!hj3HPM^rLCQjj*j9|Z+l;T6P~tr zWv}RSgH1lTVr6H5mDt&%?KD0ZC6yH}%+2w+WQkA^<6I_DEwZgpR73m)N<8l(gD2EoWk>egKuZjahS@~ZsYH$d zls5}pXe)`@!Sdvj7o^boV#s~?p@K4hv$yA~|B}{M9a>-#pQI`1-LhPqA&S?RU1KO)Y$FiB! zo}Txvin@1od7Gj}tlE9?8|t-~{%ACGdP_9)yRUsC^P-l4^`Sf`-K&>jEU|{-pJ%}F zQd;zgtcu1nrXJ3j**P3{&TM-kzr+gZd-t4JA5&rX-jiG(k8pMT<2SGVgIFDLHv`a< ze+4(YTz65=$nHtz-E>gCIvnjKo#^}yaHw6(D;GNA7UEb!>49lhJij&%hSi$r*_M_^NT&B z9ZTNjE$0;*`nt`g@;zsJP1kJuw$-a{^lET%9$lQM3c|`BXXmQUtJ7@cI-S#jStcm)N)0t83oFJLXY^go*r-OcH|{MMWfTZRJl`H_(v< zciZeb#QcKUhmW}g8z-lhcY9_#Q^{f?I~NS*+_1kQlqua;*`lo+l!O?oaG#4RT-VwJI?<6taF4V55p$jn^=88Wetr~Ez-YrERKR;G~wSrLX#9l zjvb}(U=)_jt_yFVL5firhSWZar>u9)(;o*|(4iGoV<-FBoJ{AgEoD+_aU?r*aq^_F zvU}7z?l4%Sp@wz=FxartYr~WMYukdz43477Z=`Tl*X%iEd3k~Kc-yqUFmEJWTwa>) zo@gGtXltKn=euW9qC1f6YmOC{dx{DR12Ls}~?yJ1{Mb15C!AtK6Q^kz{{!tY|nfTvXpP z(>k}{@eCxM3bs{^4+q*7MzuudiHYs~)tlymoz+@7#(EgO<|UBSB;4}b*t()$?PSx3 zv9{-=&RnoI5a8B{ zC~sdJhVZOB46Q{8s^Cu3K4_LIhXm!c;>uB8&XO>}8>Irk8@brfP^eJwcJ}HD3SO1q zT{eX%=fVziM6B*luOe0RDI8EThQa_N%XosfrhcxI}>+yER44J z`xE{C&Y9iA4Uc^;)G?8wIJ+{>2U{!Rz4hh#Cr&Q}I=8OY{Fy(_?i;H99G`v?cKs-l;SMCsttqTxap?goSDsX+J+ey<`41d(P@WfLUOVyq8Jp)6U z5n9_jI9Am;Cue}i(}5i+)6t?(;>l23)o6FHeZD_Y+FRALv9@aD`q698o1B`PAD>-6 zdiCLrVivU4^i_>_mbWjA+=S>mD?3?v>BSS%%0Nz89}|Bk#NW)mR`YNDq=?qPfWHxe z#^2@E=d3mHVgK1S&vW!Yfkj-s>V-BHNgfC%%Jn#j)y2U zX$z;Ve%OJDL1daQDI9S(gd&9i>}1Y=9|$aKTQ6T zd30dNLYCPWvqG;n=q<9bWzq4S!xCi{KO4eK8;ixj6GVsw=G+TOF?mGvuotT^br8p- z5HW6_YmWcqi9M#xbwqhuHa`^1SIj&y6>Sg%0{!5n0Y$6PfJ1~|d;N8(%iNg{q_tzL z2t{ZgsUUR^*piU<&}Q9}95-TZ3A}LW=&Fh%x_%;dB{KjrY)-{qVA%_5i0pf`J6y`u zfZ%mL8up|VGsQ0Sp;biq1iTy@Miswbd!H|}yGGmZ%e;HP_FivhmsO1eekz&5y#q3$ zWbQ6Li~c(6Z{nQ15C`f9{HIUgSqf<-=nxqO(oFv5VDg>vCNl%{A7!5!N*~#a6pG9e zpja|boBX^_`>-!_)fY2g)L!dNYLi-TGM0HX^TinNPT)Gk-C(Za?+bA^%*S~}zRUm~ z{wc$we-AN2pkp;O>I_-vSZ*r7x?sMGJ@yKrb5Lc+jj}X2H?jcq1m5q#>s@$#3@;xY zo^Ru6h36w`K8f^rJt*(QOCVcB0VvP=f_WY{zZ3uompG7cd~5`rkB$1WH-E++nA{XR zd%tHlI=L{nQi|JU#)f%7i6k4}FHn)7Ll8!$^4w?QFQ z0B7jf;R$*aUB{yEO&E?er7CCEs_?QsMO4=un_w?Pj3xorAZ7}qN#Hfu#eLH`?ZoDT zqWcDW|H$P=F0JBkAaRn~`in2|<)=~&dEVXU?oRC<+q0_O-;!!A?OQxD)13O&zU8{n z=FfbgexPn{LHkCgw`O?Xn*aXc;*rVPZ&5;3Mho+)Qb;Vb7zf#HK(E4`c@6e_;CV8; z0lLU;fc_6jm+@YnUnkE8>v+D5ERr6Pbk+M4{M1C(6+H&J&)B_kt~j6cIdHr|(7ndu zo$@-QFN*t-=kHlLB+i!}Gw+8UGw$d2@_b>Zi}PD0{dp&y*O&A~Rh4n(`Fqs)($3)h zQ?KCqbK*K`P37-mO~w7+wK65{2k1V1r~X%%WA!0H&&cWy(myTejc3xeFAI7TQvSG( zI-l#u2OYIcCx0#Pzem_TynYANwS7LX|9Nqpp(Q6>XdZE$A#wjF$K-YJ*!t}}U$68# z&(F$UVf^IYXv}7L@I~D3xr^i~V;*;#nDdGW%-qhleGDZdxeWEvKa_gQwTh>&?5}x9C zk-Kj7Rr@E#LY>o%GuQ3ukDh;^4L)hKKV5bHZXSs~omk@-+5854iV}E+X~qgm6=qYy z=vaAgGMUH96x9t4 z@HLj)iqvrQEYA^P6j?5M6d0h<)yQ1CA zs|&4atB#lW z3S(7=hU1A-H*Go;^tp{SYZopI$oPg3si~`W4@`GYZ92cMwps_aK_7`9+y9e4M=v}l z8Ho93HXq&BV9Juzv0~p9FY+W{_{v|wpzng~lk9_9sWKQQ*K>AJh|#r)Ih-HWc;1$@ zNuGi2cj(87+1gG*yMr)D!k{EfVvaH&DJ$=b1wV%oeVG(I9tMx4-(Ld}kKtTKhA?C} z;vQ#6vS0xFvB;-;#tkr+oMvpB*(@J>>w?U<5#}^ABvp)fi$E*Zv;k0CH1~30b#--N zUS2`oT5m@x>GQm0#Os@@C!+cB zferl)Q?Y1cVWe*~G!%RK=~df%D})#)kXf%re9mAM^;v_2u=jJ% zLCjMyL~Y(o8BDA2h_$)!SJv(H*ZCJlM>iF@$4B>gcMUET7~0Up;JR2)1$xSWC`)N7|9dtukjOu$A2@WPZm#Q>WlIVmD%2w#Yr4PwY{h(oXt zx#a`5WOmJuJCWFK35=1N4kDvcIE*Gmv?x(9Y?cpkxi`^%?uU!3O51#c_ZOEIYsLQj z&4b?hit7B`=XFEXJoVL*!sw?<3bEx$X~mbKWx@Y`0ki8nc)};~gk`SHR36ze_MG64 zopDlg=gcsvoGOf5^D%_j1EM2pu3@<0|1Db6aND|?h!#7P*!SbA(0sE$6ii1u-gWI8 zGj8pPOHX{D*^e&y$9jpV(ZSLlE3K9tyNOnqf<+`Wf85Im}l;AX$KIrGBy3>;c1C)_Wg zklI^2!{2)4yUlVQX+YR_%WQF>^7!*Ht0*VDOIEKVY=+eY<e?n$?IsKmOZoY3@6wi||8oiga-zLTR&4#R;$?Q|Pepsh8T5kL)>i6&8TVygkpUfQ zygpa6xIIRNxf7-A)rxuw=)+1-Cd7FSKtIjnh|V5EVhX9kwHLzXu;wtC2}NT62tYde z9Zj<<<5``weOQtKP|_xi%Bi+UM>G%_TJCEd$TJ2K{Z3LFNd1ZVa7Sgbu+5WKovt0) zQ&s43cW9IHps>2W2A`%1#HVu&?NyBf@ili`INj2SF0g-WXtVxq$~^mc1ppyGt!a%1 z4;|^Q?5*scmhUyq(Xxt)RJ-^HVu{T_CWyi9bBOu4S6;>$*~s)({JNw3_U z&>5U1TCQ5~+lP1AosjWaxf1i!l&cVPCeG|UAOL$%wTFK}mujDHkLz~tMu}#X z9SIZrwj|==f&#lwquGj3^>sw$yXJy}q=8@x{>E#5Mu)lG_2Ato&~{TeGV0a{dl&kEW@n`j$P-DZ5o!-m_niJbo@c=IKE~MxMe|Jad2$xK zob-X3O7_^=R)bnWa^Rtjw7yjHX?jS0F{=m^mD?1s6{z%@+CgD&a;AFx!Wb8}g~;Zf z307v*AZw%@!oUXfUl<*A%MO(L!Xu$zByR#^Z|n*WhQtO|3WVdXT^Je~GK|ocBC(T| z*^V+4sTyw51}G4P7uJPEZ%Q=!4CfUM^p8&u4o%59AUHY1-M|`^g>P~)r=xIA6L(cj zVsp}or4UQpD`HA%kuoOP=4t@f=RZFrOYQ;2nbR*gP6W?T?#z+h`p??f)5u}6 z{#ZMpOE%X=UV+P7l5v}7uY$uL#Cph8ia1F>d_z=t8_+Kju4G`Puq(WC)+=XI1RIOO z{#w%4bmQ8xZr9D}w*fP3A6`0|&0y<8F2XS6&BDNJxAS{=xtpB2+Lg@A@_|7k* zMbsoyDF&z&Q&;Lx9dg8V`E)v-P8Uxn(^=d($8IjB%yYQZ8qAJ+6HPbDr~AYwr>Di! zo#@hjn>Y`~(V0)EJpo0c3)|xX^^|+*lGZ5ZvJR)v@^Eu(rT-uA9CvMviMnfyNzM&Z z>s7)N`ZzqH2G=$kVA=iOm2GLyL}&Jls}9w&9nF*xpL{W=sL#x(1)V{$zDtKk*57gc z7uCHitGM^iI<_?KP4&%1tD{?{nV0^UFm&YgyfHH;9h* z4269vwKbnp;ysAzr2S+jr}_urs!+CUAd3}fa9BIAY(BscmRrBE8w*tX4F%0(8@ous zJ~Km$63ar6u6ZN^4Z()e7vSjhY@14%n|DMnJkY_A6}FaJ+5?}}cFof@yDc6`VP?{_BjcDT$wmXi{ zKaBaL@Q>J+QGs^{d_z~3mTQwER3s0bmuSA}&f-v@Lo1JWC(7O4&ha}sqW4u8hI_a- zGTE2RxWDs>K(Y2jXJa^s<~j}sLn^IK*-lKU3(Dzj#=?$ea00?_GJ5%a_@>ubI)%r@^Jt3qv5N$3#4~FdjWMyzMTlq}L z;J$2J&VG{IxSVyb$%nO_-ptodp*Iprbb;`CWaWr{so++K+$y)$mU3{*XK_o}LH2Lh zYYQ=s^n>VQvYfXRekaSO>FLXI7nwVf5hA+EutMq9)q{J4uh-7hc6YQ^)NALT+FqZC zoc={Lq37S2`B}80xvjlMi-k8Fzwd&FP9OU8Ti)_%{hIp@z4iFUIybpQu2^|%c>2GA zgLMy{rJsIPK;iOD`y(d@t#q3GNXqrM3H`Lw`W<1jGzn=3K|vaYAH{uzSm^T*R)Qk6 zeOMPHMRwTp;=M~qj|A$GV_fvOK~)IftQFskS!WT2jNM#uRu|4{6Y({mYB-yKD3RDv z8uXwsx(369(GuWJ7%h>Q6B1jrlELp30c=+2_b!k4IwA$TPE4n!Z~SI)O|Zi|@&$jn zUn?y3?HloSm6mzWKd~yc>c%IFYOueI77rBbx=|X`N@MZN|7f$Bf72Su{jtom!BPZR zN`jfEV=iX!p22j41ALr zGCR7~3JSLje|6C{x!8~=>}v3*#Ywk-nv& zh?<$~TUEkm)-Zg|-Uc~3Ca0ZO4y4o05=g^{Smz=UwLwk_@ z-1Q{qu5%{;|EH)QWmrc2I5*CW`U%bSvU2=zYWmH;Dy|B2c}Koq9Q14Gr*Z|vwWQp4 z!<$#L$J=MM7VNs7`E8&Ca_KM0JQ?!`w4TgIpb>rq4e=U0XQgZNLzt9R!XPv?Le68^ zu}fuCI{gg>DW#(0!^kFT40+4gA2pd++v1Zoz1^La4chs4rB2~if~{@sRTcGB&9Snz zmp*Xe!@z6Y_s&E2A75WpQKClZB`_Pn+Cax;;Ud(?0T%%uXC0S=?1DxQIP+VVnivf|w+6uwNVyu7qGJ7dpI4tThswxCVo)VbG;{NYSUd zm)MALe9nGa6L^A`MnnLnZ9yU;u$nAPgfJ?!T`hfpG`DU$v8AIdRp$Jo=1|+jxpS>~ z1s*-zJKu4g{m1(D)e;n^zjo|2fd9g(GmZ;>?&3_z=4Z}a&H**4%!K`Lwi9EPW^=MA zwvx5+hr!g;t@tO2c0Q-qn~Vi>*YJK;j)?myVJFJGGiL59kFU~}_WhiFz}cUY_8|wp z#5wS4@Qs?&H5`2NK2L46B|u7nE_4ppFF)c5uv!f(o^aNPh?FGsk?! zkbEIE@}1>HjK<%zVrw+Mw+grVqn&Hap-_$%y4=HJ?T5wM$S8;pNg1X(Ol_is#lACJ zc`)`)d2vAkO-z@}pRk{eRR4{VyUy;}<}O}nm#BguM6bplLy@QZ;GUUX^^vBF7THZ3 zeG%8~9o~L07!PdR(7kP@+waRfq8*Q-J@&EjiPG8G*x0U--b;?|LwVrl!r7U|wTGt? z;1jxv8N2X2jD-L<-C@N-I>2)qy_4e$sd$L}sJ1Fm@}xu%h69JPNMSx@Jj8rr`pL4! zwOKs7>L5OVbPtEi84o!dYF7_*ZyJgjp7*SVY)w5-+_QLOb=T5RtYPEzTd*BNcX6@T zy?>WH^0@a2$Zlw`77_;=aO&E9LqzT_KKQ!b7H)Ung(iY`--YmXpM^wjheUFp=WEz5 zRCZnCEfd^mj=QozY-XtFqisbwlf+Dm(Jo{abd9o88Zfzng66}!3`Mi*iIY%7Md-*u z21GHpNF57Tjb&;KFmu^2FBtq+e|fRySw9yZTd}6|IK4B_2U($KLq;Ik5MvKU*!eYRA&~Mr&1UB!W`2NPf;7zV~+PC!EG0~=8 z(ss3Dj>lD*D)O2h!+Fn8h+hG4)ciJl`S)drYTkn1~+`TJ74nR zMekx8kx-2v@qV}`@sIG+(MQ8TRC28y6iBN^_KZlMp?Px38Jq$q)VoR{iINl|5}0!= z7w$0ucH-ty*(Ptk7B>&51#Vu}2eJtq>+hKDDl}bcWN5Q+^lS=sD6^7&K%83U9o950B#QhDek+z;n1pcF$pLWXZ+iQmA zTLMz@fPmtjSrj4cVqJzei%!Xt^hF2#mpUa+(zlQfE<&=kubENo*cnl5wUF2nW$Q56 z`kAeOq^^z$c2vMAC=lacfe9=_mnWQW2ZjIWi%t z_`27f7x2E|eI6(jgtq&a5_PEqMP}d{b$lIN=WdHcOGEzTXj^Eg-#;=V^U2(i0G|4J zf+LGp364l?7@u6xw~$WE*ve%BGdAsdlzrJ&xmG(?E(JTbpS+uat8NEoteJ#n2O&qo zY~xL>0QR~}%LTPHf>ZRBDF3V=EEoJ_T@CpuU7tpDcEG+oID=aq5?vrc;=~WgZ%vyS zxNKC|0M?6F2Pf0_)tmtg^S(Mn8M56Dc-X5zlYNjfDludnDIk=o9RUEQECzu9AhxWF zJr+v9?HzkPbTK=?Pr8_0f_GJB!_-%WHiG~s zKQXmb^on@1eaoSEp?g)&D!r{7QGSp_BR(aK4P*{CpjZuzPh&h}Xi3h}D^Ep%;?Lau8<87}3>LM;FGp#GUZwET;|vb5bdc%Q$tNGmMOTLS(sSd+K24WIQ2 zY}k!AK2};7{Zy$y0S5n_D8L(U1P+i{bQs$l^}C5bwnv>KuDn~D0XZU|AUn1Zr~nOu zU}o1DQPoxNsxWv%$ck(y%SvSCq}-~n0rx~Et`^TPlI&+0d-e4H{aWvb<F9BkbMp;E9=$CSo1EypZE{H3>;fgY|Z9CkF#*w~|zY?*w9)?TaM1A}t=vhil8- z(tR@3?nA2G2a^NnI6S9Z7Z^5`nPG%YVQj?h?0Y%$f+BosI-rEMD;TA2W#adL!9-K) zbyiYd04u*WGDy&YiLR93gO;X0nzNnA#S$X3&WzBjAeBAtIYvWPGL52QFN_i*FCW~% zXv;ScckvY!g^UOlmFMmfXKJ8GnJ(_^C`17%PD#&}qX4 zA*OF*tTL{0tBg_RmabqG( z5zJY3)+3$nSv)= zN7}S4;G8=vBpUP4^T97G~mvB7>N{A%k0)R>#|YU z(SSf7%v`^B(1INtJy2Ot8W9CDD<#nY@drl_SX=I$fw=_=VGEH1*~mz> zj@lz>KdJ0P!TvrNLdYF4_B@h1$CDyakFb7(AMG&Ev#fKNJKtWnJ~qB<7)>_9MXS2j zo);*DZJy{!(l$@*9IK8OdN0~SSP8pqbe*?-I8YTx0&+6k?;l+4z6myo+U1uv264Pz zW4)|HQ*@5Gq&s#C#*Xr=ACvSAS?AM}k@PL3LoLn0A7me&Lgo<}U~$IQmCCWXq@1Hw27)%g3CB`ca7!U-E&S@xEGP=ZESuPoUA=i<$2}@NTU=<9>|y6Ib^W zU@W)*3%PSYo}AS(XBbrs#l9a~Yhq2n{V@7V!KaRtbri&=10>P|#6OUog#EKXBz^79 zcuT!;_1(D1YrWSd5{YZI7ytIdAO0=l4u6n%RC+>0;v(UX9YxQ))0bkD&AFG+?yF$p#;-Ad%zD%HKW5mN%DE)3mpmH!dYDKp1+GZ!ejpVyn*DL7xZva7f{v|kw z;-y2P*sy{UWi~$`+u2xC4nRyjTzS%j4(DKN`Kb488#+6_mh0Eq5w=*)Y{YQFbq{e! z*`2Lbl+}K;9Bj1mouImz$n~q0u#$^a2?$ZVuvqcIEAil5<8hXFRu=8Z+IH5^dtsuo zCufyOSWjeWJ@Bli=d|R{j3_jaX}U@Q#dIdLbf<)}S-_4u5eY-ayAr9NGgSYE}b+4zFiW zAjlK2lE9~wie|6@hjY!(k?0&mvUBPScP7V}SI}EIJ0S@Y(q@|Iv^ON!SgMUAjC2$< zofUKpu`prAjCg&0a<#%3o4ed6h%1(W^Y!sayl8gP@7&{F0n4Kjb>8q6@MRF(_?`ZJ z;T??Kg(wX9<*9|5;A z*iL1zoyuGv#mkN0n~XNG|6Ap^X*{FP4myp5V1aPMH?Wvk9=j_dH(?Nd5o3vF7|ti+ z#HTl(W4MpTC+Y-n`}%3`R9PbMcF#LnjmYxY6h>g5r#d|Qp!RD=t3>@+c>DJ75i+{Mza`dAR2#>^46ku=9&d`CB+dki zjPyGc9ib8Kq>bypR$LE}VZECD!`X=h=iNfc0LG5=eq$qe@zRlDJ0AbikzomD!0Z)Z zhQUZ8C9!UA`82?8_#M=Q>utyY6tnO6OT>ol-?5EInF5xUqSz7n5?l;QmOUBN0lPH_ z%A|QvDh|w4tlezl%#bk$S^^1aXTJU%?>XZFq&N6q-v63QaX*oMZYPqtPjG5ww?G1> zTyLQxZdp?)Gj^eTHTx-Si(mHgkr=fa$RleN#hy*vBBch&?;5E{zl8(wC?7QsO3Z^5 zalj}CQ#}OG%REOV=(72dM>uz?Ba0V}4dtVm63h-QEt;0UrGBU^KQDjd_V$g<)7V;u zsKhZnwYlxk{`~y>>OG@lx0G($+^jO@na>g~`Axrn2liKJYdXFkvPqe7?%15Y6Eb_w z*9#dtxdCt1`IJ#fzk_rP5fL_9kuys(2N+jAvZ*(eC2n)msa#okBexo%H7YZL)p(b7 zd9|?1DUoJ}EGvf0PToL{3VR$qLq!l-OZ6;|#2Yr_gsh39??hMyw6Qk@uUdiTT4_a?A1Mb(o6+1<5(8--_q+87Eyo5pz`1@%)N@ z2kAsjBI{4olg_6AMEEvj#R6^n;&jz9VG-Zw& z_KkRI5krog5kppr(0<4q@Rc1hR`cGrLvv%ue6HLWGC5F&Wlq+KO9Pc>=Ejf>VJn@5 z31ZsQlO&jBdVM?^AN@sfHPNL1O*Cm?iTAP*UuQ{q-nFCnY`sL3KKS5SF{ST+KT)Lu zee|4=21JsLGo(TJ#x`Ga#N$;&lKI?cMw0p5>?4fO06t|2mCRMkNV1JodMO^jmuY;| z`x}61{S{>IOIl@IqIDG9CaBrA!aTv;JQTg5m@6(>N7i5b9Z;lbL}nD z0yHVMbSF4^j=)Lymzd24pfZ?GG1r&Qj49hyggNs%2X~m0Dz;H|=6dbLZ%FAxOxZw8 z6&qD^qqdL91Mc+cb^R1CwbQ5iIA)&rEDva2V+q7Joxx|afjc#u4=);xw4h+fjy=or zo79AM!$fN0tIG?=53kH-PR^$E_pM(p_UQgdXYw1U8_7JT4Q3wOw&pdLX$Ld!h|Nq^ zB>bV)SXt&_sr!tFz^!6tb6+CkwbAWj0^zJaV??jQfX0b4G8b)9|{_ z-K2e6!`t4z9cz00FV&s#$aJJcYyhn7@mL!HbKSR4^ZNe*FKFW*(ScdVO16PWne1$+ zTAl6DR3+UaSHNbLOxMb4lq8O%^~n{eUfM@l(Pwj$9@DHx9xM6cmh&1mUAJw^zVdir z{X76{UB!N{ad7u6E&A6icv((m9z!c=&HU(1u>7^vna^qGYFjg3(S|esEAxo3 z?2m${TZN7K7BPk=k&vcr9>x6=(H?P~Vk}o8fz8!K=@DBt6&BGZIGw4iNHCrH3OMx) z07H`=!vPWPUObXqX4qIjE-q4}8Iq64#pP^qV1aVyGq3CzJsZ-UNd2>7-Lr7}QN}ir zaLlrxbC9++XlKJ{s|CL+imGqfA3I4(vV z;Tz$Ne_702M1RG;z+U2{x!ynuWNig@e>^k)lVeln7#X${n6(ugO_pTxo%Izk8Kk*@ z1csLPeN|p@*Y_i4dBvKyoXxYMr}dy%U7B#8@JFA)8=?$<705ekjAn8F=O8Xc>!OkU zfvOQVRY>YaGcJ|WpxS9hu;Yb{ONBAK5?Mz4M6sBEvd1>Xwgy(OtN}!r2?2U%m`T)> zW+4_CX!^kBvRG|pen5qq=2B|w+I}4csN zApt@l5US|~LK2c7MVg?f*ua8<1yoeTh7Ca!5wTn$O(a?q#+qqF=_g9qT64l2(6Mq; z(;3HfDv*=Cu{33a8Ajkrdkyr-yPVf#I<$cO8gU?Qq!#N0{*>7nw08zmwATmj zo$1}wPrmb8P`O~$ypVT`gOFDiR`?LI^pjg@rf6%^2|`LWGMM!HzRVMRp5*)>qyVe( z&DK2|?A!P4#{@o`m*<<1pDtr-_6SdRp-tB>ys&8W;Og>>qS5g)$}bo)KE0dCELsNtztN zJS{W|9Tb`1=;BPC-P>opCN&!$7)eSTn(aNvKR-8fL_yw#$9QREyE!M)&BI_$OftL2 zXXYfOjZ3Tnw1w!&dO({>)?BPFrJsbY4^L36C^-RWb)5+qC;E|egs~FNWUx~Gi(<)g z@I;u9{nLxSfInL1dE!cVxATbHOt`Lv*r=Y4HM4VP zazhDzDrZFEh@!}(f`)JrkP(}iJ$ZEENLL|}*A7t2dbG!t&Z)zmUuj~n^^2OpI;MmUI??^_z-G`d2229N z=@>=G6Yc!>p79G0!DfbcP;zxudwB0IS~Je%#e9u81TL6_^M9pw!*>2JF`al27F`{l zN+--u9d+-+N%%D0u<1pbVzI>rSj>`nbjmG#FpxH3>M1M$)TmXMb^6{Pog^A$JF(R< zV&!q7&O=z@`;F0Ka#MI@L|H-B@Wga;!o(D7j!`5eTeFQ?qIb>+qp)UV;d5#{oflh& zBn@-bToVRa$E3!ahk0nGL~~~Ti*aUGSC?>0oY}`EJZ5iVjH|0=j!lepH5tq?GOQ(#XLm!RZC2Sa8?` zn`;KFNTw60jMpa)FOEnmsEgG6GvYFGD#m1wxOB*9&{e333oO{5|N%50-T$x;W5jxB9;bSI4nXIV-%Seq<0I>}NeN!s@# z>N5j7Qj!ijxg>Se=R76G?MhEQwh?Oi&5a_7xZKZV3l&z?c{RQ0juLszW+py z(izl$Lyk(m2swIDHp$V1!BUPUXF`sSfgBy~73`IqY=s=<@hO=uM^2QZ9%E0Gqq0vd zpn((QsJDIQr{t)kwGL|i`*Jk1zZ~6dlcQt&AV=@&FGV%rekfp)Qq*OD6jdu(2Q&`4 zv?;@hHuW!y5&xv6hQ1KuJp6LQ2x&cb~RNQimKR%;jVB4T20DMRGJ5$Gy@)sn`kyPU`iNevP%`P|4Ag z)okl?7(UcIoaVCn{MLkmX?{y`R8Q%0G#mWQ?zEL{`)=+j7&xrzj7WVl_9 zPH>W))=74uDtMwXeMnNStHCuPl;mjiFb{(%!IDuBGDJ$w7?PY2p!-Oy8p30gbOn83 z9|?~EmXsWgw#!laZivI4q~xdrH%g95{p|m=9F6HOM<c zTD<0tseJ-#1I3Z{CkXlyTE7nO`&}D+lIOuf_q)o%^GM7v;x)1r(C=I2?}Kf>NBMLf z*ue5b_%E{jLQGTob`f<3uUOt{joTU6v z4)<34J`K-fW%*vJ{xf9#q5N0*oZ27Kul^Z)Neis{Nenlt$wu6x&CRg{&4=Td_EVycahJ@_mKLB zKD%Mk!uer4e2FKiKZ5!XT<9FY?+O2SHHTT{e*Pg==WIO-*W3kt9Vn94a`xGg5p}pyJqUunZsx`l z+<2}V4{_t-hu+tFUk~9)y>Em-gbfYpeS;^3_rDFHS5RO$+af*`7OY=G$R|R5r*S_x zD|Toz!%)bk5FZ|rYYDO>n4-BU;b_RhY~Ctj|9rodXD*>Q-U09r!~wTKydN`q7pR^I2ZIyF@C1`3+Y&+_ zZ4VKV1AyD&TmwqHgf)swMU#$IrxLLp1$k5=4~k7Nh2WS{#6hus{HCqrco|<8(z~iu zfT)|ynkemE8O+y~^Kn}_l>TfX%51ll>C{u$r39HG%Z$y=O+blgyD2u?BHCpkt3vp? zGFb?pf=bGJR|WHRRLMX%y&NrvD={ce_I_rNDI^z@P{f%*mP@EezBZ(HB^BBG6<90iZb^e(re-?WKI10Kfkrt6v{5gSE_nY6Gk4lwP`=N zi3=!C_NP8TF!afdIYmR_(EmD!oSyBZ#f?_up1=AjeuB{>x2s@ zh*i0OSTC2)kp-hz|NaF#uuhaiP7_zzD92v1(tkTs4h?oU9Xa}7C(6->JAZW`mig!b zl~YZioU3eqG|%=^smW*bt-pl z`aMIQe1>-j7dBo$h$t=uix5)bVPs-wC;sGU*9VObj7f*ineFp6IxQU55u)yt2++IX zunw?oJn209Nz9>P6~Wm-dYuaYC-^Ej&SGwLNCIWs63g3)^V=p4HOCj% z3?E%v7^_3_gT%=N#obd=Qz|+NM>UL3NGfX?b%CRPd}$MNM^!&_)Q`>P&=g6|D5+dO zZ`qsbCyh&#y?%bN1R%DscJ%O?;&}7WiEa7CZRLsm02tL$mXt8QVN_v9MM~<_?qVAN z)c+OYsAvFxK>H)GAeFYS{V?H7*+)Zq@`odpqKgrLVimUKZ^y2gg`XYDlR=s)r zEeTn9QBk>hP)b4Kko=TEI#iPGoa*I{da;vSaXKYmZQq*+iXp9FrcK(0>(sV&NO4AZ zcn0bQ0K7@BxI)%DC?$VLVnNCvGXY?)cRWVqGZ>LpvL+4uPLP%K;8rI+xWnB6AMSu& zPu~$we#~?ZhD~BeX><~){$&j5@l6N)(08G!(`Y^eVJ>ciKpPP=E^lzkv@=UfmrP5k zp6oZiBB^|Se*S{8A<>ydaU)5{KLkma88xzW&ge0VsxmUFy2j4FDrr#sdDBO7l?(n9G$;ss{Bc`7hKPc&{*<-t?af`-`o>Mw9Dw8H2Xv-a-yFjy3Z2LD7MM5q^Hr{ys^m zPHEBU+3(%cBS^*Ef(>2#p5S$&r5(&I>K3Pi3&#y7vC)?EolKC2fJU}i_{KfKU5vedh}&@jFHaOJppBSs~S& zO*_%Q2BH^0deV2$F={kbeZO5BCpTA0f)T zuJ_-9089spGX9{f844$-o|PldUX8tCy&8a`S4{Px6Hqo!3SJ*6%Dk@&AbR-%rA`w+ zp*<*-yu}>!f^%PG*URQ8s@QGI(a8f2F47VnV)`PwJVbozyA7Yb1&^rW&x@}ys4K`n z0pDNNc?7<5p<(u_+x{bo@MVA3F4m zO#Otm+z=BVtZJR*sP(Xz!(SCgF&8VRUI~;RjIr^%oJWc2e7X1zaD)@z4w9yJwt@sX1Tewn%(SI(K-z$bCWd)?YA!J$;UQrrZ%@vJ zkC^W5YVr&l6B?Elz&%`rhl>X`#d9x_!E5E2RB=um3w3a+L;7VY&n@f>M$=&hymK~aN4qGIF1%);nv3XjfyF2Fm`(}Z=t&<)MCDRJ*uAf zr&z&;VXk4)Cff6EL>}$FGHH|Sc{@cJt9fj8=oxMTeJoY>=2wn0A2-d3SmKY zWA@=Tcz9Ha*D`ATm7vk5 zH2T2fPPr%22*7`sUz%WRONQl-zec>NTQl0jgn&pg?zUvi_6dkW>mWMd6 zphH2h@IQgBb5EfOI2oEsYzlz@??kIgoBh2LPej@szTVy*zCQj#e7wCpeSQ3ff{XTT z6N}hw7~eEsjD?+f;H+>XTs(rV4mOF#yoW^KcBPQ}VtqD-Nv-LEZT*2{aP`H9|yMl4Mf^oxm zLyUVe5{lu=1Pvxv@E}((e5}JrDYFKNjR;C9gV%J9uS<3lh75ft*@Pj3;UK5#r0pQr zWBnsPQbj|wrLU8(0&D-WF}QJK;3lyj6w`gK&sk^ro&&g-ibD3NHV^a>#+DJ>1}Uj% znIfxPqbCSN13)wYL<50HTbUG%Pqrm!O(TEgYfF45AE7G%7?HjP!ZONnP4jg>nerlz zF2Njg!fH3OA)xsRzsn=SNm>Qlq*aJFq?I_l$hW1%zr*Yol@#h`F-L~QTHL~hMEMeL z8zUyN>oppm|3|%{IeJ4Q26kd^kc`5A(po$gH8JGYhM=ZP12<{YAd3?0y#Xp>e`qr> z=kaH^P;dCEc>_+d(J2QB9r-dr-QtUG@kO`zQnwJr`GVqnL20IP!I(D__u+ zFX)O!I(aec_I*$h5v+!tYLX;L9=SpufdV0qJkVJ*c_g<)(n}B@(DkwCI;ZKRqPE#` zRyiCpC{nd@hE4FyR!vo$=`PKp#`W00H?E0*bVvqrQgW`BtEbaw`ig%r{-B*|gj*sn zcOKKuX?=V{TF%6LE{g4Tho|sRwBIkft2l!1U1%O*v`B{pFTm00yl% zZN8vyDS+=eX~fCB-=--iPY_UIfK3bz(2<{|`fa97MQ*z;we=ro`?MJTm3AgDg6~?= zM`fKY0Am54Y|=JL5XD+;30(C@`m~jFUH`+H|I1I&DlNv=4BHiuu!pgI>vL`K|5Q8l zenCI{_ZEyzPFj9vjXxASC(-!7fSq`6YjZK4u)7*d1Sbuy2|N8Y?DVHK12mdMfEYxe zJEisCjRZQ$gig{x&Sb!$*K8|B()GV4b^Y30()Fiksk}vN1D(SrOvN~K{d8C@!+~pH z!c+@&`dE1b{sKNfaK6AxoJOOT+JDTkmr>6lSx+>BAN(AT zM5{k={Q!mL^LcSxcx$%;893zoudD$Oh58Iis`x()JU7xm2rB;Lkjq}mrh~xYT zZ70eLJC*)MsceRk692dll=z%|DgNYDwqFg@;isW6J{SBNLg-7Zi?pjTqapg=t(o}C z+Vx;8B`0d>Yoq{2Prii2F$CGI+mYBUZ%!2LfJ^D-+c4p{Ebt2LdeV~no=0^(p?UJp zw3|@ZG@{Y|x_M;ijG=}S#52a~IaE7C?TVcM z%-8Wfyn*_8WKhj6a&6ryi~d`+|CO$OEX`Y7L%n?CqRr6Nhmx*d^YXVOhq+tgEYS&O zo38$OK=+n*5rz`_pueuZA5f>k#9t}!M-NosYhL{o_yXrR9_M#!k6>I|Xg}(S`g=Fo zBNcd3gFuLqvy1IW$o@*RC63t=W=fD~qkkOwZcIr2J*EEGQ|h-dVosyf2f2SOe&bIV z#v?^qee4(hE3H1wZPAd^Y3%zAh5u50-w-f+(E3w0PkY_FF`)PGY1`4n{uzL0mK zrk7Siid#4oyu9y4@f+*bwt%f#G53<1!)^NHPs6$KY8Duc1T9LOXMvbiIL-M|>?%ZU ziHPseG=%orZihR{I2L*3w&8IjnuL4 z2`1`^IRJbrbnJTq`*e_+C$R4c?0W+Ho;K{Ok8N&8j>0}AXmcFROkGK7bvH=kQAr-? z-3}yHBhadWw5yI)1D*HlkC`l~`<-cr4oJr$m8_ep$09*Zeqke_kj^}5zZqN=jV=4~ z#LlCY-&WAw5re>NE`?o>mWS#s4@JvE(ehAR%R|xfP_#T0Ee}P@L(%e3TgyZB25(1> zYB?qL!JbJik3vhxSofdJTj{*oy)2Pt08aC93@E$jis=Nb^qgWsyYZwr((bZNZ*AAx zPlhY4?*=WF-EKg4N-fqBU`yII?Of0%<`06c*yR6rNE_$o`(PxV+^AWDd=ssLDA9?q z2EnFm|4&t5Q5deLQh{j;POAdLN|W08tO0Z_bztYBol*yuhWQ7&*9-O$lT?Tu#PubF zV+h|NsCLrXVkVFZO^;0=6%$B>ng@f0-cE96GNGL&+0Oq_1)6VDaPy_7R-kE1{z`$S zxBfDFFL(bR^zwhAd>aOxNZl#s-Ug%Zc8~GSb8hD}jrwy$FCQY?=+4%mg^*@0=qX+A zCfC>`#N=4st|v?&VEVW!S+2mYX!7?G62}lo)}5$f%O}4EhgoI}(vuNf@bZbu9;w#V zr@_~PbiZy4YT6jEQBvw6y~haZm9Q5+VekQ6hQUK#jy{4~cMecc%LxgQr9S8VJMsyX3bDtT=x zwu6w6w-MF@H-UP#c_uorz77!g8b~&hj*V1ovhRJ-_t1;cvV(MKpcU#1U5}=atW<6^ zWuZSaf@asF`O5RP04wRya9$k<$tDc9A$>OjNlNe(H#Eed?j3`)p`Wz;TROHgbURP* zy!DZ)nRdxI%hpzX?BAok3Oog{ShiB9F>0Wi=Mv%UMmUJzOk)2zhyU*sbcH_}e-NkO z0@|xlmpPAn=QNF`b>dIG3h};N^{kssj@zzF&h;g;30lq8^!=i}0l!rX8uK9eXiQ<1(%pi5 zGX_iF46@3{ku!0elXr0{Wu!V~OrVSj>ab$^iSzk;6QFp^XRbezJ1)i8hk}VvDspq> zeXxup5tB+8pR@o7bmoMf(oZ~3kWUiBTI)v3196c}{`;p+|4Q zO@0@nLEq(n_qq7Tbj?eVrNBT`dtjG+ENehb^<~JsCM%K`>VP^BNvY}ZsBFFd* ziwR4M3GBUcJWm_7>wMFwnzKq~Zq69vZyiw>m(w^YEp1X`PF&##tN)mc%`;2Rsu^WE zpU;i3#s-?hQih~aF;raIkd!cUV63(Gku0&d{HwynGtw)HQwJqm{D+jaj2Y8XHpJgD zG%U5aB7H_r5%tX2z8?*F*trtJ3fPr&8khccNK8r5Gmf)6h7sO}Idw!NWkfnxC4#aYd?=EorYh%tWfM5@l)_-W!b+@D4x`GkH$U`k~{s@uyiyQLOXrUdvKgFGgzt;@@+TRXuc$moB3U1IUv ztP`>WvgQ^iiaAj^r9<0?mgYoh3pmfKTUS=Lt}c)B1zKPBoRY+WnTaJh_sj8*Bk6|- z(r;W*amkkat!AtxAI1Xl{&5wPrv}fhzJRf+^BMb~XWZ1Pf~$XDj}y}(vH#5dv&mD_ zGA{IQ`Wf$jj#6ss7uI%W?7S3`JP7+$T`TL)>@oBG?my!BPCOso)Y-hyIP=*0Py*1%d%r>aa$kJ!JBG8g&lyT~{KK#5R~lQlv*QiR89pO_ zVs3Z`|K8b^*+AF#{&DEyzWBam!&!!W6zqne{|kY{*#HTPgCG&wSQ%K8FS`hFAaa7h zdKmM>w?jO6DKlbUwvqqNJmF{MDLw&@0Z1Z^H2`WRHi+uJf3Y&UvLZf@`En=*1U@Y2 zBA~w3wlne13T7Um>Sd(`6U`h@{~@H1lpYwYnAYv}()lu`|Q%$;O#8hoc+=m4lz)^$jyo z!hBT%t}-j_PrT%kTxQ;_#aC2MsouS&D17(WqM6|qi@A9B!HVkL2aCcjGiTy0qa9K} zys|Y^!E6G|#w0v<)k~RLy?bonn1}bxEb*yFgnhhJmH=rHrelI&XAcM1k8Dmuj zFo80FiQ>I{O$7?WCDsy78L^gF3*ektgu305%cfQr15(S(6rdltr@p0sf|Y;<-H=D~ zI@)eG9P$0^0X)G$ozQ{1a^!PAPX3HRJOptVC+mZm=OG@!OAt@M$l`o5NB8iD_@js) z<8LE=mw$%%bN(gbZ-gJ?B1B*bFCqj)yND7fN0>Cx;xS?j;(U>hxKI=!E)l3*j0a!fqC!+4t`c()&l6`Lt`l{L8$>hWR?&)hq3A^1 zCAtvzU}q;6XNofsFBi)ZuNJEjpN+4vaB&XK!sp@waRK5B;iJg05BW00S76^67n{Xq z#9PHy#M{J8hwYVA`9E~;AaBoO~lcbHn0W#XBy97 zzq7~Lg>0J2F`SU&azZ)A6W%f5P|qY(9SW%Rl3g*u8Hw31eYQ`}apOhYjlICGU^7*Y zJFn(p>|J&po2PO-03j)g{D^tVhIyXwD=(1ghnVEA1f!#OfHOZ*5DWzZ^-=i{lmyrY z-t!Pv75bG9g{AxL>gr3^#p*e(HNXkS*VD1VSiaYxu0C|d^D*iw^KrjT-OI1TpxmQS zy;Av)s_Qm&T`jKwld)h<9m+9lW^9%VOwKaRS)Ac_mBy)MhHq6`W1|hyREYNtEW@x$ zTZ~=)b@F|)e5VV~yHN`Lw&gG0 zYQ=9m@$RYWZT{O3)?x$_+-9_;7I1XnT8C6UTL7)-dm_`)T;=#=BkkeWxrfRo2>uSpvb{jOUXfFUnON1ZfGLwBubWuLEu9 zL3?ZQE@7_~zos@&{f&5w`i=T$G13i4cOl&)`-6U6igL{;zf->JTylB85|Z)Obopz- z2-R-J7S2=|%ubN?uh#}mE$~^3-w`d;NnDr#ajS&Gj6AA0AB#6i_W&p6{|G<*ak>OG z(Ai_HsBs~#^?-WefO2i`)Ztkhu(MFMtN~Cgv;SfuN?3rFn*m`R{-~E1;G`q!)mmVc zsDxTa7_s5E9QTx?ztxIg>toCDW+iIsMtwBysFw;91ZL0+VONJ?ApInw_sA1e?_hDQ@f$$YA;ty@5_O45$%K>AbsoiwgHNdsjb(343+fH{+_sc!PJQ_US@Eq#7 z#q&k4B(FBFd%V8(p63(d)9rJ}*VT8P@4J49evN*&_fh=AP(Vz;vVdO#uM6@I zDh}ElbR;-2xFh)f;O|1pLcR`N7<$hjzd?6|1%%xYJ~RBPh_fPxN4Z7&M<+#RM3+T3 zM6Zm#Gy0L}XUv+}#~g0XH5Zy!n)jKXFu!auT42bxlvpY)^DNsepU0HPJP`8^E_)aS3tb<0=Lx$JfR$i@!dhBw>AG@sMdlK2Ew}=#Zf+hHe>p^Uzn4Ba+Wa ziAX6-*^=^j%6q9Xsl}-~QeQ}YCoM8mTVCr~i_1 z7IslQmsOqhYWAw^_jAf}ZyM&Cmo)tD5$i`*j&dCxHu~Z*6UO{w?78`87Q9%vx#(zd zcJW6g7mb@WzPZ#?8c-TtIFm_(|_g`h3!lliB1w6&F=pU9qELcg4dMPglHFajfF&ieIM~ zraU?2l_?)g`F6_hmBvc{%4;ikR^DHEu<}UdTa}+weph*X>P1r@n)>C`pQnjw-qXUS z#ZSwaHhS8GY160uYucYxZdJKeg;kTQuC3Zzb-3!Ks`sX6P9HP9Z2FAp_0v11zd!wp z=|9cjGrVRDnlX4r`ixOCN@rBf_`TX#?O(mA`nu}dsvoF+tor%tx2wOX{%Izk={56T zGyk0BHY;eBWmd|pHT z!Rzw=u)d;xPJK&#PeW?M@P?9x%7)h)-f#G#;ipF4=+!u=ad2aLZra&&f78LHBTa8LFK#}&`Qqj+%{MpS)BH&DGtI9zf7tv@^KUIH zTF!6zpykV!pRqXcZVhXVZ(Y`UZtJGj>soJ{?>0YZzGZ&O{Jio^sHMPvN(G2 zV`oO3`Qeh;OCDL8y!6o0@0XP>+rDh)vVSf=fBDAcN6)G{>%J9{E9R`&wQ|hL8&_FY z?O*lys^?a{y6W9kAFujq)eox|tzNeJ?A7~MKfe08HG|ez)(lybzNT}{(lu+&o_6+} zv!6Np<+I;E`-`)GTFcjZtsS&>@Y?jXqt=$Lty){VcH!D(YtLP~Y3+4uZ(IAo+Q-&D zzxMUD@2_iK_s%({b1psSs&iML`>%6|*7ZM}H{rY|&wJs#H_rRuywA=LJ>PtR z=LLZmY`Eb24cA^c@xt8~#b31gqE9Zq;gZlx%$KaXWc?-gUFvt~piAG_IA!DZjdyG^ zZ(6u%@uroV&fRoi)03NC*!0F_mdhT!?5WG$E?;{2!7GBU=)U69D~DgXV{`WAyEpIO z{M6=GHy_>nkIg?^6@S&LtNGPlR}Z>+@YNSyebv=BZMkgA^;@I17H*xqb@tZgt=-oI zU-Qzn-Pitl-MZ^NuD|&DE!+II4cfM9+lFnMx81nyu5CYUpRj$)_M2}AzhUbQx7={o zjafI2ym9=E6*qo)*ZZ< z-=22+y4x?k!{d$(cWl1n`a3?la^!rxackKT1`&T^>@W7e}Ha@WZf!z-reBh-Ajy>?*9=6AK zk9m)E&)7W`dusM{?pd>EMaucRv2i0h3i^vt)<&VKgk z=RBVq``ne!J@(v(&mBK9=E!+RK6pOn`He65ypaAv{R>aNION5fUmE$+?w8YEzTp+O zS6W|r`PJ#K9(k?mwW`-+UVlc)Ptv+!F;AO@uvVw5!F4pQpTjC`gtUf=5wbcDOV3%5 z-pko4zM5akFXK1x-TXb?C&ERpm?<6>Pl@+6gXXFEYe8DL7ON#{tF#T;McPK~2JJTO z9_<JnzKEr;)A;a5-qlPaGKN)`W9uswL)b&xnnV~>8 zN10>H@n)+z(>&Z3JoJB|vZecR`qEp_e;Dm8jYmt*K}#>u zHfc9$yR>_?XARi0fR?5kDhyqQjfU-pU52|1dkhB+FB;x6d}R36@GDxn1})ug4lswB zv7KDDG{c-HTiRn@qguMte24iS^Zn+%16o>PnQEDB*=V`VvfHx9@{m(Y{ra`ELABId zw)D+EI9kg4ev)lveaEn$^%iP43+cngUE9CjW4*UPiE)v-ug2PC3MnU!W4CMX3kchL zp%d+GrsusKy{Wy>s-EiK_jQbYT*}z7Vfq`#h8!DnZ2Ym?ii(Vvd~c=Vj3YmZJl_T5pUKK3DM{O~%2OYpby!{r}bb zB_FhYF!qBXA0)o>)O+FYehjt5BRF@Ix!fmdnXylxrUHd?=nipGX(E*;KEioppMh3M zwIlz5YJ)ZC+SOeQ21Fc!oL^F`4c7|Pvsv0wZMg==RBbzY`hIP%c0_wcJEnb$wxva@E&8mKO~QI)1lC%W(5RmWwOBpY_f1&mG-Gs6)TTfeBM;YrHWf!$g63(ZeztZE z6iC;=2Wl%6Op92THVLbkB~WTz1|`^HtsHatb2JZNtwQ)?Mt+GlOLNCM{|wEnMQRpS z$CvXSzJ#ygOZh5(A;!?P{7QZ`-@@{0n`4Rpke}=!ppJnIbOJP6oZ}@lo zU&57t&BwEcp~v0F4nY%k5Iy)g`-y$a{>8qBM%M#hANFD2@K~PA$Qk=>!#~71!^iko{t++WpW^iXPoNO?-@L%~X z{u7_Uf8jHQ3vU)~d;u&PK75hz!xvP1c^4nYU&Z&ge&=)enQSk3mluDUC-Q&tDT47j z!Ex4(#v6se_pMg5$M{9;Q~ol}jQ@<6@Gp6}HcgwTP1j~?6ST=%gI2FKLbH2@)~wZN zwOXszqSa|lS_kyJo!T6H&#a1Fif>=d5Y=L~m@6hj63oFFie;i)OvLxvLc}Cd2`%>& zF%6pJ_hEK~dcvzU}iZzJT@}WYLe}AoSEv zh~L4h|A1ur6K8?-if1(wwA!EI{JcBGJ^1eYcJVqi;ctqYaIWDl%~iZ6j)^^FV``<>s! zjzeSlC%>8X@*CM7`~mLI@8iDwIqZ9Xo~Q7)c^>Q%BOq@_^7r{D{th3`U*lQ)4W7f_ z#9^9m@nQURp3T4K)A)~kI{$;u<$v-scrUNveY}<*=ktUoZx`V9 z(W{}no(O$k(^=ZY(sz8>^z|R4uK6inhl2aARYSuQ80d&LdRAGIBUVT^fwLQ zSHAGci-7t+4mw*a%Yk~n0Nia7IN&VsFW5d&CiV$}xA{Ol9?oK+{Yhil;D`C(lM|u8 zn+b2_M({xVlkd_|Ox~CQg|QeY?o*-L9nQu|?O`P_H4jib-lb2IdBN~72>Qze=teU! zM;gP5At$E*vva{|9q+;f3+t6X3<21O3|&$NG#{f`5x8ju`e6?AVlB0`Z9U@W)5rDo z3p>TPr;i)jI~I!1PaijR)z*t+r;poOn`^~8e-U@ow~5zai*6Gyv@c%RC7wQg+|kw0 zE)JbO?j}4u{1{;N1c+=zEhA7_fI@y_YvEO80mIenZh&cQpU zix<~*i&fo!5qEZrrQM597cXz@>JVM0kL5VUtO%o(EI4FKH6r#ylI8?-Dg}&sG6mm7 z%%LdH8!0YRUP$3*h{&)-Uo)VXD4xaz#k8j240A8UWS*n*kB#!qRo>y4D|w~oAuh*U zZgg3Lzb2Pt!zYG&F=wW*(XhhcseNWxp}nOY)>1WZ*g0>(Sf{Ev#;U;Rgue=;aflY6 z1!Cn9tc7Ty+8`|qYmf+S0W6X8F)zOqtB_6FW!mMKxm~Gk)~?d7*0#V#DFCYn{^U`` zXs(-vg90JnnwS@4T`Tj3r0ZZl+9GWw@IlbiTwp8aH8q%}?8It_JfNxdob8Y>VFHR$ zyh9K4P(uUZ28h^`-cZ#Y4LN$WkD){$N%} zt6r8#Qj%q3mg)*#VXI@TQym784jVFq^|+daidkYdi+}{4OPfCdO^k$!u%tsIWP9Mp zhL&K01FmYpJ2(avd=|%5f!pDOf8e;u;AHZnUEsYL;AvUlmpS0V!@%8!^JRRcoX=g3 z8Qe8|8@~m!q}w5>9>gr@0OmZ8W0vzAW^=DX8hwD7%_o>uz>Ko}+R-PVuw} z&kUd;e1`+A)+rZuZ1kxHUY`nnZGdzM23+o1H=IRUwJyXB+9JgDS`XrRplC8bhoTHm z?JW7uGQ`c=a>NZ9_Ojs3m5Ap#m31cWn;<9Yjm7ef6^LQ`2j$gbw$tPeT1JfOI5#9){=_;fwe(dxgEqUSqGbH(*hJi@nX>fkFB`_CEUnM%`mD zG=IcC<_7MZE;tX+vxDn;MqaMNojR+1YIRbfm$TCXEgza=ZXg&&ax)4xv zsVD_C&lB^Q1#_tFlHPQvbpC*!;B6bE9Q&RLb{pLAGJ^Mxf&%%F`}70MxTz;?Z_(Ix z`S)7ZuRSCqd^BIp4}1i!QWA&o2Ez=3N+%u|4=hs~sb^DVOLcnYsD(Vk=o$P>@SLzZ0uEY8Pu2+rB^MYsa@J6R6q`9A!qzVAgA z(yy@`%@fa%55J&dQKGJA;tEF>)KL#_qDqm2HGU0SCKCHThR@SN5#9GCWK5Y;up(_i zNJJQfFbaX>(D?{y2wmc4macWO0<3zfDTqACyWbGf`kul5m=y66OTj!Nmwnd7K)J0pXmFAKfz}63HXY~ zguWMnFEdZ=`-zWaF?=Mxa+}h3A5Xyw=gPi#3gG4|3@<}N@(-*D5C}J7659RwFcJ& zgfN7mJc+GC+phqBti*jeLIFZPZ|HkVya(R;0NQs1)b>5#0v({AG@@mhOq`wgVW?z;yq}CB(0RQSz<2Q z+5(f%kfbQ`l`2w3gnS|`}f0C{N`k#Us)tGor9E}BtK6UNT%9CD&Vi|`$J&g z7yqbluh;>;-KltREXLIl&_xi&C`#za4xq0c`|N7tijYl9} zM?4dAEGZ)nV?G7GAU$47^>4IxtV;U!dIAas96EJBha{ zv>kIViMz}D9;b1u)%X2FB(q@qcsK)fE$w^Djyq?(5f31|C9^qNI`BYvyBB4i!P>Q@ zC~FhahgdyqQ8{9koa33ndvin`;I+wTB}=8;10Dz${5EEhcyX3-U+B0Y{D_xz91)&i zT_G7_=f#9C-ithUgyCrWQQ$5g=|2z-BRI(liN6zgDk}vY4(8uNHUf_#K*y)VA>;$q zWtV-J|3W_G2_+}de+d$=L~G!cgjX4U$DDz1?aUW}JHoXL3lz?QcS$eKyom7Mj4&U+ ze+9UF3UjQ-fZLxDE=Ha+@1g!cU-S$5*qtWw(KqN9u@r&&hx&wg4#oi0DFgAzAJCtF zBAlU@%^NT;oy3MgUgq$bz{O<9chtjcFfVRpOJEt8!{@PPycfzR_5B8U`Xis&_XnSh z>r~A9YFH%ROUHZRcyF*)$A)R$2rYoW4A&u`(-vIk;=Tmw3YMx>;ywxZxe(Vi2=kC% zjr)97r?umLBU_Jfq4*Nx_)GSX3Y0z5r_-`Umd*X4WwbCAhrxBh*ptk-X1K`K+Uq*oS z+#X=r?z`0~oQL!ZghB*L)3fs!)|l8Sy~ePGjg_s21;1}RbW*hNY~ebBhTK2Z+a$0S%(DqyLogcW2Ot72pgB3sZbSXt)4dhu`R1)*!8wSEBU zlo;uCgJHwLp>E(WIC35Oza%K0j`=IgjW4A-EgKvFsvN^k8J^rBFyK|U5!46=< z0c=q0CalzNgoeQbx~!- zVzqV%nwET6ioDrBoT$@b6<8fdxV|C z{h(bw7dqk1u)hVs&Ktyo@%g(@Y2gj$5j+x>-Dqy+7Fcy-c^o^)9%HSr>&C;P-o_Ky zeArosV1C}thq8sRP^ZAon+EH2I_%V$u-9e7UYE;}cq}Zy1+e%Q z!TMVQ>+N`63Y%{kFNgohL|6nFz8*gb_U#I&Exu%(dvmFxn(nO`M60Jg%CzY4nJYuOrhHf*4)`Ss8v zZ-+P0jr=CQgWn9D@~yDL-v%4}?XbV!37h-f7=2^;()nE%vchtXZoML!0+`{VF4cmjR~Pr(BI4BH4_gFjgxYk-dW2<)ma zurIKxf04h0or}-H2L1}Hwy(mj`a0~YZ^EYfHtekL^7r5y@IJKJNBJ?#wvNC~|FP6b z{?0#PFT!H~8UF`#++Qdy_cyT7|C4=0z6|_(*2I5cFTo=F6ZEppkgcym2mUMM+$QW; zyc<^9`$|Z7!fPt#9-`FO8}2eg!J4mlEhH#S4&}^ zVZL}3>=#?v7Mx@cjTLMO86s0;VFz0dyqqw{6vM>`+QTMBvum)6ZLG-0_cyVFO+arX z#$o?jDKy8roqrPS{$%5?gvEav>=C*@z)Z49z#CvLbZTda8c{3iL_K!4HHs$D3_tBw zF<&eYZP?$|E;>Y~ScE-p-Pqx_Sez-Ah^1l~cDS7-R*02i6|5<1Xpfs%hdplRiuK|= zaXxG-8?ejmB5|>}1pC}JicR7&aXI$7U5TA;SBa~|7VLGqMqDed6W5bIk96Fy^zVQN z!7cC}Aa8?R@HMytz5sW@;=dan0r$ew;C}cU?14AIUU(lo1pkAF;Q?>}9smd70dNS` z|HJSqcoH53Ps5|&S$F{)foFp5t?)8@6<&o8!RzoWcoTjOZeAHwSM zG1+|JS?~{d7<>WC&sXqT_y%4J|Ag1VzhDFU0iFv#!PDRu@hfaWzr%OoI9Y>4AFM%K z_nOdL;CW`kp1YIioKL2yhDQ!r^UdTx!+y{#{p|XQ+7K;C8>%J4=AWviX;$_lEd3eq zxA__NezNrEz}7zucK+eg!aoW&|1sKFEnj*96luj;i8f9fua!arTn2sVL~RnhMk=%^ zTBSA>o+MS;bZv%Kt=VbNk4YVD zCJnHIG{KJ20*&i@Sn=B6Z_*B1Tqks|U0S!+15bl9wI%SyS_W^dv$PfP`G?N=1g$Xi z(a;QE2;aQZ=!Ugxv}?8N;L)`WK3zAM7Pq%rt=1w_Z7M9$IN!gy-!;RX%&K~pBblN9 zD!)ixGjogSnvs#7Ew9#0`8>m#ndw&B-qF+8*4SDrpQLB#Z>Fbb>i6k6hT_Ft9du(Y z&MeV?o}aF+S?ZdjuEW$dPhIoXwLo1ZI2qP_y%KAIDyKk!Q=rN#P+%6Q@(NUW1**IP zRZc;Pv9_+O@ytdl-kM%0i%l=q!NWDvRJ*XYzN@3%RNK+q(cZYgy|$~hy}7o2agY27 zUXd+IFD}TXB5;)u;VPSttAqsa*{-r?+^hHVC1kiS@T`@^>K);!gQeeiDd6-wzuNlN zuKL9bo7x(e>N!5O4Xuq`joq!?j`vYwx_;+b+uT)qW@Eocnd(lp&UUA_QNQz$E!ES$ zj#ld#p0z!#Z4Ld)EK#NCXvpn%r$C{G5Ni58%XYrY?|)a+?^(Yx^Yi*WE70#u*h)a1 z<5BNGl6!qaM^9~iePer%v7x>ey=iQeoo;NDckYe$=c*4?pA;0B8ddi<>ZnoARUa0p zzAsdLS*ZHHQ1yMG>~m{IcAiJG102uh`i_MQ(b)u$d$YZ6&t?gf-VQ&fALu#$&Og($ zd>ud5GYld@i$=;&^%?QW5kxOB91bhYa( zEmAElRvl8L$|+JESFAd$$aYm7Uu1h<4cekyBm9d%R>m&91zk=pFm}sF9^Fou>UMfA zQJJ1w;@jNVwGim4Yg5D2(1YGG_Q(=-e5Xrzt?4LKPkX$XjxLAQxoa?o?9~u^` zZd|N)qswAqQpUxyGhG%t@KLPVSEAZmY{QSjOR>a@HN8l(V_YTs#I;awL{YwRiQd>H zj>ftzv2h>c63J;imN_2k{ZNu^TqYl>TQy!v@{G%6aqi3QqrjN&)NotB=PSz1&oJey zrsnHSb~$N)6FV61c+ptuj9eS{k}?s4Y?!H3!B(o+L8;CTN+)fz0Aie^KcA#OpXBshD+Y~Db^^#Y3JVo73X8oa_apPkI(QzF zoksg)2Xz;zh7>Dg=~SCuT%?d%tdMErgF1ENx$S*L5=A-2N*(G-9qLLasEt!~qL}K0 zkf~13_5RK)HcX?zJxvxsdDe_{2_6P_hOx@I)r!{?tJ;fmysG-Ox=M9Ql^Wbta&TAa zgS*Pn{9;A9C90XlHgqU-7E3f>FzZq&y-1Ei+$*M2lxLiww{3=_ZEiE{gL{TPxMw;Z zs?nTfoasEc73r1?GtQF5xzDl_q)TmEXG^VzjFrTyYwW3YX|9DpbZKa8>!~$0c6PV6 zb+j9n)!%G5erTD5uv+`4ouY;3M|$tQpe1ys*C0zxk}FUwS{z?el~6yxzU z2}UV_Q6|ACmtcsAi^ZhHqPo>IS%*MWv}% ziHe?%_Kt2}M^ZIyJq!i^9iQ=XKv^^TwOjs93+M88oOkT*W+#`fF50r&DH zcZnZ8DUqa?qtGI6T!9vua3ief&naaq*Hd9cf1F z)p4P6rP#7&>5C6s<`t>E2H7i}!uP@GUuj)@%^{1=)(^dV76J@FCMpnA2KV8+I zuIf)$^=GL1GgSQ3pP}l{Q1xf1_GhT}XQ=u!RQ>uA(wdc_ z>er`Z)~up*ohpi)77&!{Oe2cBWo0Ya@)XQ@wtEF*wrW$hdak%(R<>%3K2@}46{@!8 zskZ1-M{8D|YD=MlQJr!0R^Ad#zecg(D1xJaxX4~+j z+Lx{RG+V)wt@<=u;U`}#!grCvuT{a3r}Fb`c(y%P`A}Er<*E9u zw*FCg)z@6;5A|FZ_PAH@=`$$c(N?ale^h-|TmLA$=c#*r%4yBA+WN=#zO8>$dBv*U zT=iU+!ss9Mo|3v*x>QF0*vhf>kGksfRP=*-UZTp^=ds9F?I}@LtLh)C>L05OKdOJM zw)brH+4@JprB8k`tho};xXSu)mF40p%fnTchpQ|PSBZ}d>oE1ZVX}X4FYCco_A9Qc zykV-mVXC}gs=Q&UykUBI>H2tueo6mbx=w$%*MFC;(;e>h-=*v02KTZ(xa#nv>vV{F z*^ju&{>D|}8CM75x=x3<>d(`4et~ha-?rb$8M*yV{@lkgrIqhG-OGZV?&bU5j`yif zZyV-2!ll0rx?`R*A;~DK7 zaNNN}&RiEXcD1w7C&mkFyB4sF6Ju0^GYn-tR1(4F;_L2aFnYpLN_#*kkM>~9f!8*N z&D;}KX?@p6D2tMRp|Ew+ALm8zBjS88#jtH5#=B~V3HAq*^|%~X$^)=aQawhBGs(@U^N z9fqxHFYH)%z{a&5_OB~o8#^C%vlXzZb;91(3H#eT?A5Kr{@fDS^suj8)-Y0J$y!E= zR9FfVQGO`?JVgxE1*;v~`O1h)QXYpqc2VlYMMVvQ}B-p3dpzS3nX}iS10WlBXtS=Fjya(3K zAGIj7*Z_#f0yDrDe3m%>3MajCUMu59ieaCnoNj@g89Y?RNiyCpe*A6zStK9w|#0LovHU z=6K8apE7QdziO6olPt$wrn_Z)wT$P>xLC%Q$@oke-z?)jGCoEzyjuu{b{P+rv9FBp zl<}1^UM}MmGVYM^B{H5Z<3%zyN!S8p94F&zWE>{ru@tjjnf8!zt&E4uc(RONqZnQ_ zG`gOXWe%44Wio~h9B^jHc$ADMPz-+$19*iAz9{5V;sx&zI$hY=SA{%PA~Bw$nHioU z|MuQEwjaJLuVB{|omcQ9`<3-^>`KJR0OU0i!{gv3G8CR5neYJ_4S$a!czR5O&j!4| z;DvFzeRc3@fFHxj_tn|=)JY$J2-yD3u=gk1?fJSjpKSSL$sZ%~r3JslZlfm)Jz3}L z>~{H9yFI=Ow)it)gI_Hz?>4*p1HZEX z%-sktqE-04j#0uU;gPVTxB4y#r(VCT1*4lL5u86sG0r@pbh%9bDbu?t7ABc~OXlAo z)0r~9NyfBeOJJuf@dO5*KxdEp;7^0US~zko_;dMx8EmlSLBRcge`}v}2Mr#;>HmE`@7&M1=bU}^*?aA^*IIk+wb$O8 znXyx8qo?u9X9mVXTJj&^p;n03*Kd#>JH2O^HTw!PkQRD}y|?fmj6v_Wn0~e3kbd zTNV1d_{!Xh=jA^!xARV0>-h(^vh&^YP{Bh{D?8rL+YCr%Zl&~| zy!|=MIn3M5e9bT9T#|Es&RIF#IjeG(<#e#VQFqStoGCetgxBO$WB>3Dxe@5xZ&l8!*mr?=%wO!Il%@kulM%nLjMFJ+qkgfgjtfRBN9+o)BE0a6 zU1ZqF14GCBfkF3s1w2N-7r-buJ+9w*c;7tfen5N%zsHaATTAWe_oUU)ebiI-?;dJM zzi-&@AE>+I`>mjEt&XYXC05fskN7RX%gFtrcb|tI_+{b={~mtAyiwKTJc*uu5YZC! zkOvL%7B8kYJe=-h?te8Yh+dc3wK1m~T<#CQ-^}--!6$)>?=0T=P>iFHOCqdOb914K zj~dp`3vqZ~>>o(+e8bW`_+0z=drAh?>Yu%1bkDvI{If;^|E!rn_)~WObNkmkUmtHQ zz13<^K0Z;p-)#RD)BBKx-)|v!B@^dq`~R(le8v9d{p;hut8ZDOf&XdtkC!pw_(Kz7 zauDxLg?!dRCfmQ-W*^^R{U5ZDDR%#c{r`uBEV6ris7c4oRsJ^%`JMg$rTsf8yu$8Z z)xUqG-T#sOf6)G4vj5lZf2;jJYyZ#N|8D!=#ed*^0J)>pC`ypUd3Xv}A#=6M-Z<7G zSi+2#AF(3T93<6!tV{4SmU-{QXZRO*AO8~n%H_;^{|%nbJMl6*9Y3?D@Ns^c`JLzC z<@q|E%?BvwRY>Y1tReFTUZ5YeT>?IA^7;mo*B_U*hL39_vrPZYpX5)*Q&nERpYmI% z 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 f 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

    5{nk08aaS6yUAphg`ef~y8Bf0S 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

    )l$E{C8IT?||v9Z*wIpjfdmF<*^cB`vX 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%0DL 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≤GEz6rn3=k%i&m=Z_4npUUo3O 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%0D8p2k;3#8=>*z8%K5WvDVkBwxNnetQID; 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

    n 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

    =Fkw()~Au59>D*L%K7u%3jU12 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

  • g!G^5C?}o(nJVy+k6aM~cHr2e%ZJ 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Ŋ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 >V{%&T#tU$;F?{Zxp`< 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%0AwvRdAah8<1nOI`I@JadHNiozZj&cNDlj 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