Merge pull request #12277 from hashicorp/dnephin/panic-in-service-register
catalog: initialize the refs map to prevent a nil panic
This commit is contained in:
commit
db4675bd1a
|
@ -0,0 +1,3 @@
|
|||
```release-note:bug
|
||||
config-entry: fix a panic when creating an ingress gateway config-entry and a proxy service instance, where both provided the same upstream and downstream mapping.
|
||||
```
|
|
@ -4016,6 +4016,7 @@ func insertGatewayServiceTopologyMapping(tx WriteTxn, idx uint64, gs *structs.Ga
|
|||
mapping := upstreamDownstream{
|
||||
Upstream: gs.Service,
|
||||
Downstream: gs.Gateway,
|
||||
Refs: make(map[string]struct{}),
|
||||
RaftIndex: gs.RaftIndex,
|
||||
}
|
||||
if err := tx.Insert(tableMeshTopology, &mapping); err != nil {
|
||||
|
|
|
@ -5977,6 +5977,40 @@ func setupIngressState(t *testing.T, s *Store) memdb.WatchSet {
|
|||
return ws
|
||||
}
|
||||
|
||||
func TestStore_EnsureService_DoesNotPanicOnIngressGateway(t *testing.T) {
|
||||
store := NewStateStore(nil)
|
||||
|
||||
err := store.EnsureConfigEntry(1, &structs.IngressGatewayConfigEntry{
|
||||
Kind: structs.IngressGateway,
|
||||
Name: "the-ingress",
|
||||
Listeners: []structs.IngressListener{
|
||||
{
|
||||
Port: 12345,
|
||||
Protocol: "tcp",
|
||||
Services: []structs.IngressService{{Name: "the-service"}},
|
||||
},
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
err = store.EnsureRegistration(2, &structs.RegisterRequest{
|
||||
Node: "the-node",
|
||||
Service: &structs.NodeService{
|
||||
Kind: structs.ServiceKindConnectProxy,
|
||||
Service: "the-proxy",
|
||||
Proxy: structs.ConnectProxyConfig{
|
||||
DestinationServiceName: "the-ingress",
|
||||
Upstreams: []structs.Upstream{
|
||||
{
|
||||
DestinationName: "the-service",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestStateStore_DumpGatewayServices(t *testing.T) {
|
||||
s := testStateStore(t)
|
||||
|
||||
|
|
Loading…
Reference in New Issue