Class LocalSessions


  • public class LocalSessions
    extends java.lang.Object
    Manages all consistent repair sessions a node is participating in.

    Since sessions need to be loaded, and since we need to handle cases where sessions might not exist, most of the logic around local sessions is implemented in this class, with the LocalSession class being treated more like a simple struct, in contrast with CoordinatorSession

    • Field Detail

      • CLEANUP_INTERVAL

        public static final int CLEANUP_INTERVAL
        How often LocalSessions.cleanup is run
    • Constructor Detail

      • LocalSessions

        public LocalSessions()
    • Method Detail

      • isNodeInitialized

        protected boolean isNodeInitialized()
      • sessionInfo

        public java.util.List<java.util.Map<java.lang.String,​java.lang.String>> sessionInfo​(boolean all,
                                                                                                  java.util.Set<Range<Token>> ranges)
      • cancelSession

        public void cancelSession​(java.util.UUID sessionID,
                                  boolean force)
        hook for operators to cancel sessions, cancelling from a non-coordinator is an error, unless force is set to true. Messages are sent out to other participants, but we don't wait for a response
      • start

        public void start()
        Loads sessions out of the repairs table and sets state to started
      • stop

        public void stop()
      • isStarted

        public boolean isStarted()
      • cleanup

        public void cleanup()
        Auto fails and auto deletes timed out and old sessions Compaction will clean up the sstables still owned by a deleted session
      • getSession

        public LocalSession getSession​(java.util.UUID sessionID)
      • failSession

        public void failSession​(java.util.UUID sessionID)
      • failSession

        public void failSession​(java.util.UUID sessionID,
                                boolean sendMessage)
      • failSession

        public void failSession​(LocalSession session,
                                boolean sendMessage)
      • deleteSession

        public void deleteSession​(java.util.UUID sessionID)
      • handlePrepareMessage

        public void handlePrepareMessage​(InetAddressAndPort from,
                                         PrepareConsistentRequest request)
        The PrepareConsistentRequest promotes the parent repair session to a consistent incremental session, and isolates the data to be repaired from the rest of the table's data No response is sent to the repair coordinator until the data preparation / isolation has completed successfully. If the data preparation fails, a failure message is sent to the coordinator, cancelling the session.
      • maybeSetRepairing

        public void maybeSetRepairing​(java.util.UUID sessionID)
      • sessionCompleted

        protected void sessionCompleted​(LocalSession session)
      • handleFinalizeCommitMessage

        public void handleFinalizeCommitMessage​(InetAddressAndPort from,
                                                FinalizeCommit commit)
        Finalizes the repair session, completing it as successful. This only changes the state of the session, it doesn't promote the siloed sstables to repaired. That will happen as part of the compaction process, and avoids having to worry about in progress compactions interfering with the promotion.
      • sendStatusRequest

        public void sendStatusRequest​(LocalSession session)
      • isSessionInProgress

        public boolean isSessionInProgress​(java.util.UUID sessionID)
        determines if a local session exists, and if it's not finalized or failed
      • isSessionFinalized

        public boolean isSessionFinalized​(java.util.UUID sessionID)
        determines if a local session exists, and if it's in the finalized state
      • sessionExists

        public boolean sessionExists​(java.util.UUID sessionID)
        determines if a local session exists
      • sessionHasData

        protected boolean sessionHasData​(LocalSession session)
      • getFinalSessionRepairedAt

        public long getFinalSessionRepairedAt​(java.util.UUID sessionID)
        Returns the repairedAt time for a sessions which is unknown, failed, or finalized calling this for a session which is in progress throws an exception