)]}'
{
  "log": [
    {
      "commit": "7e382132219d708239306aa3591740694943d367",
      "tree": "844b1e65d2c078ad46b7801b44160bf2642fdbe6",
      "parents": [
        "835a41885d1e276d207758954f8238aa7bba0ae8",
        "c1e343508130a48f2f0867bac37c91176a7d7cf1"
      ],
      "author": {
        "name": "ILYA Khlopotov",
        "email": "iilyak@ca.ibm.com",
        "time": "Tue Aug 23 14:59:36 2016 -0700"
      },
      "committer": {
        "name": "ILYA Khlopotov",
        "email": "iilyak@ca.ibm.com",
        "time": "Tue Aug 23 14:59:36 2016 -0700"
      },
      "message": "Merge remote branch \u0027cloudant:3102-fix-config_subscription\u0027\n\nThis closes #2\n\nSigned-off-by: ILYA Khlopotov \u003ciilyak@ca.ibm.com\u003e\n"
    },
    {
      "commit": "c1e343508130a48f2f0867bac37c91176a7d7cf1",
      "tree": "844b1e65d2c078ad46b7801b44160bf2642fdbe6",
      "parents": [
        "835a41885d1e276d207758954f8238aa7bba0ae8"
      ],
      "author": {
        "name": "ILYA Khlopotov",
        "email": "iilyak@ca.ibm.com",
        "time": "Wed Aug 17 11:45:13 2016 -0700"
      },
      "committer": {
        "name": "ILYA Khlopotov",
        "email": "iilyak@ca.ibm.com",
        "time": "Tue Aug 23 12:24:09 2016 -0700"
      },
      "message": "Update handle_config_terminate API\n\nCOUCHDB-3102\n"
    },
    {
      "commit": "835a41885d1e276d207758954f8238aa7bba0ae8",
      "tree": "41a2f5c1a58d8b4800af222efbf00fd87eacf3b5",
      "parents": [
        "ff2fccdf584d057bb2963b02cc15209fd8c2fd61"
      ],
      "author": {
        "name": "Alexander Shorin",
        "email": "kxepal@apache.org",
        "time": "Sun Aug 23 13:25:31 2015 +0300"
      },
      "committer": {
        "name": "Alexander Shorin",
        "email": "kxepal@apache.org",
        "time": "Sun Aug 23 13:25:31 2015 +0300"
      },
      "message": "Add LICENSE file\n"
    },
    {
      "commit": "ff2fccdf584d057bb2963b02cc15209fd8c2fd61",
      "tree": "4d7572a7389735b8fbf3f1b7fe0ad5797595145b",
      "parents": [
        "4c1a1c5f179094456f1a00285ee962b9743826c3",
        "6005dc34afef9c916d912b4e1bcd2f82aa05876f"
      ],
      "author": {
        "name": "Alexander Shorin",
        "email": "kxepal@apache.org",
        "time": "Wed Feb 04 18:43:22 2015 +0300"
      },
      "committer": {
        "name": "Alexander Shorin",
        "email": "kxepal@apache.org",
        "time": "Wed Feb 04 18:43:22 2015 +0300"
      },
      "message": "Merge remote-tracking branch \u0027iilyak/2561-make-config-API-consistent\u0027\n\nThis closes #1\n\nCOUCHDB-2561\n"
    },
    {
      "commit": "6005dc34afef9c916d912b4e1bcd2f82aa05876f",
      "tree": "7ebc17d9f45f00ca05b0848105830e83ed6a5589",
      "parents": [
        "1c18cd7b6bb610db98213d5427cc150be73cf2c2"
      ],
      "author": {
        "name": "ILYA Khlopotov",
        "email": "iilyak@ca.ibm.com",
        "time": "Fri Jan 30 12:10:46 2015 -0800"
      },
      "committer": {
        "name": "ILYA Khlopotov",
        "email": "iilyak@ca.ibm.com",
        "time": "Wed Feb 04 06:06:34 2015 -0800"
      },
      "message": "Add vsn to implementaitions of config_listener\n\nCOUCHDB-2561\n"
    },
    {
      "commit": "1c18cd7b6bb610db98213d5427cc150be73cf2c2",
      "tree": "c121f3a50811ad8c4f892858139fe0f141eaffc9",
      "parents": [
        "71cd331daf7a0568ff641a06543fa62cc4221fc4"
      ],
      "author": {
        "name": "ILYA Khlopotov",
        "email": "iilyak@ca.ibm.com",
        "time": "Fri Jan 30 11:15:08 2015 -0800"
      },
      "committer": {
        "name": "ILYA Khlopotov",
        "email": "iilyak@ca.ibm.com",
        "time": "Wed Feb 04 06:06:34 2015 -0800"
      },
      "message": "Don\u0027t restart event handler on termiation\n\nCOUCHDB-2561\n"
    },
    {
      "commit": "71cd331daf7a0568ff641a06543fa62cc4221fc4",
      "tree": "cf80c99a4c5f353252a6256639a0cd98eed614c4",
      "parents": [
        "06477c261205813e732d8f418c70942c33e01a8b"
      ],
      "author": {
        "name": "ILYA Khlopotov",
        "email": "iilyak@ca.ibm.com",
        "time": "Thu Jan 29 13:31:24 2015 -0800"
      },
      "committer": {
        "name": "ILYA Khlopotov",
        "email": "iilyak@ca.ibm.com",
        "time": "Wed Feb 04 06:06:34 2015 -0800"
      },
      "message": "Update config_listener behaviuor\n\nCOUCHDB-2561\n"
    },
    {
      "commit": "4c1a1c5f179094456f1a00285ee962b9743826c3",
      "tree": "48e484a758106cb96049f57e5f984110dca01517",
      "parents": [
        "06477c261205813e732d8f418c70942c33e01a8b"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Nov 20 09:06:18 2014 +0000"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Nov 20 09:06:18 2014 +0000"
      },
      "message": "fix warning\n"
    },
    {
      "commit": "06477c261205813e732d8f418c70942c33e01a8b",
      "tree": "2e95206c2e02db114f379d4354a6bab8c26fa64d",
      "parents": [
        "b52b9c5abf4abffe5d5216593465eabec7b8c7ff"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Aug 27 16:52:17 2014 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Aug 27 16:52:20 2014 +0100"
      },
      "message": "This dog won\u0027t hunt, no sir\n"
    },
    {
      "commit": "b52b9c5abf4abffe5d5216593465eabec7b8c7ff",
      "tree": "53154ebb5891a4d88ee48accdb8643df4a0cc6c0",
      "parents": [
        "ddc0db2c520eb0d82afaaa777130da0463cd6229"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "robert.newson@cloudant.com",
        "time": "Fri Nov 22 16:37:37 2013 +0000"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:50:16 2014 +0100"
      },
      "message": "set module version to 1\n"
    },
    {
      "commit": "ddc0db2c520eb0d82afaaa777130da0463cd6229",
      "tree": "d9d325ca411319d80d456a96055a73a711671570",
      "parents": [
        "fbe7ae64dcd72a09f4cd7bd2999dfff7a4412171"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Thu Aug 08 13:33:50 2013 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:50:01 2014 +0100"
      },
      "message": "Fix monitoring when no parent is provided.\n\nWill squash this down after review.\n"
    },
    {
      "commit": "fbe7ae64dcd72a09f4cd7bd2999dfff7a4412171",
      "tree": "306e1dd0e7a8be1c9622dae052eba1eef0dc1176",
      "parents": [
        "707997e37db11aa8194b00c0a432e49c7071b1f2"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Thu Aug 08 12:15:32 2013 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:49:52 2014 +0100"
      },
      "message": "Implement option to provide a parent to monitor\n\nThe couch_event_listener_mfa already had the necessary logic for\nmonitoring the parent process that spawned it for a start_link usage. In\nsome instances we have rexi_worker process use the enter_loop style APIs\nto avoid the need to spawn a separate process. This just adds an option\n`{parent, pid()}` that allows these processes to specify the parent to\nmonitor.\n"
    },
    {
      "commit": "707997e37db11aa8194b00c0a432e49c7071b1f2",
      "tree": "e4bf08a1161a2a6cbf8b58a7d127cbfab12f1d7c",
      "parents": [
        "de231715e270d685389e0e8e79eed2715bc1e61c"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Tue Jun 18 12:14:17 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:49:19 2014 +0100"
      },
      "message": "Rearrange and lengthen the watchdog delay\n\nI did not completely comprehend that code upgrades are not atomic for\nall code. This watchdog ended up causing a node reboot into an unusable\nstate because it killed couch_db_update_notifier handlers before the new\ncode was installed for each app.\n\nThis lead to mem3 quickly cycling trying to use couch_db_update_notifier\nwhich eventually took down the mem3 app which took down the node. Then\nthe node would reboot into 1202 after databases had upgraded their\nheaders which prevented the node from booting correctly.\n\nBy extending the timeout to five minutes and placing it before the first\ncall to terminating couch_db_update I hope to give the release enough\ntime to complete before telling each handler to upgrade.\n"
    },
    {
      "commit": "de231715e270d685389e0e8e79eed2715bc1e61c",
      "tree": "40f2ca559814a1450935ff4e16fde01d968225ca",
      "parents": [
        "022af54ff972e3ff7ce842f5c905dbfeb7d162f9"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Sat Jun 15 13:13:05 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:49:11 2014 +0100"
      },
      "message": "Kill couch_db_event with supervisor functions\n\nApparently gen_event ignores unknown kill messages so we\u0027ll force a\nclean shutdown with superisor functions.\n"
    },
    {
      "commit": "022af54ff972e3ff7ce842f5c905dbfeb7d162f9",
      "tree": "3fbb1a2222ccb76ee3d010bfce761e4ecd934a75",
      "parents": [
        "054700030083cbbbf6b1376144d40be6dd06bb61"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Sat Jun 15 11:45:59 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:48:55 2014 +0100"
      },
      "message": "Kill couch_db_event when it has installed handlers\n\nThis is to force the upgrade switch to the new couch_event application\nforce update notifications. Theoretically we could accomplish the same\nthing with custom appups to forcefully remove couch_db_event from the\nsupervision tree but it turns out that\u0027s really hard.\n"
    },
    {
      "commit": "054700030083cbbbf6b1376144d40be6dd06bb61",
      "tree": "80da611e3ca0d5dd35a68f7bca0de6d9ad80a4e4",
      "parents": [
        "2bb6b744636b83fa728ee4ab7a8bed62bcbcd11d"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Fri Jun 14 16:24:08 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:48:18 2014 +0100"
      },
      "message": "Fix typo in the shutdown sequence\n"
    },
    {
      "commit": "2bb6b744636b83fa728ee4ab7a8bed62bcbcd11d",
      "tree": "bd6d92fbd2f040d7e38faa2f7d623e1450a24ea3",
      "parents": [
        "6b829185d03d80963466258b1c92719acf3be5ec"
      ],
      "author": {
        "name": "Adam Kocoloski",
        "email": "adam@cloudant.com",
        "time": "Fri May 24 14:10:49 2013 -0400"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:47:49 2014 +0100"
      },
      "message": "Fix compilation warning by sending not_registered\n"
    },
    {
      "commit": "6b829185d03d80963466258b1c92719acf3be5ec",
      "tree": "2b09f3c528fb9f76c5a20318359c59afc04da540",
      "parents": [
        "8e6797a2db00813d62d0bf3054153de6618022b3"
      ],
      "author": {
        "name": "Adam Kocoloski",
        "email": "adam@cloudant.com",
        "time": "Fri May 24 14:09:56 2013 -0400"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:47:13 2014 +0100"
      },
      "message": "Fix callback spec arity\n"
    },
    {
      "commit": "8e6797a2db00813d62d0bf3054153de6618022b3",
      "tree": "5dbff068ce5c1f2d33e5d91c1849e02bb31f3bfe",
      "parents": [
        "1deb3d4289bcd0dc588238456b1c2f430aa67085"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Sat May 11 15:51:42 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:46:56 2014 +0100"
      },
      "message": "Use khash for tracking event listeners\n\nAfter doing some testing locally it became apparent that ets is a bit of\na bottleneck when used as a bag with many duplicate keys. Theoretically\nthis new approach could be accomplished by nesting ets tables but the\nets table limit makes that approach untenable in the long run.\n\nThis just replaces the use of ets with khash as well as runs a nested\nhash table structure to store the list of pids for each database name.\n"
    },
    {
      "commit": "1deb3d4289bcd0dc588238456b1c2f430aa67085",
      "tree": "781412d88e3b1c17918e198530f2d0c5e65446fa",
      "parents": [
        "2ad40edc94130e91cf0f96b55de6dadbf2cada42"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Sat May 11 15:21:11 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:45:05 2014 +0100"
      },
      "message": "Add dependency on khash\n"
    },
    {
      "commit": "2ad40edc94130e91cf0f96b55de6dadbf2cada42",
      "tree": "0365a797299f9fd8f139a2d552a37cb129065bce",
      "parents": [
        "a8b378b9967b56c3e8473931d00adf691d18b863"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Fri Apr 26 13:52:12 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:44:23 2014 +0100"
      },
      "message": "Minor optimizations for couch_event_registry\n\nMostly making use of batch operations with match and multiple inserts. I\ntried some more aggressive optimizations before these but those only\nmanaged to make things slower. The major thing I tried was to use the\nzero timeout trick to collect messages and then batch load those into\nets but that only managed to cause a large number of timeouts.\n"
    },
    {
      "commit": "a8b378b9967b56c3e8473931d00adf691d18b863",
      "tree": "a838050f32546b4b98edca0d72d8ee81f936c33c",
      "parents": [
        "7d5c7e1af8b47bbc163c91d0ea0d1f3ae0f1f46e"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Fri Apr 26 13:50:14 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:42:31 2014 +0100"
      },
      "message": "Add a event count metrics\n"
    },
    {
      "commit": "7d5c7e1af8b47bbc163c91d0ea0d1f3ae0f1f46e",
      "tree": "9a561a9a6e036c1e02679681e3867e86f6e4b498",
      "parents": [
        "ed82171709506cc4ba4148e9d3aba4a9cd87c98f"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Wed Apr 24 14:17:30 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:42:21 2014 +0100"
      },
      "message": "Fix use of non-existant APIs\n\nI must\u0027ve been thinking I was going to add a stop function at some point\nin the future. Rather than do that I just used the cast I added\npreviously.\n"
    },
    {
      "commit": "ed82171709506cc4ba4148e9d3aba4a9cd87c98f",
      "tree": "17041f89b9a10ded07ede75d751c4cd6f261eb23",
      "parents": [
        "2bd7db0b796ed322980fb41ce716edf9234edf7d"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Wed Apr 24 14:17:18 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:42:04 2014 +0100"
      },
      "message": "Fix minor syntax errors and typos\n"
    },
    {
      "commit": "2bd7db0b796ed322980fb41ce716edf9234edf7d",
      "tree": "eb7ee52fd8e68eb8dad47eac61bfd5304178d1fb",
      "parents": [
        "6d9f614fa4f7ad5a27321c3ae47c55e4dde96995"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Wed Apr 24 14:16:28 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:41:56 2014 +0100"
      },
      "message": "Minor syntax error\n"
    },
    {
      "commit": "6d9f614fa4f7ad5a27321c3ae47c55e4dde96995",
      "tree": "df095ddac2e55732a2344a842f1bca26b96b962f",
      "parents": [
        "ecd110a4e645e4e35bd0681dfbe293b0d94f8fa3"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Wed Apr 24 14:16:04 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:41:48 2014 +0100"
      },
      "message": "Fix export definition for start_link/1\n"
    },
    {
      "commit": "ecd110a4e645e4e35bd0681dfbe293b0d94f8fa3",
      "tree": "4c295b269292f142eacb691d9333233b6a844b69",
      "parents": [
        "634658dbc56ee8babd98fc99543cb94026f0762f"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Wed Apr 24 14:15:26 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:41:40 2014 +0100"
      },
      "message": "Fix use of proplists:get_value/2\n\nIt returns undefined when the key isn\u0027t found, not false.\n"
    },
    {
      "commit": "634658dbc56ee8babd98fc99543cb94026f0762f",
      "tree": "c0f3413c5d05d18d3bfffb835817db9a07514a3a",
      "parents": [
        "b34d5330301f5a4f268f4307634d1c5ac2c1bc57"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Wed Apr 24 14:12:16 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:41:32 2014 +0100"
      },
      "message": "Support db names specified as a list\n\nI was being a bit conservative before in gathering database names to\nlisten to. This keeps all binaries and converts lists to binaries.\nAnything that\u0027s not a list or binary throws an error.\n"
    },
    {
      "commit": "b34d5330301f5a4f268f4307634d1c5ac2c1bc57",
      "tree": "ecbb93d6935a48c3adc3bedd6d5a265f1f677004",
      "parents": [
        "6e4f69efa11fce639d8545f88cbe0b60ffa6f99f"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Wed Apr 24 14:11:11 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:41:25 2014 +0100"
      },
      "message": "Avoid use of undocumented functions\n\nI\u0027d copied this pattern from R14B01\u0027s gen_server. Apparently newer\nErlang\u0027s complain about it. I\u0027ve updated to the version found in\nR15B03-1.\n"
    },
    {
      "commit": "6e4f69efa11fce639d8545f88cbe0b60ffa6f99f",
      "tree": "6fb5d24298d2991ebbd42036b16b0ca61786cfe7",
      "parents": [
        "34aeaeeb3669611285ce7c39d19414c1d8aedf06"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Wed Apr 24 14:10:20 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:41:18 2014 +0100"
      },
      "message": "Fix proplists:lookup/2 check\n\nApparently someone was smoking something strong when they designed the\nAPI of the proplists module. lookup/2 returns none when a key isn\u0027t\nfound which does not at all match get_value/2 which returns undefined.\n"
    },
    {
      "commit": "34aeaeeb3669611285ce7c39d19414c1d8aedf06",
      "tree": "401e83c3a37b42a399747e60b3f7dbd71c8e126f",
      "parents": [
        "81835ba06d680565314caea7bb9fc28df3e13ece"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Wed Apr 24 14:10:06 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:41:11 2014 +0100"
      },
      "message": "Fix the behaviour_info callback\n"
    },
    {
      "commit": "81835ba06d680565314caea7bb9fc28df3e13ece",
      "tree": "55547b880dc64146de507767a2844c821ac62ad3",
      "parents": [
        "2e0f5438d34b884733808495e7f648e2573958e7"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Wed Apr 24 14:09:24 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:41:04 2014 +0100"
      },
      "message": "Export the listen/4 function\n"
    },
    {
      "commit": "2e0f5438d34b884733808495e7f648e2573958e7",
      "tree": "e7dfbeda36d13e01a0579a8483f99a8bb40742ed",
      "parents": [
        "7e6c02cf58d5bff0fda08785fcbd4b6c4b3a00b6"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Wed Apr 24 12:24:13 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:40:48 2014 +0100"
      },
      "message": "Add OS process listeners\n\nWe don\u0027t use this in dbcore but if we ever merge this back to CouchDB\nthen we\u0027ll want to have this feature.\n"
    },
    {
      "commit": "7e6c02cf58d5bff0fda08785fcbd4b6c4b3a00b6",
      "tree": "0c2c4b3f61e6856ba3d25b449eb9058713731253",
      "parents": [
        "b00c879dabef34edb30c1ce6606e2b7e700532c8"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Wed Apr 24 12:23:36 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:37:03 2014 +0100"
      },
      "message": "Fix callback module name for couch_event_registry\n"
    },
    {
      "commit": "b00c879dabef34edb30c1ce6606e2b7e700532c8",
      "tree": "8e3e6fd51ce9f25ade27faffffd32f5588c84fba",
      "parents": [
        "bf25e9f0b3fd763b1d8e657ea3ef828747437e15"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Wed Apr 24 11:33:21 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:36:52 2014 +0100"
      },
      "message": "New couch_event:listen/4 API\n\nThis function doesn\u0027t return but allows a process to become an event\nlistener. Useful in RPC situations to avoid spawning an extra process\nand doubling the message passing.\n"
    },
    {
      "commit": "bf25e9f0b3fd763b1d8e657ea3ef828747437e15",
      "tree": "a9f75aa07ae0fdf52d2462aaee248ea6fe338ae1",
      "parents": [
        "8f63a7839f32906335529ade04add975cb49da66"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Tue Apr 23 16:37:08 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:36:40 2014 +0100"
      },
      "message": "Add an API for the common case\n\nMost of our current event listeners are single functions that don\u0027t\ncarry much state. Rather than force us to write a behavior module for\nevery one of these cases we can use this link_listener/4,\nstop_listener/1 API to handle this common pattern.\n\nUnder the covers this just wraps couch_event_listener rather thinly to\ngive us the single callback export version of listening for events.\n"
    },
    {
      "commit": "8f63a7839f32906335529ade04add975cb49da66",
      "tree": "e565201cc6cbfb12f12f98be4a16668b117086c5",
      "parents": [
        "a280611ccc81431c8763e9d01e597524001ae881"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Tue Apr 23 15:41:44 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:36:27 2014 +0100"
      },
      "message": "Make sure and exit with the reason given\n"
    },
    {
      "commit": "a280611ccc81431c8763e9d01e597524001ae881",
      "tree": "be0e6c7f1a7ac108a6ab971999264f2f9e920de6",
      "parents": [
        "320cf0c62793fd73af8789d2dc48ac33fcafd6f3"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Tue Apr 23 15:41:27 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:36:13 2014 +0100"
      },
      "message": "Fix start/start_link return values\n"
    },
    {
      "commit": "320cf0c62793fd73af8789d2dc48ac33fcafd6f3",
      "tree": "6f515753129dfba8485623496d815a1d6bb8814f",
      "parents": [
        "7c728ff7cfe7170827bc165ff7e9e6571099c0f3"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Tue Apr 23 15:40:26 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:35:58 2014 +0100"
      },
      "message": "Add a cast API for couch_event_listener\n"
    },
    {
      "commit": "7c728ff7cfe7170827bc165ff7e9e6571099c0f3",
      "tree": "57b4f0b2123c786f28224ec5ea54df7106199c60",
      "parents": [
        "475af68c2d99825efb4c492183ebdf5175a52fba"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Tue Apr 23 14:42:24 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:35:46 2014 +0100"
      },
      "message": "Abandon the gen_server \"inheritance\" approach\n\nThere\u0027s not much benefit since these things aren\u0027t currently in the\nsupervision tree and the code in fabric_db_update_listener makes things\neven more difficult for starting gen_servers.\n\nI did contemplate having fabric_db_udpate_listener make use of\ngen_server:enter_loop/N but rexi doesn\u0027t use proc_lib to start processes\nand I don\u0027t have the desire to find out how much overhead that would add\nto rexi_server.\n"
    },
    {
      "commit": "475af68c2d99825efb4c492183ebdf5175a52fba",
      "tree": "c3a866cf50fdb96b191e9e0c97e35e3ee31f8b26",
      "parents": [
        "f4c80d73e8b6c09ff9bdf300875fb2d501209e66"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Tue Apr 23 14:41:24 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:35:36 2014 +0100"
      },
      "message": "Add an API to register for multiple DbNames\n\nJust a convenience thing for code that may want to listen to more than\none database\u0027s update notifications.\n"
    },
    {
      "commit": "f4c80d73e8b6c09ff9bdf300875fb2d501209e66",
      "tree": "a395ecb444a4130f4902297ba4ffea75a067a46e",
      "parents": [
        "cc616a77717730ac4dddc2940aff51f584385e6f"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Mon Apr 22 15:48:06 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:35:26 2014 +0100"
      },
      "message": "Minimize message from monitors\n\nI wasn\u0027t deduping monitors before. That bugged me enough to add an extra\nets table so that we can dedupe those messages and avoid the extra work\ndone by couch_event_registry.\n"
    },
    {
      "commit": "cc616a77717730ac4dddc2940aff51f584385e6f",
      "tree": "c4cfc3cfa63282ae4b8aad7680762669e6680038",
      "parents": [
        "73b38e8866c4c90352945f349c223726c7e0e590"
      ],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Mon Apr 22 15:03:47 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:35:08 2014 +0100"
      },
      "message": "Initial implementation\n\nThere are a few places we could be more efficient in managing the ets\ntable for event listeners but this simple approach should be able to\ngive us a rough idea on how fast we can pump messages through this sort\nof design.\n"
    },
    {
      "commit": "73b38e8866c4c90352945f349c223726c7e0e590",
      "tree": "a4240a05d73ff3fd3489961859ef94a09ad95a30",
      "parents": [],
      "author": {
        "name": "Paul J. Davis",
        "email": "paul.joseph.davis@gmail.com",
        "time": "Mon Apr 22 12:44:14 2013 -0500"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Jul 30 17:31:53 2014 +0100"
      },
      "message": "Initial commit\n"
    }
  ]
}
