diff --git a/go.mod b/go.mod index 7778066..9ee6871 100644 --- a/go.mod +++ b/go.mod @@ -4,11 +4,11 @@ go 1.26.0 require ( github.com/fergusstrange/embedded-postgres v1.33.0 - go.sia.tech/core v0.19.1-0.20251215141429-887336e35dd9 - go.sia.tech/coreutils v0.21.1 + go.sia.tech/core v0.19.1-0.20260326151920-bbeb92b26458 + go.sia.tech/coreutils v0.21.2-0.20260327081620-0c3739d3b615 go.sia.tech/explored v1.0.0-beta.1.0.20251014084113-99eb535185c2 go.sia.tech/hostd/v2 v2.6.0 - go.sia.tech/indexd v0.0.7-0.20260213144115-c8d05616f5a1 + go.sia.tech/indexd v0.1.1-0.20260408142741-3ec7d3af7e4c go.sia.tech/jape v0.14.1 go.sia.tech/renterd/v2 v2.8.1 go.sia.tech/walletd/v2 v2.12.0 @@ -28,12 +28,12 @@ require ( github.com/jackc/pgerrcode v0.0.0-20240316143900-6e2875d9b438 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect - github.com/jackc/pgx/v5 v5.8.0 // indirect + github.com/jackc/pgx/v5 v5.9.1 // indirect github.com/jackc/puddle/v2 v2.2.2 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/julienschmidt/httprouter v1.3.0 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect - github.com/klauspost/reedsolomon v1.13.2 // indirect + github.com/klauspost/reedsolomon v1.13.3 // indirect github.com/lib/pq v1.10.9 // indirect github.com/mattn/go-sqlite3 v1.14.33 // indirect github.com/montanaflynn/stats v0.7.1 // indirect @@ -48,15 +48,15 @@ require ( github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect go.etcd.io/bbolt v1.4.3 // indirect go.sia.tech/gofakes3 v0.0.5 // indirect - go.sia.tech/mux v1.4.0 // indirect + go.sia.tech/mux v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.48.0 // indirect + golang.org/x/crypto v0.49.0 // indirect golang.org/x/exp v0.0.0-20250606033433-dcc06ee1d476 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/text v0.34.0 // indirect - golang.org/x/time v0.14.0 // indirect - golang.org/x/tools v0.41.0 // indirect + golang.org/x/net v0.52.0 // indirect + golang.org/x/sync v0.20.0 // indirect + golang.org/x/sys v0.42.0 // indirect + golang.org/x/text v0.35.0 // indirect + golang.org/x/time v0.15.0 // indirect + golang.org/x/tools v0.43.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 0986f98..6791682 100644 --- a/go.sum +++ b/go.sum @@ -32,8 +32,8 @@ github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsI github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= -github.com/jackc/pgx/v5 v5.8.0 h1:TYPDoleBBme0xGSAX3/+NujXXtpZn9HBONkQC7IEZSo= -github.com/jackc/pgx/v5 v5.8.0/go.mod h1:QVeDInX2m9VyzvNeiCJVjCkNFqzsNb43204HshNSZKw= +github.com/jackc/pgx/v5 v5.9.1 h1:uwrxJXBnx76nyISkhr33kQLlUqjv7et7b9FjCen/tdc= +github.com/jackc/pgx/v5 v5.9.1/go.mod h1:mal1tBGAFfLHvZzaYh77YS/eC6IX9OWbRV1QIIM0Jn4= github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= @@ -44,8 +44,8 @@ github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4d github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= -github.com/klauspost/reedsolomon v1.13.2 h1:9qtQy2tKEVpVB8Pfq87ZljHZb60/LbeTQ1OxV8EGzdE= -github.com/klauspost/reedsolomon v1.13.2/go.mod h1:ggJT9lc71Vu+cSOPBlxGvBN6TfAS77qB4fp8vJ05NSA= +github.com/klauspost/reedsolomon v1.13.3 h1:01GwnO2xoCSaM0ShP4qwl+FsHg3csFShC6Tu/RS1ji0= +github.com/klauspost/reedsolomon v1.13.3/go.mod h1:yjqqjgMTQkBUHSG97/rm4zipffCNbCiZcB3kTqr++sQ= 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= @@ -85,22 +85,22 @@ github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofm github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= -go.sia.tech/core v0.19.1-0.20251215141429-887336e35dd9 h1:k7EChgDrkJYFmUCJJVH+aY5xKaz3/0OaXzSOBTLO/r8= -go.sia.tech/core v0.19.1-0.20251215141429-887336e35dd9/go.mod h1:LatJwEl3Ht6xZAhk1onJxxlWfrkv4AiCK1BrOnU2kug= -go.sia.tech/coreutils v0.21.1 h1:63uW8ohS280wsyg5zcYmNw006NUo2XnyVtpyN7GW8Q8= -go.sia.tech/coreutils v0.21.1/go.mod h1:nQyjMvBsi57G29w5zw/jWgAy3XL5PvvDi5RWxJBBEto= +go.sia.tech/core v0.19.1-0.20260326151920-bbeb92b26458 h1:bkaQA63PY4G5z8OJXpqnDfazKn5b2SPL/Onbt9MdqSQ= +go.sia.tech/core v0.19.1-0.20260326151920-bbeb92b26458/go.mod h1:VW884XgsHjd9ptg8kkkl9OvHP1QLT/DlMWYjYQFvb88= +go.sia.tech/coreutils v0.21.2-0.20260327081620-0c3739d3b615 h1:USTNBHUF98uaYbxW+t52+6NHBZxbPxfijXqlrBIqMLw= +go.sia.tech/coreutils v0.21.2-0.20260327081620-0c3739d3b615/go.mod h1:HvQn12RaiOgpCiu6QWipGZbAhnNuqmpaEtkrG3cIG/M= go.sia.tech/explored v1.0.0-beta.1.0.20251014084113-99eb535185c2 h1:P6SaG9jbM0JPZX5BPKKEBS6ydPgzBq9K95kHSinHRkE= go.sia.tech/explored v1.0.0-beta.1.0.20251014084113-99eb535185c2/go.mod h1:C+iWXp0/RPc4MENcIRCIwz3azXTq3aOZERYJIUCPG4Q= 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/v2 v2.6.0 h1:ocHFYn9TYgsXzrqi9eyw4xTfFS2LMmQm0jYra78dz6k= go.sia.tech/hostd/v2 v2.6.0/go.mod h1:O0jcsiFcTOGFpP4arh3IqJt6QBXup0+X0yBruvACDRQ= -go.sia.tech/indexd v0.0.7-0.20260213144115-c8d05616f5a1 h1:5rbmmC+8XWD+R9b3YdPbfs09/H1fV3P3AYiVm+/7v1A= -go.sia.tech/indexd v0.0.7-0.20260213144115-c8d05616f5a1/go.mod h1:jfjMIaAXwEcGXQ6Nee/BbVNo1egBnSolyLZHr/k98Wo= +go.sia.tech/indexd v0.1.1-0.20260408142741-3ec7d3af7e4c h1:ewc0KGmzyJN+xeWlz6cexCE5XNJN5Ew7uVVC8CJwDFM= +go.sia.tech/indexd v0.1.1-0.20260408142741-3ec7d3af7e4c/go.mod h1:qpzf9qq/zRYBIAilmPc6aqErO5LkGEtgcv2xapgdDro= go.sia.tech/jape v0.14.1 h1:3QWpOzAxxcaECuv2Mc6tbkFh+olLnyUxxP5SfwgI/qY= go.sia.tech/jape v0.14.1/go.mod h1:BEygF1DcgdWBenPa75iJ1b91FuxzLmKBxpglmx+C9BY= -go.sia.tech/mux v1.4.0 h1:LgsLHtn7l+25MwrgaPaUCaS8f2W2/tfvHIdXps04sVo= -go.sia.tech/mux v1.4.0/go.mod h1:iNFi9ifFb2XhuD+LF4t2HBb4Mvgq/zIPKqwXU/NlqHA= +go.sia.tech/mux v1.5.0 h1:6bQeO5y4AQPcf+UYHjhxpaNX+2V2wI5LIl0BbAg2YDA= +go.sia.tech/mux v1.5.0/go.mod h1:1/SlgVsLOUsca5tXxAEEwl+Ohm4B8te2YdRhpRGaUZw= go.sia.tech/renterd/v2 v2.8.1 h1:/eXrpV00Cq6Db1EvBJ8nkxxlunKc2q61V/ccL1afpG0= go.sia.tech/renterd/v2 v2.8.1/go.mod h1:PYfqXBssCBX6AQj8UTm4entfEuzYLSHsad0EFMLd3UU= go.sia.tech/walletd/v2 v2.12.0 h1:JgJrbPeMWGABp502B0mMAiwQtqv0JXgj6q2Qn/a0jqU= @@ -114,29 +114,29 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/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.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= +golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= golang.org/x/exp v0.0.0-20250606033433-dcc06ee1d476 h1:bsqhLWFR6G6xiQcb+JoGqdKdRU6WzPWmK8E0jxTjzo4= golang.org/x/exp v0.0.0-20250606033433-dcc06ee1d476/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= -golang.org/x/mod v0.32.0 h1:9F4d3PHLljb6x//jOyokMv3eX+YDeepZSEo3mFJy93c= -golang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU= +golang.org/x/mod v0.34.0 h1:xIHgNUUnW6sYkcM5Jleh05DvLOtwc6RitGHbDk4akRI= +golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= -golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= -golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= -golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= +golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20190829051458-42f498d34c4d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc= -golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg= +golang.org/x/tools v0.43.0 h1:12BdW9CeB3Z+J/I/wj34VMl8X+fEXBxVR90JeMX5E7s= +golang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/nodes/indexd.go b/nodes/indexd.go index 82b9364..e152f87 100644 --- a/nodes/indexd.go +++ b/nodes/indexd.go @@ -23,8 +23,7 @@ import ( "go.sia.tech/indexd/alerts" "go.sia.tech/indexd/api/admin" "go.sia.tech/indexd/api/app" - "go.sia.tech/indexd/client" - client2 "go.sia.tech/indexd/client/v2" + client "go.sia.tech/indexd/client/v2" "go.sia.tech/indexd/contracts" "go.sia.tech/indexd/geoip" "go.sia.tech/indexd/hosts" @@ -160,15 +159,15 @@ func (m *Manager) StartIndexd(ctx context.Context, sk types.PrivateKey, pgPort i } defer wm.Close() - locator, err := geoip.NewMaxMindLocator("") + locator, err := geoip.NewMaxMindLocator(m.dir, log.Named("geoip")) if err != nil { return fmt.Errorf("failed to create geoip locator: %w", err) } - hc2 := client2.New(client2.NewProvider(hosts.NewHostStore(store))) + hostClient := client.New(client.NewProvider(hosts.NewHostStore(store)), log.Named("client")) alerter := alerts.NewManager() - hm, err := hosts.NewManager(s, locator, hc2, store, alerter, + hm, err := hosts.NewManager(s, locator, hostClient, store, alerter, hosts.WithLogger(log.Named("hosts")), hosts.WithScanFrequency(200*time.Millisecond), hosts.WithScanInterval(time.Second)) @@ -178,7 +177,6 @@ func (m *Manager) StartIndexd(ctx context.Context, sk types.PrivateKey, pgPort i defer hm.Close() signer := contracts.NewFormContractSigner(wm, sk) - dialer := client.NewDialer(cm, signer, store, log, client.WithRevisionSubmissionBuffer(1)) am, err := accounts.NewManager(store, accounts.WithPruneAccountsInterval(100*time.Millisecond), @@ -188,9 +186,11 @@ func (m *Manager) StartIndexd(ctx context.Context, sk types.PrivateKey, pgPort i } defer am.Close() - f := contracts.NewFunder(hc2, signer, cm, store, log, contracts.WithRevisionSubmissionBuffer(1)) + rev := contracts.NewRevisionManager(hostClient, cm, store, 1, log.Named("revision")) + cl := contracts.NewContractLocker() + f := contracts.NewFunder(hostClient, cl, rev, signer, cm, log.Named("funder")) - contractsMgr, err := contracts.NewManager(sk, am, f, cm, store, dialer, hm, s, wm, + contractsMgr, err := contracts.NewManager(sk, am, f, cm, store, hostClient, signer, rev, cl, hm, s, wm, contracts.WithLogger(log.Named("contracts")), contracts.WithMaintenanceFrequency(500*time.Millisecond), contracts.WithMinHostDistance(0), @@ -201,7 +201,7 @@ func (m *Manager) StartIndexd(ctx context.Context, sk types.PrivateKey, pgPort i } defer contractsMgr.Close() - slabsMgr, err := slabs.NewManager(cm, am, contractsMgr, hm, store, hc2, alerter, + slabsMgr, err := slabs.NewManager(cm, am, contractsMgr, hm, store, hostClient, alerter, keys.DerivePrivateKey(sk, "migration"), keys.DerivePrivateKey(sk, "integrity"), slabs.WithLogger(log.Named("slabs")),