public NotificationEvent deepCopy() { return new NotificationEvent(this); }
/** * Performs a deep copy on <i>other</i>. */ public NotificationEventResponse(NotificationEventResponse other) { if (other.isSetEvents()) { List<NotificationEvent> __this__events = new ArrayList<NotificationEvent>(other.events.size()); for (NotificationEvent other_element : other.events) { __this__events.add(new NotificationEvent(other_element)); } this.events = __this__events; } }
@Override public void onOpenTxn(OpenTxnEvent openTxnEvent, Connection dbConn, SQLGenerator sqlGenerator) throws MetaException { int lastTxnIdx = openTxnEvent.getTxnIds().size() - 1; OpenTxnMessage msg = MessageBuilder.getInstance().buildOpenTxnMessage(openTxnEvent.getTxnIds().get(0), openTxnEvent.getTxnIds().get(lastTxnIdx)); NotificationEvent event = new NotificationEvent(0, now(), EventType.OPEN_TXN.toString(), msgEncoder.getSerializer().serialize(msg)); try { addNotificationLog(event, openTxnEvent, dbConn, sqlGenerator); } catch (SQLException e) { throw new MetaException("Unable to execute direct SQL " + StringUtils.stringifyException(e)); } }
@Test public void shouldProvideDefaultHandlerWhenNothingRegisteredForThatEvent() { NotificationEvent event = new NotificationEvent(Long.MAX_VALUE, Integer.MAX_VALUE, "shouldGiveDefaultHandler", "s"); event.setMessageFormat(JSONMessageEncoder.FORMAT); EventHandler eventHandler = EventHandlerFactory.handlerFor(event); assertTrue(eventHandler instanceof DefaultHandler); }
@Override public void onAbortTxn(AbortTxnEvent abortTxnEvent, Connection dbConn, SQLGenerator sqlGenerator) throws MetaException { AbortTxnMessage msg = MessageBuilder.getInstance().buildAbortTxnMessage(abortTxnEvent.getTxnId()); NotificationEvent event = new NotificationEvent(0, now(), EventType.ABORT_TXN.toString(), msgEncoder.getSerializer().serialize(msg)); try { addNotificationLog(event, abortTxnEvent, dbConn, sqlGenerator); } catch (SQLException e) { throw new MetaException("Unable to execute direct SQL " + StringUtils.stringifyException(e)); } }
@Override public void onCommitTxn(CommitTxnEvent commitTxnEvent, Connection dbConn, SQLGenerator sqlGenerator) throws MetaException { CommitTxnMessage msg = MessageBuilder.getInstance().buildCommitTxnMessage(commitTxnEvent.getTxnId()); NotificationEvent event = new NotificationEvent(0, now(), EventType.COMMIT_TXN.toString(), msgEncoder.getSerializer().serialize(msg)); try { addNotificationLog(event, commitTxnEvent, dbConn, sqlGenerator); } catch (SQLException e) { throw new MetaException("Unable to execute direct SQL " + StringUtils.stringifyException(e)); } }
/** * @param fnEvent function event * @throws MetaException */ @Override public void onDropFunction(DropFunctionEvent fnEvent) throws MetaException { Function fn = fnEvent.getFunction(); DropFunctionMessage msg = MessageBuilder.getInstance().buildDropFunctionMessage(fn); NotificationEvent event = new NotificationEvent(0, now(), EventType.DROP_FUNCTION.toString(), msgEncoder.getSerializer().serialize(msg)); event.setCatName(fn.isSetCatName() ? fn.getCatName() : DEFAULT_CATALOG_NAME); event.setDbName(fn.getDbName()); process(event, fnEvent); }
/** * @param fnEvent function event * @throws MetaException */ @Override public void onCreateFunction(CreateFunctionEvent fnEvent) throws MetaException { Function fn = fnEvent.getFunction(); CreateFunctionMessage msg = MessageBuilder.getInstance() .buildCreateFunctionMessage(fn); NotificationEvent event = new NotificationEvent(0, now(), EventType.CREATE_FUNCTION.toString(), msgEncoder.getSerializer().serialize(msg)); event.setCatName(fn.isSetCatName() ? fn.getCatName() : DEFAULT_CATALOG_NAME); event.setDbName(fn.getDbName()); process(event, fnEvent); }
@Override public void onDeleteTableColumnStat(DeleteTableColumnStatEvent deleteTableColumnStatEvent) throws MetaException { DeleteTableColumnStatMessage msg = MessageBuilder.getInstance() .buildDeleteTableColumnStatMessage(deleteTableColumnStatEvent.getDBName(), deleteTableColumnStatEvent.getColName()); NotificationEvent event = new NotificationEvent(0, now(), EventType.DELETE_TABLE_COLUMN_STAT.toString(), msgEncoder.getSerializer().serialize(msg)); event.setCatName(deleteTableColumnStatEvent.getCatName()); event.setDbName(deleteTableColumnStatEvent.getDBName()); event.setTableName(deleteTableColumnStatEvent.getTableName()); process(event, deleteTableColumnStatEvent); }
private NotificationEvent translateDbToThrift(MNotificationLog dbEvent) { NotificationEvent event = new NotificationEvent(); event.setEventId(dbEvent.getEventId()); event.setEventTime(dbEvent.getEventTime()); event.setEventType(dbEvent.getEventType()); event.setCatName(dbEvent.getCatalogName()); event.setDbName(dbEvent.getDbName()); event.setTableName(dbEvent.getTableName()); event.setMessage((dbEvent.getMessage())); event.setMessageFormat(dbEvent.getMessageFormat()); return event; }
/** * @param tableEvent table event. * @throws MetaException */ @Override public void onDropTable(DropTableEvent tableEvent) throws MetaException { Table t = tableEvent.getTable(); DropTableMessage msg = MessageBuilder.getInstance().buildDropTableMessage(t); NotificationEvent event = new NotificationEvent(0, now(), EventType.DROP_TABLE.toString(), msgEncoder.getSerializer().serialize(msg)); event.setCatName(t.isSetCatName() ? t.getCatName() : DEFAULT_CATALOG_NAME); event.setDbName(t.getDbName()); event.setTableName(t.getTableName()); process(event, tableEvent); }
@Override public void onDeletePartitionColumnStat(DeletePartitionColumnStatEvent deletePartColStatEvent) throws MetaException { DeletePartitionColumnStatMessage msg = MessageBuilder.getInstance() .buildDeletePartitionColumnStatMessage(deletePartColStatEvent.getDBName(), deletePartColStatEvent.getColName(), deletePartColStatEvent.getPartName(), deletePartColStatEvent.getPartVals()); NotificationEvent event = new NotificationEvent(0, now(), EventType.DELETE_PARTITION_COLUMN_STAT.toString(), msgEncoder.getSerializer().serialize(msg)); event.setCatName(deletePartColStatEvent.getCatName()); event.setDbName(deletePartColStatEvent.getDBName()); event.setTableName(deletePartColStatEvent.getTableName()); process(event, deletePartColStatEvent); }
@Test public void testCreateDb(){ Database db = new Database(); db.setName("testdb"); NotificationEvent event = new NotificationEvent(getEventId(), getTime(), HCatConstants.HCAT_CREATE_DATABASE_EVENT, msgFactory.buildCreateDatabaseMessage(db).toString()); event.setDbName(db.getName()); HCatNotificationEvent hev = new HCatNotificationEvent(event); ReplicationTask rtask = ReplicationTask.create(client,hev); assertEquals(hev.toString(), rtask.getEvent().toString()); verifyCreateDbReplicationTask(rtask); // CREATE DB currently replicated as Noop. }
@Override public void onInsert(InsertEvent insertEvent) throws MetaException { Table tableObj = insertEvent.getTableObj(); InsertMessage msg = MessageBuilder.getInstance().buildInsertMessage(tableObj, insertEvent.getPartitionObj(), insertEvent.isReplace(), new FileChksumIterator(insertEvent.getFiles(), insertEvent.getFileChecksums())); NotificationEvent event = new NotificationEvent(0, now(), EventType.INSERT.toString(), msgEncoder.getSerializer().serialize(msg)); event.setCatName(tableObj.isSetCatName() ? tableObj.getCatName() : DEFAULT_CATALOG_NAME); event.setDbName(tableObj.getDbName()); event.setTableName(tableObj.getTableName()); process(event, insertEvent); }
@Test public void testDropDb() throws IOException { Database db = new Database(); db.setName("testdb"); NotificationEvent event = new NotificationEvent(getEventId(), getTime(), HCatConstants.HCAT_DROP_DATABASE_EVENT, msgFactory.buildCreateDatabaseMessage(db).toString()); event.setDbName(db.getName()); HCatNotificationEvent hev = new HCatNotificationEvent(event); ReplicationTask rtask = ReplicationTask.create(client,hev); assertEquals(hev.toString(), rtask.getEvent().toString()); verifyDropDbReplicationTask(rtask); }
@Override public void onUpdateTableColumnStat(UpdateTableColumnStatEvent updateTableColumnStatEvent) throws MetaException { UpdateTableColumnStatMessage msg = MessageBuilder.getInstance() .buildUpdateTableColumnStatMessage(updateTableColumnStatEvent.getColStats(), updateTableColumnStatEvent.getTableObj(), updateTableColumnStatEvent.getTableParameters(), updateTableColumnStatEvent.getValidWriteIds(), updateTableColumnStatEvent.getWriteId()); NotificationEvent event = new NotificationEvent(0, now(), EventType.UPDATE_TABLE_COLUMN_STAT.toString(), msgEncoder.getSerializer().serialize(msg)); ColumnStatisticsDesc statDesc = updateTableColumnStatEvent.getColStats().getStatsDesc(); event.setCatName(statDesc.isSetCatName() ? statDesc.getCatName() : DEFAULT_CATALOG_NAME); event.setDbName(statDesc.getDbName()); event.setTableName(statDesc.getTableName()); process(event, updateTableColumnStatEvent); }
@Override public void onUpdatePartitionColumnStat(UpdatePartitionColumnStatEvent updatePartColStatEvent) throws MetaException { UpdatePartitionColumnStatMessage msg = MessageBuilder.getInstance() .buildUpdatePartitionColumnStatMessage(updatePartColStatEvent.getPartColStats(), updatePartColStatEvent.getPartVals(), updatePartColStatEvent.getPartParameters(), updatePartColStatEvent.getTableObj(), updatePartColStatEvent.getValidWriteIds(), updatePartColStatEvent.getWriteId()); NotificationEvent event = new NotificationEvent(0, now(), EventType.UPDATE_PARTITION_COLUMN_STAT.toString(), msgEncoder.getSerializer().serialize(msg)); ColumnStatisticsDesc statDesc = updatePartColStatEvent.getPartColStats().getStatsDesc(); event.setCatName(statDesc.isSetCatName() ? statDesc.getCatName() : DEFAULT_CATALOG_NAME); event.setDbName(statDesc.getDbName()); event.setTableName(statDesc.getTableName()); process(event, updatePartColStatEvent); }
@Test public void testDropTable() throws IOException { Table t = new Table(); t.setDbName("testdb"); t.setTableName("testtable"); NotificationEvent event = new NotificationEvent(getEventId(), getTime(), HCatConstants.HCAT_DROP_TABLE_EVENT, msgFactory.buildDropTableMessage(t).toString()); event.setDbName(t.getDbName()); event.setTableName(t.getTableName()); HCatNotificationEvent hev = new HCatNotificationEvent(event); ReplicationTask rtask = ReplicationTask.create(client,hev); assertEquals(hev.toString(), rtask.getEvent().toString()); verifyDropTableReplicationTask(rtask); }
@Test public void testCreateTable() throws IOException { Table t = new Table(); t.setDbName("testdb"); t.setTableName("testtable"); NotificationEvent event = new NotificationEvent(getEventId(), getTime(), HCatConstants.HCAT_CREATE_TABLE_EVENT, msgFactory.buildCreateTableMessage(t).toString()); event.setDbName(t.getDbName()); event.setTableName(t.getTableName()); HCatNotificationEvent hev = new HCatNotificationEvent(event); ReplicationTask rtask = ReplicationTask.create(client,hev); assertEquals(hev.toString(), rtask.getEvent().toString()); verifyCreateTableReplicationTask(rtask); }
@Test public void testAlterTable() throws IOException { Table t = new Table(); t.setDbName("testdb"); t.setTableName("testtable"); NotificationEvent event = new NotificationEvent(getEventId(), getTime(), HCatConstants.HCAT_ALTER_TABLE_EVENT, msgFactory.buildAlterTableMessage(t, t, t.getWriteId()).toString()); event.setDbName(t.getDbName()); event.setTableName(t.getTableName()); HCatNotificationEvent hev = new HCatNotificationEvent(event); ReplicationTask rtask = ReplicationTask.create(client,hev); assertEquals(hev.toString(), rtask.getEvent().toString()); verifyAlterTableReplicationTask(rtask); }