13015517713 opened a new issue, #2305:
URL: https://github.com/apache/kvrocks/issues/2305

   ### Search before asking
   
   - [X] I had searched in the 
[issues](https://github.com/apache/kvrocks/issues) and found no similar issues.
   
   
   ### Motivation
   
   When running Server.start(), kvrocks will launch a thread for compaction 
check. Some considerations are as follows.
   
   -  If there is no checker configured, maybe it is no need to start the 
thread to check frequently. Only if it is enabled, then create the thread.
   
   - The checker for pubsubfiles is independent of the configuration of the 
normal checker (the code is like this). If there is no configured checker, 
kvrocks also should do compression for pubsub.  (not sure I understand that 
correctly.)
   
   Corresponding code block is in server.cc, Server().Start().
   ```
   compaction_checker_thread_ = GET_OR_RET(util::CreateThread("compact-check", 
[this] {
       uint64_t counter = 0;
       int64_t last_compact_date = 0;
       CompactionChecker compaction_checker{this->storage};
   
       while (!stop_) {
         // Sleep first
         std::this_thread::sleep_for(std::chrono::milliseconds(100));
   
         // To guarantee accessing DB safely
         auto guard = storage->ReadLockGuard();
         if (storage->IsClosing()) continue;
   
         if (!is_loading_ && ++counter % 600 == 0  // check every minute
             && config_->compaction_checker_range.Enabled()) {
           auto now_hours = util::GetTimeStamp<std::chrono::hours>();
           if (now_hours >= config_->compaction_checker_range.start &&
               now_hours <= config_->compaction_checker_range.stop) {
             std::vector<std::string> cf_names = 
{engine::kMetadataColumnFamilyName, engine::kSubkeyColumnFamilyName,
                                                  
engine::kZSetScoreColumnFamilyName, engine::kStreamColumnFamilyName};
             for (const auto &cf_name : cf_names) {
               compaction_checker.PickCompactionFiles(cf_name);
             }
           }
           // compact once per day
           if (now_hours != 0 && last_compact_date != now_hours / 24) {
             last_compact_date = now_hours / 24;
             compaction_checker.CompactPropagateAndPubSubFiles();
           }
         }
       }
     }));
   ```
   
   ### Solution
   
   _No response_
   
   ### Are you willing to submit a PR?
   
   - [ ] I'm willing to submit a PR!


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to