Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

prepare 4.17.3 release #36

Merged
merged 477 commits into from
Jul 29, 2020
Merged

prepare 4.17.3 release #36

merged 477 commits into from
Jul 29, 2020

Conversation

LaunchDarklyCI
Copy link
Contributor

[4.17.3] - 2020-07-28

Added:

  • The SDK now recognizes a clientSideAvailability property which may be sent by LaunchDarkly services as an alternate way of indicating whether a flag is enabled for use by client-side JavaScript SDKs. This change does not introduce any new SDK functionality.

bwoskow-ld and others added 30 commits February 27, 2019 16:38
…events

add experimentation event overrides for rules and fallthrough
don't send identify or custom event without a user key
remove many vendored files using dep prune options
…t is made to be read-only (#142)

* apply readme/contributing templates and other changes before go-client is made to be read-only

* add note to the top of readme, undo issue template changes

* clean up contributing file
* change from go-client to go-server-sdk

* applying markdown templates

* absolute contributing url

* adding "server-side" to the title

* Update README.md
* remove codeclimate from circle build

* remove codeclimate from circle build

* trying to fix the broken build

* trying to fix the broken build
LaunchDarklyCI and others added 16 commits May 14, 2020 00:13
Results:
Running tool: /usr/local/go/bin/go test -benchmem -run=^$
gopkg.in/launchdarkly/go-server-sdk.v4 -bench
^(BenchmarkBoolVariation|BenchmarkIntVariation|BenchmarkStringVariation|BenchmarkJSONVariation)$

goos: linux
goarch: amd64
pkg: gopkg.in/launchdarkly/go-server-sdk.v4
BenchmarkBoolVariation/{numOrgs:1000_numFlags:1000_numVariations:2_numTargets:1_numRules:0_numClauses:0_prereqsWidth:0_prereqsDepth:0_operator:}-16
1273147           983 ns/op         572 B/op           3 allocs/op
BenchmarkBoolVariation/{numOrgs:10000_numFlags:10000_numVariations:2_numTargets:1_numRules:0_numClauses:0_prereqsWidth:0_prereqsDepth:0_operator:}-16
1484312           818 ns/op         558 B/op           3 allocs/op
BenchmarkBoolVariation/{numOrgs:10000_numFlags:10000_numVariations:2_numTargets:10_numRules:0_numClauses:0_prereqsWidth:0_prereqsDepth:0_operator:}-16
1499260           813 ns/op         557 B/op           3 allocs/op
BenchmarkBoolVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:0_prereqsDepth:0_operator:}-16
177571          6449 ns/op        4607 B/op          53 allocs/op
BenchmarkBoolVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:3_prereqsWidth:0_prereqsDepth:0_operator:}-16
93933         12237 ns/op        8619 B/op         103 allocs/op
BenchmarkBoolVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:5_numClauses:3_prereqsWidth:0_prereqsDepth:0_operator:}-16
94274         12184 ns/op        8605 B/op         103 allocs/op
BenchmarkBoolVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:5_prereqsDepth:1_operator:}-16
88407         13022 ns/op        9457 B/op         107 allocs/op
BenchmarkBoolVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:1_prereqsDepth:5_operator:}-16
86668         13218 ns/op        9463 B/op         107 allocs/op
BenchmarkBoolVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:1_numRules:0_numClauses:0_prereqsWidth:2_prereqsDepth:2_operator:}-16
665433          1781 ns/op        1363 B/op           7 allocs/op
BenchmarkBoolVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:5_prereqsDepth:5_operator:}-16
33022         34864 ns/op       28311 B/op         274 allocs/op
BenchmarkBoolVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:0_prereqsDepth:0_operator:greaterThan}-16
1000000          1197 ns/op         639 B/op           8 allocs/op
BenchmarkBoolVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:0_prereqsDepth:0_operator:contains}-16
1000000          1113 ns/op         623 B/op           5 allocs/op
BenchmarkBoolVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:0_prereqsDepth:0_operator:in}-16
976120          1202 ns/op         625 B/op           5 allocs/op
BenchmarkIntVariation/{numOrgs:1000_numFlags:1000_numVariations:2_numTargets:1_numRules:0_numClauses:0_prereqsWidth:0_prereqsDepth:0_operator:}-16
1402076           824 ns/op         563 B/op           3 allocs/op
BenchmarkIntVariation/{numOrgs:10000_numFlags:10000_numVariations:2_numTargets:1_numRules:0_numClauses:0_prereqsWidth:0_prereqsDepth:0_operator:}-16
1477999           811 ns/op         558 B/op           3 allocs/op
BenchmarkIntVariation/{numOrgs:10000_numFlags:10000_numVariations:2_numTargets:10_numRules:0_numClauses:0_prereqsWidth:0_prereqsDepth:0_operator:}-16
1496818           811 ns/op         557 B/op           3 allocs/op
BenchmarkIntVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:0_prereqsDepth:0_operator:}-16
175850          6456 ns/op        4609 B/op          53 allocs/op
BenchmarkIntVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:3_prereqsWidth:0_prereqsDepth:0_operator:}-16
94040         12243 ns/op        8610 B/op         103 allocs/op
BenchmarkIntVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:5_numClauses:3_prereqsWidth:0_prereqsDepth:0_operator:}-16
93117         12279 ns/op        8608 B/op         103 allocs/op
BenchmarkIntVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:5_prereqsDepth:1_operator:}-16
89034         13068 ns/op        9458 B/op         107 allocs/op
BenchmarkIntVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:1_prereqsDepth:5_operator:}-16
87375         13023 ns/op        9459 B/op         107 allocs/op
BenchmarkIntVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:1_numRules:0_numClauses:0_prereqsWidth:2_prereqsDepth:2_operator:}-16
683637          1807 ns/op        1359 B/op           7 allocs/op
BenchmarkIntVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:5_prereqsDepth:5_operator:}-16
33579         34788 ns/op       28307 B/op         274 allocs/op
BenchmarkIntVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:0_prereqsDepth:0_operator:greaterThan}-16
1000000          1182 ns/op         639 B/op           8 allocs/op
BenchmarkIntVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:0_prereqsDepth:0_operator:contains}-16
1000000          1105 ns/op         623 B/op           5 allocs/op
BenchmarkIntVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:0_prereqsDepth:0_operator:in}-16
984885          1194 ns/op         625 B/op           5 allocs/op
BenchmarkStringVariation/{numOrgs:1000_numFlags:1000_numVariations:2_numTargets:1_numRules:0_numClauses:0_prereqsWidth:0_prereqsDepth:0_operator:}-16
1326006           967 ns/op         600 B/op           5 allocs/op
BenchmarkStringVariation/{numOrgs:10000_numFlags:10000_numVariations:2_numTargets:1_numRules:0_numClauses:0_prereqsWidth:0_prereqsDepth:0_operator:}-16
1354795           946 ns/op         598 B/op           5 allocs/op
BenchmarkStringVariation/{numOrgs:10000_numFlags:10000_numVariations:2_numTargets:10_numRules:0_numClauses:0_prereqsWidth:0_prereqsDepth:0_operator:}-16
1339611           859 ns/op         599 B/op           5 allocs/op
BenchmarkStringVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:0_prereqsDepth:0_operator:}-16
174958          6494 ns/op        4619 B/op          55 allocs/op
BenchmarkStringVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:3_prereqsWidth:0_prereqsDepth:0_operator:}-16
95642         12069 ns/op        8637 B/op         105 allocs/op
BenchmarkStringVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:5_numClauses:3_prereqsWidth:0_prereqsDepth:0_operator:}-16
96768         12100 ns/op        8634 B/op         105 allocs/op
BenchmarkStringVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:5_prereqsDepth:1_operator:}-16
91254         13091 ns/op        9492 B/op         110 allocs/op
BenchmarkStringVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:1_prereqsDepth:5_operator:}-16
90015         13126 ns/op        9497 B/op         110 allocs/op
BenchmarkStringVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:1_numRules:0_numClauses:0_prereqsWidth:2_prereqsDepth:2_operator:}-16
639720          1918 ns/op        1418 B/op          10 allocs/op
BenchmarkStringVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:5_prereqsDepth:5_operator:}-16
34008         34831 ns/op       28397 B/op         280 allocs/op
BenchmarkStringVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:0_prereqsDepth:0_operator:greaterThan}-16
935094          1248 ns/op         677 B/op          10 allocs/op
BenchmarkStringVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:0_prereqsDepth:0_operator:contains}-16
1000000          1170 ns/op         655 B/op           7 allocs/op
BenchmarkStringVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:0_prereqsDepth:0_operator:in}-16
928885          1276 ns/op         662 B/op           7 allocs/op
BenchmarkJSONVariation/{numOrgs:1000_numFlags:1000_numVariations:2_numTargets:1_numRules:0_numClauses:0_prereqsWidth:0_prereqsDepth:0_operator:}-16
1000000          1006 ns/op         655 B/op           7 allocs/op
BenchmarkJSONVariation/{numOrgs:10000_numFlags:10000_numVariations:2_numTargets:1_numRules:0_numClauses:0_prereqsWidth:0_prereqsDepth:0_operator:}-16
1000000          1037 ns/op         655 B/op           7 allocs/op
BenchmarkJSONVariation/{numOrgs:10000_numFlags:10000_numVariations:2_numTargets:10_numRules:0_numClauses:0_prereqsWidth:0_prereqsDepth:0_operator:}-16
1000000          1648 ns/op         655 B/op           7 allocs/op
BenchmarkJSONVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:0_prereqsDepth:0_operator:}-16
174028          6570 ns/op        4682 B/op          57 allocs/op
BenchmarkJSONVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:3_prereqsWidth:0_prereqsDepth:0_operator:}-16
95949         11959 ns/op        8698 B/op         107 allocs/op
BenchmarkJSONVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:5_numClauses:3_prereqsWidth:0_prereqsDepth:0_operator:}-16
96314         12036 ns/op        8694 B/op         107 allocs/op
BenchmarkJSONVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:5_prereqsDepth:1_operator:}-16
90968         13083 ns/op        9589 B/op         113 allocs/op
BenchmarkJSONVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:1_prereqsDepth:5_operator:}-16
89406         13151 ns/op        9590 B/op         113 allocs/op
BenchmarkJSONVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:1_numRules:0_numClauses:0_prereqsWidth:2_prereqsDepth:2_operator:}-16
595975          2087 ns/op        1526 B/op          13 allocs/op
BenchmarkJSONVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:5_prereqsDepth:5_operator:}-16
33800         35252 ns/op       28588 B/op         286 allocs/op
BenchmarkJSONVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:0_prereqsDepth:0_operator:greaterThan}-16
875638          1350 ns/op         727 B/op          12 allocs/op
BenchmarkJSONVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:0_prereqsDepth:0_operator:contains}-16
929407          1303 ns/op         726 B/op           9 allocs/op
BenchmarkJSONVariation/{numOrgs:10000_numFlags:1000_numVariations:2_numTargets:0_numRules:1_numClauses:1_prereqsWidth:0_prereqsDepth:0_operator:in}-16
876115          1336 ns/op         711 B/op           9 allocs/op
PASS
ok      gopkg.in/launchdarkly/go-server-sdk.v4    76.267s
@eli-darkly eli-darkly requested a review from bwoskow-ld July 29, 2020 01:38
@LaunchDarklyCI LaunchDarklyCI merged commit cfd234a into v4 Jul 29, 2020
@LaunchDarklyCI LaunchDarklyCI deleted the release-4.17.3 branch July 29, 2020 23:26
LaunchDarklyReleaseBot added a commit that referenced this pull request Mar 23, 2022
* add script to parse coverage profile and flag uncovered code

* include coverage profile in artifacts

* better output

* revert addition of analysis script

* rm obsolete message

* more coverage improvements, misc code cleanup

* use new coverage tool

* rm unused

* fix to capture HTML coverage reports

* exclude sharedtest package from coverage

* misc makefile improvements

* fill in test coverage for everything except StreamProcessor and databases; move some things to internal

* can't rely on a specific error message due to platform differences

* fix flaky test

* full test coverage of database integrations

* lint

* add godoc badge

* formatting

* formatting

* better badge

* minor CI cleanup: use newer images, drop Go 1.12 build (#239)

* make the SDK a module

* go mod tidy

* fix bug where nil references are passed to persistent stores (#241)

* remove support for indirect patch in stream

* (5.0) complete test coverage for StreamProcessor

* turn on coverage enforcement

* fix logic for disabling db packages in coverage

* move some internal code around for clearer organization

* make sharedtest package internal, put public test helpers in new package

* DRY

* comment about data store tests

* use latest public go-sdk-common, go-sdk-events, go-server-sdk-evaluation

* remove unused polling logic for indirect/patch

* update go-server-sdk-evaluation for data model changes

* rm unnecessary type aliases that broke tests

* fix test that used an overly sensitive equality test for a flag without variations

* another test issue just like the previous commit

* move more test helpers + misc fixes

* test coverage

* move data store test suite to subpackage

* (5.0) fix bug in deleted item serialization

* more test coverage

* (5.0) interface cleanup: move data store types out of the way

* dependency fixes

* (5.0 - #7) updates for go-sdk-events API changes (#251)

* (5.0) miscellaneous doc comment improvements

* fix remaining godoc.org links

* custom badge for pkg.go.dev

* fix go.dev badge

* add API docs link under Learn More

* update dependencies

* use test sandboxing to validate persistent store test failure modes

* lint (use more general interface)

* (5.0) specify proxy URL as a string

* fix test

* fix test

* fix another test

* 5.0.0-beta.1

* add client decorator that temporarily disables events

* add scoped evaluation without events

* remove all database subpackages (being moved to separate projects) (#256)

* bump dependency versions and use ldlogtest package

* lint

* code example

* move AllFlagsState-related types out of main package, add builder

* rm obsolete references to HTTPOptions setter

* minor Makefile fix

* add clientSideAvailability to flag model

* prepare 4.17.3 release (#36)

* Releasing version 4.17.3

* (v5) use new client-side availability fields (#262)

* ensure SDK non-test code has no module-only dependencies (#263)

* 5.0.0-beta.6

* update redis repo name in comments

* use optional int type

* misc cleanup

* update dependencies

* add Go 1.15 CI job, use newer CircleCI images

* typo

* fix CI working directory

* fix CI syntax

* update readme to mention Go 1.15

* drop Go 1.13 build

* use go-server-sdk-evaluation 1.0.0-beta.5

* (#2) add test data source (#266)

* logging fixes/standardization

* use non-beta packages, remove prerelease info

* update release metadata

* make Releaser create release tags with and without the "v" prefix

* update to go-server-sdk-evaluation 1.0.1 for "less omitempty in flag JSON" fix (#272)

* fix comment typos

* serialize deleted item placeholders with full set of properties (#274)

* update go-sdk-common to 2.0.1

* bump eventsource to 1.6.2 for ch95617 logging fix (#275)

* use new jsonstream API (#277)

* don't require path property in put event

* update alpha dependencies

* update for go-jsonstream API changes

* build in Windows with Go 1.14

* bump go-sdk-common version to get user JSON parsing fix

* remove excessive logging in ldfilewatch, add log message for reloading file

* fail fast if SDK key has invalid characters, don't log the key

* bump go-server-sdk-evaluation to get semver parsing fix

* remove spurious logging of stream data

* merge in alias event support

* Removed the guides link

* update to go-server-sdk-evaluation 1.1.2 for ch100737 fix

* (#1) add unbounded segments interfaces, status provider, test suite (#288)

* add unbounded segments interfaces, status provider, test suite

* lint

* add package comment

* better component organization

* rename cache time to poll interval, improve tests

* rename segment keys to segment refs in unbounded segments API

* fix naming some more

* (#2) simplify(?) broadcasters using reflection (#289)

* (#3) misc cleanup of data store test suites (#290)

* (#4) finish adding support for big ("unbounded") segment in evaluations (#291)

* (#5) change "unbounded segments" to "big segments" + use latest prerelease packages (#293)

* fix segment ref string format in tests, update evaluator version

* Point at exp-alloc feature branch of -common and -evaluation (#297)

This just repoints the Go SDK at the exp-alloc feature branch of the go-sdk-common-private and go-server-sdk-evaluation-private repos.

* expose big segment store wrapper component for reuse by Relay

* lint

* add DuplicateKeysHandling option to ldfiledata (#299)

* use latest prerelease tags of go-sdk-common, go-server-sdk-evaluation

* use prerelease tags of go-sdk-common and go-server-sdk-evaluation

* update dependencies for JSON number parsing bugfix

* use go-sdk-common 2.3.0, go-server-sdk-evaluation 1.3.0

* add big segments control methods for use by Relay

* rm unused

* update go-server-sdk-evaluation to 1.4.1 for big segments bugfix

* use Releaser v2 config, add Go 1.16 CI

* rename big segments to Big Segments

* remove "non-module-build" CI test which can no longer be run

* add CI job for Go 1.17; update linter & test coverage script

* Update pull request template to correct CONTRIBUTING.md link

* Remove reference to dep in CONTRIBUTING.md (#310)

* SC-128558: Allow users to set custom headers on requests (#308)

* Add ability to set custom headers via Headers method

* better tests for simple proxy configuration (#311)

* update evaluation engine to fix circular prereqs issue, add more eval error logging

* add ServiceEndpoints to configuration API (#314)

* fix setting of trackEvents/trackReason in AllFlagsState data when there's an experiment (#315)

* Go SDK test service for use with the SDK test harness (#312)

* fix AllFlagsState DetailsOnlyForTrackedFlags behavior

* fix reason logic

* enable big segments contract tests (#317)

* implement tags

* update doc comments to match latest spec

* more doc comment updates

Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <LaunchDarklyCI@users.noreply.github.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Harpo Roeder <hroeder@launchdarkly.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Casey Waldren <cwaldren@launchdarkly.com>
LaunchDarklyReleaseBot added a commit that referenced this pull request Jul 6, 2022
* add godoc badge

* formatting

* formatting

* better badge

* minor CI cleanup: use newer images, drop Go 1.12 build (#239)

* make the SDK a module

* go mod tidy

* fix bug where nil references are passed to persistent stores (#241)

* remove support for indirect patch in stream

* (5.0) complete test coverage for StreamProcessor

* turn on coverage enforcement

* fix logic for disabling db packages in coverage

* move some internal code around for clearer organization

* make sharedtest package internal, put public test helpers in new package

* DRY

* comment about data store tests

* use latest public go-sdk-common, go-sdk-events, go-server-sdk-evaluation

* remove unused polling logic for indirect/patch

* update go-server-sdk-evaluation for data model changes

* rm unnecessary type aliases that broke tests

* fix test that used an overly sensitive equality test for a flag without variations

* another test issue just like the previous commit

* move more test helpers + misc fixes

* test coverage

* move data store test suite to subpackage

* (5.0) fix bug in deleted item serialization

* more test coverage

* (5.0) interface cleanup: move data store types out of the way

* dependency fixes

* (5.0 - #7) updates for go-sdk-events API changes (#251)

* (5.0) miscellaneous doc comment improvements

* fix remaining godoc.org links

* custom badge for pkg.go.dev

* fix go.dev badge

* add API docs link under Learn More

* update dependencies

* use test sandboxing to validate persistent store test failure modes

* lint (use more general interface)

* (5.0) specify proxy URL as a string

* fix test

* fix test

* fix another test

* 5.0.0-beta.1

* add client decorator that temporarily disables events

* add scoped evaluation without events

* remove all database subpackages (being moved to separate projects) (#256)

* bump dependency versions and use ldlogtest package

* lint

* code example

* move AllFlagsState-related types out of main package, add builder

* rm obsolete references to HTTPOptions setter

* minor Makefile fix

* add clientSideAvailability to flag model

* prepare 4.17.3 release (#36)

* Releasing version 4.17.3

* (v5) use new client-side availability fields (#262)

* ensure SDK non-test code has no module-only dependencies (#263)

* 5.0.0-beta.6

* update redis repo name in comments

* use optional int type

* misc cleanup

* update dependencies

* add Go 1.15 CI job, use newer CircleCI images

* typo

* fix CI working directory

* fix CI syntax

* update readme to mention Go 1.15

* drop Go 1.13 build

* use go-server-sdk-evaluation 1.0.0-beta.5

* (#2) add test data source (#266)

* logging fixes/standardization

* use non-beta packages, remove prerelease info

* update release metadata

* make Releaser create release tags with and without the "v" prefix

* update to go-server-sdk-evaluation 1.0.1 for "less omitempty in flag JSON" fix (#272)

* fix comment typos

* serialize deleted item placeholders with full set of properties (#274)

* update go-sdk-common to 2.0.1

* bump eventsource to 1.6.2 for ch95617 logging fix (#275)

* use new jsonstream API (#277)

* don't require path property in put event

* update alpha dependencies

* update for go-jsonstream API changes

* build in Windows with Go 1.14

* bump go-sdk-common version to get user JSON parsing fix

* remove excessive logging in ldfilewatch, add log message for reloading file

* fail fast if SDK key has invalid characters, don't log the key

* bump go-server-sdk-evaluation to get semver parsing fix

* remove spurious logging of stream data

* merge in alias event support

* Removed the guides link

* update to go-server-sdk-evaluation 1.1.2 for ch100737 fix

* (#1) add unbounded segments interfaces, status provider, test suite (#288)

* add unbounded segments interfaces, status provider, test suite

* lint

* add package comment

* better component organization

* rename cache time to poll interval, improve tests

* rename segment keys to segment refs in unbounded segments API

* fix naming some more

* (#2) simplify(?) broadcasters using reflection (#289)

* (#3) misc cleanup of data store test suites (#290)

* (#4) finish adding support for big ("unbounded") segment in evaluations (#291)

* (#5) change "unbounded segments" to "big segments" + use latest prerelease packages (#293)

* fix segment ref string format in tests, update evaluator version

* Point at exp-alloc feature branch of -common and -evaluation (#297)

This just repoints the Go SDK at the exp-alloc feature branch of the go-sdk-common-private and go-server-sdk-evaluation-private repos.

* expose big segment store wrapper component for reuse by Relay

* lint

* add DuplicateKeysHandling option to ldfiledata (#299)

* use latest prerelease tags of go-sdk-common, go-server-sdk-evaluation

* use prerelease tags of go-sdk-common and go-server-sdk-evaluation

* update dependencies for JSON number parsing bugfix

* use go-sdk-common 2.3.0, go-server-sdk-evaluation 1.3.0

* add big segments control methods for use by Relay

* rm unused

* update go-server-sdk-evaluation to 1.4.1 for big segments bugfix

* use Releaser v2 config, add Go 1.16 CI

* rename big segments to Big Segments

* remove "non-module-build" CI test which can no longer be run

* add CI job for Go 1.17; update linter & test coverage script

* Update pull request template to correct CONTRIBUTING.md link

* Remove reference to dep in CONTRIBUTING.md (#310)

* SC-128558: Allow users to set custom headers on requests (#308)

* Add ability to set custom headers via Headers method

* better tests for simple proxy configuration (#311)

* update evaluation engine to fix circular prereqs issue, add more eval error logging

* add ServiceEndpoints to configuration API (#314)

* fix setting of trackEvents/trackReason in AllFlagsState data when there's an experiment (#315)

* Go SDK test service for use with the SDK test harness (#312)

* fix AllFlagsState DetailsOnlyForTrackedFlags behavior

* fix reason logic

* enable big segments contract tests (#317)

* implement tags

* update doc comments to match latest spec

* more doc comment updates

* support new contract tests that need to set service endpoints independently

* fix URI override logic

* add VariationForAll/VariationForAllIndex in test data builder, deprecate old names

* enforce 64-char limit on tag values

* enable contract tests for polling mode

* prevent data race on data source initialized property

* fix linter command

* update go-sdk-common to 2.5.1 for empty ldvalue.Raw fix

Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <LaunchDarklyCI@users.noreply.github.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Harpo Roeder <hroeder@launchdarkly.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Casey Waldren <cwaldren@launchdarkly.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
LaunchDarklyReleaseBot added a commit that referenced this pull request Jan 17, 2023
* make the SDK a module

* go mod tidy

* fix bug where nil references are passed to persistent stores (#241)

* remove support for indirect patch in stream

* (5.0) complete test coverage for StreamProcessor

* turn on coverage enforcement

* fix logic for disabling db packages in coverage

* move some internal code around for clearer organization

* make sharedtest package internal, put public test helpers in new package

* DRY

* comment about data store tests

* use latest public go-sdk-common, go-sdk-events, go-server-sdk-evaluation

* remove unused polling logic for indirect/patch

* update go-server-sdk-evaluation for data model changes

* rm unnecessary type aliases that broke tests

* fix test that used an overly sensitive equality test for a flag without variations

* another test issue just like the previous commit

* move more test helpers + misc fixes

* test coverage

* move data store test suite to subpackage

* (5.0) fix bug in deleted item serialization

* more test coverage

* (5.0) interface cleanup: move data store types out of the way

* dependency fixes

* (5.0 - #7) updates for go-sdk-events API changes (#251)

* (5.0) miscellaneous doc comment improvements

* fix remaining godoc.org links

* custom badge for pkg.go.dev

* fix go.dev badge

* add API docs link under Learn More

* update dependencies

* use test sandboxing to validate persistent store test failure modes

* lint (use more general interface)

* (5.0) specify proxy URL as a string

* fix test

* fix test

* fix another test

* 5.0.0-beta.1

* add client decorator that temporarily disables events

* add scoped evaluation without events

* remove all database subpackages (being moved to separate projects) (#256)

* bump dependency versions and use ldlogtest package

* lint

* code example

* move AllFlagsState-related types out of main package, add builder

* rm obsolete references to HTTPOptions setter

* minor Makefile fix

* add clientSideAvailability to flag model

* prepare 4.17.3 release (#36)

* Releasing version 4.17.3

* (v5) use new client-side availability fields (#262)

* ensure SDK non-test code has no module-only dependencies (#263)

* 5.0.0-beta.6

* update redis repo name in comments

* use optional int type

* misc cleanup

* update dependencies

* add Go 1.15 CI job, use newer CircleCI images

* typo

* fix CI working directory

* fix CI syntax

* update readme to mention Go 1.15

* drop Go 1.13 build

* use go-server-sdk-evaluation 1.0.0-beta.5

* (#2) add test data source (#266)

* logging fixes/standardization

* use non-beta packages, remove prerelease info

* update release metadata

* make Releaser create release tags with and without the "v" prefix

* update to go-server-sdk-evaluation 1.0.1 for "less omitempty in flag JSON" fix (#272)

* fix comment typos

* serialize deleted item placeholders with full set of properties (#274)

* update go-sdk-common to 2.0.1

* bump eventsource to 1.6.2 for ch95617 logging fix (#275)

* use new jsonstream API (#277)

* don't require path property in put event

* update alpha dependencies

* update for go-jsonstream API changes

* build in Windows with Go 1.14

* bump go-sdk-common version to get user JSON parsing fix

* remove excessive logging in ldfilewatch, add log message for reloading file

* fail fast if SDK key has invalid characters, don't log the key

* bump go-server-sdk-evaluation to get semver parsing fix

* remove spurious logging of stream data

* merge in alias event support

* Removed the guides link

* update to go-server-sdk-evaluation 1.1.2 for ch100737 fix

* (#1) add unbounded segments interfaces, status provider, test suite (#288)

* add unbounded segments interfaces, status provider, test suite

* lint

* add package comment

* better component organization

* rename cache time to poll interval, improve tests

* rename segment keys to segment refs in unbounded segments API

* fix naming some more

* (#2) simplify(?) broadcasters using reflection (#289)

* (#3) misc cleanup of data store test suites (#290)

* (#4) finish adding support for big ("unbounded") segment in evaluations (#291)

* (#5) change "unbounded segments" to "big segments" + use latest prerelease packages (#293)

* fix segment ref string format in tests, update evaluator version

* Point at exp-alloc feature branch of -common and -evaluation (#297)

This just repoints the Go SDK at the exp-alloc feature branch of the go-sdk-common-private and go-server-sdk-evaluation-private repos.

* expose big segment store wrapper component for reuse by Relay

* lint

* add DuplicateKeysHandling option to ldfiledata (#299)

* use latest prerelease tags of go-sdk-common, go-server-sdk-evaluation

* use prerelease tags of go-sdk-common and go-server-sdk-evaluation

* update dependencies for JSON number parsing bugfix

* use go-sdk-common 2.3.0, go-server-sdk-evaluation 1.3.0

* add big segments control methods for use by Relay

* rm unused

* update go-server-sdk-evaluation to 1.4.1 for big segments bugfix

* use Releaser v2 config, add Go 1.16 CI

* rename big segments to Big Segments

* remove "non-module-build" CI test which can no longer be run

* add CI job for Go 1.17; update linter & test coverage script

* Update pull request template to correct CONTRIBUTING.md link

* Remove reference to dep in CONTRIBUTING.md (#310)

* SC-128558: Allow users to set custom headers on requests (#308)

* Add ability to set custom headers via Headers method

* better tests for simple proxy configuration (#311)

* update evaluation engine to fix circular prereqs issue, add more eval error logging

* add ServiceEndpoints to configuration API (#314)

* fix setting of trackEvents/trackReason in AllFlagsState data when there's an experiment (#315)

* Go SDK test service for use with the SDK test harness (#312)

* fix AllFlagsState DetailsOnlyForTrackedFlags behavior

* fix reason logic

* enable big segments contract tests (#317)

* implement tags

* update doc comments to match latest spec

* more doc comment updates

* support new contract tests that need to set service endpoints independently

* fix URI override logic

* add VariationForAll/VariationForAllIndex in test data builder, deprecate old names

* enforce 64-char limit on tag values

* enable contract tests for polling mode

* prevent data race on data source initialized property

* fix linter command

* update go-sdk-common to 2.5.1 for empty ldvalue.Raw fix

* enable contract tests for SecureModeHash

* Big Segment store tests should not expect an error value for "not found" condition

* handle error gracefully if http.NewRequest fails

Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <LaunchDarklyCI@users.noreply.github.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Harpo Roeder <hroeder@launchdarkly.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Casey Waldren <cwaldren@launchdarkly.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
LaunchDarklyReleaseBot added a commit that referenced this pull request Jan 17, 2023
* (#2) add test data source (#266)

* logging fixes/standardization

* use non-beta packages, remove prerelease info

* update release metadata

* make Releaser create release tags with and without the "v" prefix

* update to go-server-sdk-evaluation 1.0.1 for "less omitempty in flag JSON" fix (#272)

* fix comment typos

* serialize deleted item placeholders with full set of properties (#274)

* update go-sdk-common to 2.0.1

* bump eventsource to 1.6.2 for ch95617 logging fix (#275)

* use new jsonstream API (#277)

* don't require path property in put event

* update alpha dependencies

* update for go-jsonstream API changes

* build in Windows with Go 1.14

* bump go-sdk-common version to get user JSON parsing fix

* remove excessive logging in ldfilewatch, add log message for reloading file

* fail fast if SDK key has invalid characters, don't log the key

* bump go-server-sdk-evaluation to get semver parsing fix

* remove spurious logging of stream data

* merge in alias event support

* Removed the guides link

* update to go-server-sdk-evaluation 1.1.2 for ch100737 fix

* (#1) add unbounded segments interfaces, status provider, test suite (#288)

* add unbounded segments interfaces, status provider, test suite

* lint

* add package comment

* better component organization

* rename cache time to poll interval, improve tests

* rename segment keys to segment refs in unbounded segments API

* fix naming some more

* (#2) simplify(?) broadcasters using reflection (#289)

* (#3) misc cleanup of data store test suites (#290)

* (#4) finish adding support for big ("unbounded") segment in evaluations (#291)

* (#5) change "unbounded segments" to "big segments" + use latest prerelease packages (#293)

* fix segment ref string format in tests, update evaluator version

* Point at exp-alloc feature branch of -common and -evaluation (#297)

This just repoints the Go SDK at the exp-alloc feature branch of the go-sdk-common-private and go-server-sdk-evaluation-private repos.

* expose big segment store wrapper component for reuse by Relay

* lint

* add DuplicateKeysHandling option to ldfiledata (#299)

* use latest prerelease tags of go-sdk-common, go-server-sdk-evaluation

* use prerelease tags of go-sdk-common and go-server-sdk-evaluation

* update dependencies for JSON number parsing bugfix

* use go-sdk-common 2.3.0, go-server-sdk-evaluation 1.3.0

* add big segments control methods for use by Relay

* rm unused

* update go-server-sdk-evaluation to 1.4.1 for big segments bugfix

* use Releaser v2 config, add Go 1.16 CI

* rename big segments to Big Segments

* remove "non-module-build" CI test which can no longer be run

* add CI job for Go 1.17; update linter & test coverage script

* Update pull request template to correct CONTRIBUTING.md link

* Remove reference to dep in CONTRIBUTING.md (#310)

* SC-128558: Allow users to set custom headers on requests (#308)

* Add ability to set custom headers via Headers method

* better tests for simple proxy configuration (#311)

* update evaluation engine to fix circular prereqs issue, add more eval error logging

* add ServiceEndpoints to configuration API (#314)

* fix setting of trackEvents/trackReason in AllFlagsState data when there's an experiment (#315)

* Go SDK test service for use with the SDK test harness (#312)

* fix AllFlagsState DetailsOnlyForTrackedFlags behavior

* fix reason logic

* enable big segments contract tests (#317)

* implement tags

* may as well use a regex

* lint

* update major version to v6 and minimum Go version to 1.16

* update test service dependency

* remove deprecated things

* remove alias events and InlineUsersInEvents

* rm obsolete test

* use newer sdk-test-harness run script

* update tags implementation for spec changes

* add comment

* add log warning for bad values

* don't bother validating if it's empty

* nil check in test

* implement tags

* update doc comments to match latest spec

* more doc comment updates

* (#1) initial changes for U2C (#322)

* misc updates for recent U2C changes in SDK packages

* rm unused

* update to latest alpha go-sdk-events

* general SDK API changes to replace users with contexts

* API updates in contract tests

* add context validity check for evaluations

* don't use gopkg.in in import paths

* comment copyedits

Co-authored-by: Casey Waldren <cwaldren@launchdarkly.com>

* use prerelease v2 contract tests in CI

* remove compatibility shims in test service

* change HTTPConfiguration and LoggingConfiguration to not be interfaces

* fix contract test service params

* update for prerelease go-sdk-common/go-sdk-events API changes

* lint

* update test service dependencies

* update for misc API changes in prerelease packages

* update test service dependencies

* change HTTPConfigurationBuilder and LoggingConfigurationBuilder to concrete types

* set up benchmarks to enforce that basic evaluations don't cause heap allocs

* mark some more benchmarks as NoAlloc

* add logging to nil checks

* fix diagnostic output

* update prerelease dependencies

* support new contract tests that need to set service endpoints independently

* fix URI override logic

* update TestData API for context support (#334)

* add VariationForAll/VariationForAllIndex in test data builder, deprecate old names

* enforce 64-char limit on tag values

* enable contract tests for polling mode

* move component APIs out of interfaces package to new subsystems package

* lint

* update to latest prerelease packages

* simplify usage of ClientContext, remove BasicConfiguration

* prevent data race on data source initialized property

* fix linter command

* update go-sdk-common to 2.5.1 for empty ldvalue.Raw fix

* rename "transient" back to "anonymous"

* move interfaces/ldstoretypes to subsystems/ldstoretypes

* move ldcomponents/ldstoreimpl to subsystems/ldstoreimpl

* use latest prerelease go-sdk-common

* use latest prerelease go-sdk-common

* use latest prerelease packages

* enable contract tests for SecureModeHash

* require Go 1.18 or higher; use generics

* fix CI, linter, release image

* lint

* rm uses of obsolete ioutil package

* linter config

* fix test assertion

* fix go-junit-report

* misc lint fixes related to golangci-lint upgrade

* update dependencies to latest prerelease versions + use newer go-test-helpers (#348)

* update dependencies to latest prerelease versions + use newer go-test-helpers

* fix tests

* tiny dependency updates

* update to latest prerelease packages for ldattr.Ref API change

* replace PersistentDataStoreFactory, etc. with a generic interface

* update test service code

* update test service go.mod

* replace DataSourceFactory with generic interface, rename DataSourceUpdates

* comments

* replace DataStoreFactory with generic interface, rename DataStoreUpdates

* use Go 1.19 doc comment format, add doc links

* use latest prerelease go-sdk-common

* use latest prerelease go-server-sdk-evaluation

* consistently use ComponentConfigurer interface in Config

* update dependencies to non-alpha versions

* include nested segment references in dependency update checks

* add sync flush method

* v6.0.0-alpha.pub.13

* Big Segment store tests should not expect an error value for "not found" condition

* handle error gracefully if http.NewRequest fails

* prepare 5.10.1 release (#80)

* make the SDK a module

* go mod tidy

* fix bug where nil references are passed to persistent stores (#241)

* remove support for indirect patch in stream

* (5.0) complete test coverage for StreamProcessor

* turn on coverage enforcement

* fix logic for disabling db packages in coverage

* move some internal code around for clearer organization

* make sharedtest package internal, put public test helpers in new package

* DRY

* comment about data store tests

* use latest public go-sdk-common, go-sdk-events, go-server-sdk-evaluation

* remove unused polling logic for indirect/patch

* update go-server-sdk-evaluation for data model changes

* rm unnecessary type aliases that broke tests

* fix test that used an overly sensitive equality test for a flag without variations

* another test issue just like the previous commit

* move more test helpers + misc fixes

* test coverage

* move data store test suite to subpackage

* (5.0) fix bug in deleted item serialization

* more test coverage

* (5.0) interface cleanup: move data store types out of the way

* dependency fixes

* (5.0 - #7) updates for go-sdk-events API changes (#251)

* (5.0) miscellaneous doc comment improvements

* fix remaining godoc.org links

* custom badge for pkg.go.dev

* fix go.dev badge

* add API docs link under Learn More

* update dependencies

* use test sandboxing to validate persistent store test failure modes

* lint (use more general interface)

* (5.0) specify proxy URL as a string

* fix test

* fix test

* fix another test

* 5.0.0-beta.1

* add client decorator that temporarily disables events

* add scoped evaluation without events

* remove all database subpackages (being moved to separate projects) (#256)

* bump dependency versions and use ldlogtest package

* lint

* code example

* move AllFlagsState-related types out of main package, add builder

* rm obsolete references to HTTPOptions setter

* minor Makefile fix

* add clientSideAvailability to flag model

* prepare 4.17.3 release (#36)

* Releasing version 4.17.3

* (v5) use new client-side availability fields (#262)

* ensure SDK non-test code has no module-only dependencies (#263)

* 5.0.0-beta.6

* update redis repo name in comments

* use optional int type

* misc cleanup

* update dependencies

* add Go 1.15 CI job, use newer CircleCI images

* typo

* fix CI working directory

* fix CI syntax

* update readme to mention Go 1.15

* drop Go 1.13 build

* use go-server-sdk-evaluation 1.0.0-beta.5

* (#2) add test data source (#266)

* logging fixes/standardization

* use non-beta packages, remove prerelease info

* update release metadata

* make Releaser create release tags with and without the "v" prefix

* update to go-server-sdk-evaluation 1.0.1 for "less omitempty in flag JSON" fix (#272)

* fix comment typos

* serialize deleted item placeholders with full set of properties (#274)

* update go-sdk-common to 2.0.1

* bump eventsource to 1.6.2 for ch95617 logging fix (#275)

* use new jsonstream API (#277)

* don't require path property in put event

* update alpha dependencies

* update for go-jsonstream API changes

* build in Windows with Go 1.14

* bump go-sdk-common version to get user JSON parsing fix

* remove excessive logging in ldfilewatch, add log message for reloading file

* fail fast if SDK key has invalid characters, don't log the key

* bump go-server-sdk-evaluation to get semver parsing fix

* remove spurious logging of stream data

* merge in alias event support

* Removed the guides link

* update to go-server-sdk-evaluation 1.1.2 for ch100737 fix

* (#1) add unbounded segments interfaces, status provider, test suite (#288)

* add unbounded segments interfaces, status provider, test suite

* lint

* add package comment

* better component organization

* rename cache time to poll interval, improve tests

* rename segment keys to segment refs in unbounded segments API

* fix naming some more

* (#2) simplify(?) broadcasters using reflection (#289)

* (#3) misc cleanup of data store test suites (#290)

* (#4) finish adding support for big ("unbounded") segment in evaluations (#291)

* (#5) change "unbounded segments" to "big segments" + use latest prerelease packages (#293)

* fix segment ref string format in tests, update evaluator version

* Point at exp-alloc feature branch of -common and -evaluation (#297)

This just repoints the Go SDK at the exp-alloc feature branch of the go-sdk-common-private and go-server-sdk-evaluation-private repos.

* expose big segment store wrapper component for reuse by Relay

* lint

* add DuplicateKeysHandling option to ldfiledata (#299)

* use latest prerelease tags of go-sdk-common, go-server-sdk-evaluation

* use prerelease tags of go-sdk-common and go-server-sdk-evaluation

* update dependencies for JSON number parsing bugfix

* use go-sdk-common 2.3.0, go-server-sdk-evaluation 1.3.0

* add big segments control methods for use by Relay

* rm unused

* update go-server-sdk-evaluation to 1.4.1 for big segments bugfix

* use Releaser v2 config, add Go 1.16 CI

* rename big segments to Big Segments

* remove "non-module-build" CI test which can no longer be run

* add CI job for Go 1.17; update linter & test coverage script

* Update pull request template to correct CONTRIBUTING.md link

* Remove reference to dep in CONTRIBUTING.md (#310)

* SC-128558: Allow users to set custom headers on requests (#308)

* Add ability to set custom headers via Headers method

* better tests for simple proxy configuration (#311)

* update evaluation engine to fix circular prereqs issue, add more eval error logging

* add ServiceEndpoints to configuration API (#314)

* fix setting of trackEvents/trackReason in AllFlagsState data when there's an experiment (#315)

* Go SDK test service for use with the SDK test harness (#312)

* fix AllFlagsState DetailsOnlyForTrackedFlags behavior

* fix reason logic

* enable big segments contract tests (#317)

* implement tags

* update doc comments to match latest spec

* more doc comment updates

* support new contract tests that need to set service endpoints independently

* fix URI override logic

* add VariationForAll/VariationForAllIndex in test data builder, deprecate old names

* enforce 64-char limit on tag values

* enable contract tests for polling mode

* prevent data race on data source initialized property

* fix linter command

* update go-sdk-common to 2.5.1 for empty ldvalue.Raw fix

* enable contract tests for SecureModeHash

* Big Segment store tests should not expect an error value for "not found" condition

* handle error gracefully if http.NewRequest fails

Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <LaunchDarklyCI@users.noreply.github.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Harpo Roeder <hroeder@launchdarkly.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Casey Waldren <cwaldren@launchdarkly.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>

* Releasing version 5.10.1

Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Harpo Roeder <hroeder@launchdarkly.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Casey Waldren <cwaldren@launchdarkly.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <LaunchDarklyCI@users.noreply.github.com>
LaunchDarklyReleaseBot added a commit that referenced this pull request Feb 27, 2023
* update release metadata

* make Releaser create release tags with and without the "v" prefix

* update to go-server-sdk-evaluation 1.0.1 for "less omitempty in flag JSON" fix (#272)

* fix comment typos

* serialize deleted item placeholders with full set of properties (#274)

* update go-sdk-common to 2.0.1

* bump eventsource to 1.6.2 for ch95617 logging fix (#275)

* use new jsonstream API (#277)

* don't require path property in put event

* update alpha dependencies

* update for go-jsonstream API changes

* build in Windows with Go 1.14

* bump go-sdk-common version to get user JSON parsing fix

* remove excessive logging in ldfilewatch, add log message for reloading file

* fail fast if SDK key has invalid characters, don't log the key

* bump go-server-sdk-evaluation to get semver parsing fix

* remove spurious logging of stream data

* merge in alias event support

* Removed the guides link

* update to go-server-sdk-evaluation 1.1.2 for ch100737 fix

* (#1) add unbounded segments interfaces, status provider, test suite (#288)

* add unbounded segments interfaces, status provider, test suite

* lint

* add package comment

* better component organization

* rename cache time to poll interval, improve tests

* rename segment keys to segment refs in unbounded segments API

* fix naming some more

* (#2) simplify(?) broadcasters using reflection (#289)

* (#3) misc cleanup of data store test suites (#290)

* (#4) finish adding support for big ("unbounded") segment in evaluations (#291)

* (#5) change "unbounded segments" to "big segments" + use latest prerelease packages (#293)

* fix segment ref string format in tests, update evaluator version

* Point at exp-alloc feature branch of -common and -evaluation (#297)

This just repoints the Go SDK at the exp-alloc feature branch of the go-sdk-common-private and go-server-sdk-evaluation-private repos.

* expose big segment store wrapper component for reuse by Relay

* lint

* add DuplicateKeysHandling option to ldfiledata (#299)

* use latest prerelease tags of go-sdk-common, go-server-sdk-evaluation

* use prerelease tags of go-sdk-common and go-server-sdk-evaluation

* update dependencies for JSON number parsing bugfix

* use go-sdk-common 2.3.0, go-server-sdk-evaluation 1.3.0

* add big segments control methods for use by Relay

* rm unused

* update go-server-sdk-evaluation to 1.4.1 for big segments bugfix

* use Releaser v2 config, add Go 1.16 CI

* rename big segments to Big Segments

* remove "non-module-build" CI test which can no longer be run

* add CI job for Go 1.17; update linter & test coverage script

* Update pull request template to correct CONTRIBUTING.md link

* Remove reference to dep in CONTRIBUTING.md (#310)

* SC-128558: Allow users to set custom headers on requests (#308)

* Add ability to set custom headers via Headers method

* better tests for simple proxy configuration (#311)

* update evaluation engine to fix circular prereqs issue, add more eval error logging

* add ServiceEndpoints to configuration API (#314)

* fix setting of trackEvents/trackReason in AllFlagsState data when there's an experiment (#315)

* Go SDK test service for use with the SDK test harness (#312)

* fix AllFlagsState DetailsOnlyForTrackedFlags behavior

* fix reason logic

* enable big segments contract tests (#317)

* implement tags

* may as well use a regex

* lint

* update major version to v6 and minimum Go version to 1.16

* update test service dependency

* remove deprecated things

* remove alias events and InlineUsersInEvents

* rm obsolete test

* use newer sdk-test-harness run script

* update tags implementation for spec changes

* add comment

* add log warning for bad values

* don't bother validating if it's empty

* nil check in test

* implement tags

* update doc comments to match latest spec

* more doc comment updates

* (#1) initial changes for U2C (#322)

* misc updates for recent U2C changes in SDK packages

* rm unused

* update to latest alpha go-sdk-events

* general SDK API changes to replace users with contexts

* API updates in contract tests

* add context validity check for evaluations

* don't use gopkg.in in import paths

* comment copyedits

Co-authored-by: Casey Waldren <cwaldren@launchdarkly.com>

* use prerelease v2 contract tests in CI

* remove compatibility shims in test service

* change HTTPConfiguration and LoggingConfiguration to not be interfaces

* fix contract test service params

* update for prerelease go-sdk-common/go-sdk-events API changes

* lint

* update test service dependencies

* update for misc API changes in prerelease packages

* update test service dependencies

* change HTTPConfigurationBuilder and LoggingConfigurationBuilder to concrete types

* set up benchmarks to enforce that basic evaluations don't cause heap allocs

* mark some more benchmarks as NoAlloc

* add logging to nil checks

* fix diagnostic output

* update prerelease dependencies

* support new contract tests that need to set service endpoints independently

* fix URI override logic

* update TestData API for context support (#334)

* add VariationForAll/VariationForAllIndex in test data builder, deprecate old names

* enforce 64-char limit on tag values

* enable contract tests for polling mode

* move component APIs out of interfaces package to new subsystems package

* lint

* update to latest prerelease packages

* simplify usage of ClientContext, remove BasicConfiguration

* prevent data race on data source initialized property

* fix linter command

* update go-sdk-common to 2.5.1 for empty ldvalue.Raw fix

* rename "transient" back to "anonymous"

* move interfaces/ldstoretypes to subsystems/ldstoretypes

* move ldcomponents/ldstoreimpl to subsystems/ldstoreimpl

* use latest prerelease go-sdk-common

* use latest prerelease go-sdk-common

* use latest prerelease packages

* enable contract tests for SecureModeHash

* require Go 1.18 or higher; use generics

* fix CI, linter, release image

* lint

* rm uses of obsolete ioutil package

* linter config

* fix test assertion

* fix go-junit-report

* misc lint fixes related to golangci-lint upgrade

* update dependencies to latest prerelease versions + use newer go-test-helpers (#348)

* update dependencies to latest prerelease versions + use newer go-test-helpers

* fix tests

* tiny dependency updates

* update to latest prerelease packages for ldattr.Ref API change

* replace PersistentDataStoreFactory, etc. with a generic interface

* update test service code

* update test service go.mod

* replace DataSourceFactory with generic interface, rename DataSourceUpdates

* comments

* replace DataStoreFactory with generic interface, rename DataStoreUpdates

* use Go 1.19 doc comment format, add doc links

* use latest prerelease go-sdk-common

* use latest prerelease go-server-sdk-evaluation

* consistently use ComponentConfigurer interface in Config

* update dependencies to non-alpha versions

* include nested segment references in dependency update checks

* add sync flush method

* v6.0.0-alpha.pub.13

* Big Segment store tests should not expect an error value for "not found" condition

* handle error gracefully if http.NewRequest fails

* prepare 5.10.1 release (#80)

* make the SDK a module

* go mod tidy

* fix bug where nil references are passed to persistent stores (#241)

* remove support for indirect patch in stream

* (5.0) complete test coverage for StreamProcessor

* turn on coverage enforcement

* fix logic for disabling db packages in coverage

* move some internal code around for clearer organization

* make sharedtest package internal, put public test helpers in new package

* DRY

* comment about data store tests

* use latest public go-sdk-common, go-sdk-events, go-server-sdk-evaluation

* remove unused polling logic for indirect/patch

* update go-server-sdk-evaluation for data model changes

* rm unnecessary type aliases that broke tests

* fix test that used an overly sensitive equality test for a flag without variations

* another test issue just like the previous commit

* move more test helpers + misc fixes

* test coverage

* move data store test suite to subpackage

* (5.0) fix bug in deleted item serialization

* more test coverage

* (5.0) interface cleanup: move data store types out of the way

* dependency fixes

* (5.0 - #7) updates for go-sdk-events API changes (#251)

* (5.0) miscellaneous doc comment improvements

* fix remaining godoc.org links

* custom badge for pkg.go.dev

* fix go.dev badge

* add API docs link under Learn More

* update dependencies

* use test sandboxing to validate persistent store test failure modes

* lint (use more general interface)

* (5.0) specify proxy URL as a string

* fix test

* fix test

* fix another test

* 5.0.0-beta.1

* add client decorator that temporarily disables events

* add scoped evaluation without events

* remove all database subpackages (being moved to separate projects) (#256)

* bump dependency versions and use ldlogtest package

* lint

* code example

* move AllFlagsState-related types out of main package, add builder

* rm obsolete references to HTTPOptions setter

* minor Makefile fix

* add clientSideAvailability to flag model

* prepare 4.17.3 release (#36)

* Releasing version 4.17.3

* (v5) use new client-side availability fields (#262)

* ensure SDK non-test code has no module-only dependencies (#263)

* 5.0.0-beta.6

* update redis repo name in comments

* use optional int type

* misc cleanup

* update dependencies

* add Go 1.15 CI job, use newer CircleCI images

* typo

* fix CI working directory

* fix CI syntax

* update readme to mention Go 1.15

* drop Go 1.13 build

* use go-server-sdk-evaluation 1.0.0-beta.5

* (#2) add test data source (#266)

* logging fixes/standardization

* use non-beta packages, remove prerelease info

* update release metadata

* make Releaser create release tags with and without the "v" prefix

* update to go-server-sdk-evaluation 1.0.1 for "less omitempty in flag JSON" fix (#272)

* fix comment typos

* serialize deleted item placeholders with full set of properties (#274)

* update go-sdk-common to 2.0.1

* bump eventsource to 1.6.2 for ch95617 logging fix (#275)

* use new jsonstream API (#277)

* don't require path property in put event

* update alpha dependencies

* update for go-jsonstream API changes

* build in Windows with Go 1.14

* bump go-sdk-common version to get user JSON parsing fix

* remove excessive logging in ldfilewatch, add log message for reloading file

* fail fast if SDK key has invalid characters, don't log the key

* bump go-server-sdk-evaluation to get semver parsing fix

* remove spurious logging of stream data

* merge in alias event support

* Removed the guides link

* update to go-server-sdk-evaluation 1.1.2 for ch100737 fix

* (#1) add unbounded segments interfaces, status provider, test suite (#288)

* add unbounded segments interfaces, status provider, test suite

* lint

* add package comment

* better component organization

* rename cache time to poll interval, improve tests

* rename segment keys to segment refs in unbounded segments API

* fix naming some more

* (#2) simplify(?) broadcasters using reflection (#289)

* (#3) misc cleanup of data store test suites (#290)

* (#4) finish adding support for big ("unbounded") segment in evaluations (#291)

* (#5) change "unbounded segments" to "big segments" + use latest prerelease packages (#293)

* fix segment ref string format in tests, update evaluator version

* Point at exp-alloc feature branch of -common and -evaluation (#297)

This just repoints the Go SDK at the exp-alloc feature branch of the go-sdk-common-private and go-server-sdk-evaluation-private repos.

* expose big segment store wrapper component for reuse by Relay

* lint

* add DuplicateKeysHandling option to ldfiledata (#299)

* use latest prerelease tags of go-sdk-common, go-server-sdk-evaluation

* use prerelease tags of go-sdk-common and go-server-sdk-evaluation

* update dependencies for JSON number parsing bugfix

* use go-sdk-common 2.3.0, go-server-sdk-evaluation 1.3.0

* add big segments control methods for use by Relay

* rm unused

* update go-server-sdk-evaluation to 1.4.1 for big segments bugfix

* use Releaser v2 config, add Go 1.16 CI

* rename big segments to Big Segments

* remove "non-module-build" CI test which can no longer be run

* add CI job for Go 1.17; update linter & test coverage script

* Update pull request template to correct CONTRIBUTING.md link

* Remove reference to dep in CONTRIBUTING.md (#310)

* SC-128558: Allow users to set custom headers on requests (#308)

* Add ability to set custom headers via Headers method

* better tests for simple proxy configuration (#311)

* update evaluation engine to fix circular prereqs issue, add more eval error logging

* add ServiceEndpoints to configuration API (#314)

* fix setting of trackEvents/trackReason in AllFlagsState data when there's an experiment (#315)

* Go SDK test service for use with the SDK test harness (#312)

* fix AllFlagsState DetailsOnlyForTrackedFlags behavior

* fix reason logic

* enable big segments contract tests (#317)

* implement tags

* update doc comments to match latest spec

* more doc comment updates

* support new contract tests that need to set service endpoints independently

* fix URI override logic

* add VariationForAll/VariationForAllIndex in test data builder, deprecate old names

* enforce 64-char limit on tag values

* enable contract tests for polling mode

* prevent data race on data source initialized property

* fix linter command

* update go-sdk-common to 2.5.1 for empty ldvalue.Raw fix

* enable contract tests for SecureModeHash

* Big Segment store tests should not expect an error value for "not found" condition

* handle error gracefully if http.NewRequest fails

Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <LaunchDarklyCI@users.noreply.github.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Harpo Roeder <hroeder@launchdarkly.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Casey Waldren <cwaldren@launchdarkly.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>

* Releasing version 5.10.1

* fix: clarify comments on persistentDataStoreWrapper Init() and remove always-true conditional (#361)

The persistentDataStoreWrapper's Init method is concerned with initializing its underlying store and then setting up
the caching layer. 

The conditional check at the end of the function that guards setting the initialization status
is not necessary, because it's not possible to arrive at the check without either (no error) or (cache is infinite ttl) being true.

* refactor: move mocks used in tests to internal/sharedtest/mocks (#362)

* chore: bump golang/x/{crypto,sys} to v0.1.0 (#363)

---------

Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Harpo Roeder <hroeder@launchdarkly.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Casey Waldren <cwaldren@launchdarkly.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <LaunchDarklyCI@users.noreply.github.com>
LaunchDarklyReleaseBot added a commit that referenced this pull request Mar 2, 2023
* make Releaser create release tags with and without the "v" prefix

* update to go-server-sdk-evaluation 1.0.1 for "less omitempty in flag JSON" fix (#272)

* fix comment typos

* serialize deleted item placeholders with full set of properties (#274)

* update go-sdk-common to 2.0.1

* bump eventsource to 1.6.2 for ch95617 logging fix (#275)

* use new jsonstream API (#277)

* don't require path property in put event

* update alpha dependencies

* update for go-jsonstream API changes

* build in Windows with Go 1.14

* bump go-sdk-common version to get user JSON parsing fix

* remove excessive logging in ldfilewatch, add log message for reloading file

* fail fast if SDK key has invalid characters, don't log the key

* bump go-server-sdk-evaluation to get semver parsing fix

* remove spurious logging of stream data

* merge in alias event support

* Removed the guides link

* update to go-server-sdk-evaluation 1.1.2 for ch100737 fix

* (#1) add unbounded segments interfaces, status provider, test suite (#288)

* add unbounded segments interfaces, status provider, test suite

* lint

* add package comment

* better component organization

* rename cache time to poll interval, improve tests

* rename segment keys to segment refs in unbounded segments API

* fix naming some more

* (#2) simplify(?) broadcasters using reflection (#289)

* (#3) misc cleanup of data store test suites (#290)

* (#4) finish adding support for big ("unbounded") segment in evaluations (#291)

* (#5) change "unbounded segments" to "big segments" + use latest prerelease packages (#293)

* fix segment ref string format in tests, update evaluator version

* Point at exp-alloc feature branch of -common and -evaluation (#297)

This just repoints the Go SDK at the exp-alloc feature branch of the go-sdk-common-private and go-server-sdk-evaluation-private repos.

* expose big segment store wrapper component for reuse by Relay

* lint

* add DuplicateKeysHandling option to ldfiledata (#299)

* use latest prerelease tags of go-sdk-common, go-server-sdk-evaluation

* use prerelease tags of go-sdk-common and go-server-sdk-evaluation

* update dependencies for JSON number parsing bugfix

* use go-sdk-common 2.3.0, go-server-sdk-evaluation 1.3.0

* add big segments control methods for use by Relay

* rm unused

* update go-server-sdk-evaluation to 1.4.1 for big segments bugfix

* use Releaser v2 config, add Go 1.16 CI

* rename big segments to Big Segments

* remove "non-module-build" CI test which can no longer be run

* add CI job for Go 1.17; update linter & test coverage script

* Update pull request template to correct CONTRIBUTING.md link

* Remove reference to dep in CONTRIBUTING.md (#310)

* SC-128558: Allow users to set custom headers on requests (#308)

* Add ability to set custom headers via Headers method

* better tests for simple proxy configuration (#311)

* update evaluation engine to fix circular prereqs issue, add more eval error logging

* add ServiceEndpoints to configuration API (#314)

* fix setting of trackEvents/trackReason in AllFlagsState data when there's an experiment (#315)

* Go SDK test service for use with the SDK test harness (#312)

* fix AllFlagsState DetailsOnlyForTrackedFlags behavior

* fix reason logic

* enable big segments contract tests (#317)

* implement tags

* may as well use a regex

* lint

* update major version to v6 and minimum Go version to 1.16

* update test service dependency

* remove deprecated things

* remove alias events and InlineUsersInEvents

* rm obsolete test

* use newer sdk-test-harness run script

* update tags implementation for spec changes

* add comment

* add log warning for bad values

* don't bother validating if it's empty

* nil check in test

* implement tags

* update doc comments to match latest spec

* more doc comment updates

* (#1) initial changes for U2C (#322)

* misc updates for recent U2C changes in SDK packages

* rm unused

* update to latest alpha go-sdk-events

* general SDK API changes to replace users with contexts

* API updates in contract tests

* add context validity check for evaluations

* don't use gopkg.in in import paths

* comment copyedits

Co-authored-by: Casey Waldren <cwaldren@launchdarkly.com>

* use prerelease v2 contract tests in CI

* remove compatibility shims in test service

* change HTTPConfiguration and LoggingConfiguration to not be interfaces

* fix contract test service params

* update for prerelease go-sdk-common/go-sdk-events API changes

* lint

* update test service dependencies

* update for misc API changes in prerelease packages

* update test service dependencies

* change HTTPConfigurationBuilder and LoggingConfigurationBuilder to concrete types

* set up benchmarks to enforce that basic evaluations don't cause heap allocs

* mark some more benchmarks as NoAlloc

* add logging to nil checks

* fix diagnostic output

* update prerelease dependencies

* support new contract tests that need to set service endpoints independently

* fix URI override logic

* update TestData API for context support (#334)

* add VariationForAll/VariationForAllIndex in test data builder, deprecate old names

* enforce 64-char limit on tag values

* enable contract tests for polling mode

* move component APIs out of interfaces package to new subsystems package

* lint

* update to latest prerelease packages

* simplify usage of ClientContext, remove BasicConfiguration

* prevent data race on data source initialized property

* fix linter command

* update go-sdk-common to 2.5.1 for empty ldvalue.Raw fix

* rename "transient" back to "anonymous"

* move interfaces/ldstoretypes to subsystems/ldstoretypes

* move ldcomponents/ldstoreimpl to subsystems/ldstoreimpl

* use latest prerelease go-sdk-common

* use latest prerelease go-sdk-common

* use latest prerelease packages

* enable contract tests for SecureModeHash

* require Go 1.18 or higher; use generics

* fix CI, linter, release image

* lint

* rm uses of obsolete ioutil package

* linter config

* fix test assertion

* fix go-junit-report

* misc lint fixes related to golangci-lint upgrade

* update dependencies to latest prerelease versions + use newer go-test-helpers (#348)

* update dependencies to latest prerelease versions + use newer go-test-helpers

* fix tests

* tiny dependency updates

* update to latest prerelease packages for ldattr.Ref API change

* replace PersistentDataStoreFactory, etc. with a generic interface

* update test service code

* update test service go.mod

* replace DataSourceFactory with generic interface, rename DataSourceUpdates

* comments

* replace DataStoreFactory with generic interface, rename DataStoreUpdates

* use Go 1.19 doc comment format, add doc links

* use latest prerelease go-sdk-common

* use latest prerelease go-server-sdk-evaluation

* consistently use ComponentConfigurer interface in Config

* update dependencies to non-alpha versions

* include nested segment references in dependency update checks

* add sync flush method

* v6.0.0-alpha.pub.13

* Big Segment store tests should not expect an error value for "not found" condition

* handle error gracefully if http.NewRequest fails

* prepare 5.10.1 release (#80)

* make the SDK a module

* go mod tidy

* fix bug where nil references are passed to persistent stores (#241)

* remove support for indirect patch in stream

* (5.0) complete test coverage for StreamProcessor

* turn on coverage enforcement

* fix logic for disabling db packages in coverage

* move some internal code around for clearer organization

* make sharedtest package internal, put public test helpers in new package

* DRY

* comment about data store tests

* use latest public go-sdk-common, go-sdk-events, go-server-sdk-evaluation

* remove unused polling logic for indirect/patch

* update go-server-sdk-evaluation for data model changes

* rm unnecessary type aliases that broke tests

* fix test that used an overly sensitive equality test for a flag without variations

* another test issue just like the previous commit

* move more test helpers + misc fixes

* test coverage

* move data store test suite to subpackage

* (5.0) fix bug in deleted item serialization

* more test coverage

* (5.0) interface cleanup: move data store types out of the way

* dependency fixes

* (5.0 - #7) updates for go-sdk-events API changes (#251)

* (5.0) miscellaneous doc comment improvements

* fix remaining godoc.org links

* custom badge for pkg.go.dev

* fix go.dev badge

* add API docs link under Learn More

* update dependencies

* use test sandboxing to validate persistent store test failure modes

* lint (use more general interface)

* (5.0) specify proxy URL as a string

* fix test

* fix test

* fix another test

* 5.0.0-beta.1

* add client decorator that temporarily disables events

* add scoped evaluation without events

* remove all database subpackages (being moved to separate projects) (#256)

* bump dependency versions and use ldlogtest package

* lint

* code example

* move AllFlagsState-related types out of main package, add builder

* rm obsolete references to HTTPOptions setter

* minor Makefile fix

* add clientSideAvailability to flag model

* prepare 4.17.3 release (#36)

* Releasing version 4.17.3

* (v5) use new client-side availability fields (#262)

* ensure SDK non-test code has no module-only dependencies (#263)

* 5.0.0-beta.6

* update redis repo name in comments

* use optional int type

* misc cleanup

* update dependencies

* add Go 1.15 CI job, use newer CircleCI images

* typo

* fix CI working directory

* fix CI syntax

* update readme to mention Go 1.15

* drop Go 1.13 build

* use go-server-sdk-evaluation 1.0.0-beta.5

* (#2) add test data source (#266)

* logging fixes/standardization

* use non-beta packages, remove prerelease info

* update release metadata

* make Releaser create release tags with and without the "v" prefix

* update to go-server-sdk-evaluation 1.0.1 for "less omitempty in flag JSON" fix (#272)

* fix comment typos

* serialize deleted item placeholders with full set of properties (#274)

* update go-sdk-common to 2.0.1

* bump eventsource to 1.6.2 for ch95617 logging fix (#275)

* use new jsonstream API (#277)

* don't require path property in put event

* update alpha dependencies

* update for go-jsonstream API changes

* build in Windows with Go 1.14

* bump go-sdk-common version to get user JSON parsing fix

* remove excessive logging in ldfilewatch, add log message for reloading file

* fail fast if SDK key has invalid characters, don't log the key

* bump go-server-sdk-evaluation to get semver parsing fix

* remove spurious logging of stream data

* merge in alias event support

* Removed the guides link

* update to go-server-sdk-evaluation 1.1.2 for ch100737 fix

* (#1) add unbounded segments interfaces, status provider, test suite (#288)

* add unbounded segments interfaces, status provider, test suite

* lint

* add package comment

* better component organization

* rename cache time to poll interval, improve tests

* rename segment keys to segment refs in unbounded segments API

* fix naming some more

* (#2) simplify(?) broadcasters using reflection (#289)

* (#3) misc cleanup of data store test suites (#290)

* (#4) finish adding support for big ("unbounded") segment in evaluations (#291)

* (#5) change "unbounded segments" to "big segments" + use latest prerelease packages (#293)

* fix segment ref string format in tests, update evaluator version

* Point at exp-alloc feature branch of -common and -evaluation (#297)

This just repoints the Go SDK at the exp-alloc feature branch of the go-sdk-common-private and go-server-sdk-evaluation-private repos.

* expose big segment store wrapper component for reuse by Relay

* lint

* add DuplicateKeysHandling option to ldfiledata (#299)

* use latest prerelease tags of go-sdk-common, go-server-sdk-evaluation

* use prerelease tags of go-sdk-common and go-server-sdk-evaluation

* update dependencies for JSON number parsing bugfix

* use go-sdk-common 2.3.0, go-server-sdk-evaluation 1.3.0

* add big segments control methods for use by Relay

* rm unused

* update go-server-sdk-evaluation to 1.4.1 for big segments bugfix

* use Releaser v2 config, add Go 1.16 CI

* rename big segments to Big Segments

* remove "non-module-build" CI test which can no longer be run

* add CI job for Go 1.17; update linter & test coverage script

* Update pull request template to correct CONTRIBUTING.md link

* Remove reference to dep in CONTRIBUTING.md (#310)

* SC-128558: Allow users to set custom headers on requests (#308)

* Add ability to set custom headers via Headers method

* better tests for simple proxy configuration (#311)

* update evaluation engine to fix circular prereqs issue, add more eval error logging

* add ServiceEndpoints to configuration API (#314)

* fix setting of trackEvents/trackReason in AllFlagsState data when there's an experiment (#315)

* Go SDK test service for use with the SDK test harness (#312)

* fix AllFlagsState DetailsOnlyForTrackedFlags behavior

* fix reason logic

* enable big segments contract tests (#317)

* implement tags

* update doc comments to match latest spec

* more doc comment updates

* support new contract tests that need to set service endpoints independently

* fix URI override logic

* add VariationForAll/VariationForAllIndex in test data builder, deprecate old names

* enforce 64-char limit on tag values

* enable contract tests for polling mode

* prevent data race on data source initialized property

* fix linter command

* update go-sdk-common to 2.5.1 for empty ldvalue.Raw fix

* enable contract tests for SecureModeHash

* Big Segment store tests should not expect an error value for "not found" condition

* handle error gracefully if http.NewRequest fails

Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <LaunchDarklyCI@users.noreply.github.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Harpo Roeder <hroeder@launchdarkly.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Casey Waldren <cwaldren@launchdarkly.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>

* Releasing version 5.10.1

* fix: clarify comments on persistentDataStoreWrapper Init() and remove always-true conditional (#361)

The persistentDataStoreWrapper's Init method is concerned with initializing its underlying store and then setting up
the caching layer. 

The conditional check at the end of the function that guards setting the initialization status
is not necessary, because it's not possible to arrive at the check without either (no error) or (cache is infinite ttl) being true.

* refactor: move mocks used in tests to internal/sharedtest/mocks (#362)

* chore: bump golang/x/{crypto,sys} to v0.1.0 (#363)

* chore: add context-type capability to contract test service (#365)

* Bump go-sdk-common, go-sdk-events, and go-server-sdk-evaluation to latest releases

* Update to real go-sdk-common v3.0.1 release

* Update go-sdk-events to v2.0.1 release

* Update go-server-sdk-evaluation to v2.0.2 release

The go-sdk-common patch fixes an umarshaling bug in easyJSON context deserializer.

---------

Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Harpo Roeder <hroeder@launchdarkly.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Casey Waldren <cwaldren@launchdarkly.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <LaunchDarklyCI@users.noreply.github.com>
LaunchDarklyReleaseBot added a commit that referenced this pull request Apr 13, 2023
* fix comment typos

* serialize deleted item placeholders with full set of properties (#274)

* update go-sdk-common to 2.0.1

* bump eventsource to 1.6.2 for ch95617 logging fix (#275)

* use new jsonstream API (#277)

* don't require path property in put event

* update alpha dependencies

* update for go-jsonstream API changes

* build in Windows with Go 1.14

* bump go-sdk-common version to get user JSON parsing fix

* remove excessive logging in ldfilewatch, add log message for reloading file

* fail fast if SDK key has invalid characters, don't log the key

* bump go-server-sdk-evaluation to get semver parsing fix

* remove spurious logging of stream data

* merge in alias event support

* Removed the guides link

* update to go-server-sdk-evaluation 1.1.2 for ch100737 fix

* (#1) add unbounded segments interfaces, status provider, test suite (#288)

* add unbounded segments interfaces, status provider, test suite

* lint

* add package comment

* better component organization

* rename cache time to poll interval, improve tests

* rename segment keys to segment refs in unbounded segments API

* fix naming some more

* (#2) simplify(?) broadcasters using reflection (#289)

* (#3) misc cleanup of data store test suites (#290)

* (#4) finish adding support for big ("unbounded") segment in evaluations (#291)

* (#5) change "unbounded segments" to "big segments" + use latest prerelease packages (#293)

* fix segment ref string format in tests, update evaluator version

* Point at exp-alloc feature branch of -common and -evaluation (#297)

This just repoints the Go SDK at the exp-alloc feature branch of the go-sdk-common-private and go-server-sdk-evaluation-private repos.

* expose big segment store wrapper component for reuse by Relay

* lint

* add DuplicateKeysHandling option to ldfiledata (#299)

* use latest prerelease tags of go-sdk-common, go-server-sdk-evaluation

* use prerelease tags of go-sdk-common and go-server-sdk-evaluation

* update dependencies for JSON number parsing bugfix

* use go-sdk-common 2.3.0, go-server-sdk-evaluation 1.3.0

* add big segments control methods for use by Relay

* rm unused

* update go-server-sdk-evaluation to 1.4.1 for big segments bugfix

* use Releaser v2 config, add Go 1.16 CI

* rename big segments to Big Segments

* remove "non-module-build" CI test which can no longer be run

* add CI job for Go 1.17; update linter & test coverage script

* Update pull request template to correct CONTRIBUTING.md link

* Remove reference to dep in CONTRIBUTING.md (#310)

* SC-128558: Allow users to set custom headers on requests (#308)

* Add ability to set custom headers via Headers method

* better tests for simple proxy configuration (#311)

* update evaluation engine to fix circular prereqs issue, add more eval error logging

* add ServiceEndpoints to configuration API (#314)

* fix setting of trackEvents/trackReason in AllFlagsState data when there's an experiment (#315)

* Go SDK test service for use with the SDK test harness (#312)

* fix AllFlagsState DetailsOnlyForTrackedFlags behavior

* fix reason logic

* enable big segments contract tests (#317)

* implement tags

* may as well use a regex

* lint

* update major version to v6 and minimum Go version to 1.16

* update test service dependency

* remove deprecated things

* remove alias events and InlineUsersInEvents

* rm obsolete test

* use newer sdk-test-harness run script

* update tags implementation for spec changes

* add comment

* add log warning for bad values

* don't bother validating if it's empty

* nil check in test

* implement tags

* update doc comments to match latest spec

* more doc comment updates

* (#1) initial changes for U2C (#322)

* misc updates for recent U2C changes in SDK packages

* rm unused

* update to latest alpha go-sdk-events

* general SDK API changes to replace users with contexts

* API updates in contract tests

* add context validity check for evaluations

* don't use gopkg.in in import paths

* comment copyedits

Co-authored-by: Casey Waldren <cwaldren@launchdarkly.com>

* use prerelease v2 contract tests in CI

* remove compatibility shims in test service

* change HTTPConfiguration and LoggingConfiguration to not be interfaces

* fix contract test service params

* update for prerelease go-sdk-common/go-sdk-events API changes

* lint

* update test service dependencies

* update for misc API changes in prerelease packages

* update test service dependencies

* change HTTPConfigurationBuilder and LoggingConfigurationBuilder to concrete types

* set up benchmarks to enforce that basic evaluations don't cause heap allocs

* mark some more benchmarks as NoAlloc

* add logging to nil checks

* fix diagnostic output

* update prerelease dependencies

* support new contract tests that need to set service endpoints independently

* fix URI override logic

* update TestData API for context support (#334)

* add VariationForAll/VariationForAllIndex in test data builder, deprecate old names

* enforce 64-char limit on tag values

* enable contract tests for polling mode

* move component APIs out of interfaces package to new subsystems package

* lint

* update to latest prerelease packages

* simplify usage of ClientContext, remove BasicConfiguration

* prevent data race on data source initialized property

* fix linter command

* update go-sdk-common to 2.5.1 for empty ldvalue.Raw fix

* rename "transient" back to "anonymous"

* move interfaces/ldstoretypes to subsystems/ldstoretypes

* move ldcomponents/ldstoreimpl to subsystems/ldstoreimpl

* use latest prerelease go-sdk-common

* use latest prerelease go-sdk-common

* use latest prerelease packages

* enable contract tests for SecureModeHash

* require Go 1.18 or higher; use generics

* fix CI, linter, release image

* lint

* rm uses of obsolete ioutil package

* linter config

* fix test assertion

* fix go-junit-report

* misc lint fixes related to golangci-lint upgrade

* update dependencies to latest prerelease versions + use newer go-test-helpers (#348)

* update dependencies to latest prerelease versions + use newer go-test-helpers

* fix tests

* tiny dependency updates

* update to latest prerelease packages for ldattr.Ref API change

* replace PersistentDataStoreFactory, etc. with a generic interface

* update test service code

* update test service go.mod

* replace DataSourceFactory with generic interface, rename DataSourceUpdates

* comments

* replace DataStoreFactory with generic interface, rename DataStoreUpdates

* use Go 1.19 doc comment format, add doc links

* use latest prerelease go-sdk-common

* use latest prerelease go-server-sdk-evaluation

* consistently use ComponentConfigurer interface in Config

* update dependencies to non-alpha versions

* include nested segment references in dependency update checks

* add sync flush method

* v6.0.0-alpha.pub.13

* Big Segment store tests should not expect an error value for "not found" condition

* handle error gracefully if http.NewRequest fails

* prepare 5.10.1 release (#80)

* make the SDK a module

* go mod tidy

* fix bug where nil references are passed to persistent stores (#241)

* remove support for indirect patch in stream

* (5.0) complete test coverage for StreamProcessor

* turn on coverage enforcement

* fix logic for disabling db packages in coverage

* move some internal code around for clearer organization

* make sharedtest package internal, put public test helpers in new package

* DRY

* comment about data store tests

* use latest public go-sdk-common, go-sdk-events, go-server-sdk-evaluation

* remove unused polling logic for indirect/patch

* update go-server-sdk-evaluation for data model changes

* rm unnecessary type aliases that broke tests

* fix test that used an overly sensitive equality test for a flag without variations

* another test issue just like the previous commit

* move more test helpers + misc fixes

* test coverage

* move data store test suite to subpackage

* (5.0) fix bug in deleted item serialization

* more test coverage

* (5.0) interface cleanup: move data store types out of the way

* dependency fixes

* (5.0 - #7) updates for go-sdk-events API changes (#251)

* (5.0) miscellaneous doc comment improvements

* fix remaining godoc.org links

* custom badge for pkg.go.dev

* fix go.dev badge

* add API docs link under Learn More

* update dependencies

* use test sandboxing to validate persistent store test failure modes

* lint (use more general interface)

* (5.0) specify proxy URL as a string

* fix test

* fix test

* fix another test

* 5.0.0-beta.1

* add client decorator that temporarily disables events

* add scoped evaluation without events

* remove all database subpackages (being moved to separate projects) (#256)

* bump dependency versions and use ldlogtest package

* lint

* code example

* move AllFlagsState-related types out of main package, add builder

* rm obsolete references to HTTPOptions setter

* minor Makefile fix

* add clientSideAvailability to flag model

* prepare 4.17.3 release (#36)

* Releasing version 4.17.3

* (v5) use new client-side availability fields (#262)

* ensure SDK non-test code has no module-only dependencies (#263)

* 5.0.0-beta.6

* update redis repo name in comments

* use optional int type

* misc cleanup

* update dependencies

* add Go 1.15 CI job, use newer CircleCI images

* typo

* fix CI working directory

* fix CI syntax

* update readme to mention Go 1.15

* drop Go 1.13 build

* use go-server-sdk-evaluation 1.0.0-beta.5

* (#2) add test data source (#266)

* logging fixes/standardization

* use non-beta packages, remove prerelease info

* update release metadata

* make Releaser create release tags with and without the "v" prefix

* update to go-server-sdk-evaluation 1.0.1 for "less omitempty in flag JSON" fix (#272)

* fix comment typos

* serialize deleted item placeholders with full set of properties (#274)

* update go-sdk-common to 2.0.1

* bump eventsource to 1.6.2 for ch95617 logging fix (#275)

* use new jsonstream API (#277)

* don't require path property in put event

* update alpha dependencies

* update for go-jsonstream API changes

* build in Windows with Go 1.14

* bump go-sdk-common version to get user JSON parsing fix

* remove excessive logging in ldfilewatch, add log message for reloading file

* fail fast if SDK key has invalid characters, don't log the key

* bump go-server-sdk-evaluation to get semver parsing fix

* remove spurious logging of stream data

* merge in alias event support

* Removed the guides link

* update to go-server-sdk-evaluation 1.1.2 for ch100737 fix

* (#1) add unbounded segments interfaces, status provider, test suite (#288)

* add unbounded segments interfaces, status provider, test suite

* lint

* add package comment

* better component organization

* rename cache time to poll interval, improve tests

* rename segment keys to segment refs in unbounded segments API

* fix naming some more

* (#2) simplify(?) broadcasters using reflection (#289)

* (#3) misc cleanup of data store test suites (#290)

* (#4) finish adding support for big ("unbounded") segment in evaluations (#291)

* (#5) change "unbounded segments" to "big segments" + use latest prerelease packages (#293)

* fix segment ref string format in tests, update evaluator version

* Point at exp-alloc feature branch of -common and -evaluation (#297)

This just repoints the Go SDK at the exp-alloc feature branch of the go-sdk-common-private and go-server-sdk-evaluation-private repos.

* expose big segment store wrapper component for reuse by Relay

* lint

* add DuplicateKeysHandling option to ldfiledata (#299)

* use latest prerelease tags of go-sdk-common, go-server-sdk-evaluation

* use prerelease tags of go-sdk-common and go-server-sdk-evaluation

* update dependencies for JSON number parsing bugfix

* use go-sdk-common 2.3.0, go-server-sdk-evaluation 1.3.0

* add big segments control methods for use by Relay

* rm unused

* update go-server-sdk-evaluation to 1.4.1 for big segments bugfix

* use Releaser v2 config, add Go 1.16 CI

* rename big segments to Big Segments

* remove "non-module-build" CI test which can no longer be run

* add CI job for Go 1.17; update linter & test coverage script

* Update pull request template to correct CONTRIBUTING.md link

* Remove reference to dep in CONTRIBUTING.md (#310)

* SC-128558: Allow users to set custom headers on requests (#308)

* Add ability to set custom headers via Headers method

* better tests for simple proxy configuration (#311)

* update evaluation engine to fix circular prereqs issue, add more eval error logging

* add ServiceEndpoints to configuration API (#314)

* fix setting of trackEvents/trackReason in AllFlagsState data when there's an experiment (#315)

* Go SDK test service for use with the SDK test harness (#312)

* fix AllFlagsState DetailsOnlyForTrackedFlags behavior

* fix reason logic

* enable big segments contract tests (#317)

* implement tags

* update doc comments to match latest spec

* more doc comment updates

* support new contract tests that need to set service endpoints independently

* fix URI override logic

* add VariationForAll/VariationForAllIndex in test data builder, deprecate old names

* enforce 64-char limit on tag values

* enable contract tests for polling mode

* prevent data race on data source initialized property

* fix linter command

* update go-sdk-common to 2.5.1 for empty ldvalue.Raw fix

* enable contract tests for SecureModeHash

* Big Segment store tests should not expect an error value for "not found" condition

* handle error gracefully if http.NewRequest fails

Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <LaunchDarklyCI@users.noreply.github.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Harpo Roeder <hroeder@launchdarkly.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Casey Waldren <cwaldren@launchdarkly.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>

* Releasing version 5.10.1

* fix: clarify comments on persistentDataStoreWrapper Init() and remove always-true conditional (#361)

The persistentDataStoreWrapper's Init method is concerned with initializing its underlying store and then setting up
the caching layer. 

The conditional check at the end of the function that guards setting the initialization status
is not necessary, because it's not possible to arrive at the check without either (no error) or (cache is infinite ttl) being true.

* refactor: move mocks used in tests to internal/sharedtest/mocks (#362)

* chore: bump golang/x/{crypto,sys} to v0.1.0 (#363)

* chore: add context-type capability to contract test service (#365)

* Bump go-sdk-common, go-sdk-events, and go-server-sdk-evaluation to latest releases

* Update to real go-sdk-common v3.0.1 release

* Update go-sdk-events to v2.0.1 release

* Update go-server-sdk-evaluation to v2.0.2 release

The go-sdk-common patch fixes an umarshaling bug in easyJSON context deserializer.

* feat: payload filters (#360)

* Add Payload Filter configuration option for streaming and polling data sources

Allows the SDK to specify a filter key, which causes a subset of data
to be sent over the streaming connection based on a filter configured
in LaunchDarkly.

* Update polling tests

* Update streaming tests

* Add capability 'filtering' to contract test service

* Add mock_polling_request.go to mocks package

* chore: Add close stale workflow to public repo (#88) (#367)

Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>

---------

Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: Harpo Roeder <hroeder@launchdarkly.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Casey Waldren <cwaldren@launchdarkly.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <LaunchDarklyCI@users.noreply.github.com>
Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants