Tallan's Technology Blog

Tallan's Top Technologists Share Their Thoughts on Today's Technology Challenges

Failures & “Uh-Oh Spaghettios” When Deploying MuleSoft API Kit Project to the Cloud Mule Runtime

Paul Gutierrez

On my quest to master MuleSoft Restful APIs I encountered this walk-through on MuleSoft’s documentation site which was exactly what I was looking for: a low level step by step guide on the entire restful API lifecycle using MuleSoft and RAML. While reading through the steps of this walk-through it was apparent early on that it was done on a previous version of the Mule Runtime than the one I had currently. As of the date of this blog post the walk-through contains instructions for the 3.5.1 runtime while mine was for the 3.6.1 runtime. Overall, it didn’t seem like much of a difference, and any differences I spotted were easily applicable to my current version… that is until I tried to deploy the project to CloudHub. This blog post is to help anybody else who is following along with the MuleSoft documentation so that they can quickly catch these small errors and apply it to their project. There were two issues I encountered:

  1. Overall failure to deploy my MuleSoft API Kit project to the Cloud Mule Runtime
  2. Once deployed, when I navigated to the appropriate end point I got a screen with the following message: “Uh-Oh Spaghettios! There’s nothing here.”

ISSUE #1: Failure To Deploy

When I originally deployed my API Kit project to the Cloud Mule Runtime I got an error straight out of the gate. The issue I got in the logs was: “Your application has failed with exception com.mulesoft.mmc.agent.v3.dto.DeploymentException: Failed to invoke lifecycle phase “start” on object: Flow{api-main}.” I tried finding a solution for this issue without much luck but then I noticed a small difference between the runtime I created the project with and the one selected on the server. Locally my instance of Anypoint Studio came built in with the 3.6.1 runtime. But out on Cloudhub the latest instance was actually 3.6.2! In the MuleSoft walk-through in step 7 it states to use the “latest Mule runtime from the drop-down” which in this case was not actually correct since this was not the version I had used to build my API Kit project. So once I changed the runtime version out on CloudHub to be 3.6.1 I was able to successfully deploy.

 

ISSUE #2: Uh-Oh Spaghettios

Now if you have never seen this issue before you are probably asking: “What’s with all the spaghettios on this tech blog”. There is a saying that pictures are worth a 1,000 words so here is what I’m referring to:

Spaghettios

After successfully deploying my project this was the screen that popped up whenever I tried to reach my desired URL. Despite the funny message I became quite frustrated as to why I would be getting this screen. I looked into the docroot as mentioned on the page but that wasn’t what I wanted at all, as api/products was the endpoint address that I wanted. After hours of blank perplexed stares, futile searches, and some intense wall stares I finally came across this amazing stack overflow page. While the instructions on the walk-through at step 3 mention that you should create a dynamic property ${http.port} they make no mention of the fact that you should also change your host from: localhost to 0.0.0.0.  With that simple change I was able to not only deploy successfully but also get rid of the annoying spaghettios page.

 

So with that I hope this blog post can find it’s way to some MuleSoft beginners who are following along with the walk-through supplied by MuleSoft. If this can save even one person the headaches I encountered trying to solve these issues it will have done it’s job.

No comments

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

\\\