···
func (h *Handle) StartJetstream(ctx context.Context) error {
30
-
l := h.l.With("component", "jetstream")
ctx = log.IntoContext(ctx, l)
collections := []string{tangled.PublicKeyNSID, tangled.KnotMemberNSID}
35
-
lastTimeUs, err := h.getLastTimeUs(ctx)
cfg := client.DefaultClientConfig()
cfg.WebsocketURL = "wss://jetstream1.us-west.bsky.network/subscribe"
cfg.WantedCollections = collections
···
56
+
lastTimeUs := h.getLastTimeUs(ctx)
for len(h.jc.cfg.WantedDids) == 0 {
···
74
-
l.Info("reconnecting jetstream client")
70
+
l.Info("(re)connecting jetstream client")
h.jc.client.Scheduler.Shutdown()
if err := h.jc.client.ConnectAndRead(ctx, cursor); err != nil {
l.Error("error reading jetstream", "error", err)
···
j.reconnectCh <- struct{}{}
94
-
func (h *Handle) getLastTimeUs(ctx context.Context) (int64, error) {
90
+
func (h *Handle) getLastTimeUs(ctx context.Context) int64 {
l := log.FromContext(ctx)
lastTimeUs, err := h.db.GetLastTimeUs()
98
-
l.Info("couldn't get last time us, starting from now")
94
+
l.Warn("couldn't get last time us, starting from now", "error", err)
lastTimeUs = time.Now().UnixMicro()
96
+
err = h.db.SaveLastTimeUs(lastTimeUs)
98
+
l.Error("failed to save last time us")
// If last time is older than a week, start from now
if time.Now().UnixMicro()-lastTimeUs > 7*24*60*60*1000*1000 {
lastTimeUs = time.Now().UnixMicro()
105
-
l.Info("last time us is older than a week. discarding that and starting from now")
105
+
l.Warn("last time us is older than a week. discarding that and starting from now")
err = h.db.SaveLastTimeUs(lastTimeUs)
l.Error("failed to save last time us")
···
l.Info("found last time_us", "time_us", lastTimeUs)
113
-
return lastTimeUs, nil
func (h *Handle) processPublicKey(ctx context.Context, did string, record tangled.PublicKey) error {