diff options
author | Sean McGivern <sean@gitlab.com> | 2018-04-18 12:52:37 +0100 |
---|---|---|
committer | Sean McGivern <sean@gitlab.com> | 2018-04-18 13:06:03 +0100 |
commit | f9c68819e0c904f9d4292fd55f575ba7d9e28157 (patch) | |
tree | ccc8b86434c1f212412b570e09e344b5a67edfae | |
parent | 019c0d5761b55ca21fd71d547dd4a2ebf14d615f (diff) | |
download | gitlab-ce-warn-when-preloading-lots-of-associations.tar.gz |
Warn when Goldiloader's preloading exceeds 100 objectswarn-when-preloading-lots-of-associations
-rw-r--r-- | config/initializers/goldiloader.rb | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/config/initializers/goldiloader.rb b/config/initializers/goldiloader.rb new file mode 100644 index 00000000000..2a5f9c9dbbc --- /dev/null +++ b/config/initializers/goldiloader.rb @@ -0,0 +1,25 @@ +module Goldiloader + module AssociationLoader + module LimitPreloading + PreloadingLimitExceeded = Class.new(StandardError) + + private + + def eager_load(models, association_name) + if Gitlab::Sentry.enabled? && models.count > 100 + Gitlab::Sentry.context + + Raven.capture_exception(PreloadingLimitExceeded.new("More than 100 models preloaded for #{models.first.class}.#{association_name}")) + return + end + + super + rescue => e + Raven.capture_exception(e) + end + end + + prepend LimitPreloading + singleton_class.prepend LimitPreloading + end +end |