From d9be04541b3a2eb7b104501c3128e1139684a5d8 Mon Sep 17 00:00:00 2001 From: mountain Date: Fri, 25 Aug 2023 11:39:17 +0900 Subject: [PATCH] =?UTF-8?q?prepare=20=EB=A1=9C=EA=B7=B8=20=EC=9E=90?= =?UTF-8?q?=EC=84=B8=ED=9E=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/maingate.go | 53 +++++++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/core/maingate.go b/core/maingate.go index 1f22c67..4883098 100644 --- a/core/maingate.go +++ b/core/maingate.go @@ -13,6 +13,7 @@ import ( "net" "net/http" "os" + "runtime/debug" "strings" "sync/atomic" "time" @@ -207,7 +208,6 @@ func New(ctx context.Context) (*Maingate, error) { err := mg.prepare(ctx) if err != nil { - logger.Error("mg.prepare() failed :", err) return nil, err } @@ -287,95 +287,98 @@ func (mg *Maingate) discoverOpenIdConfiguration(name string, url string) error { } +func makeErrorWithStack(err error) error { + return fmt.Errorf("%s\n%s", err.Error(), string(debug.Stack())) +} + func (mg *Maingate) prepare(context context.Context) (err error) { if err := mg.discoverOpenIdConfiguration(AuthPlatformMicrosoft, "https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration"); err != nil { - return err + return makeErrorWithStack(err) } if err := mg.discoverOpenIdConfiguration("google", "https://accounts.google.com/.well-known/openid-configuration"); err != nil { - return err + return makeErrorWithStack(err) } // redis에서 env를 가져온 후에 mg.mongoClient, err = gocommon.NewMongoClient(context, mg.Mongo, "maingate") if err != nil { - return err + return makeErrorWithStack(err) } if err = mg.mongoClient.MakeUniqueIndices(CollectionAuth, map[string]bson.D{ "skonly": {{Key: "sk", Value: 1}}, }); err != nil { - return err + return makeErrorWithStack(err) } if err = mg.mongoClient.MakeUniqueIndices(CollectionLink, map[string]bson.D{ "platformuid": {{Key: "platform", Value: 1}, {Key: "uid", Value: 1}}, }); err != nil { - return err + return makeErrorWithStack(err) } if err = mg.mongoClient.MakeUniqueIndices(CollectionLink, map[string]bson.D{ "emailplatform": {{Key: "email", Value: 1}, {Key: "platform", Value: 1}}, }); err != nil { - return err + return makeErrorWithStack(err) } if err = mg.mongoClient.MakeIndices(CollectionAccount, map[string]bson.D{ "accid": {{Key: "accid", Value: 1}}, }); err != nil { - return err + return makeErrorWithStack(err) } if err = mg.mongoClient.MakeUniqueIndices(CollectionFile, map[string]bson.D{ "keyonly": {{Key: "key", Value: 1}}, }); err != nil { - return err + return makeErrorWithStack(err) } // Delete대신 _ts로 expire시킴. pipeline에 삭제 알려주기 위함 if err = mg.mongoClient.MakeExpireIndex(CollectionWhitelist, 10); err != nil { - return err + return makeErrorWithStack(err) } if err = mg.mongoClient.MakeExpireIndex(CollectionAuth, int32(mg.SessionTTL+300)); err != nil { - return err + return makeErrorWithStack(err) } if *devflag { - if err = mg.mongoClient.DropIndex(CollectionBlock, "codeaccid"); err != nil { - return err - } + // 에러 체크하지 말것 + mg.mongoClient.DropIndex(CollectionBlock, "codeaccid") } if err = mg.mongoClient.MakeExpireIndex(CollectionBlock, int32(3)); err != nil { - return err + return makeErrorWithStack(err) } if err = mg.mongoClient.MakeUniqueIndices(CollectionPlatformLoginToken, map[string]bson.D{ "platformauthtoken": {{Key: "platform", Value: 1}, {Key: "key", Value: 1}}, }); err != nil { - return err + return makeErrorWithStack(err) } if err = mg.mongoClient.MakeExpireIndex(CollectionPlatformLoginToken, int32(mg.SessionTTL+300)); err != nil { - return err + return makeErrorWithStack(err) } if err = mg.mongoClient.MakeUniqueIndices(CollectionUserToken, map[string]bson.D{ "platformusertoken": {{Key: "platform", Value: 1}, {Key: "userid", Value: 1}}, }); err != nil { - return err + return makeErrorWithStack(err) } if err = mg.mongoClient.MakeUniqueIndices(CollectionGamepotUserInfo, map[string]bson.D{ "gamepotuserid": {{Key: "gamepotuserid", Value: 1}}, }); err != nil { - return err + return makeErrorWithStack(err) } if err = mg.mongoClient.MakeUniqueIndices(CollectionFirebaseUserInfo, map[string]bson.D{ "firebaseuserid": {{Key: "firebaseuserid", Value: 1}}, }); err != nil { - return err + return makeErrorWithStack(err) } mg.auths = makeAuthCollection(mg.mongoClient, time.Duration(mg.SessionTTL*int64(time.Second))) @@ -387,7 +390,7 @@ func (mg *Maingate) prepare(context context.Context) (err error) { if err = mg.mongoClient.FindAllAs(CollectionFile, nil, &preall, options.Find().SetProjection(bson.M{ "link": 1, })); err != nil { - return err + return makeErrorWithStack(err) } for _, pre := range preall { @@ -402,23 +405,23 @@ func (mg *Maingate) prepare(context context.Context) (err error) { "_id": pre.Id, }, &fulldoc) if err != nil { - return err + return makeErrorWithStack(err) } err = fulldoc.Save() if err != nil { - return err + return makeErrorWithStack(err) } } var whites []*whitelistmember if err := mg.mongoClient.AllAs(CollectionWhitelist, &whites, options.Find().SetReturnKey(false)); err != nil { - return err + return makeErrorWithStack(err) } mg.wl.init(whites) var blocks []*blockinfo if err := mg.mongoClient.AllAs(CollectionBlock, &blocks); err != nil { - return err + return makeErrorWithStack(err) } mg.bl.init(blocks)