• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

OneBusAway / watchdog
76%
main: 76%

Build:
Build:
LAST BUILD BRANCH: fix/deduplicate-unmatched-stop-ids
DEFAULT BRANCH: main
Repo Added 18 Jan 2025 10:58PM UTC
Files 59
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH fix/deduplicate-unmatched-stop-ids
branch: SELECT
CHANGE BRANCH
x
  • No branch selected
  • Improve-config-loading
  • aaronbrethorst-patch-1
  • api-status-pannel
  • bugfix/handle-nil-response
  • cache
  • ci
  • ci/182-update-go-toolchain
  • dh2
  • docker
  • docker-ci
  • docker-ci-redux
  • docker-hub
  • docs
  • docs/watchdog-server-scoped-config
  • feat/158-unattributed-vehicle-reasons
  • feat/158-unattributed-vehicles-clean
  • feat/add-docker-compose-observability-stack
  • feat/all-dashboard-visualizations
  • feat/assignment-timeout-public-members
  • feat/automated-versioning
  • feat/exponential-backoff
  • feat/freshness-aware-metrics
  • feat/group-expired-issue-assignees
  • feat/gtfs-bounding-box-validation
  • feat/healthcheck-endpoint
  • feat/increase-test-coverage
  • feat/increase-test-coverage-2
  • feat/inject-version-via-build-args
  • feat/issue-100-vehicle-volume
  • feat/issue-105-stop-matching
  • feat/issue-97-dependency-latency
  • feat/issue-98-feed-expiration
  • feat/issue-99-agency-consistency
  • feat/metrics-dashboard-skeleton
  • feat/prometheus-alerting-rules
  • feat/skip-unchanged-static-feeds
  • feat/speed-anomaly-metrics
  • feat/static-gtfs-partial-refresh
  • feat/unmatched-stop-geo-clustering
  • feat/watchdog-server-info
  • feature/add-sentry-error-tracking
  • feature/docker-setup
  • feature/handle-auth-optional-in-gtfs-realtime
  • feature/matching-ratios-analysis
  • feature/vehicle-report-frequency
  • fix/148-config-reconciliation
  • fix/149-agency-mode-blank-agency-id-bbox
  • fix/150-post-141-cleanups
  • fix/161-freshness-gate-panels
  • fix/165-gtfs-rt-fetch-freshness
  • fix/Handle-GTFS-coordinate-precision
  • fix/agency-mode-blank-feed-bounding-box
  • fix/agency-mode-filtering
  • fix/context-cancellation-graceful-shutdown
  • fix/deduplicate-unmatched-stop-ids
  • fix/dockerfile
  • fix/metric-type-naming
  • fix/metrics
  • fix/per-agency-bounding-box
  • fix/per-agency-vehicle-metrics
  • fix/report-invalid-servers-once
  • fix/reuse-metrics-response
  • fix/survive-empty-remote-config
  • fix/timezone-aliases
  • fix/watchdog-production-environment-label
  • improve-test-coverage
  • main
  • makefile
  • merged-temp/observer-dashboard
  • metrics/latlong
  • oba-metrics-api
  • oom-investigation
  • perf/concurrent-metrics-collection
  • prod-errors
  • refactor/app-service-injection
  • refactor/create-cache-dir-if-not-exist
  • refactor/gtfs-static-in-memory
  • refactor/minimal-gtfs-models
  • refactor/move-utils
  • refactor/reuse-http-client-realtime-store
  • refactor/support-mutliple-servers
  • refactor/use-helpers
  • remove-unmatched-stop-locations-metric
  • security
  • test-ci-workflow-branch
  • test/integration
  • thread-safe-config
  • update/readme-dockerfile-config
  • ws/metrics-docs-0920-1015

18 Oct 2026 12:48PM UTC coverage: 76.43% (+0.03%) from 76.401%
39128930209

Pull #189

github

vishnums2k5
fix(metrics): deduplicate unmatched stop IDs when computing unresolved metric

When OneBusAway's /api/where/metrics.json endpoint reports unmatched stop IDs for an agency, entry.StopIDsUnmatched[agencyID] can contain duplicate stop IDs if multiple vehicles or trip updates encounter the same unmatched stop in an update cycle.

gtfs.GetStopLocationsByIDs indexes stops into a map keyed by stop ID, resolving each unique stop at most once. Previously, fetchObaAPIMetrics counted resolved stops from the returned map and calculated unresolved := len(unmatchedStopIDs) - resolved. When duplicate stop IDs were present, len(unmatchedStopIDs) was greater than the number of unique stops, causing unresolved > 0 even when all unique stops were successfully resolved against the GTFS bundle.

This resulted in false-positive oba_unmatched_stop_unresolved gauge metrics and false warning logs ("OBA unmatched stop IDs could not be resolved against the local GTFS bundle").

Deduplicate unmatchedStopIDs into unique IDs before resolving and computing the unresolved count. Add a unit test to verify duplicate unmatched stop IDs do not produce a non-zero unresolved metric.
Pull Request #189: fix(metrics): deduplicate unmatched stop IDs when computing unresolved metric

9 of 11 new or added lines in 1 file covered. (81.82%)

4384 of 5736 relevant lines covered (76.43%)

17106.72 hits per line

Relevant lines Covered
Build:
Build:
5736 RELEVANT LINES 4384 COVERED LINES
17106.72 HITS PER LINE
Source Files on main
  • Tree
  • List 59
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
39128930209 fix/deduplicate-unmatched-stop-ids fix(metrics): deduplicate unmatched stop IDs when computing unresolved metric When OneBusAway's /api/where/metrics.json endpoint reports unmatched stop IDs for an agency, entry.StopIDsUnmatched[agencyID] can contain duplicate stop IDs if multiple... Pull #189 18 Oct 2026 12:51PM UTC vishnums2k5 github
76.43
38792157268 feat/158-unattributed-vehicles-clean feat(metrics): break down unattributed vehicles by reason Pull #188 15 Oct 2026 07:15PM UTC soumadipcodeEnthusiast github
76.41
38788018041 perf/concurrent-metrics-collection docs(metrics): keep StartMetricsCollection doc attached to its func The bounded-concurrency vars and cycleTimeout were inserted between StartMetricsCollection and its doc comment, leaving it undocumented in godoc. Move them above the doc block; n... Pull #185 15 Oct 2026 06:46PM UTC sksingh2005 github
76.75
38785281772 main Merge pull request #184 from SurajSingh563/ci/182-update-go-toolchain ci: Use floating Go 1.27 toolchain push 15 Oct 2026 06:25PM UTC web-flow github
76.4
38784319474 perf/concurrent-metrics-collection docs(metrics): keep StartMetricsCollection doc attached to its func The bounded-concurrency vars and cycleTimeout were inserted between StartMetricsCollection and its doc comment, leaving it undocumented in godoc. Move them above the doc block; n... Pull #185 15 Oct 2026 06:18PM UTC sksingh2005 github
76.66
38783993489 perf/concurrent-metrics-collection docs(metrics): stop over-promising the cycle deadline headroom SDK calls (ping, vehicles-for-agency) retry twice by default, so one hanging step costs ~3x the per-request timeout, not 1x; multi-feed and many-agency chains can still exceed the 2x ... Pull #185 15 Oct 2026 06:16PM UTC sksingh2005 github
76.66
38777438804 feat/158-unattributed-vehicle-reasons feat(metrics): break down unattributed vehicles by reason Pull #187 15 Oct 2026 05:28PM UTC soumadipcodeEnthusiast github
76.33
38549175287 fix/161-freshness-gate-panels Gate current panels on source freshness Require recent successful source observations before showing current vehicle counts and per-feed speed values. Expose the latest OBA vehicles request outcome and preserve successful zero counts. The freshn... Pull #186 14 Oct 2026 10:24AM UTC SurajSingh563 github
76.48
38449271287 ci/182-update-go-toolchain ci: Use floating Go 1.27 toolchain Use check-latest to select the newest Go 1.27.x patch in CI. Fixes #182. Keep go.mod at Go 1.27.2 as the minimum; CI and the Docker builder follow the floating 1.27 minor to avoid stale stdlib vulnerability fi... Pull #184 13 Oct 2026 06:46PM UTC SurajSingh563 github
76.44
38447942255 ci/182-update-go-toolchain ci: Use floating Go 1.27 toolchain Fixes #182. Keep go.mod at Go 1.27.2 as the minimum, while CI and the Docker builder follow the latest 1.27 patch to avoid stale stdlib vulnerability findings. Pull #184 13 Oct 2026 06:37PM UTC SurajSingh563 github
76.4
See All Builds (373)
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc