Skip to content

Commit 83884a0

Browse files
adinauergetsentry-botmarkushiclaude
authored
Allow configuring shutdown and session flush timeouts externally and speed up tests (#4641)
* Add new modules for Spring 7 and Spring Boot 4 * Fix Spring 7 and Spring Boot 4 modules (#4602) * Attempt to fix kotlin 2.2 issue (#4603) * Fix Spring 7 and Spring Boot 4 modules * Attempt to fix kotlin 2.2 issue * Second attempt to fix Kotlin 2.2 (#4610) * Second attempt to fix Kotlin 2.2 * Format code * Third attempt at fixing Kotlin 2.2 compat (#4613) --------- Co-authored-by: Sentry Github Bot <[email protected]> * Address compose-related issues * Fix tests for Spring 7 and Spring Boot 4 (#4614) * Second attempt to fix Kotlin 2.2 * Format code * Third attempt at fixing Kotlin 2.2 compat * Fix tests for Spring 7 and Spring Boot 4 * Move Spring 7 and Spring Boot 4 packages (#4615) * Move Spring 7 and Spring Boot 4 packages * Fix class not found due to OTel not supporting spring boot 4 yet (#4616) * Format code * some fixes * change kotlin 1.8 to 1.9 and some cleanup * ignore warnings about api level that is not relevant * fix optional dependencies in SentryAutoConfiguration * Update trace origin * Remove duplicate e2e test config * Update Strings for Spring 7 and Spring Boot 4 * Disable Spring Boot 4 agentless e2e tests for now --------- Co-authored-by: Sentry Github Bot <[email protected]> --------- Co-authored-by: Sentry Github Bot <[email protected]> Co-authored-by: markushi <[email protected]> * changelog * fix ci * add ignored span origins for Spring 7 and Spring Boot 4 * move changelog * Speed up tests * docs(changelog): Add entry for external shutdown/session-flush timeout options Co-Authored-By: Claude <[email protected]> * ref: Use tracingEnabledRunner in boot4 and jakarta test classes The tracingEnabledRunner was defined but unused in spring-boot-4 and spring-boot-jakarta. Migrate the tracing tests to use it, matching what was already done in spring-boot. Co-Authored-By: Claude <[email protected]> * ref: Add Millis suffix to ExternalOptions timeout fields Rename shutdownTimeout/sessionFlushTimeout to shutdownTimeoutMillis/sessionFlushTimeoutMillis for consistency with SentryOptions naming convention. Co-Authored-By: Claude <[email protected]> * ref: Add Millis suffix to ExternalOptions timeout fields Rename shutdownTimeout/sessionFlushTimeout to shutdownTimeoutMillis/sessionFlushTimeoutMillis in ExternalOptions for consistency with SentryOptions naming convention. Also rename the sentry.properties keys from shutdown-timeout to shutdown-timeout-millis and session-flush-timeout to session-flush-timeout-millis. Co-Authored-By: Claude <[email protected]> * docs(changelog): Restructure timeout options changelog entry List each configuration method separately for clarity. Co-Authored-By: Claude <[email protected]> * fix(test): Use baseContextRunner for transport factory tests Tests asserting AsyncHttpTransportFactory must not use contextRunner which includes NoOpTransportConfiguration, as the NoOp bean would override the auto-configured transport factory. Co-Authored-By: Claude <[email protected]> * Format code * ci: retrigger CI --------- Co-authored-by: Sentry Github Bot <[email protected]> Co-authored-by: markushi <[email protected]> Co-authored-by: Claude <[email protected]>
1 parent 8ec9ca8 commit 83884a0

File tree

19 files changed

+667
-317
lines changed

19 files changed

+667
-317
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44

55
### Features
66

7+
- Allow configuring shutdown and session flush timeouts externally ([#4641](https://github.com/getsentry/sentry-java/pull/4641))
8+
- `sentry.properties`: `shutdown-timeout-millis`, `session-flush-timeout-millis`
9+
- Environment variables: `SENTRY_SHUTDOWN_TIMEOUT_MILLIS`, `SENTRY_SESSION_FLUSH_TIMEOUT_MILLIS`
10+
- Spring Boot `application.properties`: `sentry.shutdownTimeoutMillis`, `sentry.sessionFlushTimeoutMillis`
711
- Add scope-level attributes API ([#5118](https://github.com/getsentry/sentry-java/pull/5118)) via ([#5148](https://github.com/getsentry/sentry-java/pull/5148))
812
- Automatically include scope attributes in logs and metrics ([#5120](https://github.com/getsentry/sentry-java/pull/5120))
913
- New APIs are `Sentry.setAttribute`, `Sentry.setAttributes`, `Sentry.removeAttribute`

sentry-jul/src/test/kotlin/io/sentry/jul/SentryHandlerTest.kt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import io.sentry.SentryLogLevel
77
import io.sentry.SentryOptions
88
import io.sentry.checkEvent
99
import io.sentry.checkLogs
10+
import io.sentry.test.applyTestOptions
1011
import io.sentry.test.initForTest
1112
import io.sentry.transport.ITransport
1213
import java.time.Instant
@@ -44,6 +45,7 @@ class SentryHandlerTest {
4445
val options = SentryOptions()
4546
options.dsn = "http://key@localhost/proj"
4647
options.setTransportFactory { _, _ -> transport }
48+
applyTestOptions(options)
4749
contextTags?.forEach { options.addContextTag(it) }
4850
logger = Logger.getLogger("jul.SentryHandlerTest")
4951
handler = SentryHandler(options, configureWithLogManager, true)
@@ -415,7 +417,7 @@ class SentryHandlerTest {
415417
fixture = Fixture(minimumLevel = Level.FINEST)
416418
fixture.logger.finest("testing trace level")
417419

418-
Sentry.flush(1000)
420+
Sentry.flush(10)
419421

420422
verify(fixture.transport)
421423
.send(
@@ -431,7 +433,7 @@ class SentryHandlerTest {
431433
fixture = Fixture(minimumLevel = Level.FINE)
432434
fixture.logger.fine("testing trace level")
433435

434-
Sentry.flush(1000)
436+
Sentry.flush(10)
435437

436438
verify(fixture.transport)
437439
.send(checkLogs { event -> assertEquals(SentryLogLevel.DEBUG, event.items.first().level) })
@@ -442,7 +444,7 @@ class SentryHandlerTest {
442444
fixture = Fixture(minimumLevel = Level.CONFIG)
443445
fixture.logger.config("testing debug level")
444446

445-
Sentry.flush(1000)
447+
Sentry.flush(10)
446448

447449
verify(fixture.transport)
448450
.send(checkLogs { event -> assertEquals(SentryLogLevel.DEBUG, event.items.first().level) })
@@ -453,7 +455,7 @@ class SentryHandlerTest {
453455
fixture = Fixture(minimumLevel = Level.INFO)
454456
fixture.logger.info("testing info level")
455457

456-
Sentry.flush(1000)
458+
Sentry.flush(10)
457459

458460
verify(fixture.transport)
459461
.send(checkLogs { event -> assertEquals(SentryLogLevel.INFO, event.items.first().level) })
@@ -464,7 +466,7 @@ class SentryHandlerTest {
464466
fixture = Fixture(minimumLevel = Level.WARNING)
465467
fixture.logger.warning("testing warn level")
466468

467-
Sentry.flush(1000)
469+
Sentry.flush(10)
468470

469471
verify(fixture.transport)
470472
.send(checkLogs { event -> assertEquals(SentryLogLevel.WARN, event.items.first().level) })
@@ -475,7 +477,7 @@ class SentryHandlerTest {
475477
fixture = Fixture(minimumLevel = Level.SEVERE)
476478
fixture.logger.severe("testing error level")
477479

478-
Sentry.flush(1000)
480+
Sentry.flush(10)
479481

480482
verify(fixture.transport)
481483
.send(checkLogs { event -> assertEquals(SentryLogLevel.ERROR, event.items.first().level) })

sentry-log4j2/src/test/kotlin/io/sentry/log4j2/SentryAppenderTest.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ class SentryAppenderTest {
248248
val logger = fixture.getSut(minimumLevel = Level.TRACE)
249249
logger.trace("testing trace level")
250250

251-
Sentry.flush(1000)
251+
Sentry.flush(10)
252252

253253
verify(fixture.transport)
254254
.send(
@@ -267,7 +267,7 @@ class SentryAppenderTest {
267267
val logger = fixture.getSut(minimumLevel = Level.DEBUG)
268268
logger.debug("testing debug level")
269269

270-
Sentry.flush(1000)
270+
Sentry.flush(10)
271271

272272
verify(fixture.transport)
273273
.send(checkLogs { event -> assertEquals(SentryLogLevel.DEBUG, event.items.first().level) })
@@ -278,7 +278,7 @@ class SentryAppenderTest {
278278
val logger = fixture.getSut(minimumLevel = Level.INFO)
279279
logger.info("testing info level")
280280

281-
Sentry.flush(1000)
281+
Sentry.flush(10)
282282

283283
verify(fixture.transport)
284284
.send(checkLogs { event -> assertEquals(SentryLogLevel.INFO, event.items.first().level) })
@@ -289,7 +289,7 @@ class SentryAppenderTest {
289289
val logger = fixture.getSut(minimumLevel = Level.WARN)
290290
logger.warn("testing warn level")
291291

292-
Sentry.flush(1000)
292+
Sentry.flush(10)
293293

294294
verify(fixture.transport)
295295
.send(checkLogs { event -> assertEquals(SentryLogLevel.WARN, event.items.first().level) })
@@ -300,7 +300,7 @@ class SentryAppenderTest {
300300
val logger = fixture.getSut(minimumLevel = Level.ERROR)
301301
logger.error("testing error level")
302302

303-
Sentry.flush(1000)
303+
Sentry.flush(10)
304304

305305
verify(fixture.transport)
306306
.send(checkLogs { event -> assertEquals(SentryLogLevel.ERROR, event.items.first().level) })
@@ -311,7 +311,7 @@ class SentryAppenderTest {
311311
val logger = fixture.getSut(minimumLevel = Level.FATAL)
312312
logger.fatal("testing fatal level")
313313

314-
Sentry.flush(1000)
314+
Sentry.flush(10)
315315

316316
verify(fixture.transport)
317317
.send(checkLogs { event -> assertEquals(SentryLogLevel.FATAL, event.items.first().level) })
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
release=release from sentry.properties
22
logs.enabled=true
3+
shutdown-timeout-millis=0
4+
session-flush-timeout-millis=0

sentry-logback/src/test/kotlin/io/sentry/logback/SentryAppenderTest.kt

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import io.sentry.SentryLogLevel
1818
import io.sentry.SentryOptions
1919
import io.sentry.checkEvent
2020
import io.sentry.checkLogs
21+
import io.sentry.test.applyTestOptions
2122
import io.sentry.test.initForTest
2223
import io.sentry.transport.ITransport
2324
import java.time.Instant
@@ -68,6 +69,7 @@ class SentryAppenderTest {
6869
options.dsn = dsn
6970
options.isSendDefaultPii = sendDefaultPii
7071
options.logs.isEnabled = enableLogs
72+
applyTestOptions(options)
7173
contextTags?.forEach { options.addContextTag(it) }
7274
appender.setOptions(options)
7375
appender.setMinimumBreadcrumbLevel(minimumBreadcrumbLevel)
@@ -317,7 +319,7 @@ class SentryAppenderTest {
317319
fixture = Fixture(minimumLevel = Level.TRACE, enableLogs = true)
318320
fixture.logger.trace("testing trace level")
319321

320-
Sentry.flush(1000)
322+
Sentry.flush(10)
321323

322324
verify(fixture.transport)
323325
.send(checkLogs { logs -> assertEquals(SentryLogLevel.TRACE, logs.items.first().level) })
@@ -328,7 +330,7 @@ class SentryAppenderTest {
328330
fixture = Fixture(minimumLevel = Level.DEBUG, enableLogs = true)
329331
fixture.logger.debug("testing debug level")
330332

331-
Sentry.flush(1000)
333+
Sentry.flush(10)
332334

333335
verify(fixture.transport)
334336
.send(checkLogs { logs -> assertEquals(SentryLogLevel.DEBUG, logs.items.first().level) })
@@ -339,7 +341,7 @@ class SentryAppenderTest {
339341
fixture = Fixture(minimumLevel = Level.INFO, enableLogs = true)
340342
fixture.logger.info("testing info level")
341343

342-
Sentry.flush(1000)
344+
Sentry.flush(10)
343345

344346
verify(fixture.transport)
345347
.send(checkLogs { logs -> assertEquals(SentryLogLevel.INFO, logs.items.first().level) })
@@ -350,7 +352,7 @@ class SentryAppenderTest {
350352
fixture = Fixture(minimumLevel = Level.WARN, enableLogs = true)
351353
fixture.logger.warn("testing warn level")
352354

353-
Sentry.flush(1000)
355+
Sentry.flush(10)
354356

355357
verify(fixture.transport)
356358
.send(checkLogs { logs -> assertEquals(SentryLogLevel.WARN, logs.items.first().level) })
@@ -361,7 +363,7 @@ class SentryAppenderTest {
361363
fixture = Fixture(minimumLevel = Level.ERROR, enableLogs = true)
362364
fixture.logger.error("testing error level")
363365

364-
Sentry.flush(1000)
366+
Sentry.flush(10)
365367

366368
verify(fixture.transport)
367369
.send(checkLogs { logs -> assertEquals(SentryLogLevel.ERROR, logs.items.first().level) })
@@ -372,7 +374,7 @@ class SentryAppenderTest {
372374
fixture = Fixture(minimumLevel = Level.TRACE, enableLogs = true)
373375
fixture.logger.trace("Testing {} level", "TRACE")
374376

375-
Sentry.flush(1000)
377+
Sentry.flush(10)
376378

377379
verify(fixture.transport)
378380
.send(
@@ -394,7 +396,7 @@ class SentryAppenderTest {
394396
fixture = Fixture(minimumLevel = Level.TRACE, enableLogs = true, encoder = encoder)
395397
fixture.logger.trace("Testing {} level", "TRACE")
396398

397-
Sentry.flush(1000)
399+
Sentry.flush(10)
398400

399401
verify(fixture.transport)
400402
.send(
@@ -420,7 +422,7 @@ class SentryAppenderTest {
420422
)
421423
fixture.logger.trace("Testing {} level", "TRACE")
422424

423-
Sentry.flush(1000)
425+
Sentry.flush(10)
424426

425427
verify(fixture.transport)
426428
.send(
@@ -447,7 +449,7 @@ class SentryAppenderTest {
447449
)
448450
fixture.logger.trace("Testing {} level", "TRACE")
449451

450-
Sentry.flush(1000)
452+
Sentry.flush(10)
451453

452454
verify(fixture.transport)
453455
.send(

0 commit comments

Comments
 (0)