knotserver/jetstream: preserve last time_us even on err'd exit
Also reduces last time_us discard window down to 2 days.
Anirudh Oppiliappan 1 week ago 2 files (+16, -11)
MODIFIED
jetstream/jetstream.go
MODIFIED
jetstream/jetstream.go
@@ -141,9 +141,9 @@ }}// If last time is older than a week, start from now- if time.Now().UnixMicro()-lastTimeUs > 7*24*60*60*1000*1000 {+ if time.Now().UnixMicro()-lastTimeUs > 2*24*60*60*1000*1000 {lastTimeUs = time.Now().UnixMicro()- l.Warn("last time us is older than a week. discarding that and starting from now")+ l.Warn("last time us is older than 2 days; discarding that and starting from now")err = j.db.UpdateLastTimeUs(lastTimeUs)if err != nil {l.Error("failed to save last time us", "error", err)
MODIFIED
knotserver/jetstream.go
MODIFIED
knotserver/jetstream.go
@@ -29,7 +29,7 @@ l.Info("added public key from firehose", "did", did)return nil}-func (h *Handle) processKnotMember(ctx context.Context, did string, record tangled.KnotMember, eventTime int64) error {+func (h *Handle) processKnotMember(ctx context.Context, did string, record tangled.KnotMember) error {l := log.FromContext(ctx)if record.Domain != h.c.Server.Hostname {@@ -58,12 +58,6 @@ if err := h.fetchAndAddKeys(ctx, did); err != nil {return fmt.Errorf("failed to fetch and add keys: %w", err)}- lastTimeUs := eventTime + 1- fmt.Println("lastTimeUs", lastTimeUs)- if err := h.db.UpdateLastTimeUs(lastTimeUs); err != nil {- return fmt.Errorf("failed to save last time us: %w", err)- }- h.jc.UpdateDids([]string{did})return nil}@@ -116,6 +110,17 @@ if event.Kind != models.EventKindCommit {return nil}+ var err error+ defer func() {+ eventTime := event.TimeUS+ lastTimeUs := eventTime + 1+ fmt.Println("lastTimeUs", lastTimeUs)+ if err := h.db.UpdateLastTimeUs(lastTimeUs); err != nil {+ err = fmt.Errorf("(deferred) failed to save last time us: %w", err)+ }+ h.jc.UpdateDids([]string{did})+ }()+raw := json.RawMessage(event.Commit.Record)switch event.Commit.Collection {@@ -133,10 +138,10 @@ var record tangled.KnotMemberif err := json.Unmarshal(raw, &record); err != nil {return fmt.Errorf("failed to unmarshal record: %w", err)}- if err := h.processKnotMember(ctx, did, record, event.TimeUS); err != nil {+ if err := h.processKnotMember(ctx, did, record); err != nil {return fmt.Errorf("failed to process knot member: %w", err)}}- return nil+ return err}