Sha256: 179ce5251b81eebb2d41dff44d43a93492940d229305903184fc9a160c823cb0
Contents?: true
Size: 1.2 KB
Versions: 2
Compression:
Stored size: 1.2 KB
Contents
require "pg" require "connection_pool" module GitLab module Exporter module Database # An abstract class for interacting with DB # # It takes a connection string (e.g. "dbname=test port=5432") class Base def self.connection_pool @connection_pool ||= Hash.new do |h, connection_string| h[connection_string] = ConnectionPool.new(size: 3, timeout: 5) do PG.connect(connection_string) end end end def initialize(args, logger: nil) @connection_string = args[:connection_string] @logger = logger end def run fail NotImplemented end def connection_pool self.class.connection_pool[@connection_string] end def with_connection_pool connection_pool.with do |conn| yield conn rescue PG::UnableToSend => e @logger.warn "Error sending to the database: #{e}" if @logger conn.reset raise e end rescue PG::Error => e @logger.error "Error connecting to the database: #{e}" if @logger raise e end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
gitlab-exporter-9.1.0 | lib/gitlab_exporter/database/base.rb |
gitlab-exporter-9.0.0 | lib/gitlab_exporter/database/base.rb |