- Another stab at fixing the bug for work units being twice delivered.
- Fixed a bug in 0.6.0 that could occasionally cause a race condition when delivering work units, sending a single work unit to be processed twice.
- Fixed a bug in “distribute_to_nodes” logic that would prevent mismatched actions and workers from ever getting served.
- Better cleanup of temp directories for worker machines.
- Tweaks to timeout settings, name of the worker process, exceptions to be rescued and retried…
- Improved distribution of work units to nodes that are intended to process disjoint sets of actions.
- Configuration files are now passed through ERB before being used, so that they can be better customized.
- You can now tag CloudCrowd nodes by passing “—tag” when turning them on. Tags are displayed in the Operations Center.
- Net::HTTP is now used instead of curl to download files.
- Making the canonical identifier for nodes the `host:port`, so that it’s
possible (although still undesirable) to have multiple nodes running different
actions on the same physical machine.
- Updated the Operations Center UI for workflows with large numbers of jobs — individual jobs are no longer displayed, only aggregate counts. There’s a link to grab a quick tail of the last 100 lines of your server log, for debugging.
- Jonathan Crossman contributed a backend for Rackspace Cloud Files storage.
- Updated support for recent versions of RestClient.
- Hardcoded dependencies to ActiveRecord 2.3.x and Sinatra 0.9.x, as more recent versions are incompatible with each other due to Rack 1.1.0.
- There’s now a configuration option to disable individual actions. (jgeiger)
temp_storage_pathfor the worker processes (delagoya)
- The cleanup of a work unit’s temporary directory now happens before the unit is marked as completed or failed, which is important when using the FilesystemStore with failing actions.
- Fixed a bug where passing arrays as
inputsto an action would cause the arrays to be flattened.
CloudCrowd.node?methods, so that action dependencies can more easily be required only in the node.
WorkUnit.distribute_to_nodeshas been optimized to run in chunks (of 25). CloudCrowd installations with many thousands of work units in the job queue should see a speed up in server throughput.
- Only try to load in actions from the ‘actions_path’ if it’s specified (chad)
- Fixed checking for ‘split’ and ‘merge’ methods in Ruby 1.9 (uiltondutra)
crowd cleanup --days DAYScommand is now available, for cleaning up all completed jobs older than a certain age.
- The CloudCrowd module is now mixed in at the top level in
crowd consolesessions, for easier access.
- Bugfixes for RACK_ENV not being properly set in Nodes, and Timeout::Error not being rescued in server-node communication.
- Jobs are now automatically cleaned up only if firing the
callback_urlreturns a 201 Created HTTP status code (Previously, any 200-range code would cause a cleanup).
- Bugfix for PostgreSQL databases regarding WorkUnit reservation.
- The central server now removes a node from the pool after any kind of communication error, and nodes check in every five minutes to countervail this.
- Job completion callbacks now fired in a deferred thread.
- Fixed regression in
crowd install, it takes paths again. (plus tests)
crowdcommand now supports daemonized servers and nodes. The paths to store the log and pid files can be configured in config.yml. Use:
crowd -d [server node] [start stop restart]
- Adds the ability to distribute work based on (one-minute) load average or available memory. In config.yml, specify
min_free_memory(in megabytes). If a node crosses either of those thresholds, it will be considered busy until it goes back over to the good side of the line.
- Version 0.2.0 is backward-incompatible. The internals have changed a good deal. You’ll need to reload your schema and update your config.yml.
- New architecture that gets rid of persistent workers in favor of persistent nodes (one node per machine), and ephemeral workers. This setup avoids polling, reduces latency when starting jobs, decreases load on the central server substantially, decreases resource use on the nodes, prevents actions from being capable of leaking memory, and so on…
- The Operations Center interface has been updated to show the nodes, and to display it if they become busy (have exhausted their allowed number of workers).
- The FilesystemStore now can be configured with a
local_storage_path. This allows you to use a networked drive for asset storage.
- The dependency on the Daemons gem has been removed.
- The S3Store now uses HTTPS to upload files when you have
- More validations and sanity checks all around.
- Added a
rake db:create_test_databasetask to help out folks who want to contribute to CloudCrowd.
- Initial release.