Missing services in Business Logic

I have an issue: deployed business logic is missing in the portal under “Deployed Services”.

I did what I have always done:

  1. I write my classes & methods for business logic,
  2. I run npm run debug in terminal
  3. My functions are in debug. I test them, they are working fine
  4. I decide to deploy the updates and hit npm run deploy
  5. Now I open my project’s Business Logic page, and it shows “There are no registered services. Add one now.” message instead of 'Deployed Services" and my classes + functions
  6. I revert my changes in the code, I hit the ‘npm run deploy’ once again, hoping to revert the changes.
  7. Now I see Deployed Servies in your portal, but only 1 out of 2 classes are visible.

Can you explain what happens here? I get no information if there are some errors, and something like this is just simply scary.

Same thing happens when I deploy to two of my projects:

  • Dev: F2FE78BB-5D08-44FE-B074-6E7C29B49B03
  • Prod: 92E6BE6B-8DE1-D74E-FFC3-F1B602528600 (EDIT: for Prod, I successfully reuploaded my code without using keys from config.get(), seems this was a legit workaround)

I thought maybe it happens due to an outdated backendless-coderunner library (was 5.4.8), so did an update to 5.5.0. Same thing.

Looking forward to any solution, worst case I need to understand if my changes are properly reverted, even if I don’t see all the classes listed.

Thanks,
Justinas

A few more details:

I found that this is caused by the config plugin that I use, for some reason it is not able to get the keys from the config file when deployed. The file is in place though.

Uncaught (in promise) {code: 0, message: “Configuration property “ServicebotKey” is not defined”, errorData: {…}, statusCode: 400}

  1. code: 0
  2. errorData: {}
  3. message: “Configuration property “ServicebotKey” is not defined”
  4. statusCode: 400

So I wonder, how this can work on debug, but fail when deployed? (config file is the same locally and uploaded)

Hi @Justinas_Grazulis,

The latest version of backendless-coderunner is 6.1.0. I recommend upgrading to it.

As for the plugin you use, you can verify if it made to the deployment by inspecting the following directory in the Files section of Backendless console:

/servercode/JS/<name of your deployment model>/PRODUCTION

Regards,
Mark

Hi @mark-piller,

Thanks for the response, I indeed updated only to the minor version of the backendless-coderunner. My bad!

After some more investigation, I found more information in the logs I missed before. It seems I haven’t set the working directory for the config plugin and it couldn’t find the keys needed, therefore failing to deploy. Once I did set it, it started working fine.

I only wonder why it didn’t fail, but rather worked properly while debugging without setting this working directory, therefore causing this confusion.

Thanks,
Justinas

Hi @Justinas_Grazulis!

Thank you for details about causes of your error. I will discuss with our team possibility to add validation of required params on CodeRunner startup.

Regards, Andriy

1 Like