Example #1
0
 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
Example #3
0
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
Example #4
0
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
Example #6
0
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