If a Liberty Bluemix application crashes, the default behavior is that it will immediately restart. The problem with this behavior is that all diagnostic files such as dumps and traces are lost. In order to delay the restart so that dumps and traces can be collected, set this environment variable for your application: IBM_JAVA_OPTIONS: -Xdump:tool:events=gpf,exec="sleep 1d" -Xdump:what
This environment variable results in the JVM remaining available (but non-functional) after a crash. Traces and dumps can be collected with the cf files command, and then the application can be restarted with cf stop and cf start.
The application will be automatically restarted after the time period specified on the sleep command (1 day, in the above example). Note that you can specify any time period using s, m, h, or d for seconds, minutes, hours, or days, respectively.
Setting the environment variable can be done in a number of ways:
Using the cf push command with -f option to provide a manifest.yml that contains the environment variable. Here is a sample manifest.yml:
Using the cf set-env command on an already pushed app, followed by cf push to activate the new setting. This command requires outer quotes for the entire value and escaping the inner quotes around the sleep command with backslashes like this:
Using cf logs <app> –recent may provide some useful diagnostics after a crash even without the IBM_JAVA_OPTIONS environment variable set. If issued promptly, it may confirm that a crash and restart has occurred.
IBM Cloud Functions is a functions-as-a-service platform that is powered by Apache OpenWhisk. It is a readily extensible serverless platform that supports functions authored in various programing languages including Node.js,Python, Swift, Java, and PHP. A feature of IBM Cloud Functions that has been around for some time but not well documented is support for native binaries: any executable that is binary compatible […]