diff --git a/backend/pkg/projects/cache.go b/backend/pkg/projects/cache.go index 604d12476..c428f4844 100644 --- a/backend/pkg/projects/cache.go +++ b/backend/pkg/projects/cache.go @@ -3,9 +3,12 @@ package projects import ( "encoding/json" "fmt" - "github.com/pkg/errors" - "openreplay/backend/pkg/db/redis" "time" + + "github.com/pkg/errors" + + "openreplay/backend/pkg/db/redis" + "openreplay/backend/pkg/metrics/database" ) type Cache interface { @@ -24,16 +27,19 @@ func (c *cacheImpl) Set(project *Project) error { if c.db == nil { return ErrDisabledCache } + start := time.Now() projectBytes, err := json.Marshal(project) if err != nil { return err } - if _, err = c.db.Redis.Set(fmt.Sprintf("project:id:%d", project.ProjectID), projectBytes, time.Minute*20).Result(); err != nil { + if _, err = c.db.Redis.Set(fmt.Sprintf("project:id:%d", project.ProjectID), projectBytes, time.Minute*10).Result(); err != nil { return err } - if _, err = c.db.Redis.Set(fmt.Sprintf("project:key:%s", project.ProjectKey), projectBytes, time.Minute*20).Result(); err != nil { + if _, err = c.db.Redis.Set(fmt.Sprintf("project:key:%s", project.ProjectKey), projectBytes, time.Minute*10).Result(); err != nil { return err } + database.RecordRedisRequestDuration(float64(time.Now().Sub(start).Milliseconds()), "set", "project") + database.IncreaseRedisRequests("set", "project") return nil } @@ -41,10 +47,13 @@ func (c *cacheImpl) GetByID(projectID uint32) (*Project, error) { if c.db == nil { return nil, ErrDisabledCache } + start := time.Now() result, err := c.db.Redis.Get(fmt.Sprintf("project:id:%d", projectID)).Result() if err != nil { return nil, err } + database.RecordRedisRequestDuration(float64(time.Now().Sub(start).Milliseconds()), "get", "project") + database.IncreaseRedisRequests("get", "project") project := &Project{} if err = json.Unmarshal([]byte(result), project); err != nil { return nil, err @@ -56,10 +65,13 @@ func (c *cacheImpl) GetByKey(projectKey string) (*Project, error) { if c.db == nil { return nil, ErrDisabledCache } + start := time.Now() result, err := c.db.Redis.Get(fmt.Sprintf("project:key:%s", projectKey)).Result() if err != nil { return nil, err } + database.RecordRedisRequestDuration(float64(time.Now().Sub(start).Milliseconds()), "get", "project") + database.IncreaseRedisRequests("get", "project") project := &Project{} if err = json.Unmarshal([]byte(result), project); err != nil { return nil, err diff --git a/backend/pkg/projects/projects.go b/backend/pkg/projects/projects.go index 783a3ee8f..2a71f0792 100644 --- a/backend/pkg/projects/projects.go +++ b/backend/pkg/projects/projects.go @@ -3,10 +3,11 @@ package projects import ( "errors" "log" + "time" + "openreplay/backend/pkg/cache" "openreplay/backend/pkg/db/postgres/pool" "openreplay/backend/pkg/db/redis" - "time" ) type Projects interface { diff --git a/backend/pkg/projects/storage.go b/backend/pkg/projects/storage.go index 48ff477d5..a4d8d9bcc 100644 --- a/backend/pkg/projects/storage.go +++ b/backend/pkg/projects/storage.go @@ -3,12 +3,16 @@ package projects func (c *projectsImpl) getProjectByKey(projectKey string) (*Project, error) { p := &Project{ProjectKey: projectKey} if err := c.db.QueryRow(` - SELECT max_session_duration, sample_rate, project_id, beacon_size + SELECT project_id, max_session_duration, save_request_payloads, sample_rate, beacon_size, + metadata_1, metadata_2, metadata_3, metadata_4, metadata_5, + metadata_6, metadata_7, metadata_8, metadata_9, metadata_10 FROM projects WHERE project_key=$1 AND active = true `, projectKey, - ).Scan(&p.MaxSessionDuration, &p.SampleRate, &p.ProjectID, &p.BeaconSize); err != nil { + ).Scan(&p.ProjectID, &p.MaxSessionDuration, &p.SaveRequestPayloads, &p.SampleRate, &p.BeaconSize, + &p.Metadata1, &p.Metadata2, &p.Metadata3, &p.Metadata4, &p.Metadata5, + &p.Metadata6, &p.Metadata7, &p.Metadata8, &p.Metadata9, &p.Metadata10); err != nil { return nil, err } return p, nil @@ -17,14 +21,14 @@ func (c *projectsImpl) getProjectByKey(projectKey string) (*Project, error) { func (c *projectsImpl) getProject(projectID uint32) (*Project, error) { p := &Project{ProjectID: projectID} if err := c.db.QueryRow(` - SELECT project_key, max_session_duration, save_request_payloads, + SELECT project_key, max_session_duration, save_request_payloads, sample_rate, beacon_size, metadata_1, metadata_2, metadata_3, metadata_4, metadata_5, metadata_6, metadata_7, metadata_8, metadata_9, metadata_10 FROM projects WHERE project_id=$1 AND active = true `, projectID, - ).Scan(&p.ProjectKey, &p.MaxSessionDuration, &p.SaveRequestPayloads, + ).Scan(&p.ProjectKey, &p.MaxSessionDuration, &p.SaveRequestPayloads, &p.SampleRate, &p.BeaconSize, &p.Metadata1, &p.Metadata2, &p.Metadata3, &p.Metadata4, &p.Metadata5, &p.Metadata6, &p.Metadata7, &p.Metadata8, &p.Metadata9, &p.Metadata10); err != nil { return nil, err