public class oadd.org.apache.hadoop.io.nativeio.NativeIO extends java.lang.Object
{
private static boolean workaroundNonThreadSafePasswdCalls;
private static final org.slf4j.Logger LOG;
private static boolean nativeLoaded;
private static final java.util.Map uidCache;
private static long cacheTimeout;
private static boolean initialized;
public void <init>()
{
oadd.org.apache.hadoop.io.nativeio.NativeIO v;
v := @this: oadd.org.apache.hadoop.io.nativeio.NativeIO;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
public static boolean isAvailable()
{
boolean v, v, v;
v = staticinvoke <oadd.org.apache.hadoop.util.NativeCodeLoader: boolean isNativeCodeLoaded()>();
if v == 0 goto label;
v = <oadd.org.apache.hadoop.io.nativeio.NativeIO: boolean nativeLoaded>;
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private static native void initNative();
static long getMemlockLimit()
{
long v;
boolean v;
v = staticinvoke <oadd.org.apache.hadoop.io.nativeio.NativeIO: boolean isAvailable()>();
if v == 0 goto label;
v = staticinvoke <oadd.org.apache.hadoop.io.nativeio.NativeIO: long getMemlockLimit0()>();
goto label;
label:
v = 0L;
label:
return v;
}
private static native long getMemlockLimit0();
static long getOperatingSystemPageSize()
{
java.lang.Throwable v;
org.slf4j.Logger v;
int v;
java.lang.Class v;
java.lang.Object v;
java.lang.reflect.Field v;
label:
v = class "Lsun/misc/Unsafe;";
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Field getDeclaredField(java.lang.String)>("theUnsafe");
virtualinvoke v.<java.lang.reflect.Field: void setAccessible(boolean)>(1);
v = virtualinvoke v.<java.lang.reflect.Field: java.lang.Object get(java.lang.Object)>(null);
v = virtualinvoke v.<sun.misc.Unsafe: int pageSize()>();
label:
return v;
label:
v := @caughtexception;
v = <oadd.org.apache.hadoop.io.nativeio.NativeIO: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Throwable)>("Unable to get operating system page size.  Guessing 4096.", v);
return 4096L;
catch java.lang.Throwable from label to label with label;
}
private static java.lang.String stripDomain(java.lang.String)
{
int v, v, v;
java.lang.String v;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: int indexOf(int)>(92);
v = (int) -1;
if v == v goto label;
v = v + 1;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int)>(v);
label:
return v;
}
public static java.lang.String getOwner(java.io.FileDescriptor) throws java.io.IOException
{
long v, v, v, v, v;
byte v;
java.lang.Long v, v;
java.util.Map v, v;
oadd.org.apache.hadoop.io.nativeio.NativeIO$CachedUid v;
java.lang.String v, v, v, v, v;
boolean v;
org.slf4j.Logger v;
java.io.FileDescriptor v;
java.lang.Object v;
v := @parameter: java.io.FileDescriptor;
staticinvoke <oadd.org.apache.hadoop.io.nativeio.NativeIO: void ensureInitialized()>();
v = <oadd.org.apache.hadoop.util.Shell: boolean WINDOWS>;
if v == 0 goto label;
v = staticinvoke <oadd.org.apache.hadoop.io.nativeio.NativeIO$Windows: java.lang.String getOwner(java.io.FileDescriptor)>(v);
v = staticinvoke <oadd.org.apache.hadoop.io.nativeio.NativeIO: java.lang.String stripDomain(java.lang.String)>(v);
return v;
label:
v = staticinvoke <oadd.org.apache.hadoop.io.nativeio.NativeIO$POSIX: long getUIDforFDOwnerforOwner(java.io.FileDescriptor)>(v);
v = <oadd.org.apache.hadoop.io.nativeio.NativeIO: java.util.Map uidCache>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
if v == null goto label;
v = v.<oadd.org.apache.hadoop.io.nativeio.NativeIO$CachedUid: long timestamp>;
v = <oadd.org.apache.hadoop.io.nativeio.NativeIO: long cacheTimeout>;
v = v + v;
v = v cmp v;
if v <= 0 goto label;
v = v.<oadd.org.apache.hadoop.io.nativeio.NativeIO$CachedUid: java.lang.String username>;
return v;
label:
v = staticinvoke <oadd.org.apache.hadoop.io.nativeio.NativeIO$POSIX: java.lang.String getUserName(long)>(v);
v = <oadd.org.apache.hadoop.io.nativeio.NativeIO: org.slf4j.Logger LOG>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,long)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Got UserName \u for UID \u from the native implementation");
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>(v);
v = new oadd.org.apache.hadoop.io.nativeio.NativeIO$CachedUid;
specialinvoke v.<oadd.org.apache.hadoop.io.nativeio.NativeIO$CachedUid: void <init>(java.lang.String,long)>(v, v);
v = <oadd.org.apache.hadoop.io.nativeio.NativeIO: java.util.Map uidCache>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
return v;
}
public static java.io.FileDescriptor getShareDeleteFileDescriptor(java.io.File, long) throws java.io.IOException
{
java.io.RandomAccessFile v;
long v;
java.io.File v;
byte v, v;
java.io.FileDescriptor v, v;
java.lang.String v;
boolean v;
v := @parameter: java.io.File;
v := @parameter: long;
v = <oadd.org.apache.hadoop.util.Shell: boolean WINDOWS>;
if v != 0 goto label;
v = new java.io.RandomAccessFile;
specialinvoke v.<java.io.RandomAccessFile: void <init>(java.io.File,java.lang.String)>(v, "r");
v = v cmp 0L;
if v <= 0 goto label;
virtualinvoke v.<java.io.RandomAccessFile: void seek(long)>(v);
label:
v = virtualinvoke v.<java.io.RandomAccessFile: java.io.FileDescriptor getFD()>();
return v;
label:
v = virtualinvoke v.<java.io.File: java.lang.String getAbsolutePath()>();
v = staticinvoke <oadd.org.apache.hadoop.io.nativeio.NativeIO$Windows: java.io.FileDescriptor createFile(java.lang.String,long,long,long)>(v, 2147483648L, 7L, 3L);
v = v cmp 0L;
if v <= 0 goto label;
staticinvoke <oadd.org.apache.hadoop.io.nativeio.NativeIO$Windows: long setFilePointer(java.io.FileDescriptor,long,long)>(v, v, 0L);
label:
return v;
}
public static java.io.FileOutputStream getCreateForWriteFileOutputStream(java.io.File, int) throws java.io.IOException
{
long v;
byte v;
int v, v, v, v, v, v;
java.lang.String v, v, v;
oadd.org.apache.hadoop.io.nativeio.NativeIOException v, v;
boolean v;
java.io.FileOutputStream v, v;
java.io.File v;
oadd.org.apache.hadoop.io.nativeio.Errno v, v;
java.io.FileDescriptor v, v;
oadd.org.apache.hadoop.io.SecureIOUtils$AlreadyExistsException v, v;
v := @parameter: java.io.File;
v := @parameter: int;
v = <oadd.org.apache.hadoop.util.Shell: boolean WINDOWS>;
if v != 0 goto label;
label:
v = virtualinvoke v.<java.io.File: java.lang.String getAbsolutePath()>();
v = <oadd.org.apache.hadoop.io.nativeio.NativeIO$POSIX: int O_WRONLY>;
v = <oadd.org.apache.hadoop.io.nativeio.NativeIO$POSIX: int O_CREAT>;
v = v | v;
v = <oadd.org.apache.hadoop.io.nativeio.NativeIO$POSIX: int O_EXCL>;
v = v | v;
v = staticinvoke <oadd.org.apache.hadoop.io.nativeio.NativeIO$POSIX: java.io.FileDescriptor open(java.lang.String,int,int)>(v, v, v);
v = new java.io.FileOutputStream;
specialinvoke v.<java.io.FileOutputStream: void <init>(java.io.FileDescriptor)>(v);
label:
return v;
label:
v := @caughtexception;
v = virtualinvoke v.<oadd.org.apache.hadoop.io.nativeio.NativeIOException: oadd.org.apache.hadoop.io.nativeio.Errno getErrno()>();
v = <oadd.org.apache.hadoop.io.nativeio.Errno: oadd.org.apache.hadoop.io.nativeio.Errno EEXIST>;
if v != v goto label;
v = new oadd.org.apache.hadoop.io.SecureIOUtils$AlreadyExistsException;
specialinvoke v.<oadd.org.apache.hadoop.io.SecureIOUtils$AlreadyExistsException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
throw v;
label:
v = virtualinvoke v.<java.io.File: java.lang.String getCanonicalPath()>();
v = staticinvoke <oadd.org.apache.hadoop.io.nativeio.NativeIO$Windows: java.io.FileDescriptor createFile(java.lang.String,long,long,long)>(v, 1073741824L, 7L, 1L);
v = virtualinvoke v.<java.io.File: java.lang.String getCanonicalPath()>();
staticinvoke <oadd.org.apache.hadoop.io.nativeio.NativeIO$POSIX: void chmod(java.lang.String,int)>(v, v);
v = new java.io.FileOutputStream;
specialinvoke v.<java.io.FileOutputStream: void <init>(java.io.FileDescriptor)>(v);
label:
return v;
label:
v := @caughtexception;
v = virtualinvoke v.<oadd.org.apache.hadoop.io.nativeio.NativeIOException: long getErrorCode()>();
v = v cmp 80L;
if v != 0 goto label;
v = new oadd.org.apache.hadoop.io.SecureIOUtils$AlreadyExistsException;
specialinvoke v.<oadd.org.apache.hadoop.io.SecureIOUtils$AlreadyExistsException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
throw v;
catch oadd.org.apache.hadoop.io.nativeio.NativeIOException from label to label with label;
catch oadd.org.apache.hadoop.io.nativeio.NativeIOException from label to label with label;
}
private static synchronized void ensureInitialized()
{
org.slf4j.Logger v;
long v, v, v, v;
oadd.org.apache.hadoop.conf.Configuration v;
java.lang.String v;
boolean v;
v = <oadd.org.apache.hadoop.io.nativeio.NativeIO: boolean initialized>;
if v != 0 goto label;
v = new oadd.org.apache.hadoop.conf.Configuration;
specialinvoke v.<oadd.org.apache.hadoop.conf.Configuration: void <init>()>();
v = virtualinvoke v.<oadd.org.apache.hadoop.conf.Configuration: long getLong(java.lang.String,long)>("hadoop.security.uid.cache.secs", 14400L);
v = v * 1000L;
<oadd.org.apache.hadoop.io.nativeio.NativeIO: long cacheTimeout> = v;
v = <oadd.org.apache.hadoop.io.nativeio.NativeIO: org.slf4j.Logger LOG>;
v = <oadd.org.apache.hadoop.io.nativeio.NativeIO: long cacheTimeout>;
v = v / 1000L;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (long)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Initialized cache for UID to User mapping with a cache timeout of \u seconds.");
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>(v);
<oadd.org.apache.hadoop.io.nativeio.NativeIO: boolean initialized> = 1;
label:
return;
}
public static void renameTo(java.io.File, java.io.File) throws java.io.IOException
{
java.io.IOException v;
java.io.File v, v;
java.lang.String v, v, v;
boolean v, v;
v := @parameter: java.io.File;
v := @parameter: java.io.File;
v = <oadd.org.apache.hadoop.io.nativeio.NativeIO: boolean nativeLoaded>;
if v != 0 goto label;
v = virtualinvoke v.<java.io.File: boolean renameTo(java.io.File)>(v);
if v != 0 goto label;
v = new java.io.IOException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.io.File,java.io.File)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("renameTo(src=\u, dst=\u) failed.");
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>(v);
throw v;
label:
v = virtualinvoke v.<java.io.File: java.lang.String getAbsolutePath()>();
v = virtualinvoke v.<java.io.File: java.lang.String getAbsolutePath()>();
staticinvoke <oadd.org.apache.hadoop.io.nativeio.NativeIO: void renameTo0(java.lang.String,java.lang.String)>(v, v);
label:
return;
}
public static void link(java.io.File, java.io.File) throws java.io.IOException
{
java.lang.String v, v;
java.io.File v, v;
boolean v;
v := @parameter: java.io.File;
v := @parameter: java.io.File;
v = <oadd.org.apache.hadoop.io.nativeio.NativeIO: boolean nativeLoaded>;
if v != 0 goto label;
staticinvoke <oadd.org.apache.hadoop.fs.HardLink: void createHardLink(java.io.File,java.io.File)>(v, v);
goto label;
label:
v = virtualinvoke v.<java.io.File: java.lang.String getAbsolutePath()>();
v = virtualinvoke v.<java.io.File: java.lang.String getAbsolutePath()>();
staticinvoke <oadd.org.apache.hadoop.io.nativeio.NativeIO: void link0(java.lang.String,java.lang.String)>(v, v);
label:
return;
}
private static native void renameTo0(java.lang.String, java.lang.String) throws oadd.org.apache.hadoop.io.nativeio.NativeIOException;
private static native void link0(java.lang.String, java.lang.String) throws oadd.org.apache.hadoop.io.nativeio.NativeIOException;
public static void copyFileUnbuffered(java.io.File, java.io.File) throws java.io.IOException
{
java.lang.Throwable v, v, v;
long v, v, v;
byte v;
java.io.Closeable[] v, v;
java.lang.String v, v;
boolean v, v;
org.slf4j.Logger v, v;
java.io.FileOutputStream v;
java.io.FileInputStream v;
java.io.File v, v;
java.nio.channels.FileChannel v, v;
v := @parameter: java.io.File;
v := @parameter: java.io.File;
v = <oadd.org.apache.hadoop.io.nativeio.NativeIO: boolean nativeLoaded>;
if v == 0 goto label;
v = <oadd.org.apache.hadoop.util.Shell: boolean WINDOWS>;
if v == 0 goto label;
v = virtualinvoke v.<java.io.File: java.lang.String getAbsolutePath()>();
v = virtualinvoke v.<java.io.File: java.lang.String getAbsolutePath()>();
staticinvoke <oadd.org.apache.hadoop.io.nativeio.NativeIO: void copyFileUnbuffered0(java.lang.String,java.lang.String)>(v, v);
goto label;
label:
v = new java.io.FileInputStream;
specialinvoke v.<java.io.FileInputStream: void <init>(java.io.File)>(v);
v = null;
label:
v = virtualinvoke v.<java.io.FileInputStream: java.nio.channels.FileChannel getChannel()>();
v = new java.io.FileOutputStream;
specialinvoke v.<java.io.FileOutputStream: void <init>(java.io.File)>(v);
label:
v = virtualinvoke v.<java.io.FileOutputStream: java.nio.channels.FileChannel getChannel()>();
label:
v = virtualinvoke v.<java.nio.channels.FileChannel: long size()>();
v = 0L;
label:
v = v cmp 0L;
if v <= 0 goto label;
v = virtualinvoke v.<java.nio.channels.FileChannel: long transferTo(long,long,java.nio.channels.WritableByteChannel)>(v, v, v);
v = v - v;
v = v + v;
goto label;
label:
if v == null goto label;
virtualinvoke v.<java.nio.channels.FileChannel: void close()>();
goto label;
label:
v := @caughtexception;
throw v;
label:
virtualinvoke v.<java.io.FileOutputStream: void close()>();
goto label;
label:
v := @caughtexception;
throw v;
label:
v = <oadd.org.apache.hadoop.io.nativeio.NativeIO: org.slf4j.Logger LOG>;
v = newarray (java.io.Closeable)[2];
v[0] = v;
v[1] = v;
staticinvoke <oadd.org.apache.hadoop.io.IOUtils: void cleanupWithLogger(org.slf4j.Logger,java.io.Closeable[])>(v, v);
goto label;
label:
v := @caughtexception;
v = <oadd.org.apache.hadoop.io.nativeio.NativeIO: org.slf4j.Logger LOG>;
v = newarray (java.io.Closeable)[2];
v[0] = v;
v[1] = v;
staticinvoke <oadd.org.apache.hadoop.io.IOUtils: void cleanupWithLogger(org.slf4j.Logger,java.io.Closeable[])>(v, v);
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private static native void copyFileUnbuffered0(java.lang.String, java.lang.String) throws oadd.org.apache.hadoop.io.nativeio.NativeIOException;
static void <clinit>()
{
java.lang.Throwable v;
org.slf4j.Logger v, v;
java.util.concurrent.ConcurrentHashMap v;
boolean v;
<oadd.org.apache.hadoop.io.nativeio.NativeIO: boolean workaroundNonThreadSafePasswdCalls> = 0;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Loadd/org/apache/hadoop/io/nativeio/NativeIO;");
<oadd.org.apache.hadoop.io.nativeio.NativeIO: org.slf4j.Logger LOG> = v;
<oadd.org.apache.hadoop.io.nativeio.NativeIO: boolean nativeLoaded> = 0;
v = staticinvoke <oadd.org.apache.hadoop.util.NativeCodeLoader: boolean isNativeCodeLoaded()>();
if v == 0 goto label;
label:
staticinvoke <oadd.org.apache.hadoop.io.nativeio.NativeIO: void initNative()>();
<oadd.org.apache.hadoop.io.nativeio.NativeIO: boolean nativeLoaded> = 1;
label:
goto label;
label:
v := @caughtexception;
v = <oadd.org.apache.hadoop.util.PerformanceAdvisory: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Throwable)>("Unable to initialize NativeIO libraries", v);
label:
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
<oadd.org.apache.hadoop.io.nativeio.NativeIO: java.util.Map uidCache> = v;
<oadd.org.apache.hadoop.io.nativeio.NativeIO: boolean initialized> = 0;
return;
catch java.lang.Throwable from label to label with label;
}
}