From b8b046b6b5f08a3028c24549b7daade7b2a9d7d6 Mon Sep 17 00:00:00 2001 From: sirken Date: Mon, 24 Jun 2024 16:53:35 -0600 Subject: [PATCH 1/2] Handle Eventbrite flood of webhooks, log to info --- .../nucleus/controller/EventBriteController.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/impactupgrade/nucleus/controller/EventBriteController.java b/src/main/java/com/impactupgrade/nucleus/controller/EventBriteController.java index 3202b1d8f..9e5452e4d 100644 --- a/src/main/java/com/impactupgrade/nucleus/controller/EventBriteController.java +++ b/src/main/java/com/impactupgrade/nucleus/controller/EventBriteController.java @@ -96,7 +96,7 @@ protected void processEvent(String eventType, WebhookPayload webhookPayload, Env CrmCampaign campaign = null; if (_campaign.isEmpty()) { EventBriteClient.Event event = eventBriteClient.getEvent("https://www.eventbriteapi.com/v3/events/" + attendee.eventId + "/"); - campaign = upsertCrmCampaign(event, crmService); + campaign = upsertCrmCampaign(event, crmService, env); } else { campaign = _campaign.get(); } @@ -107,7 +107,7 @@ protected void processEvent(String eventType, WebhookPayload webhookPayload, Env // Skipping event.created entirely, since it's immediately followed up with an event.updated. case "event.updated", "event.published" -> { EventBriteClient.Event event = eventBriteClient.getEvent(webhookPayload.apiUrl); - upsertCrmCampaign(event, crmService); + upsertCrmCampaign(event, crmService, env); } case "event.unpublished" -> { EventBriteClient.Event event = eventBriteClient.getEvent(webhookPayload.apiUrl); @@ -163,7 +163,7 @@ protected void processNewOrder(EventBriteClient.Order order, CrmService crmServi Optional campaign = crmService.getCampaignByExternalReference(order.eventId); if (campaign.isEmpty()) { EventBriteClient.Event event = env.eventBriteClient().getEvent("https://www.eventbriteapi.com/v3/events/" + order.eventId + "/"); - upsertCrmCampaign(event, crmService); + upsertCrmCampaign(event, crmService, env); } // attendee can have a partial profile, which could have "Info Requested" as the email/name @@ -206,12 +206,16 @@ protected void upsertCrmContact(CrmContact contact, Optional existin } } - protected CrmCampaign upsertCrmCampaign(EventBriteClient.Event event, CrmService crmService) throws Exception { + protected CrmCampaign upsertCrmCampaign(EventBriteClient.Event event, CrmService crmService, Environment env) throws Exception { CrmCampaign campaign = buildCrmCampaign(event); Optional existingCampaign = crmService.getCampaignByExternalReference(event.id); if (existingCampaign.isEmpty()) { - campaign.id = crmService.insertCampaign(campaign); + try { + campaign.id = crmService.insertCampaign(campaign); + } catch (Exception e) { + env.logJobInfo("unable to create new campaign"); + } } else { campaign.id = existingCampaign.get().id; crmService.updateCampaign(campaign); From e2750af00c3849f258b3a3452373784a3d786dec Mon Sep 17 00:00:00 2001 From: Brett Meyer Date: Fri, 28 Jun 2024 16:22:52 -0400 Subject: [PATCH 2/2] tweaked the error message --- .../impactupgrade/nucleus/controller/EventBriteController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/impactupgrade/nucleus/controller/EventBriteController.java b/src/main/java/com/impactupgrade/nucleus/controller/EventBriteController.java index 9e5452e4d..1d238311b 100644 --- a/src/main/java/com/impactupgrade/nucleus/controller/EventBriteController.java +++ b/src/main/java/com/impactupgrade/nucleus/controller/EventBriteController.java @@ -214,7 +214,7 @@ protected CrmCampaign upsertCrmCampaign(EventBriteClient.Event event, CrmService try { campaign.id = crmService.insertCampaign(campaign); } catch (Exception e) { - env.logJobInfo("unable to create new campaign"); + env.logJobInfo("unable to create new campaign: {}", e.getMessage()); } } else { campaign.id = existingCampaign.get().id;