6
votes

SOLVED!

Looks like the pipeline service in Bluemix has been updated, the connection to ClearDB works beautifully now! Thanks to whoever pushed that change! :)

--

I am running the code within the Bluemix build & Deploy pipeline, NOT inside the Liberty Profile app server (the application works fine there), the problem lies on the BUILD Stage of the Pipeline (mvn clean install) while running my Unit Tests, here's the error message

Building new Hibernate SessionFactory 2015-04-11 15:04:49 [main] ERROR o.h.util.JDBCExceptionReporter - Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

The Unit Test classes can't connect to the database.

My code doesn't have anything special, you can create any standard JDBC Connection in a JUnit Test class and try to establish connection with the db, but if you want to easily confirm this connectivity limitation, here's how you can test this without any Java code:

  • Create a Liberty Profile app with some Starter Code
  • Create and bind the "ClearDB MySQL" service to it
  • In the App Overview page, expand the ClearDB box by clicking on "Show Credentials" and copy the hostname (e.g., us-cdbr-test-west-07.cleardb.net).
  • Add GIT, back to the App Overview, click on EDIT CODE, Click on "Build & Deploy", click on the configuration icon of the "BUILD Stage", select "Configure Stage" and add the following code to the command box:

code

REMOTEHOST=us-cdbr-test-west-07.cleardb.net
REMOTEPORT=3306
TIMEOUT=1
    
if nc -w $TIMEOUT -z $REMOTEHOST $REMOTEPORT; then
    echo "I was able to connect to ${REMOTEHOST}:${REMOTEPORT}"
else
    echo "Connection to ${REMOTEHOST}:${REMOTEPORT} failed; exit code from netcat was $?"
fi
  • Start the BUILD Stage and check if this message shows up:
[86d18f86-4ade-4e02-8282-171dc9757272] $ /bin/bash /tmp/hudson5506792757013948518.sh
Connection to us-cdbr-test-west-07.cleardb.net:3306 failed; exit code from netcat was 1

Please let know if there's a way to configure the pipeline so it can communicate with ClearDB.

1
Today, the build and deploy servers are limited on outbound connections to port 80 and 443. We are currently investigating if we can loosen this restriction on these build servers and still maintain the required security compliance. We recognize this is a big limitation that needs to be addressed. Thanks for your bug report. Brian K. Martin IBM Bluemix DevelopmentBrian Martin
Can we allow the machines to communicate at least with the DB Services that are binded to the APP's pipeline? Or maybe all outbound requests on port 3306? -- Any idea when such change could be introduced?the_marcelo_r
You should add your "solved" update as an answer and accept it.jpapejr

1 Answers

1
votes

There has been an update to the pipeline service in Bluemix, which has fixed this bug. Connections to the "ClearDB" service should now be working.