3 * Refactor Hub to clarify mutexing
4 * Eliminated potential iteration problem in Timer
8 * Output ProcessExits registration/deregistration info
12 * Output registered PID for ProcessExits
14 * Fix `god remove <group>` not working for unmonitored watches
19 * Log when state change is complete
24 * Move Syslog calls into God::Logger and clean up all calling code
25 * Remove god's pid file on user requested termination
26 * Better handling and cleanup of DRb server's unix domain socket
27 * Allow shorthand for requesting a god log
28 * Add `god check` to make it easier to diagnose event problems
29 * Refactor god binary into class/method structure
30 * Implement `god remove` to remove a Task altogether
32 * DiskUsage < PollCondition - trigger if disk usage is above limit on mount [Rudy Desjardins]
37 * Allow extra args to pass through to config file
42 * Rescue connection refused in http response code condition
47 * Implement lifecycle scoped metric to allow for cross-state conditions
48 * Add TriggerCondition for conditions that need info about state changes
49 * Implement notification system
50 * Add Tasks (a generalization of Watches) to do non-process related tasks
51 * Add example init.d file in GOD_INSTALL_DIR/init/god [scott becker]
52 * Add human readable info to conditions (and make low level log lines debug)
53 * Switch DRb to use a unix domain socket for security reasons
55 * Allow EventConditions to do transition overloading
56 * Report errors during god startup instead of failing silently
57 * Make transition block optional (default to Always condition returning true)
58 * Better usage info for `god --help`
59 * Explain what's going on when attempting to rebind to an in-use port
60 * Add -b option to god binary to auto-bind to an unused port
61 * Add `god quit` to stop god without stopping any tasks
62 * Make self-daemonized Watch commands synchronous (as they should be)
63 * Allow self-daemonized Watches to specify a log (could be useful)
64 * Check for existence of config file if specified
65 * Robustify `god load` and report errors back to the command issuer
66 * Warn when `god load` tries to set global options
67 * Add Configurable.clear method and make built-in conditions clear on entry
69 * Flapping < TriggerCondition - trigger on state change
70 * HttpResponseCode < PollCondition - trigger on http response code or timeout (thx scott becker)
72 * Email < Contact - notify via email (smtp)
74 * Fix abort not aborting problem
75 * Fix -p option not working for god binary
76 * Fix God.init not accepting block (thx _eric)
77 * Fix SIGHUP ignore (thx _eric)
78 * Fix error reporting on `god --help` (don't error report a normal SystemExit)
82 * fix Process#alive? to not raise on no such file (affects `god terminate`)
86 * fix netlink buffer issue that prevented events on Linux from working consistently [dkresge]
90 * require 'stringio' for ruby 1.8.5
95 * Add the ability for conditions to override transition state (for exceptional cases)
96 * Implement dynamic load of config files while god is running (god load <filename>)
97 * Add ability to save auto-daemonized process output to a log file
98 * Add robust default stop lambda command for auto-daemonized processes (inspired by _eric)
99 * Add status command for god binary (shows status of each watch)
100 * Create proper logger with timestamps
101 * Add log command to god binary to get real time logs for a specific watch from a running god instance
102 * Add terminate command for god binary (stop god and all watches)
104 * Enforce validity of Watches
105 * Enforce that God.init is not called after a Watch
106 * Move pid_file_directory creation and validation to God.start
107 * Remove check for at least one Watch during startup (now that dynamic loading exists)
109 * Tries < PollCondition - triggers after the specified number of tries
110 * Add :notify_when_flapping behavior to check for oscillation [kevinclark]
111 * Add :degrading_lambda condition. [kevinclark]
112 It uses a decaying interval (1/2 rate) for 3 cycles before failing.
114 * Use exit!(0) instead of exit! in god binary to exit with code 0 (instead of default -1)
115 * Command line group control fixed
116 * Fix cross-thread return problem
118 == 0.3.0 / 2007-08-17
120 * Fix netlink header problem on Ubuntu Edgy [Dan Sully]
121 * Add uid/gid setting for processes [kevinclark]
122 * Add autostart flag for watches so they don't necessarily startup with god [kevinclark]
123 * Change command line call options for god binary to accommodate watch start/stop functionality
124 * Add individual start/stop/restart grace periods for finer grained control
125 * Change default DRb port to 17165 ('god'.to_i(32))
126 * Implement command line control to start/restart/stop/monitor/unmonitor watches/groups by name
127 * Watches can now belong to a group that can be controlled as a whole
128 * Allow god to be installed (sans events) on systems that don't support events
129 * Daemonize and handle PID files for non-daemonizing scripts [kevinclark]
130 * Fix simple mode lifecycle gap
131 * Remove necessity to specify pid_file for conditions
132 * Change config file to use God.init and God.watch directly instead of God.meddle block
133 * Move god binary command logic to main library
134 * Enhance god binary with better reporting
135 * Fix synchronization bug in Timer (reported by Srini Panguluri)
136 * Add Lambda condition for easy custom conditions [Mike Mintz]
137 * Add sugar for numerics (seconds, minutes, kilobytes, megabytes, percent, etc)
138 * Add optional PID and log file generation to god binary for daemon mode
139 * Add God.load to do glob enabled loading
140 * Add -V option to god binary for detailed version/build info
142 == 0.2.0 / 2007-07-18
144 * Rewrote innards to use a state and event based lifecycle
145 * Basic support for events via kqueue (bsd/darwin) and netlink/pec (linux) [kevinclark]
146 * Added advanced syntax (simple syntax calls advanced api underneath)
147 * Condition returns have changed meaning. With simple syntax, a true return activates block
148 * Updated http://god.rubyforge.org with updated simple config and new advanced config
150 == 0.1.0 / 2007-07-07
152 * 1 major enhancement