+ class ArvadosClient < Google::APIClient
+ attr_reader :request_id
+
+ def execute(*args)
+ @request_id = "req-" + Random.new.rand(2**128).to_s(36)[0..19]
+ if args.last.is_a? Hash
+ args.last[:headers] ||= {}
+ args.last[:headers]['X-Request-Id'] = @request_id
+ end
+ begin
+ super(*args)
+ rescue => e
+ if !e.message.match(/.*req-[0-9a-zA-Z]{20}.*/)
+ raise $!, "#{$!} (Request ID: #{@request_id})", $!.backtrace
+ end
+ raise e
+ end
+ end
+ end