From df0f365c11dba088d6d320246e3f4934091ea71d Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 13 Oct 2016 17:37:01 -0700
Subject: [PATCH] Fix bad stream terminators

---
 .../ext/transport/chttp2/transport/writing.c    | 17 ++++++++++++-----
 tools/run_tests/jobset.py                       |  4 ++++
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/core/ext/transport/chttp2/transport/writing.c b/src/core/ext/transport/chttp2/transport/writing.c
index d34a7918b5..8f86ed690b 100644
--- a/src/core/ext/transport/chttp2/transport/writing.c
+++ b/src/core/ext/transport/chttp2/transport/writing.c
@@ -151,6 +151,8 @@ bool grpc_chttp2_begin_write(grpc_exec_ctx *exec_ctx,
           bool is_last_frame =
               is_last_data_frame && s->send_trailing_metadata != NULL &&
               grpc_metadata_batch_is_empty(s->send_trailing_metadata);
+          gpr_log(GPR_DEBUG, "sb:%d ldf:%d ilf:%d", send_bytes,
+                  is_last_data_frame, is_last_frame);
           grpc_chttp2_encode_data(s->id, &s->flow_controlled_buffer, send_bytes,
                                   is_last_frame, &s->stats.outgoing,
                                   &t->outbuf);
@@ -181,11 +183,16 @@ bool grpc_chttp2_begin_write(grpc_exec_ctx *exec_ctx,
       if (s->send_trailing_metadata != NULL &&
           s->fetching_send_message == NULL &&
           s->flow_controlled_buffer.length == 0) {
-        grpc_chttp2_encode_header(
-            &t->hpack_compressor, s->id, s->send_trailing_metadata, true,
-            t->settings[GRPC_ACKED_SETTINGS]
-                       [GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE],
-            &s->stats.outgoing, &t->outbuf);
+        if (grpc_metadata_batch_is_empty(s->send_trailing_metadata)) {
+          grpc_chttp2_encode_data(s->id, &s->flow_controlled_buffer, 0, true,
+                                  &s->stats.outgoing, &t->outbuf);
+        } else {
+          grpc_chttp2_encode_header(
+              &t->hpack_compressor, s->id, s->send_trailing_metadata, true,
+              t->settings[GRPC_ACKED_SETTINGS]
+                         [GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE],
+              &s->stats.outgoing, &t->outbuf);
+        }
         s->send_trailing_metadata = NULL;
         s->sent_trailing_metadata = true;
         if (!t->is_client && !s->read_closed) {
diff --git a/tools/run_tests/jobset.py b/tools/run_tests/jobset.py
index b6fb6318e0..b2b4998104 100755
--- a/tools/run_tests/jobset.py
+++ b/tools/run_tests/jobset.py
@@ -228,10 +228,14 @@ class Job(object):
     env.update(self._spec.environ)
     env.update(self._add_env)
     env = sanitized_environment(env)
+    penv = {}
+    penv.update(self._spec.environ)
+    penv.update(self._add_env)
     self._start = time.time()
     cmdline = self._spec.cmdline
     if measure_cpu_costs:
       cmdline = ['time', '--portability'] + cmdline
+    print('\n\ncmdline: %s\nenv: %s\n' % (cmdline, penv))
     try_start = lambda: subprocess.Popen(args=cmdline,
                                          stderr=subprocess.STDOUT,
                                          stdout=self._tempfile,
-- 
GitLab