public class org.apache.hadoop.hive.kafka.KafkaDagCredentialSupplier extends java.lang.Object implements org.apache.hadoop.hive.ql.exec.tez.DagCredentialSupplier
{
private static final org.slf4j.Logger LOG;
public void <init>()
{
org.apache.hadoop.hive.kafka.KafkaDagCredentialSupplier v;
v := @this: org.apache.hadoop.hive.kafka.KafkaDagCredentialSupplier;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
public org.apache.hadoop.security.token.Token obtainToken(org.apache.hadoop.hive.ql.plan.BaseWork, java.util.Set, org.apache.hadoop.conf.Configuration)
{
org.apache.hadoop.hive.ql.plan.TableDesc v;
java.util.Map v;
org.apache.hadoop.conf.Configuration v;
org.apache.hadoop.hive.ql.plan.BaseWork v;
org.apache.hadoop.hive.kafka.KafkaDagCredentialSupplier v;
boolean v, v, v, v;
java.util.Iterator v;
java.util.Collection v;
java.util.Set v;
org.apache.hadoop.security.token.Token v, v;
java.util.stream.Stream v;
java.util.Optional v;
java.lang.Object v, v;
v := @this: org.apache.hadoop.hive.kafka.KafkaDagCredentialSupplier;
v := @parameter: org.apache.hadoop.hive.ql.plan.BaseWork;
v := @parameter: java.util.Set;
v := @parameter: org.apache.hadoop.conf.Configuration;
v = v instanceof org.apache.hadoop.hive.ql.plan.MapWork;
if v != 0 goto label;
return null;
label:
v = virtualinvoke v.<org.apache.hadoop.hive.ql.plan.MapWork: java.util.Map getAliasToPartnInfo()>();
v = interfaceinvoke v.<java.util.Map: java.util.Collection values()>();
v = interfaceinvoke v.<java.util.Collection: java.util.stream.Stream stream()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.util.Optional findFirst()>();
v = virtualinvoke v.<java.util.Optional: java.lang.Object orElse(java.lang.Object)>(null);
if v == null goto label;
v = virtualinvoke v.<org.apache.hadoop.hive.ql.plan.PartitionDesc: org.apache.hadoop.hive.ql.plan.TableDesc getTableDesc()>();
v = specialinvoke v.<org.apache.hadoop.hive.kafka.KafkaDagCredentialSupplier: boolean isTokenRequired(org.apache.hadoop.hive.ql.plan.TableDesc)>(v);
if v == 0 goto label;
v = specialinvoke v.<org.apache.hadoop.hive.kafka.KafkaDagCredentialSupplier: org.apache.hadoop.security.token.Token getKafkaDelegationTokenForBrokers(org.apache.hadoop.conf.Configuration,org.apache.hadoop.hive.ql.plan.TableDesc)>(v, v);
return v;
label:
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = specialinvoke v.<org.apache.hadoop.hive.kafka.KafkaDagCredentialSupplier: boolean isTokenRequired(org.apache.hadoop.hive.ql.plan.TableDesc)>(v);
if v == 0 goto label;
v = specialinvoke v.<org.apache.hadoop.hive.kafka.KafkaDagCredentialSupplier: org.apache.hadoop.security.token.Token getKafkaDelegationTokenForBrokers(org.apache.hadoop.conf.Configuration,org.apache.hadoop.hive.ql.plan.TableDesc)>(v, v);
return v;
label:
return null;
}
public org.apache.hadoop.io.Text getTokenAlias()
{
org.apache.hadoop.io.Text v;
org.apache.hadoop.hive.kafka.KafkaDagCredentialSupplier v;
v := @this: org.apache.hadoop.hive.kafka.KafkaDagCredentialSupplier;
v = <org.apache.hadoop.hive.kafka.KafkaUtils: org.apache.hadoop.io.Text KAFKA_DELEGATION_TOKEN_KEY>;
return v;
}
private boolean isTokenRequired(org.apache.hadoop.hive.ql.plan.TableDesc)
{
java.util.Properties v, v;
org.apache.hadoop.hive.ql.plan.TableDesc v;
org.apache.kafkaesqueesque.common.security.auth.SecurityProtocol v, v;
org.apache.hadoop.hive.kafka.KafkaTableProperties v;
java.lang.String v, v;
org.apache.hadoop.hive.kafka.KafkaDagCredentialSupplier v;
boolean v, v;
v := @this: org.apache.hadoop.hive.kafka.KafkaDagCredentialSupplier;
v := @parameter: org.apache.hadoop.hive.ql.plan.TableDesc;
v = virtualinvoke v.<org.apache.hadoop.hive.ql.plan.TableDesc: java.util.Properties getProperties()>();
v = <org.apache.hadoop.hive.kafka.KafkaTableProperties: org.apache.hadoop.hive.kafka.KafkaTableProperties HIVE_KAFKA_BOOTSTRAP_SERVERS>;
v = virtualinvoke v.<org.apache.hadoop.hive.kafka.KafkaTableProperties: java.lang.String getName()>();
v = virtualinvoke v.<java.util.Properties: java.lang.String getProperty(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.hadoop.hive.ql.plan.TableDesc: java.util.Properties getProperties()>();
v = staticinvoke <org.apache.hadoop.hive.kafka.KafkaUtils: org.apache.kafkaesqueesque.common.security.auth.SecurityProtocol securityProtocol(java.util.Properties)>(v);
v = staticinvoke <org.apache.commons.lang.StringUtils: boolean isEmpty(java.lang.CharSequence)>(v);
if v != 0 goto label;
v = <org.apache.kafkaesqueesque.common.security.auth.SecurityProtocol: org.apache.kafkaesqueesque.common.security.auth.SecurityProtocol PLAINTEXT>;
if v == v goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private org.apache.hadoop.security.token.Token getKafkaDelegationTokenForBrokers(org.apache.hadoop.conf.Configuration, org.apache.hadoop.hive.ql.plan.TableDesc)
{
byte[] v, v;
org.apache.hadoop.hive.ql.plan.TableDesc v;
org.apache.hadoop.io.Text v;
org.apache.kafkaesqueesque.common.security.token.delegation.TokenInformation v;
org.apache.kafkaesqueesque.clients.admin.CreateDelegationTokenOptions v;
java.lang.Thread v;
org.apache.hadoop.conf.Configuration v, v;
org.apache.kafkaesqueesque.common.security.auth.SecurityProtocol v;
java.util.Set v;
org.apache.kafkaesqueesque.clients.admin.CreateDelegationTokenResult v;
java.lang.Throwable v;
java.lang.Object[] v;
org.apache.hadoop.hive.kafka.KafkaTableProperties v;
org.apache.hadoop.hive.conf.HiveConf$ConfVars v, v;
java.lang.String v, v, v, v, v, v, v, v;
org.apache.hadoop.hive.kafka.KafkaDagCredentialSupplier v;
java.util.Properties v, v;
org.slf4j.Logger v, v, v, v;
java.io.IOException v;
java.lang.RuntimeException v, v, v;
org.apache.hadoop.security.token.Token v;
org.apache.kafkaesqueesque.common.KafkaFuture v;
java.util.concurrent.ExecutionException v;
java.util.function.Consumer v;
java.lang.InterruptedException v;
java.lang.Object v, v;
org.apache.kafkaesqueesque.clients.admin.AdminClient v;
v := @this: org.apache.hadoop.hive.kafka.KafkaDagCredentialSupplier;
v := @parameter: org.apache.hadoop.conf.Configuration;
v := @parameter: org.apache.hadoop.hive.ql.plan.TableDesc;
v = virtualinvoke v.<org.apache.hadoop.hive.ql.plan.TableDesc: java.util.Properties getProperties()>();
v = <org.apache.hadoop.hive.kafka.KafkaTableProperties: org.apache.hadoop.hive.kafka.KafkaTableProperties HIVE_KAFKA_BOOTSTRAP_SERVERS>;
v = virtualinvoke v.<org.apache.hadoop.hive.kafka.KafkaTableProperties: java.lang.String getName()>();
v = virtualinvoke v.<java.util.Properties: java.lang.Object get(java.lang.Object)>(v);
v = <org.apache.hadoop.hive.kafka.KafkaDagCredentialSupplier: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("Getting kafka credentials for brokers: {}", v);
v = <org.apache.hadoop.hive.conf.HiveConf$ConfVars: org.apache.hadoop.hive.conf.HiveConf$ConfVars HIVE_SERVER2_KERBEROS_KEYTAB>;
v = staticinvoke <org.apache.hadoop.hive.conf.HiveConf: java.lang.String getVar(org.apache.hadoop.conf.Configuration,org.apache.hadoop.hive.conf.HiveConf$ConfVars)>(v, v);
v = <org.apache.hadoop.hive.conf.HiveConf$ConfVars: org.apache.hadoop.hive.conf.HiveConf$ConfVars HIVE_SERVER2_KERBEROS_PRINCIPAL>;
v = staticinvoke <org.apache.hadoop.hive.conf.HiveConf: java.lang.String getVar(org.apache.hadoop.conf.Configuration,org.apache.hadoop.hive.conf.HiveConf$ConfVars)>(v, v);
label:
v = staticinvoke <org.apache.hadoop.security.SecurityUtil: java.lang.String getServerPrincipal(java.lang.String,java.lang.String)>(v, "0.0.0.0");
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v = new java.util.Properties;
specialinvoke v.<java.util.Properties: void <init>()>();
virtualinvoke v.<java.util.Properties: java.lang.Object put(java.lang.Object,java.lang.Object)>("bootstrap.servers", v);
v = staticinvoke <org.apache.hadoop.hive.kafka.KafkaUtils: org.apache.kafkaesqueesque.common.security.auth.SecurityProtocol securityProtocol(java.util.Properties)>(v);
if v != null goto label;
v = <org.apache.kafkaesqueesque.common.security.auth.SecurityProtocol: org.apache.kafkaesqueesque.common.security.auth.SecurityProtocol SASL_PLAINTEXT>;
v = <org.apache.hadoop.hive.kafka.KafkaDagCredentialSupplier: org.slf4j.Logger LOG>;
v = v.<org.apache.kafkaesqueesque.common.security.auth.SecurityProtocol: java.lang.String name>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object)>("Kafka security.protocol is undefined in table properties. Using default {}", v);
label:
v = v.<org.apache.kafkaesqueesque.common.security.auth.SecurityProtocol: java.lang.String name>;
virtualinvoke v.<java.util.Properties: java.lang.Object put(java.lang.Object,java.lang.Object)>("security.protocol", v);
v = newarray (java.lang.Object)[7];
v[0] = "com.sun.security.auth.module.Krb5LoginModule required";
v[1] = "debug=true";
v[2] = "useKeyTab=true";
v[3] = "storeKey=true";
v[4] = "kafka";
v[5] = v;
v[6] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("%s %s %s %s serviceName=\"%s\" keyTab=\"%s\" principal=\"%s\";", v);
virtualinvoke v.<java.util.Properties: java.lang.Object put(java.lang.Object,java.lang.Object)>("sasl.jaas.config", v);
v = <org.apache.hadoop.hive.kafka.KafkaDagCredentialSupplier: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Jaas config for requesting kafka credentials: {}", v);
v = new org.apache.hadoop.conf.Configuration;
specialinvoke v.<org.apache.hadoop.conf.Configuration: void <init>(org.apache.hadoop.conf.Configuration)>(v);
v = virtualinvoke v.<java.util.Properties: java.util.Set stringPropertyNames()>();
v = staticinvoke <org.apache.hadoop.hive.kafka.KafkaDagCredentialSupplier$lambda_getKafkaDelegationTokenForBrokers_0__1: java.util.function.Consumer bootstrap$(org.apache.hadoop.conf.Configuration,java.util.Properties)>(v, v);
interfaceinvoke v.<java.util.Set: void forEach(java.util.function.Consumer)>(v);
staticinvoke <org.apache.hadoop.hive.kafka.KafkaUtils: void setupKafkaSslProperties(org.apache.hadoop.conf.Configuration,java.util.Properties)>(v, v);
v = new org.apache.kafkaesqueesque.clients.admin.CreateDelegationTokenOptions;
specialinvoke v.<org.apache.kafkaesqueesque.clients.admin.CreateDelegationTokenOptions: void <init>()>();
label:
v = staticinvoke <org.apache.kafkaesqueesque.clients.admin.AdminClient: org.apache.kafkaesqueesque.clients.admin.AdminClient create(java.util.Properties)>(v);
label:
v = virtualinvoke v.<org.apache.kafkaesqueesque.clients.admin.AdminClient: org.apache.kafkaesqueesque.clients.admin.CreateDelegationTokenResult createDelegationToken(org.apache.kafkaesqueesque.clients.admin.CreateDelegationTokenOptions)>(v);
v = virtualinvoke v.<org.apache.kafkaesqueesque.clients.admin.CreateDelegationTokenResult: org.apache.kafkaesqueesque.common.KafkaFuture delegationToken()>();
v = virtualinvoke v.<org.apache.kafkaesqueesque.common.KafkaFuture: java.lang.Object get()>();
v = <org.apache.hadoop.hive.kafka.KafkaDagCredentialSupplier: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("Got kafka delegation token: {}", v);
v = new org.apache.hadoop.security.token.Token;
v = virtualinvoke v.<org.apache.kafkaesqueesque.common.security.token.delegation.DelegationToken: org.apache.kafkaesqueesque.common.security.token.delegation.TokenInformation tokenInfo()>();
v = virtualinvoke v.<org.apache.kafkaesqueesque.common.security.token.delegation.TokenInformation: java.lang.String tokenId()>();
v = virtualinvoke v.<java.lang.String: byte[] getBytes()>();
v = virtualinvoke v.<org.apache.kafkaesqueesque.common.security.token.delegation.DelegationToken: byte[] hmac()>();
v = new org.apache.hadoop.io.Text;
specialinvoke v.<org.apache.hadoop.io.Text: void <init>(java.lang.String)>("kafka");
specialinvoke v.<org.apache.hadoop.security.token.Token: void <init>(byte[],byte[],org.apache.hadoop.io.Text,org.apache.hadoop.io.Text)>(v, v, null, v);
label:
virtualinvoke v.<org.apache.kafkaesqueesque.clients.admin.AdminClient: void close()>();
label:
return v;
label:
v := @caughtexception;
throw v;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String,java.lang.Throwable)>("Exception while getting Kafka token", v);
throw v;
label:
v := @caughtexception;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
virtualinvoke v.<java.lang.Thread: void interrupt()>();
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String,java.lang.Throwable)>("Interrupted while getting Kafka token", v);
throw v;
catch java.io.IOException from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.util.concurrent.ExecutionException from label to label with label;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.InterruptedException from label to label with label;
}
static void <clinit>()
{
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/hadoop/hive/kafka/KafkaDagCredentialSupplier;");
<org.apache.hadoop.hive.kafka.KafkaDagCredentialSupplier: org.slf4j.Logger LOG> = v;
return;
}
}