{"push_id":633330160,"size":17,"distinct_size":17,"ref":"refs/heads/launchpad/+upstream","head":"1c483e8597883830866f0e65dba5f8254131c12e","before":"02f393f2179b9759e861456e79ea21789fb23d12","commits":[{"sha":"4e9dc981915e75ba6088f7597cf0ad4338e63e4a","author":{"email":"06b40a82600060aa4dd63b8edab70ee2d86817cd@canonical.com","name":"Zygmunt Krynicki"},"message":"plainbox:vendor:extcmd: add support for chunked I/O\n\nThis patch adds a way to do non-line-based I/O via extcmd. Line base I/O\nis perfect for text but can be problematic and inefficient for binary\ndata.\n\nBy allowing applications to pass the new CHUNKED_IO flag to extcmd, they\ncan now opt-into the new behavior (per extcmd instance) which calls the\nnew on_chunk() delegate method, instead of the old on_line() method.\n\nSigned-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>","distinct":true,"url":"https://api.github.com/repos/checkbox/checkbox/commits/4e9dc981915e75ba6088f7597cf0ad4338e63e4a"},{"sha":"7347c5b34bbc9960550f78531b091d049a7af2c4","author":{"email":"06b40a82600060aa4dd63b8edab70ee2d86817cd@canonical.com","name":"Zygmunt Krynicki"},"message":"plainbox:vendor:extcmd: add extra debugging\n\nSigned-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>","distinct":true,"url":"https://api.github.com/repos/checkbox/checkbox/commits/7347c5b34bbc9960550f78531b091d049a7af2c4"},{"sha":"4f7a866e8ce471d103002cc2bf81ac11db326784","author":{"email":"06b40a82600060aa4dd63b8edab70ee2d86817cd@canonical.com","name":"Zygmunt Krynicki"},"message":"plainbox:vendor:extcmd: use 1-byte buffers for legacy chunked IO\n\nThis patch is a hack to get to an useful effect from legacy (thread\nbased) chunked IO implementation. By default chunked mode used a 4K\nbuffer which was a reasonable value for bulk data transfers. Since the\nblocking API doesn't allow us to see anything before the whole buffer\ngets full we cannot use it to get things like interactive prompts to\nwork.\n\nIn order to fix bug https://bugs.launchpad.net/plainbox/+bug/1443911 I\nwanted to use chunked IO (and it works great in glibc mode which uses\nnon-blocking IO). To use chunked IO in thread + blocking mode we can\ncheat and use 1-byte buffers. That is, each byte that gets written to a\npipe gets read and reported to the application. This is slower and by\nfar, but it gets the job done.\n\nSince chunked IO is enabled selectively and so far only the manifest job\nenables it, it's a safe hack / compromise.\n\nSigned-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>","distinct":true,"url":"https://api.github.com/repos/checkbox/checkbox/commits/4f7a866e8ce471d103002cc2bf81ac11db326784"},{"sha":"f3c9d334a6e1aa8782f69b32037b0f835d9f258b","author":{"email":"06b40a82600060aa4dd63b8edab70ee2d86817cd@canonical.com","name":"Zygmunt Krynicki"},"message":"plainbox:runner: use CHUNKED_IO for jobs that request it\n\nThis patch enables CHUNKED_IO mode for jobs that have the\n'use-chunked-io' flag.\n\nSigned-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>","distinct":true,"url":"https://api.github.com/repos/checkbox/checkbox/commits/f3c9d334a6e1aa8782f69b32037b0f835d9f258b"},{"sha":"5345158196da03bdaa211f53080105b3705facb9","author":{"email":"06b40a82600060aa4dd63b8edab70ee2d86817cd@canonical.com","name":"Zygmunt Krynicki"},"message":"plainbox:commands:run: preserve original line endings for display\n\nSigned-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>","distinct":true,"url":"https://api.github.com/repos/checkbox/checkbox/commits/5345158196da03bdaa211f53080105b3705facb9"},{"sha":"7cb74da406b57d147914f41c222c3dfddc144230","author":{"email":"06b40a82600060aa4dd63b8edab70ee2d86817cd@canonical.com","name":"Zygmunt Krynicki"},"message":"plainbox:commands:run: flush on each part of IO\n\nThis patch enables explicit flush on each write that came from a job\nprocess. This is normally line-based IO for all the text-based jobs.\n\nWhen using CHUNKED_IO with legacy thread+blocking IO extcmd this is\nactually triggered on each byte read so we get \"live\" output, as it\nhappens.\n\nSigned-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>","distinct":true,"url":"https://api.github.com/repos/checkbox/checkbox/commits/7cb74da406b57d147914f41c222c3dfddc144230"},{"sha":"ddafab147332db6a84e219a122f2af898c71d950","author":{"email":"06b40a82600060aa4dd63b8edab70ee2d86817cd@canonical.com","name":"Zygmunt Krynicki"},"message":"providers:manifest: add use-chunked-io flag to collect-manifest job\n\nSigned-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>","distinct":true,"url":"https://api.github.com/repos/checkbox/checkbox/commits/ddafab147332db6a84e219a122f2af898c71d950"},{"sha":"f3c644e7beed317709b0ec3eac8496d4cc5256ea","author":{"email":"06b40a82600060aa4dd63b8edab70ee2d86817cd@canonical.com","name":"Zygmunt Krynicki"},"message":"plainbox:depmgr: add DependencyMissingError.__eq__()\n\nSigned-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>","distinct":true,"url":"https://api.github.com/repos/checkbox/checkbox/commits/f3c644e7beed317709b0ec3eac8496d4cc5256ea"},{"sha":"485ebccf84d603ceccb4b2f36410f9067a0d7eeb","author":{"email":"06b40a82600060aa4dd63b8edab70ee2d86817cd@canonical.com","name":"Zygmunt Krynicki"},"message":"plainbox:depmgr: add DependencyMissingError.__hash__()\n\nSigned-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>","distinct":true,"url":"https://api.github.com/repos/checkbox/checkbox/commits/485ebccf84d603ceccb4b2f36410f9067a0d7eeb"},{"sha":"91f6b9507809f6ade20ad9d154bc734a90e52b86","author":{"email":"06b40a82600060aa4dd63b8edab70ee2d86817cd@canonical.com","name":"Zygmunt Krynicki"},"message":"plainbox:state: add fix and regression test for 1444126\n\nThis patch fixes a bug in SessionState.update_desired_job_list() that\ncould cause a job to be removed twice (causing ValueError to be raised).\n\nAs explained in the associated regression test, the problem is caused by\nthe following chain of dependencies:\n\nA -> B -> C\n\nThe session knows about jobs A and B, C is unknown.\n\nWe want A and B\n\nThe solver loop results in the following actions:\n - (A depends on B so we go to B and notice that it depends on C).\n - B gets removed from desired_job_list because C is unknown\n   (DependencyMissingError).\n - The problem is recorded and we try again (another solution, this time\n   just looking for [A])\n - (A depends on B so we go to B and notice that it depends on C)\n - Crash, B was already removed!\n\nThe fix also involves removing jobs from the set of known jobs because\notherwise an endless loop occurs:\n\n - (A depends on B so we go to B and notice that it depends on C).\n - B gets removed from desired_job_list because C is unknown\n   (DependencyMissingError).\n - The problem is recorded and we try again (another solution, this time\n   just looking for [A])\n - (A depends on B so we go to B and notice that it depends on C)\n - B was already removed so we don't do anything and we try again\n   (oops!, nothing has changed we'll be here forever)\n\nFixes: https://bugs.launchpad.net/plainbox/+bug/1444126\n\nSigned-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>","distinct":true,"url":"https://api.github.com/repos/checkbox/checkbox/commits/91f6b9507809f6ade20ad9d154bc734a90e52b86"},{"sha":"c2cf1be5900f567f3115e870a796619540441f60","author":{"email":"06b40a82600060aa4dd63b8edab70ee2d86817cd@canonical.com","name":"Zygmunt Krynicki"},"message":"plainbox:ctrl: use real RFC822 record for testing\n\nThis patch changes some tests to use a real RFC822 record for testing\nsession controller code. The intent is to let that real record behave\ncorrectly when upcoming code inspects it for some data.\n\nSigned-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>","distinct":true,"url":"https://api.github.com/repos/checkbox/checkbox/commits/c2cf1be5900f567f3115e870a796619540441f60"},{"sha":"ac9226b2a6bb972370e04fe40320cf71e4a299d4","author":{"email":"06b40a82600060aa4dd63b8edab70ee2d86817cd@canonical.com","name":"Zygmunt Krynicki"},"message":"plainbox:ctrl: skip non-jobs printed by local jobs\n\nThis patch makes the session state controller skip non-job units that\nare printed by local jobs. In theory we could add more units this way\nbut the code for handling that is ugly as it is, without the holding\narea, so this is the better compromise.\n\nFixes: https://bugs.launchpad.net/plainbox/+bug/1443228\n\nSigned-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>","distinct":true,"url":"https://api.github.com/repos/checkbox/checkbox/commits/ac9226b2a6bb972370e04fe40320cf71e4a299d4"},{"sha":"cd5219ef0fb93176af889c25f1784e71e67b12c9","author":{"email":"06b40a82600060aa4dd63b8edab70ee2d86817cd@canonical.com","name":"Zygmunt Krynicki"},"message":"plainbox:depmgr: don't crash when directly solving unknown jobs\n\nThis patch changes the DependencyManager class not to crash when asked\nto solve the dependency chain of a given job, directly (as if it was\nplaced on the desired_job_list) but the job is not present in the solver\ncopy of job_list.\n\nInstead of raising KeyError, a new error (subclass of DependencyError)\nDependencyUnknownError is raised. This error is handled uniformly by the\nSessionState class so everything works as expected.\n\nFixes: https://bugs.launchpad.net/plainbox/+bug/1334296\n\nSigned-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>","distinct":true,"url":"https://api.github.com/repos/checkbox/checkbox/commits/cd5219ef0fb93176af889c25f1784e71e67b12c9"},{"sha":"2e751715258dc3b81f991d0187f8f12d4b03989d","author":{"email":"06b40a82600060aa4dd63b8edab70ee2d86817cd@canonical.com","name":"Zygmunt Krynicki"},"message":"\"automatic merge of lp:~zyga/checkbox/fix-1444126/ by tarmac [r=kissiel][bug=1444126][author=zyga]\"","distinct":true,"url":"https://api.github.com/repos/checkbox/checkbox/commits/2e751715258dc3b81f991d0187f8f12d4b03989d"},{"sha":"7b3eb45aa13cbc1ed36d67cb9ddd10cbf220c4e0","author":{"email":"06b40a82600060aa4dd63b8edab70ee2d86817cd@canonical.com","name":"Zygmunt Krynicki"},"message":"\"automatic merge of lp:~zyga/checkbox/fix-1334296/ by tarmac [r=kissiel][bug=1334296][author=zyga]\"","distinct":true,"url":"https://api.github.com/repos/checkbox/checkbox/commits/7b3eb45aa13cbc1ed36d67cb9ddd10cbf220c4e0"},{"sha":"b1f7677c6b6b53a6fb5034a78a83366df4efad86","author":{"email":"06b40a82600060aa4dd63b8edab70ee2d86817cd@canonical.com","name":"Zygmunt Krynicki"},"message":"\"automatic merge of lp:~zyga/checkbox/fix-1443911/ by tarmac [r=kissiel][bug=1443911][author=zyga]\"","distinct":true,"url":"https://api.github.com/repos/checkbox/checkbox/commits/b1f7677c6b6b53a6fb5034a78a83366df4efad86"},{"sha":"1c483e8597883830866f0e65dba5f8254131c12e","author":{"email":"06b40a82600060aa4dd63b8edab70ee2d86817cd@canonical.com","name":"Zygmunt Krynicki"},"message":"\"automatic merge of lp:~zyga/checkbox/fix-1443228/ by tarmac [r=kissiel][bug=1443228][author=zyga]\"","distinct":true,"url":"https://api.github.com/repos/checkbox/checkbox/commits/1c483e8597883830866f0e65dba5f8254131c12e"}]}