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.9.0 release #7

Merged
merged 286 commits into from
Jul 23, 2019
Merged

prepare 4.9.0 release #7

merged 286 commits into from
Jul 23, 2019

Conversation

eli-darkly
Copy link
Contributor

[4.9.0] - 2019-07-23

Added:

  • The new Config property LogEvaluationErrors, if set to true, causes the client to output a WARN: log message whenever a flag cannot be evaluated because the flag does not exist, the user key was not specified, or the flag rules are invalid. The error message is the same as the message in the error object returned by the evaluation method. This may be useful in debugging if you are unexpectedly seeing default values instead of real values for a flag. Most of the other LaunchDarkly SDKs already log these messages by default, but since the Go SDK historically did not, this has been made an opt-in feature. It may be changed to be true by default in the next major version.
  • The new ldhttp package provides helper functions for setting custom HTTPS transport options, such as adding a root CA.
  • The new ldntlm package provides the ability to connect through a proxy server that uses NTLM authentication.

Fixed:

  • The SDK was not respecting the standard proxy server environment variable behavior (HTTPS_PROXY) that is normally provided by http.ProxyFromEnvironment. (Thanks, mightyguava!)
  • Under conditions where analytics events are being generated at an extremely high rate (for instance, if an application is evaluating a flag repeatedly in a tight loop on many goroutines), a thread could be blocked indefinitely within the Variation methods while waiting for the internal event processing logic to catch up with the backlog. The logic has been changed to drop events if necessary so application code will not be blocked (similar to how the SDK already drops events if the size of the event buffer is exceeded). If that happens, this warning message will be logged once: "Events are being produced faster than they can be processed; some events will be dropped". Under normal conditions this should never happen; this change is meant to avoid a concurrency bottleneck in applications that are already so busy that goroutine starvation is likely.

eli-darkly and others added 30 commits August 21, 2018 19:30
implement evaluation with explanation (new style)
# Conflicts:
#	ldclient.go
#	ldclient_test.go
add ability to select only client-side flags in AllFlagsState()
# Conflicts:
#	ldclient.go
#	ldclient_test.go
# Conflicts:
#	ldclient.go
#	ldclient_evaluation_test.go
…reasons

add evaluation reasons to AllFlagsState; add tests for reason serialization
use polymorphism for evaluation reasons
don't keep evaluating prerequisites if one fails
ensure that reasons can appear in event output + fix reason field types
fix logic for returning default value
allow JSON unmarshaling of reasons inside events
generate event for prerequisite even if it's off
@eli-darkly eli-darkly requested a review from bwoskow-ld July 23, 2019 20:39
@eli-darkly eli-darkly merged commit 7e132b1 into v4 Jul 23, 2019
@eli-darkly eli-darkly deleted the 4.9.0 branch July 23, 2019 21:02
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.

6 participants