use of org.zalando.nakadi.exceptions.EnrichmentException in project nakadi by zalando.
the class MetadataEnrichmentStrategy method enrich.
@Override
public void enrich(final BatchItem batchItem, final EventType eventType) throws EnrichmentException {
try {
final JSONObject metadata = batchItem.getEvent().getJSONObject(BatchItem.Injection.METADATA.name);
setReceivedAt(metadata);
setEventTypeName(metadata, eventType);
setFlowId(metadata);
setPartition(metadata, batchItem);
setVersion(metadata, eventType);
batchItem.inject(BatchItem.Injection.METADATA, metadata.toString());
} catch (final JSONException e) {
throw new EnrichmentException("enrichment error", e);
}
}
use of org.zalando.nakadi.exceptions.EnrichmentException in project nakadi by zalando.
the class EventPublisher method enrich.
private void enrich(final List<BatchItem> batch, final EventType eventType) throws EnrichmentException {
for (final BatchItem batchItem : batch) {
try {
batchItem.setStep(EventPublishingStep.ENRICHING);
enrichment.enrich(batchItem, eventType);
} catch (EnrichmentException e) {
batchItem.updateStatusAndDetail(EventPublishingStatus.FAILED, e.getMessage());
throw e;
}
}
}
use of org.zalando.nakadi.exceptions.EnrichmentException in project nakadi by zalando.
the class EventPublisher method publishInternal.
EventPublishResult publishInternal(final String events, final String eventTypeName, final boolean useAuthz) throws NoSuchEventTypeException, InternalNakadiException, EventTypeTimeoutException, AccessDeniedException, ServiceTemporarilyUnavailableException {
Closeable publishingCloser = null;
final List<BatchItem> batch = BatchFactory.from(events);
try {
publishingCloser = timelineSync.workWithEventType(eventTypeName, nakadiSettings.getTimelineWaitTimeoutMs());
final EventType eventType = eventTypeCache.getEventType(eventTypeName);
if (useAuthz) {
authValidator.authorizeEventTypeWrite(eventType);
}
validate(batch, eventType);
partition(batch, eventType);
enrich(batch, eventType);
submit(batch, eventType);
return ok(batch);
} catch (final EventValidationException e) {
LOG.debug("Event validation error: {}", e.getMessage());
return aborted(EventPublishingStep.VALIDATING, batch);
} catch (final PartitioningException e) {
LOG.debug("Event partition error: {}", e.getMessage());
return aborted(EventPublishingStep.PARTITIONING, batch);
} catch (final EnrichmentException e) {
LOG.debug("Event enrichment error: {}", e.getMessage());
return aborted(EventPublishingStep.ENRICHING, batch);
} catch (final EventPublishingException e) {
LOG.error("error publishing event", e);
return failed(batch);
} catch (final InterruptedException e) {
Thread.currentThread().interrupt();
LOG.error("Failed to wait for timeline switch", e);
throw new EventTypeTimeoutException("Event type is currently in maintenance, please repeat request");
} catch (final TimeoutException e) {
LOG.error("Failed to wait for timeline switch", e);
throw new EventTypeTimeoutException("Event type is currently in maintenance, please repeat request");
} finally {
try {
if (publishingCloser != null) {
publishingCloser.close();
}
} catch (final IOException e) {
LOG.error("Exception occurred when releasing usage of event-type", e);
}
}
}
Aggregations