def get_thrift_profile(self, query_id, timeout=10, interval=1): """Returns thrift profile of the specified query ID, if available""" page_name = "query_profile_encoded?query_id=%s" % (query_id) try: response = self.open_debug_webpage(page_name, timeout=timeout, interval=interval) tbuf = response.read() except Exception as e: LOG.info("Thrift profile for query %s not yet available: %s", query_id, str(e)) return None else: tree = TRuntimeProfileTree() try: deserialize(tree, zlib.decompress(base64.b64decode(tbuf)), protocol_factory=TCompactProtocol. TCompactProtocolFactory()) tree.validate() return tree except Exception as e: LOG.info( "Exception while deserializing query profile of %s: %s", query_id, str(e)) # We should assert that the response code is not 200 once # IMPALA-6332: Impala webserver should return HTTP error code for missing query # profiles, is fixed. if str(e) == 'Incorrect padding': assert "Could not obtain runtime profile" in tbuf, tbuf return None
def get_thrift_profile(self, query_id, timeout=10, interval=1): """Returns thrift profile of the specified query ID, if available""" page_name = "query_profile_encoded?query_id=%s" % (query_id) try: response = self.open_debug_webpage(page_name, timeout=timeout, interval=interval) tbuf = response.text except Exception as e: LOG.info("Thrift profile for query %s not yet available: %s", query_id, str(e)) return None else: tree = TRuntimeProfileTree() try: deserialize(tree, zlib.decompress(base64.b64decode(tbuf)), protocol_factory=TCompactProtocol.TCompactProtocolFactory()) tree.validate() return tree except Exception as e: LOG.info("Exception while deserializing query profile of %s: %s", query_id, str(e)); # We should assert that the response code is not 200 once # IMPALA-6332: Impala webserver should return HTTP error code for missing query # profiles, is fixed. if str(e) == 'Incorrect padding': assert "Could not obtain runtime profile" in tbuf, tbuf return None
def decode_profile_line(line): space_separated = line.split(" ") if len(space_separated) == 3: ts = int(space_separated[0]) print datetime.datetime.fromtimestamp( ts / 1000.0).isoformat(), space_separated[1] base64_encoded = space_separated[2] elif len(space_separated) == 1: base64_encoded = space_separated[0] else: raise Exception("Unexpected line: " + line) possibly_compressed = base64.b64decode(base64_encoded) # Handle both compressed and uncompressed Thrift profiles try: thrift = zlib.decompress(possibly_compressed) except zlib.error: thrift = possibly_compressed tree = TRuntimeProfileTree() deserialize(tree, thrift, protocol_factory=TCompactProtocol.TCompactProtocolFactory()) tree.validate() return tree
def decode_profile_line(line): space_separated = line.split(" ") if len(space_separated) == 3: ts = int(space_separated[0]) print datetime.datetime.fromtimestamp(ts / 1000.0).isoformat(), space_separated[1] base64_encoded = space_separated[2] elif len(space_separated) == 1: base64_encoded = space_separated[0] else: raise Exception("Unexpected line: " + line) possibly_compressed = base64.b64decode(base64_encoded) # Handle both compressed and uncompressed Thrift profiles try: thrift = zlib.decompress(possibly_compressed) except zlib.error: thrift = possibly_compressed tree = TRuntimeProfileTree() deserialize(tree, thrift, protocol_factory=TCompactProtocol.TCompactProtocolFactory()) tree.validate() return tree
if len(sys.argv) == 1 or sys.argv[1] == "-": input_data = sys.stdin elif len(sys.argv) == 2: input_data = file(sys.argv[1]) else: print >> sys.stderr, "Usage: %s [file]" % (sys.argv[0],) sys.exit(1) for line in input_data: space_separated = line.split(" ") if len(space_separated) == 3: ts = int(space_separated[0]) print datetime.datetime.fromtimestamp(ts/1000.0).isoformat(), space_separated[1], base64_encoded = space_separated[2] elif len(space_separated) == 1: base64_encoded = space_separated[0] else: raise Exception("Unexpected line: " + line) possibly_compressed = base64.b64decode(base64_encoded) # Handle both compressed and uncompressed Thrift profiles try: thrift = zlib.decompress(possibly_compressed) except zlib.error: thrift = possibly_compressed tree = TRuntimeProfileTree() deserialize(tree, thrift, protocol_factory=TCompactProtocol.TCompactProtocolFactory()) tree.validate() print tree
elif len(sys.argv) == 2: input_data = file(sys.argv[1]) else: print >> sys.stderr, "Usage: %s [file]" % (sys.argv[0], ) sys.exit(1) for line in input_data: space_separated = line.split(" ") if len(space_separated) == 3: ts = int(space_separated[0]) print datetime.datetime.fromtimestamp( ts / 1000.0).isoformat(), space_separated[1], base64_encoded = space_separated[2] elif len(space_separated) == 1: base64_encoded = space_separated[0] else: raise Exception("Unexpected line: " + line) possibly_compressed = base64.b64decode(base64_encoded) # Handle both compressed and uncompressed Thrift profiles try: thrift = zlib.decompress(possibly_compressed) except zlib.error: thrift = possibly_compressed tree = TRuntimeProfileTree() deserialize(tree, thrift, protocol_factory=TCompactProtocol.TCompactProtocolFactory()) tree.validate() print tree