Skip to content

Commit

Permalink
Add support for golang 1.21 (#60)
Browse files Browse the repository at this point in the history
  • Loading branch information
krishnamiriyala authored Sep 15, 2023
1 parent 6bf6d1e commit 7b623b2
Show file tree
Hide file tree
Showing 7 changed files with 115 additions and 83 deletions.
14 changes: 10 additions & 4 deletions .github/workflows/daily.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,15 @@ jobs:
test:
name: Unit test
runs-on: [ubuntu-latest]
strategy:
matrix:
go: ['1.19', '1.20', '1.21']
steps:
- uses: actions/checkout@v3
- name: Set up Go using version for latest 1.19 version
- name: Set up Go using version for latest ${{ matrix.go }} version
uses: actions/setup-go@v4
with:
go-version: '1.19'
go-version: ${{ matrix.go }}
check-latest: true
- name: Run unit tests
run: |
Expand All @@ -37,12 +40,15 @@ jobs:
lint:
name: Check lint
runs-on: [ubuntu-latest]
strategy:
matrix:
go: ['1.19', '1.20', '1.21']
steps:
- uses: actions/checkout@v3
- name: Set up Go using version for latest 1.19 version
- name: Set up Go using version for latest ${{ matrix.go }} version
uses: actions/setup-go@v4
with:
go-version: '1.19'
go-version: ${{ matrix.go }}
check-latest: true
- name: Run lint
run: |
Expand Down
14 changes: 10 additions & 4 deletions .github/workflows/go.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,15 @@ jobs:
test:
name: Unit test
runs-on: [ubuntu-latest]
strategy:
matrix:
go: ['1.19', '1.20', '1.21']
steps:
- uses: actions/checkout@v3
- name: Set up Go using version for latest 1.19 version
- name: Set up Go using version for latest ${{ matrix.go }} version
uses: actions/setup-go@v4
with:
go-version: '1.19'
go-version: ${{ matrix.go }}
check-latest: true

- name: Run unit tests
Expand All @@ -50,12 +53,15 @@ jobs:
lint:
name: Check lint
runs-on: [ubuntu-latest]
strategy:
matrix:
go: ['1.19', '1.20', '1.21']
steps:
- uses: actions/checkout@v3
- name: Set up Go using version for latest 1.19 version
- name: Set up Go using version for latest ${{ matrix.go }} version
uses: actions/setup-go@v4
with:
go-version: '1.19'
go-version: ${{ matrix.go }}
check-latest: true
- name: Run lint
run: |
Expand Down
6 changes: 5 additions & 1 deletion build/install_tools.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@ set -eux

source $(dirname "$0")/env.sh

GOLNT_VERSION=v1.50.1
if go version | grep 1.2; then
GOLNT_VERSION=${GOLNT_VERSION:=v1.52.2}
else
GOLNT_VERSION=${GOLNT_VERSION:=v1.50.1}
fi
GOMRK_VERSION=v1.1.0
SHFMT_VERSION=v3.6.0
TYPOS_VERSION=1.13.6
Expand Down
87 changes: 49 additions & 38 deletions docs/DOCUMENTATION.md

Large diffs are not rendered by default.

62 changes: 31 additions & 31 deletions pkg/datastore/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ func (db *relationalDb) getDBTransaction(ctx context.Context, tableName string,
TABLE_NAME: tableName,
"authorizer": TypeName(db.authorizer),
})
db.logger.Error(err)
db.logger.Debug(err)
return nil, err
}
return tx, nil
Expand Down Expand Up @@ -150,15 +150,15 @@ func (db *relationalDb) ValidateTenancyScope(tenancyInfo TenancyInfo, record Rec
orgIdCol, _ := GetOrgId(record)
if orgIdCol != "" && orgIdCol != tenancyInfo.OrgId {
err := ErrOperationNotAllowed.WithValue("tenant", tenancyInfo.OrgId).WithValue("orgIdCol", orgIdCol)
db.logger.Error(err)
db.logger.Debug(err)
return err
}
}
if IsMultiInstanced(record, tableName, db.instancer != nil) {
instanceIdCol, _ := GetInstanceId(record)
if instanceIdCol != "" && instanceIdCol != tenancyInfo.InstanceId {
err := ErrOperationNotAllowed.WithValue("instance", tenancyInfo.InstanceId).WithValue("instanceIdCol", instanceIdCol)
db.logger.Error(err)
db.logger.Debug(err)
return err
}
}
Expand All @@ -175,7 +175,7 @@ func (db *relationalDb) configureTxWithTenancyScope(tenancyInfo TenancyInfo) (*g
// Set org. ID
stmt := getSetConfigStmt(DbConfigOrgId, tenancyInfo.OrgId)
if err = tx.Exec(stmt).Error; err != nil {
db.logger.Error(err)
db.logger.Debug(err)
return nil, ErrExecutingSqlStmt.Wrap(err).WithValue(SQL_STMT, stmt).WithValue(DB_NAME, db.dbName)
}
} else {
Expand All @@ -185,7 +185,7 @@ func (db *relationalDb) configureTxWithTenancyScope(tenancyInfo TenancyInfo) (*g
// Set config view scoped to InstanceId
stmt := getSetConfigStmt(DbConfigInstanceId, tenancyInfo.InstanceId)
if err = tx.Exec(stmt).Error; err != nil {
db.logger.Error(err)
db.logger.Debug(err)
return nil, ErrExecutingSqlStmt.Wrap(err).WithValue(SQL_STMT, stmt).WithValue(DB_NAME, db.dbName)
}
return tx, nil
Expand All @@ -206,7 +206,7 @@ func (db *relationalDb) Find(ctx context.Context, record Record) error {

func rollbackTx(tx *gorm.DB, db *relationalDb) {
if err := tx.Rollback().Error; err != nil && err != sql.ErrTxDone {
db.logger.Error(err)
db.logger.Debug(err)
}
}

Expand All @@ -224,11 +224,11 @@ func (db *relationalDb) FindInTable(ctx context.Context, tableName string, recor
if errors.Is(err, gorm.ErrRecordNotFound) {
return ErrRecordNotFound.Wrap(err).WithValue("record", fmt.Sprintf("%+v", record)).WithValue(DB_NAME, db.dbName)
}
db.logger.Error(err)
db.logger.Debug(err)
return ErrExecutingSqlStmt.Wrap(err).WithValue(DB_NAME, db.dbName)
}
if err = tx.Commit().Error; err != nil {
db.logger.Error(err)
db.logger.Debug(err)
return ErrExecutingSqlStmt.Wrap(err).WithValue(DB_NAME, db.dbName)
}
return nil
Expand All @@ -240,7 +240,7 @@ func (db *relationalDb) FindAll(ctx context.Context, records interface{}, pagina
if reflect.TypeOf(records).Kind() != reflect.Ptr || reflect.TypeOf(records).Elem().Kind() != reflect.Slice {
errMsg := "\"records\" argument has to be a pointer to a slice of structs implementing \"Record\" interface"
err := ErrNotPtrToStructSlice.Wrap(fmt.Errorf(errMsg))
db.logger.Error(err)
db.logger.Debug(err)
return err
}

Expand Down Expand Up @@ -276,7 +276,7 @@ func (db *relationalDb) FindWithFilterInTable(ctx context.Context, tableName str
}

if err = tx.Table(tableName).Where(record).Error; err != nil {
db.logger.Error(err)
db.logger.Debug(err)
return ErrExecutingSqlStmt.Wrap(err).WithValue(DB_NAME, db.dbName)
}
if pagination != nil {
Expand All @@ -286,12 +286,12 @@ func (db *relationalDb) FindWithFilterInTable(ctx context.Context, tableName str
}
}
if err = tx.Find(records).Error; err != nil {
db.logger.Error(err)
db.logger.Debug(err)
return ErrExecutingSqlStmt.Wrap(err).WithValue(DB_NAME, db.dbName)
}

if err = tx.Commit().Error; err != nil {
db.logger.Error(err)
db.logger.Debug(err)
return ErrExecutingSqlStmt.Wrap(err).WithValue(DB_NAME, db.dbName)
}
return nil
Expand All @@ -315,11 +315,11 @@ func (db *relationalDb) InsertInTable(ctx context.Context, tableName string, rec
defer rollbackTx(tx, db)

if err = tx.Create(record).Error; err != nil {
db.logger.Error(err)
db.logger.Debug(err)
return 0, ErrExecutingSqlStmt.Wrap(err).WithValue(DB_NAME, db.dbName)
}
if err = tx.Commit().Error; err != nil {
db.logger.Error(err)
db.logger.Debug(err)
return 0, ErrExecutingSqlStmt.Wrap(err).WithValue(DB_NAME, db.dbName)
}
return tx.RowsAffected, nil
Expand Down Expand Up @@ -362,17 +362,17 @@ func (db *relationalDb) delete(ctx context.Context, tableName string, record Rec

if softDelete {
if err = tx.Delete(record).Error; err != nil {
db.logger.Error(err)
db.logger.Debug(err)
return 0, ErrExecutingSqlStmt.Wrap(err).WithValue(DB_NAME, db.dbName)
}
} else {
if err = tx.Unscoped().Delete(record).Error; err != nil {
db.logger.Error(err)
db.logger.Debug(err)
return 0, ErrExecutingSqlStmt.Wrap(err).WithValue(DB_NAME, db.dbName)
}
}
if err = tx.Commit().Error; err != nil {
db.logger.Error(err)
db.logger.Debug(err)
return 0, ErrExecutingSqlStmt.Wrap(err).WithValue(DB_NAME, db.dbName)
}
return tx.RowsAffected, nil
Expand All @@ -389,7 +389,7 @@ func (db *relationalDb) DropTables(records ...Record) error {
}
err = tx.Migrator().DropTable(record)
if err != nil {
db.logger.Error(err)
db.logger.Debug(err)
return ErrExecutingSqlStmt.Wrap(err).WithValue(DB_NAME, db.dbName)
}
}
Expand All @@ -409,7 +409,7 @@ func (db *relationalDb) TruncateCascade(cascade bool, tableNames ...string) (err
return err
}
if err = tx.Exec(stmt).Error; err != nil {
db.logger.Error(err)
db.logger.Debug(err)
return ErrExecutingSqlStmt.Wrap(err).WithValue(SQL_STMT, stmt).WithValue(DB_NAME, db.dbName)
}
}
Expand All @@ -419,12 +419,12 @@ func (db *relationalDb) TruncateCascade(cascade bool, tableNames ...string) (err

func (db *relationalDb) HasTable(tableName string) (bool, error) {
if tx, err := db.GetDBConn(dbrole.MAIN); err != nil {
db.logger.Error(err)
db.logger.Debug(err)
return false, err
} else {
exists := tx.Migrator().HasTable(tableName)
if err = tx.Error; err != nil {
db.logger.Error(err)
db.logger.Debug(err)
return exists, ErrExecutingSqlStmt.Wrap(err).WithValue(DB_NAME, db.dbName)
}
return exists, nil
Expand Down Expand Up @@ -456,15 +456,15 @@ func (db *relationalDb) UpsertInTable(ctx context.Context, tableName string, rec
defer rollbackTx(tx, db)

if err = tx.Clauses(clause.OnConflict{UpdateAll: true}).Create(record).Error; err != nil {
db.logger.Error(err)
db.logger.Debug(err)
if strings.Contains(err.Error(), REVISION_OUTDATED_MSG) {
return 0, ErrRevisionConflict.Wrap(err).WithValue(DB_NAME, db.dbName)
} else {
return 0, ErrExecutingSqlStmt.Wrap(err).WithValue(DB_NAME, db.dbName)
}
}
if err = tx.Commit().Error; err != nil {
db.logger.Error(err)
db.logger.Debug(err)
return 0, ErrExecutingSqlStmt.Wrap(err).WithValue(DB_NAME, db.dbName)
}
return tx.RowsAffected, nil
Expand All @@ -481,7 +481,7 @@ func (db *relationalDb) UpdateInTable(ctx context.Context, tableName string, rec
defer rollbackTx(tx, db)

if err = tx.Model(record).Select("*").Updates(record).Error; err != nil {
db.logger.Error(err)
db.logger.Debug(err)
if strings.Contains(err.Error(), REVISION_OUTDATED_MSG) {
err = ErrRevisionConflict.Wrap(err).WithValue(DB_NAME, db.dbName)
return 0, err
Expand All @@ -491,7 +491,7 @@ func (db *relationalDb) UpdateInTable(ctx context.Context, tableName string, rec
}
}
if err = tx.Commit().Error; err != nil {
db.logger.Error(err)
db.logger.Debug(err)
return 0, ErrExecutingSqlStmt.Wrap(err).WithValue(DB_NAME, db.dbName)
}
return tx.RowsAffected, nil
Expand Down Expand Up @@ -521,7 +521,7 @@ func (db *relationalDb) RegisterHelper(_ context.Context, roleMapping map[string
}
if err = tx.Table(tableName).AutoMigrate(record); err != nil {
err = ErrRegisteringStruct.Wrap(err).WithValue(TABLE_NAME, tableName).WithValue(DB_NAME, db.dbName)
db.logger.Error(err)
db.logger.Debug(err)
return err
}

Expand All @@ -545,7 +545,7 @@ func (db *relationalDb) RegisterHelper(_ context.Context, roleMapping map[string
TABLE_NAME: tableName,
SQL_STMT: stmt,
})
db.logger.Error(err)
db.logger.Debug(err)
return err
}
}
Expand Down Expand Up @@ -580,7 +580,7 @@ func (db *relationalDb) enforceRevisioning(tableName string) (err error) {
stmt := getDropTriggerStmt(tableName, functionName)
if err = tx.Exec(stmt).Error; err != nil {
err = ErrExecutingSqlStmt.Wrap(err).WithValue(SQL_STMT, stmt).WithValue(DB_NAME, db.dbName)
db.logger.Error(err)
db.logger.Debug(err)
return err
}

Expand All @@ -590,7 +590,7 @@ func (db *relationalDb) enforceRevisioning(tableName string) (err error) {
stmt = getCreateTriggerStmt(tableName, functionName)
if err = tx.Exec(stmt).Error; err != nil {
if !strings.Contains(err.Error(), "duplicate key value") {
db.logger.Error(err)
db.logger.Debug(err)
return ErrExecutingSqlStmt.Wrap(err).WithValue(SQL_STMT, stmt).WithValue(DB_NAME, db.dbName)
}
}
Expand All @@ -607,7 +607,7 @@ func (db *relationalDb) grantPrivileges(dbUser dbUserSpec, tableName string, rec
}
stmt := getGrantPrivilegesStmt(tableName, string(dbUser.username), dbUser.commands)
if err := tx.Exec(stmt).Error; err != nil {
db.logger.Error(err)
db.logger.Debug(err)
return ErrExecutingSqlStmt.Wrap(err).WithValue(SQL_STMT, stmt).WithValue(DB_NAME, db.dbName)
}

Expand All @@ -620,7 +620,7 @@ func (db *relationalDb) grantPrivileges(dbUser dbUserSpec, tableName string, rec
stmt = getCreatePolicyStmt(tableName, record, dbUser)
if err := tx.Exec(stmt).Error; err != nil {
err = ErrExecutingSqlStmt.Wrap(err).WithValue(SQL_STMT, stmt).WithValue(DB_NAME, db.dbName)
db.logger.Error(err)
db.logger.Debug(err)
return err
}
}
Expand Down
10 changes: 7 additions & 3 deletions pkg/errors/error_codes.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,12 @@ const (
)

func contextToString(ctx context.Context) string {
contextType := reflect.TypeOf(ctx).Elem()
if contextType.Kind() != reflect.Struct {
typ := reflect.TypeOf(ctx)
if fmt.Sprintf("XXX%s", typ) == "XXXcontext.backgroundCtx" {
return "" // Empty Background context case
}
contextElem := typ.Elem()
if contextElem.Kind() != reflect.Struct {
return ""
}

Expand All @@ -57,7 +61,7 @@ func contextToString(ctx context.Context) string {
reflectValue := contextValue.Field(i)
reflectValue = reflect.NewAt(reflectValue.Type(), unsafe.Pointer(reflectValue.UnsafeAddr())).Elem()

reflectField := contextType.Field(i)
reflectField := contextElem.Field(i)
switch reflectField.Name {
case "Context":
innerCtxStr := contextToString(reflectValue.Interface().(context.Context))
Expand Down
5 changes: 3 additions & 2 deletions pkg/protostore/protostore.go
Original file line number Diff line number Diff line change
Expand Up @@ -431,8 +431,9 @@ func (p ProtobufDataStore) DeleteById(ctx context.Context, id string, msg proto.

func (p ProtobufDataStore) DropTables(msgs ...proto.Message) error {
for _, msg := range msgs {
p.logger.Infof("Dropping Table for %s", msg)
err := p.ds.TestHelper().DropTables(datastore.GetTableName(msg))
tableName := datastore.GetTableName(msg)
p.logger.Infof("Dropping Table for %s", tableName)
err := p.ds.TestHelper().DropTables(tableName)
if err != nil {
return err
}
Expand Down

0 comments on commit 7b623b2

Please sign in to comment.