feat(jobs): add durable PG queue reclaim, slog, and richer metrics
JSON slog в ключевых пакетах; Prometheus path_group, job_audit_depth, upstream breaker; job_audit ClaimQueued/ReclaimStaleRunning + Adopt loop для HA после рестарта. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
@@ -2,7 +2,8 @@ package render
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"evobgp/internal/logging"
|
||||
"fmt"
|
||||
|
||||
"evobgp/internal/store"
|
||||
)
|
||||
@@ -13,7 +14,7 @@ func PublishLatestTenantRevision(ctx context.Context, st store.Backend) {
|
||||
_ = ctx
|
||||
tenants, err := st.ListTenantIDs()
|
||||
if err != nil {
|
||||
log.Printf("evobgp-render: list tenants: %v", err)
|
||||
logging.Default().Info(fmt.Sprintf("evobgp-render: list tenants: %v", err))
|
||||
return
|
||||
}
|
||||
for _, tid := range tenants {
|
||||
@@ -24,7 +25,7 @@ func PublishLatestTenantRevision(ctx context.Context, st store.Backend) {
|
||||
rid := revs[0].ID
|
||||
for _, sp := range st.ListSpeakersForTenant(tid) {
|
||||
if err := st.PublishRevisionForSpeaker(sp.ID, rid); err != nil {
|
||||
log.Printf("evobgp-render: publish speaker %s: %v", sp.ID, err)
|
||||
logging.Default().Info(fmt.Sprintf("evobgp-render: publish speaker %s: %v", sp.ID, err))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,8 @@ package render
|
||||
|
||||
import (
|
||||
"context"
|
||||
"evobgp/internal/logging"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"strings"
|
||||
@@ -28,14 +30,14 @@ func Run(ctx context.Context, deps *Deps) {
|
||||
defer t.Stop()
|
||||
auto := strings.TrimSpace(os.Getenv("EVOBGP_RENDER_AUTOPUBLISH")) == "1"
|
||||
if auto {
|
||||
log.Printf("evobgp-render: active (EVOBGP_RENDER_AUTOPUBLISH=1: publish head revision per tenant)")
|
||||
logging.Default().Info(fmt.Sprintf("evobgp-render: active (EVOBGP_RENDER_AUTOPUBLISH=1: publish head revision per tenant)"))
|
||||
} else {
|
||||
log.Printf("evobgp-render: active (idle publish; set EVOBGP_RENDER_AUTOPUBLISH=1 to auto-publish head revision)")
|
||||
logging.Default().Info(fmt.Sprintf("evobgp-render: active (idle publish; set EVOBGP_RENDER_AUTOPUBLISH=1 to auto-publish head revision)"))
|
||||
}
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
log.Printf("evobgp-render: stopped")
|
||||
logging.Default().Info(fmt.Sprintf("evobgp-render: stopped"))
|
||||
return
|
||||
case <-t.C:
|
||||
if auto {
|
||||
|
||||
Reference in New Issue
Block a user