diff --git a/aws-analytics-pinpoint/src/main/java/com/amplifyframework/analytics/pinpoint/EventRecorder.kt b/aws-analytics-pinpoint/src/main/java/com/amplifyframework/analytics/pinpoint/EventRecorder.kt index 3706734c1f..36e0556cf6 100644 --- a/aws-analytics-pinpoint/src/main/java/com/amplifyframework/analytics/pinpoint/EventRecorder.kt +++ b/aws-analytics-pinpoint/src/main/java/com/amplifyframework/analytics/pinpoint/EventRecorder.kt @@ -57,6 +57,7 @@ internal class EventRecorder( private val defaultMaxSubmissionAllowed = 3 private val defaultMaxSubmissionSize = 1024 * 100 private val serviceDefinedMaxEventsPerBatch: Int = 100 + private val badRequestCode = 400 internal suspend fun recordEvent(pinpointEvent: PinpointEvent): Uri? { return withContext(coroutineDispatcher) { val result = runCatching { @@ -178,7 +179,7 @@ internal class EventRecorder( logger.info("Successfully submitted event with eventId ${pinpointEvent.eventId}") eventIdToDelete.add(pinpointEvent) } else { - if (isRetryableError(message)) { + if (isRetryableError(message, pinpointEventResponse.statusCode)) { logger.error( "Failed to deliver event with ${pinpointEvent.eventId}," + " will be re-delivered later" @@ -194,11 +195,12 @@ internal class EventRecorder( return eventIdToDelete } - private fun isRetryableError(responseCode: String): Boolean { + private fun isRetryableError(message: String, code: Int): Boolean { return !( - responseCode.equals("ValidationException", ignoreCase = true) || - responseCode.equals("SerializationException", ignoreCase = true) || - responseCode.equals("BadRequestException", ignoreCase = true) + message.equals("ValidationException", ignoreCase = true) || + message.equals("SerializationException", ignoreCase = true) || + message.equals("BadRequestException", ignoreCase = true) || + code == badRequestCode ) } diff --git a/build.gradle b/build.gradle index 547a37374c..ab03c555ce 100644 --- a/build.gradle +++ b/build.gradle @@ -69,7 +69,7 @@ ext { compileSdkVersion = 30 minSdkVersion = 24 targetSdkVersion = 30 - awsKotlinSdkVersion = '0.17.10-beta' + awsKotlinSdkVersion = '0.17.12-beta' fragmentVersion = '1.3.1' navigationVersion = '2.3.4' dependency = [