void recordEvent(Assignment assignment, Event event) throws Exception { String actionNameString = event.getName().toString(); String payload = (event.getPayload() != null) ? event.getPayload().toString() : null; String userIDString = assignment.getUserID().toString(); String context = (event.getContext() != null) ? event.getContext().getContext() : "PROD"; if (event.getType().equals(Event.Type.IMPRESSION)) { transaction.insert("INSERT INTO event_impression " + "(user_id, experiment_id, bucket_label, context, timestamp, payload) " + "VALUES (?, ?, ?, ?, ?, ?)", userIDString, experimentIDValue, bucketLabelValue, context, event.getTimestamp(), payload); } else { transaction.insert("INSERT INTO event_action " + userIDString, experimentIDValue, bucketLabelValue, actionNameString, context, event.getTimestamp(), payload);
if (event.getTimestamp() == null) { event.setTimestamp(NOW); contextSet.add(event.getContext()); if (event.getName() == null || isBlank(event.getName().toString())) { throw new IllegalArgumentException("Event name cannot be null or an empty string");
private void postEventToMysql(Assignment assignment, Event event) { try { mysqlExecutor.execute(makeEventEnvelope(assignment, event)); } catch (Exception e) { LOGGER.warn("Mysql error: Unable to record event " + event.toString() + " for the user " + assignment.getUserID().toString() + " for context " + assignment.getContext(), e); } }
assignment != null && assignment.getContext() != null ? assignment.getContext().toString(): null); eventJson.put("epochTimestamp", event != null && event.getTimestamp() != null ? event.getTimestamp().getTime(): null); eventJson.put("eventType", event != null ? event.getType() + "": "null"); eventJson.put("eventName", event != null ? event.getName() + "": "null"); eventJson.put("eventPayload", event != null && event.getPayload() != null ? event.getPayload().toString(): null); eventJson.put("value", event != null ? event.getValue(): null);
/** * {@inheritDoc} */ @Override public void recordEvents(Application.Name applicationName, Experiment.Label experimentLabel, User.ID userID, EventList events, Set<Context> contextSet) { Map<Context, Assignment> assignmentHashMap = getAssignments(userID, applicationName, experimentLabel, contextSet); for (Event event : events.getEvents()) { Assignment assignment = assignmentHashMap.get(event.getContext()); if (assignment != null) { postEventToMysql(assignment, event); ingestEventToRealTimeSystems(applicationName, experimentLabel, event, assignment); } } }