fix: queue-operator dropped reconcile namespace and overflowed hash-range status

main.go called Reconcile(ctx, req.Name) without req.Namespace, so the
Get against the namespaced Queue CRD always 404'd and was silently
swallowed as success -- no shard topics or Redis state were ever created.

Separately, ShardStatus.HashRangeStart/End were uint32, but controller-gen
maps that to OpenAPI format:int32, whose max (2147483647) is smaller than
FullHashRangeEnd (0xFFFFFFFF), so the apiserver rejected every status
update with the (misleadingly empty-looking) "must be of type integer with
format int32" error. Widened to int64, regenerated the CRD, and synced the
chart's bundled copy.
This commit is contained in:
riotpiaole
2026-06-22 12:23:23 -07:00
parent 173a4935ab
commit 9fa5420b22
7 changed files with 40 additions and 31 deletions
+6 -3
View File
@@ -102,9 +102,12 @@ type ShardStatus struct {
Topic string `json:"topic"`
// HashRangeStart/HashRangeEnd define the [start, end) murmur2 hash range
// this shard owns over the 32-bit key space.
HashRangeStart uint32 `json:"hashRangeStart"`
HashRangeEnd uint32 `json:"hashRangeEnd"`
// this shard owns over the 32-bit key space. Stored as int64 (not uint32)
// because controller-gen maps Go uint32 to OpenAPI format:int32, whose max
// (2147483647) is smaller than FullHashRangeEnd (0xFFFFFFFF) and the
// apiserver rejects the status update.
HashRangeStart int64 `json:"hashRangeStart"`
HashRangeEnd int64 `json:"hashRangeEnd"`
// Phase is this shard's lifecycle state.
// +kubebuilder:validation:Enum=Active;Closing;Closed