@Override public final void processEvents(List<SepEvent> events) { List<LilySepEvent> lilyEvents = new ArrayList<LilySepEvent>(events.size()); for (SepEvent event : events) { if (event.getPayload() == null) { // The event is either not from a Lily table or not a normal record operation. continue; } String[] repoAndTable = RepoAndTableUtil.getRepositoryAndTable(Bytes.toString(event.getTable())); IdGenerator idGenerator = null; try { idGenerator = repositoryManager.getRepository(repoAndTable[0]).getIdGenerator(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); throw new RuntimeException(e); } catch (RepositoryUnavailableException e) { log.warn(String.format("Skipping an event because repository is not available. " + "Repository: %s, table: %s, row: %s", repoAndTable[0], repoAndTable[1], Bytes.toStringBinary(event.getRow()))); } catch (RepositoryException e) { throw new RuntimeException(e); } lilyEvents.add(new LilySepEvent(idGenerator, repoAndTable[0], repoAndTable[1], event.getTable(), event.getRow(), event.getKeyValues(), event.getPayload())); } processLilyEvents(lilyEvents); }