Skip to content
This repository was archived by the owner on Dec 6, 2024. It is now read-only.

Conversation

@LaunchDarklyReleaseBot
Copy link
Contributor

[2.7.2] - 2022-07-07

Added:

  • Added cmake PROJECT_VERSION variable which reflects the SDK's version.

Fixed:

  • Fixed behavior of patch event handling to properly ignore unrecognized paths.

cwaldren-ld and others added 26 commits April 12, 2022 13:09
* Fix AllFlagsState behavior when flag fails to evaluate

Do not add invalid flags to the AllFlagsState object. Instead, skip them, like
the AllFlags function.

This commit also ports over the AllFlags unit tests to AllFlagsState.

* Re-generate test harness suppressions file.
* Implement TestData data source integration

Co-authored-by: Ben Levy <benjaminlevy007@gmail.com>
* Implement service-endpoints capability for contract tests

* Add events/disabling/* to testharness-suppressions

These are expected to fail, since the SDK in fact does not implement this feature.
…164)

* Refactored EventProcessor's APIs for better clarity; made it an opaque struct; added documentation
* Implement disabling analytic events
LaunchDarkly services expect milliseconds in JSON to be representable by
an integer. Right now that's not the case, since calls to timespec divide the nanosecond value
by 1e6.

Update the getUnixMilliseconds API to return whole numbers.
* Do not generate identify events for users with empty keys
* Remove new payload ID test from suppressions

* Add new test failures from 1.6.0 contract test release
…172)

* Update c-sdk-common subtree

* Rename master->main in PR template
…169)

* Use wall time instead of monotonic in EventProcessor

EventProcessor was previously configured with a monotonic timestamp for lastUserKeyFlush when it was constructed.

On Mac, this uses the system boot clock.

This caused user keys to be incorrectly flushed the first time maybeMakeIndexEvent was called, since
the expression "now [wall time] > [computations involving monotonic time]" always evaluates to true.

Once the cache is cleared, lastUserKeyFlush is assigned to the wall time, which allows the logic to work correctly
for subsequent maybeMakeIndexEvents, since now the time quantities are measured from the same domain.

* Introducing the new LDTimestamp and LDTimer data types, making clear where wall time or monotonic time is used.

* Remove suppression for redundant index event

* Pin SDK test harness version so that fixing the suppressions is not a moving target
Unsigned int is not large enough to store millisecond precision timestamps! (Which right now, are about 1.6 trillion ms.)
* releaser: modify build.sh to output a 'file manifest' for comparison between builds

This manifest can be used to compare a build to a previous build, in order to validate any assumptions about what headers and library files are installed by 'make install'. 

* circleci: stop using sourceforge mirror for downloading Windows pcre dependency

The existing mirror disappeared. We can use sourceforge's download URL instead of a direct mirror,
as long as the -UserAgent "NativeHost" flag is passed to the Invoke-WebRequest commandlet (otherwise it downloads a web page.)
* cmake: Fetch most 3rd party libraries via FetchContent, and delete sources from repo.
* cmake: remove unused base64 lib
* Update Release CircleCI image to ld-c-sdk-ubunut:3 to pull in newer cmake
* Update README with basic CMake integration instructions
Building 3rd party dependencies as object libraries allows for their inclusion
directly in the ldserverapi target sources.

This will produce a single release artifact as was previously the case before the 2.7.0 release, which
started linking the 3rd party dependencies as static libraries.

Linking against 3rd party dependencies as static libs "works" only for external projects that use this project's CMake targets;
it doesn't work if the static lib release artifact is directly consumed.

This is because target_link_libraries, when used on a static target with static dependency, does not actually
"link" the file, but only forms a logical link on the CMake target.

This change physically includes the 3rd party dependencies directly into ldserverapi's source as was previously the case.
….h (#187)

Extract the SDK's version (set by Releaser) into the cmake variable PROJECT_VERSION.
The configuration step now writes out the variable as a status message.

This is setting the stage for future changes to write a package config file containing this version.
* Allow for unrecognized patch paths in SSE events

The SDK treats patch paths that aren't for '/segments/' or '/flags/' as an error.
They should instead be ignored to allow for future expansion of the spec.

This commit introduces a new ParsePathStatus status code for the LDi_parsePath
function, allowing callers to discriminate between a failure to parse the path, vs a failure because
the path was recognised.

* Update unit tests to allow for unrecognized paths in patch data
@cwaldren-ld cwaldren-ld requested a review from kinyoklion July 7, 2022 23:20
@LaunchDarklyReleaseBot LaunchDarklyReleaseBot merged commit 446fb8f into main Jul 7, 2022
@LaunchDarklyReleaseBot LaunchDarklyReleaseBot deleted the release-2.7.2 branch July 7, 2022 23:47
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.