Files
seaweedfs/weed/command
Chris Lu ccc0a20dbf fix: prevent gRPC port collisions during multi-service fallback allocation
Critical fix for gRPC port allocation safety across multiple services:

Problem: When multiple services need gRPC port fallback allocation in sequence
(e.g., Master gRPC unavailable → finds alternative, then Filer gRPC unavailable
→ searches from calculated port), there was no tracking of previously allocated
gRPC ports. This could allow two services to claim the same port.

Scenario that is now prevented:
- Master gRPC: calculated 19333 unavailable → finds 19334 → assigns 19334
- Filer gRPC: calculated 18888 unavailable → searches from 18889, might land on
  19334 if consecutive ports in range are unavailable (especially with custom
  port configurations or in high-port-contention environments)

Solution:
- Add allocatedGrpcPorts map to track gRPC ports allocated within the function
- Check allocatedGrpcPorts before using calculated port for each service
- Pass allocatedGrpcPorts to findAvailablePortOnIP when finding fallback ports
- Add allocatedGrpcPorts[port] = true after each successful allocation
- This ensures no two services can allocate the same gRPC port

The fix handles both:
1. Calculated gRPC ports (when grpcPort == 0)
2. Explicitly set gRPC ports (when user provides -service.port.grpc value)

While default port spacing makes collision unlikely, this fix is essential for:
- Custom port configurations
- High-contention environments
- Edge cases with many unavailable consecutive ports
- Correctness and safety guarantees
2025-12-22 00:15:33 -08:00
..
2025-10-27 23:04:55 -07:00
2025-09-09 01:01:03 -07:00
2021-09-01 02:45:42 -07:00
2025-10-13 18:05:17 -07:00
2025-12-14 16:02:06 -08:00
2025-03-29 21:12:06 -07:00
2022-02-27 03:03:19 -08:00
2022-08-31 23:16:05 -07:00
2025-10-13 18:05:17 -07:00
2025-07-02 18:03:17 -07:00
2024-07-16 09:15:55 -07:00
2025-10-13 18:05:17 -07:00
2025-03-29 21:12:06 -07:00
2025-06-03 22:50:45 -07:00
2025-06-26 11:09:17 -07:00