private void buildMessage()

in src/main/java/com/netflix/bdp/s3mper/alert/impl/CloudWatchAlertDispatcher.java [269:345]


    private void buildMessage(AbstractMessage message) {
        String hostname = "unknown";
        
        try {
            hostname = InetAddress.getLocalHost().getHostName();
        } catch (UnknownHostException e) {
            log.warn("Failed to identify hostname",e);
        }
    
        message.setEpoch(System.currentTimeMillis());
        message.setTimestamp(new Date(message.getEpoch()).toString());
        message.setHostname(hostname);
        
        String username = conf.get("user.name", System.getProperty("user.name"));
        
        try {
            username = UserGroupInformation.getCurrentUser().getUserName();    
        } catch (IOException e) {
            log.warn("Failed to identify user using hadoop library.", e);
        }
        
        message.setUsername(username);
        
        message.setGenieId(conf.get("genie.job.id"));
        message.setDataovenId(conf.get("dataoven.job.id"));
        String queryId = conf.get("hive.query.id");
        
        QueryType queryType = QueryType.Unknown;
        
        if(queryId != null) {
            queryType = QueryType.Hive; 
            message.setLogFile(conf.get("hive.log.file"));
        } else {
            queryId = conf.get("pig.script.id");
                
            if(queryId != null) {
                queryType = QueryType.Pig;
                message.setLogFile(conf.get("pig.logfile"));
            }
        }
        
        message.setQueryId(queryId);
        message.setQueryType(queryType);
        
        message.setJobId(conf.get("mapred.job.id"));
        message.setTaskId(conf.get("mapred.tip.id"));
        message.setAttemptId(conf.get("mapred.task.id"));
        message.setInputFile(conf.get("mapred.input.file"));
        message.setEmail(conf.get("s3mper.email"));
        
        try {
            //We have to guess at this since it may not be explicitly in the config
            if(message.getJobId() == null) {
                String[] split = conf.get("mapreduce.job.dir").split("/");
                String jobId = split[split.length - 1];

                message.setJobId(jobId);
            }
        } catch (RuntimeException e) {
            log.debug("Failed to determine job id");
        }
        
        try {
            StackTraceElement[] stack = Thread.currentThread().getStackTrace();
            
            List<String> stackTrace = new ArrayList<String>(traceDepth);
            
            for (int i = 0; i < traceDepth && i < stack.length; i++) {
                stackTrace.add(stack[i].toString());
            }
            
            message.setStackTrace(stackTrace);
        } catch (Exception e) {
            log.debug("Stacktrace generation failed", e);
        }
        
    }