{"push_id":2750943143,"size":44,"distinct_size":43,"ref":"refs/heads/selfjoin","head":"c5219c2236c2715da30fe46f2ba8ff7d9bcdaa32","before":"8e1b472b42a589a035f4850e684bc12c9afe13ab","commits":[{"sha":"69085c19ee8b86569e25f2471556408c898ea878","author":{"name":"Spencer Kimball","email":"45aefc834abf4b6844854d63a474b67e53b69671@gmail.com"},"message":"storage: add replica to unquiesced map only on when unquiesced\n\nPreviously, we were adding all newly created replicas directly to the\nstore's `unquiescedReplicas` map, where they'd stay, despite being\nquiesced, until the raft group was lazily loaded. They'd be continually\nticked because `Replica.tick()` preemptively exits if the Raft group\nhasn't yet been loaded.\n\nThis change moves adding the replica to the `unquiescedReplicas` map\nuntil the replica is unquiesced. Further, all replicas are initialized\nwith `mu.quiescent = true`, so that when `Replica.unquiesceLocked` is\ninvoked, the logic in it to set `mu.quiescent = false` and to add the\nreplica to the unquiesced map is allowed to run.\n\nRelease note: None","distinct":true,"url":"https://api.github.com/repos/andy-kimball/cockroach/commits/69085c19ee8b86569e25f2471556408c898ea878"},{"sha":"bc6d76243ad72f11fa5631f5c9610a9f9207d6b3","author":{"name":"Pete Vilter","email":"bff6eb38fad1cf5d6b7237e52df7fff6aecbd405@cockroachlabs.com"},"message":"readme: update `dep` usage instructions in build/README.md\n\nIf you use a version of dep other than what's in `.bin`, it may rewrite\nyour Gopkg.lock and make a lot of other changes.\n\nRelease note: None","distinct":true,"url":"https://api.github.com/repos/andy-kimball/cockroach/commits/bc6d76243ad72f11fa5631f5c9610a9f9207d6b3"},{"sha":"c09dfd02ecead957874a3fbef613bcf50706ba6f","author":{"name":"Andrew Kimball","email":"47fb46b442a7228b0951bd0a39a9bd256934d92d@cockroachlabs.com"},"message":"opt: Add alternate TPCH queries\n\nRewrite the TPCH queries that depend on view support and COUNT DISTINCT\nsupport to use alternate, but equivalent forms. This enables us to track\nany changes to query plans.\n\nRelease note: None","distinct":false,"url":"https://api.github.com/repos/andy-kimball/cockroach/commits/c09dfd02ecead957874a3fbef613bcf50706ba6f"},{"sha":"592433e69cbc83714948b6430c79b24dd440e54c","author":{"name":"Nathan VanBenschoten","email":"885ea01d97daf7784d4a0ae7f66c69a3686faeb6@gmail.com"},"message":"storage: optimistically resolve pending prereqs in cmdQ before canceling\n\nIn a privately reported issue we have seen cases where cascading\ncancellations of commands in the CommandQueue can cause an OOM\nin `storage.(*cmd).ResolvePendingPrereq`. This is caused by a quadratic\nblowup of prerequisites as canceled commands transfer their prerequisites\nto their dependents.\n\nThis change introduces a measure to bound this quadratic blowup by\nadding in a new optimistic resolution step to command cancellation,\nduring which time a command will optimistically resolve all prerequisites\nthat have already finished without blocking on any pending commands. This\nshould improve the cascading cancellation scenario because it will\nallow a command to trim its prerequisite list before passing it on\nto its dependents. Notably, since we consider all commands in the\nprereq list instead of just the first, like we usually do, a single\npending command at the front of the list can't allow the rest of the\nprereq list to grow full of finished/canceled commands.\n\nRelease note: None","distinct":true,"url":"https://api.github.com/repos/andy-kimball/cockroach/commits/592433e69cbc83714948b6430c79b24dd440e54c"},{"sha":"d75f71267130904e86e8fee65540354635f5755a","author":{"name":"Tamir Duberstein","email":"c96a05aaafbe4b3abc1841a4083a1b0f402c2ba6@gmail.com"},"message":"*: Correct names","distinct":true,"url":"https://api.github.com/repos/andy-kimball/cockroach/commits/d75f71267130904e86e8fee65540354635f5755a"},{"sha":"7786a223d5a1dd6fb0825b1d7249d9fb68b5ef44","author":{"name":"Tamir Duberstein","email":"c96a05aaafbe4b3abc1841a4083a1b0f402c2ba6@gmail.com"},"message":"Recursively update submodules","distinct":true,"url":"https://api.github.com/repos/andy-kimball/cockroach/commits/7786a223d5a1dd6fb0825b1d7249d9fb68b5ef44"},{"sha":"285b060a3cd90bdf39529a66f3ada910e42d5af7","author":{"name":"Tamir Duberstein","email":"c96a05aaafbe4b3abc1841a4083a1b0f402c2ba6@gmail.com"},"message":"roachpb: replace `gogoproto.onlyone` with `oneof` in ErrorDetail","distinct":true,"url":"https://api.github.com/repos/andy-kimball/cockroach/commits/285b060a3cd90bdf39529a66f3ada910e42d5af7"},{"sha":"5d3454588703598e1db8410ee7be51ebe724920c","author":{"name":"craig[bot]","email":"3a2c29237f73c7cf88424b80e427b1884f346b35@cockroachlabs.com"},"message":"Merge #27935\n\n27935: readme: update `dep` usage instructions in build/README.md r=vilterp a=vilterp\n\nIf you use a version of dep other than what's in `.bin`, it may rewrite your Gopkg.lock and make a lot of other changes.\r\n\r\nRelease note: None\n\nCo-authored-by: Pete Vilter <vilterp@cockroachlabs.com>","distinct":true,"url":"https://api.github.com/repos/andy-kimball/cockroach/commits/5d3454588703598e1db8410ee7be51ebe724920c"},{"sha":"5c3ca9aaa0ea21b0981f97b52fd16735d4e45a97","author":{"name":"Tamir Duberstein","email":"c96a05aaafbe4b3abc1841a4083a1b0f402c2ba6@gmail.com"},"message":"roachpb: avoid an extra allocation","distinct":true,"url":"https://api.github.com/repos/andy-kimball/cockroach/commits/5c3ca9aaa0ea21b0981f97b52fd16735d4e45a97"},{"sha":"a73bb52eb558172f238e20d7dcc17beb18ca1a91","author":{"name":"Tamir Duberstein","email":"c96a05aaafbe4b3abc1841a4083a1b0f402c2ba6@gmail.com"},"message":"roachpb: inline setGoError in its only caller\n\nRelease note: None","distinct":true,"url":"https://api.github.com/repos/andy-kimball/cockroach/commits/a73bb52eb558172f238e20d7dcc17beb18ca1a91"},{"sha":"bc1c8408b065ccbef127473ffd580e7b404d191b","author":{"name":"Jordan Lewis","email":"d6a9c9ceebab0a60eea8692fb0aa04be2d19ee67@gmail.com"},"message":"distsqlrun: start indexjoiner's row fetcher input\n\nPreviously, indexjoiner failed to start its input RowFetcherWrapper.\nThis caused a potential panic with logging and kv tracing, and is\ncorrected by this patch.\n\nRelease note (bug fix): fix a panic caused by kv tracing a plan that\nuses an index joiner","distinct":true,"url":"https://api.github.com/repos/andy-kimball/cockroach/commits/bc1c8408b065ccbef127473ffd580e7b404d191b"},{"sha":"9b28c28a97197b9d2cb11ea78bb141d9e6648da6","author":{"name":"Pete Vilter","email":"bff6eb38fad1cf5d6b7237e52df7fff6aecbd405@cockroachlabs.com"},"message":"server: fix negative iops in progress\n\nWe record most metrics as differences from their values at the beginning\nof the cockroach process, so that IO before the process started and\nbetween runs doesn't create large spikes when we take the metric's\nderivative for charts. Iops was also being recorded as a difference\nwhich was wrong because we always want to just record its current value.\n\nAdditionally, some of the unit tests weren't actually testing anything.\n\nFixes #27906\n\nRelease note: None","distinct":true,"url":"https://api.github.com/repos/andy-kimball/cockroach/commits/9b28c28a97197b9d2cb11ea78bb141d9e6648da6"},{"sha":"25a77e604f00e8d62d6c66e8ad3c938f0bc28283","author":{"name":"Raphael 'kena' Poss","email":"ffa74aa72f5ed5e720c03212554d1e38d8a2905e@cockroachlabs.com"},"message":"sql: add support for server_encoding\n\nRelease note (sql change): The session variable and protocol status\nparameter `server_encoding` is now defined and has the constant value\nUTF8, for compatibility with PostgreSQL. It is not possible to change\nits value.","distinct":true,"url":"https://api.github.com/repos/andy-kimball/cockroach/commits/25a77e604f00e8d62d6c66e8ad3c938f0bc28283"},{"sha":"9187de54cd545819abc553e888b1888704eef4c2","author":{"name":"Tobias Schottdorf","email":"25fad7a39062a81fcaf88abd782f9f69679c0bdf@gmail.com"},"message":"storage: add closed timestamp subsystem\n\nThis commit introduces the basic closed timestamp subsystem. It does\nnot hook it up into the CockroachDB node yet.\n\nGreat care has been taken to make each individual component self-\ncontained and cleanly interfaced to the outside world. The package\nlayout relative to `closedts` is the following:\n\n.: slim root package containing only the most basic CT interfaces\n./ctpb: protobuf definitions and service\n./config: fat package pulling in everything needed to actually run\n./storage: storage for per-node closed timestamp state\n./minprop: minimum proposal timestamp tracker\n./provider: the Provider, centralizing all closed timestamp information.\n\nMost of these packages depend on `closedts` (more precisely, on the\ninterfaces they need to use), but in turn don't depend on each other.\n\nThe following diagram together with the `ctconfig` and `ct` packages\nshould be instructive in getting a bird's eye view of how the subsystem\nfits into CockroachDB: All of the components are grouped in a Container\n(intended as a pass-around per-instance Singleton) and is passed down to\nthe Stores via the StoreConfig. Replicas proposing commands talk to the\nTracker; replicas trying to serve follower reads talk to the Provider,\nwhich receives closed timestamp updates for the local node and its\npeers.\n\n```\n                            Node 1 | Node 2\n                                   |\n+---------+  Close  +-----------+  |  +-----------+\n| Tracker |<--------|           |  |  |           |\n+-----+---+         | +-------+ |  |  | +-------+ |  CanServe\n      ^             | |Storage| |  |  | |Storage| |<---------+\n      |             | --------+ |  |  | +-------+ |          |\n      |Track        |           |  |  |           |     +----+----+\n      |             | Provider  |  |  | Provider  |     | Follower|\n      |             +-----------+  |  +-----------+     | Replica |\n      |                 ^                  ^            +----+----+\n      |                 |Subscribe         |Notify           |\n      |                 |                  |                 |\n+---------+             |      Request     |                 |\n|Proposing| Refresh +---+----+ <----- +----+-----+  Request  |\n| Replica |<--------| Server |        |  Clients |<----------+\n+---------+         +--------+ -----> +----------+  EnsureClient\n                                 CT\n```\n\nRelease note: None","distinct":true,"url":"https://api.github.com/repos/andy-kimball/cockroach/commits/9187de54cd545819abc553e888b1888704eef4c2"},{"sha":"02a660f1154bca3f787f17450085b89cd78bf7d4","author":{"name":"craig[bot]","email":"3a2c29237f73c7cf88424b80e427b1884f346b35@cockroachlabs.com"},"message":"Merge #27922\n\n27922: storage: add closed timestamp subsystem r=nvanbenschoten a=tschottdorf\n\nNB: This is a reopen of #27595 which needs a fix to the CI stress tester\nto merge before it can pass CI (and I don't want to wait for that). No\nneed to review.\n\n----\n\nThis commit introduces the basic closed timestamp subsystem. It does\nnot hook it up into the CockroachDB node yet.\n\nGreat care has been taken to make each individual component self-\ncontained and cleanly interfaced to the outside world. The package\nlayout relative to `closedts` is the following:\n\n.: slim root package containing only the most basic CT interfaces\n./ctpb: protobuf definitions and service\n./config: fat package pulling in everything needed to actually run\n./storage: storage for per-node closed timestamp state\n./minprop: minimum proposal timestamp tracker\n./provider: the Provider, centralizing all closed timestamp information.\n\nMost of these packages depend on `closedts` (more precisely, on the\ninterfaces they need to use), but in turn don't depend on each other.\n\nThe following diagram together with the `ctconfig` and `ct` packages\nshould be instructive in getting a bird's eye view of how the subsystem\nfits into CockroachDB: All of the components are grouped in a Container\n(intended as a pass-around per-instance Singleton) and is passed down to\nthe Stores via the StoreConfig. Replicas proposing commands talk to the\nTracker; replicas trying to serve follower reads talk to the Provider,\nwhich receives closed timestamp updates for the local node and its\npeers.\n\n```\n                            Node 1 | Node 2\n                                   |\n+---------+  Close  +-----------+  |  +-----------+\n| Tracker |<--------|           |  |  |           |\n+-----+---+         | +-------+ |  |  | +-------+ |  CanServe\n      ^             | |Storage| |  |  | |Storage| |<---------+\n      |             | --------+ |  |  | +-------+ |          |\n      |Track        |           |  |  |           |     +----+----+\n      |             | Provider  |  |  | Provider  |     | Follower|\n      |             +-----------+  |  +-----------+     | Replica |\n      |                 ^                  ^            +----+----+\n      |                 |Subscribe         |Notify           |\n      |                 |                  |                 |\n+---------+             |      Request     |                 |\n|Proposing| Refresh +---+----+ <----- +----+-----+  Request  |\n| Replica |<--------| Server |        |  Clients |<----------+\n+---------+         +--------+ -----> +----------+  EnsureClient\n                                 CT\n```\n\nRelease note: None\n\nCo-authored-by: Tobias Schottdorf <tobias.schottdorf@gmail.com>","distinct":true,"url":"https://api.github.com/repos/andy-kimball/cockroach/commits/02a660f1154bca3f787f17450085b89cd78bf7d4"},{"sha":"06c73f0e862d9c39a29935b270deac109b62d2f1","author":{"name":"Tobias Schottdorf","email":"25fad7a39062a81fcaf88abd782f9f69679c0bdf@gmail.com"},"message":"node: synchronously bootstrap auxiliary stores\n\nDoing this asynchronously was likely inspired by the wish to get nodes\nup and running as quickly as possible, but this looks like premature\noptimization. Even with tens of stores, this process will finish\nquickly, and also happens only once.\n\nRelease note: None","distinct":true,"url":"https://api.github.com/repos/andy-kimball/cockroach/commits/06c73f0e862d9c39a29935b270deac109b62d2f1"},{"sha":"b2aa0d13dd1504cc858aa05f5c6c33f0f282c941","author":{"name":"Tobias Schottdorf","email":"25fad7a39062a81fcaf88abd782f9f69679c0bdf@gmail.com"},"message":"server: remove outdated comment\n\nRelease note: None","distinct":true,"url":"https://api.github.com/repos/andy-kimball/cockroach/commits/b2aa0d13dd1504cc858aa05f5c6c33f0f282c941"},{"sha":"24f5e77b0773b25217acf9d25a166b70a62e9109","author":{"name":"Tobias Schottdorf","email":"25fad7a39062a81fcaf88abd782f9f69679c0bdf@gmail.com"},"message":"server: refactor node startup for clarity\n\nNot done untangling yet, but creating the stores\ncloser to where they're used and naming the main\nstartStores method better to account for all of\nits side effects.\n\nRelease note: None","distinct":true,"url":"https://api.github.com/repos/andy-kimball/cockroach/commits/24f5e77b0773b25217acf9d25a166b70a62e9109"},{"sha":"d41111da6740b3e07bdf9f00724606b455e6e11f","author":{"name":"Nathan VanBenschoten","email":"885ea01d97daf7784d4a0ae7f66c69a3686faeb6@gmail.com"},"message":"storage: avoid migrating duplicate prereq commands in cmdQ\n\nWe now avoid transferring duplicate prereq commands from\na canceled prereq to a dependent command in the CommandQueue.\nThis avoids quadratic growth of memory when a large number\nof commands are canceled which each share a command\nprerequisite. Previously, this could result in a memory\nexplosion if it happened repeatedly.\n\nThe commit also adds a test that demonstrates the\neffect of this change and the previous to optimistically\nresolve pending prereqs in the cmdQ before canceling.\n\nRelease note: None","distinct":true,"url":"https://api.github.com/repos/andy-kimball/cockroach/commits/d41111da6740b3e07bdf9f00724606b455e6e11f"},{"sha":"0f347419c853addd21a15b5da2ef3437d354ef1d","author":{"name":"Nathan VanBenschoten","email":"885ea01d97daf7784d4a0ae7f66c69a3686faeb6@gmail.com"},"message":"sql: don't allocate initial cap of 10000 rows for returning DML stmts\n\nBefore this change we would initialize RowContainers with an\ninitial capacity of `10000` rows for DML statements that had\na `RETURNING` clause. This was absolutely insane because most\n`DML` statements that return rows return only a few. This change\nfixes this mistake so that the RowContainers are now initialized\nwithout an initial capacity (which means that a single \"chunk\" is\nallocated to begin).\n\nI initially saw this pop up in a CPU profile of `adriatic`, which\nwas running TPC-C. In the profile I saw that `updateNode's` use\nof `RowContainer.AddRow` was accounting for **1.59%** of system-wide\nCPU utilization.\n\nAfter making this change I tested it out against TPC-C, which is\na good generator to experiment with for this change because it uses\nDML statements with RETURNING clauses in 3 of its 5 txn types.\nOn my laptop this change improved throughput by **13.8%** and\nreduced average latency by **12.3%**.\n\nRelease note (performance improvement): Avoid allocating large row\nbuffer for DML statements with RETURNING clauses.","distinct":true,"url":"https://api.github.com/repos/andy-kimball/cockroach/commits/0f347419c853addd21a15b5da2ef3437d354ef1d"}]}
{"actor":{"display_login":"andy-kimball"}}