diff --git a/server/cluster.go b/server/cluster.go index ac014d679eb0..fabd9a4a23ab 100644 --- a/server/cluster.go +++ b/server/cluster.go @@ -389,10 +389,6 @@ func (c *raftCluster) GetStore(storeID uint64) (*metapb.Store, error) { } func (c *raftCluster) GetRegion(regionKey []byte) (*metapb.Region, error) { - if len(regionKey) == 0 { - return nil, errors.New("invalid empty region key") - } - // We must use the next region key for search, // e,g, we have two regions 1, 2, and key ranges are ["", "abc"), ["abc", +infinite), // if we use "abc" to search the region, the first key >= "abc" may be diff --git a/server/cluster_worker_test.go b/server/cluster_worker_test.go index 97ad81a4bbc2..7a00c845235b 100644 --- a/server/cluster_worker_test.go +++ b/server/cluster_worker_test.go @@ -732,7 +732,14 @@ func (s *testClusterWorkerSuite) TestSplit(c *C) { {"e", "d", "", "f"}, } - for _, t := range tbl { + var firstRegionStartKey, firstRegionEndKey string + for i, t := range tbl { + // Get first region start and end key. + if i == 0 { + firstRegionStartKey = t.startKey + firstRegionEndKey = t.splitKey + } + regionKey := []byte(t.searchKey) region, err := cluster.GetRegion(regionKey) c.Assert(err, IsNil) @@ -777,5 +784,12 @@ func (s *testClusterWorkerSuite) TestSplit(c *C) { c.Assert(err, IsNil) c.Assert(right.GetStartKey(), BytesEquals, []byte(t.splitKey)) c.Assert(right.GetEndKey(), BytesEquals, []byte(t.endKey)) + + // Test get first region. + regionKey = []byte{} + region, err = cluster.GetRegion(regionKey) + c.Assert(err, IsNil) + c.Assert(region.GetStartKey(), BytesEquals, []byte(firstRegionStartKey)) + c.Assert(region.GetEndKey(), BytesEquals, []byte(firstRegionEndKey)) } }