[feature] Add a request ID and include it in logs (#1476)

This adds a lightweight form of tracing to GTS. Each incoming request is
assigned a Request ID which we then pass on and log in all our log
lines. Any function that gets called downstream from an HTTP handler
should now emit a requestID=value pair whenever it logs something.

Co-authored-by: kim <grufwub@gmail.com>
This commit is contained in:
Daenney 2023-02-17 12:02:29 +01:00 committed by GitHub
commit 68e6d08c76
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
118 changed files with 813 additions and 591 deletions

View file

@ -93,7 +93,7 @@ func NewTestDB() db.DB {
testDB, err := bundb.NewBunDBService(context.Background(), &state)
if err != nil {
log.Panic(err)
log.Panic(nil, err)
}
state.DB = testDB
@ -106,7 +106,7 @@ func CreateTestTables(db db.DB) {
ctx := context.Background()
for _, m := range testModels {
if err := db.CreateTable(ctx, m); err != nil {
log.Panicf("error creating table for %+v: %s", m, err)
log.Panicf(nil, "error creating table for %+v: %s", m, err)
}
}
}
@ -121,7 +121,7 @@ func CreateTestTables(db db.DB) {
// verification will fail.
func StandardDBSetup(db db.DB, accounts map[string]*gtsmodel.Account) {
if db == nil {
log.Panic("db setup: db was nil")
log.Panic(nil, "db setup: db was nil")
}
CreateTestTables(db)
@ -130,164 +130,164 @@ func StandardDBSetup(db db.DB, accounts map[string]*gtsmodel.Account) {
for _, v := range NewTestTokens() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
for _, v := range NewTestClients() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
for _, v := range NewTestApplications() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
for _, v := range NewTestBlocks() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
for _, v := range NewTestReports() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
for _, v := range NewTestDomainBlocks() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
for _, v := range NewTestInstances() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
for _, v := range NewTestUsers() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
if accounts == nil {
for _, v := range NewTestAccounts() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
} else {
for _, v := range accounts {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
}
for _, v := range NewTestAttachments() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
for _, v := range NewTestStatuses() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
for _, v := range NewTestEmojis() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
for _, v := range NewTestEmojiCategories() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
for _, v := range NewTestStatusToEmojis() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
for _, v := range NewTestTags() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
for _, v := range NewTestStatusToTags() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
for _, v := range NewTestMentions() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
for _, v := range NewTestFaves() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
for _, v := range NewTestFollows() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
for _, v := range NewTestNotifications() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
for _, v := range NewTestTombstones() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
for _, v := range NewTestBookmarks() {
if err := db.Put(ctx, v); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
if err := db.CreateInstanceAccount(ctx); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
if err := db.CreateInstanceInstance(ctx); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
log.Debug("testing db setup complete")
log.Debug(nil, "testing db setup complete")
}
// StandardDBTeardown drops all the standard testing tables/models from the database to ensure it's clean for the next test.
func StandardDBTeardown(db db.DB) {
ctx := context.Background()
if db == nil {
log.Panic("db teardown: db was nil")
log.Panic(nil, "db was nil")
}
for _, m := range testModels {
if err := db.DropTable(ctx, m); err != nil {
log.Panic(err)
log.Panic(nil, err)
}
}
}