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

Segmentation fault on Ruby 2.5.1 when exiting rails console or after rake tasks #104

Closed
jeromedalbert opened this issue Jul 26, 2018 · 4 comments

Comments

@jeromedalbert
Copy link

jeromedalbert commented Jul 26, 2018

Steps to reproduce

  1. Use Ruby 2.5.1 on a Rails project (the Rails version I tested on was 5.1.6)
  2. Make sure spring is stopped with spring stop
  3. Run rails console
  4. Exit the console
  5. The following error appears:
/usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/spring-2.0.2/lib/spring/application.rb:171: [BUG] Segmentation fault at 0x000070000b0821e0
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]

-- Crash Report log information --------------------------------------------
   See Crash Report log file under the one of following:
     * ~/Library/Logs/DiagnosticReports
     * /Library/Logs/DiagnosticReports
   for more details.
Don't forget to include the above Crash Report log file in bug reports.

-- Control frame information -----------------------------------------------
c:0010 p:---- s:0056 e:000055 CFUNC  :fork
c:0009 p:0240 s:0052 E:001b40 METHOD /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/spring-2.0.2/lib/spring/application.rb:171
c:0008 p:0065 s:0038 E:001bb0 BLOCK  /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/spring-2.0.2/lib/spring/application.rb:141 [FINISH]
c:0007 p:---- s:0035 e:000034 CFUNC  :loop
c:0006 p:0020 s:0031 E:001b90 METHOD /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/spring-2.0.2/lib/spring/application.rb:135
c:0005 p:0153 s:0027 E:000878 TOP    /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/spring-2.0.2/lib/spring/application/boot.rb:19 [FINISH]
c:0004 p:---- s:0023 e:000022 CFUNC  :require
c:0003 p:0110 s:0018 E:001ca0 METHOD /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59
c:0002 p:0006 s:0006 E:001cf0 EVAL   -e:1 [FINISH]
c:0001 p:0000 s:0003 E:000580 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
-e:1:in `<main>'
/usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
/usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
/usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/spring-2.0.2/lib/spring/application/boot.rb:19:in `<top (required)>'
/usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/spring-2.0.2/lib/spring/application.rb:135:in `run'
/usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/spring-2.0.2/lib/spring/application.rb:135:in `loop'
/usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/spring-2.0.2/lib/spring/application.rb:141:in `block in run'
/usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/spring-2.0.2/lib/spring/application.rb:171:in `serve'
/usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/spring-2.0.2/lib/spring/application.rb:171:in `fork'

-- Machine register context ------------------------------------------------
 rax: 0x00007fb420c0c0b0 rbx: 0x000000010fa75000 rcx: 0x0000000000000006
 rdx: 0x0000000000000004 rdi: 0x00007fb42eb407c8 rsi: 0x00007fb4291bb4e0
 rbp: 0x00007ffee3514be0 rsp: 0x00007ffee3514bb0  r8: 0x000000000000401a
  r9: 0xcccccccccccccccd r10: 0x000000000000084f r11: 0x3ffffffffffffff8
 r12: 0x000070000b0821e0 r13: 0x3ffffffffffffff8 r14: 0x00007fb420c0c6b0
 r15: 0x000000000000059d rip: 0x000000010c77c403 rfl: 0x0000000000010202

-- C level backtrace information -------------------------------------------
0   libruby.2.5.dylib                   0x000000010c8e29b7 rb_vm_bugreport + 135
1   libruby.2.5.dylib                   0x000000010c7625b8 rb_bug_context + 472
2   libruby.2.5.dylib                   0x000000010c8535b1 sigsegv + 81
3   libsystem_platform.dylib            0x00007fff6f514f5a _sigtramp + 26
4   libruby.2.5.dylib                   0x000000010c77c403 rb_gc_mark_machine_stack + 99
5   libruby.2.5.dylib                   0x000000010c8d19b9 rb_execution_context_mark + 137
6   libruby.2.5.dylib                   0x000000010c749d2b cont_mark + 27
7   libruby.2.5.dylib                   0x000000010c787da1 gc_marks_finish + 721
8   libruby.2.5.dylib                   0x000000010c7879ce gc_marks_rest + 62
9   libruby.2.5.dylib                   0x000000010c77b3e7 rb_gc_call_finalizer_at_exit + 103
10  libruby.2.5.dylib                   0x000000010c76c27e ruby_cleanup + 606
11  libruby.2.5.dylib                   0x000000010c76c389 ruby_stop + 9
12  libruby.2.5.dylib                   0x000000010c80a1e7 rb_f_fork + 103
13  libruby.2.5.dylib                   0x000000010c8d5f21 vm_call_cfunc + 289
14  libruby.2.5.dylib                   0x000000010c8be0c7 vm_exec_core + 10119
15  libruby.2.5.dylib                   0x000000010c8d064e vm_exec + 142
16  libruby.2.5.dylib                   0x000000010c8dde0e invoke_block_from_c_bh + 382
17  libruby.2.5.dylib                   0x000000010c8deec3 loop_i + 35
18  libruby.2.5.dylib                   0x000000010c76cd17 rb_rescue2 + 311
19  libruby.2.5.dylib                   0x000000010c8d5f21 vm_call_cfunc + 289
20  libruby.2.5.dylib                   0x000000010c8be0c7 vm_exec_core + 10119
21  libruby.2.5.dylib                   0x000000010c8d064e vm_exec + 142
22  libruby.2.5.dylib                   0x000000010c7b2e41 rb_load_internal0 + 337
23  libruby.2.5.dylib                   0x000000010c7b3716 rb_require_internal + 1766
24  libruby.2.5.dylib                   0x000000010c7b2ed8 rb_f_require + 24
25  libruby.2.5.dylib                   0x000000010c8d5f21 vm_call_cfunc + 289
26  libruby.2.5.dylib                   0x000000010c8beb31 vm_exec_core + 12785
27  libruby.2.5.dylib                   0x000000010c8d064e vm_exec + 142
28  libruby.2.5.dylib                   0x000000010c76c521 ruby_exec_internal + 177
29  libruby.2.5.dylib                   0x000000010c76c418 ruby_run_node + 56
30  ruby                                0x000000010c6e8f2f main + 79

-- Other runtime information -----------------------------------------------

* Loaded script: rake

* Loaded features:
    0 enumerator.so
    1 thread.rb
    2 rational.so
    3 complex.so
    4 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/x86_64-darwin17/enc/encdb.bundle
    5 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/x86_64-darwin17/enc/trans/transdb.bundle
    6 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/x86_64-darwin17/rbconfig.rb
    7 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/rubygems/compatibility.rb
    8 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/rubygems/defaults.rb
    9 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/rubygems/deprecate.rb
   10 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/rubygems/errors.rb
   11 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/rubygems/version.rb
   12 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/rubygems/requirement.rb
   13 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/rubygems/platform.rb
   14 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/rubygems/basic_specification.rb
   15 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/rubygems/stub_specification.rb
   16 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/rubygems/util/list.rb
   17 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/x86_64-darwin17/stringio.bundle
   18 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/uri/rfc2396_parser.rb
   19 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/uri/rfc3986_parser.rb
   20 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/uri/common.rb
   21 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/uri/generic.rb
   22 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/uri/ftp.rb
   23 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/uri/http.rb
   24 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/uri/https.rb
   25 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/uri/ldap.rb
   26 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/uri/ldaps.rb
   27 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/uri/mailto.rb
   28 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/uri.rb
   29 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/2.5.0/rubygems/specification.rb
[... removed for brevity ...]
 5063 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.1.6/lib/active_record/coders/yaml_column.rb
 5064 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/devise-4.4.3/lib/devise/delegator.rb
 5065 /Users/jerome/c/stackshare/stackshare/config/environment.rb
 5066 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/sprockets-3.7.2/lib/rake/sprocketstask.rb
 5067 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/task.rb
 5068 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/rspec-core-3.7.1/lib/rspec/core/rake_task.rb
 5069 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/react_on_rails-10.1.3/lib/react_on_rails/assets_precompile.rb
 5070 /Users/jerome/c/stackshare/stackshare/lib/data_aggregator/hackernews.rb
 5071 /Users/jerome/c/stackshare/stackshare/lib/data_aggregator/reddit.rb
 5072 /Users/jerome/c/stackshare/stackshare/lib/data_aggregator/stackoverflow.rb
 5073 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/railties-5.1.6/lib/rails/dev_caching.rb
 5074 /usr/local/Cellar/asdf/0.4.3/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/railties-5.1.6/lib/rails/tasks.rb

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

[IMPORTANT]
Don't forget to include the Crash Report log file under
DiagnosticReports directory in bug reports.

Notes

  • The same happens when spring is stopped and after running a rake task, like rake routes
  • Things work perfectly with Ruby 2.5.0. The problem happens only with Ruby 2.5.1.
  • Some coworkers have seen this problem happen with gems on newer ruby versions. Maybe fixing this error is just a matter of updating your gems?
@eli-darkly
Copy link
Contributor

We'll look into this. Could you also provide any details about your usage of the LaunchDarkly Ruby SDK, like what version of it are you using and are you modifying the default configuration at all?

@jeromedalbert
Copy link
Author

ldclient-rb (4.0.0), default config.

Per your setup instructions:

Spring.after_fork do
  Rails.configuration.ld_client = LaunchDarkly::LDClient.new(ENV['LD_KEY'])
end

Might be related since it seems to be Spring only

@jeromedalbert
Copy link
Author

We upgraded to the latest version of the gem, and it fixed the problem.

@eli-darkly
Copy link
Contributor

Glad to hear the problem has gone away. If I had to guess, I would guess that this problem had something to do with Celluloid - I don't know of any specific issue with Celluloid+Rails+Spring, but I have definitely seen reports of many ways it can segfault. As of version 5.0.0 of the SDK, we no longer use Celluloid.

Anyway - I will reopen this issue if we ever hear of a similar report.

eli-darkly pushed a commit that referenced this issue Feb 11, 2019
LaunchDarklyReleaseBot added a commit that referenced this issue Mar 18, 2022
* fix doc comments

* add YARD config so our docs show up correctly everywhere

* don't need markup-provider option

* rm obsolete proxy param

* remove net-http-persistent

* fix concurrent-ruby usage that breaks on Windows

* add pipeline and clean up with with rm_rf instead of rm

* fix highlight blocks

* Hr/azure3 (#103)

* Add Consul and Redis services to Windows.
* Enable Consul and Redis testing

* add dynamo (#104)

* add experimentation event overrides for rules and fallthrough

* warn & don't send event if identify or track has no valid user

* include user in prereq flag events

* rm unnecessary logic

* more factory methods

* update readme to refer to docs

* add Ruby 2.6.2 to CI

* fix missing require for net/http

* stringify built-in user attributes in events, and secondary key for evals

* make const names consistent

* support metric value with track()

* update method description

* applying markdown templates and updating repository url references

* Cleaning up markdown files

* allow skipping database tests

* Updating the package name (#115)

* update package name

* missed one

* revert module entry point name change

* bump ld-eventsource version for stream logging fix

* use YAML.safe_load

* add unit test and temporarily revert fix to demonstrate failure

* restore fix

* add comment about not using FileDataSource in production

* drop events if inbox is full

* update doc comment for track with metric_value

* don't let user fall outside of last bucket in rollout

* refactor evaluation logic and move it out of the main namespace

* comments

* fix type coercion behavior

* make type coercion behavior consistent with earlier versions for now

* whitespace

* break up Evaluator tests further

* make EvaluationReason an immutable class

* FrozenError doesn't exist in older Ruby, use more general RuntimeError

* precompute evaluation reasons when we receive a flag

* rm unused

* rename FeatureStore to DataStore

* remove references to UpdateProcessor (now DataSource)

* add event payload ID header

* (6.0) drop support for old Ruby versions

* add Ruby version constraint to gemspec

* remove Rake dependency

* update ld-eventsource to 1.0.2 which doesn't have Rake dependency

* implement diagnostic events in Ruby (#130)

* update ruby-eventsource to 1.0.3 for backoff bug

* fix incorrect initialization of EventProcessor

* remove install-time openssl check that breaks if you don't have rake

* treat comparison with wrong data type as a non-match, not an exception (#134)

* fail fast for nil SDK key when appropriate

* tolerate nil value for user.custom (#137)

* Only shutdown the Redis pool if it is owned by the SDK (#158)

* Only shutdown a Redis pool created by SDK

* Make pool shutdown behavior an option

* improve doc comment

* remove support for indirect/patch and indirect/put (#138)

* update to json 2.3.1 (#139)

* update json dep to 2.3.x to fix CVE

* add publication of API docs on GitHub Pages (#143)

* try fixing release metadata

* update the default base url (#144)

* revert renames of feature_store & update_processor

* [ch92483] Use http gem and add socket factory support (#142)

* update dependencies and add CI for ruby 3 (#141)

* reference eventsource 2.0 in gemspec

* add 5.x releasable branch for releaser

* use Ruby 2.6.6 in releases

* Removed the guides link

* [ch99757] add alias method (#147)

* don't send event for nil user evaluation

* remove lockfile (#148)

* rm redundant nil check

* Experiment Allocation Changes (#150)

* WIP - from sam's pairing session

* starting sdk changes

* adding tests and making sure everything works

* adding more tests

* removing the singleton for fallthrough

* Revert "removing the singleton for fallthrough"

This reverts commit dff7adbb809ecc63118d0fbff9742a88a039c679.

* taking a different approach to keep things immutable

* adding tests for untracked

* remove unnecessary comment

* making sure to return two values in all code paths

Co-authored-by: pellyg-ld <gpelly@launchdarkly.com>

* Use camelCase for JSON property names (#151)

The in_experiment attribute was added to reasons as part of #150 but it doesn't appear to be received in events. I think that's because it's sending it in JSON as "in_experiment" rather than "inExperiment" as we expect to parse it.

* fixing ruby logic causing ih failures (#152)

* fixing ruby logic

* adding missing spec

* Apply suggestions from code review

Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>

* pr tweaks

* making spec language consistent

Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>

* add log warning for missing user key (#153)

* add log warnings for nil/empty user key

* rm warning for empty string key

* fix test

* diagnostic events should respect HTTPS_PROXY (#154)

* minor test simplification (#155)

* allow higher minor versions of json and http gems

* allow v5.x of http gem (#157)

* use Bundler 2.2.10 + modernize CI config (#158)

* enable verbose rspec output

* fix socket factory tests

* restore log suppression

* Replacing deprecated circleci image usage (#159)

* use Releaser v2 config (#161)

* Updates docs URLs

* Update lib/ldclient-rb/ldclient.rb

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

* remove reliance on git in gemspec (#163)

* use ruby-eventsource 2.1.1 for fix of sc-123850 and sc-125504 (#164)

* use ruby-eventsource 2.1.1 for fix of sc-123850 and sc-125504

* comment phrasing

* Start work on flag builder.

* Add user targeting and rule builder

* Add datasource implementation

* Convert the current_flags hash to use symbols instead of strings as keys

* Fix typo on FlagRuleBuilder copy constructor

* minor refactoring of impl; Added use of new Clause struct instead of Hash in FlagRuleBuilder; Moved TestData.factory out of Impl namespace and renamed Impl to TestDataImpl

* Add the doc comments

* (big segments 1) add public config/interface/reason types (#167)

* Cleanup docstrings to be YARD docs

* Added Util.is_bool helper function to clean up the check for whether an object is a boolean; Removed the DeepCopyHash/DeepCopyArray objects in favor of deep_copy_hash and deep_copy_array functions

* Move public classes out of Impl namespace. Most of it is in public namespace except for the data source now.

* Move require of concurrent/atomics to the correct module

* (big segments 2) implement Big Segments evaluation & status APIs (#168)

* improve CONTRIBUTING.md with notes on code organization

* add note about doc comments

* Cleanup YARD warnings and cleanup docs

* Address PR feedback: Move is_bool back to Impl namespace to avoid confusion; Remove unnecessary nil check on variations in build function; fixup comments

* (big segments 3) implement Redis & DynamoDB big segment stores (#169)

* add missing import

* fix stale calculation

* fix big segments user hash algorithm to use SHA256

* improve & refactor client/evaluation tests

* more cleanup/DRY

* add use_preconfigured_flag and use_preconfigured_segment to TestData (#173)

* always cache big segment query result even if it's nil

* comments

* add test for cache expiration

* use TestData in our own tests (#174)

* use TestData in our own tests

* fix test

* replace LaunchDarkly::FileDataSource with LaunchDarkly::Integrations::FileData

* update ruby-eventsource version for recent SSE fixes

* Bump bundler version (#184)

* Add ability to to set initial reconnect delay (#183)

* Treat secondary as a built-in attribute (#180)

* all_flags_state is invalid if store isn't initialized (#182)

* identify should not emit events if user key is "" (#181)

* Account for traffic allocation on all flags (#185)

* Add contract tests (#178)

* Fix string interpolation in log message (#187)

* Default opts to empty hash when creating persistent feature store (#186)

* Remove Hakiri badge from README (#188)

Hakiri was sunset on January 31st, 2022 at which time our badge stopped
working.

* detect http/https proxy env vars when creating HTTP clients

* rever accidental change

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: hroederld <46500128+hroederld@users.noreply.github.com>
Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Jacob Smith <jacob@jacobsmith.io>
Co-authored-by: Elliot <35050275+Apache-HB@users.noreply.github.com>
Co-authored-by: Kerrie Martinez <kyee@launchdarkly.com>
Co-authored-by: pellyg-ld <gpelly@launchdarkly.com>
Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Ember Stevens <ember.stevens@launchdarkly.com>
Co-authored-by: ember-stevens <79482775+ember-stevens@users.noreply.github.com>
Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>
Co-authored-by: Matthew M. Keeler <keelerm84@gmail.com>
Co-authored-by: Ben Levy <benjaminlevy007@gmail.com>
Co-authored-by: Ben Levy <ben@foxhound.systems>
Co-authored-by: Matthew M. Keeler <mkeeler@launchdarkly.com>
LaunchDarklyReleaseBot added a commit that referenced this issue Jun 15, 2022
* rm obsolete proxy param

* remove net-http-persistent

* fix concurrent-ruby usage that breaks on Windows

* add pipeline and clean up with with rm_rf instead of rm

* fix highlight blocks

* Hr/azure3 (#103)

* Add Consul and Redis services to Windows.
* Enable Consul and Redis testing

* add dynamo (#104)

* add experimentation event overrides for rules and fallthrough

* warn & don't send event if identify or track has no valid user

* include user in prereq flag events

* rm unnecessary logic

* more factory methods

* update readme to refer to docs

* add Ruby 2.6.2 to CI

* fix missing require for net/http

* stringify built-in user attributes in events, and secondary key for evals

* make const names consistent

* support metric value with track()

* update method description

* applying markdown templates and updating repository url references

* Cleaning up markdown files

* allow skipping database tests

* Updating the package name (#115)

* update package name

* missed one

* revert module entry point name change

* bump ld-eventsource version for stream logging fix

* use YAML.safe_load

* add unit test and temporarily revert fix to demonstrate failure

* restore fix

* add comment about not using FileDataSource in production

* drop events if inbox is full

* update doc comment for track with metric_value

* don't let user fall outside of last bucket in rollout

* refactor evaluation logic and move it out of the main namespace

* comments

* fix type coercion behavior

* make type coercion behavior consistent with earlier versions for now

* whitespace

* break up Evaluator tests further

* make EvaluationReason an immutable class

* FrozenError doesn't exist in older Ruby, use more general RuntimeError

* precompute evaluation reasons when we receive a flag

* rm unused

* rename FeatureStore to DataStore

* remove references to UpdateProcessor (now DataSource)

* add event payload ID header

* (6.0) drop support for old Ruby versions

* add Ruby version constraint to gemspec

* remove Rake dependency

* update ld-eventsource to 1.0.2 which doesn't have Rake dependency

* implement diagnostic events in Ruby (#130)

* update ruby-eventsource to 1.0.3 for backoff bug

* fix incorrect initialization of EventProcessor

* remove install-time openssl check that breaks if you don't have rake

* treat comparison with wrong data type as a non-match, not an exception (#134)

* fail fast for nil SDK key when appropriate

* tolerate nil value for user.custom (#137)

* Only shutdown the Redis pool if it is owned by the SDK (#158)

* Only shutdown a Redis pool created by SDK

* Make pool shutdown behavior an option

* improve doc comment

* remove support for indirect/patch and indirect/put (#138)

* update to json 2.3.1 (#139)

* update json dep to 2.3.x to fix CVE

* add publication of API docs on GitHub Pages (#143)

* try fixing release metadata

* update the default base url (#144)

* revert renames of feature_store & update_processor

* [ch92483] Use http gem and add socket factory support (#142)

* update dependencies and add CI for ruby 3 (#141)

* reference eventsource 2.0 in gemspec

* add 5.x releasable branch for releaser

* use Ruby 2.6.6 in releases

* Removed the guides link

* [ch99757] add alias method (#147)

* don't send event for nil user evaluation

* remove lockfile (#148)

* rm redundant nil check

* Experiment Allocation Changes (#150)

* WIP - from sam's pairing session

* starting sdk changes

* adding tests and making sure everything works

* adding more tests

* removing the singleton for fallthrough

* Revert "removing the singleton for fallthrough"

This reverts commit dff7adbb809ecc63118d0fbff9742a88a039c679.

* taking a different approach to keep things immutable

* adding tests for untracked

* remove unnecessary comment

* making sure to return two values in all code paths

Co-authored-by: pellyg-ld <gpelly@launchdarkly.com>

* Use camelCase for JSON property names (#151)

The in_experiment attribute was added to reasons as part of #150 but it doesn't appear to be received in events. I think that's because it's sending it in JSON as "in_experiment" rather than "inExperiment" as we expect to parse it.

* fixing ruby logic causing ih failures (#152)

* fixing ruby logic

* adding missing spec

* Apply suggestions from code review

Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>

* pr tweaks

* making spec language consistent

Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>

* add log warning for missing user key (#153)

* add log warnings for nil/empty user key

* rm warning for empty string key

* fix test

* diagnostic events should respect HTTPS_PROXY (#154)

* minor test simplification (#155)

* allow higher minor versions of json and http gems

* allow v5.x of http gem (#157)

* use Bundler 2.2.10 + modernize CI config (#158)

* enable verbose rspec output

* fix socket factory tests

* restore log suppression

* Replacing deprecated circleci image usage (#159)

* use Releaser v2 config (#161)

* Updates docs URLs

* Update lib/ldclient-rb/ldclient.rb

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

* remove reliance on git in gemspec (#163)

* use ruby-eventsource 2.1.1 for fix of sc-123850 and sc-125504 (#164)

* use ruby-eventsource 2.1.1 for fix of sc-123850 and sc-125504

* comment phrasing

* Start work on flag builder.

* Add user targeting and rule builder

* Add datasource implementation

* Convert the current_flags hash to use symbols instead of strings as keys

* Fix typo on FlagRuleBuilder copy constructor

* minor refactoring of impl; Added use of new Clause struct instead of Hash in FlagRuleBuilder; Moved TestData.factory out of Impl namespace and renamed Impl to TestDataImpl

* Add the doc comments

* (big segments 1) add public config/interface/reason types (#167)

* Cleanup docstrings to be YARD docs

* Added Util.is_bool helper function to clean up the check for whether an object is a boolean; Removed the DeepCopyHash/DeepCopyArray objects in favor of deep_copy_hash and deep_copy_array functions

* Move public classes out of Impl namespace. Most of it is in public namespace except for the data source now.

* Move require of concurrent/atomics to the correct module

* (big segments 2) implement Big Segments evaluation & status APIs (#168)

* improve CONTRIBUTING.md with notes on code organization

* add note about doc comments

* Cleanup YARD warnings and cleanup docs

* Address PR feedback: Move is_bool back to Impl namespace to avoid confusion; Remove unnecessary nil check on variations in build function; fixup comments

* (big segments 3) implement Redis & DynamoDB big segment stores (#169)

* add missing import

* fix stale calculation

* fix big segments user hash algorithm to use SHA256

* improve & refactor client/evaluation tests

* more cleanup/DRY

* add use_preconfigured_flag and use_preconfigured_segment to TestData (#173)

* always cache big segment query result even if it's nil

* comments

* add test for cache expiration

* use TestData in our own tests (#174)

* use TestData in our own tests

* fix test

* replace LaunchDarkly::FileDataSource with LaunchDarkly::Integrations::FileData

* update ruby-eventsource version for recent SSE fixes

* Bump bundler version (#184)

* Add ability to to set initial reconnect delay (#183)

* Treat secondary as a built-in attribute (#180)

* all_flags_state is invalid if store isn't initialized (#182)

* identify should not emit events if user key is "" (#181)

* Account for traffic allocation on all flags (#185)

* Add contract tests (#178)

* Fix string interpolation in log message (#187)

* Default opts to empty hash when creating persistent feature store (#186)

* Remove Hakiri badge from README (#188)

Hakiri was sunset on January 31st, 2022 at which time our badge stopped
working.

* detect http/https proxy env vars when creating HTTP clients

* rever accidental change

* fix nil safety in test service config

* master -> main (#190)

* master -> main

* update ruby-eventsource version for parsing efficiency fix

Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: Harpo roeder <hroeder@launchdarkly.com>
Co-authored-by: hroederld <46500128+hroederld@users.noreply.github.com>
Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Jacob Smith <jacob@jacobsmith.io>
Co-authored-by: Elliot <35050275+Apache-HB@users.noreply.github.com>
Co-authored-by: Kerrie Martinez <kyee@launchdarkly.com>
Co-authored-by: pellyg-ld <gpelly@launchdarkly.com>
Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Ember Stevens <ember.stevens@launchdarkly.com>
Co-authored-by: ember-stevens <79482775+ember-stevens@users.noreply.github.com>
Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>
Co-authored-by: Matthew M. Keeler <keelerm84@gmail.com>
Co-authored-by: Ben Levy <benjaminlevy007@gmail.com>
Co-authored-by: Ben Levy <ben@foxhound.systems>
Co-authored-by: Matthew M. Keeler <mkeeler@launchdarkly.com>
LaunchDarklyReleaseBot added a commit that referenced this issue Jun 30, 2022
* remove net-http-persistent

* fix concurrent-ruby usage that breaks on Windows

* add pipeline and clean up with with rm_rf instead of rm

* fix highlight blocks

* Hr/azure3 (#103)

* Add Consul and Redis services to Windows.
* Enable Consul and Redis testing

* add dynamo (#104)

* add experimentation event overrides for rules and fallthrough

* warn & don't send event if identify or track has no valid user

* include user in prereq flag events

* rm unnecessary logic

* more factory methods

* update readme to refer to docs

* add Ruby 2.6.2 to CI

* fix missing require for net/http

* stringify built-in user attributes in events, and secondary key for evals

* make const names consistent

* support metric value with track()

* update method description

* applying markdown templates and updating repository url references

* Cleaning up markdown files

* allow skipping database tests

* Updating the package name (#115)

* update package name

* missed one

* revert module entry point name change

* bump ld-eventsource version for stream logging fix

* use YAML.safe_load

* add unit test and temporarily revert fix to demonstrate failure

* restore fix

* add comment about not using FileDataSource in production

* drop events if inbox is full

* update doc comment for track with metric_value

* don't let user fall outside of last bucket in rollout

* refactor evaluation logic and move it out of the main namespace

* comments

* fix type coercion behavior

* make type coercion behavior consistent with earlier versions for now

* whitespace

* break up Evaluator tests further

* make EvaluationReason an immutable class

* FrozenError doesn't exist in older Ruby, use more general RuntimeError

* precompute evaluation reasons when we receive a flag

* rm unused

* rename FeatureStore to DataStore

* remove references to UpdateProcessor (now DataSource)

* add event payload ID header

* (6.0) drop support for old Ruby versions

* add Ruby version constraint to gemspec

* remove Rake dependency

* update ld-eventsource to 1.0.2 which doesn't have Rake dependency

* implement diagnostic events in Ruby (#130)

* update ruby-eventsource to 1.0.3 for backoff bug

* fix incorrect initialization of EventProcessor

* remove install-time openssl check that breaks if you don't have rake

* treat comparison with wrong data type as a non-match, not an exception (#134)

* fail fast for nil SDK key when appropriate

* tolerate nil value for user.custom (#137)

* Only shutdown the Redis pool if it is owned by the SDK (#158)

* Only shutdown a Redis pool created by SDK

* Make pool shutdown behavior an option

* improve doc comment

* remove support for indirect/patch and indirect/put (#138)

* update to json 2.3.1 (#139)

* update json dep to 2.3.x to fix CVE

* add publication of API docs on GitHub Pages (#143)

* try fixing release metadata

* update the default base url (#144)

* revert renames of feature_store & update_processor

* [ch92483] Use http gem and add socket factory support (#142)

* update dependencies and add CI for ruby 3 (#141)

* reference eventsource 2.0 in gemspec

* add 5.x releasable branch for releaser

* use Ruby 2.6.6 in releases

* Removed the guides link

* [ch99757] add alias method (#147)

* don't send event for nil user evaluation

* remove lockfile (#148)

* rm redundant nil check

* Experiment Allocation Changes (#150)

* WIP - from sam's pairing session

* starting sdk changes

* adding tests and making sure everything works

* adding more tests

* removing the singleton for fallthrough

* Revert "removing the singleton for fallthrough"

This reverts commit dff7adbb809ecc63118d0fbff9742a88a039c679.

* taking a different approach to keep things immutable

* adding tests for untracked

* remove unnecessary comment

* making sure to return two values in all code paths

Co-authored-by: pellyg-ld <gpelly@launchdarkly.com>

* Use camelCase for JSON property names (#151)

The in_experiment attribute was added to reasons as part of #150 but it doesn't appear to be received in events. I think that's because it's sending it in JSON as "in_experiment" rather than "inExperiment" as we expect to parse it.

* fixing ruby logic causing ih failures (#152)

* fixing ruby logic

* adding missing spec

* Apply suggestions from code review

Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>

* pr tweaks

* making spec language consistent

Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>

* add log warning for missing user key (#153)

* add log warnings for nil/empty user key

* rm warning for empty string key

* fix test

* diagnostic events should respect HTTPS_PROXY (#154)

* minor test simplification (#155)

* allow higher minor versions of json and http gems

* allow v5.x of http gem (#157)

* use Bundler 2.2.10 + modernize CI config (#158)

* enable verbose rspec output

* fix socket factory tests

* restore log suppression

* Replacing deprecated circleci image usage (#159)

* use Releaser v2 config (#161)

* Updates docs URLs

* Update lib/ldclient-rb/ldclient.rb

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

* remove reliance on git in gemspec (#163)

* use ruby-eventsource 2.1.1 for fix of sc-123850 and sc-125504 (#164)

* use ruby-eventsource 2.1.1 for fix of sc-123850 and sc-125504

* comment phrasing

* Start work on flag builder.

* Add user targeting and rule builder

* Add datasource implementation

* Convert the current_flags hash to use symbols instead of strings as keys

* Fix typo on FlagRuleBuilder copy constructor

* minor refactoring of impl; Added use of new Clause struct instead of Hash in FlagRuleBuilder; Moved TestData.factory out of Impl namespace and renamed Impl to TestDataImpl

* Add the doc comments

* (big segments 1) add public config/interface/reason types (#167)

* Cleanup docstrings to be YARD docs

* Added Util.is_bool helper function to clean up the check for whether an object is a boolean; Removed the DeepCopyHash/DeepCopyArray objects in favor of deep_copy_hash and deep_copy_array functions

* Move public classes out of Impl namespace. Most of it is in public namespace except for the data source now.

* Move require of concurrent/atomics to the correct module

* (big segments 2) implement Big Segments evaluation & status APIs (#168)

* improve CONTRIBUTING.md with notes on code organization

* add note about doc comments

* Cleanup YARD warnings and cleanup docs

* Address PR feedback: Move is_bool back to Impl namespace to avoid confusion; Remove unnecessary nil check on variations in build function; fixup comments

* (big segments 3) implement Redis & DynamoDB big segment stores (#169)

* add missing import

* fix stale calculation

* fix big segments user hash algorithm to use SHA256

* improve & refactor client/evaluation tests

* more cleanup/DRY

* add use_preconfigured_flag and use_preconfigured_segment to TestData (#173)

* always cache big segment query result even if it's nil

* comments

* add test for cache expiration

* use TestData in our own tests (#174)

* use TestData in our own tests

* fix test

* replace LaunchDarkly::FileDataSource with LaunchDarkly::Integrations::FileData

* update ruby-eventsource version for recent SSE fixes

* Bump bundler version (#184)

* Add ability to to set initial reconnect delay (#183)

* Treat secondary as a built-in attribute (#180)

* all_flags_state is invalid if store isn't initialized (#182)

* identify should not emit events if user key is "" (#181)

* Account for traffic allocation on all flags (#185)

* Add contract tests (#178)

* Fix string interpolation in log message (#187)

* Default opts to empty hash when creating persistent feature store (#186)

* Remove Hakiri badge from README (#188)

Hakiri was sunset on January 31st, 2022 at which time our badge stopped
working.

* detect http/https proxy env vars when creating HTTP clients

* rever accidental change

* fix nil safety in test service config

* master -> main (#190)

* master -> main

* update ruby-eventsource version for parsing efficiency fix

* miscellaneous optimizations for event processing (#193)

Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: Harpo roeder <hroeder@launchdarkly.com>
Co-authored-by: hroederld <46500128+hroederld@users.noreply.github.com>
Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Jacob Smith <jacob@jacobsmith.io>
Co-authored-by: Elliot <35050275+Apache-HB@users.noreply.github.com>
Co-authored-by: Kerrie Martinez <kyee@launchdarkly.com>
Co-authored-by: pellyg-ld <gpelly@launchdarkly.com>
Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Ember Stevens <ember.stevens@launchdarkly.com>
Co-authored-by: ember-stevens <79482775+ember-stevens@users.noreply.github.com>
Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>
Co-authored-by: Matthew M. Keeler <keelerm84@gmail.com>
Co-authored-by: Ben Levy <benjaminlevy007@gmail.com>
Co-authored-by: Ben Levy <ben@foxhound.systems>
Co-authored-by: Matthew M. Keeler <mkeeler@launchdarkly.com>
eli-darkly added a commit that referenced this issue Sep 7, 2022
* Hr/azure3 (#103)

* Add Consul and Redis services to Windows.
* Enable Consul and Redis testing

* add dynamo (#104)

* add experimentation event overrides for rules and fallthrough

* warn & don't send event if identify or track has no valid user

* include user in prereq flag events

* rm unnecessary logic

* more factory methods

* update readme to refer to docs

* add Ruby 2.6.2 to CI

* fix missing require for net/http

* stringify built-in user attributes in events, and secondary key for evals

* make const names consistent

* support metric value with track()

* update method description

* applying markdown templates and updating repository url references

* Cleaning up markdown files

* allow skipping database tests

* Updating the package name (#115)

* update package name

* missed one

* revert module entry point name change

* bump ld-eventsource version for stream logging fix

* use YAML.safe_load

* add unit test and temporarily revert fix to demonstrate failure

* restore fix

* add comment about not using FileDataSource in production

* drop events if inbox is full

* update doc comment for track with metric_value

* don't let user fall outside of last bucket in rollout

* refactor evaluation logic and move it out of the main namespace

* comments

* fix type coercion behavior

* make type coercion behavior consistent with earlier versions for now

* whitespace

* break up Evaluator tests further

* make EvaluationReason an immutable class

* FrozenError doesn't exist in older Ruby, use more general RuntimeError

* precompute evaluation reasons when we receive a flag

* rm unused

* rename FeatureStore to DataStore

* remove references to UpdateProcessor (now DataSource)

* add event payload ID header

* (6.0) drop support for old Ruby versions

* add Ruby version constraint to gemspec

* remove Rake dependency

* update ld-eventsource to 1.0.2 which doesn't have Rake dependency

* implement diagnostic events in Ruby (#130)

* update ruby-eventsource to 1.0.3 for backoff bug

* fix incorrect initialization of EventProcessor

* remove install-time openssl check that breaks if you don't have rake

* treat comparison with wrong data type as a non-match, not an exception (#134)

* fail fast for nil SDK key when appropriate

* tolerate nil value for user.custom (#137)

* Only shutdown the Redis pool if it is owned by the SDK (#158)

* Only shutdown a Redis pool created by SDK

* Make pool shutdown behavior an option

* improve doc comment

* remove support for indirect/patch and indirect/put (#138)

* update to json 2.3.1 (#139)

* update json dep to 2.3.x to fix CVE

* add publication of API docs on GitHub Pages (#143)

* try fixing release metadata

* update the default base url (#144)

* revert renames of feature_store & update_processor

* [ch92483] Use http gem and add socket factory support (#142)

* update dependencies and add CI for ruby 3 (#141)

* reference eventsource 2.0 in gemspec

* add 5.x releasable branch for releaser

* use Ruby 2.6.6 in releases

* Removed the guides link

* [ch99757] add alias method (#147)

* don't send event for nil user evaluation

* remove lockfile (#148)

* rm redundant nil check

* Experiment Allocation Changes (#150)

* WIP - from sam's pairing session

* starting sdk changes

* adding tests and making sure everything works

* adding more tests

* removing the singleton for fallthrough

* Revert "removing the singleton for fallthrough"

This reverts commit dff7adbb809ecc63118d0fbff9742a88a039c679.

* taking a different approach to keep things immutable

* adding tests for untracked

* remove unnecessary comment

* making sure to return two values in all code paths

Co-authored-by: pellyg-ld <gpelly@launchdarkly.com>

* Use camelCase for JSON property names (#151)

The in_experiment attribute was added to reasons as part of #150 but it doesn't appear to be received in events. I think that's because it's sending it in JSON as "in_experiment" rather than "inExperiment" as we expect to parse it.

* fixing ruby logic causing ih failures (#152)

* fixing ruby logic

* adding missing spec

* Apply suggestions from code review

Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>

* pr tweaks

* making spec language consistent

Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>

* add log warning for missing user key (#153)

* add log warnings for nil/empty user key

* rm warning for empty string key

* fix test

* diagnostic events should respect HTTPS_PROXY (#154)

* minor test simplification (#155)

* allow higher minor versions of json and http gems

* allow v5.x of http gem (#157)

* use Bundler 2.2.10 + modernize CI config (#158)

* enable verbose rspec output

* fix socket factory tests

* restore log suppression

* Replacing deprecated circleci image usage (#159)

* use Releaser v2 config (#161)

* Updates docs URLs

* Update lib/ldclient-rb/ldclient.rb

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

* remove reliance on git in gemspec (#163)

* use ruby-eventsource 2.1.1 for fix of sc-123850 and sc-125504 (#164)

* use ruby-eventsource 2.1.1 for fix of sc-123850 and sc-125504

* comment phrasing

* Start work on flag builder.

* Add user targeting and rule builder

* Add datasource implementation

* Convert the current_flags hash to use symbols instead of strings as keys

* Fix typo on FlagRuleBuilder copy constructor

* minor refactoring of impl; Added use of new Clause struct instead of Hash in FlagRuleBuilder; Moved TestData.factory out of Impl namespace and renamed Impl to TestDataImpl

* Add the doc comments

* (big segments 1) add public config/interface/reason types (#167)

* Cleanup docstrings to be YARD docs

* Added Util.is_bool helper function to clean up the check for whether an object is a boolean; Removed the DeepCopyHash/DeepCopyArray objects in favor of deep_copy_hash and deep_copy_array functions

* Move public classes out of Impl namespace. Most of it is in public namespace except for the data source now.

* Move require of concurrent/atomics to the correct module

* (big segments 2) implement Big Segments evaluation & status APIs (#168)

* improve CONTRIBUTING.md with notes on code organization

* add note about doc comments

* Cleanup YARD warnings and cleanup docs

* Address PR feedback: Move is_bool back to Impl namespace to avoid confusion; Remove unnecessary nil check on variations in build function; fixup comments

* (big segments 3) implement Redis & DynamoDB big segment stores (#169)

* add missing import

* fix stale calculation

* fix big segments user hash algorithm to use SHA256

* improve & refactor client/evaluation tests

* more cleanup/DRY

* add use_preconfigured_flag and use_preconfigured_segment to TestData (#173)

* always cache big segment query result even if it's nil

* comments

* add test for cache expiration

* use TestData in our own tests (#174)

* use TestData in our own tests

* fix test

* replace LaunchDarkly::FileDataSource with LaunchDarkly::Integrations::FileData

* update ruby-eventsource version for recent SSE fixes

* Bump bundler version (#184)

* Add ability to to set initial reconnect delay (#183)

* Treat secondary as a built-in attribute (#180)

* all_flags_state is invalid if store isn't initialized (#182)

* identify should not emit events if user key is "" (#181)

* Account for traffic allocation on all flags (#185)

* Add contract tests (#178)

* Fix string interpolation in log message (#187)

* Default opts to empty hash when creating persistent feature store (#186)

* Remove Hakiri badge from README (#188)

Hakiri was sunset on January 31st, 2022 at which time our badge stopped
working.

* detect http/https proxy env vars when creating HTTP clients

* rever accidental change

* fix nil safety in test service config

* master -> main (#190)

* master -> main

* update ruby-eventsource version for parsing efficiency fix

* miscellaneous optimizations for event processing (#193)

* Add polling support for contract test service (#198)

* Add windows tests in circleci (#199)

At some point in the past, we were experimenting with using Azure to
verify Window builds. Now that CircleCI supports Windows, we should keep
everything on a single CI provider.

* Add application info support (#194)

* reuse EvaluationDetail instances by precomputing results

Co-authored-by: hroederld <46500128+hroederld@users.noreply.github.com>
Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Jacob Smith <jacob@jacobsmith.io>
Co-authored-by: Elliot <35050275+Apache-HB@users.noreply.github.com>
Co-authored-by: hroederld <hroeder@launchdarkly.com>
Co-authored-by: Kerrie Martinez <kyee@launchdarkly.com>
Co-authored-by: pellyg-ld <gpelly@launchdarkly.com>
Co-authored-by: Sam Stokes <sstokes@launchdarkly.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Ember Stevens <ember.stevens@launchdarkly.com>
Co-authored-by: ember-stevens <79482775+ember-stevens@users.noreply.github.com>
Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>
Co-authored-by: Matthew M. Keeler <keelerm84@gmail.com>
Co-authored-by: Ben Levy <benjaminlevy007@gmail.com>
Co-authored-by: Ben Levy <ben@foxhound.systems>
Co-authored-by: Matthew M. Keeler <mkeeler@launchdarkly.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.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

No branches or pull requests

2 participants