42 lines
1.0 KiB
Go
42 lines
1.0 KiB
Go
package data
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"time"
|
|
|
|
"go-common/library/log"
|
|
|
|
"go-common/library/database/hbase.v2"
|
|
|
|
"github.com/tsuna/gohbase/hrpc"
|
|
)
|
|
|
|
func (d *Dao) getDataWithBackup(c context.Context, client *hbase.Client, tableNameFunc func(retryCount int) string, maxRetry int, key string, options ...func(hrpc.Call) error) (result *hrpc.Result, err error) {
|
|
if client == nil {
|
|
err = fmt.Errorf("hbase client is nil")
|
|
return
|
|
}
|
|
|
|
for i := 0; i < maxRetry; i++ {
|
|
var tableName = tableNameFunc(i)
|
|
if result, err = d.hbase.GetStr(c, tableName, key, options...); err != nil {
|
|
log.Error("hbase GetStr tableName(%s)|key(%v)|error(%v)", tableName, key, err)
|
|
continue
|
|
}
|
|
break
|
|
}
|
|
return
|
|
}
|
|
|
|
func getTableName(tablePrefix string, date time.Time) string {
|
|
return tablePrefix + date.Format("20060102")
|
|
}
|
|
|
|
func generateTableNameFunc(tablePrefix string, date time.Time, dayDiff int) func(retryCount int) string {
|
|
return func(retryCount int) string {
|
|
var backdate = date.AddDate(0, 0, dayDiff*retryCount)
|
|
return getTableName(tablePrefix, backdate)
|
|
}
|
|
}
|