ChangeLog from yhbt.net/regurgitator.git
commit 8c95d1365563c881ee657a2c37b827007fd06763 Author: Eric Wong <e@80x24.org> Date: Fri Jul 4 06:35:47 2014 +0000 update email address to point to me for now The subscription-required nature of librelist just doesn't sit well with me. commit 763b263039bb92845da94d96cc1623119c632a8f Author: Eric Wong <e@80x24.org> Date: Mon May 19 20:30:28 2014 +0000 regurgitator 0.6.0 * domain: do not forcibly refresh domains too often * t0002-domain_host: workaround for cache expiry fix * bump version and allow future GPL versions commit 068d4468bca70f39cbebbac3c7b2745bf7ce937a Author: Eric Wong <e@80x24.org> Date: Mon May 19 20:29:03 2014 +0000 bump version and allow future GPL versions We allow GPLv2+ in case GPLv4 comes out and I am not around to approve it. commit a294beb2e20b708afef9ad8861beec0844da9785 Author: Eric Wong <e@80x24.org> Date: Mon May 19 20:25:34 2014 +0000 t0002-domain_host: workaround for cache expiry fix We cannot refresh the domain list too frequently, so delay the test a bit so we can hit the newly updated domain. commit 6ddf84888fc89bc1827690b91bc7233cc8b9272e Author: Eric Wong <normalperson@yhbt.net> Date: Tue Oct 29 02:16:22 2013 +0000 domain: do not forcibly refresh domains too often This causes excessive DB usage if we're being hammered with requests to random domains. commit 14afa2133a58bf80318c260cebbe0372532e66da Author: Eric Wong <normalperson@yhbt.net> Date: Tue Sep 10 01:43:57 2013 +0000 regurgitator 0.5.0 gemspec: version bumps (sequel) commit b02bff4be79771330aa8cbc2a7205938d47c6a80 Author: Eric Wong <normalperson@yhbt.net> Date: Tue Sep 10 01:32:31 2013 +0000 gemspec: version bumps We are compatible with sequel 4 commit b0c176476fd590106240a569c00a8fb609a9b035 Author: Eric Wong <normalperson@yhbt.net> Date: Wed May 29 19:07:08 2013 +0000 regurgitator 0.4.0 - minor cleanups + logging Eric Wong (4): test-lib: startup fixes for rackup endpoint: log unrecoverable NoDevices errors for debugging gemspec: remove date gemspec: relax rpatricia dependency commit 95bb535b900b03ce18052c057b2988ed7defd32a Author: Eric Wong <normalperson@yhbt.net> Date: Wed May 29 02:01:35 2013 +0000 gemspec: relax rpatricia dependency rpatricia 1.0 is out now, and is likely to maintain backwards compatibility. commit 243a5680cefb50d555dc0aabc539c72772536cc1 Author: Eric Wong <normalperson@yhbt.net> Date: Wed May 29 02:00:47 2013 +0000 gemspec: remove date Modern versions of RubyGems automatically generate this commit 95371b5c4cc968655a58be49249c923fff86170c Author: Eric Wong <normalperson@yhbt.net> Date: Wed May 29 00:42:10 2013 +0000 endpoint: log unrecoverable NoDevices errors for debugging This can help diagnose out-of-socket or connection failures (or just bugs in MogileFS). commit f760f5d2fd584f46096458a13782b7642abb9262 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Mar 8 02:07:30 2013 +0000 test-lib: startup fixes for rackup Clobber the pidfile to prevent rackup startup from failing. While we're at it, prevent binding to ports not specified by UNICORN_TEST_ADDR. commit 8cc2b8ab08213bc6111e09ddd1ee606b546662b1 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Sep 28 14:00:21 2012 -0700 regurgitator 0.3.0 - minor tweaks and fixes * device: avoid primary port if http_get_port is defined No need to create extra traffic on a node. * depend on latest http_spew and rpatricia - http_spew 0.4.1 won't send "_" in headers. - rpatricia 0.09 will avoid errors with invalid prefixes due to memory access errors. commit 3323bb3ec4d3ac3d39d1500715422465f306771e Author: Eric Wong <normalperson@yhbt.net> Date: Wed Sep 26 19:26:43 2012 -0700 device: avoid primary port if http_get_port is defined No need to create extra traffic on a node. commit 18f39280f939e3bd4a002fa4b7fad7107f9289d0 Author: Eric Wong <normalperson@yhbt.net> Date: Wed Sep 26 12:44:22 2012 -0700 gemspec: depend on latest http_spew and rpatricia http_spew 0.4.1 won't send "_" in headers. rpatricia 0.09 will avoid errors with invalid prefixes due to memory access errors. commit 4874e7d38453a0b4b3f47d8dc8095a314083bd11 Author: Eric Wong <normalperson@yhbt.net> Date: Thu Dec 15 18:11:02 2011 -0800 regurgitator 0.2.0 * add list_keys module for listing keys * add :reproxy_key, overriding global REPROXY_KEY constant * remove support for altip/altmask (hardly ever used) commit ed9f6b55d3acbe8bf0ee8599fff466fbe9eabd5d Author: Eric Wong <normalperson@yhbt.net> Date: Thu Dec 15 18:16:19 2011 -0800 strip out the altmask/altip handling stuff Hardly anyone ever uses/used it, so stop attempting to support it to remove the risk of supporting it improperly. commit 3052e1b0f75523b46f43ddb1163b37c12e6ed57e Author: Eric Wong <normalperson@yhbt.net> Date: Thu Dec 1 00:13:43 2011 -0800 list_keys: force case-sensitive key name matching for MySQL Case-insensitivity kills millions each year... We require Sequel 3.29+ for SQLite, so we avoid this problem there already. commit 045b555d7404ca5bfac5cf69a5e7ab35872602ef Author: Eric Wong <normalperson@yhbt.net> Date: Wed Nov 16 19:25:32 2011 -0800 add :reproxy_key, overriding global REPROXY_KEY constant Users may never want reproxy behavior, or they may want to use a different key, so support both use cases. Reproxy support (for nginx) is now off now by default. commit 80982a28eafda2b439bbb1545e649509f29e83d4 Author: Eric Wong <normalperson@yhbt.net> Date: Wed Nov 16 19:24:59 2011 -0800 t: update my-tap-lib.sh Fix race conditions in verbose mode commit 530ab82be1608f6a136169aee71dc5745b9b1785 Author: Eric Wong <normalperson@yhbt.net> Date: Wed Nov 16 18:58:47 2011 -0800 add list_keys module for listing keys This may be useful for building directory indices. commit 611cb7223064f99126388062c8197d4271859b92 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Nov 11 08:49:49 2011 +0000 pkg.mk: update to the latest version commit 84e48c63074049f32660672b5a3c195d12dc3896 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Nov 11 08:46:12 2011 +0000 regurgitator 0.1.0 * local_file: support HTTP Range: requests * minor code cleanups * update/fix install dependencies (include rpatricia) commit 341b4d3198013893ae9929d588cfde73fa39b2ee Author: Eric Wong <e@yhbt.net> Date: Fri Nov 11 08:33:40 2011 +0000 local_file: support HTTP Range: requests This should give local users Range: functionality since most HTTP servers used for MogileFS storage support Range:, too. For requests that require proxying back to the HTTP server, this we've always forwarded Range: requests and Content-Range: responses as-is in a completely agnostic manner. commit a898550de8398fafef9690f29568fffe351df68b Author: Eric Wong <normalperson@yhbt.net> Date: Fri Nov 11 08:22:58 2011 +0000 bump dependencies This forces newer kgio and newer http_spew on people, and we'll need the latest rack for Range: parsing. commit 6cb4d49092eceee6720a702ca51f96851711b612 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Oct 21 17:41:03 2011 -0700 use raise instead of abort in case we hit bugs These should probably nuke the process, but we'll be nice and raise instead since we shouldn't cause data corruption. commit 70f8be5607ecdf087e20c0f539e6cac9c8b6bc16 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Jun 24 18:00:01 2011 -0700 test_local: use Dir.mktmpdir The "tmpdir" module in the standhas a handy method for creating tmpdirs commit 752fdf60e8ac560d07a0e2f7d3ee58f075c620b9 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Jun 24 17:56:38 2011 -0700 less initialize/super magic It's making things too hard to keep track of commit 7d826aae4753eb9eeca3467accb2c13eabd4a8eb Author: Eric Wong <normalperson@yhbt.net> Date: Wed May 18 16:38:51 2011 -0700 gemspec: add rpatricia dependency Not everybody has this gem installed by default :x commit 0104cfec9974cc65d79ce614ab37ba3fbd672b11 Author: Eric Wong <normalperson@yhbt.net> Date: Tue May 10 15:09:50 2011 -0700 pkg.mk: add check-warnings commit f8d293d20235ada33ec029c3cb08463d6c94c6dd Author: Eric Wong <normalperson@yhbt.net> Date: Tue May 10 14:35:41 2011 -0700 ignore LATEST file commit 5ff7814f6c58fe497bcb039ea5a94dc630ec6b8b Author: Eric Wong <normalperson@yhbt.net> Date: Tue May 10 14:35:23 2011 -0700 README: update with source location and mailing list Might as well... commit bb3d8a7c24fb296d8d38f650c486d65119c0cfa1 Author: Eric Wong <normalperson@yhbt.net> Date: Tue May 10 14:24:52 2011 -0700 gemspec: update dependencies commit 37702bd4301f0269db4cc7b79e4d41cb0904df0a Author: Eric Wong <normalperson@yhbt.net> Date: Tue May 10 14:24:39 2011 -0700 gemspec: use mailing list address commit d962887e124557910e1480964b1592677568bb01 Author: Eric Wong <normalperson@yhbt.net> Date: Mon Apr 18 19:08:42 2011 -0700 file_request: http_spew will use seconds for timeout In the next release, but prepare for it anyways since this is unreleased. commit 9cc1249172ba6112c8353b06a7e18f7bdcc874c6 Author: Eric Wong <normalperson@yhbt.net> Date: Tue Apr 5 14:42:34 2011 -0700 server_settings: doc fix commit 50d978eaf707763b8ae02194ef4b79c44c4a0c41 Author: Eric Wong <normalperson@yhbt.net> Date: Mon Apr 4 17:05:49 2011 -0700 device|server_settings: fix ivar initialization commit 8b0422b0c1de8affb3b82e2e4b190298dc87ddb7 Author: Eric Wong <normalperson@yhbt.net> Date: Mon Apr 4 16:36:41 2011 -0700 server_settings: document zone_for commit 949e56e11b521286f279747994b74738ca17528a Author: Eric Wong <normalperson@yhbt.net> Date: Mon Apr 4 15:19:16 2011 -0700 device: split out ivar initialization commit 6a78e1b6cbe37b4156cf5c838e8eeaa9190ad65c Author: Eric Wong <normalperson@yhbt.net> Date: Mon Apr 4 15:04:56 2011 -0700 server_settings: whitespace cleanup commit 21647d92730e4ce894ed3e92c95ec6339499c375 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Apr 1 17:36:02 2011 -0700 local: cleanup addr methods We no longer filter out localhost from local IP addreses, so always expect something. commit 16680ba9de4d417ac6575f293fbb2a7e0c1f023b Author: Eric Wong <normalperson@yhbt.net> Date: Fri Apr 1 17:35:21 2011 -0700 server_settings: more extend()-friendly for existing objects commit cad82dc0a6a66b363ed5da41eab2523d95e81cb8 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Apr 1 17:02:33 2011 -0700 endpoint: document URI trying logic It's a bit on the wacky side commit ea1819c389574c8e01493e37cd518d3f04279db0 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Apr 1 16:57:27 2011 -0700 endpoint: cleanup, file_request is no longer overridden commit b85fec709c18e51de739ed834e7bce163170f2f8 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Apr 1 16:54:49 2011 -0700 QUERY_STRING is always a string Rack::Lint requires it commit 72e4d85c1ab3a6bbc6fc28f4d7c91046eebd48b4 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Apr 1 16:40:50 2011 -0700 endpoint: kill empty lines commit 2b4c840f7f3764bc348f0d6715be498563e9280e Author: Eric Wong <normalperson@yhbt.net> Date: Fri Apr 1 16:04:41 2011 -0700 drop VERSION constant Don't encourage people to use it to check for features. commit 2ea02f34bf285270ce4c2dedc6e7bf5e0ba1cd24 Author: Eric Wong <normalperson@yhbt.net> Date: Tue Mar 29 14:47:38 2011 -0700 make local addr updates thread-safe commit 78492cf7df8c640ef8b099b33ad634a32761eb7a Author: Eric Wong <normalperson@yhbt.net> Date: Mon Mar 28 17:54:02 2011 -0700 synchronize cache access Play things on the safe side for now. commit 1ea972a78312fb31606ac0caa756dca15e5833b1 Author: Eric Wong <normalperson@yhbt.net> Date: Mon Mar 28 17:48:51 2011 -0700 domain: do not blindly refresh on missing domains It could be a DoS attack from clients, so use negative caching. commit 19420cae5b859ce0fe60a141132b42e49d3c442e Author: Eric Wong <normalperson@yhbt.net> Date: Mon Mar 28 17:35:23 2011 -0700 device: refresh local address list when refreshing devices We don't care about new addresses until the device list is updated. commit 0f5379fb275ac469bc7bd2c4c42f817986a634a6 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Mar 25 16:34:17 2011 -0700 file_request: run takes timeout argument Probably makes it easier to use. commit cb9711bff63cf6852bf7333a27769347e686d94c Author: Eric Wong <normalperson@yhbt.net> Date: Fri Mar 25 16:33:35 2011 -0700 local_file: less confusing If-Modified-Since check and/or precedence requires too much brain power commit 8b86d58d9319236bbac388e3fa72d0e6548d6ac6 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Mar 25 16:14:43 2011 -0700 local: allow loopback-only addresses Some installations may just use us to manage multiple disks on one machine. commit 98611fdd89b325b4d5a90325bb496cb23d1a8009 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Mar 25 15:20:03 2011 -0700 remove redundant Socket.ip_address_list call We already handle that in regurgitator/local commit 809b593aed2b941c3f54f25eea4c55ba0ecaae3d Author: Eric Wong <normalperson@yhbt.net> Date: Mon Mar 21 18:37:48 2011 -0700 endpoint: unindent commit a0bce0b6281ad9a79da703b3a2dfd14a390017f3 Author: Eric Wong <normalperson@yhbt.net> Date: Mon Mar 21 18:30:28 2011 -0700 abort instead of raising for some errors consider these like assert()s in C code commit 1554f8c6922c139c4287ccdbcdab7db1a69f2790 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Mar 18 20:00:44 2011 -0700 flesh out local file optimizations We try hard to avoid unnecessary stat(2) syscalls commit 0600bebe66271253be39219b2abc4e554947fb8b Author: Eric Wong <normalperson@yhbt.net> Date: Fri Mar 18 17:20:26 2011 -0700 minor optimizations and doc updates commit 86156bc5ae7ade2c92f1c4ebb900cec1ba2f09a7 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Mar 18 16:50:52 2011 -0700 file_info: small cleanup commit 5cf99426d178d4337b41fc454b5e3654bc5d1883 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Mar 18 16:49:11 2011 -0700 style: use sprintf instead of String#% More to type but easier to follow for somebody who uses C... commit cad01b40dd0302eeb5e1b5c7a8837ac73fe2260e Author: Eric Wong <normalperson@yhbt.net> Date: Fri Mar 18 16:47:51 2011 -0700 remove ipaddr dependency and just use Patricia We generate all the URIs ourselves, so there's no point in validating it to avoid DNS lookups. commit 4b646f6d2c03f61fdaeb853ca335eb217d76ee9d Author: Eric Wong <normalperson@yhbt.net> Date: Fri Mar 18 16:46:46 2011 -0700 use patricia for altmask handling Seems to be a saner option commit bdd68f14f3dcc03ab782b752049d18b09ec8bca3 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Mar 18 15:57:21 2011 -0700 device: cleanup URI pair generation commit 1f2a4c790cb507e9f9e9e59c21fd1eeb57d63c35 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Mar 18 15:48:31 2011 -0700 device: remove unnecessary IPAddr conversion There's no need for it commit 4307aebf9e5d3b3187d7762a43dbe0063ab5ba3f Author: Eric Wong <normalperson@yhbt.net> Date: Fri Mar 18 15:45:36 2011 -0700 switch to ivars instead of Structs It's easier to identify object-wide objects this way commit 6968b82a28c803eab61236c473ee555198fdbdb4 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Mar 18 15:28:23 2011 -0700 switch to rpatricia for zone lookups It's less code and should be better for larger sites. commit 8d6aa623bb55e170dfe1b0e837ae467d48541262 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Mar 18 15:12:32 2011 -0700 allow running integration test separately commit 35e3d84a447242960ff9df4807fb68d58f44d493 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Mar 18 15:12:05 2011 -0700 test: remove Isolate dependency We'll use Bundler if we need to commit 780c38959a1180169f8e54bf54520caf2fde0e2c Author: Eric Wong <e@yhbt.net> Date: Fri Mar 18 22:02:36 2011 +0000 use Socket.ip_address_list in Ruby 1.9.2 It's smarter :) commit 45732df77a6725b3d03439e223eadc1711948b28 Author: Eric Wong <e@yhbt.net> Date: Mon Feb 28 09:38:38 2011 +0000 switch to HTTP_Spew for our HTTP needs Spewing away! commit 32f1a52478fcad4461e700b9942fefb6b913c8a9 Author: Eric Wong <e@yhbt.net> Date: Mon Feb 28 08:35:18 2011 +0000 endpoint: needless ::File colons commit db74cbbcb07c2915cc4da93581b2141767c1c87a Author: Eric Wong <e@yhbt.net> Date: Mon Feb 28 07:26:09 2011 +0000 endpoint: remove /etc/mime.types import Let the user deal with it commit 32b155c6e9dba923d91e6626800d616a03fe6774 Author: Eric Wong <e@yhbt.net> Date: Mon Feb 28 04:17:20 2011 +0000 use require for external libraries autoload isn't thread-safe and there's no need for it since we use these everywhere. commit 96b938b728b26174fa7d04024dbe482d1be96340 Author: Eric Wong <e@yhbt.net> Date: Mon Feb 28 04:14:59 2011 +0000 cleanups commit c6c0cd07a16938a15379de38930e1f170bbddf7e Author: Eric Wong <e@yhbt.net> Date: Mon Feb 28 03:55:59 2011 +0000 switch to dual GPL2 and GPL3 commit 622a02b853c2debdab8c8f72bc78322a869484be Author: Eric Wong <e@yhbt.net> Date: Sun Feb 6 21:23:05 2011 +0000 unused_listen: simplify! Duh :p commit d0e43350fb3ccc90a7d4316fd5e230aa8788a34b Author: Eric Wong <e@yhbt.net> Date: Sun Feb 6 21:17:10 2011 +0000 file_request: switch to kgio sockets They're much cheaper to use under stock 1.9.2 commit f1bba254900ee80b823f89a618f9c1880563960f Author: Eric Wong <e@yhbt.net> Date: Sun Feb 6 21:10:34 2011 +0000 file_request: no need for named &block Saves allocations commit 1640faf154076e9094b8806dc0007191b9881a12 Author: Eric Wong <e@yhbt.net> Date: Wed Jan 19 18:28:10 2011 -0800 tests: properly shutdown rackup rack 1.2.1 standardized on SIGINT to shutdown the server commit e915649cbcceb5fffe1a5586b7228a6f6d0b7b95 Author: Eric Wong <e@yhbt.net> Date: Wed Jan 19 16:38:24 2011 -0800 bump all dependencies We should always be testing with the latest and greatest. commit fd9d43ef2b65385a5537e68ecb6786bfb1fd9949 Author: Eric Wong <e@yhbt.net> Date: Thu Oct 28 09:47:37 2010 +0000 bump kcar dependency to 0.1.1 kcar 0.1.1 fixes some bugs we encountered. commit 0b6992e7bacf86edf8f123501476d7d0bae2b756 Author: Eric Wong <e@yhbt.net> Date: Mon Jul 19 14:11:19 2010 -0700 domain_host: allow Host: header to be the full bucket name This allows us to host objects for other hosts without (easily) revealing who actually hosts the objects. S3 allows this, too. commit c0a4a1ee3cd017f853ab707ca148142744ba2f06 Author: Eric Wong <e@yhbt.net> Date: Fri Jul 16 15:27:36 2010 -0700 empty files do not return ETag nor Last-Modified Empty files don't use any bandwidth other than headers, and we've already paid that cost, so trim down on our headers to save a little. commit 3a44c61aea716c33b739526e3d68f033445d3fb5 Author: Eric Wong <e@yhbt.net> Date: Fri Jul 16 15:27:22 2010 -0700 GNUmakefile: fix dependencies for integration tests commit 0c1e814d21e3b44ed078c6f1d1b5e503541e6124 Author: Eric Wong <e@yhbt.net> Date: Wed Jul 14 19:17:19 2010 -0700 endpoint: do not fail if network is unreachable Regurgitator and BARFS should work without a network commit 092140638963a0ce522c03c00dd0ad54fd08ca69 Author: Eric Wong <e@yhbt.net> Date: Wed Jul 14 19:16:26 2010 -0700 autoload Rack It may not be loaded when testing or with standalone scripts commit 61e846b0859fc1fdfc18dda0b8aefe9bef00fac8 Author: Eric Wong <e@yhbt.net> Date: Wed Jul 14 18:41:15 2010 -0700 file_request: lazier allocation, switch to HeaderHash commit d4b498215373ece69025bc74572fce19ade68456 Author: Eric Wong <e@yhbt.net> Date: Wed Jul 14 18:40:06 2010 -0700 io_wait: remove dead code commit 5228d95c420d21f1ce7dcd43f7d3b60e935a5b55 Author: Eric Wong <e@yhbt.net> Date: Wed Jul 14 16:58:29 2010 -0700 endpoint: simplify mime type detection commit 0cffd33a7d600c2218b057811e2dc1d383a6443f Author: Eric Wong <e@yhbt.net> Date: Wed Jul 14 12:54:04 2010 -0700 tests: rename SEQUEL_URI => TEST_SEQUEL for consistency with BARFS tests. commit fdb1c5cc7bb7622a17683bedef2750d0893c64aa Author: Eric Wong <e@yhbt.net> Date: Mon Jul 12 18:19:06 2010 -0700 extra tests for HEAD requests commit af05df0112eaae2b2f26215def99c9fb73740d3e Author: Eric Wong <e@yhbt.net> Date: Mon Jul 12 17:18:16 2010 -0700 tests commit 81772d31ffad453d3962987aee0068ae4ad51f7d Author: Eric Wong <e@yhbt.net> Date: Mon Jul 12 14:51:40 2010 -0700 file_info: short circuit for empty files commit c7fe0290bfe44931e3a4325a4f2962a990081344 Author: Eric Wong <e@yhbt.net> Date: Mon Jul 12 08:17:44 2010 +0000 endpoint: more BARFS-friendliness This needs major cleanup commit 50e6866c0e98d3a5380c745ea28c23b8441dab56 Author: Eric Wong <e@yhbt.net> Date: Sun Jul 11 08:42:39 2010 +0000 split out DB into separate modules This makes us easier to use with BARFS commit 6c9bcb094c692b613324b2bf07945284af65007b Author: Eric Wong <e@yhbt.net> Date: Sat Jul 10 19:58:47 2010 +0000 initial
Originally generated with the Darkfish Rdoc Generator 2, modified by wrongdoc.