Periodically calls DoRenewal().
| 366 | |
| 367 | // Periodically calls DoRenewal(). |
| 368 | void KinitContext::RenewThread() { |
| 369 | uint32_t failure_retries = 0; |
| 370 | int64_t renew_interval_s = GetNextRenewInterval(failure_retries); |
| 371 | while (!stop_latch_.WaitFor(MonoDelta::FromSeconds(renew_interval_s))) { |
| 372 | Status s = DoRenewal(); |
| 373 | WARN_NOT_OK(s, "Kerberos reacquire error: "); |
| 374 | if (!s.ok()) { |
| 375 | ++failure_retries; |
| 376 | } else { |
| 377 | failure_retries = 0; |
| 378 | } |
| 379 | |
| 380 | if (failure_retries > 0) { |
| 381 | // Log in the abnormal case where something failed. |
| 382 | LOG(INFO) << Substitute("Renew thread sleeping after $0 failures for $1s", |
| 383 | failure_retries, renew_interval_s); |
| 384 | } |
| 385 | |
| 386 | // This thread is run immediately after the first Kinit, so sleep first. |
| 387 | renew_interval_s = GetNextRenewInterval(failure_retries); |
| 388 | } |
| 389 | } |
| 390 | |
| 391 | RWMutex* KerberosReinitLock() { |
| 392 | return g_kerberos_reinit_lock; |
no test coverage detected