Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-01-06 15:07:56 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-01-06 15:07:56 +0300
commit045c0f9554a99c80d0a127540da168e272a9f977 (patch)
tree2c4b0d10c9432e68b6c1aca2097e663ba18b48ec
parent669c24d9276db9a73bbcea40aeab98273aae9e5e (diff)
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--.gitlab/ci/notifications.gitlab-ci.yml18
-rw-r--r--.gitlab/ci/qa.gitlab-ci.yml20
-rw-r--r--.gitlab/ci/review.gitlab-ci.yml22
-rw-r--r--app/assets/javascripts/cycle_analytics/cycle_analytics_store.js2
-rw-r--r--app/assets/javascripts/main.js11
-rw-r--r--app/assets/stylesheets/disable_animations.scss (renamed from app/assets/stylesheets/test.scss)0
-rw-r--r--app/controllers/projects/issues_controller.rb2
-rw-r--r--app/views/layouts/_head.html.haml2
-rw-r--r--app/views/projects/cycle_analytics/show.html.haml2
-rw-r--r--changelogs/unreleased/119205-500-when-error-stack-trace-is-empty.yml5
-rw-r--r--changelogs/unreleased/cache-ref-names-in-discussion-endpoint.yml5
-rw-r--r--changelogs/unreleased/shl-disable-animations-config.yml5
-rw-r--r--config/application.rb2
-rw-r--r--config/gitlab.yml.example5
-rw-r--r--doc/development/cycle_analytics.md4
-rw-r--r--doc/development/pipelines.md11
-rw-r--r--doc/development/testing_guide/end_to_end/index.md8
-rw-r--r--doc/development/testing_guide/end_to_end/page_objects.md6
-rw-r--r--doc/user/analytics/cycle_analytics.md16
-rw-r--r--lib/gitlab/cycle_analytics/production_stage.rb2
-rw-r--r--lib/gitlab/gon_helper.rb1
-rw-r--r--lib/sentry/client.rb6
-rw-r--r--locale/gitlab.pot12
-rw-r--r--qa/README.md2
-rw-r--r--spec/features/cycle_analytics_spec.rb2
-rw-r--r--spec/fixtures/sentry/issue_latest_event_no_stack_sample_response.json300
-rw-r--r--spec/fixtures/sentry/issue_latest_event_sample_response.json5299
-rw-r--r--spec/lib/gitlab/cycle_analytics/production_stage_spec.rb2
-rw-r--r--spec/lib/sentry/client_spec.rb58
29 files changed, 5757 insertions, 73 deletions
diff --git a/.gitlab/ci/notifications.gitlab-ci.yml b/.gitlab/ci/notifications.gitlab-ci.yml
index 0cf38d2258a..1ec61acdfca 100644
--- a/.gitlab/ci/notifications.gitlab-ci.yml
+++ b/.gitlab/ci/notifications.gitlab-ci.yml
@@ -1,3 +1,7 @@
+# Make sure to update all the similar conditions in other CI config files if you modify these conditions
+.if-canonical-gitlab-schedule: &if-canonical-gitlab-schedule
+ if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE =~ /^gitlab-org($|\/)/ && $CI_PIPELINE_SOURCE == "schedule"'
+
.notify:
image: ruby:2.6-alpine
stage: notification
@@ -11,13 +15,13 @@
variables:
COMMIT_NOTES_URL: "https://${CI_SERVER_HOST}/${CI_PROJECT_PATH}/commit/${CI_COMMIT_SHA}#notes-list"
-schedule:package-and-qa:notify-failure:
- extends:
- - .only:variables_refs-canonical-dot-com-schedules
- - .notify
+package-and-qa:notify-failure:
+ extends: .notify
+ rules:
+ - <<: *if-canonical-gitlab-schedule
+ when: manual # TODO: remove notify job if not necessary
script:
- 'export NOTIFICATION_MESSAGE=":skull_and_crossbones: Scheduled QA against master failed! :skull_and_crossbones: See ${CI_PIPELINE_URL}. For downstream pipelines, see ${COMMIT_NOTES_URL}"'
- - 'notify_on_job_failure schedule:package-and-qa qa-master "${NOTIFICATION_MESSAGE}" ci_failing'
- needs: ["schedule:package-and-qa"]
+ - 'notify_on_job_failure package-and-qa qa-master "${NOTIFICATION_MESSAGE}" ci_failing'
+ needs: ["package-and-qa"]
allow_failure: true
- when: manual # TODO: remove notify job if not necessary
diff --git a/.gitlab/ci/qa.gitlab-ci.yml b/.gitlab/ci/qa.gitlab-ci.yml
index e9a3cd0da90..0c7d2318009 100644
--- a/.gitlab/ci/qa.gitlab-ci.yml
+++ b/.gitlab/ci/qa.gitlab-ci.yml
@@ -1,5 +1,9 @@
# Make sure to update all the similar conditions in other CI config files if you modify these conditions
-.if-canonical-gitlab-and-merge-request: &if-canonical-gitlab-and-merge-request
+.if-canonical-gitlab-schedule: &if-canonical-gitlab-schedule
+ if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE =~ /^gitlab-org($|\/)/ && $CI_PIPELINE_SOURCE == "schedule"'
+
+# Make sure to update all the similar conditions in other CI config files if you modify these conditions
+.if-canonical-gitlab-merge-request: &if-canonical-gitlab-merge-request
if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE =~ /^gitlab-org($|\/)/ && $CI_MERGE_REQUEST_IID'
# Make sure to update all the similar patterns in other CI config files if you modify these patterns
@@ -68,19 +72,13 @@ qa:selectors-foss:
package-and-qa:
extends: .package-and-qa-base
rules:
- - <<: *if-canonical-gitlab-and-merge-request
+ - <<: *if-canonical-gitlab-merge-request
changes: *qa-patterns
when: on_success
- - <<: *if-canonical-gitlab-and-merge-request
+ - <<: *if-canonical-gitlab-merge-request
changes: *code-patterns
when: manual
- needs: ["build-qa-image", "gitlab:assets:compile pull-cache"]
- allow_failure: true
-
-schedule:package-and-qa:
- extends:
- - .package-and-qa-base
- - .default-only
- - .only:variables_refs-canonical-dot-com-schedules
+ - <<: *if-canonical-gitlab-schedule
+ when: on_success
needs: ["build-qa-image", "gitlab:assets:compile pull-cache"]
allow_failure: true
diff --git a/.gitlab/ci/review.gitlab-ci.yml b/.gitlab/ci/review.gitlab-ci.yml
index 43686a5c8e7..a42a927c6b9 100644
--- a/.gitlab/ci/review.gitlab-ci.yml
+++ b/.gitlab/ci/review.gitlab-ci.yml
@@ -1,9 +1,9 @@
# Make sure to update all the similar conditions in other CI config files if you modify these conditions
-.if-canonical-gitlab: &if-canonical-gitlab
- if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE =~ /^gitlab-org($|\/)/'
+.if-canonical-gitlab-schedule: &if-canonical-gitlab-schedule
+ if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE =~ /^gitlab-org($|\/)/ && $CI_PIPELINE_SOURCE == "schedule"'
# Make sure to update all the similar conditions in other CI config files if you modify these conditions
-.if-canonical-gitlab-and-merge-request: &if-canonical-gitlab-and-merge-request
+.if-canonical-gitlab-merge-request: &if-canonical-gitlab-merge-request
if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE =~ /^gitlab-org($|\/)/ && $CI_MERGE_REQUEST_IID'
# Make sure to update all the similar patterns in other CI config files if you modify these patterns
@@ -44,9 +44,11 @@ build-qa-image:
extends: .review-docker
stage: prepare
rules:
- - <<: *if-canonical-gitlab
+ - <<: *if-canonical-gitlab-merge-request
changes: *code-qa-patterns
when: on_success
+ - <<: *if-canonical-gitlab-schedule
+ when: on_success
script:
- '[[ ! -d "ee/" ]] || export GITLAB_EDITION="ee"'
- export QA_MASTER_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab/gitlab-${GITLAB_EDITION}-qa:master"
@@ -157,7 +159,7 @@ schedule:review-build-cng:
review-deploy:
extends: .review-deploy-base
rules:
- - <<: *if-canonical-gitlab-and-merge-request
+ - <<: *if-canonical-gitlab-merge-request
changes: *code-qa-patterns
when: on_success
@@ -184,7 +186,7 @@ review-stop-failed-deployment:
extends: .base-review-stop
stage: prepare
rules:
- - <<: *if-canonical-gitlab-and-merge-request
+ - <<: *if-canonical-gitlab-merge-request
changes: *code-qa-patterns
when: on_success
script:
@@ -194,7 +196,7 @@ review-stop:
extends: .base-review-stop
stage: review
rules:
- - <<: *if-canonical-gitlab-and-merge-request
+ - <<: *if-canonical-gitlab-merge-request
changes: *code-qa-patterns
when: manual
allow_failure: true
@@ -235,7 +237,7 @@ review-stop:
review-qa-smoke:
extends: .review-qa-base
rules:
- - <<: *if-canonical-gitlab-and-merge-request
+ - <<: *if-canonical-gitlab-merge-request
changes: *code-qa-patterns
when: on_success
script:
@@ -244,7 +246,7 @@ review-qa-smoke:
review-qa-all:
extends: .review-qa-base
rules:
- - <<: *if-canonical-gitlab-and-merge-request
+ - <<: *if-canonical-gitlab-merge-request
changes: *code-qa-patterns
when: manual
parallel: 5
@@ -276,7 +278,7 @@ review-qa-all:
review-performance:
extends: .review-performance-base
rules:
- - <<: *if-canonical-gitlab-and-merge-request
+ - <<: *if-canonical-gitlab-merge-request
changes: *code-qa-patterns
when: on_success
needs: ["review-deploy"]
diff --git a/app/assets/javascripts/cycle_analytics/cycle_analytics_store.js b/app/assets/javascripts/cycle_analytics/cycle_analytics_store.js
index 18fb57c8b4f..304a0726597 100644
--- a/app/assets/javascripts/cycle_analytics/cycle_analytics_store.js
+++ b/app/assets/javascripts/cycle_analytics/cycle_analytics_store.js
@@ -24,7 +24,7 @@ const EMPTY_STAGE_TEXTS = {
'The staging stage shows the time between merging the MR and deploying code to the production environment. The data will be automatically added once you deploy to production for the first time.',
),
production: __(
- 'The production stage shows the total time it takes between creating an issue and deploying the code to production. The data will be automatically added once you have completed the full idea to production cycle.',
+ 'The total stage shows the time it takes between creating an issue and deploying the code to production. The data will be automatically added once you have completed the full idea to production cycle.',
),
};
diff --git a/app/assets/javascripts/main.js b/app/assets/javascripts/main.js
index e73e2c943d2..da263949b98 100644
--- a/app/assets/javascripts/main.js
+++ b/app/assets/javascripts/main.js
@@ -55,9 +55,18 @@ jQuery.ajaxSetup({
},
});
+function disableJQueryAnimations() {
+ $.fx.off = true;
+}
+
+// Disable jQuery animations
+if (gon && gon.disable_animations) {
+ disableJQueryAnimations();
+}
+
// inject test utilities if necessary
if (process.env.NODE_ENV !== 'production' && gon && gon.test_env) {
- $.fx.off = true;
+ disableJQueryAnimations();
import(/* webpackMode: "eager" */ './test_utils/');
}
diff --git a/app/assets/stylesheets/test.scss b/app/assets/stylesheets/disable_animations.scss
index e65b49c36f3..e65b49c36f3 100644
--- a/app/assets/stylesheets/test.scss
+++ b/app/assets/stylesheets/disable_animations.scss
diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb
index f6514c4ba99..bdb8abdeb45 100644
--- a/app/controllers/projects/issues_controller.rb
+++ b/app/controllers/projects/issues_controller.rb
@@ -46,6 +46,8 @@ class Projects::IssuesController < Projects::ApplicationController
push_frontend_feature_flag(:vue_issuable_sidebar, project.group)
end
+ around_action :allow_gitaly_ref_name_caching, only: [:discussions]
+
respond_to :html
alias_method :designs, :show
diff --git a/app/views/layouts/_head.html.haml b/app/views/layouts/_head.html.haml
index 0060d8323b0..6b336f3eba2 100644
--- a/app/views/layouts/_head.html.haml
+++ b/app/views/layouts/_head.html.haml
@@ -46,7 +46,7 @@
= stylesheet_link_tag "application", media: "all"
= stylesheet_link_tag "print", media: "print"
- = stylesheet_link_tag "test", media: "all" if Rails.env.test?
+ = stylesheet_link_tag "disable_animations", media: "all" if Rails.env.test? || Gitlab.config.gitlab['disable_animations']
= stylesheet_link_tag 'performance_bar' if performance_bar_enabled?
= stylesheet_link_tag "highlight/themes/#{user_color_scheme}", media: "all"
diff --git a/app/views/projects/cycle_analytics/show.html.haml b/app/views/projects/cycle_analytics/show.html.haml
index 1691af9dfdd..8bbe4e66c50 100644
--- a/app/views/projects/cycle_analytics/show.html.haml
+++ b/app/views/projects/cycle_analytics/show.html.haml
@@ -50,7 +50,7 @@
%i.has-tooltip.fa.fa-question-circle{ "data-placement" => "top", title: _("The collection of events added to the data gathered for that stage."), "aria-hidden" => "true" }
%li.total-time-header.pr-5.text-right
%span.stage-name.font-weight-bold
- {{ __('Total Time') }}
+ {{ __('Time') }}
%i.has-tooltip.fa.fa-question-circle{ "data-placement" => "top", title: _("The time taken by each data entry gathered by that stage."), "aria-hidden" => "true" }
.stage-panel-body
%nav.stage-nav
diff --git a/changelogs/unreleased/119205-500-when-error-stack-trace-is-empty.yml b/changelogs/unreleased/119205-500-when-error-stack-trace-is-empty.yml
new file mode 100644
index 00000000000..e0f5cc1e631
--- /dev/null
+++ b/changelogs/unreleased/119205-500-when-error-stack-trace-is-empty.yml
@@ -0,0 +1,5 @@
+---
+title: Fix for 500 when error stack trace is empty
+merge_request: 119205
+author:
+type: fixed
diff --git a/changelogs/unreleased/cache-ref-names-in-discussion-endpoint.yml b/changelogs/unreleased/cache-ref-names-in-discussion-endpoint.yml
new file mode 100644
index 00000000000..f0766dd4538
--- /dev/null
+++ b/changelogs/unreleased/cache-ref-names-in-discussion-endpoint.yml
@@ -0,0 +1,5 @@
+---
+title: Reduce Gitaly calls needed for issue discussions
+merge_request:
+author:
+type: performance
diff --git a/changelogs/unreleased/shl-disable-animations-config.yml b/changelogs/unreleased/shl-disable-animations-config.yml
new file mode 100644
index 00000000000..97c2db9a1c9
--- /dev/null
+++ b/changelogs/unreleased/shl-disable-animations-config.yml
@@ -0,0 +1,5 @@
+---
+title: Add a config for disabling CSS and jQuery animations
+merge_request: 22217
+author:
+type: added
diff --git a/config/application.rb b/config/application.rb
index 1897244eb6d..da674b2b944 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -166,7 +166,7 @@ module Gitlab
config.assets.precompile << "page_bundles/xterm.css"
config.assets.precompile << "performance_bar.css"
config.assets.precompile << "lib/ace.js"
- config.assets.precompile << "test.css"
+ config.assets.precompile << "disable_animations.css"
config.assets.precompile << "snippets.css"
config.assets.precompile << "locale/**/app.js"
config.assets.precompile << "emoji_sprites.css"
diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example
index 5ac9b7ee6e5..6613afdfed2 100644
--- a/config/gitlab.yml.example
+++ b/config/gitlab.yml.example
@@ -150,6 +150,9 @@ production: &base
## Impersonation settings
impersonation_enabled: true
+ ## Disable jQuery and CSS animations
+ # disable_animations: true
+
## Reply by email
# Allow users to comment on issues and merge requests by replying to notification emails.
# For documentation on how to set this up, see http://doc.gitlab.com/ce/administration/reply_by_email.html
@@ -807,7 +810,7 @@ production: &base
# CAUTION!
# This allows users to login with the specified providers without two factor. Define the allowed providers
# using an array, e.g. ["twitter", 'google_oauth2'], or as true/false to allow all providers or none.
- # This option should only be configured for providers which already have two factor.
+ # This option should only be configured for providers which already have two factor.
# This configration dose not apply to SAML.
# (default: false)
allow_bypass_two_factor: ["twitter", 'google_oauth2']
diff --git a/doc/development/cycle_analytics.md b/doc/development/cycle_analytics.md
index 284645cdae7..90abafb3e03 100644
--- a/doc/development/cycle_analytics.md
+++ b/doc/development/cycle_analytics.md
@@ -77,8 +77,8 @@ end
Some start/end event pairs are not "compatible" with each other. For example:
-- "Issue created" to "Merge Request created": The event classes are defined on different domain models, the `object_type` method is different.
-- "Issue closed" to "Issue created": Issue must be created first before it can be closed.
+- "Issue created" to "Merge Request created": The event classes are defined on different domain models, the `object_type` method is different.
+- "Issue closed" to "Issue created": Issue must be created first before it can be closed.
- "Issue closed" to "Issue closed": Duration is always 0.
The `StageEvents` module describes the allowed `start_event` and `end_event` pairings (`PAIRING_RULES` constant). If a new event is added, it needs to be registered in this module.
diff --git a/doc/development/pipelines.md b/doc/development/pipelines.md
index d516a808afd..32c89c28815 100644
--- a/doc/development/pipelines.md
+++ b/doc/development/pipelines.md
@@ -156,7 +156,7 @@ This is similar to the `.only:variables-canonical-dot-com` + `.except:refs-maste
CI definitions:
```yaml
-.if-canonical-gitlab-and-merge-request: &if-canonical-gitlab-and-merge-request
+.if-canonical-gitlab-merge-request: &if-canonical-gitlab-merge-request
if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE =~ /^gitlab-org($|\/)/ && $CI_MERGE_REQUEST_IID'
```
@@ -210,9 +210,7 @@ graph RL;
M[coverage];
N[pages];
O[static-analysis];
- P["schedule:package-and-qa<br/>(master schedule only)"];
Q[package-and-qa];
- R[package-and-qa-manual];
S["RSpec<br/>(e.g. rspec unit pg9)"]
T[retrieve-tests-metadata];
@@ -259,10 +257,6 @@ subgraph "`review` stage"
subgraph "`qa` stage"
Q --> |needs| C;
Q --> |needs| F;
- R --> |needs| C;
- R --> |needs| F;
- P --> |needs| C;
- P --> |needs| F;
review-qa-smoke -.-> |needs and depends on| G;
review-qa-all -.-> |needs and depends on| G;
review-performance -.-> |needs and depends on| G;
@@ -271,8 +265,7 @@ subgraph "`qa` stage"
end
subgraph "`notification` stage"
- NOTIFICATION1["schedule:package-and-qa:notify-success<br>(on_success)"] -.-> |needs| P;
- NOTIFICATION2["schedule:package-and-qa:notify-failure<br>(on_failure)"] -.-> |needs| P;
+ NOTIFICATION2["package-and-qa:notify-failure<br>(manual)"] -.-> |needs| Q;
end
subgraph "`post-test` stage"
diff --git a/doc/development/testing_guide/end_to_end/index.md b/doc/development/testing_guide/end_to_end/index.md
index 20b594119ab..85cad3971c3 100644
--- a/doc/development/testing_guide/end_to_end/index.md
+++ b/doc/development/testing_guide/end_to_end/index.md
@@ -27,11 +27,11 @@ You can find these nightly pipelines at `https://gitlab.com/gitlab-org/quality/s
### Testing code in merge requests
-#### Using the `package-and-qa-manual` job
+#### Using the `package-and-qa` job
It is possible to run end-to-end tests for a merge request, eventually being run in
a pipeline in the [`gitlab-qa`](https://gitlab.com/gitlab-org/gitlab-qa/) project,
-by triggering the `package-and-qa-manual` manual action in the `test` stage (not
+by triggering the `package-and-qa` manual action in the `test` stage (not
available for forks).
**This runs end-to-end tests against a custom Omnibus package built from your
@@ -53,7 +53,7 @@ graph LR
B2[`Trigger-qa` stage<br>`Trigger:qa-test` job] -.->|2. Triggers a gitlab-qa pipeline and wait for it to be done| A3
subgraph "gitlab-foss/gitlab pipeline"
- A1[`test` stage<br>`package-and-qa-manual` job]
+ A1[`test` stage<br>`package-and-qa` job]
end
subgraph "omnibus-gitlab pipeline"
@@ -61,7 +61,7 @@ subgraph "omnibus-gitlab pipeline"
end
subgraph "gitlab-qa pipeline"
- A3>QA jobs run] -.->|3. Reports back the pipeline result to the `package-and-qa-manual` job<br>and post the result on the original commit tested| A1
+ A3>QA jobs run] -.->|3. Reports back the pipeline result to the `package-and-qa` job<br>and post the result on the original commit tested| A1
end
```
diff --git a/doc/development/testing_guide/end_to_end/page_objects.md b/doc/development/testing_guide/end_to_end/page_objects.md
index 554995fa2e2..f1e0de0c792 100644
--- a/doc/development/testing_guide/end_to_end/page_objects.md
+++ b/doc/development/testing_guide/end_to_end/page_objects.md
@@ -40,7 +40,7 @@ the time it would take to build packages and test everything.
That is why when someone changes `t.text_field :login` to
`t.text_field :username` in the _new session_ view we won't know about this
change until our GitLab QA nightly pipeline fails, or until someone triggers
-`package-and-qa-manual` action in their merge request.
+`package-and-qa` action in their merge request.
Obviously such a change would break all tests. We call this problem a _fragile
tests problem_.
@@ -171,8 +171,8 @@ and we should prefer the `data-qa-selector` method of definition.
> Introduced in GitLab 12.5
-A common occurrence in automated testing is selecting a single "one-of-many" element.
-In a list of several items, how do you differentiate what you are selecting on?
+A common occurrence in automated testing is selecting a single "one-of-many" element.
+In a list of several items, how do you differentiate what you are selecting on?
The most common workaround for this is via text matching. Instead, a better practice is
by matching on that specific element by a unique identifier, rather than by text.
diff --git a/doc/user/analytics/cycle_analytics.md b/doc/user/analytics/cycle_analytics.md
index 796cae70803..dfc0f488ff9 100644
--- a/doc/user/analytics/cycle_analytics.md
+++ b/doc/user/analytics/cycle_analytics.md
@@ -44,8 +44,8 @@ There are seven stages that are tracked as part of the Cycle Analytics calculati
- Time spent on code review
- **Staging** (Continuous Deployment)
- Time between merging and deploying to production
-- **Production** (Total)
- - Total lifecycle time; i.e. the velocity of the project or team
+- **Total** (Total)
+ - Total lifecycle time. That is, the velocity of the project or team. [Previously known](https://gitlab.com/gitlab-org/gitlab/issues/38317) as **Production**.
## Date ranges
@@ -60,12 +60,12 @@ GitLab provides the ability to filter analytics based on a date range. To filter
## How the data is measured
Cycle Analytics records cycle time and data based on the project issues with the
-exception of the staging and production stages, where only data deployed to
+exception of the staging and total stages, where only data deployed to
production are measured.
Specifically, if your CI is not set up and you have not defined a `production`
or `production/*` [environment](../../ci/yaml/README.md#environment), then you will not have any
-data for those stages.
+data for this stage.
Each stage of Cycle Analytics is further described in the table below.
@@ -77,7 +77,7 @@ Each stage of Cycle Analytics is further described in the table below.
| Test | Measures the median time to run the entire pipeline for that project. It's related to the time GitLab CI takes to run every job for the commits pushed to that merge request defined in the previous stage. It is basically the start->finish time for all pipelines. |
| Review | Measures the median time taken to review the merge request that has closing issue pattern, between its creation and until it's merged. |
| Staging | Measures the median time between merging the merge request with closing issue pattern until the very first deployment to production. It's tracked by the environment set to `production` or matching `production/*` (case-sensitive, `Production` won't work) in your GitLab CI configuration. If there isn't a production environment, this is not tracked. |
-| Production| The sum of all time (medians) taken to run the entire process, from issue creation to deploying the code to production. |
+| Total | The sum of all time (medians) taken to run the entire process, from issue creation to deploying the code to production. [Previously known](https://gitlab.com/gitlab-org/gitlab/issues/38317) as **Production**. |
How this works, behind the scenes:
@@ -124,7 +124,7 @@ environments is configured.
1. Now that the merge request is merged, a deployment to the `production`
environment starts and finishes at 19:30 (stop of **Staging** stage).
1. The cycle completes and the sum of the median times of the previous stages
- is recorded to the **Production** stage. That is the time between creating an
+ is recorded to the **Total** stage. That is the time between creating an
issue and deploying its relevant merge request to production.
From the above example you can conclude the time it took each stage to complete
@@ -136,10 +136,10 @@ as long as their total time:
- **Test**: 5min
- **Review**: 5h (19:00 - 14:00)
- **Staging**: 30min (19:30 - 19:00)
-- **Production**: Since this stage measures the sum of median time off all
+- **Total**: Since this stage measures the sum of median time of all
previous stages, we cannot calculate it if we don't know the status of the
stages before. In case this is the very first cycle that is run in the project,
- then the **Production** time is 10h 30min (19:30 - 09:00)
+ then the **Total** time is 10h 30min (19:30 - 09:00)
A few notes:
diff --git a/lib/gitlab/cycle_analytics/production_stage.rb b/lib/gitlab/cycle_analytics/production_stage.rb
index 6fd7214dce7..d5f2e868606 100644
--- a/lib/gitlab/cycle_analytics/production_stage.rb
+++ b/lib/gitlab/cycle_analytics/production_stage.rb
@@ -18,7 +18,7 @@ module Gitlab
end
def title
- s_('CycleAnalyticsStage|Production')
+ s_('CycleAnalyticsStage|Total')
end
def legend
diff --git a/lib/gitlab/gon_helper.rb b/lib/gitlab/gon_helper.rb
index f22c69c531a..2e27e954e79 100644
--- a/lib/gitlab/gon_helper.rb
+++ b/lib/gitlab/gon_helper.rb
@@ -28,6 +28,7 @@ module Gitlab
gon.sprite_file_icons = IconsHelper.sprite_file_icons_path
gon.emoji_sprites_css_path = ActionController::Base.helpers.stylesheet_path('emoji_sprites')
gon.test_env = Rails.env.test?
+ gon.disable_animations = Gitlab.config.gitlab['disable_animations']
gon.suggested_label_colors = LabelsHelper.suggested_colors
gon.first_day_of_week = current_user&.first_day_of_week || Gitlab::CurrentSettings.first_day_of_week
gon.ee = Gitlab.ee?
diff --git a/lib/sentry/client.rb b/lib/sentry/client.rb
index dd589b6194d..65bedbf9e0f 100644
--- a/lib/sentry/client.rb
+++ b/lib/sentry/client.rb
@@ -187,13 +187,13 @@ module Sentry
def parse_stack_trace(event)
exception_entry = event.dig('entries')&.detect { |h| h['type'] == 'exception' }
- return unless exception_entry
+ return [] unless exception_entry
exception_values = exception_entry.dig('data', 'values')
stack_trace_entry = exception_values&.detect { |h| h['stacktrace'].present? }
- return unless stack_trace_entry
+ return [] unless stack_trace_entry
- stack_trace_entry.dig('stacktrace', 'frames')
+ stack_trace_entry.dig('stacktrace', 'frames') || []
end
def map_to_error(issue)
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index c2cbc312d7e..0adc5b6c7ff 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -5508,9 +5508,6 @@ msgstr ""
msgid "CycleAnalyticsStage|Plan"
msgstr ""
-msgid "CycleAnalyticsStage|Production"
-msgstr ""
-
msgid "CycleAnalyticsStage|Review"
msgstr ""
@@ -5520,6 +5517,9 @@ msgstr ""
msgid "CycleAnalyticsStage|Test"
msgstr ""
+msgid "CycleAnalyticsStage|Total"
+msgstr ""
+
msgid "CycleAnalyticsStage|is not available for the selected group"
msgstr ""
@@ -18158,6 +18158,9 @@ msgstr ""
msgid "The time taken by each data entry gathered by that stage."
msgstr ""
+msgid "The total stage shows the time it takes between creating an issue and deploying the code to production. The data will be automatically added once you have completed the full idea to production cycle."
+msgstr ""
+
msgid "The unique identifier for the Geo node. Must match `geo_node_name` if it is set in gitlab.rb, otherwise it must match `external_url` with a trailing slash"
msgstr ""
@@ -19146,9 +19149,6 @@ msgstr ""
msgid "Total Contributions"
msgstr ""
-msgid "Total Time"
-msgstr ""
-
msgid "Total artifacts size: %{total_size}"
msgstr ""
diff --git a/qa/README.md b/qa/README.md
index 332e5c8170f..1bfa83cadf1 100644
--- a/qa/README.md
+++ b/qa/README.md
@@ -30,7 +30,7 @@ and corresponding views / partials / selectors in CE / EE.
Whenever `qa:selectors` job fails in your merge request, you are supposed to
fix [page objects](../doc/development/testing_guide/end_to_end/page_objects.md). You should also trigger end-to-end tests
-using `package-and-qa-manual` manual action, to test if everything works fine.
+using `package-and-qa` manual action, to test if everything works fine.
## How can I use it?
diff --git a/spec/features/cycle_analytics_spec.rb b/spec/features/cycle_analytics_spec.rb
index e9751aa2e72..0cafdb4e982 100644
--- a/spec/features/cycle_analytics_spec.rb
+++ b/spec/features/cycle_analytics_spec.rb
@@ -76,7 +76,7 @@ describe 'Cycle Analytics', :js do
click_stage('Staging')
expect_build_to_be_present
- click_stage('Production')
+ click_stage('Total')
expect_issue_to_be_present
end
diff --git a/spec/fixtures/sentry/issue_latest_event_no_stack_sample_response.json b/spec/fixtures/sentry/issue_latest_event_no_stack_sample_response.json
new file mode 100644
index 00000000000..8ac446ae04e
--- /dev/null
+++ b/spec/fixtures/sentry/issue_latest_event_no_stack_sample_response.json
@@ -0,0 +1,300 @@
+{
+ "eventID": "333b98e3b91341d8a6247edff171d8cf",
+ "dist": null,
+ "userReport": null,
+ "projectID": "1788822",
+ "previousEventID": "d32f1ce60de14911beec5109d9b5bdbd",
+ "message": null,
+ "id": "333b98e3b91341d8a6247edff171d8cf",
+ "size": 77202,
+ "errors": [
+ {
+ "data": {
+ "reason": "the cookie is missing a name/value pair",
+ "name": "request.cookies",
+ "value": "********"
+ },
+ "message": "Discarded invalid value",
+ "type": "invalid_data"
+ },
+ {
+ "data": {
+ "reason": "the cookie is missing a name/value pair",
+ "name": "request.cookies",
+ "value": "********"
+ },
+ "message": "Discarded invalid value",
+ "type": "invalid_data"
+ }
+ ],
+ "culprit": "/",
+ "title": "ActiveRecord::NoDatabaseError: FATAL: database \"test_development\" does not exist",
+ "sdkUpdates": [],
+ "platform": "ruby",
+ "location": "active_record/connection_adapters/postgresql_adapter.rb",
+ "nextEventID": null,
+ "type": "error",
+ "metadata": {
+ "function": "rescue in connect",
+ "type": "ActiveRecord::NoDatabaseError",
+ "value": "FATAL: database \"test_development\" does not exist\n",
+ "filename": "active_record/connection_adapters/postgresql_adapter.rb"
+ },
+ "groupingConfig": {
+ "enhancements": "eJybzDhxY3J-bm5-npWRgaGlroGxrpHxBABcTQcY",
+ "id": "newstyle:2019-05-08"
+ },
+ "crashFile": null,
+ "tags": [
+ {
+ "value": "Chrome 78.0.3904",
+ "key": "browser",
+ "_meta": null
+ },
+ {
+ "value": "Chrome",
+ "key": "browser.name",
+ "_meta": null
+ },
+ {
+ "value": "Mac OS X 10.15.1",
+ "key": "client_os",
+ "_meta": null
+ },
+ {
+ "value": "Mac OS X",
+ "key": "client_os.name",
+ "_meta": null
+ },
+ {
+ "value": "development",
+ "key": "environment",
+ "_meta": null
+ },
+ {
+ "value": "error",
+ "key": "level",
+ "_meta": null
+ },
+ {
+ "value": "ruby",
+ "key": "logger",
+ "_meta": null
+ },
+ {
+ "value": "b56ae26",
+ "key": "release",
+ "_meta": null
+ },
+ {
+ "value": "Seans-MBP.fritz.box",
+ "key": "server_name",
+ "_meta": null
+ },
+ {
+ "value": "/",
+ "key": "transaction",
+ "_meta": null
+ },
+ {
+ "value": "http://localhost:3001/",
+ "key": "url",
+ "_meta": null
+ },
+ {
+ "query": "user.ip:\"::1\"",
+ "value": "ip:::1",
+ "key": "user",
+ "_meta": null
+ }
+ ],
+ "dateCreated": "2019-12-08T21:48:07Z",
+ "dateReceived": "2019-12-08T21:48:08.579417Z",
+ "user": {
+ "username": null,
+ "name": null,
+ "ip_address": "::1",
+ "email": null,
+ "data": null,
+ "id": null
+ },
+ "entries": [],
+ "packages": {
+ "coffee-script": "2.4.1",
+ "uglifier": "4.1.20",
+ "ffi": "1.11.1",
+ "actioncable": "5.2.3",
+ "io-like": "0.3.0",
+ "rb-inotify": "0.10.0",
+ "spring": "2.1.0",
+ "loofah": "2.2.3",
+ "selenium-webdriver": "3.142.3",
+ "marcel": "0.3.3",
+ "sass-listen": "4.0.0",
+ "nokogiri": "1.10.4",
+ "activestorage": "5.2.3",
+ "activejob": "5.2.3",
+ "mimemagic": "0.3.3",
+ "faraday": "0.17.1",
+ "execjs": "2.7.0",
+ "activesupport": "5.2.3",
+ "rails-html-sanitizer": "1.2.0",
+ "byebug": "11.0.1",
+ "xpath": "3.2.0",
+ "msgpack": "1.3.1",
+ "childprocess": "1.0.1",
+ "rails-dom-testing": "2.0.3",
+ "public_suffix": "3.1.1",
+ "mini_mime": "1.0.2",
+ "arel": "9.0.0",
+ "coffee-rails": "4.2.2",
+ "bundler": "1.17.3",
+ "rails": "5.2.3",
+ "globalid": "0.4.2",
+ "sentry-raven": "2.12.3",
+ "concurrent-ruby": "1.1.5",
+ "capybara": "3.28.0",
+ "regexp_parser": "1.6.0",
+ "sprockets-rails": "3.2.1",
+ "tzinfo": "1.2.5",
+ "mail": "2.7.1",
+ "actionview": "5.2.3",
+ "rubyzip": "1.2.3",
+ "coffee-script-source": "1.12.2",
+ "listen": "3.1.5",
+ "i18n": "1.6.0",
+ "erubi": "1.8.0",
+ "rake": "12.3.3",
+ "nio4r": "2.4.0",
+ "activemodel": "5.2.3",
+ "web-console": "3.7.0",
+ "ruby_dep": "1.5.0",
+ "turbolinks": "5.2.0",
+ "archive-zip": "0.12.0",
+ "method_source": "0.9.2",
+ "minitest": "5.11.3",
+ "puma": "3.12.1",
+ "sass-rails": "5.1.0",
+ "chromedriver-helper": "2.1.1",
+ "sprockets": "3.7.2",
+ "bindex": "0.8.1",
+ "actionmailer": "5.2.3",
+ "rack-test": "1.1.0",
+ "bootsnap": "1.4.4",
+ "railties": "5.2.3",
+ "mini_portile2": "2.4.0",
+ "crass": "1.0.4",
+ "websocket-extensions": "0.1.4",
+ "multipart-post": "2.1.1",
+ "rb-fsevent": "0.10.3",
+ "jbuilder": "2.9.1",
+ "pg": "1.1.4",
+ "sass": "3.7.4",
+ "activerecord": "5.2.3",
+ "builder": "3.2.3",
+ "spring-watcher-listen": "2.0.1",
+ "websocket-driver": "0.7.1",
+ "thor": "0.20.3",
+ "thread_safe": "0.3.6",
+ "addressable": "2.6.0",
+ "prometheus-client-mmap": "0.9.8",
+ "tilt": "2.0.9",
+ "actionpack": "5.2.3",
+ "rack": "2.0.7",
+ "turbolinks-source": "5.2.0"
+ },
+ "sdk": {
+ "version": "2.12.3",
+ "name": "raven-ruby"
+ },
+ "_meta": {
+ "user": null,
+ "context": null,
+ "entries": {
+ "1": {
+ "data": {
+ "": null,
+ "cookies": {
+ "": {
+ "err": [
+ [
+ "invalid_data",
+ {
+ "reason": "the cookie is missing a name/value pair"
+ }
+ ]
+ ],
+ "val": "********"
+ }
+ },
+ "url": null,
+ "headers": null,
+ "env": null,
+ "query": null,
+ "data": null,
+ "method": null
+ }
+ }
+ },
+ "contexts": null,
+ "message": null,
+ "packages": null,
+ "tags": {},
+ "sdk": null
+ },
+ "contexts": {
+ "browser": {
+ "version": "78.0.3904",
+ "type": "browser",
+ "name": "Chrome"
+ },
+ "client_os": {
+ "version": "10.15.1",
+ "type": "os",
+ "name": "Mac OS X"
+ }
+ },
+ "fingerprints": [
+ "6aa133ea51857634f2d113de52b5cc61",
+ "e1613eeb169241eab95b76ab52a80c68"
+ ],
+ "context": {
+ "server": {
+ "runtime": {
+ "version": "ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin18]",
+ "name": "ruby"
+ },
+ "os": {
+ "kernel_version": "Darwin Seans-MBP.fritz.box 19.0.0 Darwin Kernel Version 19.0.0: Thu Oct 17 16:17:15 PDT 2019; root:xnu-6153.41.3~29/RELEASE_X86_64 x86_64",
+ "version": "Darwin Kernel Version 19.0.0: Thu Oct 17 16:17:15 PDT 2019; root:xnu-6153.41.3~29/RELEASE_X86_64",
+ "build": "19.0.0",
+ "name": "Darwin"
+ }
+ }
+ },
+ "release": {
+ "dateReleased": null,
+ "commitCount": 0,
+ "url": null,
+ "data": {},
+ "lastDeploy": null,
+ "deployCount": 0,
+ "dateCreated": "2019-12-08T21:47:47Z",
+ "lastEvent": "2019-12-09T21:52:05Z",
+ "version": "b56ae26",
+ "firstEvent": "2019-12-08T21:47:47Z",
+ "lastCommit": null,
+ "shortVersion": "b56ae26",
+ "authors": [],
+ "owner": null,
+ "newGroups": 26,
+ "ref": null,
+ "projects": [
+ {
+ "slug": "gitlab-03",
+ "name": "gitlab-03"
+ }
+ ]
+ },
+ "groupID": "1378364652"
+} \ No newline at end of file
diff --git a/spec/fixtures/sentry/issue_latest_event_sample_response.json b/spec/fixtures/sentry/issue_latest_event_sample_response.json
new file mode 100644
index 00000000000..c924022dffb
--- /dev/null
+++ b/spec/fixtures/sentry/issue_latest_event_sample_response.json
@@ -0,0 +1,5299 @@
+{
+ "eventID": "333b98e3b91341d8a6247edff171d8cf",
+ "dist": null,
+ "userReport": null,
+ "projectID": "1788822",
+ "previousEventID": "d32f1ce60de14911beec5109d9b5bdbd",
+ "message": null,
+ "id": "333b98e3b91341d8a6247edff171d8cf",
+ "size": 77202,
+ "errors": [
+ {
+ "data": {
+ "reason": "the cookie is missing a name/value pair",
+ "name": "request.cookies",
+ "value": "********"
+ },
+ "message": "Discarded invalid value",
+ "type": "invalid_data"
+ },
+ {
+ "data": {
+ "reason": "the cookie is missing a name/value pair",
+ "name": "request.cookies",
+ "value": "********"
+ },
+ "message": "Discarded invalid value",
+ "type": "invalid_data"
+ }
+ ],
+ "culprit": "/",
+ "title": "ActiveRecord::NoDatabaseError: FATAL: database \"test_development\" does not exist",
+ "sdkUpdates": [],
+ "platform": "ruby",
+ "location": "active_record/connection_adapters/postgresql_adapter.rb",
+ "nextEventID": null,
+ "type": "error",
+ "metadata": {
+ "function": "rescue in connect",
+ "type": "ActiveRecord::NoDatabaseError",
+ "value": "FATAL: database \"test_development\" does not exist\n",
+ "filename": "active_record/connection_adapters/postgresql_adapter.rb"
+ },
+ "groupingConfig": {
+ "enhancements": "eJybzDhxY3J-bm5-npWRgaGlroGxrpHxBABcTQcY",
+ "id": "newstyle:2019-05-08"
+ },
+ "crashFile": null,
+ "tags": [
+ {
+ "value": "Chrome 78.0.3904",
+ "key": "browser",
+ "_meta": null
+ },
+ {
+ "value": "Chrome",
+ "key": "browser.name",
+ "_meta": null
+ },
+ {
+ "value": "Mac OS X 10.15.1",
+ "key": "client_os",
+ "_meta": null
+ },
+ {
+ "value": "Mac OS X",
+ "key": "client_os.name",
+ "_meta": null
+ },
+ {
+ "value": "development",
+ "key": "environment",
+ "_meta": null
+ },
+ {
+ "value": "error",
+ "key": "level",
+ "_meta": null
+ },
+ {
+ "value": "ruby",
+ "key": "logger",
+ "_meta": null
+ },
+ {
+ "value": "b56ae26",
+ "key": "release",
+ "_meta": null
+ },
+ {
+ "value": "Seans-MBP.fritz.box",
+ "key": "server_name",
+ "_meta": null
+ },
+ {
+ "value": "/",
+ "key": "transaction",
+ "_meta": null
+ },
+ {
+ "value": "http://localhost:3001/",
+ "key": "url",
+ "_meta": null
+ },
+ {
+ "query": "user.ip:\"::1\"",
+ "value": "ip:::1",
+ "key": "user",
+ "_meta": null
+ }
+ ],
+ "dateCreated": "2019-12-08T21:48:07Z",
+ "dateReceived": "2019-12-08T21:48:08.579417Z",
+ "user": {
+ "username": null,
+ "name": null,
+ "ip_address": "::1",
+ "email": null,
+ "data": null,
+ "id": null
+ },
+ "entries": [
+ {
+ "type": "exception",
+ "data": {
+ "values": [
+ {
+ "stacktrace": {
+ "frames": [
+ {
+ "function": "block in spawn_thread",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/puma-3.12.1/lib/puma/thread_pool.rb",
+ "inApp": false,
+ "lineNo": 135,
+ "module": null,
+ "filename": "puma/thread_pool.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 132,
+ " end\n"
+ ],
+ [
+ 133,
+ "\n"
+ ],
+ [
+ 134,
+ " begin\n"
+ ],
+ [
+ 135,
+ " block.call(work, *extra)\n"
+ ],
+ [
+ 136,
+ " rescue Exception => e\n"
+ ],
+ [
+ 137,
+ " STDERR.puts \"Error reached top of thread-pool: #{e.message} (#{e.class})\"\n"
+ ],
+ [
+ 138,
+ " end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "block in run",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/puma-3.12.1/lib/puma/server.rb",
+ "inApp": false,
+ "lineNo": 334,
+ "module": null,
+ "filename": "puma/server.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 331,
+ " client.close\n"
+ ],
+ [
+ 332,
+ " else\n"
+ ],
+ [
+ 333,
+ " if process_now\n"
+ ],
+ [
+ 334,
+ " process_client client, buffer\n"
+ ],
+ [
+ 335,
+ " else\n"
+ ],
+ [
+ 336,
+ " client.set_timeout @first_data_timeout\n"
+ ],
+ [
+ 337,
+ " @reactor.add client\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "process_client",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/puma-3.12.1/lib/puma/server.rb",
+ "inApp": false,
+ "lineNo": 474,
+ "module": null,
+ "filename": "puma/server.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 471,
+ " close_socket = true\n"
+ ],
+ [
+ 472,
+ "\n"
+ ],
+ [
+ 473,
+ " while true\n"
+ ],
+ [
+ 474,
+ " case handle_request(client, buffer)\n"
+ ],
+ [
+ 475,
+ " when false\n"
+ ],
+ [
+ 476,
+ " return\n"
+ ],
+ [
+ 477,
+ " when :async\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "handle_request",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/puma-3.12.1/lib/puma/server.rb",
+ "inApp": false,
+ "lineNo": 660,
+ "module": null,
+ "filename": "puma/server.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 657,
+ "\n"
+ ],
+ [
+ 658,
+ " begin\n"
+ ],
+ [
+ 659,
+ " begin\n"
+ ],
+ [
+ 660,
+ " status, headers, res_body = @app.call(env)\n"
+ ],
+ [
+ 661,
+ "\n"
+ ],
+ [
+ 662,
+ " return :async if req.hijacked\n"
+ ],
+ [
+ 663,
+ "\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/puma-3.12.1/lib/puma/configuration.rb",
+ "inApp": false,
+ "lineNo": 227,
+ "module": null,
+ "filename": "puma/configuration.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 224,
+ "\n"
+ ],
+ [
+ 225,
+ " def call(env)\n"
+ ],
+ [
+ 226,
+ " env[Const::PUMA_CONFIG] = @config\n"
+ ],
+ [
+ 227,
+ " @app.call(env)\n"
+ ],
+ [
+ 228,
+ " end\n"
+ ],
+ [
+ 229,
+ " end\n"
+ ],
+ [
+ 230,
+ "\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/prometheus-client-mmap-0.9.8/lib/prometheus/client/rack/collector.rb",
+ "inApp": false,
+ "lineNo": 24,
+ "module": null,
+ "filename": "prometheus/client/rack/collector.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 21,
+ " end\n"
+ ],
+ [
+ 22,
+ "\n"
+ ],
+ [
+ 23,
+ " def call(env) # :nodoc:\n"
+ ],
+ [
+ 24,
+ " trace(env) { @app.call(env) }\n"
+ ],
+ [
+ 25,
+ " end\n"
+ ],
+ [
+ 26,
+ "\n"
+ ],
+ [
+ 27,
+ " protected\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "trace",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/prometheus-client-mmap-0.9.8/lib/prometheus/client/rack/collector.rb",
+ "inApp": false,
+ "lineNo": 61,
+ "module": null,
+ "filename": "prometheus/client/rack/collector.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 58,
+ "\n"
+ ],
+ [
+ 59,
+ " def trace(env)\n"
+ ],
+ [
+ 60,
+ " start = Time.now\n"
+ ],
+ [
+ 61,
+ " yield.tap do |response|\n"
+ ],
+ [
+ 62,
+ " duration = (Time.now - start).to_f\n"
+ ],
+ [
+ 63,
+ " record(labels(env, response), duration)\n"
+ ],
+ [
+ 64,
+ " end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "block in call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/prometheus-client-mmap-0.9.8/lib/prometheus/client/rack/collector.rb",
+ "inApp": false,
+ "lineNo": 24,
+ "module": null,
+ "filename": "prometheus/client/rack/collector.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 21,
+ " end\n"
+ ],
+ [
+ 22,
+ "\n"
+ ],
+ [
+ 23,
+ " def call(env) # :nodoc:\n"
+ ],
+ [
+ 24,
+ " trace(env) { @app.call(env) }\n"
+ ],
+ [
+ 25,
+ " end\n"
+ ],
+ [
+ 26,
+ "\n"
+ ],
+ [
+ 27,
+ " protected\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/prometheus-client-mmap-0.9.8/lib/prometheus/client/rack/exporter.rb",
+ "inApp": false,
+ "lineNo": 29,
+ "module": null,
+ "filename": "prometheus/client/rack/exporter.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 26,
+ " format = negotiate(env['HTTP_ACCEPT'], @acceptable)\n"
+ ],
+ [
+ 27,
+ " format ? respond_with(format) : not_acceptable(FORMATS)\n"
+ ],
+ [
+ 28,
+ " else\n"
+ ],
+ [
+ 29,
+ " @app.call(env)\n"
+ ],
+ [
+ 30,
+ " end\n"
+ ],
+ [
+ 31,
+ " end\n"
+ ],
+ [
+ 32,
+ "\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/railties-5.2.3/lib/rails/engine.rb",
+ "inApp": false,
+ "lineNo": 524,
+ "module": null,
+ "filename": "rails/engine.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 521,
+ " # Define the Rack API for this engine.\n"
+ ],
+ [
+ 522,
+ " def call(env)\n"
+ ],
+ [
+ 523,
+ " req = build_request env\n"
+ ],
+ [
+ 524,
+ " app.call req.env\n"
+ ],
+ [
+ 525,
+ " end\n"
+ ],
+ [
+ 526,
+ "\n"
+ ],
+ [
+ 527,
+ " # Defines additional Rack env configuration that is added on each call.\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/sentry-raven-2.12.3/lib/raven/integrations/rack.rb",
+ "inApp": false,
+ "lineNo": 51,
+ "module": null,
+ "filename": "raven/integrations/rack.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 48,
+ " Raven.context.transaction.push(env[\"PATH_INFO\"]) if env[\"PATH_INFO\"]\n"
+ ],
+ [
+ 49,
+ "\n"
+ ],
+ [
+ 50,
+ " begin\n"
+ ],
+ [
+ 51,
+ " response = @app.call(env)\n"
+ ],
+ [
+ 52,
+ " rescue Error\n"
+ ],
+ [
+ 53,
+ " raise # Don't capture Raven errors\n"
+ ],
+ [
+ 54,
+ " rescue Exception => e\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/rack-2.0.7/lib/rack/sendfile.rb",
+ "inApp": false,
+ "lineNo": 111,
+ "module": null,
+ "filename": "rack/sendfile.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 108,
+ " end\n"
+ ],
+ [
+ 109,
+ "\n"
+ ],
+ [
+ 110,
+ " def call(env)\n"
+ ],
+ [
+ 111,
+ " status, headers, body = @app.call(env)\n"
+ ],
+ [
+ 112,
+ " if body.respond_to?(:to_path)\n"
+ ],
+ [
+ 113,
+ " case type = variation(env)\n"
+ ],
+ [
+ 114,
+ " when 'X-Accel-Redirect'\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/actionpack-5.2.3/lib/action_dispatch/middleware/static.rb",
+ "inApp": false,
+ "lineNo": 127,
+ "module": null,
+ "filename": "action_dispatch/middleware/static.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 124,
+ " end\n"
+ ],
+ [
+ 125,
+ " end\n"
+ ],
+ [
+ 126,
+ "\n"
+ ],
+ [
+ 127,
+ " @app.call(req.env)\n"
+ ],
+ [
+ 128,
+ " end\n"
+ ],
+ [
+ 129,
+ " end\n"
+ ],
+ [
+ 130,
+ "end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/actionpack-5.2.3/lib/action_dispatch/middleware/executor.rb",
+ "inApp": false,
+ "lineNo": 14,
+ "module": null,
+ "filename": "action_dispatch/middleware/executor.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 11,
+ " def call(env)\n"
+ ],
+ [
+ 12,
+ " state = @executor.run!\n"
+ ],
+ [
+ 13,
+ " begin\n"
+ ],
+ [
+ 14,
+ " response = @app.call(env)\n"
+ ],
+ [
+ 15,
+ " returned = response << ::Rack::BodyProxy.new(response.pop) { state.complete! }\n"
+ ],
+ [
+ 16,
+ " ensure\n"
+ ],
+ [
+ 17,
+ " state.complete! unless returned\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/cache/strategy/local_cache_middleware.rb",
+ "inApp": false,
+ "lineNo": 29,
+ "module": null,
+ "filename": "active_support/cache/strategy/local_cache_middleware.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 26,
+ "\n"
+ ],
+ [
+ 27,
+ " def call(env)\n"
+ ],
+ [
+ 28,
+ " LocalCacheRegistry.set_cache_for(local_cache_key, LocalStore.new)\n"
+ ],
+ [
+ 29,
+ " response = @app.call(env)\n"
+ ],
+ [
+ 30,
+ " response[2] = ::Rack::BodyProxy.new(response[2]) do\n"
+ ],
+ [
+ 31,
+ " LocalCacheRegistry.set_cache_for(local_cache_key, nil)\n"
+ ],
+ [
+ 32,
+ " end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/rack-2.0.7/lib/rack/runtime.rb",
+ "inApp": false,
+ "lineNo": 22,
+ "module": null,
+ "filename": "rack/runtime.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 19,
+ "\n"
+ ],
+ [
+ 20,
+ " def call(env)\n"
+ ],
+ [
+ 21,
+ " start_time = Utils.clock_time\n"
+ ],
+ [
+ 22,
+ " status, headers, body = @app.call(env)\n"
+ ],
+ [
+ 23,
+ " request_time = Utils.clock_time - start_time\n"
+ ],
+ [
+ 24,
+ "\n"
+ ],
+ [
+ 25,
+ " unless headers.has_key?(@header_name)\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/rack-2.0.7/lib/rack/method_override.rb",
+ "inApp": false,
+ "lineNo": 22,
+ "module": null,
+ "filename": "rack/method_override.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 19,
+ " end\n"
+ ],
+ [
+ 20,
+ " end\n"
+ ],
+ [
+ 21,
+ "\n"
+ ],
+ [
+ 22,
+ " @app.call(env)\n"
+ ],
+ [
+ 23,
+ " end\n"
+ ],
+ [
+ 24,
+ "\n"
+ ],
+ [
+ 25,
+ " def method_override(env)\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/actionpack-5.2.3/lib/action_dispatch/middleware/request_id.rb",
+ "inApp": false,
+ "lineNo": 27,
+ "module": null,
+ "filename": "action_dispatch/middleware/request_id.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 24,
+ " def call(env)\n"
+ ],
+ [
+ 25,
+ " req = ActionDispatch::Request.new env\n"
+ ],
+ [
+ 26,
+ " req.request_id = make_request_id(req.x_request_id)\n"
+ ],
+ [
+ 27,
+ " @app.call(env).tap { |_status, headers, _body| headers[X_REQUEST_ID] = req.request_id }\n"
+ ],
+ [
+ 28,
+ " end\n"
+ ],
+ [
+ 29,
+ "\n"
+ ],
+ [
+ 30,
+ " private\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/actionpack-5.2.3/lib/action_dispatch/middleware/remote_ip.rb",
+ "inApp": false,
+ "lineNo": 81,
+ "module": null,
+ "filename": "action_dispatch/middleware/remote_ip.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 78,
+ " def call(env)\n"
+ ],
+ [
+ 79,
+ " req = ActionDispatch::Request.new env\n"
+ ],
+ [
+ 80,
+ " req.remote_ip = GetIp.new(req, check_ip, proxies)\n"
+ ],
+ [
+ 81,
+ " @app.call(req.env)\n"
+ ],
+ [
+ 82,
+ " end\n"
+ ],
+ [
+ 83,
+ "\n"
+ ],
+ [
+ 84,
+ " # The GetIp class exists as a way to defer processing of the request data\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/sprockets-rails-3.2.1/lib/sprockets/rails/quiet_assets.rb",
+ "inApp": false,
+ "lineNo": 13,
+ "module": null,
+ "filename": "sprockets/rails/quiet_assets.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 10,
+ " if env['PATH_INFO'] =~ @assets_regex\n"
+ ],
+ [
+ 11,
+ " ::Rails.logger.silence { @app.call(env) }\n"
+ ],
+ [
+ 12,
+ " else\n"
+ ],
+ [
+ 13,
+ " @app.call(env)\n"
+ ],
+ [
+ 14,
+ " end\n"
+ ],
+ [
+ 15,
+ " end\n"
+ ],
+ [
+ 16,
+ " end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/railties-5.2.3/lib/rails/rack/logger.rb",
+ "inApp": false,
+ "lineNo": 26,
+ "module": null,
+ "filename": "rails/rack/logger.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 23,
+ " request = ActionDispatch::Request.new(env)\n"
+ ],
+ [
+ 24,
+ "\n"
+ ],
+ [
+ 25,
+ " if logger.respond_to?(:tagged)\n"
+ ],
+ [
+ 26,
+ " logger.tagged(compute_tags(request)) { call_app(request, env) }\n"
+ ],
+ [
+ 27,
+ " else\n"
+ ],
+ [
+ 28,
+ " call_app(request, env)\n"
+ ],
+ [
+ 29,
+ " end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "tagged",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/tagged_logging.rb",
+ "inApp": false,
+ "lineNo": 71,
+ "module": null,
+ "filename": "active_support/tagged_logging.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 68,
+ " delegate :push_tags, :pop_tags, :clear_tags!, to: :formatter\n"
+ ],
+ [
+ 69,
+ "\n"
+ ],
+ [
+ 70,
+ " def tagged(*tags)\n"
+ ],
+ [
+ 71,
+ " formatter.tagged(*tags) { yield self }\n"
+ ],
+ [
+ 72,
+ " end\n"
+ ],
+ [
+ 73,
+ "\n"
+ ],
+ [
+ 74,
+ " def flush\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "tagged",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/tagged_logging.rb",
+ "inApp": false,
+ "lineNo": 28,
+ "module": null,
+ "filename": "active_support/tagged_logging.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 25,
+ "\n"
+ ],
+ [
+ 26,
+ " def tagged(*tags)\n"
+ ],
+ [
+ 27,
+ " new_tags = push_tags(*tags)\n"
+ ],
+ [
+ 28,
+ " yield self\n"
+ ],
+ [
+ 29,
+ " ensure\n"
+ ],
+ [
+ 30,
+ " pop_tags(new_tags.size)\n"
+ ],
+ [
+ 31,
+ " end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "block in tagged",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/tagged_logging.rb",
+ "inApp": false,
+ "lineNo": 71,
+ "module": null,
+ "filename": "active_support/tagged_logging.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 68,
+ " delegate :push_tags, :pop_tags, :clear_tags!, to: :formatter\n"
+ ],
+ [
+ 69,
+ "\n"
+ ],
+ [
+ 70,
+ " def tagged(*tags)\n"
+ ],
+ [
+ 71,
+ " formatter.tagged(*tags) { yield self }\n"
+ ],
+ [
+ 72,
+ " end\n"
+ ],
+ [
+ 73,
+ "\n"
+ ],
+ [
+ 74,
+ " def flush\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "block in call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/railties-5.2.3/lib/rails/rack/logger.rb",
+ "inApp": false,
+ "lineNo": 26,
+ "module": null,
+ "filename": "rails/rack/logger.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 23,
+ " request = ActionDispatch::Request.new(env)\n"
+ ],
+ [
+ 24,
+ "\n"
+ ],
+ [
+ 25,
+ " if logger.respond_to?(:tagged)\n"
+ ],
+ [
+ 26,
+ " logger.tagged(compute_tags(request)) { call_app(request, env) }\n"
+ ],
+ [
+ 27,
+ " else\n"
+ ],
+ [
+ 28,
+ " call_app(request, env)\n"
+ ],
+ [
+ 29,
+ " end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call_app",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/railties-5.2.3/lib/rails/rack/logger.rb",
+ "inApp": false,
+ "lineNo": 38,
+ "module": null,
+ "filename": "rails/rack/logger.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 38,
+ " status, headers, body = @app.call(env)\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/actionpack-5.2.3/lib/action_dispatch/middleware/show_exceptions.rb",
+ "inApp": false,
+ "lineNo": 33,
+ "module": null,
+ "filename": "action_dispatch/middleware/show_exceptions.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 33,
+ " @app.call(env)\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/web-console-3.7.0/lib/web_console/middleware.rb",
+ "inApp": false,
+ "lineNo": 20,
+ "module": null,
+ "filename": "web_console/middleware.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 20,
+ " app_exception = catch :app_exception do\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "catch",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/web-console-3.7.0/lib/web_console/middleware.rb",
+ "inApp": false,
+ "lineNo": 20,
+ "module": null,
+ "filename": "web_console/middleware.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 17,
+ " end\n"
+ ],
+ [
+ 18,
+ "\n"
+ ],
+ [
+ 19,
+ " def call(env)\n"
+ ],
+ [
+ 20,
+ " app_exception = catch :app_exception do\n"
+ ],
+ [
+ 21,
+ " request = create_regular_or_whiny_request(env)\n"
+ ],
+ [
+ 22,
+ " return call_app(env) unless request.from_whitelisted_ip?\n"
+ ],
+ [
+ 23,
+ "\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "block in call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/web-console-3.7.0/lib/web_console/middleware.rb",
+ "inApp": false,
+ "lineNo": 30,
+ "module": null,
+ "filename": "web_console/middleware.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 27,
+ " return change_stack_trace(id, request)\n"
+ ],
+ [
+ 28,
+ " end\n"
+ ],
+ [
+ 29,
+ "\n"
+ ],
+ [
+ 30,
+ " status, headers, body = call_app(env)\n"
+ ],
+ [
+ 31,
+ "\n"
+ ],
+ [
+ 32,
+ " if (session = Session.from(Thread.current)) && acceptable_content_type?(headers)\n"
+ ],
+ [
+ 33,
+ " headers[\"X-Web-Console-Session-Id\"] = session.id\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call_app",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/web-console-3.7.0/lib/web_console/middleware.rb",
+ "inApp": false,
+ "lineNo": 135,
+ "module": null,
+ "filename": "web_console/middleware.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 132,
+ " end\n"
+ ],
+ [
+ 133,
+ "\n"
+ ],
+ [
+ 134,
+ " def call_app(env)\n"
+ ],
+ [
+ 135,
+ " @app.call(env)\n"
+ ],
+ [
+ 136,
+ " rescue => e\n"
+ ],
+ [
+ 137,
+ " throw :app_exception, e\n"
+ ],
+ [
+ 138,
+ " end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/actionpack-5.2.3/lib/action_dispatch/middleware/debug_exceptions.rb",
+ "inApp": false,
+ "lineNo": 61,
+ "module": null,
+ "filename": "action_dispatch/middleware/debug_exceptions.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 58,
+ "\n"
+ ],
+ [
+ 59,
+ " def call(env)\n"
+ ],
+ [
+ 60,
+ " request = ActionDispatch::Request.new env\n"
+ ],
+ [
+ 61,
+ " _, headers, body = response = @app.call(env)\n"
+ ],
+ [
+ 62,
+ "\n"
+ ],
+ [
+ 63,
+ " if headers[\"X-Cascade\"] == \"pass\"\n"
+ ],
+ [
+ 64,
+ " body.close if body.respond_to?(:close)\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/actionpack-5.2.3/lib/action_dispatch/middleware/executor.rb",
+ "inApp": false,
+ "lineNo": 14,
+ "module": null,
+ "filename": "action_dispatch/middleware/executor.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 11,
+ " def call(env)\n"
+ ],
+ [
+ 12,
+ " state = @executor.run!\n"
+ ],
+ [
+ 13,
+ " begin\n"
+ ],
+ [
+ 14,
+ " response = @app.call(env)\n"
+ ],
+ [
+ 15,
+ " returned = response << ::Rack::BodyProxy.new(response.pop) { state.complete! }\n"
+ ],
+ [
+ 16,
+ " ensure\n"
+ ],
+ [
+ 17,
+ " state.complete! unless returned\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/actionpack-5.2.3/lib/action_dispatch/middleware/callbacks.rb",
+ "inApp": false,
+ "lineNo": 26,
+ "module": null,
+ "filename": "action_dispatch/middleware/callbacks.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 23,
+ "\n"
+ ],
+ [
+ 24,
+ " def call(env)\n"
+ ],
+ [
+ 25,
+ " error = nil\n"
+ ],
+ [
+ 26,
+ " result = run_callbacks :call do\n"
+ ],
+ [
+ 27,
+ " begin\n"
+ ],
+ [
+ 28,
+ " @app.call(env)\n"
+ ],
+ [
+ 29,
+ " rescue => error\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "run_callbacks",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/callbacks.rb",
+ "inApp": false,
+ "lineNo": 98,
+ "module": null,
+ "filename": "active_support/callbacks.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 95,
+ " callbacks = __callbacks[kind.to_sym]\n"
+ ],
+ [
+ 96,
+ "\n"
+ ],
+ [
+ 97,
+ " if callbacks.empty?\n"
+ ],
+ [
+ 98,
+ " yield if block_given?\n"
+ ],
+ [
+ 99,
+ " else\n"
+ ],
+ [
+ 100,
+ " env = Filters::Environment.new(self, false, nil)\n"
+ ],
+ [
+ 101,
+ " next_sequence = callbacks.compile\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "block in call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/actionpack-5.2.3/lib/action_dispatch/middleware/callbacks.rb",
+ "inApp": false,
+ "lineNo": 28,
+ "module": null,
+ "filename": "action_dispatch/middleware/callbacks.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 25,
+ " error = nil\n"
+ ],
+ [
+ 26,
+ " result = run_callbacks :call do\n"
+ ],
+ [
+ 27,
+ " begin\n"
+ ],
+ [
+ 28,
+ " @app.call(env)\n"
+ ],
+ [
+ 29,
+ " rescue => error\n"
+ ],
+ [
+ 30,
+ " end\n"
+ ],
+ [
+ 31,
+ " end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/migration.rb",
+ "inApp": false,
+ "lineNo": 554,
+ "module": null,
+ "filename": "active_record/migration.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 551,
+ " end\n"
+ ],
+ [
+ 552,
+ "\n"
+ ],
+ [
+ 553,
+ " def call(env)\n"
+ ],
+ [
+ 554,
+ " mtime = ActiveRecord::Base.connection.migration_context.last_migration.mtime.to_i\n"
+ ],
+ [
+ 555,
+ " if @last_check < mtime\n"
+ ],
+ [
+ 556,
+ " ActiveRecord::Migration.check_pending!(connection)\n"
+ ],
+ [
+ 557,
+ " @last_check = mtime\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "connection",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb",
+ "inApp": false,
+ "lineNo": 90,
+ "module": null,
+ "filename": "active_record/connection_handling.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 87,
+ " # also be used to \"borrow\" the connection to do database work unrelated\n"
+ ],
+ [
+ 88,
+ " # to any of the specific Active Records.\n"
+ ],
+ [
+ 89,
+ " def connection\n"
+ ],
+ [
+ 90,
+ " retrieve_connection\n"
+ ],
+ [
+ 91,
+ " end\n"
+ ],
+ [
+ 92,
+ "\n"
+ ],
+ [
+ 93,
+ " attr_writer :connection_specification_name\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "retrieve_connection",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb",
+ "inApp": false,
+ "lineNo": 118,
+ "module": null,
+ "filename": "active_record/connection_handling.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 115,
+ " end\n"
+ ],
+ [
+ 116,
+ "\n"
+ ],
+ [
+ 117,
+ " def retrieve_connection\n"
+ ],
+ [
+ 118,
+ " connection_handler.retrieve_connection(connection_specification_name)\n"
+ ],
+ [
+ 119,
+ " end\n"
+ ],
+ [
+ 120,
+ "\n"
+ ],
+ [
+ 121,
+ " # Returns +true+ if Active Record is connected.\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "retrieve_connection",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb",
+ "inApp": false,
+ "lineNo": 1014,
+ "module": null,
+ "filename": "active_record/connection_adapters/abstract/connection_pool.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 1011,
+ " def retrieve_connection(spec_name) #:nodoc:\n"
+ ],
+ [
+ 1012,
+ " pool = retrieve_connection_pool(spec_name)\n"
+ ],
+ [
+ 1013,
+ " raise ConnectionNotEstablished, \"No connection pool with '#{spec_name}' found.\" unless pool\n"
+ ],
+ [
+ 1014,
+ " pool.connection\n"
+ ],
+ [
+ 1015,
+ " end\n"
+ ],
+ [
+ 1016,
+ "\n"
+ ],
+ [
+ 1017,
+ " # Returns true if a connection that's accessible to this class has\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "connection",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb",
+ "inApp": false,
+ "lineNo": 382,
+ "module": null,
+ "filename": "active_record/connection_adapters/abstract/connection_pool.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 379,
+ " # #connection can be called any number of times; the connection is\n"
+ ],
+ [
+ 380,
+ " # held in a cache keyed by a thread.\n"
+ ],
+ [
+ 381,
+ " def connection\n"
+ ],
+ [
+ 382,
+ " @thread_cached_conns[connection_cache_key(@lock_thread || Thread.current)] ||= checkout\n"
+ ],
+ [
+ 383,
+ " end\n"
+ ],
+ [
+ 384,
+ "\n"
+ ],
+ [
+ 385,
+ " # Returns true if there is an open connection being used for the current thread.\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "checkout",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb",
+ "inApp": false,
+ "lineNo": 523,
+ "module": null,
+ "filename": "active_record/connection_adapters/abstract/connection_pool.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 520,
+ " # Raises:\n"
+ ],
+ [
+ 521,
+ " # - ActiveRecord::ConnectionTimeoutError no connection can be obtained from the pool.\n"
+ ],
+ [
+ 522,
+ " def checkout(checkout_timeout = @checkout_timeout)\n"
+ ],
+ [
+ 523,
+ " checkout_and_verify(acquire_connection(checkout_timeout))\n"
+ ],
+ [
+ 524,
+ " end\n"
+ ],
+ [
+ 525,
+ "\n"
+ ],
+ [
+ 526,
+ " # Check-in a database connection back into the pool, indicating that you\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "acquire_connection",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb",
+ "inApp": false,
+ "lineNo": 795,
+ "module": null,
+ "filename": "active_record/connection_adapters/abstract/connection_pool.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 792,
+ " # <tt>synchronize { conn.lease }</tt> in this method, but by leaving it to <tt>@available.poll</tt>\n"
+ ],
+ [
+ 793,
+ " # and +try_to_checkout_new_connection+ we can piggyback on +synchronize+ sections\n"
+ ],
+ [
+ 794,
+ " # of the said methods and avoid an additional +synchronize+ overhead.\n"
+ ],
+ [
+ 795,
+ " if conn = @available.poll || try_to_checkout_new_connection\n"
+ ],
+ [
+ 796,
+ " conn\n"
+ ],
+ [
+ 797,
+ " else\n"
+ ],
+ [
+ 798,
+ " reap\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "try_to_checkout_new_connection",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb",
+ "inApp": false,
+ "lineNo": 834,
+ "module": null,
+ "filename": "active_record/connection_adapters/abstract/connection_pool.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 831,
+ " begin\n"
+ ],
+ [
+ 832,
+ " # if successfully incremented @now_connecting establish new connection\n"
+ ],
+ [
+ 833,
+ " # outside of synchronized section\n"
+ ],
+ [
+ 834,
+ " conn = checkout_new_connection\n"
+ ],
+ [
+ 835,
+ " ensure\n"
+ ],
+ [
+ 836,
+ " synchronize do\n"
+ ],
+ [
+ 837,
+ " if conn\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "checkout_new_connection",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb",
+ "inApp": false,
+ "lineNo": 855,
+ "module": null,
+ "filename": "active_record/connection_adapters/abstract/connection_pool.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 852,
+ "\n"
+ ],
+ [
+ 853,
+ " def checkout_new_connection\n"
+ ],
+ [
+ 854,
+ " raise ConnectionNotEstablished unless @automatic_reconnect\n"
+ ],
+ [
+ 855,
+ " new_connection\n"
+ ],
+ [
+ 856,
+ " end\n"
+ ],
+ [
+ 857,
+ "\n"
+ ],
+ [
+ 858,
+ " def checkout_and_verify(c)\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "new_connection",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb",
+ "inApp": false,
+ "lineNo": 811,
+ "module": null,
+ "filename": "active_record/connection_adapters/abstract/connection_pool.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 808,
+ " alias_method :release, :remove_connection_from_thread_cache\n"
+ ],
+ [
+ 809,
+ "\n"
+ ],
+ [
+ 810,
+ " def new_connection\n"
+ ],
+ [
+ 811,
+ " Base.send(spec.adapter_method, spec.config).tap do |conn|\n"
+ ],
+ [
+ 812,
+ " conn.schema_cache = schema_cache.dup if schema_cache\n"
+ ],
+ [
+ 813,
+ " end\n"
+ ],
+ [
+ 814,
+ " end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "postgresql_connection",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb",
+ "inApp": false,
+ "lineNo": 48,
+ "module": null,
+ "filename": "active_record/connection_adapters/postgresql_adapter.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 45,
+ "\n"
+ ],
+ [
+ 46,
+ " # The postgres drivers don't allow the creation of an unconnected PG::Connection object,\n"
+ ],
+ [
+ 47,
+ " # so just pass a nil connection object for the time being.\n"
+ ],
+ [
+ 48,
+ " ConnectionAdapters::PostgreSQLAdapter.new(nil, logger, conn_params, config)\n"
+ ],
+ [
+ 49,
+ " end\n"
+ ],
+ [
+ 50,
+ " end\n"
+ ],
+ [
+ 51,
+ "\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "new",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb",
+ "inApp": false,
+ "lineNo": 48,
+ "module": null,
+ "filename": "active_record/connection_adapters/postgresql_adapter.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 45,
+ "\n"
+ ],
+ [
+ 46,
+ " # The postgres drivers don't allow the creation of an unconnected PG::Connection object,\n"
+ ],
+ [
+ 47,
+ " # so just pass a nil connection object for the time being.\n"
+ ],
+ [
+ 48,
+ " ConnectionAdapters::PostgreSQLAdapter.new(nil, logger, conn_params, config)\n"
+ ],
+ [
+ 49,
+ " end\n"
+ ],
+ [
+ 50,
+ " end\n"
+ ],
+ [
+ 51,
+ "\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "initialize",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb",
+ "inApp": false,
+ "lineNo": 223,
+ "module": null,
+ "filename": "active_record/connection_adapters/postgresql_adapter.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 220,
+ " @local_tz = nil\n"
+ ],
+ [
+ 221,
+ " @max_identifier_length = nil\n"
+ ],
+ [
+ 222,
+ "\n"
+ ],
+ [
+ 223,
+ " connect\n"
+ ],
+ [
+ 224,
+ " add_pg_encoders\n"
+ ],
+ [
+ 225,
+ " @statements = StatementPool.new @connection,\n"
+ ],
+ [
+ 226,
+ " self.class.type_cast_config_to_integer(config[:statement_limit])\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "connect",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb",
+ "inApp": false,
+ "lineNo": 692,
+ "module": null,
+ "filename": "active_record/connection_adapters/postgresql_adapter.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 689,
+ " # Connects to a PostgreSQL server and sets up the adapter depending on the\n"
+ ],
+ [
+ 690,
+ " # connected server's characteristics.\n"
+ ],
+ [
+ 691,
+ " def connect\n"
+ ],
+ [
+ 692,
+ " @connection = PG.connect(@connection_parameters)\n"
+ ],
+ [
+ 693,
+ " configure_connection\n"
+ ],
+ [
+ 694,
+ " rescue ::PG::Error => error\n"
+ ],
+ [
+ 695,
+ " if error.message.include?(\"does not exist\")\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "connect",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/pg-1.1.4/lib/pg.rb",
+ "inApp": false,
+ "lineNo": 56,
+ "module": null,
+ "filename": "pg.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 53,
+ "\n"
+ ],
+ [
+ 54,
+ "\t### Convenience alias for PG::Connection.new.\n"
+ ],
+ [
+ 55,
+ "\tdef self::connect( *args )\n"
+ ],
+ [
+ 56,
+ "\t\treturn PG::Connection.new( *args )\n"
+ ],
+ [
+ 57,
+ "\tend\n"
+ ],
+ [
+ 58,
+ "\n"
+ ],
+ [
+ 59,
+ "\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "new",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/pg-1.1.4/lib/pg.rb",
+ "inApp": false,
+ "lineNo": 56,
+ "module": null,
+ "filename": "pg.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 53,
+ "\n"
+ ],
+ [
+ 54,
+ "\t### Convenience alias for PG::Connection.new.\n"
+ ],
+ [
+ 55,
+ "\tdef self::connect( *args )\n"
+ ],
+ [
+ 56,
+ "\t\treturn PG::Connection.new( *args )\n"
+ ],
+ [
+ 57,
+ "\tend\n"
+ ],
+ [
+ 58,
+ "\n"
+ ],
+ [
+ 59,
+ "\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "initialize",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/pg-1.1.4/lib/pg.rb",
+ "inApp": false,
+ "lineNo": 56,
+ "module": null,
+ "filename": "pg.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 53,
+ "\n"
+ ],
+ [
+ 54,
+ "\t### Convenience alias for PG::Connection.new.\n"
+ ],
+ [
+ 55,
+ "\tdef self::connect( *args )\n"
+ ],
+ [
+ 56,
+ "\t\treturn PG::Connection.new( *args )\n"
+ ],
+ [
+ 57,
+ "\tend\n"
+ ],
+ [
+ 58,
+ "\n"
+ ],
+ [
+ 59,
+ "\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ }
+ ],
+ "framesOmitted": null,
+ "registers": null,
+ "hasSystemFrames": false
+ },
+ "module": "PG",
+ "rawStacktrace": null,
+ "mechanism": null,
+ "threadId": null,
+ "value": "FATAL: database \"test_development\" does not exist\n",
+ "type": "PG::ConnectionBad"
+ },
+ {
+ "stacktrace": {
+ "frames": [
+ {
+ "function": "block in spawn_thread",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/puma-3.12.1/lib/puma/thread_pool.rb",
+ "inApp": false,
+ "lineNo": 135,
+ "module": null,
+ "filename": "puma/thread_pool.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 132,
+ " end\n"
+ ],
+ [
+ 133,
+ "\n"
+ ],
+ [
+ 134,
+ " begin\n"
+ ],
+ [
+ 135,
+ " block.call(work, *extra)\n"
+ ],
+ [
+ 136,
+ " rescue Exception => e\n"
+ ],
+ [
+ 137,
+ " STDERR.puts \"Error reached top of thread-pool: #{e.message} (#{e.class})\"\n"
+ ],
+ [
+ 138,
+ " end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "block in run",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/puma-3.12.1/lib/puma/server.rb",
+ "inApp": false,
+ "lineNo": 334,
+ "module": null,
+ "filename": "puma/server.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 331,
+ " client.close\n"
+ ],
+ [
+ 332,
+ " else\n"
+ ],
+ [
+ 333,
+ " if process_now\n"
+ ],
+ [
+ 334,
+ " process_client client, buffer\n"
+ ],
+ [
+ 335,
+ " else\n"
+ ],
+ [
+ 336,
+ " client.set_timeout @first_data_timeout\n"
+ ],
+ [
+ 337,
+ " @reactor.add client\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "process_client",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/puma-3.12.1/lib/puma/server.rb",
+ "inApp": false,
+ "lineNo": 474,
+ "module": null,
+ "filename": "puma/server.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 471,
+ " close_socket = true\n"
+ ],
+ [
+ 472,
+ "\n"
+ ],
+ [
+ 473,
+ " while true\n"
+ ],
+ [
+ 474,
+ " case handle_request(client, buffer)\n"
+ ],
+ [
+ 475,
+ " when false\n"
+ ],
+ [
+ 476,
+ " return\n"
+ ],
+ [
+ 477,
+ " when :async\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "handle_request",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/puma-3.12.1/lib/puma/server.rb",
+ "inApp": false,
+ "lineNo": 660,
+ "module": null,
+ "filename": "puma/server.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 657,
+ "\n"
+ ],
+ [
+ 658,
+ " begin\n"
+ ],
+ [
+ 659,
+ " begin\n"
+ ],
+ [
+ 660,
+ " status, headers, res_body = @app.call(env)\n"
+ ],
+ [
+ 661,
+ "\n"
+ ],
+ [
+ 662,
+ " return :async if req.hijacked\n"
+ ],
+ [
+ 663,
+ "\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/puma-3.12.1/lib/puma/configuration.rb",
+ "inApp": false,
+ "lineNo": 227,
+ "module": null,
+ "filename": "puma/configuration.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 224,
+ "\n"
+ ],
+ [
+ 225,
+ " def call(env)\n"
+ ],
+ [
+ 226,
+ " env[Const::PUMA_CONFIG] = @config\n"
+ ],
+ [
+ 227,
+ " @app.call(env)\n"
+ ],
+ [
+ 228,
+ " end\n"
+ ],
+ [
+ 229,
+ " end\n"
+ ],
+ [
+ 230,
+ "\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/prometheus-client-mmap-0.9.8/lib/prometheus/client/rack/collector.rb",
+ "inApp": false,
+ "lineNo": 24,
+ "module": null,
+ "filename": "prometheus/client/rack/collector.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 21,
+ " end\n"
+ ],
+ [
+ 22,
+ "\n"
+ ],
+ [
+ 23,
+ " def call(env) # :nodoc:\n"
+ ],
+ [
+ 24,
+ " trace(env) { @app.call(env) }\n"
+ ],
+ [
+ 25,
+ " end\n"
+ ],
+ [
+ 26,
+ "\n"
+ ],
+ [
+ 27,
+ " protected\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "trace",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/prometheus-client-mmap-0.9.8/lib/prometheus/client/rack/collector.rb",
+ "inApp": false,
+ "lineNo": 61,
+ "module": null,
+ "filename": "prometheus/client/rack/collector.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 58,
+ "\n"
+ ],
+ [
+ 59,
+ " def trace(env)\n"
+ ],
+ [
+ 60,
+ " start = Time.now\n"
+ ],
+ [
+ 61,
+ " yield.tap do |response|\n"
+ ],
+ [
+ 62,
+ " duration = (Time.now - start).to_f\n"
+ ],
+ [
+ 63,
+ " record(labels(env, response), duration)\n"
+ ],
+ [
+ 64,
+ " end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "block in call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/prometheus-client-mmap-0.9.8/lib/prometheus/client/rack/collector.rb",
+ "inApp": false,
+ "lineNo": 24,
+ "module": null,
+ "filename": "prometheus/client/rack/collector.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 21,
+ " end\n"
+ ],
+ [
+ 22,
+ "\n"
+ ],
+ [
+ 23,
+ " def call(env) # :nodoc:\n"
+ ],
+ [
+ 24,
+ " trace(env) { @app.call(env) }\n"
+ ],
+ [
+ 25,
+ " end\n"
+ ],
+ [
+ 26,
+ "\n"
+ ],
+ [
+ 27,
+ " protected\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/prometheus-client-mmap-0.9.8/lib/prometheus/client/rack/exporter.rb",
+ "inApp": false,
+ "lineNo": 29,
+ "module": null,
+ "filename": "prometheus/client/rack/exporter.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 26,
+ " format = negotiate(env['HTTP_ACCEPT'], @acceptable)\n"
+ ],
+ [
+ 27,
+ " format ? respond_with(format) : not_acceptable(FORMATS)\n"
+ ],
+ [
+ 28,
+ " else\n"
+ ],
+ [
+ 29,
+ " @app.call(env)\n"
+ ],
+ [
+ 30,
+ " end\n"
+ ],
+ [
+ 31,
+ " end\n"
+ ],
+ [
+ 32,
+ "\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/railties-5.2.3/lib/rails/engine.rb",
+ "inApp": false,
+ "lineNo": 524,
+ "module": null,
+ "filename": "rails/engine.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 521,
+ " # Define the Rack API for this engine.\n"
+ ],
+ [
+ 522,
+ " def call(env)\n"
+ ],
+ [
+ 523,
+ " req = build_request env\n"
+ ],
+ [
+ 524,
+ " app.call req.env\n"
+ ],
+ [
+ 525,
+ " end\n"
+ ],
+ [
+ 526,
+ "\n"
+ ],
+ [
+ 527,
+ " # Defines additional Rack env configuration that is added on each call.\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/sentry-raven-2.12.3/lib/raven/integrations/rack.rb",
+ "inApp": false,
+ "lineNo": 51,
+ "module": null,
+ "filename": "raven/integrations/rack.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 48,
+ " Raven.context.transaction.push(env[\"PATH_INFO\"]) if env[\"PATH_INFO\"]\n"
+ ],
+ [
+ 49,
+ "\n"
+ ],
+ [
+ 50,
+ " begin\n"
+ ],
+ [
+ 51,
+ " response = @app.call(env)\n"
+ ],
+ [
+ 52,
+ " rescue Error\n"
+ ],
+ [
+ 53,
+ " raise # Don't capture Raven errors\n"
+ ],
+ [
+ 54,
+ " rescue Exception => e\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/rack-2.0.7/lib/rack/sendfile.rb",
+ "inApp": false,
+ "lineNo": 111,
+ "module": null,
+ "filename": "rack/sendfile.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 108,
+ " end\n"
+ ],
+ [
+ 109,
+ "\n"
+ ],
+ [
+ 110,
+ " def call(env)\n"
+ ],
+ [
+ 111,
+ " status, headers, body = @app.call(env)\n"
+ ],
+ [
+ 112,
+ " if body.respond_to?(:to_path)\n"
+ ],
+ [
+ 113,
+ " case type = variation(env)\n"
+ ],
+ [
+ 114,
+ " when 'X-Accel-Redirect'\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/actionpack-5.2.3/lib/action_dispatch/middleware/static.rb",
+ "inApp": false,
+ "lineNo": 127,
+ "module": null,
+ "filename": "action_dispatch/middleware/static.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 124,
+ " end\n"
+ ],
+ [
+ 125,
+ " end\n"
+ ],
+ [
+ 126,
+ "\n"
+ ],
+ [
+ 127,
+ " @app.call(req.env)\n"
+ ],
+ [
+ 128,
+ " end\n"
+ ],
+ [
+ 129,
+ " end\n"
+ ],
+ [
+ 130,
+ "end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/actionpack-5.2.3/lib/action_dispatch/middleware/executor.rb",
+ "inApp": false,
+ "lineNo": 14,
+ "module": null,
+ "filename": "action_dispatch/middleware/executor.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 11,
+ " def call(env)\n"
+ ],
+ [
+ 12,
+ " state = @executor.run!\n"
+ ],
+ [
+ 13,
+ " begin\n"
+ ],
+ [
+ 14,
+ " response = @app.call(env)\n"
+ ],
+ [
+ 15,
+ " returned = response << ::Rack::BodyProxy.new(response.pop) { state.complete! }\n"
+ ],
+ [
+ 16,
+ " ensure\n"
+ ],
+ [
+ 17,
+ " state.complete! unless returned\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/cache/strategy/local_cache_middleware.rb",
+ "inApp": false,
+ "lineNo": 29,
+ "module": null,
+ "filename": "active_support/cache/strategy/local_cache_middleware.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 26,
+ "\n"
+ ],
+ [
+ 27,
+ " def call(env)\n"
+ ],
+ [
+ 28,
+ " LocalCacheRegistry.set_cache_for(local_cache_key, LocalStore.new)\n"
+ ],
+ [
+ 29,
+ " response = @app.call(env)\n"
+ ],
+ [
+ 30,
+ " response[2] = ::Rack::BodyProxy.new(response[2]) do\n"
+ ],
+ [
+ 31,
+ " LocalCacheRegistry.set_cache_for(local_cache_key, nil)\n"
+ ],
+ [
+ 32,
+ " end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/rack-2.0.7/lib/rack/runtime.rb",
+ "inApp": false,
+ "lineNo": 22,
+ "module": null,
+ "filename": "rack/runtime.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 19,
+ "\n"
+ ],
+ [
+ 20,
+ " def call(env)\n"
+ ],
+ [
+ 21,
+ " start_time = Utils.clock_time\n"
+ ],
+ [
+ 22,
+ " status, headers, body = @app.call(env)\n"
+ ],
+ [
+ 23,
+ " request_time = Utils.clock_time - start_time\n"
+ ],
+ [
+ 24,
+ "\n"
+ ],
+ [
+ 25,
+ " unless headers.has_key?(@header_name)\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/rack-2.0.7/lib/rack/method_override.rb",
+ "inApp": false,
+ "lineNo": 22,
+ "module": null,
+ "filename": "rack/method_override.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 19,
+ " end\n"
+ ],
+ [
+ 20,
+ " end\n"
+ ],
+ [
+ 21,
+ "\n"
+ ],
+ [
+ 22,
+ " @app.call(env)\n"
+ ],
+ [
+ 23,
+ " end\n"
+ ],
+ [
+ 24,
+ "\n"
+ ],
+ [
+ 25,
+ " def method_override(env)\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/actionpack-5.2.3/lib/action_dispatch/middleware/request_id.rb",
+ "inApp": false,
+ "lineNo": 27,
+ "module": null,
+ "filename": "action_dispatch/middleware/request_id.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 24,
+ " def call(env)\n"
+ ],
+ [
+ 25,
+ " req = ActionDispatch::Request.new env\n"
+ ],
+ [
+ 26,
+ " req.request_id = make_request_id(req.x_request_id)\n"
+ ],
+ [
+ 27,
+ " @app.call(env).tap { |_status, headers, _body| headers[X_REQUEST_ID] = req.request_id }\n"
+ ],
+ [
+ 28,
+ " end\n"
+ ],
+ [
+ 29,
+ "\n"
+ ],
+ [
+ 30,
+ " private\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/actionpack-5.2.3/lib/action_dispatch/middleware/remote_ip.rb",
+ "inApp": false,
+ "lineNo": 81,
+ "module": null,
+ "filename": "action_dispatch/middleware/remote_ip.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 78,
+ " def call(env)\n"
+ ],
+ [
+ 79,
+ " req = ActionDispatch::Request.new env\n"
+ ],
+ [
+ 80,
+ " req.remote_ip = GetIp.new(req, check_ip, proxies)\n"
+ ],
+ [
+ 81,
+ " @app.call(req.env)\n"
+ ],
+ [
+ 82,
+ " end\n"
+ ],
+ [
+ 83,
+ "\n"
+ ],
+ [
+ 84,
+ " # The GetIp class exists as a way to defer processing of the request data\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/sprockets-rails-3.2.1/lib/sprockets/rails/quiet_assets.rb",
+ "inApp": false,
+ "lineNo": 13,
+ "module": null,
+ "filename": "sprockets/rails/quiet_assets.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 10,
+ " if env['PATH_INFO'] =~ @assets_regex\n"
+ ],
+ [
+ 11,
+ " ::Rails.logger.silence { @app.call(env) }\n"
+ ],
+ [
+ 12,
+ " else\n"
+ ],
+ [
+ 13,
+ " @app.call(env)\n"
+ ],
+ [
+ 14,
+ " end\n"
+ ],
+ [
+ 15,
+ " end\n"
+ ],
+ [
+ 16,
+ " end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/railties-5.2.3/lib/rails/rack/logger.rb",
+ "inApp": false,
+ "lineNo": 26,
+ "module": null,
+ "filename": "rails/rack/logger.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 23,
+ " request = ActionDispatch::Request.new(env)\n"
+ ],
+ [
+ 24,
+ "\n"
+ ],
+ [
+ 25,
+ " if logger.respond_to?(:tagged)\n"
+ ],
+ [
+ 26,
+ " logger.tagged(compute_tags(request)) { call_app(request, env) }\n"
+ ],
+ [
+ 27,
+ " else\n"
+ ],
+ [
+ 28,
+ " call_app(request, env)\n"
+ ],
+ [
+ 29,
+ " end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "tagged",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/tagged_logging.rb",
+ "inApp": false,
+ "lineNo": 71,
+ "module": null,
+ "filename": "active_support/tagged_logging.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 68,
+ " delegate :push_tags, :pop_tags, :clear_tags!, to: :formatter\n"
+ ],
+ [
+ 69,
+ "\n"
+ ],
+ [
+ 70,
+ " def tagged(*tags)\n"
+ ],
+ [
+ 71,
+ " formatter.tagged(*tags) { yield self }\n"
+ ],
+ [
+ 72,
+ " end\n"
+ ],
+ [
+ 73,
+ "\n"
+ ],
+ [
+ 74,
+ " def flush\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "tagged",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/tagged_logging.rb",
+ "inApp": false,
+ "lineNo": 28,
+ "module": null,
+ "filename": "active_support/tagged_logging.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 25,
+ "\n"
+ ],
+ [
+ 26,
+ " def tagged(*tags)\n"
+ ],
+ [
+ 27,
+ " new_tags = push_tags(*tags)\n"
+ ],
+ [
+ 28,
+ " yield self\n"
+ ],
+ [
+ 29,
+ " ensure\n"
+ ],
+ [
+ 30,
+ " pop_tags(new_tags.size)\n"
+ ],
+ [
+ 31,
+ " end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "block in tagged",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/tagged_logging.rb",
+ "inApp": false,
+ "lineNo": 71,
+ "module": null,
+ "filename": "active_support/tagged_logging.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 68,
+ " delegate :push_tags, :pop_tags, :clear_tags!, to: :formatter\n"
+ ],
+ [
+ 69,
+ "\n"
+ ],
+ [
+ 70,
+ " def tagged(*tags)\n"
+ ],
+ [
+ 71,
+ " formatter.tagged(*tags) { yield self }\n"
+ ],
+ [
+ 72,
+ " end\n"
+ ],
+ [
+ 73,
+ "\n"
+ ],
+ [
+ 74,
+ " def flush\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "block in call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/railties-5.2.3/lib/rails/rack/logger.rb",
+ "inApp": false,
+ "lineNo": 26,
+ "module": null,
+ "filename": "rails/rack/logger.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 23,
+ " request = ActionDispatch::Request.new(env)\n"
+ ],
+ [
+ 24,
+ "\n"
+ ],
+ [
+ 25,
+ " if logger.respond_to?(:tagged)\n"
+ ],
+ [
+ 26,
+ " logger.tagged(compute_tags(request)) { call_app(request, env) }\n"
+ ],
+ [
+ 27,
+ " else\n"
+ ],
+ [
+ 28,
+ " call_app(request, env)\n"
+ ],
+ [
+ 29,
+ " end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call_app",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/railties-5.2.3/lib/rails/rack/logger.rb",
+ "inApp": false,
+ "lineNo": 38,
+ "module": null,
+ "filename": "rails/rack/logger.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 38,
+ " status, headers, body = @app.call(env)\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/actionpack-5.2.3/lib/action_dispatch/middleware/show_exceptions.rb",
+ "inApp": false,
+ "lineNo": 33,
+ "module": null,
+ "filename": "action_dispatch/middleware/show_exceptions.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 30,
+ "\n"
+ ],
+ [
+ 31,
+ " def call(env)\n"
+ ],
+ [
+ 32,
+ " request = ActionDispatch::Request.new env\n"
+ ],
+ [
+ 33,
+ " @app.call(env)\n"
+ ],
+ [
+ 34,
+ " rescue Exception => exception\n"
+ ],
+ [
+ 35,
+ " if request.show_exceptions?\n"
+ ],
+ [
+ 36,
+ " render_exception(request, exception)\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/web-console-3.7.0/lib/web_console/middleware.rb",
+ "inApp": false,
+ "lineNo": 20,
+ "module": null,
+ "filename": "web_console/middleware.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 17,
+ " end\n"
+ ],
+ [
+ 18,
+ "\n"
+ ],
+ [
+ 19,
+ " def call(env)\n"
+ ],
+ [
+ 20,
+ " app_exception = catch :app_exception do\n"
+ ],
+ [
+ 21,
+ " request = create_regular_or_whiny_request(env)\n"
+ ],
+ [
+ 22,
+ " return call_app(env) unless request.from_whitelisted_ip?\n"
+ ],
+ [
+ 23,
+ "\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "catch",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/web-console-3.7.0/lib/web_console/middleware.rb",
+ "inApp": false,
+ "lineNo": 20,
+ "module": null,
+ "filename": "web_console/middleware.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 17,
+ " end\n"
+ ],
+ [
+ 18,
+ "\n"
+ ],
+ [
+ 19,
+ " def call(env)\n"
+ ],
+ [
+ 20,
+ " app_exception = catch :app_exception do\n"
+ ],
+ [
+ 21,
+ " request = create_regular_or_whiny_request(env)\n"
+ ],
+ [
+ 22,
+ " return call_app(env) unless request.from_whitelisted_ip?\n"
+ ],
+ [
+ 23,
+ "\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "block in call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/web-console-3.7.0/lib/web_console/middleware.rb",
+ "inApp": false,
+ "lineNo": 30,
+ "module": null,
+ "filename": "web_console/middleware.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 27,
+ " return change_stack_trace(id, request)\n"
+ ],
+ [
+ 28,
+ " end\n"
+ ],
+ [
+ 29,
+ "\n"
+ ],
+ [
+ 30,
+ " status, headers, body = call_app(env)\n"
+ ],
+ [
+ 31,
+ "\n"
+ ],
+ [
+ 32,
+ " if (session = Session.from(Thread.current)) && acceptable_content_type?(headers)\n"
+ ],
+ [
+ 33,
+ " headers[\"X-Web-Console-Session-Id\"] = session.id\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call_app",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/web-console-3.7.0/lib/web_console/middleware.rb",
+ "inApp": false,
+ "lineNo": 135,
+ "module": null,
+ "filename": "web_console/middleware.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 132,
+ " end\n"
+ ],
+ [
+ 133,
+ "\n"
+ ],
+ [
+ 134,
+ " def call_app(env)\n"
+ ],
+ [
+ 135,
+ " @app.call(env)\n"
+ ],
+ [
+ 136,
+ " rescue => e\n"
+ ],
+ [
+ 137,
+ " throw :app_exception, e\n"
+ ],
+ [
+ 138,
+ " end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/actionpack-5.2.3/lib/action_dispatch/middleware/debug_exceptions.rb",
+ "inApp": false,
+ "lineNo": 61,
+ "module": null,
+ "filename": "action_dispatch/middleware/debug_exceptions.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 58,
+ "\n"
+ ],
+ [
+ 59,
+ " def call(env)\n"
+ ],
+ [
+ 60,
+ " request = ActionDispatch::Request.new env\n"
+ ],
+ [
+ 61,
+ " _, headers, body = response = @app.call(env)\n"
+ ],
+ [
+ 62,
+ "\n"
+ ],
+ [
+ 63,
+ " if headers[\"X-Cascade\"] == \"pass\"\n"
+ ],
+ [
+ 64,
+ " body.close if body.respond_to?(:close)\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/actionpack-5.2.3/lib/action_dispatch/middleware/executor.rb",
+ "inApp": false,
+ "lineNo": 14,
+ "module": null,
+ "filename": "action_dispatch/middleware/executor.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 11,
+ " def call(env)\n"
+ ],
+ [
+ 12,
+ " state = @executor.run!\n"
+ ],
+ [
+ 13,
+ " begin\n"
+ ],
+ [
+ 14,
+ " response = @app.call(env)\n"
+ ],
+ [
+ 15,
+ " returned = response << ::Rack::BodyProxy.new(response.pop) { state.complete! }\n"
+ ],
+ [
+ 16,
+ " ensure\n"
+ ],
+ [
+ 17,
+ " state.complete! unless returned\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/actionpack-5.2.3/lib/action_dispatch/middleware/callbacks.rb",
+ "inApp": false,
+ "lineNo": 26,
+ "module": null,
+ "filename": "action_dispatch/middleware/callbacks.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 23,
+ "\n"
+ ],
+ [
+ 24,
+ " def call(env)\n"
+ ],
+ [
+ 25,
+ " error = nil\n"
+ ],
+ [
+ 26,
+ " result = run_callbacks :call do\n"
+ ],
+ [
+ 27,
+ " begin\n"
+ ],
+ [
+ 28,
+ " @app.call(env)\n"
+ ],
+ [
+ 29,
+ " rescue => error\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "run_callbacks",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/callbacks.rb",
+ "inApp": false,
+ "lineNo": 98,
+ "module": null,
+ "filename": "active_support/callbacks.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 95,
+ " callbacks = __callbacks[kind.to_sym]\n"
+ ],
+ [
+ 96,
+ "\n"
+ ],
+ [
+ 97,
+ " if callbacks.empty?\n"
+ ],
+ [
+ 98,
+ " yield if block_given?\n"
+ ],
+ [
+ 99,
+ " else\n"
+ ],
+ [
+ 100,
+ " env = Filters::Environment.new(self, false, nil)\n"
+ ],
+ [
+ 101,
+ " next_sequence = callbacks.compile\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "block in call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/actionpack-5.2.3/lib/action_dispatch/middleware/callbacks.rb",
+ "inApp": false,
+ "lineNo": 28,
+ "module": null,
+ "filename": "action_dispatch/middleware/callbacks.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 25,
+ " error = nil\n"
+ ],
+ [
+ 26,
+ " result = run_callbacks :call do\n"
+ ],
+ [
+ 27,
+ " begin\n"
+ ],
+ [
+ 28,
+ " @app.call(env)\n"
+ ],
+ [
+ 29,
+ " rescue => error\n"
+ ],
+ [
+ 30,
+ " end\n"
+ ],
+ [
+ 31,
+ " end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "call",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/migration.rb",
+ "inApp": false,
+ "lineNo": 554,
+ "module": null,
+ "filename": "active_record/migration.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 551,
+ " end\n"
+ ],
+ [
+ 552,
+ "\n"
+ ],
+ [
+ 553,
+ " def call(env)\n"
+ ],
+ [
+ 554,
+ " mtime = ActiveRecord::Base.connection.migration_context.last_migration.mtime.to_i\n"
+ ],
+ [
+ 555,
+ " if @last_check < mtime\n"
+ ],
+ [
+ 556,
+ " ActiveRecord::Migration.check_pending!(connection)\n"
+ ],
+ [
+ 557,
+ " @last_check = mtime\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "connection",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb",
+ "inApp": false,
+ "lineNo": 90,
+ "module": null,
+ "filename": "active_record/connection_handling.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 87,
+ " # also be used to \"borrow\" the connection to do database work unrelated\n"
+ ],
+ [
+ 88,
+ " # to any of the specific Active Records.\n"
+ ],
+ [
+ 89,
+ " def connection\n"
+ ],
+ [
+ 90,
+ " retrieve_connection\n"
+ ],
+ [
+ 91,
+ " end\n"
+ ],
+ [
+ 92,
+ "\n"
+ ],
+ [
+ 93,
+ " attr_writer :connection_specification_name\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "retrieve_connection",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb",
+ "inApp": false,
+ "lineNo": 118,
+ "module": null,
+ "filename": "active_record/connection_handling.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 115,
+ " end\n"
+ ],
+ [
+ 116,
+ "\n"
+ ],
+ [
+ 117,
+ " def retrieve_connection\n"
+ ],
+ [
+ 118,
+ " connection_handler.retrieve_connection(connection_specification_name)\n"
+ ],
+ [
+ 119,
+ " end\n"
+ ],
+ [
+ 120,
+ "\n"
+ ],
+ [
+ 121,
+ " # Returns +true+ if Active Record is connected.\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "retrieve_connection",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb",
+ "inApp": false,
+ "lineNo": 1014,
+ "module": null,
+ "filename": "active_record/connection_adapters/abstract/connection_pool.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 1011,
+ " def retrieve_connection(spec_name) #:nodoc:\n"
+ ],
+ [
+ 1012,
+ " pool = retrieve_connection_pool(spec_name)\n"
+ ],
+ [
+ 1013,
+ " raise ConnectionNotEstablished, \"No connection pool with '#{spec_name}' found.\" unless pool\n"
+ ],
+ [
+ 1014,
+ " pool.connection\n"
+ ],
+ [
+ 1015,
+ " end\n"
+ ],
+ [
+ 1016,
+ "\n"
+ ],
+ [
+ 1017,
+ " # Returns true if a connection that's accessible to this class has\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "connection",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb",
+ "inApp": false,
+ "lineNo": 382,
+ "module": null,
+ "filename": "active_record/connection_adapters/abstract/connection_pool.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 379,
+ " # #connection can be called any number of times; the connection is\n"
+ ],
+ [
+ 380,
+ " # held in a cache keyed by a thread.\n"
+ ],
+ [
+ 381,
+ " def connection\n"
+ ],
+ [
+ 382,
+ " @thread_cached_conns[connection_cache_key(@lock_thread || Thread.current)] ||= checkout\n"
+ ],
+ [
+ 383,
+ " end\n"
+ ],
+ [
+ 384,
+ "\n"
+ ],
+ [
+ 385,
+ " # Returns true if there is an open connection being used for the current thread.\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "checkout",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb",
+ "inApp": false,
+ "lineNo": 523,
+ "module": null,
+ "filename": "active_record/connection_adapters/abstract/connection_pool.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 520,
+ " # Raises:\n"
+ ],
+ [
+ 521,
+ " # - ActiveRecord::ConnectionTimeoutError no connection can be obtained from the pool.\n"
+ ],
+ [
+ 522,
+ " def checkout(checkout_timeout = @checkout_timeout)\n"
+ ],
+ [
+ 523,
+ " checkout_and_verify(acquire_connection(checkout_timeout))\n"
+ ],
+ [
+ 524,
+ " end\n"
+ ],
+ [
+ 525,
+ "\n"
+ ],
+ [
+ 526,
+ " # Check-in a database connection back into the pool, indicating that you\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "acquire_connection",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb",
+ "inApp": false,
+ "lineNo": 795,
+ "module": null,
+ "filename": "active_record/connection_adapters/abstract/connection_pool.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 792,
+ " # <tt>synchronize { conn.lease }</tt> in this method, but by leaving it to <tt>@available.poll</tt>\n"
+ ],
+ [
+ 793,
+ " # and +try_to_checkout_new_connection+ we can piggyback on +synchronize+ sections\n"
+ ],
+ [
+ 794,
+ " # of the said methods and avoid an additional +synchronize+ overhead.\n"
+ ],
+ [
+ 795,
+ " if conn = @available.poll || try_to_checkout_new_connection\n"
+ ],
+ [
+ 796,
+ " conn\n"
+ ],
+ [
+ 797,
+ " else\n"
+ ],
+ [
+ 798,
+ " reap\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "try_to_checkout_new_connection",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb",
+ "inApp": false,
+ "lineNo": 834,
+ "module": null,
+ "filename": "active_record/connection_adapters/abstract/connection_pool.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 831,
+ " begin\n"
+ ],
+ [
+ 832,
+ " # if successfully incremented @now_connecting establish new connection\n"
+ ],
+ [
+ 833,
+ " # outside of synchronized section\n"
+ ],
+ [
+ 834,
+ " conn = checkout_new_connection\n"
+ ],
+ [
+ 835,
+ " ensure\n"
+ ],
+ [
+ 836,
+ " synchronize do\n"
+ ],
+ [
+ 837,
+ " if conn\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "checkout_new_connection",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb",
+ "inApp": false,
+ "lineNo": 855,
+ "module": null,
+ "filename": "active_record/connection_adapters/abstract/connection_pool.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 852,
+ "\n"
+ ],
+ [
+ 853,
+ " def checkout_new_connection\n"
+ ],
+ [
+ 854,
+ " raise ConnectionNotEstablished unless @automatic_reconnect\n"
+ ],
+ [
+ 855,
+ " new_connection\n"
+ ],
+ [
+ 856,
+ " end\n"
+ ],
+ [
+ 857,
+ "\n"
+ ],
+ [
+ 858,
+ " def checkout_and_verify(c)\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "new_connection",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb",
+ "inApp": false,
+ "lineNo": 811,
+ "module": null,
+ "filename": "active_record/connection_adapters/abstract/connection_pool.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 808,
+ " alias_method :release, :remove_connection_from_thread_cache\n"
+ ],
+ [
+ 809,
+ "\n"
+ ],
+ [
+ 810,
+ " def new_connection\n"
+ ],
+ [
+ 811,
+ " Base.send(spec.adapter_method, spec.config).tap do |conn|\n"
+ ],
+ [
+ 812,
+ " conn.schema_cache = schema_cache.dup if schema_cache\n"
+ ],
+ [
+ 813,
+ " end\n"
+ ],
+ [
+ 814,
+ " end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "postgresql_connection",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb",
+ "inApp": false,
+ "lineNo": 48,
+ "module": null,
+ "filename": "active_record/connection_adapters/postgresql_adapter.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 45,
+ "\n"
+ ],
+ [
+ 46,
+ " # The postgres drivers don't allow the creation of an unconnected PG::Connection object,\n"
+ ],
+ [
+ 47,
+ " # so just pass a nil connection object for the time being.\n"
+ ],
+ [
+ 48,
+ " ConnectionAdapters::PostgreSQLAdapter.new(nil, logger, conn_params, config)\n"
+ ],
+ [
+ 49,
+ " end\n"
+ ],
+ [
+ 50,
+ " end\n"
+ ],
+ [
+ 51,
+ "\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "new",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb",
+ "inApp": false,
+ "lineNo": 48,
+ "module": null,
+ "filename": "active_record/connection_adapters/postgresql_adapter.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 45,
+ "\n"
+ ],
+ [
+ 46,
+ " # The postgres drivers don't allow the creation of an unconnected PG::Connection object,\n"
+ ],
+ [
+ 47,
+ " # so just pass a nil connection object for the time being.\n"
+ ],
+ [
+ 48,
+ " ConnectionAdapters::PostgreSQLAdapter.new(nil, logger, conn_params, config)\n"
+ ],
+ [
+ 49,
+ " end\n"
+ ],
+ [
+ 50,
+ " end\n"
+ ],
+ [
+ 51,
+ "\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "initialize",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb",
+ "inApp": false,
+ "lineNo": 223,
+ "module": null,
+ "filename": "active_record/connection_adapters/postgresql_adapter.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 220,
+ " @local_tz = nil\n"
+ ],
+ [
+ 221,
+ " @max_identifier_length = nil\n"
+ ],
+ [
+ 222,
+ "\n"
+ ],
+ [
+ 223,
+ " connect\n"
+ ],
+ [
+ 224,
+ " add_pg_encoders\n"
+ ],
+ [
+ 225,
+ " @statements = StatementPool.new @connection,\n"
+ ],
+ [
+ 226,
+ " self.class.type_cast_config_to_integer(config[:statement_limit])\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "connect",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb",
+ "inApp": false,
+ "lineNo": 691,
+ "module": null,
+ "filename": "active_record/connection_adapters/postgresql_adapter.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 688,
+ "\n"
+ ],
+ [
+ 689,
+ " # Connects to a PostgreSQL server and sets up the adapter depending on the\n"
+ ],
+ [
+ 690,
+ " # connected server's characteristics.\n"
+ ],
+ [
+ 691,
+ " def connect\n"
+ ],
+ [
+ 692,
+ " @connection = PG.connect(@connection_parameters)\n"
+ ],
+ [
+ 693,
+ " configure_connection\n"
+ ],
+ [
+ 694,
+ " rescue ::PG::Error => error\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ },
+ {
+ "function": "rescue in connect",
+ "errors": null,
+ "colNo": null,
+ "vars": null,
+ "package": null,
+ "absPath": "/Users/gitlab/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb",
+ "inApp": false,
+ "lineNo": 696,
+ "module": null,
+ "filename": "active_record/connection_adapters/postgresql_adapter.rb",
+ "platform": null,
+ "instructionAddr": null,
+ "context": [
+ [
+ 693,
+ " configure_connection\n"
+ ],
+ [
+ 694,
+ " rescue ::PG::Error => error\n"
+ ],
+ [
+ 695,
+ " if error.message.include?(\"does not exist\")\n"
+ ],
+ [
+ 696,
+ " raise ActiveRecord::NoDatabaseError\n"
+ ],
+ [
+ 697,
+ " else\n"
+ ],
+ [
+ 698,
+ " raise\n"
+ ],
+ [
+ 699,
+ " end\n"
+ ]
+ ],
+ "symbolAddr": null,
+ "trust": null,
+ "symbol": null,
+ "rawFunction": null
+ }
+ ],
+ "framesOmitted": null,
+ "registers": null,
+ "hasSystemFrames": false
+ },
+ "module": "ActiveRecord",
+ "rawStacktrace": null,
+ "mechanism": null,
+ "threadId": null,
+ "value": "FATAL: database \"test_development\" does not exist\n",
+ "type": "ActiveRecord::NoDatabaseError"
+ }
+ ],
+ "excOmitted": null,
+ "hasSystemFrames": false
+ }
+ },
+ {
+ "type": "request",
+ "data": {
+ "fragment": null,
+ "cookies": [],
+ "inferredContentType": null,
+ "env": {
+ "SERVER_PORT": "3001",
+ "SERVER_NAME": "localhost",
+ "REMOTE_ADDR": "::1"
+ },
+ "headers": [
+ [
+ "Accept",
+ "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3"
+ ],
+ [
+ "Accept-Encoding",
+ "gzip, deflate, br"
+ ],
+ [
+ "Accept-Language",
+ "en-GB,en-US;q=0.9,en;q=0.8"
+ ],
+ [
+ "Cache-Control",
+ "max-age=0"
+ ],
+ [
+ "Connection",
+ "keep-alive"
+ ],
+ [
+ "Host",
+ "localhost:3001"
+ ],
+ [
+ "Sec-Fetch-Mode",
+ "navigate"
+ ],
+ [
+ "Sec-Fetch-Site",
+ "none"
+ ],
+ [
+ "Sec-Fetch-User",
+ "?1"
+ ],
+ [
+ "Upgrade-Insecure-Requests",
+ "1"
+ ],
+ [
+ "User-Agent",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
+ ]
+ ],
+ "url": "http://localhost:3001/",
+ "query": [],
+ "data": null,
+ "method": "GET"
+ }
+ }
+ ],
+ "packages": {
+ "coffee-script": "2.4.1",
+ "uglifier": "4.1.20",
+ "ffi": "1.11.1",
+ "actioncable": "5.2.3",
+ "io-like": "0.3.0",
+ "rb-inotify": "0.10.0",
+ "spring": "2.1.0",
+ "loofah": "2.2.3",
+ "selenium-webdriver": "3.142.3",
+ "marcel": "0.3.3",
+ "sass-listen": "4.0.0",
+ "nokogiri": "1.10.4",
+ "activestorage": "5.2.3",
+ "activejob": "5.2.3",
+ "mimemagic": "0.3.3",
+ "faraday": "0.17.1",
+ "execjs": "2.7.0",
+ "activesupport": "5.2.3",
+ "rails-html-sanitizer": "1.2.0",
+ "byebug": "11.0.1",
+ "xpath": "3.2.0",
+ "msgpack": "1.3.1",
+ "childprocess": "1.0.1",
+ "rails-dom-testing": "2.0.3",
+ "public_suffix": "3.1.1",
+ "mini_mime": "1.0.2",
+ "arel": "9.0.0",
+ "coffee-rails": "4.2.2",
+ "bundler": "1.17.3",
+ "rails": "5.2.3",
+ "globalid": "0.4.2",
+ "sentry-raven": "2.12.3",
+ "concurrent-ruby": "1.1.5",
+ "capybara": "3.28.0",
+ "regexp_parser": "1.6.0",
+ "sprockets-rails": "3.2.1",
+ "tzinfo": "1.2.5",
+ "mail": "2.7.1",
+ "actionview": "5.2.3",
+ "rubyzip": "1.2.3",
+ "coffee-script-source": "1.12.2",
+ "listen": "3.1.5",
+ "i18n": "1.6.0",
+ "erubi": "1.8.0",
+ "rake": "12.3.3",
+ "nio4r": "2.4.0",
+ "activemodel": "5.2.3",
+ "web-console": "3.7.0",
+ "ruby_dep": "1.5.0",
+ "turbolinks": "5.2.0",
+ "archive-zip": "0.12.0",
+ "method_source": "0.9.2",
+ "minitest": "5.11.3",
+ "puma": "3.12.1",
+ "sass-rails": "5.1.0",
+ "chromedriver-helper": "2.1.1",
+ "sprockets": "3.7.2",
+ "bindex": "0.8.1",
+ "actionmailer": "5.2.3",
+ "rack-test": "1.1.0",
+ "bootsnap": "1.4.4",
+ "railties": "5.2.3",
+ "mini_portile2": "2.4.0",
+ "crass": "1.0.4",
+ "websocket-extensions": "0.1.4",
+ "multipart-post": "2.1.1",
+ "rb-fsevent": "0.10.3",
+ "jbuilder": "2.9.1",
+ "pg": "1.1.4",
+ "sass": "3.7.4",
+ "activerecord": "5.2.3",
+ "builder": "3.2.3",
+ "spring-watcher-listen": "2.0.1",
+ "websocket-driver": "0.7.1",
+ "thor": "0.20.3",
+ "thread_safe": "0.3.6",
+ "addressable": "2.6.0",
+ "prometheus-client-mmap": "0.9.8",
+ "tilt": "2.0.9",
+ "actionpack": "5.2.3",
+ "rack": "2.0.7",
+ "turbolinks-source": "5.2.0"
+ },
+ "sdk": {
+ "version": "2.12.3",
+ "name": "raven-ruby"
+ },
+ "_meta": {
+ "user": null,
+ "context": null,
+ "entries": {
+ "1": {
+ "data": {
+ "": null,
+ "cookies": {
+ "": {
+ "err": [
+ [
+ "invalid_data",
+ {
+ "reason": "the cookie is missing a name/value pair"
+ }
+ ]
+ ],
+ "val": "********"
+ }
+ },
+ "url": null,
+ "headers": null,
+ "env": null,
+ "query": null,
+ "data": null,
+ "method": null
+ }
+ }
+ },
+ "contexts": null,
+ "message": null,
+ "packages": null,
+ "tags": {},
+ "sdk": null
+ },
+ "contexts": {
+ "browser": {
+ "version": "78.0.3904",
+ "type": "browser",
+ "name": "Chrome"
+ },
+ "client_os": {
+ "version": "10.15.1",
+ "type": "os",
+ "name": "Mac OS X"
+ }
+ },
+ "fingerprints": [
+ "6aa133ea51857634f2d113de52b5cc61",
+ "e1613eeb169241eab95b76ab52a80c68"
+ ],
+ "context": {
+ "server": {
+ "runtime": {
+ "version": "ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin18]",
+ "name": "ruby"
+ },
+ "os": {
+ "kernel_version": "Darwin Seans-MBP.fritz.box 19.0.0 Darwin Kernel Version 19.0.0: Thu Oct 17 16:17:15 PDT 2019; root:xnu-6153.41.3~29/RELEASE_X86_64 x86_64",
+ "version": "Darwin Kernel Version 19.0.0: Thu Oct 17 16:17:15 PDT 2019; root:xnu-6153.41.3~29/RELEASE_X86_64",
+ "build": "19.0.0",
+ "name": "Darwin"
+ }
+ }
+ },
+ "release": {
+ "dateReleased": null,
+ "commitCount": 0,
+ "url": null,
+ "data": {},
+ "lastDeploy": null,
+ "deployCount": 0,
+ "dateCreated": "2019-12-08T21:47:47Z",
+ "lastEvent": "2019-12-09T21:52:05Z",
+ "version": "b56ae26",
+ "firstEvent": "2019-12-08T21:47:47Z",
+ "lastCommit": null,
+ "shortVersion": "b56ae26",
+ "authors": [],
+ "owner": null,
+ "newGroups": 26,
+ "ref": null,
+ "projects": [
+ {
+ "slug": "gitlab-03",
+ "name": "gitlab-03"
+ }
+ ]
+ },
+ "groupID": "1378364652"
+} \ No newline at end of file
diff --git a/spec/lib/gitlab/cycle_analytics/production_stage_spec.rb b/spec/lib/gitlab/cycle_analytics/production_stage_spec.rb
index 4d0cc91a318..eceea474988 100644
--- a/spec/lib/gitlab/cycle_analytics/production_stage_spec.rb
+++ b/spec/lib/gitlab/cycle_analytics/production_stage_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require 'lib/gitlab/cycle_analytics/shared_stage_spec'
describe Gitlab::CycleAnalytics::ProductionStage do
- let(:stage_name) { :production }
+ let(:stage_name) { 'Total' }
it_behaves_like 'base stage'
end
diff --git a/spec/lib/sentry/client_spec.rb b/spec/lib/sentry/client_spec.rb
index 8500f67b8e9..07547a92fb9 100644
--- a/spec/lib/sentry/client_spec.rb
+++ b/spec/lib/sentry/client_spec.rb
@@ -218,4 +218,62 @@ describe Sentry::Client do
it_behaves_like 'issues has correct length', 1
end
end
+
+ describe '#issue_latest_event' do
+ let(:sample_response) do
+ Gitlab::Utils.deep_indifferent_access(
+ JSON.parse(fixture_file('sentry/issue_latest_event_sample_response.json'))
+ )
+ end
+
+ let(:issue_id) { '1234' }
+ let(:sentry_api_response) { sample_response }
+ let(:sentry_url) { 'https://sentrytest.gitlab.com/api/0' }
+ let(:sentry_request_url) { sentry_url + "/issues/#{issue_id}/events/latest/" }
+
+ let!(:sentry_api_request) { stub_sentry_request(sentry_request_url, body: sentry_api_response) }
+
+ subject { client.issue_latest_event(issue_id: issue_id) }
+
+ it_behaves_like 'calls sentry api'
+
+ it 'has correct return type' do
+ expect(subject).to be_a(Gitlab::ErrorTracking::ErrorEvent)
+ end
+
+ shared_examples 'assigns error tracking event correctly' do
+ using RSpec::Parameterized::TableSyntax
+
+ where(:event_object, :sentry_response) do
+ :issue_id | :groupID
+ :date_received | :dateReceived
+ end
+
+ with_them do
+ it { expect(subject.public_send(event_object)).to eq(sentry_api_response.dig(*sentry_response)) }
+ end
+ end
+
+ context 'error object created from sentry response' do
+ it_behaves_like 'assigns error tracking event correctly'
+
+ it 'parses the stack trace' do
+ expect(subject.stack_trace_entries).to be_a Array
+ expect(subject.stack_trace_entries).not_to be_empty
+ end
+
+ context 'error without stack trace' do
+ before do
+ sample_response['entries'] = []
+ stub_sentry_request(sentry_request_url, body: sample_response)
+ end
+
+ it_behaves_like 'assigns error tracking event correctly'
+
+ it 'returns an empty array for stack_trace_entries' do
+ expect(subject.stack_trace_entries).to eq []
+ end
+ end
+ end
+ end
end