CloudI 1.5.0 Released

By brucify | Published: April 21, 2015

Download 1.5.0 from
(checksums at the bottom of this email)

CloudI ( is a “universal integrator” using an Erlang core to
provide fault-tolerance with efficiency and scalability.  The CloudI API
provides a minimal interface to communicate among services so programming
language agnostic, database agnostic, and messaging bus agnostic integration
can occur.  CloudI currently integrates with the programming languages
C/C++, Elixir, Erlang, Java, JavaScript, PHP, Perl, Python, and Ruby, the
databases PostgreSQL, elasticsearch, Cassandra, MySQL, couchdb, memcached,
riak, and tokyotyrant, the messaging bus ZeroMQ, websockets, and the internal
CloudI service bus.  HTTP is supported with both cowboy and elli integration.

The details for this release are below:

  • backwards compatibility difference:
  • cloudi module (Erlang/Elixir-only usage) now returns a 2 element tuple with the 1st element as the result (original return value) and the 2nd element as the modified Context data (or the Dispatcher pid if a Dispatcher pid was provided instead of a Context)
  • Was a necessary change to keep the transaction id time as strictly monotonically increasing with the changes in Erlang 18.x that deprecate erlang:now/0Allows a lazy destination refresh to update the service name lookup data so the developer doesn’t need to handle the update manually
  • The change impacted the return value of internal service external interface functions
  • The service application was changed to depend only on the cloudi_service module instead of the cloudi module to make its usage clearer and avoid Dispatcher pid value handling
  • Despite the return value changes, only the minor version number of CloudI was incremented due to the interfaces being outside the main documentation
  • External services can now set OS process resource limits with the ‘limit’ service configuration option (
  • A few new CloudI data structures: cloudi_queue, cloudi_future, cloudi_service_future (cloudi_queue can handle service request validation, failures, and retries with in-memory internal service data) (cloudi_future and cloudi_service_future provide Futures for Erlang processes (sending to CloudI services) and internal CloudI services, respectively)
  • cloudi_service_validate is a new CloudI service for validating service requests with the requests using the service as a proxy (similar functionality was added to cloudi_service_quorum and cloudi_service_router, though cloudi_service_router is forwarding the service request instead of sending it)
  • The Python CloudI API now handles unicode stdout/stderr data properly (immediate flushing of stdout/stderr is now fixed for Python 3 usage)
  • Bugs were fixed and more documentation was added (see the ChangeLog for more detail)

Please mention any problems, issues, or ideas!

0ba7174780b6a0b699d909bc41ddc0d5596cd027539e5d9a271ff3250b60dd9c cloudi-1.5.0.tar.bz2 (10960 bytes)
94fdebeb7406bc360f6858e08c846ab6c8bd8707a8597da00b61f513d9ea99df cloudi-1.5.0.tar.gz (13616 bytes)

Follow Erlang Central:

Have an Erlang Question?

Reach out to the Erlang community