This commit introduces several major performance improvements and adds robust error handling for malformed HTTP requests: Performance Optimizations: - Add database migration with BRIN indexes for time-series data and partial indexes for recent queries, significantly improving query performance - Create global StreamingPacketsPubSub system for real-time packet distribution with geographic bounds filtering using ETS for fast lookups - Refactor PacketConsumer to use Stream module for memory-efficient processing, preventing memory accumulation during batch operations - Implement dedicated BroadcastTaskSupervisor pool for async broadcast operations, preventing GenServer blocking on I/O - Increase database connection pool from 25 to 45 (production) and 15 to 30 (dev) for better concurrency support Error Handling: - Add SentryFilter to prevent Bandit.HTTPError from missing Host headers from cluttering Sentry (common with bots/scanners) - Configure custom 400 Bad Request error handling - Filter out common bot/scanner paths from error reporting All changes include comprehensive test coverage following TDD practices. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
24 lines
656 B
Elixir
24 lines
656 B
Elixir
defmodule AprsmeWeb.ErrorHTML do
|
|
@moduledoc false
|
|
use AprsmeWeb, :html
|
|
|
|
# If you want to customize your error pages,
|
|
# uncomment the embed_templates/1 call below
|
|
# and add pages to the error directory:
|
|
#
|
|
# * lib/aprs_web/controllers/error/404.html.heex
|
|
# * lib/aprs_web/controllers/error/500.html.heex
|
|
#
|
|
# embed_templates "error/*"
|
|
|
|
# The default is to render a plain text page based on
|
|
# the template name. For example, "404.html" becomes
|
|
# "Not Found".
|
|
def render("400.html", _assigns) do
|
|
"Bad Request"
|
|
end
|
|
|
|
def render(template, _assigns) do
|
|
Phoenix.Controller.status_message_from_template(template)
|
|
end
|
|
end
|