Re: [ovs-dev] [PATCH v2 1/2] table: append newline when printing tables
On Wed, Aug 08, 2018 at 10:15:35AM -0500, Terry Wilson wrote: > On Tue, Aug 7, 2018 at 7:34 PM, Aaron Conole wrote: > > With commit cb139fa8b3a1 ("table: New function table_format() for > > formatting a table as a string.") a new mechanism for formatting > > tables was introduced, and the table_print method was refactored to > > use this. > > > > During that refactor, calls to 'puts' were replaced with > > 'ds_put_cstr', and table print was changed to use 'fputs(..., > > stdout)'. Unfortunately, fputs() does not append a newline to the > > string provided, and changes the output strings of, for example, > > ovsdb-client dump to print all on one line. This means > > post-processing scripts that are chained after ovsdb-client would > > either block indefinitely (if they don't detect EOF), or process the > > entire bundle at once (rather than seeing each table on a separate > > line). > > > > Fixes: cb139fa8b3a1 ("table: New function table_format() for formatting a > > table as a string.") > > Cc: Ben Pfaff > > Cc: Jakub Sitnicki > > Reported-by: Terry Wilson > > Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=1608508 > > Signed-off-by: Aaron Conole > > Suggested-by: Ben Pfaff > > --- > > lib/table.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/lib/table.c b/lib/table.c > > index cd811caf5..19bf89262 100644 > > --- a/lib/table.c > > +++ b/lib/table.c > > @@ -547,6 +547,7 @@ table_print_json__(const struct table *table, const > > struct table_style *style, > > json_object_put(json, "data", data); > > > > json_to_ds(json, style->json_flags, s); > > +ds_put_char(s, '\n'); > > json_destroy(json); > > } > > > > -- > > 2.14.3 > > > > I can verify that this re-adds the newline and that it fixes the issue > in neutron's ovs-agent. > > Acked-by: Terry Wilson > Tested-by: Terry Wilson This now has the world's longest collection of tags for a one-line change: Fixes: cb139fa8b3a1 ("table: New function table_format() for formatting a table as a string.") Cc: Ben Pfaff Cc: Jakub Sitnicki Reported-by: Terry Wilson Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=1608508 Signed-off-by: Aaron Conole Suggested-by: Ben Pfaff Signed-off-by: Ben Pfaff Acked-by: Terry Wilson Tested-by: Terry Wilson I applied this to master and branch-2.10. ___ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev
Re: [ovs-dev] [PATCH v2 1/2] table: append newline when printing tables
On Tue, Aug 7, 2018 at 7:34 PM, Aaron Conole wrote: > With commit cb139fa8b3a1 ("table: New function table_format() for > formatting a table as a string.") a new mechanism for formatting > tables was introduced, and the table_print method was refactored to > use this. > > During that refactor, calls to 'puts' were replaced with > 'ds_put_cstr', and table print was changed to use 'fputs(..., > stdout)'. Unfortunately, fputs() does not append a newline to the > string provided, and changes the output strings of, for example, > ovsdb-client dump to print all on one line. This means > post-processing scripts that are chained after ovsdb-client would > either block indefinitely (if they don't detect EOF), or process the > entire bundle at once (rather than seeing each table on a separate > line). > > Fixes: cb139fa8b3a1 ("table: New function table_format() for formatting a > table as a string.") > Cc: Ben Pfaff > Cc: Jakub Sitnicki > Reported-by: Terry Wilson > Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=1608508 > Signed-off-by: Aaron Conole > Suggested-by: Ben Pfaff > --- > lib/table.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/lib/table.c b/lib/table.c > index cd811caf5..19bf89262 100644 > --- a/lib/table.c > +++ b/lib/table.c > @@ -547,6 +547,7 @@ table_print_json__(const struct table *table, const > struct table_style *style, > json_object_put(json, "data", data); > > json_to_ds(json, style->json_flags, s); > +ds_put_char(s, '\n'); > json_destroy(json); > } > > -- > 2.14.3 > I can verify that this re-adds the newline and that it fixes the issue in neutron's ovs-agent. Acked-by: Terry Wilson Tested-by: Terry Wilson ___ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev
[ovs-dev] [PATCH v2 1/2] table: append newline when printing tables
With commit cb139fa8b3a1 ("table: New function table_format() for formatting a table as a string.") a new mechanism for formatting tables was introduced, and the table_print method was refactored to use this. During that refactor, calls to 'puts' were replaced with 'ds_put_cstr', and table print was changed to use 'fputs(..., stdout)'. Unfortunately, fputs() does not append a newline to the string provided, and changes the output strings of, for example, ovsdb-client dump to print all on one line. This means post-processing scripts that are chained after ovsdb-client would either block indefinitely (if they don't detect EOF), or process the entire bundle at once (rather than seeing each table on a separate line). Fixes: cb139fa8b3a1 ("table: New function table_format() for formatting a table as a string.") Cc: Ben Pfaff Cc: Jakub Sitnicki Reported-by: Terry Wilson Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=1608508 Signed-off-by: Aaron Conole Suggested-by: Ben Pfaff --- lib/table.c | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/table.c b/lib/table.c index cd811caf5..19bf89262 100644 --- a/lib/table.c +++ b/lib/table.c @@ -547,6 +547,7 @@ table_print_json__(const struct table *table, const struct table_style *style, json_object_put(json, "data", data); json_to_ds(json, style->json_flags, s); +ds_put_char(s, '\n'); json_destroy(json); } -- 2.14.3 ___ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev