puppetlabs / puppet-editor-services

Puppet Language Server for editors
Apache License 2.0
45 stars 21 forks source link

Languageserver doesn't start with Puppet 7.11.0 #311

Closed tmu-sprd closed 2 years ago

tmu-sprd commented 2 years ago

Describe the Bug

Using VSCode 1.60.1 with Puppet extension 1.3.0. Having Puppet 7.11.0 installed, the Languageserver for puppet fails to start with this error:

/home/tmu/.vscode/extensions/puppet.puppet-vscode-1.3.0/vendor/languageserver/lib/puppet_languageserver.rb:218:in `init_puppet': uninitialized constant PuppetLanguageServer::Facter (NameError)
    from /home/tmu/.vscode/extensions/puppet.puppet-vscode-1.3.0/vendor/languageserver/puppet-languageserver:13:in `<main>'
[Info  - 12:26:30 PM] Connection to server got closed. Server will restart.
/home/tmu/.vscode/extensions/puppet.puppet-vscode-1.3.0/vendor/languageserver/lib/puppet_languageserver.rb:218:in `init_puppet': uninitialized constant PuppetLanguageServer::Facter (NameError)
    from /home/tmu/.vscode/extensions/puppet.puppet-vscode-1.3.0/vendor/languageserver/puppet-languageserver:13:in `<main>'
[Info  - 12:26:30 PM] Connection to server got closed. Server will restart.
/home/tmu/.vscode/extensions/puppet.puppet-vscode-1.3.0/vendor/languageserver/lib/puppet_languageserver.rb:218:in `init_puppet': uninitialized constant PuppetLanguageServer::Facter (NameError)
    from /home/tmu/.vscode/extensions/puppet.puppet-vscode-1.3.0/vendor/languageserver/puppet-languageserver:13:in `<main>'
[Info  - 12:26:31 PM] Connection to server got closed. Server will restart.
/home/tmu/.vscode/extensions/puppet.puppet-vscode-1.3.0/vendor/languageserver/lib/puppet_languageserver.rb:218:in `init_puppet': uninitialized constant PuppetLanguageServer::Facter (NameError)
    from /home/tmu/.vscode/extensions/puppet.puppet-vscode-1.3.0/vendor/languageserver/puppet-languageserver:13:in `<main>'
[Info  - 12:26:32 PM] Connection to server got closed. Server will restart.
/home/tmu/.vscode/extensions/puppet.puppet-vscode-1.3.0/vendor/languageserver/lib/puppet_languageserver.rb:218:in `init_puppet': uninitialized constant PuppetLanguageServer::Facter (NameError)
    from /home/tmu/.vscode/extensions/puppet.puppet-vscode-1.3.0/vendor/languageserver/puppet-languageserver:13:in `<main>'
[Error - 12:26:32 PM] Connection to server got closed. Server will not be restarted.

Downgrading Puppet to 7.10.0 fixes this.

Expected Behavior

The Languageserver works with Puppet 7.11.0 installed.

Steps to Reproduce

Steps to reproduce the behavior:

  1. Install puppet gem 7.11.0 with gem install puppet
  2. Start VSCode with Puppet extension and open a puppet project
  3. Languageserver is crashing with above error
  4. Uninstall puppet gem with gem uninstall puppet
  5. Install puppet gem 7.10.0 with gem install puppet -v 7.10.0
  6. Start VSCode with Puppet extension and open a puppet project
  7. Languageserver is starting without issues

Edit: Same applies to instructions in Readme:

  1. git clone , cd, bundle install, bundle exec rake gem_revendor
  2. Error:
    ~/git/puppet-editor-services $ bundle exec ruby ./puppet-languageserver --debug=stdout
    I, [2021-09-20T13:07:52.815105 #2092]  INFO -- : Language Server is v1.2.0
    D, [2021-09-20T13:07:52.815130 #2092] DEBUG -- : Loading gems...
    I, [2021-09-20T13:07:53.135044 #2092]  INFO -- : Using Puppet v7.11.0
    Traceback (most recent call last):
    1: from ./puppet-languageserver:13:in `<main>'
    /home/tmu/git/puppet-editor-services/lib/puppet_languageserver.rb:218:in `init_puppet': uninitialized constant PuppetLanguageServer::Facter (NameError)

    With 7.10.0 it works:

  3. git clone , cd, PUPPET_GEM_VERSION="7.10.0" bundle install, PUPPET_GEM_VERSION="7.10.0" bundle exec rake gem_revendor
  4. No error:
    ~/git/puppet-editor-services √$ bundle exec ruby ./puppet-languageserver --debug=stdout                                                                                                            
    I, [2021-09-20T13:10:18.902491 #2593]  INFO -- : Language Server is v1.2.0
    D, [2021-09-20T13:10:18.902515 #2593] DEBUG -- : Loading gems...
    I, [2021-09-20T13:10:19.294184 #2593]  INFO -- : Using Puppet v7.10.0
    I, [2021-09-20T13:10:19.294218 #2593]  INFO -- : Using Facter v4.2.4
    D, [2021-09-20T13:10:19.294257 #2593] DEBUG -- : Detected additional puppet settings []
    I, [2021-09-20T13:10:19.299493 #2593]  INFO -- : Initializing settings...
    I, [2021-09-20T13:10:19.299946 #2593]  INFO -- : Starting RPC Server...
    D, [2021-09-20T13:10:19.300093 #2593] DEBUG -- : Using TCP Server
    D, [2021-09-20T13:10:19.301112 #2593] DEBUG -- : TCPSRV: Services running. Press ^C to stop
    D, [2021-09-20T13:10:19.301131 #2593] DEBUG -- : TCPSRV: Will stop the server in 10 seconds if no connection is made.
    D, [2021-09-20T13:10:19.301140 #2593] DEBUG -- : TCPSRV: Will stop the server when client disconnects
    LANGUAGE SERVER RUNNING localhost:41361
    D, [2021-09-20T13:10:19.301260 #2593] DEBUG -- : TCPSRV: Started listening on localhost:41361.
    D, [2021-09-20T13:10:29.310967 #2593] DEBUG -- : TCPSRV: No connection has been received in 10 seconds.  Shutting down server.
    D, [2021-09-20T13:10:29.311009 #2593] DEBUG -- : TCPSRV: Stopping services
    D, [2021-09-20T13:10:29.311024 #2593] DEBUG -- : TCPSRV: Stopped listening on localhost:41361
    D, [2021-09-20T13:10:29.311046 #2593] DEBUG -- : TCPSRV: Started shutdown process. Press ^C to force quit.
    D, [2021-09-20T13:10:29.311052 #2593] DEBUG -- : TCPSRV: Stopping services
    D, [2021-09-20T13:10:29.311060 #2593] DEBUG -- : TCPSRV: Waiting for workers to cycle down
    I, [2021-09-20T13:10:29.327989 #2593]  INFO -- : Language Server exited.

    Environment

    • Puppet extension for VSCode 1.3.0
    • VSCode 1.60.1
    • Platform: Gentoo
    • Gems are installed in user space

Additional Context

Just a guess: Puppet 7.11.0 introduced support for multiple Facter implementations at Puppet initialization: PUP-11216. Can't tell, if this is causing the issue.

tmu-sprd commented 2 years ago

Adding facter as a requirement, it works:

diff --git a/lib/puppet_languageserver.rb b/lib/puppet_languageserver.rb
index 907ab3a..369ea6c 100644
--- a/lib/puppet_languageserver.rb
+++ b/lib/puppet_languageserver.rb
@@ -7,6 +7,7 @@ begin
   require 'puppet_editor_services'
   require 'optparse'
   require 'logger'
+  require 'facter'
 ensure
   $VERBOSE = original_verbose
 end
~/git/puppet-editor-services √$ ruby ./puppet-languageserver --debug=stdout
I, [2021-09-20T13:56:45.798303 #9121]  INFO -- : Language Server is v1.2.0
D, [2021-09-20T13:56:45.798340 #9121] DEBUG -- : Loading gems...
I, [2021-09-20T13:56:46.173832 #9121]  INFO -- : Using Puppet v7.11.0
I, [2021-09-20T13:56:46.173862 #9121]  INFO -- : Using Facter v4.2.4
D, [2021-09-20T13:56:46.173893 #9121] DEBUG -- : Detected additional puppet settings []
I, [2021-09-20T13:56:46.179001 #9121]  INFO -- : Initializing settings...
I, [2021-09-20T13:56:46.179441 #9121]  INFO -- : Starting RPC Server...
D, [2021-09-20T13:56:46.179567 #9121] DEBUG -- : Using TCP Server
D, [2021-09-20T13:56:46.180584 #9121] DEBUG -- : TCPSRV: Services running. Press ^C to stop
D, [2021-09-20T13:56:46.180602 #9121] DEBUG -- : TCPSRV: Will stop the server in 10 seconds if no connection is made.
D, [2021-09-20T13:56:46.180608 #9121] DEBUG -- : TCPSRV: Will stop the server when client disconnects
LANGUAGE SERVER RUNNING localhost:35595
D, [2021-09-20T13:56:46.180687 #9121] DEBUG -- : TCPSRV: Started listening on localhost:35595.
D, [2021-09-20T13:56:56.191759 #9121] DEBUG -- : TCPSRV: No connection has been received in 10 seconds.  Shutting down server.
D, [2021-09-20T13:56:56.191801 #9121] DEBUG -- : TCPSRV: Stopping services
D, [2021-09-20T13:56:56.191816 #9121] DEBUG -- : TCPSRV: Stopped listening on localhost:35595
D, [2021-09-20T13:56:56.191823 #9121] DEBUG -- : TCPSRV: Started shutdown process. Press ^C to force quit.
D, [2021-09-20T13:56:56.191827 #9121] DEBUG -- : TCPSRV: Stopping services
D, [2021-09-20T13:56:56.191834 #9121] DEBUG -- : TCPSRV: Waiting for workers to cycle down
I, [2021-09-20T13:56:56.206028 #9121]  INFO -- : Language Server exited.
da-ar commented 2 years ago

@tmu-sprd thanks for bringing this to our attention, adding facter does indeed allow the server to come up however there are some additional issues with the new facter implementation which we need to solve before we have a fix.