private Task<?> getCopyTask(String sourceUri, Path dest) {
      boolean copyAtLoad = context.hiveConf.getBoolVar(HiveConf.ConfVars.REPL_RUN_DATA_COPY_TASKS_ON_TARGET);
      if (copyAtLoad ) {
        return ReplCopyTask.getLoadCopyTask(metadata.getReplicationSpec(), new Path(sourceUri), dest, context.hiveConf,
                context.getDumpDirectory(), context.getMetricCollector());
      } else {
        //CopyTask expects the destination directory, hence we pass the parent of the actual destination path
        return TaskFactory.get(new CopyWork(new Path(sourceUri), dest.getParent(), true, false,
                context.getDumpDirectory(), context.getMetricCollector(), true), context.hiveConf);
      }
    }
the destination also includes the current timestamp to randomise the placement of the jar at a given location for a function .
this is done to allow the  CREATE / DROP / CREATE of the same function with same name and jar's but updated
binaries across the two creates.
ql/src/java/org/apache/hadoop/hive/ql/parse/repl/load/message/CreateFunctionHandler.java