cloudfoundry/cflinuxfs2

RFC: Replacing mysql with mariadb in cflinuxfs2

Closed this issue · 3 comments

Hi There,

We’ve received feedback from the community that applications being deployed on Cloud Foundry may be linking to libmysqlclient, which is distributed under a GPL license. As this was expressed as a potential legal concern we’ve experimented with replacing the mysql client library with mariadb.

We’re happy to conclude that our experiments with Java, Ruby, PHP, Go, Python and Nodejs proved a desired level of backwards compatibility and would like to move forward with shipping the change.

Before we make the change we’d like to request feedback from the community concerning backwards compatibility. If you have concerns and would like to go through validation, we’ve created a docker image [1] for testing.

Our preference is to move forward with a change to the cflinuxfs2 by 3/16/2015. If you have any concerns or feedback please comment on this issue.

[1] - https://hub.docker.com/r/cloudfoundry/cflinuxfs2/tags/

We have created an issue in Pivotal Tracker to manage this. You can view the current status of your issue at: https://www.pivotaltracker.com/story/show/114435333.

Last week we completed changes to the rootfs that removed libmysqlclient in favor of replacing it with libmariadb. This change was released in cf-released v233.

Unfortunately, applications that were previously staged (with stacks v1.45 or earlier) and which depend on the libmysqlclient libraries will fail to to start when they cannot load the mysql
client library.

A workaround is to delete the application (in order to clear application cache) and restage.

Stacks v1.47 will address this by packaging the libmysqlclient files. We expect this will be in the next cf-release. Applications staged using stacks 1.47.0 or later will link against libmariadb, as expected.

Update to the previous comment. The fix in version 1.47 was incomplete. the complete fix was shipped as part of 1.48. This is only relevant for apps that were staged using previous versions of the stack. Those app will continue to link against libmysqlclient.so. Apps staged with this stack or later will link against libmariadbclient.so