{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":1187608,"defaultBranch":"main","name":"spring-retry","ownerLogin":"spring-projects","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2010-12-21T16:41:48.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/317776?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1715866394.0","currentOid":""},"activityList":{"items":[{"before":"f2ec7212c5cc6a4e2c7b81f3a83862dde05931fa","after":"8339dfa472a92cbb58668b86f657e1693f3598a8","ref":"refs/heads/main","pushedAt":"2024-05-16T13:33:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"spring-builds","name":"Spring Builds","path":"/spring-builds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1134463?s=80&v=4"},"commit":{"message":"Next development version (v2.0.7-SNAPSHOT)","shortMessageHtmlLink":"Next development version (v2.0.7-SNAPSHOT)"}},{"before":"22228f8c8e580abf990122d99a1cf0c6ad1b7fcb","after":"f2ec7212c5cc6a4e2c7b81f3a83862dde05931fa","ref":"refs/heads/main","pushedAt":"2024-05-16T13:23:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"snicoll","name":"Stéphane Nicoll","path":"/snicoll","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/490484?s=80&v=4"},"commit":{"message":"Upgrade to Spring Framework 6.0.20\n\nCloses gh-435","shortMessageHtmlLink":"Upgrade to Spring Framework 6.0.20"}},{"before":"7d9b887b3a6d5e52a45f7b196f9ddf6e24a5ef40","after":"22228f8c8e580abf990122d99a1cf0c6ad1b7fcb","ref":"refs/heads/main","pushedAt":"2024-05-15T19:26:04.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"snicoll","name":"Stéphane Nicoll","path":"/snicoll","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/490484?s=80&v=4"},"commit":{"message":"Polish","shortMessageHtmlLink":"Polish"}},{"before":"f6977d77b9802fd1adbf62c3338dfd650b331534","after":"7d9b887b3a6d5e52a45f7b196f9ddf6e24a5ef40","ref":"refs/heads/main","pushedAt":"2024-05-15T16:35:40.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"snicoll","name":"Stéphane Nicoll","path":"/snicoll","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/490484?s=80&v=4"},"commit":{"message":"Start building against Spring Framework 6.0.20 snapshots\n\nSee gh-435","shortMessageHtmlLink":"Start building against Spring Framework 6.0.20 snapshots"}},{"before":"26697ea09896408c01393c718a639b29a121cc70","after":"f6977d77b9802fd1adbf62c3338dfd650b331534","ref":"refs/heads/main","pushedAt":"2024-05-13T19:50:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"artembilan","name":"Artem Bilan","path":"/artembilan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1071590?s=80&v=4"},"commit":{"message":"GH-137: Improve `RetryTemplate.setThrowLastExceptionOnExhausted()` JavaDocs\n\nFixes: #137\n\n* Fix couple code smells for arrays in the `RetryTemplate`","shortMessageHtmlLink":"GH-137: Improve RetryTemplate.setThrowLastExceptionOnExhausted() Ja…"}},{"before":"d3698b8cf490a6c81e8a2996c451ac7961ecb53e","after":"26697ea09896408c01393c718a639b29a121cc70","ref":"refs/heads/main","pushedAt":"2024-05-10T19:45:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"artembilan","name":"Artem Bilan","path":"/artembilan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1071590?s=80&v=4"},"commit":{"message":"GH-418: Add `spring-retry` Maven coordinates into README\n\nFixes: #418","shortMessageHtmlLink":"GH-418: Add spring-retry Maven coordinates into README"}},{"before":"1c539502b7bdebcee32d9d8bbe128ae276e97110","after":"d3698b8cf490a6c81e8a2996c451ac7961ecb53e","ref":"refs/heads/main","pushedAt":"2024-05-10T19:32:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"artembilan","name":"Artem Bilan","path":"/artembilan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1071590?s=80&v=4"},"commit":{"message":"GH-82: Expose `@CircuitBreaker.throwLastExceptionOnExhausted()`\n\nFixes: #82\n\nThere are some use-cases when `ExhaustedRetryException` does not fit into the logic around Circuit Breaker pattern.\n\nThe `RetryTemplate` has already a `throwLastExceptionOnExhausted` flag for stateful retries\n\n* Expose `@CircuitBreaker.throwLastExceptionOnExhausted()` and propagate it down to the `RetryTemplate`\nin the `AnnotationAwareRetryOperationsInterceptor`","shortMessageHtmlLink":"GH-82: Expose @CircuitBreaker.throwLastExceptionOnExhausted()"}},{"before":"f94bfff82e3c1a842a73c18fe4c6a19806e1776b","after":"1c539502b7bdebcee32d9d8bbe128ae276e97110","ref":"refs/heads/main","pushedAt":"2024-05-10T17:39:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"artembilan","name":"Artem Bilan","path":"/artembilan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1071590?s=80&v=4"},"commit":{"message":"Fix potential NPE in the `ExpressionRetryPolicy`","shortMessageHtmlLink":"Fix potential NPE in the ExpressionRetryPolicy"}},{"before":"94424350e1f04fa7f635d37db77ec73f9755160e","after":"f94bfff82e3c1a842a73c18fe4c6a19806e1776b","ref":"refs/heads/main","pushedAt":"2024-05-10T17:36:52.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"artembilan","name":"Artem Bilan","path":"/artembilan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1071590?s=80&v=4"},"commit":{"message":"GH-427: Fix multiplierExpression & multiplierExpression\n\nFixes: #427\r\n\r\nNo randomness with configuration like:\r\n```\r\n@Retryable(retryFor = {RuntimeException.class}, maxAttemptsExpression = \"${retry.max-attempts}\", backoff = @Backoff(delayExpression = \"${retry.delay}\", multiplierExpression = \"${retry.multiplier}\", randomExpression = \"${retry.random}\"))\r\n```\r\n\r\nThe random logic in the `AnnotationAwareRetryOperationsInterceptor` if `multiplierExpression` is for runtime evaluation.\r\n\r\n* Fix `AnnotationAwareRetryOperationsInterceptor` to check for `if (multiplier > 0 || parsedMultExp != null) {` before evaluating `random`\r\n* Fix `@BackOff(randomExpression)` Javadoc to indicate that it is always evaluated on configuration phase.","shortMessageHtmlLink":"GH-427: Fix multiplierExpression & multiplierExpression"}},{"before":"e19f5d7d5fdc889b4feabe4a7ad3184bbd809a98","after":"94424350e1f04fa7f635d37db77ec73f9755160e","ref":"refs/heads/main","pushedAt":"2024-02-16T22:16:33.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"artembilan","name":"Artem Bilan","path":"/artembilan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1071590?s=80&v=4"},"commit":{"message":"Update README for `runtimeOnly`\n\nFixes: #423 \r\n\r\n* And also uses `retryFor` instead of deprecated `include` or `value`","shortMessageHtmlLink":"Update README for runtimeOnly"}},{"before":"6656151fa7c254821fb0e1cd7401bc26ef5e3b58","after":"e19f5d7d5fdc889b4feabe4a7ad3184bbd809a98","ref":"refs/heads/main","pushedAt":"2024-01-11T19:52:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"artembilan","name":"Artem Bilan","path":"/artembilan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1071590?s=80&v=4"},"commit":{"message":"GH-422: Log label in `RetryTemplate`\n\nFixes: #422\n\n* Push `MethodInvocationRetryCallback.getLabel()` to the `default` method in the `RetryCallback`\n* Use `ClassUtils.getQualifiedMethodName(invocation.getMethod())` for default label in the `MethodInvocationRetryCallback`\nif not provided from the outside\n* Refactor some logic in the `RetryOperationsInterceptor` to cover `context.removeAttribute(\"__proxy__\")`\nfor use-case when `recoverer` is not provided.\nRemove extra label resolution since it is already done in the `MethodInvocationRetryCallback`\n* Fix Javadoc typos in the affected classes","shortMessageHtmlLink":"GH-422: Log label in RetryTemplate"}},{"before":"8b87e8a646712b8c33e82d7765978d4299214020","after":"6656151fa7c254821fb0e1cd7401bc26ef5e3b58","ref":"refs/heads/main","pushedAt":"2023-12-15T06:33:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"spring-builds","name":"Spring Builds","path":"/spring-builds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1134463?s=80&v=4"},"commit":{"message":"Next development version (v2.0.6-SNAPSHOT)","shortMessageHtmlLink":"Next development version (v2.0.6-SNAPSHOT)"}},{"before":"561d41ae257bacfebfc71cbff80b31c8d28fd029","after":"8b87e8a646712b8c33e82d7765978d4299214020","ref":"refs/heads/main","pushedAt":"2023-12-14T22:52:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"artembilan","name":"Artem Bilan","path":"/artembilan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1071590?s=80&v=4"},"commit":{"message":"GH-212: Optimise `SubclassClassifier.classify()`\n\nFixes #212\n\nThe `classifiable` class checked twice: by itself\nand then as a first iteration for the next loop for subclasses.\n\n* Fix `SubclassClassifier.classify()` to start subclasses loop\nfrom the `exceptionClass.getSuperclass()`","shortMessageHtmlLink":"GH-212: Optimise SubclassClassifier.classify()"}},{"before":"a3b7a8098ef80c6e373781a4d2e95e811035b8e9","after":"561d41ae257bacfebfc71cbff80b31c8d28fd029","ref":"refs/heads/main","pushedAt":"2023-12-14T14:03:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"snicoll","name":"Stéphane Nicoll","path":"/snicoll","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/490484?s=80&v=4"},"commit":{"message":"Upgrade CI to Java 17.0.9","shortMessageHtmlLink":"Upgrade CI to Java 17.0.9"}},{"before":"fb07f619e0359acbab98f68e8f239470a8bba9dc","after":"a3b7a8098ef80c6e373781a4d2e95e811035b8e9","ref":"refs/heads/main","pushedAt":"2023-12-14T10:14:32.000Z","pushType":"push","commitsCount":10,"pusher":{"login":"snicoll","name":"Stéphane Nicoll","path":"/snicoll","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/490484?s=80&v=4"},"commit":{"message":"Remove outdated config now we have moved to Java 17","shortMessageHtmlLink":"Remove outdated config now we have moved to Java 17"}},{"before":"dbfb3c782372ab5abd6ef6ec05217f0e9f61819a","after":"fb07f619e0359acbab98f68e8f239470a8bba9dc","ref":"refs/heads/main","pushedAt":"2023-12-12T20:11:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"artembilan","name":"Artem Bilan","path":"/artembilan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1071590?s=80&v=4"},"commit":{"message":"GH-406: Upgrade to AspectJ 1.9.20.1\n\nFixes: #406","shortMessageHtmlLink":"GH-406: Upgrade to AspectJ 1.9.20.1"}},{"before":"e029dfd790b180b43d6624e42c717343f04df1a5","after":"dbfb3c782372ab5abd6ef6ec05217f0e9f61819a","ref":"refs/heads/main","pushedAt":"2023-12-11T18:25:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"artembilan","name":"Artem Bilan","path":"/artembilan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1071590?s=80&v=4"},"commit":{"message":"GH-405: Re-throw as is after recoverer\n\nFixes: #405\n\nThe unchecked exception is wrapped into `UndeclaredThrowableException`\nif `recoverer` is in use; it is not otherwise\n\n* Fix `RetryTemplate` to catch `UndeclaredThrowableException` from `recoveryCallback.recover()`\nand re-throw its `cause` instead to re-align behavior when no recoverer provided","shortMessageHtmlLink":"GH-405: Re-throw as is after recoverer"}},{"before":"5d59e3f9db3326cf0cf297c2d96539c08a78cd61","after":"e029dfd790b180b43d6624e42c717343f04df1a5","ref":"refs/heads/main","pushedAt":"2023-11-27T18:42:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"artembilan","name":"Artem Bilan","path":"/artembilan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1071590?s=80&v=4"},"commit":{"message":"GH-402: Improve docs for `RetryCallback`\n\nFixes https://github.com/spring-projects/spring-retry/issues/402","shortMessageHtmlLink":"GH-402: Improve docs for RetryCallback"}},{"before":"8f4c603e5e47475ffde341a91de4c73544884926","after":"5d59e3f9db3326cf0cf297c2d96539c08a78cd61","ref":"refs/heads/main","pushedAt":"2023-11-22T15:56:41.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"artembilan","name":"Artem Bilan","path":"/artembilan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1071590?s=80&v=4"},"commit":{"message":"GH-403: Fix NPE in the CitcuitBreakerRetryPolicy\n\nFixes https://github.com/spring-projects/spring-retry/issues/403\r\n\r\nThe `openTimeout` resolution logic uses `this.resetTimeoutSupplier` by mistake","shortMessageHtmlLink":"GH-403: Fix NPE in the CitcuitBreakerRetryPolicy"}},{"before":"7516219c445d2ae492943d5247ee369827a999dc","after":"8f4c603e5e47475ffde341a91de4c73544884926","ref":"refs/heads/main","pushedAt":"2023-11-21T16:48:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"garyrussell","name":"Gary Russell","path":"/garyrussell","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/483832?s=80&v=4"},"commit":{"message":"GH-211: Provide the ability to exclude global retryListeners (#392)\n\n* GH-211: Provide the ability to exclude global retryListeners\r\n\r\nFixes\r\nhttps://github.com/spring-projects/spring-retry/issues/211\r\n\r\n* Javadoc polishing.\r\n\r\n* Javadoc polishing.\r\n\r\n---------\r\n\r\nCo-authored-by: akenra \r\nCo-authored-by: Gary Russell ","shortMessageHtmlLink":"GH-211: Provide the ability to exclude global retryListeners (#392)"}},{"before":"3a8201298a4655b28f271de3cf5e26f0a4a997c9","after":"7516219c445d2ae492943d5247ee369827a999dc","ref":"refs/heads/main","pushedAt":"2023-11-17T20:15:31.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"artembilan","name":"Artem Bilan","path":"/artembilan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1071590?s=80&v=4"},"commit":{"message":"GH-395: Expose maximum number of attempts property\n\nFixes https://github.com/spring-projects/spring-retry/issues/395\r\n\r\nIt is sometimes useful to be aware, within a retry context, whether the current attempt is the last attempt when using a 'maximum number of attempts before failure' type of retry policy.\r\nIn order to achieve the desired result, for all policies, a new attribute is going to be added to the context named \"context.max-attempts\" that will contain the number of max attempts set in the policy, if any, or -1 otherwise.\r\n\r\n* GH-395: make the retry context aware of the policies that have a maximum number of attempts set\r\n* GH-395: add author details to all modified classes that already had an author list","shortMessageHtmlLink":"GH-395: Expose maximum number of attempts property"}},{"before":"d01f25b268c0605a53379057826bc0c7af965a20","after":"3a8201298a4655b28f271de3cf5e26f0a4a997c9","ref":"refs/heads/main","pushedAt":"2023-11-16T13:45:35.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"artembilan","name":"Artem Bilan","path":"/artembilan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1071590?s=80&v=4"},"commit":{"message":"Fix return of `RetryListener.open()` in README","shortMessageHtmlLink":"Fix return of RetryListener.open() in README"}},{"before":"13879ceb32d3be7cff504f19e9b1a97d6acc58b4","after":"d01f25b268c0605a53379057826bc0c7af965a20","ref":"refs/heads/main","pushedAt":"2023-11-15T13:56:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"artembilan","name":"Artem Bilan","path":"/artembilan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1071590?s=80&v=4"},"commit":{"message":"GH-397: Fix exponential backoff for initial supplier\n\nFixes https://github.com/spring-projects/spring-retry/issues/397\r\n\r\n`Retryable` with exponential backoff not working with `delayExpression`\r\n\r\nThe `ExponentialBackOffContext` when we are calling `getSleepAndIncrement` `sleep` value resolved from `intervalSupplier` if it is not null. \r\nBut further when we resolving `getNextInterval`, we assigning it to the `interval` instead of `intervalSupplier` and `interval` keeps it initial value for the next iteration.\r\n\r\n* Assign `intervalSupplier` result into an `interval` on a first `getInterval()` call","shortMessageHtmlLink":"GH-397: Fix exponential backoff for initial supplier"}},{"before":"67549212be05966cd896c3b1f8ff8e7fa6ba0f90","after":"13879ceb32d3be7cff504f19e9b1a97d6acc58b4","ref":"refs/heads/main","pushedAt":"2023-10-26T14:40:10.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"artembilan","name":"Artem Bilan","path":"/artembilan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1071590?s=80&v=4"},"commit":{"message":"GH-391: More Javadoc Polishing\n\nResolves https://github.com/spring-projects/spring-retry/issues/391","shortMessageHtmlLink":"GH-391: More Javadoc Polishing"}},{"before":"c89b9516d9763cbb97689071dc4c8dc50090bf1e","after":"67549212be05966cd896c3b1f8ff8e7fa6ba0f90","ref":"refs/heads/main","pushedAt":"2023-10-25T18:02:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"garyrussell","name":"Gary Russell","path":"/garyrussell","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/483832?s=80&v=4"},"commit":{"message":"GH-391: Backoff Annotation: Polish random javadoc\n\nResolves https://github.com/spring-projects/spring-retry/issues/391","shortMessageHtmlLink":"GH-391: Backoff Annotation: Polish random javadoc"}},{"before":"cbccb586132a11d07df1e5347933f4593bb93bf4","after":"4f104e175626674e929915bec218102662fdb280","ref":"refs/heads/1.3.x","pushedAt":"2023-10-19T15:33:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"artembilan","name":"Artem Bilan","path":"/artembilan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1071590?s=80&v=4"},"commit":{"message":"GH-386: Restore interrupted thread status\n\nFixes https://github.com/spring-projects/spring-retry/issues/386\n\n* Update author and copyright\n\n**Cherry-pick to `1.3.x`**","shortMessageHtmlLink":"GH-386: Restore interrupted thread status"}},{"before":"6af7bc0eeb7ba0c3d5d540571f75d3f1f15a461c","after":"c89b9516d9763cbb97689071dc4c8dc50090bf1e","ref":"refs/heads/main","pushedAt":"2023-10-19T15:28:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"artembilan","name":"Artem Bilan","path":"/artembilan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1071590?s=80&v=4"},"commit":{"message":"GH-386: Restore interrupted thread status\n\nFixes https://github.com/spring-projects/spring-retry/issues/386\r\n\r\n* Update author and copyright\r\n\r\n**Cherry-pick to `1.3.x`**","shortMessageHtmlLink":"GH-386: Restore interrupted thread status"}},{"before":"e5f2a4aaae0e6e03155583493be676b50e4d442b","after":"6af7bc0eeb7ba0c3d5d540571f75d3f1f15a461c","ref":"refs/heads/main","pushedAt":"2023-10-16T11:57:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"spring-builds","name":"Spring Builds","path":"/spring-builds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1134463?s=80&v=4"},"commit":{"message":"Next development version (v2.0.5-SNAPSHOT)","shortMessageHtmlLink":"Next development version (v2.0.5-SNAPSHOT)"}},{"before":"f168eff41229913a39bb189db328bce83c83061c","after":"e5f2a4aaae0e6e03155583493be676b50e4d442b","ref":"refs/heads/main","pushedAt":"2023-10-16T11:44:46.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"snicoll","name":"Stéphane Nicoll","path":"/snicoll","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/490484?s=80&v=4"},"commit":{"message":"Harmonize pom elements order","shortMessageHtmlLink":"Harmonize pom elements order"}},{"before":"fa00aa18d41eb2dfe15872c19a3469f86c88325e","after":"f168eff41229913a39bb189db328bce83c83061c","ref":"refs/heads/main","pushedAt":"2023-10-02T20:16:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"artembilan","name":"Artem Bilan","path":"/artembilan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1071590?s=80&v=4"},"commit":{"message":"GH-383: maxAttemptsExpression Ignored Sometimes\n\nResolves https://github.com/spring-projects/spring-retry/issues/383\r\n\r\nIf explicit exceptions are referenced, and an `exceptionExpression` is\r\nprovided, the `maxAttemptsExpression` was ignored.","shortMessageHtmlLink":"GH-383: maxAttemptsExpression Ignored Sometimes"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAES6sPHwA","startCursor":null,"endCursor":null}},"title":"Activity · spring-projects/spring-retry"}