-
Notifications
You must be signed in to change notification settings - Fork 33
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
OPEN state but no messages #68
Comments
Is this definitely an SSE stream? I ask because the curl output in your description does not look like one. It's showing a series of text lines, each of which is a JSON object, but that is not the SSE format. An SSE event would have, at a minimum, a line starting with https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events |
That solves it, many thanks. This is not an SSE stream. As a suggestion maybe your code can give a hint when it encounters messages without |
… an event (#68) * in streaming data mode, throw an exception if stream is closed during an event * one more unit test
* add time threshold for backoff reset * allow endpoint to be specified as either URI or HttpUrl * add @SInCE * add interface for customizing requests * javadoc fixes * add changelog for past releases * remove JSR305 * replace SSL-specific config method with general-purpose HTTP config method * make helper method static * add end-to-end EventSource tests * spacing * omit default header value if there's a custom value * avoid trailing period in logger name * add 1.x branch * update to OkHttp 4.x and Java 8 * javadoc fixes * remove EventSource setters, + test improvements * update Gradle release * enable Github Pages * skip tests in release * add ability to force a stream restart; improve tests so we can test this * revert whitespace change * bump OkHttp version to latest Java 7-compatible version * add ability to force a stream restart; improve tests so we can test this (#29) * update to okhttp 4.5.0 * longer timeout for cleaner shutdown of test servers * fix Gradle scopes * allow setting specific thread priority * remove misleading logging & unnecessary backoff, improve tests (#34) * known issue with onClose() - add comment, disable test assertions * allow caller to specify a custom logger instead of SLF4J (#32) * add method for changing base name of SLF4J logger * enable coverage reports in CI, improve CI to test all supported Java versions * rm inapplicable CI copy-paste * another CI fix * add checkstyle config * fix jitter calculation when upper bound is a power of 2 * misc coverage + test improvements, add CI enforcement of coverage (#39) * fix shutdown state logic, simplify code paths (#40) * Fix Java 7 compatibility. * add OpenJDK 7 build + fix test race condition + javadoc fix (#42) * update Gradle to 6.8.3 * Kotlinize build script * fix logic for shutting down after an unrecoverable error * use newer HTTP test helpers * use Releaser v2 config + newer CI images (#47) * use new stream-reading implementation to support CR-only line endings * make buffer size configurable * rm usage that's not allowed in Java 8 * add Guava test dependency * add code coverage ovverride * implement contract tests (#48) * use Gradle 7 * Bounded queues for the EventHandler thread (#58) * Bounded queue for the EventHandler thread The unbounded queue fronting the 'event' thread can cause trouble when the EventHandler is unable to keep up with the workload. This can lead to heap exhaustion, GC issues and failure modes that are generally considered "bad". Band-aid over this with a semaphore to limit the number of tasks in the queue. The semaphore is opt-in and disabled by default to avoid any nasty surprises for folks upgrading. Also add 'EventSource.awaitClosed()' to allow users to wait for underlying thread pools to completely shut down. We can't know if it's safe to clean up resources used by the EventHandler thread if we can't be certain that it has completely terminated. * Address checkstyle griping in StubServer * Fix JavaDoc issue * Tighten up exception handling Co-authored-by: Eli Bishop <eli@launchdarkly.com> * update @SInCE * test Java 17 in CI (#51) * improve tests for AsyncEventHandler and EventSource.awaitClosed (#52) * add streaming data mode for very large events (#53) * add option to ensure that expected fields are always read * add Gradle option to suppress kotlin-stdlib in our pom * update okhttp to 4.9.3 * use LaunchDarkly logging facade * rm unused * misc fixes * improve javadoc links * remove SLF4J dependency, use only com.launchdarkly.logging * update com.launchdarkly.logging version * consistently use placeholders instead of concatenation in log output * update release metadata * use SecureRandom instead of Random, just to make scanners happier * use SecureRandom instead of Random, just to make scanners happier * use SecureRandom instead of Random, just to make scanners happier * fix release metadata * remove usage of Duration for Android compatibility * new synchronous EventSource implementation (#64) * add async wrapper to emulate old EventSource (#65) * update doc comments regarding thread behavior in Android * update Gradle to 7.6 + fix snapshot releases * in streaming data mode, throw an exception if stream is closed during an event (#68) * in streaming data mode, throw an exception if stream is closed during an event * one more unit test Co-authored-by: Eli Bishop <eli@launchdarkly.com> Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com> Co-authored-by: Gavin Whelan <gwhelan@launchdarkly.com> Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com> Co-authored-by: Tom Lee <93216+thomaslee@users.noreply.github.com>
* add time threshold for backoff reset * allow endpoint to be specified as either URI or HttpUrl * add @SInCE * add interface for customizing requests * javadoc fixes * add changelog for past releases * remove JSR305 * replace SSL-specific config method with general-purpose HTTP config method * make helper method static * add end-to-end EventSource tests * spacing * omit default header value if there's a custom value * avoid trailing period in logger name * add 1.x branch * update to OkHttp 4.x and Java 8 * javadoc fixes * remove EventSource setters, + test improvements * update Gradle release * enable Github Pages * skip tests in release * add ability to force a stream restart; improve tests so we can test this * revert whitespace change * bump OkHttp version to latest Java 7-compatible version * add ability to force a stream restart; improve tests so we can test this (#29) * update to okhttp 4.5.0 * longer timeout for cleaner shutdown of test servers * fix Gradle scopes * allow setting specific thread priority * remove misleading logging & unnecessary backoff, improve tests (#34) * known issue with onClose() - add comment, disable test assertions * allow caller to specify a custom logger instead of SLF4J (#32) * add method for changing base name of SLF4J logger * enable coverage reports in CI, improve CI to test all supported Java versions * rm inapplicable CI copy-paste * another CI fix * add checkstyle config * fix jitter calculation when upper bound is a power of 2 * misc coverage + test improvements, add CI enforcement of coverage (#39) * fix shutdown state logic, simplify code paths (#40) * Fix Java 7 compatibility. * add OpenJDK 7 build + fix test race condition + javadoc fix (#42) * update Gradle to 6.8.3 * Kotlinize build script * fix logic for shutting down after an unrecoverable error * use newer HTTP test helpers * use Releaser v2 config + newer CI images (#47) * use new stream-reading implementation to support CR-only line endings * make buffer size configurable * rm usage that's not allowed in Java 8 * add Guava test dependency * add code coverage ovverride * implement contract tests (#48) * use Gradle 7 * Bounded queues for the EventHandler thread (#58) * Bounded queue for the EventHandler thread The unbounded queue fronting the 'event' thread can cause trouble when the EventHandler is unable to keep up with the workload. This can lead to heap exhaustion, GC issues and failure modes that are generally considered "bad". Band-aid over this with a semaphore to limit the number of tasks in the queue. The semaphore is opt-in and disabled by default to avoid any nasty surprises for folks upgrading. Also add 'EventSource.awaitClosed()' to allow users to wait for underlying thread pools to completely shut down. We can't know if it's safe to clean up resources used by the EventHandler thread if we can't be certain that it has completely terminated. * Address checkstyle griping in StubServer * Fix JavaDoc issue * Tighten up exception handling Co-authored-by: Eli Bishop <eli@launchdarkly.com> * update @SInCE * test Java 17 in CI (#51) * improve tests for AsyncEventHandler and EventSource.awaitClosed (#52) * add streaming data mode for very large events (#53) * add option to ensure that expected fields are always read * add Gradle option to suppress kotlin-stdlib in our pom * update okhttp to 4.9.3 * use LaunchDarkly logging facade * rm unused * misc fixes * improve javadoc links * remove SLF4J dependency, use only com.launchdarkly.logging * update com.launchdarkly.logging version * consistently use placeholders instead of concatenation in log output * update release metadata * use SecureRandom instead of Random, just to make scanners happier * use SecureRandom instead of Random, just to make scanners happier * use SecureRandom instead of Random, just to make scanners happier * fix release metadata * remove usage of Duration for Android compatibility * new synchronous EventSource implementation (#64) * add async wrapper to emulate old EventSource (#65) * update doc comments regarding thread behavior in Android * update Gradle to 7.6 + fix snapshot releases * in streaming data mode, throw an exception if stream is closed during an event (#68) * in streaming data mode, throw an exception if stream is closed during an event * one more unit test * fix overly time-sensitive tests Co-authored-by: Eli Bishop <eli@launchdarkly.com> Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com> Co-authored-by: Gavin Whelan <gwhelan@launchdarkly.com> Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com> Co-authored-by: Tom Lee <93216+thomaslee@users.noreply.github.com>
* add time threshold for backoff reset * allow endpoint to be specified as either URI or HttpUrl * add @SInCE * add interface for customizing requests * javadoc fixes * add changelog for past releases * remove JSR305 * replace SSL-specific config method with general-purpose HTTP config method * make helper method static * add end-to-end EventSource tests * spacing * omit default header value if there's a custom value * avoid trailing period in logger name * add 1.x branch * update to OkHttp 4.x and Java 8 * javadoc fixes * remove EventSource setters, + test improvements * update Gradle release * enable Github Pages * skip tests in release * add ability to force a stream restart; improve tests so we can test this * revert whitespace change * bump OkHttp version to latest Java 7-compatible version * add ability to force a stream restart; improve tests so we can test this (#29) * update to okhttp 4.5.0 * longer timeout for cleaner shutdown of test servers * fix Gradle scopes * allow setting specific thread priority * remove misleading logging & unnecessary backoff, improve tests (#34) * known issue with onClose() - add comment, disable test assertions * allow caller to specify a custom logger instead of SLF4J (#32) * add method for changing base name of SLF4J logger * enable coverage reports in CI, improve CI to test all supported Java versions * rm inapplicable CI copy-paste * another CI fix * add checkstyle config * fix jitter calculation when upper bound is a power of 2 * misc coverage + test improvements, add CI enforcement of coverage (#39) * fix shutdown state logic, simplify code paths (#40) * Fix Java 7 compatibility. * add OpenJDK 7 build + fix test race condition + javadoc fix (#42) * update Gradle to 6.8.3 * Kotlinize build script * fix logic for shutting down after an unrecoverable error * use newer HTTP test helpers * use Releaser v2 config + newer CI images (#47) * use new stream-reading implementation to support CR-only line endings * make buffer size configurable * rm usage that's not allowed in Java 8 * add Guava test dependency * add code coverage ovverride * implement contract tests (#48) * use Gradle 7 * Bounded queues for the EventHandler thread (#58) * Bounded queue for the EventHandler thread The unbounded queue fronting the 'event' thread can cause trouble when the EventHandler is unable to keep up with the workload. This can lead to heap exhaustion, GC issues and failure modes that are generally considered "bad". Band-aid over this with a semaphore to limit the number of tasks in the queue. The semaphore is opt-in and disabled by default to avoid any nasty surprises for folks upgrading. Also add 'EventSource.awaitClosed()' to allow users to wait for underlying thread pools to completely shut down. We can't know if it's safe to clean up resources used by the EventHandler thread if we can't be certain that it has completely terminated. * Address checkstyle griping in StubServer * Fix JavaDoc issue * Tighten up exception handling Co-authored-by: Eli Bishop <eli@launchdarkly.com> * update @SInCE * test Java 17 in CI (#51) * improve tests for AsyncEventHandler and EventSource.awaitClosed (#52) * add streaming data mode for very large events (#53) * add option to ensure that expected fields are always read * add Gradle option to suppress kotlin-stdlib in our pom * update okhttp to 4.9.3 * use LaunchDarkly logging facade * rm unused * misc fixes * improve javadoc links * remove SLF4J dependency, use only com.launchdarkly.logging * update com.launchdarkly.logging version * consistently use placeholders instead of concatenation in log output * update release metadata * use SecureRandom instead of Random, just to make scanners happier * use SecureRandom instead of Random, just to make scanners happier * use SecureRandom instead of Random, just to make scanners happier * fix release metadata * remove usage of Duration for Android compatibility * new synchronous EventSource implementation (#64) * add async wrapper to emulate old EventSource (#65) * update doc comments regarding thread behavior in Android * update Gradle to 7.6 + fix snapshot releases * in streaming data mode, throw an exception if stream is closed during an event (#68) * in streaming data mode, throw an exception if stream is closed during an event * one more unit test * fix overly time-sensitive tests * Bumping Guava to fix CVE-2023-2976 --------- Co-authored-by: Eli Bishop <eli@launchdarkly.com> Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com> Co-authored-by: Gavin Whelan <gwhelan@launchdarkly.com> Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com> Co-authored-by: Tom Lee <93216+thomaslee@users.noreply.github.com> Co-authored-by: Todd Anderson <tanderson@launchdarkly.com> Co-authored-by: tanderson-ld <127344469+tanderson-ld@users.noreply.github.com>
I am using the library 'okhttp-eventsource' version 2.5.0 from https://github.com/launchdarkly/okhttp-eventsource/releases/tag/2.5.0 for SSE in Android. I am facing an issue where I can connect and receive signals, but after some time (around 5 minutes), the signals stop coming to my end, even if the backend is sending the signals and the SSE connection remains open. |
The stream using curl:
As you can see there is one initial message and one message after each move, which I can trigger manually. There are also empty lines. Now my Kotlin code is:
This gives me the following log:
Nothing more, even if I trigger a move. Note the null lastEventId that I get after 5s. The
GameStreamEventHandler
=SSEventHandler
is simply overridingEventHandler
and logs every callback.My question: how can I debug further? In the end I may need to copy and tweak your code, but maybe you have an idea?
The text was updated successfully, but these errors were encountered: