Loading go.mod +5 −6 Original line number Diff line number Diff line Loading @@ -5,7 +5,6 @@ go 1.16 require ( github.com/blevesearch/bleve/v2 v2.0.3 github.com/blevesearch/upsidedown_store_api v1.0.1 github.com/cockroachdb/apd v1.1.0 // indirect github.com/dgrijalva/jwt-go v3.2.1-0.20200107013213-dc14462fd587+incompatible github.com/dop251/goja v0.0.0-20210406175830-1b11a6af686d github.com/glycerine/go-unsnap-stream v0.0.0-20190901134440-81cf024a9e0a // indirect Loading @@ -15,15 +14,15 @@ require ( github.com/gorilla/websocket v1.4.2 github.com/grpc-ecosystem/grpc-gateway/v2 v2.3.0 github.com/heroiclabs/nakama-common v1.14.0 github.com/jackc/fake v0.0.0-20150926172116-812a484cc733 // indirect github.com/jackc/pgx v3.5.0+incompatible github.com/jackc/pgconn v1.8.1 github.com/jackc/pgerrcode v0.0.0-20201024163028-a0d42d470451 github.com/jackc/pgtype v1.7.0 github.com/jackc/pgx/v4 v4.11.0 github.com/m3db/prometheus_client_golang v0.8.1 // indirect github.com/m3db/prometheus_client_model v0.1.0 // indirect github.com/m3db/prometheus_common v0.1.0 // indirect github.com/m3db/prometheus_procfs v0.8.1 // indirect github.com/rubenv/sql-migrate v0.0.0-20210408115534-a32ed26c37ea github.com/satori/go.uuid v1.2.0 // indirect github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24 // indirect github.com/steveyen/gtreap v0.1.0 github.com/stretchr/testify v1.7.0 github.com/tinylib/msgp v1.1.2 // indirect Loading @@ -31,7 +30,7 @@ require ( github.com/ziutek/mymysql v1.5.4 // indirect go.uber.org/atomic v1.7.0 go.uber.org/zap v1.16.0 golang.org/x/crypto v0.0.0-20210415154028-4f45737414dc golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf google.golang.org/genproto v0.0.0-20210224155714-063164c882e6 google.golang.org/grpc v1.37.0 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 Loading go.sum +237 −10 File changed.Preview size limit exceeded, changes collapsed. Show changes main.go +4 −5 Original line number Diff line number Diff line Loading @@ -34,12 +34,11 @@ import ( "path/filepath" "github.com/gofrs/uuid" "github.com/heroiclabs/nakama/v3/ga" "github.com/heroiclabs/nakama/v3/migrate" "github.com/heroiclabs/nakama/v3/server" "github.com/heroiclabs/nakama/v3/social" _ "github.com/jackc/pgx/stdlib" _ "github.com/jackc/pgx/v4/stdlib" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) Loading Loading @@ -108,12 +107,12 @@ func main() { redactedAddresses := make([]string, 0, 1) for _, address := range config.GetDatabase().Addresses { rawURL := fmt.Sprintf("postgresql://%s", address) rawURL := fmt.Sprintf("postgres://%s", address) parsedURL, err := url.Parse(rawURL) if err != nil { logger.Fatal("Bad connection URL", zap.Error(err)) } redactedAddresses = append(redactedAddresses, strings.TrimPrefix(parsedURL.Redacted(), "postgresql://")) redactedAddresses = append(redactedAddresses, strings.TrimPrefix(parsedURL.Redacted(), "postgres://")) } startupLogger.Info("Database connections", zap.Strings("dsns", redactedAddresses)) Loading @@ -128,7 +127,7 @@ func main() { // Start up server components. cookie := newOrLoadCookie(config) metrics := server.NewMetrics(logger, startupLogger, config) metrics := server.NewMetrics(logger, startupLogger, db, config) sessionRegistry := server.NewLocalSessionRegistry(metrics) sessionCache := server.NewLocalSessionCache(config) statusRegistry := server.NewStatusRegistry(logger, config, sessionRegistry, jsonpbMarshaler) Loading migrate/migrate.go +41 −32 Original line number Diff line number Diff line Loading @@ -17,8 +17,12 @@ package migrate import ( "database/sql" "embed" "errors" "flag" "fmt" "github.com/jackc/pgconn" "github.com/jackc/pgerrcode" _ "github.com/jackc/pgx/v4/stdlib" "io/ioutil" "math" "net/url" Loading @@ -27,8 +31,6 @@ import ( "strings" "time" "github.com/jackc/pgx" _ "github.com/jackc/pgx/stdlib" // Blank import to register SQL driver migrate "github.com/rubenv/sql-migrate" "go.uber.org/zap" "go.uber.org/zap/zapcore" Loading @@ -37,8 +39,7 @@ import ( ) const ( dbErrorDatabaseDoesNotExist = "3D000" dbErrorDuplicateDatabase = "42P04" dbErrorDatabaseDoesNotExist = pgerrcode.InvalidCatalogName migrationTable = "migration_info" dialect = "postgres" defaultLimit = -1 Loading Loading @@ -185,10 +186,19 @@ func Parse(args []string, tmpLogger *zap.Logger) { logger.Fatal("Failed to open database", zap.Error(err)) } var dbVersion string if err = db.QueryRow("SELECT version()").Scan(&dbVersion); err != nil { if e, ok := err.(pgx.PgError); ok && e.Code == dbErrorDatabaseDoesNotExist { // Database does not exist, try to create a new one var nakamaDBExists bool if err = db.QueryRow("SELECT EXISTS (SELECT 1 from pg_database WHERE datname = $1)", dbname).Scan(&nakamaDBExists); err != nil { var pgErr *pgconn.PgError if errors.As(err, &pgErr) && pgErr.Code == dbErrorDatabaseDoesNotExist { nakamaDBExists = false } else { db.Close() logger.Fatal("Failed to check if db exists", zap.String("db", dbname), zap.Error(err)) } } if !nakamaDBExists { // Database does not exist, create it logger.Info("Creating new database", zap.String("name", dbname)) db.Close() // Connect to anonymous db Loading @@ -208,16 +218,15 @@ func Parse(args []string, tmpLogger *zap.Logger) { db.Close() logger.Fatal("Failed to open database", zap.Error(err)) } // Reattempt to get database version if err = db.QueryRow("SELECT version()").Scan(&dbVersion); err != nil { db.Close() logger.Fatal("Error querying database version", zap.Error(err)) } } else { // Get database version var dbVersion string if err = db.QueryRow("SELECT version()").Scan(&dbVersion); err != nil { db.Close() logger.Fatal("Error querying database version", zap.Error(err)) } } logger.Info("Database information", zap.String("version", dbVersion)) if err = db.Ping(); err != nil { Loading server/api_account.go +4 −2 Original line number Diff line number Diff line Loading @@ -16,9 +16,10 @@ package server import ( "context" "errors" "github.com/gofrs/uuid" "github.com/heroiclabs/nakama-common/api" "github.com/jackc/pgx" "github.com/jackc/pgconn" "go.uber.org/zap" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" Loading Loading @@ -114,7 +115,8 @@ func (s *ApiServer) UpdateAccount(ctx context.Context, in *api.UpdateAccountRequ metadata: nil, }}) if err != nil { if _, ok := err.(pgx.PgError); ok { var pgErr *pgconn.PgError if errors.As(err, &pgErr) { return nil, status.Error(codes.Internal, "Error while trying to update account.") } return nil, status.Error(codes.InvalidArgument, err.Error()) Loading Loading
go.mod +5 −6 Original line number Diff line number Diff line Loading @@ -5,7 +5,6 @@ go 1.16 require ( github.com/blevesearch/bleve/v2 v2.0.3 github.com/blevesearch/upsidedown_store_api v1.0.1 github.com/cockroachdb/apd v1.1.0 // indirect github.com/dgrijalva/jwt-go v3.2.1-0.20200107013213-dc14462fd587+incompatible github.com/dop251/goja v0.0.0-20210406175830-1b11a6af686d github.com/glycerine/go-unsnap-stream v0.0.0-20190901134440-81cf024a9e0a // indirect Loading @@ -15,15 +14,15 @@ require ( github.com/gorilla/websocket v1.4.2 github.com/grpc-ecosystem/grpc-gateway/v2 v2.3.0 github.com/heroiclabs/nakama-common v1.14.0 github.com/jackc/fake v0.0.0-20150926172116-812a484cc733 // indirect github.com/jackc/pgx v3.5.0+incompatible github.com/jackc/pgconn v1.8.1 github.com/jackc/pgerrcode v0.0.0-20201024163028-a0d42d470451 github.com/jackc/pgtype v1.7.0 github.com/jackc/pgx/v4 v4.11.0 github.com/m3db/prometheus_client_golang v0.8.1 // indirect github.com/m3db/prometheus_client_model v0.1.0 // indirect github.com/m3db/prometheus_common v0.1.0 // indirect github.com/m3db/prometheus_procfs v0.8.1 // indirect github.com/rubenv/sql-migrate v0.0.0-20210408115534-a32ed26c37ea github.com/satori/go.uuid v1.2.0 // indirect github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24 // indirect github.com/steveyen/gtreap v0.1.0 github.com/stretchr/testify v1.7.0 github.com/tinylib/msgp v1.1.2 // indirect Loading @@ -31,7 +30,7 @@ require ( github.com/ziutek/mymysql v1.5.4 // indirect go.uber.org/atomic v1.7.0 go.uber.org/zap v1.16.0 golang.org/x/crypto v0.0.0-20210415154028-4f45737414dc golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf google.golang.org/genproto v0.0.0-20210224155714-063164c882e6 google.golang.org/grpc v1.37.0 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 Loading
main.go +4 −5 Original line number Diff line number Diff line Loading @@ -34,12 +34,11 @@ import ( "path/filepath" "github.com/gofrs/uuid" "github.com/heroiclabs/nakama/v3/ga" "github.com/heroiclabs/nakama/v3/migrate" "github.com/heroiclabs/nakama/v3/server" "github.com/heroiclabs/nakama/v3/social" _ "github.com/jackc/pgx/stdlib" _ "github.com/jackc/pgx/v4/stdlib" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) Loading Loading @@ -108,12 +107,12 @@ func main() { redactedAddresses := make([]string, 0, 1) for _, address := range config.GetDatabase().Addresses { rawURL := fmt.Sprintf("postgresql://%s", address) rawURL := fmt.Sprintf("postgres://%s", address) parsedURL, err := url.Parse(rawURL) if err != nil { logger.Fatal("Bad connection URL", zap.Error(err)) } redactedAddresses = append(redactedAddresses, strings.TrimPrefix(parsedURL.Redacted(), "postgresql://")) redactedAddresses = append(redactedAddresses, strings.TrimPrefix(parsedURL.Redacted(), "postgres://")) } startupLogger.Info("Database connections", zap.Strings("dsns", redactedAddresses)) Loading @@ -128,7 +127,7 @@ func main() { // Start up server components. cookie := newOrLoadCookie(config) metrics := server.NewMetrics(logger, startupLogger, config) metrics := server.NewMetrics(logger, startupLogger, db, config) sessionRegistry := server.NewLocalSessionRegistry(metrics) sessionCache := server.NewLocalSessionCache(config) statusRegistry := server.NewStatusRegistry(logger, config, sessionRegistry, jsonpbMarshaler) Loading
migrate/migrate.go +41 −32 Original line number Diff line number Diff line Loading @@ -17,8 +17,12 @@ package migrate import ( "database/sql" "embed" "errors" "flag" "fmt" "github.com/jackc/pgconn" "github.com/jackc/pgerrcode" _ "github.com/jackc/pgx/v4/stdlib" "io/ioutil" "math" "net/url" Loading @@ -27,8 +31,6 @@ import ( "strings" "time" "github.com/jackc/pgx" _ "github.com/jackc/pgx/stdlib" // Blank import to register SQL driver migrate "github.com/rubenv/sql-migrate" "go.uber.org/zap" "go.uber.org/zap/zapcore" Loading @@ -37,8 +39,7 @@ import ( ) const ( dbErrorDatabaseDoesNotExist = "3D000" dbErrorDuplicateDatabase = "42P04" dbErrorDatabaseDoesNotExist = pgerrcode.InvalidCatalogName migrationTable = "migration_info" dialect = "postgres" defaultLimit = -1 Loading Loading @@ -185,10 +186,19 @@ func Parse(args []string, tmpLogger *zap.Logger) { logger.Fatal("Failed to open database", zap.Error(err)) } var dbVersion string if err = db.QueryRow("SELECT version()").Scan(&dbVersion); err != nil { if e, ok := err.(pgx.PgError); ok && e.Code == dbErrorDatabaseDoesNotExist { // Database does not exist, try to create a new one var nakamaDBExists bool if err = db.QueryRow("SELECT EXISTS (SELECT 1 from pg_database WHERE datname = $1)", dbname).Scan(&nakamaDBExists); err != nil { var pgErr *pgconn.PgError if errors.As(err, &pgErr) && pgErr.Code == dbErrorDatabaseDoesNotExist { nakamaDBExists = false } else { db.Close() logger.Fatal("Failed to check if db exists", zap.String("db", dbname), zap.Error(err)) } } if !nakamaDBExists { // Database does not exist, create it logger.Info("Creating new database", zap.String("name", dbname)) db.Close() // Connect to anonymous db Loading @@ -208,16 +218,15 @@ func Parse(args []string, tmpLogger *zap.Logger) { db.Close() logger.Fatal("Failed to open database", zap.Error(err)) } // Reattempt to get database version if err = db.QueryRow("SELECT version()").Scan(&dbVersion); err != nil { db.Close() logger.Fatal("Error querying database version", zap.Error(err)) } } else { // Get database version var dbVersion string if err = db.QueryRow("SELECT version()").Scan(&dbVersion); err != nil { db.Close() logger.Fatal("Error querying database version", zap.Error(err)) } } logger.Info("Database information", zap.String("version", dbVersion)) if err = db.Ping(); err != nil { Loading
server/api_account.go +4 −2 Original line number Diff line number Diff line Loading @@ -16,9 +16,10 @@ package server import ( "context" "errors" "github.com/gofrs/uuid" "github.com/heroiclabs/nakama-common/api" "github.com/jackc/pgx" "github.com/jackc/pgconn" "go.uber.org/zap" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" Loading Loading @@ -114,7 +115,8 @@ func (s *ApiServer) UpdateAccount(ctx context.Context, in *api.UpdateAccountRequ metadata: nil, }}) if err != nil { if _, ok := err.(pgx.PgError); ok { var pgErr *pgconn.PgError if errors.As(err, &pgErr) { return nil, status.Error(codes.Internal, "Error while trying to update account.") } return nil, status.Error(codes.InvalidArgument, err.Error()) Loading