Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add error handling and retry #13

Merged
merged 18 commits into from
Mar 22, 2022
Merged

feat: add error handling and retry #13

merged 18 commits into from
Mar 22, 2022

Conversation

qingzhuozhen
Copy link
Contributor

@qingzhuozhen qingzhuozhen commented Mar 17, 2022

Summary

  • add retry for in memory storage
  • add retry for file storage
  • adjust storage interface

Checklist

  • Does your PR title have the correct title format?
  • Does your PR have a breaking change?: no


override fun handleSuccessResponse(successResponse: SuccessResponse) {
val events = JSONArray(eventsString).toEvents()
triggerEventsCallback(events, HttpStatus.SUCCESS.code, "Event sent success.")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it would be nice for us to standarize the messaging here. We can add that to the doc.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good. We can sync up on this

Copy link

@kevinpagtakhan kevinpagtakhan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

@qingzhuozhen qingzhuozhen changed the base branch from add-file-storage to main March 19, 2022 06:50
}
}
}

private fun createResponseHandler(events: Any, eventsString: String): ResponseHandler? {
var responseHandler: ResponseHandler? = null
when (storage) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can this be replaced with an interface method on Storage to prevent the Pipeline from needing to special case each Storage implementation?

var responseHandler = storage.getResponseHandler(...)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, we can do that as well

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated, have to expose the EventPipeline and response class to be public for now to make it work. I guess this potentially would make custom storage harder to develop by other developers, but may be fine since this is only for AmplitudeDestinationPlugin.

Copy link
Contributor

@bohan-amplitude bohan-amplitude left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@@ -14,6 +15,8 @@ class ContextPlugin : Plugin {
}

private fun applyContextData(event: BaseEvent) {
event.timestamp = System.currentTimeMillis()
event.insertId = UUID.randomUUID().toString()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good to check if timestamp and insertId already set by user to avoid overriding their value

@qingzhuozhen qingzhuozhen merged commit 689b114 into main Mar 22, 2022
@qingzhuozhen qingzhuozhen deleted the add-retry-support branch March 31, 2022 22:58
github-actions bot pushed a commit that referenced this pull request Jun 28, 2022
# 1.0.0 (2022-06-28)

### Bug Fixes

* fix android aar issue ([#32](#32)) ([69f5fe7](69f5fe7))
* fix group call ([#42](#42)) ([f84d143](f84d143))

### Features

* add amplitude destination plugin draft ([#3](#3)) ([7ee9408](7ee9408))
* add android context plugin ([#14](#14)) ([25b6da3](25b6da3))
* add basic test action and issue templates ([#9](#9)) ([e72c608](e72c608))
* add button to kotlin example to send custom event ([#41](#41)) ([5c1e573](5c1e573))
* add configuration java support ([#35](#35)) ([a4e0801](a4e0801))
* add error handling and retry ([#13](#13)) ([689b114](689b114))
* add eu and batch support ([#17](#17)) ([6402b2a](6402b2a))
* add event bridge module ([#12](#12)) ([49229ac](49229ac))
* add event id support ([#25](#25)) ([94aaa6b](94aaa6b))
* add github action about docs and release ([#19](#19)) ([3aa868e](3aa868e))
* add identify support ([#18](#18)) ([2f86adc](2f86adc))
* add identity module and file storage ([#8](#8)) ([8b7bada](8b7bada))
* add Java android example ([#24](#24)) ([2670a2b](2670a2b))
* add Kotlin android sample ([#23](#23)) ([3b948c8](3b948c8))
* add parner_id ([#16](#16)) ([5e46cb9](5e46cb9))
* add plan in configuration and export ([#34](#34)) ([d84a84e](d84a84e))
* add plan versionId support ([#22](#22)) ([ae84619](ae84619))
* add revenue helper class ([#6](#6)) ([341fcf1](341fcf1))
* add unit tests for common jvm module ([#29](#29)) ([dcc0e9d](dcc0e9d))
* add unit tests in core module ([#30](#30)) ([4283148](4283148))
* add unit tests in event bridge module ([#28](#28)) ([8d63c28](8d63c28))
* add unit tests in id module ([#27](#27)) ([dc78bc6](dc78bc6))
* android local sync update ([#20](#20)) ([e25ecd4](e25ecd4))
* enable to pass the event options for all track call ([#36](#36)) ([8dd1ab6](8dd1ab6))
* expose more api for support ([#33](#33)) ([312fd85](312fd85))
* make configuration open ([#38](#38)) ([d0dfb15](d0dfb15))
* remove json object from public interface ([#26](#26)) ([0840b5d](0840b5d))
* set the client userId and deviceId in identify call ([#37](#37)) ([2c8b3f1](2c8b3f1))
* set up android module bare bone ([#7](#7)) ([a8a8dc9](a8a8dc9))
* Set up jvm example ([#4](#4)) ([ae825d6](ae825d6))
* setup basic barebone ([#2](#2)) ([8e4b635](8e4b635))
* setup basic doc and workflow ([#1](#1)) ([31bd223](31bd223))
* setup common modules ([#11](#11)) ([4a4ff66](4a4ff66))
* update android storage ([#15](#15)) ([56c1d6a](56c1d6a))
* update library name ([#21](#21)) ([309976d](309976d))
@github-actions
Copy link

🎉 This PR is included in version 1.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants