Merge pull request #2600 from ripienaar/rollup_requires_purge

error when a stream requesting rollups deny purge
This commit is contained in:
R.I.Pienaar
2021-10-07 14:49:39 +02:00
committed by GitHub
2 changed files with 34 additions and 0 deletions

View File

@@ -9023,6 +9023,36 @@ func addStream(t *testing.T, nc *nats.Conn, cfg *StreamConfig) *StreamInfo {
return resp.StreamInfo
}
func TestJetStreamRollupsRequirePurge(t *testing.T) {
c := createJetStreamClusterExplicit(t, "JSC", 3)
defer c.shutdown()
nc, _ := jsClientConnect(t, c.randomServer())
defer nc.Close()
cfg := &StreamConfig{
Name: "SENSORS",
Storage: FileStorage,
Subjects: []string{"sensor.*.temp"},
MaxMsgsPer: 10,
AllowRollup: true,
DenyPurge: true,
Replicas: 2,
}
j, err := json.Marshal(cfg)
require_NoError(t, err)
resp, err := nc.Request(fmt.Sprintf(JSApiStreamCreateT, cfg.Name), j, time.Second)
require_NoError(t, err)
var cr JSApiStreamCreateResponse
err = json.Unmarshal(resp.Data, &cr)
require_NoError(t, err)
if cr.Error == nil || cr.Error.Description != "roll-ups require the purge permission" {
t.Fatalf("unexpected error: %v", cr.Error)
}
}
func TestJetStreamRollups(t *testing.T) {
c := createJetStreamClusterExplicit(t, "JSC", 3)
defer c.shutdown()

View File

@@ -839,6 +839,10 @@ func checkStreamCfg(config *StreamConfig) (StreamConfig, error) {
return StreamConfig{}, fmt.Errorf("duplicates window can not be larger then max age")
}
if cfg.DenyPurge && cfg.AllowRollup {
return StreamConfig{}, fmt.Errorf("roll-ups require the purge permission")
}
if len(cfg.Subjects) == 0 {
if cfg.Mirror == nil && len(cfg.Sources) == 0 {
cfg.Subjects = append(cfg.Subjects, cfg.Name)