Skip to content

Commit 270a14b

Browse files
authored
Merge pull request #97 from nats-io/consumer_limits
Require inactive and max ack pending to be set on streams with limits
2 parents 7076b61 + a25ab8e commit 270a14b

File tree

3 files changed

+36
-12
lines changed

3 files changed

+36
-12
lines changed

go.mod

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ go 1.20
55
require (
66
github.com/google/go-cmp v0.5.9
77
github.com/hashicorp/terraform-plugin-sdk v1.17.2
8-
github.com/nats-io/jsm.go v0.0.36-0.20230919135355-c609acc39d33
8+
github.com/nats-io/jsm.go v0.1.1-0.20230921074448-1bbb5650afc8
99
github.com/nats-io/jwt/v2 v2.5.2
10-
github.com/nats-io/nats-server/v2 v2.9.23-0.20230918205325-3dc06278119c
11-
github.com/nats-io/nats.go v1.29.0
10+
github.com/nats-io/nats-server/v2 v2.10.1
11+
github.com/nats-io/nats.go v1.30.0
1212
github.com/xeipuuv/gojsonschema v1.2.0
1313
)
1414

@@ -21,7 +21,7 @@ require (
2121
github.com/Masterminds/semver v1.5.0 // indirect
2222
github.com/Masterminds/sprig v2.22.0+incompatible // indirect
2323
github.com/agext/levenshtein v1.2.2 // indirect
24-
github.com/antonmedv/expr v1.15.2 // indirect
24+
github.com/antonmedv/expr v1.15.3 // indirect
2525
github.com/apparentlymart/go-cidr v1.1.0 // indirect
2626
github.com/apparentlymart/go-textseg/v12 v12.0.0 // indirect
2727
github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect

go.sum

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,8 @@ github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/g
200200
github.com/andybalholm/crlf v0.0.0-20171020200849-670099aa064f/go.mod h1:k8feO4+kXDxro6ErPXBRTJ/ro2mf0SsFG8s7doP9kJE=
201201
github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
202202
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
203-
github.com/antonmedv/expr v1.15.2 h1:afFXpDWIC2n3bF+kTZE1JvFo+c34uaM3sTqh8z0xfdU=
204-
github.com/antonmedv/expr v1.15.2/go.mod h1:0E/6TxnOlRNp81GMzX9QfDPAmHo2Phg00y4JUv1ihsE=
203+
github.com/antonmedv/expr v1.15.3 h1:q3hOJZNvLvhqE8OHBs1cFRdbXFNKuA+bHmRaI+AmRmI=
204+
github.com/antonmedv/expr v1.15.3/go.mod h1:0E/6TxnOlRNp81GMzX9QfDPAmHo2Phg00y4JUv1ihsE=
205205
github.com/apparentlymart/go-cidr v1.1.0 h1:2mAhrMoF+nhXqxTzSZMUzDHkLjmIHC+Zzn4tdgBZjnU=
206206
github.com/apparentlymart/go-cidr v1.1.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc=
207207
github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
@@ -494,14 +494,14 @@ github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh
494494
github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
495495
github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE=
496496
github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
497-
github.com/nats-io/jsm.go v0.0.36-0.20230919135355-c609acc39d33 h1:Ixd98B8Pq0dUxi++ENmZFxDeTBsfG3lbSkaaiDVV6So=
498-
github.com/nats-io/jsm.go v0.0.36-0.20230919135355-c609acc39d33/go.mod h1:/lp3tYWC8DYa7XLxRICA57igfAYquPXEcZvCQ5L3zSk=
497+
github.com/nats-io/jsm.go v0.1.1-0.20230921074448-1bbb5650afc8 h1:OKm9e1//rlcl4i9zXQ6QQxj7DJaeL+Oe8WBgAKO4cqI=
498+
github.com/nats-io/jsm.go v0.1.1-0.20230921074448-1bbb5650afc8/go.mod h1:hB4Qd+IKoRvAAWTOI1HkCy4wotjFwOIT+codHCFOZqk=
499499
github.com/nats-io/jwt/v2 v2.5.2 h1:DhGH+nKt+wIkDxM6qnVSKjokq5t59AZV5HRcFW0zJwU=
500500
github.com/nats-io/jwt/v2 v2.5.2/go.mod h1:24BeQtRwxRV8ruvC4CojXlx/WQ/VjuwlYiH+vu/+ibI=
501-
github.com/nats-io/nats-server/v2 v2.9.23-0.20230918205325-3dc06278119c h1:yHb64vNSinDkZbBQRpoKR4cfTuAR57uJ9qW93oQCdbM=
502-
github.com/nats-io/nats-server/v2 v2.9.23-0.20230918205325-3dc06278119c/go.mod h1:3PMvMSu2cuK0J9YInRLWdFpFsswKKGUS77zVSAudRto=
503-
github.com/nats-io/nats.go v1.29.0 h1:dSXZ+SZeGyTdHVYeXimeq12FsIpb9dM8CJ2IZFiHcyE=
504-
github.com/nats-io/nats.go v1.29.0/go.mod h1:XpbWUlOElGwTYbMR7imivs7jJj9GtK7ypv321Wp6pjc=
501+
github.com/nats-io/nats-server/v2 v2.10.1 h1:MIJ614dhOIdo71iSzY8ln78miXwrYvlvXHUyS+XdKZQ=
502+
github.com/nats-io/nats-server/v2 v2.10.1/go.mod h1:3PMvMSu2cuK0J9YInRLWdFpFsswKKGUS77zVSAudRto=
503+
github.com/nats-io/nats.go v1.30.0 h1:bj/rVsRCrFXxmm9mJiDhb74UKl2HhKpDwKRBtvCjZjc=
504+
github.com/nats-io/nats.go v1.30.0/go.mod h1:dcfhUgmQNN4GJEfIb2f9R7Fow+gzBF4emzDHrVBd5qM=
505505
github.com/nats-io/nkeys v0.4.5 h1:Zdz2BUlFm4fJlierwvGK+yl20IAKUm7eV6AAZXEhkPk=
506506
github.com/nats-io/nkeys v0.4.5/go.mod h1:XUkxdLPTufzlihbamfzQ7mw/VGx6ObUs+0bN5sNvt64=
507507
github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=

jetstream/resource_jetstream_consumer.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,25 @@ func resourceConsumerUpdate(d *schema.ResourceData, m any) error {
419419
return resourceConsumerRead(d, m)
420420
}
421421

422+
func checkConsumerOnLimitsStream(mgr *jsm.Manager, streamName string, cfg *api.ConsumerConfig) error {
423+
stream, err := mgr.LoadStream(streamName)
424+
if err != nil {
425+
return err
426+
}
427+
428+
if stream.ConsumerLimits().InactiveThreshold > 0 || stream.ConsumerLimits().MaxAckPending > 0 {
429+
if cfg.InactiveThreshold == 0 {
430+
return fmt.Errorf("inactive_threshold is required on streams with consumer limits set")
431+
}
432+
433+
if cfg.MaxAckPending == 0 {
434+
return fmt.Errorf("inactive_threshold is required on streams with consumer limits set")
435+
}
436+
}
437+
438+
return nil
439+
}
440+
422441
func resourceConsumerCreate(d *schema.ResourceData, m any) error {
423442
cfg, err := consumerConfigFromResourceData(d)
424443
if err != nil {
@@ -436,6 +455,11 @@ func resourceConsumerCreate(d *schema.ResourceData, m any) error {
436455
}
437456
defer nc.Close()
438457

458+
err = checkConsumerOnLimitsStream(mgr, stream, &cfg)
459+
if err != nil {
460+
return err
461+
}
462+
439463
_, err = mgr.NewConsumerFromDefault(stream, cfg)
440464
if err != nil {
441465
return err

0 commit comments

Comments
 (0)