@@ -66,6 +66,7 @@ public enum HubRequestStatus {
6666 private ScheduledFuture <?> syncTask ;
6767 private StartupData startupData ;
6868 private boolean startupDataSent = false ;
69+ private boolean enabled = true ;
6970
7071 public final RequestCounter requestCounter ;
7172 public final RequestLogger requestLogger ;
@@ -89,6 +90,10 @@ public ApitallyClient(String clientId, String env, RequestLoggingConfig requestL
8990 this .consumerRegistry = new ConsumerRegistry ();
9091 }
9192
93+ public boolean isEnabled () {
94+ return enabled ;
95+ }
96+
9297 private HttpClient createHttpClient () {
9398 return HttpClient .newBuilder ()
9499 .version (HttpClient .Version .HTTP_1_1 )
@@ -193,7 +198,10 @@ private void sendLogData() {
193198 .POST (HttpRequest .BodyPublishers .ofInputStream (() -> inputStream ))
194199 .build ();
195200 HubRequestStatus status = sendHubRequest (request ).join ();
196- if (status == HubRequestStatus .RETRYABLE_ERROR ) {
201+ if (status == HubRequestStatus .PAYMENT_REQUIRED ) {
202+ requestLogger .clear ();
203+ requestLogger .setSuspendUntil (System .currentTimeMillis () + (3600 * 1000L ));
204+ } else if (status == HubRequestStatus .RETRYABLE_ERROR ) {
197205 requestLogger .retryFileLater (logFile );
198206 break ;
199207 } else {
@@ -219,22 +227,11 @@ public CompletableFuture<HubRequestStatus> sendHubRequest(HttpRequest request) {
219227 if (response .statusCode () >= 200 && response .statusCode () < 300 ) {
220228 return HubRequestStatus .OK ;
221229 } else if (response .statusCode () == 402 ) {
222- // 402 is only returned by the log endpoint, meaning request logging is not
223- // allowed for this client
224- Optional <String > retryAfter = response .headers ().firstValue ("Retry-After" );
225- if (retryAfter .isPresent ()) {
226- try {
227- int retryAfterSeconds = Integer .parseInt (retryAfter .get ());
228- requestLogger
229- .setSuspendUntil (System .currentTimeMillis () + (retryAfterSeconds * 1000L ));
230- } catch (NumberFormatException e ) {
231- // Ignore invalid Retry-After header
232- }
233- }
234- requestLogger .clear ();
235230 return HubRequestStatus .PAYMENT_REQUIRED ;
236231 } else if (response .statusCode () == 404 ) {
232+ enabled = false ;
237233 stopSync ();
234+ requestLogger .close ();
238235 logger .error ("Invalid Apitally client ID: {}" , clientId );
239236 return HubRequestStatus .INVALID_CLIENT_ID ;
240237 } else if (response .statusCode () == 422 ) {
@@ -304,6 +301,7 @@ private void sync() {
304301
305302 public void shutdown () {
306303 try {
304+ enabled = false ;
307305 boolean syncRunning = syncTask != null ;
308306 stopSync ();
309307 if (syncRunning ) {
0 commit comments