an app.bsky.* indexer

Compare changes

Choose any two refs to compare.

Changed files
+20 -30
cmd
+1 -4
cmd/monarch/cursors.go
···
import (
"context"
"log/slog"
-
"sync"
"time"
"gorm.io/gorm"
)
type CursorService struct {
-
store *gorm.DB
-
-
firehoseLk sync.Mutex
+
store *gorm.DB
firehoseSeq int64
}
+3 -1
cmd/monarch/firehose.go
···
func NewFirehoseConnection(ctx context.Context, cctx *cli.Context, cursorSvc *CursorService) (*websocket.Conn, error) {
url := fmt.Sprintf("wss://%s/xrpc/com.atproto.sync.subscribeRepos", cctx.String("relay-host"))
curs, err := cursorSvc.GetFirehoseCursor()
-
if err == nil { // reversed
+
if err != nil {
+
slog.Error("error getting firehose cursor", "err", err)
+
} else if curs > 0 {
url += fmt.Sprintf("?cursor=%d", curs)
}
+2 -12
cmd/monarch/census.go
···
"time"
"github.com/bluesky-social/indigo/api/atproto"
-
"github.com/bluesky-social/indigo/backfill"
+
backfill "github.com/bluesky-social/indigo/backfill/next"
"github.com/bluesky-social/indigo/xrpc"
"github.com/urfave/cli/v2"
"golang.org/x/sync/semaphore"
···
seenHosts map[string]bool
}
-
type jobMaker interface {
-
GetOrCreateJob(context.Context, string, string) (backfill.Job, error)
-
}
-
func NewCensusService(cursorSvc *CursorService, backfillSvc *backfill.Backfiller) *CensusService {
return &CensusService{
cursor: cursorSvc,
···
Host: "https://" + host,
}
-
jmstore, ok := cs.backfill.Store.(jobMaker)
-
if !ok {
-
slog.Error("configured job store doesn't support random job creation")
-
return
-
}
-
hcur, err := cs.cursor.GetHostCursor(host)
if err != nil {
slog.Error("error fetching host cursor", "err", err)
···
}
for _, repo := range res.Repos {
-
_, err := jmstore.GetOrCreateJob(ctx, repo.Did, backfill.StateEnqueued)
+
err := cs.backfill.EnqueueJob(ctx, host, repo.Did)
if err != nil {
slog.Error("error adding repo to backfiller", "err", err)
} else {
+14 -13
go.mod
···
toolchain go1.24.5
require (
-
github.com/bluesky-social/indigo v0.0.0-20250808182429-6f0837c2d12b
+
github.com/bluesky-social/indigo v0.0.0-20250706015339-f9e61880249d
github.com/gorilla/websocket v1.5.1
github.com/ipfs/go-cid v0.4.1
github.com/urfave/cli/v2 v2.25.7
-
golang.org/x/sync v0.7.0
+
golang.org/x/sync v0.15.0
gorm.io/gorm v1.25.9
)
···
github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
-
github.com/go-logr/logr v1.4.1 // indirect
+
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/goccy/go-json v0.10.2 // indirect
github.com/gocql/gocql v1.7.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/snappy v0.0.4 // indirect
-
github.com/google/uuid v1.4.0 // indirect
+
github.com/google/uuid v1.6.0 // indirect
github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-retryablehttp v0.7.5 // indirect
···
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
github.com/jackc/pgx/v5 v5.5.0 // indirect
-
github.com/jackc/puddle/v2 v2.2.1 // indirect
+
github.com/jackc/puddle/v2 v2.2.2 // indirect
github.com/jbenet/goprocess v0.1.4 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
···
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b // indirect
gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect
+
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect
-
go.opentelemetry.io/otel v1.21.0 // indirect
-
go.opentelemetry.io/otel/metric v1.21.0 // indirect
-
go.opentelemetry.io/otel/trace v1.21.0 // indirect
+
go.opentelemetry.io/otel v1.36.0 // indirect
+
go.opentelemetry.io/otel/metric v1.36.0 // indirect
+
go.opentelemetry.io/otel/trace v1.36.0 // indirect
go.uber.org/atomic v1.11.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
-
go.uber.org/zap v1.26.0 // indirect
-
golang.org/x/crypto v0.21.0 // indirect
-
golang.org/x/net v0.23.0 // indirect
-
golang.org/x/sys v0.22.0 // indirect
-
golang.org/x/text v0.14.0 // indirect
+
go.uber.org/zap v1.27.0 // indirect
+
golang.org/x/crypto v0.33.0 // indirect
+
golang.org/x/net v0.35.0 // indirect
+
golang.org/x/sys v0.33.0 // indirect
+
golang.org/x/text v0.22.0 // indirect
golang.org/x/time v0.3.0 // indirect
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
google.golang.org/protobuf v1.33.0 // indirect