summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/initializers/goldiloader.rb25
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