Ejemplo n.º 1
0
void TaskManager::dump_tablets(const char *file)
{
  FILE * f = fopen(file, "w");
  char *key_buf = NULL;

  if (NULL == f) 
  {
    TBSYS_LOG(ERROR, "can't write tablets list file, %s", file);
    return;
  }

  key_buf = new (std::nothrow) char[2 * OB_MAX_ROW_KEY_LENGTH];
  if (NULL == key_buf) 
  {
    TBSYS_LOG(ERROR, "can't allocate memory");
    fclose(f);
    return;
  }

  map<uint64_t, TaskInfo>::iterator itr = wait_queue_.begin();
  while (itr != wait_queue_.end()) 
  {
    TabletLocation loc = itr->second.get_location();
    fprintf(f, "TaskId:%ld, ReplicaSize=%ld, TableId:%ld\n", 
            itr->first, loc.size(), itr->second.get_table_id());

    const ObRange *range = itr->second.get_param().get_range();
    int len = hex_to_str(range->start_key_.ptr(), range->start_key_.length(), 
                         key_buf, 2 * OB_MAX_ROW_KEY_LENGTH);
    key_buf[2 * len] = 0;
    fprintf(f, "S:%s\n", key_buf);

    len = hex_to_str(range->end_key_.ptr(), range->end_key_.length(), 
                         key_buf, 2 * OB_MAX_ROW_KEY_LENGTH);
    key_buf[2 * len] = 0;
    fprintf(f, "E:%s\n", key_buf);

    for (int i = 0;i < loc.size();i++)
    {
      loc[i].chunkserver_.to_string(key_buf, 2 * OB_MAX_ROW_KEY_LENGTH);
      fprintf(f, "MergeServer=%s\n", key_buf);
    }

    fprintf(f, "\n");

    itr++;
  }

  fclose(f);
  delete [] key_buf;
}
Ejemplo n.º 2
0
// add a new task
int TaskManager::insert_task(const TabletLocation & location, TaskInfo & task)
{
  int ret = OB_SUCCESS;
  task.set_location(location);
  task.set_token(task_token_);
  int64_t timestamp = tbsys::CTimeUtil::getTime();
  task.set_timestamp(timestamp); 
  std::map<ObServer, int64_t>::const_iterator it;
  tbsys::CThreadGuard lock(&lock_);
  task.set_id(++task_id_alloc_);
  ++total_task_count_;
  wait_queue_.insert(pair<uint64_t, TaskInfo>(task.get_id(), task));
  for (int64_t i = 0; i < location.size(); ++i)
  {
    // TODO server counter for select task
    it = server_manager_.find(location[i].chunkserver_);
    if (it != server_manager_.end())
    {
      server_manager_[location[i].chunkserver_] = it->second + 1;
    }
    else
    {
      server_manager_.insert(pair<ObServer, int64_t>(location[i].chunkserver_, 1));
    }
  }
  TBSYS_LOG(DEBUG, "insert task succ:id[%lu], count[%lu]", task_id_alloc_, total_task_count_);
  return ret;
}
Ejemplo n.º 3
0
int TaskFactory::insert_new_task(const TabletLocation & list, TaskInfo & task)
{
  int ret = OB_SUCCESS;
  // alarm instantly
  if (0 == list.size())
  {
    TBSYS_LOG(ERROR, "check task server list count failed:task[%lu], count[%lu]",
        task.get_id(), list.size());
  }
  // remain do insert task
  ret = task_manager_->insert_task(list, task);
  if (ret != OB_SUCCESS)
  {
    TBSYS_LOG(ERROR, "insert a new task failed:ret[%d]", ret);
  }
  return ret;
}
Ejemplo n.º 4
0
int TaskFactory::insert_new_task(const TabletLocation & list, TaskInfo & task)
{
  int ret = OB_SUCCESS;
  // alarm instantly
  if (0 == list.size())
  {
    TBSYS_LOG(ERROR, "check task server list count failed:task[%lu], count[%lu]",
        task.get_id(), list.size());
  }
  // remain do insert task
  ret = task_manager_->insert_task(list, task);
  if (ret != OB_SUCCESS)
  {
    TBSYS_LOG(ERROR, "insert a new task failed:ret[%d]", ret);
  }
  else
  {
    TBSYS_LOG(TRACE, "insert a new task succ:task[%lu], table_name[%.*s], tablet[%s]",
        task.get_id(), task.get_param().get_table_name().length(), task.get_param().get_table_name().ptr(),
        to_cstring(*task.get_param().get_range()));
  }
  return ret;
}
Ejemplo n.º 5
0
// add a new task
int TaskManager::insert_task(const TabletLocation & location, TaskInfo & task)
{
  int ret = OB_SUCCESS;
  task.set_location(location);
  task.set_token(task_token_);
  int64_t timestamp = tbsys::CTimeUtil::getTime();
  task.set_timestamp(timestamp);
  std::map<ObServer, int64_t>::const_iterator it;
  tbsys::CThreadGuard lock(&lock_);
  task.set_id(++task_id_alloc_);
  ++total_task_count_;
  wait_queue_.insert(pair<uint64_t, TaskInfo>(task.get_id(), task));
  for (int64_t i = 0; i < location.size(); ++i)
  {
    // TODO server counter for select task
    it = server_manager_.find(location[i].chunkserver_);
    if (it != server_manager_.end())
    {
      server_manager_[location[i].chunkserver_] = it->second + 1;
    }
    else
    {
      server_manager_.insert(pair<ObServer, int64_t>(location[i].chunkserver_, 1));
    }
  }
  TBSYS_LOG(DEBUG, "insert task succ:id[%lu], table_name[%.*s], range[%s], count[%lu]", task_id_alloc_,
      task.get_param().get_table_name().length(), task.get_param().get_table_name().ptr(),
      to_cstring(*task.get_param().get_range()), total_task_count_);
#if false
  std::map<uint64_t, TaskInfo>::iterator temp_it;
  for (temp_it = wait_queue_.begin(); temp_it != wait_queue_.end(); ++temp_it)
  {
    TBSYS_LOG(TRACE, "dump task range:task[%ld], range[%p:%s], key_obj[%p:%p]", temp_it->first,
        temp_it->second.get_param().get_range(), to_cstring(*temp_it->second.get_param().get_range()),
        temp_it->second.get_param().get_range()->start_key_.ptr(), temp_it->second.get_param().get_range()->end_key_.ptr());
  }
#endif
  return ret;
}