Commit graph

67 commits

Author SHA1 Message Date
f1d16d656b
Fix packet buffer overflow by reverting dynamic batch sizing
- Increased packet buffer size from 1,000 to 10,000 to handle traffic spikes
- Removed InsertOptimizer dynamic batch sizing that was slowing processing
- Reverted to fixed batch size of 200 for consistent performance
- Simplified insert options to use static configuration
- Added telemetry metrics for buffer overflow and utilization monitoring
- Fixed unused variable warning in packet_consumer.ex

The root cause was the recent performance optimizations that introduced
dynamic batch sizing, which actually degraded performance and caused
the producer buffer to overflow when the consumer couldn't keep up.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 08:25:02 -05:00
8811298eed
Fix packet buffer overflow and system load adjustment issues
- Fixed InsertOptimizer returning map instead of keyword list for Ecto
- Increased batch size ranges to handle high load (100-800 packets)
- Improved consumer responsiveness:
  - Reduced batch timeout from 1000ms to 500ms
  - Process batches at 80% capacity for better throughput
  - Reduced adjustment interval from 10s to 5s
- Added comprehensive logging for debugging buffer status
- Created integration tests for packet pipeline
- Coordinated batch sizing between SystemMonitor and InsertOptimizer

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 08:16:11 -05:00
53206978df
improvements 2025-07-14 17:06:39 -05:00
8e507702f7
more performance improvements/cleanup 2025-07-14 16:49:55 -05:00
3730b8c848
performance improvements 2025-07-14 16:35:58 -05:00
342de6a461
fix compile error 2025-07-14 12:44:14 -05:00
389ce8edeb
cleanup worker tweaks 2025-07-14 12:31:47 -05:00
e6ccb9662b
major refactor for cleanup 2025-07-14 12:06:10 -05:00
b065404803
Fix credo warnings and ensure clean compilation
- Renamed predicate functions to follow Elixir conventions:
  - is_finite? → finite?
  - is_finite_number? → finite_number?
  - is_finite_float? → finite_float?
- Fixed all function returns to ensure proper nil handling
- Applied mix format to all files
- All tests pass with no compilation warnings

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 10:25:01 -05:00
94f3a62539
Add comprehensive input sanitization for coordinate parsing
Security improvements:
- Added sanitize_numeric_string to remove dangerous characters
- Limited input string length to prevent DoS attacks (20 chars for numbers)
- Added is_finite? checks to prevent infinity/NaN values
- Validate coordinate ranges (lat: -90 to 90, lng: -180 to 180)
- Added safe_parse_coordinate with proper validation
- Updated to_float in EncodingUtils with security validations
- Protected against integer overflow in coordinate conversions
- Added sanitize_path_string for APRS path validation

All coordinate inputs from users are now:
1. Sanitized to remove injection characters
2. Length-limited to prevent resource exhaustion
3. Validated for finite values (no infinity/NaN)
4. Checked against valid geographic ranges
5. Given safe fallback defaults

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 10:20:10 -05:00
766a1301e0
fix stations that heard call 2025-07-13 18:55:51 -05:00
610a5b8949
refactor 2025-07-13 16:49:20 -05:00
fa89712587
main map improvements 2025-07-13 14:58:13 -05:00
184ca52a8c
cleanup 2025-07-13 09:35:40 -05:00
4348d34f62
fix weather 2025-07-12 10:53:11 -05:00
c09f9175f4
add PHG parsing 2025-07-12 10:22:43 -05:00
ad88e34ab6
account for gps drift 2025-07-12 09:40:28 -05:00
15c8aa1d25
more permissive callsign parsing 2025-07-12 09:10:49 -05:00
d88adf4293
reduce caching 2025-07-11 14:42:01 -05:00
aaad32c683
geolocation fix 2025-07-11 13:34:54 -05:00
80602bf2a6
deploy to staging dokku fix 2025-07-11 13:12:52 -05:00
7da91f5ccb
fix some accidental weather decoded packets 2025-07-10 16:30:48 -05:00
38920e9f3d
add callsign to users 2025-07-10 16:07:05 -05:00
b1ee1f92f9
dont parse device identifiers on each insert 2025-07-10 15:16:01 -05:00
38f240b3eb
fix info/neighbor page loading 2025-07-10 14:43:00 -05:00
aaf92d9045
add heatmap on zoom out 2025-07-10 14:26:01 -05:00
d45aed256d
fix historical packet loading 2025-07-10 13:15:16 -05:00
48447ab42e
refactor and performance improvements 2025-07-10 10:53:34 -05:00
514d1b66d5
fix all the main map display issues 2025-07-09 16:20:29 -05:00
7318d2dfbc
Optimize viewport-based loading with zoom-aware batching
Key improvements:
- Fix spatial query order: Apply bounds filtering BEFORE limit/offset
- Add zoom-level based batch sizing (20-100 packets per batch)
- Dynamic batch count based on zoom level (2-5 batches)
- Faster loading delays for high zoom levels (25ms vs 50ms)
- Include zoom level in cache keys for better cache efficiency

Performance benefits:
- Zoomed in far (zoom 15+): 2 batches of 20 packets each
- Moderately zoomed (zoom 12-14): 3 batches of 35 packets each
- Medium zoom (zoom 8-11): 4 batches of 50 packets each
- Zoomed out (zoom <8): 5 batches of 75-100 packets each

This ensures packets are loaded from the current viewport first,
dramatically reducing load times when zoomed in.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-09 09:14:12 -05:00
1932f63b91
Implement progressive loading for historical packets to improve map performance
- Add progressive loading system that splits 200 packets into 4 batches of 50 each
- Implement client-side chunked rendering to prevent UI blocking
- Add caching layer using Aprsme.CachedQueries for better database performance
- Maintain proper chronological ordering for trail drawing
- Use LiveView's efficient update mechanisms for smooth user experience

Performance improvements:
- Faster initial load with immediate visual feedback
- Reduced memory pressure through smaller batch sizes
- Better caching with automatic cache invalidation
- Smooth, non-blocking UI updates using requestAnimationFrame

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-09 09:08:10 -05:00
711d92ebb6
performance improvements 2025-07-08 10:03:52 -05:00
9dd7ca8f56
fix parser version check 2025-07-07 14:54:52 -05:00
ba80e414d8
fix parser version check 2025-07-07 14:46:31 -05:00
9e63acc364
fix parser version check 2025-07-07 14:43:14 -05:00
2c8b594d59
fix parser version check 2025-07-07 14:24:47 -05:00
10159f7ba7
fix parser version check 2025-07-07 14:21:56 -05:00
6cebd03d7f
fix parser version check 2025-07-07 14:16:55 -05:00
82e582d645
fix parser version check 2025-07-07 14:12:56 -05:00
42bac34073
fix parser version check 2025-07-07 14:11:35 -05:00
da9d89a3a0
fix parser version check 2025-07-07 13:50:04 -05:00
c91f80e23f
parser hash fix 2025-07-07 13:07:32 -05:00
b2f9352091
parser hash fix 2025-07-07 13:02:49 -05:00
52311f52da
show sha1 hash of aprs parser 2025-07-07 12:57:28 -05:00
dd9dd7ce1d
improve status page 2025-07-07 12:20:03 -05:00
2543617f16
add sentry 2025-07-07 09:52:02 -05:00
524c8208c3
more i18n 2025-07-06 10:28:27 -05:00
fc449ed5f9
en español 2025-07-05 15:51:39 -05:00
1406ae97f0
performance improvements 2025-07-05 14:34:34 -05:00
172da7d393
upgrade more with modern phoenix 2025-07-05 08:04:06 -05:00