docs: @Override
      public void recoveryComplete() throws LogClosedException, InternalLogException, LogIncompatibleException, LogIncompatibleException
      {
          if (tc.isEntryEnabled())
              Tr.entry(tc, "recoveryComplete", this);
  
          // If this recovery log instance has been marked as incompatible then throw an exception
          // accordingly.
          if (incompatible())
          {
              if (tc.isEntryEnabled())
                  Tr.exit(tc, "recoveryComplete", "LogIncompatibleException");
              throw new LogIncompatibleException();
          }
  
          // If this recovery log instance has experienced a serious internal error then prevent this operation from
          // executing.
          if (failed())
          {
              if (tc.isEntryEnabled())
                  Tr.exit(tc, "recoveryComplete", this);
              throw new InternalLogException(null);
          }
  
          // Check that the log is open.
          if (_logHandle == null)
          {
              if (tc.isEntryEnabled())
                  Tr.exit(tc, "recoveryComplete", "LogClosedException");
              throw new LogClosedException(null);
          }
  
          try
          {
              keypoint();
          } catch (LogClosedException exc)
          {
              // In practice this exception is unlikely to occur. We have already checked above that the log is
              // open. It is possible that in a multi-threaded environment this could occur, but its the
              // responsibility of the user of the recovery log service to ensure they do not try and close
              // the log at the same time as calling recoveryComplete! All we can do is re-throw the exception.
              FFDCFilter.processException(exc, "com.ibm.ws.recoverylog.spi.MultiScopeRecoveryLog.recoveryComplete", "686", this);
              if (tc.isEntryEnabled())
                  Tr.exit(tc, "recoveryComplete", exc);
              throw exc;
          } catch (InternalLogException exc)
          {
              FFDCFilter.processException(exc, "com.ibm.ws.recoverylog.spi.MultiScopeRecoveryLog.recoveryComplete", "692", this);
              markFailed(exc); /* @MD19484C */
              if (tc.isEntryEnabled())
                  Tr.exit(tc, "recoveryComplete", exc);
              throw exc;
          } catch (Throwable exc)
          {
              FFDCFilter.processException(exc, "com.ibm.ws.recoverylog.spi.MultiScopeRecoveryLog.recoveryComplete", "699", this);
              markFailed(exc); /* @MD19484C */
              if (tc.isEntryEnabled())
                  Tr.exit(tc, "recoveryComplete", "InternalLogException");
              throw new InternalLogException(exc);
          }
  
          if (tc.isEntryEnabled())
              Tr.exit(tc, "recoveryComplete");
      }