Smart proxy fails to start because of: uninitialized constant Concurrent::Edge::Future in Dynflow
I just installed the remote-execution plugin on my Foreman server/proxy and now the foreman-proxy service fails to start with the following error:
/usr/lib/ruby/vendor_ruby/dynflow/director.rb:16:in 'block in <class:Director': uninitialized constant Concurrent::Edge::Future (NameError)
- Ubuntu: 18.04
- Foreman: 1.20.2
- ruby-foreman-remote-execution: 1.6.4-1
- ruby-foreman-remote-execution-core: 1.1.3-1
- ruby-smart-proxy-remote-execution-ssh: 0.2.0-2
- ruby-smart-proxy-dynflow: 0.2.1-1
- ruby-smart-proxy-dynflow-core: 0.2.1-1
Updated by Tuur Dutoit over 4 years ago
It looks like this is a packaging issue.
On Ubuntu 16.04, the ruby-concurrent package included version 1.0.0 of concurrent-ruby and 0.2.0 for concurrent-ruby-edge
On Ubuntu 18.04, the ruby-concurrent package includes version 1.0.5 of concurrent-ruby and 0.3.1 for concurrent-ruby-edge
Now, the 0.2.x -> 0.3.x update of concurrent-ruby-edge got rid of several classes, replacing most of them - including Future - with the Promise class. This means, of course, that Concurrent::Edge::Future doesn't exist anymore.
I'm not sure if this can be solved easily by packaging Dynflow another way. In the end, the code will have to be updated to use Promises, as Futures have been deprecated for at least 2 years now...