[ 
https://issues.apache.org/jira/browse/KUDU-3452?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17706674#comment-17706674
 ] 

Xixu Wang edited comment on KUDU-3452 at 3/30/23 3:43 AM:
----------------------------------------------------------

Thanks very much!  [~aserbin] 

1. There exists another restriction: (replication_factor + 1) / 2 >= the number 
of alive tservers implemented in [https://gerrit.cloudera.org/c/19571]. This 
restriction makes sure that RAFT protocol can always elect a leader tablet 
replica, so reading and writing data keep available. Therefore, creating a 
table with 0 tablet servers will not succeed. And If the table is created 
successfully with majority of replicas, it could be able to write into the 
newly created table right away.

{color:#c1c7d0}BTW, does it make sense to allow creating a table even with 0 
tablet servers available in a cluster? Or the use-case assumes the client 
should be able to write into the newly created table right after it gets OK 
response for the CreateTable API method?{color}

{color:#172b4d}2. Yes, that is what I mean.{color}

{color:#c1c7d0}Perhaps, by "the risk is the same" you meant the case when one 
tablet replica became unavailable after a table has been created in case of 
cluster with just 3 nodes.{color}

{color:#172b4d}3. You mean that the table replication factor can not larger 
than the total  number of tablet servers registered with the catalog manage? I 
agree. I will implement it in my commit.{color}

{color:#c1c7d0}But let's please at least check for the total number of tablet 
servers registered with the catalog manager{color}


was (Author: wangxixu):
1. There exists another restriction: (replication_factor + 1) / 2 >= the number 
of alive tservers implemented in https://gerrit.cloudera.org/c/19571. This 
restriction makes sure that RAFT protocol can always elect a leader tablet 
replica, so reading and writing data keep available. Therefore, creating a 
table with 0 tablet servers will not succeed. And If the table is created 
successfully with majority of replicas, it could be able to write into the 
newly created table right away.

{color:#c1c7d0}BTW, does it make sense to allow creating a table even with 0 
tablet servers available in a cluster? Or the use-case assumes the client 
should be able to write into the newly created table right after it gets OK 
response for the CreateTable API method?{color}

{color:#172b4d}2. Yes, that is what I mean.{color}

{color:#c1c7d0}Perhaps, by "the risk is the same" you meant the case when one 
tablet replica became unavailable after a table has been created in case of 
cluster with just 3 nodes.{color}

{color:#172b4d}3. You mean that the table replication factor can not larger 
than the total  number of tablet servers registered with the catalog manage? I 
agree. I will implement it in my commit.{color}

{color:#c1c7d0}But let's please at least check for the total number of tablet 
servers registered with the catalog manager{color}

> Support creating three-replicas table or partition when only 2 tservers 
> healthy
> -------------------------------------------------------------------------------
>
>                 Key: KUDU-3452
>                 URL: https://issues.apache.org/jira/browse/KUDU-3452
>             Project: Kudu
>          Issue Type: Improvement
>            Reporter: Xixu Wang
>            Priority: Major
>
> h1. Background
> In my case, every day a new Kudu table (called: history_data_table) will be 
> created to store history data and a new partition for another table (called: 
> business_data_table) to be ready to store today's data. These tables and 
> partitions all require 3 replicas. This business logic was implemented by 
> some Python scripts. My Kudu cluster contains 3 masters and 3 tservers. Flag: 
> --catalog_manager_check_ts_count_for_create_table is false.
> Sometimes, one tserver maybe become unavailable. Table creating task will 
> retry continuously and always fail until the tserver become healthy again. 
> See the error:
> {color:#ff8b00}E0222 11:10:32.767140 3321 catalog_manager.cc:672] Error 
> processing pending assignments: Invalid argument: error selecting replicas 
> for tablet 41dffa9783f14f36a5b6c35e89075c1a, state:0: Not enough tablet 
> servers are online for table 'test_table'. Need at least 3 replicas, but only 
> 2 tablet servers are available{color}
> {color:#172b4d}As there are no enough replicas, a tablet will never be 
> created. The state of this tablet is not running. Therefore, read or write 
> this tablet will fail even if there are 2 tservers can be used to create 2 
> replicas.{color}
>  
> An already created tablet can still be on service even if one of its 3 
> replicas become unavailable. Why can not create a three-replicas table when 
> only 2 tservers healthy?
>  
> h1. Design
> A new flag: --support_create_tablet_without_enough_healthy_tservers is added. 
> The original logic keeps the same. When this flag is set true, a 
> three-replicas tablet can be created successfully and its status is losing 
> one replica. This tablet can be be read and write normally.
>  
> There are 3 things need to do:
>  # A tool to cancel the table creating task.
>  # A tool to show the running table creating task.
>  # A method to create table without enough healthy tservers



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to