Skip to content

HBASE-30160: Prevent region creation if the encoded region names are …#8395

Open
hingu-8103 wants to merge 2 commits into
apache:masterfrom
hingu-8103:HBASE-30160
Open

HBASE-30160: Prevent region creation if the encoded region names are …#8395
hingu-8103 wants to merge 2 commits into
apache:masterfrom
hingu-8103:HBASE-30160

Conversation

@hingu-8103

@hingu-8103 hingu-8103 commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

…the same

AI Usage

Used github copilot to implement the changes and then hand reviewed all the changes.

Testing

  1. Reproduced the error for CreateTableProcedure and SplitTableRegionProcedure as mentioned in the ticket.
  2. Applied the fix.
  3. Tested the same scenario manually for CreateTableProcedure and SplitTableRegionProcedure.
  4. Got the DoNotRetryException instead of hanging procedure for long time.
    ex.
key1 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,66,185,153,219,183,152,87,250,161,224,241,188,9,104,93,49,83,91,38,117,42,147,161,38,82,122,70,135,158,151,48,132,229,185,227,108,110,42,108,7,12,239,3,150,81,189,67,33,177,222,99,45,251,43,17,131,104,193,190,36,31,174,149,175,211,87,7,138,1,250,241,186,131,140,125,165,65,49,131,174,174,248,230,249,229,70,167,201,26,254,77,236,7,222,109,14,109,158,151,244,22,8,148,168,138,56,55,7,181,118,172,231,7,16,34,252,185,31,109,189,19,86,169,237,88,240,177].pack("C*")
key2 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,66,185,153,219,183,152,87,250,161,224,241,188,9,104,93,49,83,91,166,117,42,147,161,38,82,122,70,135,158,151,48,132,229,185,227,108,110,42,108,7,12,239,3,150,209,188,67,33,177,222,99,45,251,43,17,131,104,193,62,36,31,174,149,175,211,87,7,138,1,250,241,186,131,140,125,165,65,49,131,174,174,248,102,249,229,70,167,201,26,254,77,236,7,222,109,14,109,158,151,244,22,8,148,168,138,56,55,7,53,119,172,231,7,16,34,252,185,31,109,189,19,86,41,237,88,240,177].pack("C*")

hbase:037:0> create 'table1','f',SPLITS => [key1, key2]

ERROR: org.apache.hadoop.hbase.DoNotRetryIOException: Encoded region name collision detected: '495efdcd24c0fa172bef0c39ec4c9ab4' for table table1. Refusing to proceed.
	at org.apache.hadoop.hbase.util.ModifyRegionUtils.checkForEncodedNameCollisions(ModifyRegionUtils.java:110)
	at org.apache.hadoop.hbase.master.procedure.CreateTableProcedure.prepareCreate(CreateTableProcedure.java:297)
	at org.apache.hadoop.hbase.master.procedure.CreateTableProcedure.executeFromState(CreateTableProcedure.java:95)
	at org.apache.hadoop.hbase.master.procedure.CreateTableProcedure.executeFromState(CreateTableProcedure.java:60)
	at org.apache.hadoop.hbase.procedure2.StateMachineProcedure.execute(StateMachineProcedure.java:188)
	at org.apache.hadoop.hbase.procedure2.Procedure.doExecute(Procedure.java:963)
	at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execProcedure(ProcedureExecutor.java:1785)
	at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.executeProcedure(ProcedureExecutor.java:1462)
	at org.apache.hadoop.hbase.procedure2.ProcedureExecutor$WorkerThread.runProcedure(ProcedureExecutor.java:2110)
	at org.apache.hadoop.hbase.trace.TraceUtil.trace(TraceUtil.java:216)
	at org.apache.hadoop.hbase.procedure2.ProcedureExecutor$WorkerThread.run(ProcedureExecutor.java:2137)

For usage try 'help "create"'

Took 0.5583 seconds

@meszibalu

Copy link
Copy Markdown
Contributor

@hingu-8103 In the description of the Jira I suggested the encoded name can conflict only within a table. However it might be possible to create conflicts across multiple tables. So I can generate two special split points, one for table1,m and the other one for table2,n start keys. HBase also appends a timestamp into the hash input, so exploiting it also requires to do the split exactly at the same time (millisecond precision), but it is theoretically possible.

@hingu-8103

hingu-8103 commented Jun 25, 2026

Copy link
Copy Markdown
Contributor Author

@meszibalu I've addressed the concern you mentioned in the previous comment.
Thanks for pointing it out.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants