{"push_id":1231129356,"size":30,"distinct_size":2,"ref":"refs/heads/krnowak/tcd","head":"eee848abe9e680ca3ce281ae551066d413b311e8","before":"6f0575409839ed420352772aed0831f8c8874f26","commits":[{"sha":"b8bf60c6f1c381bbc6efa350ec1c4bd7744177e7","author":{"name":"Alfonso Acosta","email":"b2e070624208fb7d8b6064193383d078f68161ea@weave.works"},"message":"Use slices instead of linked lists for Metric\n\nAlso:\n\n* Remove Gob encoder/decoder\n* Stop using custom encoders/decoders for Timestamps (both ugorji and the Golang JSON codecs use nanosecond precision).\n* Use idiomatic way to check for existence in metric.LastSample()","distinct":false,"url":"https://api.github.com/repos/kinvolk/scope/commits/b8bf60c6f1c381bbc6efa350ec1c4bd7744177e7"},{"sha":"3e000662f4019996c3802ee03ca79d1c0e3b0c30","author":{"name":"Alfonso Acosta","email":"b2e070624208fb7d8b6064193383d078f68161ea@weave.works"},"message":"Restore custom encoders/decoders for backwards compatibility","distinct":false,"url":"https://api.github.com/repos/kinvolk/scope/commits/3e000662f4019996c3802ee03ca79d1c0e3b0c30"},{"sha":"8a950a59d650ffc75204db382db71e375f51fb6f","author":{"name":"Alfonso Acosta","email":"b2e070624208fb7d8b6064193383d078f68161ea@weave.works"},"message":"Remove Metric Add() method\n\n* Helps reduce garbage (MakeMetric() now takes a slice and there's a shorter version MakeSingletonMetric())\n* Fixes bug computing Max (Min) in samples since using MakeMetric()\n  was causing a default Max/Min of zero.\n* Simplifies code a bit","distinct":false,"url":"https://api.github.com/repos/kinvolk/scope/commits/8a950a59d650ffc75204db382db71e375f51fb6f"},{"sha":"31f938cdad92acb45d1e31de10e10e33161ad686","author":{"name":"Alfonso Acosta","email":"b2e070624208fb7d8b6064193383d078f68161ea@weave.works"},"message":"Remove Metric WithFirst() method\n\nIt was only used in tests and wasn't really necessary","distinct":false,"url":"https://api.github.com/repos/kinvolk/scope/commits/31f938cdad92acb45d1e31de10e10e33161ad686"},{"sha":"af08ba32456d8f5ff2f7613f5b8268b66788ecb6","author":{"name":"Alfonso Acosta","email":"b2e070624208fb7d8b6064193383d078f68161ea@weave.works"},"message":"Optimize Merge() for Metric","distinct":false,"url":"https://api.github.com/repos/kinvolk/scope/commits/af08ba32456d8f5ff2f7613f5b8268b66788ecb6"},{"sha":"eaa3baec9d09df0fd4c7bc654c483e488cbe3f57","author":{"name":"Alfonso Acosta","email":"b2e070624208fb7d8b6064193383d078f68161ea@weave.works"},"message":"Preallocate metrics when copying","distinct":false,"url":"https://api.github.com/repos/kinvolk/scope/commits/eaa3baec9d09df0fd4c7bc654c483e488cbe3f57"},{"sha":"4ed6afdb3a1f52b7ef468391750983557c5c73b4","author":{"name":"Alfonso Acosta","email":"b2e070624208fb7d8b6064193383d078f68161ea@weave.works"},"message":"Review feedback","distinct":false,"url":"https://api.github.com/repos/kinvolk/scope/commits/4ed6afdb3a1f52b7ef468391750983557c5c73b4"},{"sha":"e42444c2e52aedba1f3ed5713c7e73717f7b3a5c","author":{"name":"Alfonso Acosta","email":"ad6176ada810c1ad5c266d0dbc80937f7d1b4f9c@gmail.com"},"message":"Merge pull request #1732 from weaveworks/metric-to-slice\n\nUse slices instead of linked lists for Metric","distinct":false,"url":"https://api.github.com/repos/kinvolk/scope/commits/e42444c2e52aedba1f3ed5713c7e73717f7b3a5c"},{"sha":"107677317d94f83d6ac45804fb0dd3ebe7366af4","author":{"name":"Krzesimir Nowak","email":"ff2347f159e56dc6c93d151158275c4cdf0b51a4@kinvolk.io"},"message":"Allow testing only a subset of directories\n\nThis can be done by calling TESTDIRS=\"./report ./probe\" make tests","distinct":false,"url":"https://api.github.com/repos/kinvolk/scope/commits/107677317d94f83d6ac45804fb0dd3ebe7366af4"},{"sha":"bb1c28016d12bac5f42320b854ea95dbd574dec3","author":{"name":"Krzesimir Nowak","email":"ff2347f159e56dc6c93d151158275c4cdf0b51a4@kinvolk.io"},"message":"Make dumper a bit more verbose\n\nSo it displays differences behind interface that would otherwise go\nunnoticed (like string vs []byte).","distinct":false,"url":"https://api.github.com/repos/kinvolk/scope/commits/bb1c28016d12bac5f42320b854ea95dbd574dec3"},{"sha":"ce5466178b79a5f57e4a56dd0d4ae88c87ba972f","author":{"name":"Krzesimir Nowak","email":"ff2347f159e56dc6c93d151158275c4cdf0b51a4@kinvolk.io"},"message":"Ban the possibility of changing plugin's ID\n\nChanging plugin's ID only complicates control handling in plugins so\nlet's ban it.","distinct":false,"url":"https://api.github.com/repos/kinvolk/scope/commits/ce5466178b79a5f57e4a56dd0d4ae88c87ba972f"},{"sha":"60b8ef7f32c5a6304627e9c64ee2a81d0f3ff157","author":{"name":"Krzesimir Nowak","email":"ff2347f159e56dc6c93d151158275c4cdf0b51a4@kinvolk.io"},"message":"Use consistent plugin ID in the http-requests plugin\n\nThe socket has the \"http_requests.sock\" filename, so ID should be\n\"http_requests\", not \"http-requests\".","distinct":false,"url":"https://api.github.com/repos/kinvolk/scope/commits/60b8ef7f32c5a6304627e9c64ee2a81d0f3ff157"},{"sha":"9a33c0e69c17dddfb58d9ed378da678b7b98b79c","author":{"name":"Krzesimir Nowak","email":"ff2347f159e56dc6c93d151158275c4cdf0b51a4@kinvolk.io"},"message":"Restrict the set of allowed characters in plugin IDs\n\nWe will want to put plugin id in a control id, which is sent to an app\nand then to GUI. When we get a control request from GUI, we will want\nto extract the plugin ID from the control name. To do it unambiguously\nwe need some separator made of chars that are not allowed in a plugin\nname. This is to avoid the situation when there are two plugins:\n\"Plugin\" and \"PluginFoo\". \"Plugin\" exposes a control named\n\"FooControl\" and \"PluginFoo\" exposes a control named \"Control\". Faking\nthe control names which will be sent to the app would result in two\n\"PluginFooControl\".\n\nOne possible option for plugin ID and control name separator would be\n\"/\", but that won't work, since the request sent from GUI to the app\nto <probe>/<node>/<control> would actually be\n<probe>/<node>/<plugin>/<control> and as such wouldn't match the URL\ntemplate in RegisterControlRoutes().","distinct":false,"url":"https://api.github.com/repos/kinvolk/scope/commits/9a33c0e69c17dddfb58d9ed378da678b7b98b79c"},{"sha":"c56a3e134628d9a510869039775c1d4735e959e0","author":{"name":"Krzesimir Nowak","email":"ff2347f159e56dc6c93d151158275c4cdf0b51a4@kinvolk.io"},"message":"Remove impossible case of an empty plugin ID\n\nPlugin ID must be non-empty when the plugin is created and the\nfollowup reports cannot change it.","distinct":false,"url":"https://api.github.com/repos/kinvolk/scope/commits/c56a3e134628d9a510869039775c1d4735e959e0"},{"sha":"11fd6782c9610881249bc3ee67b583b278e5eeea","author":{"name":"Krzesimir Nowak","email":"ff2347f159e56dc6c93d151158275c4cdf0b51a4@kinvolk.io"},"message":"Test the case when a plugin reports more than one plugin","distinct":false,"url":"https://api.github.com/repos/kinvolk/scope/commits/11fd6782c9610881249bc3ee67b583b278e5eeea"},{"sha":"5616e997bfa8c8629c8e32888cb86412d06827ee","author":{"name":"Krzesimir Nowak","email":"ff2347f159e56dc6c93d151158275c4cdf0b51a4@kinvolk.io"},"message":"Make control handlers registry an object and extend its functionality\n\nIt is not a singleton anymore. Instead it is an object with a registry\nbackend. The default registry backend is provided, which is equivalent\nto what used to be before. Custom backend can be provided for testing\npurposes.\n\nThe registry also exposes explicit locking and unlocking facilities\nthat allows adding and removing many handlers in one batch.","distinct":false,"url":"https://api.github.com/repos/kinvolk/scope/commits/5616e997bfa8c8629c8e32888cb86412d06827ee"},{"sha":"de3d03ade48f7e45b6180345881f43311ed023e7","author":{"name":"Krzesimir Nowak","email":"ff2347f159e56dc6c93d151158275c4cdf0b51a4@kinvolk.io"},"message":"Forward control requests to plugins\n\nThanks to that, plugins can react to requests from controls they\nexposed.\n\nTo make it work, plugins registry modifies each plugin's report by\nprepending the plugin ID to the control name the plugin has exposed\nbefore sending it to the app. Then the registry installs the control\nrequest handler for this faked control name, which forwards the\nrequest to the correct plugin.\n\nThis adds a new API endpoint to plugins next to \"/report\" - a\n\"/control\" entry. The body of the request is the JSON-encoded\nxfer.Request instance.","distinct":false,"url":"https://api.github.com/repos/kinvolk/scope/commits/de3d03ade48f7e45b6180345881f43311ed023e7"},{"sha":"02ed95e74a8a2c56e008f23ebf22d30ca7ddd19d","author":{"name":"Krzesimir Nowak","email":"ff2347f159e56dc6c93d151158275c4cdf0b51a4@kinvolk.io"},"message":"Run docker with sudo if necessary in iowait makefile\n\nThe solution is taken from the toplevel Makefile.","distinct":false,"url":"https://api.github.com/repos/kinvolk/scope/commits/02ed95e74a8a2c56e008f23ebf22d30ca7ddd19d"},{"sha":"a2b92126f60c26a7662e37d4756c9cabe777727e","author":{"name":"Krzesimir Nowak","email":"ff2347f159e56dc6c93d151158275c4cdf0b51a4@kinvolk.io"},"message":"Make the iowait example plugin a controller too\n\nIt exposes a button that allows switching between showing an iowait\nstatistics and an idle statistics. When the button is pressed it\nshould be replaced with other button. The button is shown in the host\nnode.\n\nThis is a rather nasty case as it shows several problems:\n\n- Button control races\n  - The way the NodeControl currently works creates races between\n    plugins adding buttons to the same node. This is because\n    NodeControls are not really merged, but rather one of the two are\n    chosen based on a NodeControls' timestamps, so the older one is\n    thrown away entirely. In the end GUI can switch randomly between\n    showing controls from one plugin or from another.\n\n- Showing outdated statistics\n  - When pressing the button to switch to show the other statistics,\n    the old ones are still shown for several seconds.\n\n- Slowness of the updates in GUI\n  - Pressing the button yields no immediate reaction. Changes happen\n    after several seconds. Probably related to the previous point.","distinct":false,"url":"https://api.github.com/repos/kinvolk/scope/commits/a2b92126f60c26a7662e37d4756c9cabe777727e"},{"sha":"fc0fcb4fa9967fb70051c4d275519530357e174f","author":{"name":"Krzesimir Nowak","email":"ff2347f159e56dc6c93d151158275c4cdf0b51a4@kinvolk.io"},"message":"Marshal structs in the iowait example plugin\n\nThis is better than writing JSON strings by hand, which is\nerror-prone.","distinct":false,"url":"https://api.github.com/repos/kinvolk/scope/commits/fc0fcb4fa9967fb70051c4d275519530357e174f"}]}
{"actor":{"display_login":"krnowak"}}