rookout 0.1.29 → 0.1.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/rookout/augs/aug_factory.rb +7 -4
- data/lib/rookout/com_ws/agent_com_ws.rb +15 -8
- data/lib/rookout/com_ws/command_handler.rb +1 -1
- data/lib/rookout/com_ws/envelope_wrapper.rb +57 -0
- data/lib/rookout/com_ws/output.rb +21 -10
- data/lib/rookout/commit.rb +1 -1
- data/lib/rookout/config.rb +20 -0
- data/lib/rookout/exceptions.rb +6 -0
- data/lib/rookout/interface.rb +1 -1
- data/lib/rookout/processor/namespace_serializer2.rb +283 -0
- data/lib/rookout/processor/namespaces/container_namespace.rb +4 -0
- data/lib/rookout/processor/namespaces/ruby_object_namespace.rb +5 -5
- data/lib/rookout/processor/namespaces/traceback_namespace.rb +2 -0
- data/lib/rookout/processor/paths/arithmetic_path.rb +1 -1
- data/lib/rookout/protobuf/controller_info_pb.rb +1 -0
- data/lib/rookout/protobuf/messages_pb.rb +54 -0
- data/lib/rookout/protobuf/variant2_pb.rb +42 -0
- data/lib/rookout/protobuf/variant_pb.rb +22 -0
- data/lib/rookout/version.rb +1 -1
- metadata +7 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 6b18921aad157928102aa2f122bdea86a90ea12b785bbb141c1e91d5d7d812ef
         | 
| 4 | 
            +
              data.tar.gz: ee630f67fc3c697312163d2ec543cbbf83deef49025095bff23494ed5c0c66da
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: f6fb66f9fe31e89dd375957cb7bebe704dfc45450b3a6d45d37554bdf29a3da5ce5ce1dc7c58486cb11e7a2777147bcd20097c54dba7e84fed3001c22bb110d2
         | 
| 7 | 
            +
              data.tar.gz: 62854a17c91661e8365e80165485537cb0d84155325f9fd5121b65832de12e2c7033c4c0edc899a270a2264ac9f05f93cee4dd0d592dbd803667c4541870d5e3
         | 
| @@ -29,8 +29,9 @@ module Rookout | |
| 29 29 | 
             
                    max_aug_time = configuration["maxAugTime"] || Config.instrumentation_max_aug_time
         | 
| 30 30 |  | 
| 31 31 | 
             
                    condition_configuration = configuration["conditional"]
         | 
| 32 | 
            -
                     | 
| 33 | 
            -
             | 
| 32 | 
            +
                    unless condition_configuration.nil? || condition_configuration.is_a?(String)
         | 
| 33 | 
            +
                      raise Exceptions::RookAugInvalidKey.new("conditional", configuration)
         | 
| 34 | 
            +
                    end
         | 
| 34 35 | 
             
                    condition = condition_configuration.nil? ? nil : Conditions::Condition.new(condition_configuration)
         | 
| 35 36 |  | 
| 36 37 | 
             
                    rate_limit = create_rate_limit configuration
         | 
| @@ -47,15 +48,17 @@ module Rookout | |
| 47 48 |  | 
| 48 49 | 
             
                  def create_location configuration, aug
         | 
| 49 50 | 
             
                    name = configuration["name"]
         | 
| 50 | 
            -
                    raise Exceptions::RookObjectNameMissing if name.nil?
         | 
| 51 | 
            +
                    raise Exceptions::RookObjectNameMissing, configuration if name.nil?
         | 
| 51 52 |  | 
| 52 53 | 
             
                    case name
         | 
| 53 54 | 
             
                    when "file_line"
         | 
| 54 55 | 
             
                      return Locations::LocationFileLine.new configuration, @output, aug
         | 
| 55 56 | 
             
                    when "exception_handler"
         | 
| 56 57 | 
             
                      return Locations::LocationExceptionHandler.new configuration, @output, aug
         | 
| 58 | 
            +
                    when "log_handler"
         | 
| 59 | 
            +
                      raise Exceptions::RookUnsupportedLiveLogger
         | 
| 57 60 | 
             
                    else
         | 
| 58 | 
            -
                      raise Exceptions::RookUnsupportedLocation if name != "file_line"
         | 
| 61 | 
            +
                      raise Exceptions::RookUnsupportedLocation, configuration if name != "file_line"
         | 
| 59 62 | 
             
                    end
         | 
| 60 63 | 
             
                  end
         | 
| 61 64 |  | 
| @@ -44,6 +44,7 @@ module Rookout | |
| 44 44 | 
             
                    @main_thread = nil
         | 
| 45 45 | 
             
                    @outgoing_thread = nil
         | 
| 46 46 | 
             
                    @pending_messages = Queue.new
         | 
| 47 | 
            +
                    @pending_messages_length = 0
         | 
| 47 48 |  | 
| 48 49 | 
             
                    @running = false
         | 
| 49 50 | 
             
                    @ready_event = Concurrent::Event.new
         | 
| @@ -52,18 +53,21 @@ module Rookout | |
| 52 53 | 
             
                    @print_on_initial_connection = print_on_connect
         | 
| 53 54 | 
             
                  end
         | 
| 54 55 |  | 
| 55 | 
            -
                  def add  | 
| 56 | 
            -
                     | 
| 57 | 
            -
                    if  | 
| 58 | 
            -
             | 
| 56 | 
            +
                  def add envelope_wrapper
         | 
| 57 | 
            +
                    msg_size = envelope_wrapper.calculate_size
         | 
| 58 | 
            +
                    if @pending_messages_length + msg_size > Config.agent_com_max_queue_messages_length ||
         | 
| 59 | 
            +
                       queue_full?
         | 
| 60 | 
            +
                      exc = Exceptions::RookMessageSizeExceeded.new msg_size, Config.agent_com_max_queue_messages_length
         | 
| 59 61 | 
             
                      warning = Processor::RookError.new exc
         | 
| 60 62 | 
             
                      UserWarnings.notify_warning warning
         | 
| 61 63 |  | 
| 62 | 
            -
                      Logger.instance.warning "Dropping message, size was #{ | 
| 64 | 
            +
                      Logger.instance.warning "Dropping message, size was #{msg_size}, pedning messages: #{@pending_messages_length}
         | 
| 65 | 
            +
                                              which is over the message size limit #{Config.agent_com_max_queue_messages_length},
         | 
| 66 | 
            +
                                              queue length: #{@pending_messages.length}"
         | 
| 63 67 | 
             
                      return
         | 
| 64 68 | 
             
                    end
         | 
| 65 69 |  | 
| 66 | 
            -
                    @pending_messages.push  | 
| 70 | 
            +
                    @pending_messages.push envelope_wrapper
         | 
| 67 71 | 
             
                  end
         | 
| 68 72 |  | 
| 69 73 | 
             
                  def queue_full?
         | 
| @@ -128,7 +132,7 @@ module Rookout | |
| 128 132 | 
             
                          @ready_event.set
         | 
| 129 133 | 
             
                        end
         | 
| 130 134 |  | 
| 131 | 
            -
                        Logger.instance. | 
| 135 | 
            +
                        Logger.instance.warning "Connection failed; reason = #{e.message}"
         | 
| 132 136 | 
             
                      end
         | 
| 133 137 |  | 
| 134 138 | 
             
                      backoff.after_disconnect
         | 
| @@ -191,12 +195,15 @@ module Rookout | |
| 191 195 | 
             
                  def outgoing client, on_exit
         | 
| 192 196 | 
             
                    Pinger.new(client, Config.agent_com_ping_interval, Config.agent_com_ping_timeout).repeat do
         | 
| 193 197 | 
             
                      begin
         | 
| 194 | 
            -
                         | 
| 198 | 
            +
                        envelope_wrapper = @pending_messages.pop true
         | 
| 195 199 | 
             
                      rescue ThreadError
         | 
| 196 200 | 
             
                        sleep 0.25
         | 
| 197 201 | 
             
                        next
         | 
| 198 202 | 
             
                      end
         | 
| 199 203 |  | 
| 204 | 
            +
                      msg = envelope_wrapper.envelope
         | 
| 205 | 
            +
                      @pending_messages_length -= envelope_wrapper.calculate_size
         | 
| 206 | 
            +
             | 
| 200 207 | 
             
                      if msg.is_a? ExitMessage
         | 
| 201 208 | 
             
                        break if msg.thread == Thread.current
         | 
| 202 209 | 
             
                      elsif msg.is_a? FlushMessage
         | 
| @@ -5,10 +5,10 @@ module Rookout | |
| 5 5 | 
             
                class CommandHandler
         | 
| 6 6 | 
             
                  def initialize agent_com, augs_manager
         | 
| 7 7 | 
             
                    agent_com.on "Com::Rookout::InitialAugsCommand" do |initial_augs|
         | 
| 8 | 
            +
                      Config.update_config initial_augs.sdk_configuration
         | 
| 8 9 | 
             
                      augs = initial_augs.augs.map { |aug_json| JSON.parse aug_json }
         | 
| 9 10 | 
             
                      augs_manager.initialize_augs augs
         | 
| 10 11 | 
             
                    end
         | 
| 11 | 
            -
             | 
| 12 12 | 
             
                    agent_com.on "Com::Rookout::AddAugCommand" do |command|
         | 
| 13 13 | 
             
                      augs_manager.add_aug JSON.parse(command.aug_json)
         | 
| 14 14 | 
             
                    end
         | 
| @@ -0,0 +1,57 @@ | |
| 1 | 
            +
            require_relative "../protobuf/envelope_pb"
         | 
| 2 | 
            +
            require_relative "../processor/namespace_serializer2"
         | 
| 3 | 
            +
             | 
| 4 | 
            +
             | 
| 5 | 
            +
            class EnvelopeWrapperBase
         | 
| 6 | 
            +
              def wrap_in_envelope message
         | 
| 7 | 
            +
                any_message = Google::Protobuf::Any.pack message
         | 
| 8 | 
            +
                timestamp = Google::Protobuf::Timestamp.new
         | 
| 9 | 
            +
                timestamp.from_time Time.new
         | 
| 10 | 
            +
                envelope = Com::Rookout::Envelope.new msg: any_message, timestamp: timestamp
         | 
| 11 | 
            +
                serialized = Com::Rookout::Envelope.encode envelope
         | 
| 12 | 
            +
                serialized
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              def envelope
         | 
| 16 | 
            +
                raise NotImplementedError
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              def calculate_size
         | 
| 20 | 
            +
                raise NotImplementedError
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
            end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            class Variant2EnvelopeWrapper < EnvelopeWrapperBase
         | 
| 25 | 
            +
              def initialize agent_id, aug_id, report_id, arguments
         | 
| 26 | 
            +
                @aug_report_message = Com::Rookout::AugReportMessage.new agent_id: agent_id,
         | 
| 27 | 
            +
                                                   aug_id: aug_id,
         | 
| 28 | 
            +
                                                   report_id: report_id
         | 
| 29 | 
            +
                @serializer = Rookout::Processor::NamespaceSerializer2.new
         | 
| 30 | 
            +
                @aug_report_message.arguments2 = @serializer.dump arguments
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              def envelope
         | 
| 34 | 
            +
                return @envelope unless @envelope.nil?
         | 
| 35 | 
            +
                @serializer.string_cache.each { |key, value| @aug_report_message.strings_cache[key] = value }
         | 
| 36 | 
            +
                @envelope = wrap_in_envelope @aug_report_message
         | 
| 37 | 
            +
                @aug_report_message = nil
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
              def calculate_size
         | 
| 41 | 
            +
                @envelope.length + @serializer.estimated_pending_bytes
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
            end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            class EnvelopeWrapper < EnvelopeWrapperBase
         | 
| 46 | 
            +
              def initialize message
         | 
| 47 | 
            +
                @envelope = wrap_in_envelope message
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
              def envelope
         | 
| 51 | 
            +
                @envelope
         | 
| 52 | 
            +
              end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
              def calculate_size
         | 
| 55 | 
            +
                @envelope.length
         | 
| 56 | 
            +
              end
         | 
| 57 | 
            +
            end
         | 
| @@ -9,6 +9,7 @@ module Rookout | |
| 9 9 | 
             
                require_relative "../processor/namespace_serializer"
         | 
| 10 10 |  | 
| 11 11 | 
             
                require_relative "token_bucket"
         | 
| 12 | 
            +
                require_relative "envelope_wrapper"
         | 
| 12 13 |  | 
| 13 14 | 
             
                class Output
         | 
| 14 15 | 
             
                  def initialize
         | 
| @@ -64,11 +65,13 @@ module Rookout | |
| 64 65 | 
             
                      status = Com::Rookout::RuleStatusMessage.new agent_id: @agent_id,
         | 
| 65 66 | 
             
                                                                   rule_id: rule_id,
         | 
| 66 67 | 
             
                                                                   active: active
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                      envelope_wrapper = EnvelopeWrapper.new status
         | 
| 67 70 | 
             
                      if error
         | 
| 68 71 | 
             
                        status.error = error.dumps
         | 
| 69 72 | 
             
                      end
         | 
| 70 73 |  | 
| 71 | 
            -
                      @agent_com.add  | 
| 74 | 
            +
                      @agent_com.add envelope_wrapper
         | 
| 72 75 | 
             
                    end
         | 
| 73 76 | 
             
                  end
         | 
| 74 77 |  | 
| @@ -76,17 +79,22 @@ module Rookout | |
| 76 79 | 
             
                    return if @closing || !@agent_com
         | 
| 77 80 |  | 
| 78 81 | 
             
                    @user_message_bucket.if_available do
         | 
| 79 | 
            -
                      if  | 
| 80 | 
            -
                         | 
| 82 | 
            +
                      if Config.protobuf_version2
         | 
| 83 | 
            +
                        envelope_wrapper = Variant2EnvelopeWrapper.new @agent_id, aug_id, report_id, arguments
         | 
| 81 84 | 
             
                      else
         | 
| 82 | 
            -
                         | 
| 85 | 
            +
                        if arguments.nil? || arguments.call_method("size", "") == 0
         | 
| 86 | 
            +
                          protobuf_arguments = nil
         | 
| 87 | 
            +
                        else
         | 
| 88 | 
            +
                          protobuf_arguments = Processor::NamespaceSerializer.dump arguments
         | 
| 89 | 
            +
                        end
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                        envelope_wrapper = EnvelopeWrapper.new(Com::Rookout::AugReportMessage.new(agent_id: @agent_id,
         | 
| 92 | 
            +
                                                                 aug_id: aug_id,
         | 
| 93 | 
            +
                                                                 report_id: report_id,
         | 
| 94 | 
            +
                                                                 arguments: protobuf_arguments))
         | 
| 83 95 | 
             
                      end
         | 
| 84 96 |  | 
| 85 | 
            -
                       | 
| 86 | 
            -
                                                               aug_id: aug_id,
         | 
| 87 | 
            -
                                                               report_id: report_id,
         | 
| 88 | 
            -
                                                               arguments: protobuf_arguments
         | 
| 89 | 
            -
                      @agent_com.add msg
         | 
| 97 | 
            +
                      @agent_com.add envelope_wrapper
         | 
| 90 98 | 
             
                    end
         | 
| 91 99 | 
             
                  end
         | 
| 92 100 |  | 
| @@ -126,7 +134,10 @@ module Rookout | |
| 126 134 | 
             
                                                       text: text,
         | 
| 127 135 | 
             
                                                       formatted_message: formatted_message,
         | 
| 128 136 | 
             
                                                       legacy_arguments: protobuf_arguments
         | 
| 129 | 
            -
             | 
| 137 | 
            +
             | 
| 138 | 
            +
                    envelope_wrapper = EnvelopeWrapper.new msg
         | 
| 139 | 
            +
             | 
| 140 | 
            +
                    @agent_com.add envelope_wrapper
         | 
| 130 141 | 
             
                  end
         | 
| 131 142 | 
             
                end
         | 
| 132 143 | 
             
              end
         | 
    
        data/lib/rookout/commit.rb
    CHANGED
    
    
    
        data/lib/rookout/config.rb
    CHANGED
    
    | @@ -15,12 +15,14 @@ module Rookout | |
| 15 15 |  | 
| 16 16 | 
             
                  attr_accessor :agent_com_configuration_command_thread_name,
         | 
| 17 17 | 
             
                                :agent_com_max_message_limit,
         | 
| 18 | 
            +
                                :agent_com_max_queue_messages_length,
         | 
| 18 19 | 
             
                                :agent_com_timeout,
         | 
| 19 20 | 
             
                                :agent_com_ping_interval,
         | 
| 20 21 | 
             
                                :agent_com_ping_timeout,
         | 
| 21 22 | 
             
                                :agent_com_flush_timeout,
         | 
| 22 23 | 
             
                                :agent_com_max_queued_messages
         | 
| 23 24 | 
             
                  Rookout::Config.agent_com_max_message_limit = 1024 * 1024
         | 
| 25 | 
            +
                  Rookout::Config.agent_com_max_queue_messages_length = 15 * 1024 * 1024
         | 
| 24 26 | 
             
                  Rookout::Config.agent_com_timeout = 3
         | 
| 25 27 | 
             
                  Rookout::Config.agent_com_ping_interval = 10
         | 
| 26 28 | 
             
                  Rookout::Config.agent_com_ping_timeout = 30
         | 
| @@ -51,6 +53,24 @@ module Rookout | |
| 51 53 | 
             
                  attr_accessor :rookout_version, :rookout_commit
         | 
| 52 54 | 
             
                  Rookout::Config.rookout_version = Rookout::VERSION
         | 
| 53 55 | 
             
                  Rookout::Config.rookout_commit = Rookout::COMMIT
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                  attr_accessor :protobuf_version2
         | 
| 58 | 
            +
                  Rookout::Config.protobuf_version2 = false
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                  attr_accessor :true_values
         | 
| 61 | 
            +
                  Rookout::Config.true_values = ["y", "Y", "yes", "Yes", "YES", "true", "True", "TRUE", "1"]
         | 
| 62 | 
            +
             | 
| 63 | 
            +
             | 
| 64 | 
            +
                  def update_config configuration
         | 
| 65 | 
            +
                    is_config_proto2 = configuration["RUBY_PROTOBUF_VERSION_2"]
         | 
| 66 | 
            +
                    return if is_config_proto2.nil?
         | 
| 67 | 
            +
                    is_env_proto2 = ENV[env_var_name]
         | 
| 68 | 
            +
                    if is_env_proto2.nil?
         | 
| 69 | 
            +
                      @protobuf_version2 = true if @true_values.includes? is_config_proto2
         | 
| 70 | 
            +
                    elsif @true_values.includes? is_env_proto2
         | 
| 71 | 
            +
                      @protobuf_version2 = true
         | 
| 72 | 
            +
                    end
         | 
| 73 | 
            +
                  end
         | 
| 54 74 | 
             
                end
         | 
| 55 75 | 
             
              end
         | 
| 56 76 | 
             
            end
         | 
    
        data/lib/rookout/exceptions.rb
    CHANGED
    
    
    
        data/lib/rookout/interface.rb
    CHANGED
    
    | @@ -43,7 +43,7 @@ module Rookout | |
| 43 43 | 
             
                    STDERR.puts "[Rookout] Failed to start Rookout: #{e.message}"
         | 
| 44 44 | 
             
                  rescue RookCommunicationException => e
         | 
| 45 45 | 
             
                    raise if throw_errors
         | 
| 46 | 
            -
                     | 
| 46 | 
            +
                    Logger.instance.warning "[Rookout] " + e.message
         | 
| 47 47 | 
             
                  rescue Exception => e
         | 
| 48 48 | 
             
                    STDERR.puts e.full_message if Config.debug
         | 
| 49 49 | 
             
                    raise if throw_errors
         | 
| @@ -0,0 +1,283 @@ | |
| 1 | 
            +
            module Rookout
         | 
| 2 | 
            +
              module Processor
         | 
| 3 | 
            +
                class NamespaceSerializer2
         | 
| 4 | 
            +
                  require_relative "../logger"
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                  require_relative "../protobuf/variant_pb"
         | 
| 7 | 
            +
                  require_relative "../protobuf/variant2_pb"
         | 
| 8 | 
            +
                  require_relative "../user_warnings"
         | 
| 9 | 
            +
                  require_relative "./namespaces/container_namespace"
         | 
| 10 | 
            +
                  require_relative "./namespaces/traceback_namespace"
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  def initialize
         | 
| 13 | 
            +
                    @string_cache = {}
         | 
| 14 | 
            +
                    @estimated_pending_bytes = 0
         | 
| 15 | 
            +
                  end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  attr_reader :string_cache, :estimated_pending_bytes
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  def get_string_index_in_cache str
         | 
| 20 | 
            +
                    if @string_cache.key? str
         | 
| 21 | 
            +
                      @string_cache[str]
         | 
| 22 | 
            +
                    else
         | 
| 23 | 
            +
                      @estimated_pending_bytes += str.length + 5
         | 
| 24 | 
            +
                      current_size = @string_cache.size
         | 
| 25 | 
            +
                      @string_cache.store str, current_size
         | 
| 26 | 
            +
                      current_size
         | 
| 27 | 
            +
                    end
         | 
| 28 | 
            +
                  end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                  def dump_variant_type variant, type
         | 
| 31 | 
            +
                    variant.variant_type_max_depth = type << 1
         | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                  def dump_variant_type_max_depth variant, type
         | 
| 35 | 
            +
                    variant.variant_type_max_depth = (type << 1) | 1
         | 
| 36 | 
            +
                  end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                  def dump namespace, log_errors = true
         | 
| 39 | 
            +
                    if namespace.is_a? Namespaces::RubyObjectNamespace
         | 
| 40 | 
            +
                      dump_ruby_object_namespace namespace, log_errors
         | 
| 41 | 
            +
                    elsif namespace.is_a? Namespaces::ContainerNamespace
         | 
| 42 | 
            +
                      dump_container_namespace namespace, log_errors
         | 
| 43 | 
            +
                    elsif namespace.is_a? Namespaces::TracebackNamespace
         | 
| 44 | 
            +
                      dump_traceback_namespace namespace
         | 
| 45 | 
            +
                    end
         | 
| 46 | 
            +
                  rescue StandardError => e
         | 
| 47 | 
            +
                    message = "Failed to serialize namespace"
         | 
| 48 | 
            +
                    variant = Com::Rookout::Variant2.new
         | 
| 49 | 
            +
                    dump_variant_type variant, Com::Rookout::Variant::Type::VARIANT_ERROR
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                    if log_errors
         | 
| 52 | 
            +
                      Logger.instance.exception message, e
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                      error = RookError.new e, message
         | 
| 55 | 
            +
                      UserWarnings.notify_warning error
         | 
| 56 | 
            +
                    end
         | 
| 57 | 
            +
                    variant
         | 
| 58 | 
            +
                  end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                  def dump_ruby_object_namespace namespace, log_errors
         | 
| 61 | 
            +
                    dump_raw_object namespace.obj, 0, namespace.dump_config, log_errors
         | 
| 62 | 
            +
                  end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                  def dump_raw_object obj, current_depth, config, log_object_errors
         | 
| 65 | 
            +
                    unsafe_dump_object obj, current_depth, config, log_object_errors
         | 
| 66 | 
            +
                  rescue StandardError => e
         | 
| 67 | 
            +
                    message = "Failed to serialize object"
         | 
| 68 | 
            +
                    variant = Com::Rookout::Variant2.new
         | 
| 69 | 
            +
                    dump_variant_type variant, Com::Rookout::Variant::Type::VARIANT_ERROR
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                    if log_object_errors
         | 
| 72 | 
            +
                      Logger.instance.exception message, e
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                      error = RookError.new e, message
         | 
| 75 | 
            +
                      UserWarnings.notify_warning error
         | 
| 76 | 
            +
                    end
         | 
| 77 | 
            +
                    variant
         | 
| 78 | 
            +
                  end
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                  # rubocop:disable Metrics/AbcSize
         | 
| 81 | 
            +
                  # rubocop:disable Metrics/PerceivedComplexity
         | 
| 82 | 
            +
                  # rubocop:disable Metrics/CyclomaticComplexity
         | 
| 83 | 
            +
                  def unsafe_dump_object obj, current_depth, config, log_object_errors
         | 
| 84 | 
            +
                    variant = Com::Rookout::Variant2.new original_type_index_in_cache: get_string_index_in_cache(obj.class.to_s)
         | 
| 85 | 
            +
             | 
| 86 | 
            +
                    if obj.nil?
         | 
| 87 | 
            +
                      dump_nil variant
         | 
| 88 | 
            +
                    elsif obj.is_a?(Numeric) || obj.is_a?(TrueClass) || obj.is_a?(FalseClass)
         | 
| 89 | 
            +
                      dump_numeric obj, variant, config
         | 
| 90 | 
            +
                    elsif obj.is_a?(String) || obj.is_a?(Symbol)
         | 
| 91 | 
            +
                      dump_string obj, variant, config
         | 
| 92 | 
            +
                    elsif obj.is_a? Time
         | 
| 93 | 
            +
                      dump_time obj, variant
         | 
| 94 | 
            +
                    elsif obj.class == Array
         | 
| 95 | 
            +
                      dump_array obj, variant, current_depth, config, log_object_errors
         | 
| 96 | 
            +
                    elsif obj.class == Hash
         | 
| 97 | 
            +
                      dump_hash obj, variant, current_depth, config, log_object_errors
         | 
| 98 | 
            +
                    elsif obj.is_a? Exception
         | 
| 99 | 
            +
                      dump_exception obj, variant, current_depth, config, log_object_errors
         | 
| 100 | 
            +
                    elsif obj.is_a?(Method) || obj.is_a?(Proc) || obj.is_a?(Class) || obj.is_a?(Module)
         | 
| 101 | 
            +
                      dump_code_object obj, variant
         | 
| 102 | 
            +
                    else
         | 
| 103 | 
            +
                      dump_user_class variant, obj, current_depth, config, log_object_errors
         | 
| 104 | 
            +
                    end
         | 
| 105 | 
            +
             | 
| 106 | 
            +
                    variant
         | 
| 107 | 
            +
                  end
         | 
| 108 | 
            +
                  # rubocop:enable Metrics/AbcSize
         | 
| 109 | 
            +
                  # rubocop:enable Metrics/PerceivedComplexity
         | 
| 110 | 
            +
                  # rubocop:enable Metrics/CyclomaticComplexity
         | 
| 111 | 
            +
             | 
| 112 | 
            +
                  def dump_nil variant
         | 
| 113 | 
            +
                    dump_variant_type variant, Com::Rookout::Variant::Type::VARIANT_NONE
         | 
| 114 | 
            +
                  end
         | 
| 115 | 
            +
             | 
| 116 | 
            +
                  # Based off protobuf for Python
         | 
| 117 | 
            +
                  INT32_MIN = -2147483648
         | 
| 118 | 
            +
                  INT32_MAX = 2147483647
         | 
| 119 | 
            +
                  INT64_MIN = -(1 << 63)
         | 
| 120 | 
            +
                  INT64_MAX = (1 << 63) - 1
         | 
| 121 | 
            +
             | 
| 122 | 
            +
                  def dump_numeric obj, variant, config
         | 
| 123 | 
            +
                    if obj == true
         | 
| 124 | 
            +
                      dump_variant_type variant, Com::Rookout::Variant::Type::VARIANT_LONG
         | 
| 125 | 
            +
                      variant.long_value = 1
         | 
| 126 | 
            +
                    elsif obj == false
         | 
| 127 | 
            +
                      dump_variant_type variant, Com::Rookout::Variant::Type::VARIANT_LONG
         | 
| 128 | 
            +
                      variant.long_value = 0
         | 
| 129 | 
            +
                    elsif obj.is_a? Integer
         | 
| 130 | 
            +
                      dump_integer obj, variant
         | 
| 131 | 
            +
                    elsif obj.is_a? Float
         | 
| 132 | 
            +
                      dump_variant_type variant, Com::Rookout::Variant::Type::VARIANT_DOUBLE
         | 
| 133 | 
            +
                      variant.double_value = obj.to_f
         | 
| 134 | 
            +
                    elsif obj.is_a? BigDecimal
         | 
| 135 | 
            +
                      dump_string obj.to_s, variant, config # TODO: NS: This might cut the decimal value, is that ok?
         | 
| 136 | 
            +
                    elsif obj.is_a? Complex
         | 
| 137 | 
            +
                      dump_variant_type variant, Com::Rookout::Variant::Type::VARIANT_COMPLEX
         | 
| 138 | 
            +
                      variant.complex_value = Com::Rookout::Variant::Complex.new real: obj.real.to_f,
         | 
| 139 | 
            +
                                                                                 imaginary: obj.imaginary.to_f
         | 
| 140 | 
            +
                    else
         | 
| 141 | 
            +
                      raise Exceptions::RookClassCannotBeSerialized.new(obj.class, "Unknown Numeric Type")
         | 
| 142 | 
            +
                    end
         | 
| 143 | 
            +
                    # TODO: ADD SUPPORT FOR RATIONALS
         | 
| 144 | 
            +
                  end
         | 
| 145 | 
            +
             | 
| 146 | 
            +
                  def dump_integer obj, variant
         | 
| 147 | 
            +
                    if obj > INT32_MIN && obj < INT64_MAX
         | 
| 148 | 
            +
                      dump_variant_type variant, Com::Rookout::Variant::Type::VARIANT_LONG
         | 
| 149 | 
            +
                      variant.long_value = obj
         | 
| 150 | 
            +
                    else
         | 
| 151 | 
            +
                      dump_variant_type variant, Com::Rookout::Variant::Type::VARIANT_LARGE_INT
         | 
| 152 | 
            +
                      variant.bytes_index_in_cache = get_string_index_in_cache obj.to_s
         | 
| 153 | 
            +
                    end
         | 
| 154 | 
            +
                  end
         | 
| 155 | 
            +
             | 
| 156 | 
            +
                  def dump_string obj, variant, config
         | 
| 157 | 
            +
                    obj = obj.to_s
         | 
| 158 | 
            +
                    if obj.length > config.max_string
         | 
| 159 | 
            +
                      final_obj = obj[0...config.max_string]
         | 
| 160 | 
            +
                    else
         | 
| 161 | 
            +
                      final_obj = obj
         | 
| 162 | 
            +
                    end
         | 
| 163 | 
            +
             | 
| 164 | 
            +
                    variant.original_size = obj.length
         | 
| 165 | 
            +
                    dump_variant_type variant, Com::Rookout::Variant::Type::VARIANT_STRING
         | 
| 166 | 
            +
                    variant.bytes_index_in_cache = get_string_index_in_cache final_obj
         | 
| 167 | 
            +
                  end
         | 
| 168 | 
            +
             | 
| 169 | 
            +
                  def dump_time obj, variant
         | 
| 170 | 
            +
                    dump_variant_type variant, Com::Rookout::Variant::Type::VARIANT_TIME
         | 
| 171 | 
            +
                    variant.time_value = Google::Protobuf::Timestamp.new
         | 
| 172 | 
            +
                    variant.time_value.from_time obj
         | 
| 173 | 
            +
                  end
         | 
| 174 | 
            +
             | 
| 175 | 
            +
                  def dump_array obj, variant, current_depth, config, log_object_errors
         | 
| 176 | 
            +
                    variant.original_size = obj.length
         | 
| 177 | 
            +
             | 
| 178 | 
            +
                    weighted_children_depth = current_depth + 1
         | 
| 179 | 
            +
                    if weighted_children_depth <= config.max_collection_depth
         | 
| 180 | 
            +
                      dump_variant_type variant, Com::Rookout::Variant::Type::VARIANT_LIST
         | 
| 181 | 
            +
                      obj.each_with_index do |value, index|
         | 
| 182 | 
            +
                        break if index >= config.max_width
         | 
| 183 | 
            +
                        variant.collection_values << dump_raw_object(value, weighted_children_depth, config, log_object_errors)
         | 
| 184 | 
            +
                      end
         | 
| 185 | 
            +
                    else
         | 
| 186 | 
            +
                      dump_variant_type_max_depth variant, Com::Rookout::Variant::Type::VARIANT_LIST
         | 
| 187 | 
            +
                    end
         | 
| 188 | 
            +
                  end
         | 
| 189 | 
            +
             | 
| 190 | 
            +
                  def dump_hash obj, variant, current_depth, config, log_object_errors
         | 
| 191 | 
            +
                    variant.original_size = obj.length
         | 
| 192 | 
            +
             | 
| 193 | 
            +
                    weighted_children_depth = current_depth + 1
         | 
| 194 | 
            +
                    if current_depth <= config.max_collection_depth
         | 
| 195 | 
            +
                      dump_variant_type variant, Com::Rookout::Variant::Type::VARIANT_MAP
         | 
| 196 | 
            +
                      obj.each_with_index do |(key, value), index|
         | 
| 197 | 
            +
                        break if index >= config.max_width
         | 
| 198 | 
            +
                        variant.collection_keys << dump_raw_object(key, weighted_children_depth, config, log_object_errors)
         | 
| 199 | 
            +
                        variant.collection_values << dump_raw_object(value, weighted_children_depth, config, log_object_errors)
         | 
| 200 | 
            +
                      end
         | 
| 201 | 
            +
                    else
         | 
| 202 | 
            +
                      dump_variant_type_max_depth variant, Com::Rookout::Variant::Type::VARIANT_MAP
         | 
| 203 | 
            +
                    end
         | 
| 204 | 
            +
                  end
         | 
| 205 | 
            +
             | 
| 206 | 
            +
                  def dump_exception obj, variant, current_depth, config, log_object_errors
         | 
| 207 | 
            +
                    dump_variant_type variant, Com::Rookout::Variant::Type::VARIANT_OBJECT
         | 
| 208 | 
            +
                    variant.attribute_names_in_cache << get_string_index_in_cache("message")
         | 
| 209 | 
            +
                    variant.attribute_values << dump_raw_object(obj.message, current_depth + 1, config, log_object_errors)
         | 
| 210 | 
            +
             | 
| 211 | 
            +
                    variant.attribute_names_in_cache << get_string_index_in_cache("cause")
         | 
| 212 | 
            +
                    variant.attribute_values << dump_raw_object(obj.cause, current_depth + 1, config, log_object_errors)
         | 
| 213 | 
            +
             | 
| 214 | 
            +
                    variant.attribute_names_in_cache << get_string_index_in_cache("backtrace")
         | 
| 215 | 
            +
                    variant.attribute_values << dump_raw_object(obj.backtrace, current_depth + 1, config, log_object_errors)
         | 
| 216 | 
            +
                  end
         | 
| 217 | 
            +
             | 
| 218 | 
            +
                  def dump_code_object obj, variant
         | 
| 219 | 
            +
                    dump_variant_type variant, Com::Rookout::Variant::Type::VARIANT_CODE_OBJECT
         | 
| 220 | 
            +
             | 
| 221 | 
            +
                    if obj.is_a?(Proc) || obj.is_a?(Method)
         | 
| 222 | 
            +
                      source_location = obj.source_location
         | 
| 223 | 
            +
                    else
         | 
| 224 | 
            +
                      source_location = [nil, nil]
         | 
| 225 | 
            +
                    end
         | 
| 226 | 
            +
             | 
| 227 | 
            +
                    if obj.is_a? Proc
         | 
| 228 | 
            +
                      name = ""
         | 
| 229 | 
            +
                    else
         | 
| 230 | 
            +
                      name = obj.name
         | 
| 231 | 
            +
                    end
         | 
| 232 | 
            +
             | 
| 233 | 
            +
                    variant.code_values << Com::Rookout::Variant::CodeObject.new(name: name,
         | 
| 234 | 
            +
                                                                                 filename: source_location[0],
         | 
| 235 | 
            +
                                                                                 lineno: source_location[1])
         | 
| 236 | 
            +
                  end
         | 
| 237 | 
            +
             | 
| 238 | 
            +
                  def dump_user_class variant, obj, current_depth, config, log_object_errors
         | 
| 239 | 
            +
                    weighted_children_depth = current_depth + 1
         | 
| 240 | 
            +
                    if weighted_children_depth <= config.max_collection_depth
         | 
| 241 | 
            +
                      dump_variant_type variant, Com::Rookout::Variant::Type::VARIANT_OBJECT
         | 
| 242 | 
            +
             | 
| 243 | 
            +
                      obj.instance_variables.each do |name|
         | 
| 244 | 
            +
                        raw_value = obj.instance_variable_get name
         | 
| 245 | 
            +
                        variant.attribute_names_in_cache << get_string_index_in_cache(name.to_s)
         | 
| 246 | 
            +
                        variant.attribute_values << dump_raw_object(raw_value, weighted_children_depth, config, log_object_errors)
         | 
| 247 | 
            +
                      end
         | 
| 248 | 
            +
                    else
         | 
| 249 | 
            +
                      dump_variant_type_max_depth variant, Com::Rookout::Variant::Type::VARIANT_OBJECT
         | 
| 250 | 
            +
                    end
         | 
| 251 | 
            +
                  end
         | 
| 252 | 
            +
             | 
| 253 | 
            +
                  def dump_container_namespace namespace, log_errors
         | 
| 254 | 
            +
                    variant = Com::Rookout::Variant2.new
         | 
| 255 | 
            +
                    dump_variant_type variant, Com::Rookout::Variant::Type::VARIANT_NAMESPACE
         | 
| 256 | 
            +
             | 
| 257 | 
            +
                    namespace.hash.each do |key, value|
         | 
| 258 | 
            +
                      variant.attribute_names_in_cache << get_string_index_in_cache(key.to_s)
         | 
| 259 | 
            +
                      variant.attribute_values << dump(value, log_errors)
         | 
| 260 | 
            +
                    end
         | 
| 261 | 
            +
             | 
| 262 | 
            +
                    variant
         | 
| 263 | 
            +
                  end
         | 
| 264 | 
            +
             | 
| 265 | 
            +
                  def dump_traceback_namespace namespace
         | 
| 266 | 
            +
                    variant = Com::Rookout::Variant2.new
         | 
| 267 | 
            +
                    dump_variant_type variant, Com::Rookout::Variant::Type::VARIANT_TRACEBACK
         | 
| 268 | 
            +
             | 
| 269 | 
            +
                    namespace.depth.times do |i|
         | 
| 270 | 
            +
                      position = i + namespace.offset
         | 
| 271 | 
            +
                      break if position >= namespace.backtrace.length
         | 
| 272 | 
            +
                      frame = namespace.backtrace[position]
         | 
| 273 | 
            +
             | 
| 274 | 
            +
                      code_object = Com::Rookout::Variant::CodeObject.new filename: frame.source_location[0],
         | 
| 275 | 
            +
                                                                          lineno: frame.source_location[1],
         | 
| 276 | 
            +
                                                                          name: frame.eval("__method__").to_s
         | 
| 277 | 
            +
                      variant.code_values << code_object
         | 
| 278 | 
            +
                    end
         | 
| 279 | 
            +
                    variant
         | 
| 280 | 
            +
                  end
         | 
| 281 | 
            +
                end
         | 
| 282 | 
            +
              end
         | 
| 283 | 
            +
            end
         | 
| @@ -8,11 +8,15 @@ module Rookout | |
| 8 8 |  | 
| 9 9 | 
             
                  require_relative "../../protobuf/variant_pb"
         | 
| 10 10 |  | 
| 11 | 
            +
             | 
| 11 12 | 
             
                  class ContainerNamespace < Namespace
         | 
| 12 13 | 
             
                    def initialize hash = {}
         | 
| 13 14 | 
             
                      @hash = hash
         | 
| 14 15 | 
             
                    end
         | 
| 15 16 |  | 
| 17 | 
            +
                    attr_reader :hash
         | 
| 18 | 
            +
             | 
| 19 | 
            +
             | 
| 16 20 | 
             
                    def call_method name, args
         | 
| 17 21 | 
             
                      return RubyObjectNamespace.new @hash.length if name == "size"
         | 
| 18 22 | 
             
                      super
         | 
| @@ -20,12 +20,12 @@ module Rookout | |
| 20 20 | 
             
                    attr_reader :max_depth, :max_width, :max_collection_depth, :max_string
         | 
| 21 21 | 
             
                  end
         | 
| 22 22 |  | 
| 23 | 
            -
                  OBJECT_DUMP_CONFIG_STRICT = ObjectDumpConfig.new 2, 10,  | 
| 24 | 
            -
                  OBJECT_DUMP_CONFIG_DEFAULT = ObjectDumpConfig.new 4,  | 
| 25 | 
            -
                  OBJECT_DUMP_CONFIG_TOLERANT = ObjectDumpConfig.new 5,  | 
| 23 | 
            +
                  OBJECT_DUMP_CONFIG_STRICT = ObjectDumpConfig.new 2, 10, 2, 128
         | 
| 24 | 
            +
                  OBJECT_DUMP_CONFIG_DEFAULT = ObjectDumpConfig.new 4, 15, 4, 512
         | 
| 25 | 
            +
                  OBJECT_DUMP_CONFIG_TOLERANT = ObjectDumpConfig.new 5, 20, 5, 4 * 1024
         | 
| 26 26 |  | 
| 27 27 | 
             
                  OBJECT_DUMP_CONFIG_STRING = ObjectDumpConfig.new 1, 0, 0, 64 * 1024
         | 
| 28 | 
            -
                  OBJECT_DUMP_CONFIG_COLLECTION = ObjectDumpConfig.new 4, 100,  | 
| 28 | 
            +
                  OBJECT_DUMP_CONFIG_COLLECTION = ObjectDumpConfig.new 4, 100, 4, 512
         | 
| 29 29 |  | 
| 30 30 | 
             
                  OBJECT_DUMP_TABLE = {
         | 
| 31 31 | 
             
                    "" => OBJECT_DUMP_CONFIG_DEFAULT,
         | 
| @@ -47,7 +47,7 @@ module Rookout | |
| 47 47 | 
             
                    def tailor_limits!
         | 
| 48 48 | 
             
                      if @obj.is_a? String
         | 
| 49 49 | 
             
                        @dump_config = OBJECT_DUMP_CONFIG_STRING
         | 
| 50 | 
            -
                      elsif @obj.is_a?(Hash) || @obj.is_a?(Array)
         | 
| 50 | 
            +
                      elsif (@obj.is_a?(Hash) || @obj.is_a?(Array)) && @obj.length > OBJECT_DUMP_CONFIG_TOLERANT.max_width
         | 
| 51 51 | 
             
                        @dump_config = OBJECT_DUMP_CONFIG_COLLECTION
         | 
| 52 52 | 
             
                      else
         | 
| 53 53 | 
             
                        @dump_config = OBJECT_DUMP_CONFIG_TOLERANT
         | 
| @@ -4,6 +4,7 @@ | |
| 4 4 | 
             
            require 'google/protobuf'
         | 
| 5 5 |  | 
| 6 6 | 
             
            require_relative 'variant_pb'
         | 
| 7 | 
            +
            require_relative 'variant2_pb'
         | 
| 7 8 | 
             
            require_relative 'agent_info_pb'
         | 
| 8 9 | 
             
            require_relative 'controller_info_pb'
         | 
| 9 10 | 
             
            require 'google/protobuf/any_pb'
         | 
| @@ -87,6 +88,11 @@ Google::Protobuf::DescriptorPool.generated_pool.build do | |
| 87 88 | 
             
                  optional :aug_id, :string, 2
         | 
| 88 89 | 
             
                  optional :arguments, :message, 3, "com.rookout.Variant"
         | 
| 89 90 | 
             
                  optional :report_id, :string, 4
         | 
| 91 | 
            +
                  map :strings_cache, :string, :uint32, 5
         | 
| 92 | 
            +
                  repeated :buffer_cache_buffers, :bytes, 6
         | 
| 93 | 
            +
                  repeated :buffer_cache_indexes, :uint32, 7
         | 
| 94 | 
            +
                  optional :arguments2, :message, 8, "com.rookout.Variant2"
         | 
| 95 | 
            +
                  optional :reverse_list_order, :bool, 9
         | 
| 90 96 | 
             
                end
         | 
| 91 97 | 
             
                add_message "com.rookout.UserMsg" do
         | 
| 92 98 | 
             
                  optional :aug_report, :message, 1, "com.rookout.AugReportMessage"
         | 
| @@ -98,6 +104,7 @@ Google::Protobuf::DescriptorPool.generated_pool.build do | |
| 98 104 | 
             
                end
         | 
| 99 105 | 
             
                add_message "com.rookout.InitialAugsCommand" do
         | 
| 100 106 | 
             
                  repeated :augs, :string, 1
         | 
| 107 | 
            +
                  map :sdk_configuration, :string, :string, 2
         | 
| 101 108 | 
             
                end
         | 
| 102 109 | 
             
                add_message "com.rookout.RemoveAugCommand" do
         | 
| 103 110 | 
             
                  optional :aug_id, :string, 1
         | 
| @@ -117,6 +124,7 @@ Google::Protobuf::DescriptorPool.generated_pool.build do | |
| 117 124 | 
             
                  repeated :connectedAgents, :string, 2
         | 
| 118 125 | 
             
                end
         | 
| 119 126 | 
             
                add_message "com.rookout.DataOnPremTokenRequest" do
         | 
| 127 | 
            +
                  optional :access_type, :enum, 1, "com.rookout.DataOnPremTokenAccessType"
         | 
| 120 128 | 
             
                end
         | 
| 121 129 | 
             
                add_message "com.rookout.DataOnPremTokenResponse" do
         | 
| 122 130 | 
             
                  optional :token, :bytes, 1
         | 
| @@ -150,6 +158,44 @@ Google::Protobuf::DescriptorPool.generated_pool.build do | |
| 150 158 | 
             
                  optional :message, :message, 2, "google.protobuf.Any"
         | 
| 151 159 | 
             
                  optional :error, :string, 3
         | 
| 152 160 | 
             
                end
         | 
| 161 | 
            +
                add_message "com.rookout.StartDatastoreConnectivityTestCommand" do
         | 
| 162 | 
            +
                  optional :orgId, :string, 1
         | 
| 163 | 
            +
                  optional :controllerId, :string, 2
         | 
| 164 | 
            +
                  optional :datastoreUrl, :string, 3
         | 
| 165 | 
            +
                  optional :workspaceId, :string, 4
         | 
| 166 | 
            +
                end
         | 
| 167 | 
            +
                add_message "com.rookout.DatastoreConnectivityTestC2cResponse" do
         | 
| 168 | 
            +
                  optional :controllerId, :string, 1
         | 
| 169 | 
            +
                  optional :TestMessageId, :string, 2
         | 
| 170 | 
            +
                  optional :isSuccess, :bool, 3
         | 
| 171 | 
            +
                  optional :errorString, :string, 4
         | 
| 172 | 
            +
                end
         | 
| 173 | 
            +
                add_message "com.rookout.PingDatastoreCommand" do
         | 
| 174 | 
            +
                  optional :datastoreUrl, :string, 1
         | 
| 175 | 
            +
                end
         | 
| 176 | 
            +
                add_message "com.rookout.DatastoreInformation" do
         | 
| 177 | 
            +
                  optional :version, :string, 1
         | 
| 178 | 
            +
                  optional :hostname, :string, 2
         | 
| 179 | 
            +
                  optional :machine_type, :string, 3
         | 
| 180 | 
            +
                  optional :network, :string, 4
         | 
| 181 | 
            +
                  optional :ip, :string, 5
         | 
| 182 | 
            +
                  optional :os, :string, 6
         | 
| 183 | 
            +
                  optional :os_release, :string, 7
         | 
| 184 | 
            +
                  optional :os_version, :string, 8
         | 
| 185 | 
            +
                  optional :os_string, :string, 9
         | 
| 186 | 
            +
                end
         | 
| 187 | 
            +
                add_message "com.rookout.OrgLanguagesConfigsRequest" do
         | 
| 188 | 
            +
                end
         | 
| 189 | 
            +
                add_message "com.rookout.LanguageConfig" do
         | 
| 190 | 
            +
                  map :config, :string, :string, 1
         | 
| 191 | 
            +
                end
         | 
| 192 | 
            +
                add_message "com.rookout.OrgLanguagesConfigsResponse" do
         | 
| 193 | 
            +
                  map :OrgConfig, :string, :message, 1, "com.rookout.LanguageConfig"
         | 
| 194 | 
            +
                end
         | 
| 195 | 
            +
                add_enum "com.rookout.DataOnPremTokenAccessType" do
         | 
| 196 | 
            +
                  value :WRITE, 0
         | 
| 197 | 
            +
                  value :READ, 1
         | 
| 198 | 
            +
                end
         | 
| 153 199 | 
             
              end
         | 
| 154 200 | 
             
            end
         | 
| 155 201 |  | 
| @@ -185,5 +231,13 @@ module Com | |
| 185 231 | 
             
                HitCountUpdateMessage = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("com.rookout.HitCountUpdateMessage").msgclass
         | 
| 186 232 | 
             
                C2cRpcRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("com.rookout.C2cRpcRequest").msgclass
         | 
| 187 233 | 
             
                C2cRpcResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("com.rookout.C2cRpcResponse").msgclass
         | 
| 234 | 
            +
                StartDatastoreConnectivityTestCommand = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("com.rookout.StartDatastoreConnectivityTestCommand").msgclass
         | 
| 235 | 
            +
                DatastoreConnectivityTestC2cResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("com.rookout.DatastoreConnectivityTestC2cResponse").msgclass
         | 
| 236 | 
            +
                PingDatastoreCommand = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("com.rookout.PingDatastoreCommand").msgclass
         | 
| 237 | 
            +
                DatastoreInformation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("com.rookout.DatastoreInformation").msgclass
         | 
| 238 | 
            +
                OrgLanguagesConfigsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("com.rookout.OrgLanguagesConfigsRequest").msgclass
         | 
| 239 | 
            +
                LanguageConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("com.rookout.LanguageConfig").msgclass
         | 
| 240 | 
            +
                OrgLanguagesConfigsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("com.rookout.OrgLanguagesConfigsResponse").msgclass
         | 
| 241 | 
            +
                DataOnPremTokenAccessType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("com.rookout.DataOnPremTokenAccessType").enummodule
         | 
| 188 242 | 
             
              end
         | 
| 189 243 | 
             
            end
         | 
| @@ -0,0 +1,42 @@ | |
| 1 | 
            +
            # Generated by the protocol buffer compiler.  DO NOT EDIT!
         | 
| 2 | 
            +
            # source: variant2.proto
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            require 'google/protobuf'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            require 'google/protobuf/timestamp_pb'
         | 
| 7 | 
            +
            require_relative 'variant_pb'
         | 
| 8 | 
            +
            Google::Protobuf::DescriptorPool.generated_pool.build do
         | 
| 9 | 
            +
              add_file("variant2.proto", :syntax => :proto3) do
         | 
| 10 | 
            +
                add_message "com.rookout.Error2" do
         | 
| 11 | 
            +
                  optional :message, :string, 1
         | 
| 12 | 
            +
                  optional :type, :string, 2
         | 
| 13 | 
            +
                  optional :parameters, :message, 3, "com.rookout.Variant2"
         | 
| 14 | 
            +
                  optional :exc, :message, 4, "com.rookout.Variant2"
         | 
| 15 | 
            +
                  optional :traceback, :message, 5, "com.rookout.Variant2"
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
                add_message "com.rookout.Variant2" do
         | 
| 18 | 
            +
                  optional :variant_type_max_depth, :uint32, 1
         | 
| 19 | 
            +
                  optional :original_type_index_in_cache, :uint32, 2
         | 
| 20 | 
            +
                  repeated :attribute_names_in_cache, :uint32, 3
         | 
| 21 | 
            +
                  repeated :attribute_values, :message, 4, "com.rookout.Variant2"
         | 
| 22 | 
            +
                  optional :original_size, :uint32, 5
         | 
| 23 | 
            +
                  optional :long_value, :int64, 6
         | 
| 24 | 
            +
                  optional :bytes_index_in_cache, :uint32, 7
         | 
| 25 | 
            +
                  repeated :collection_keys, :message, 8, "com.rookout.Variant2"
         | 
| 26 | 
            +
                  repeated :collection_values, :message, 9, "com.rookout.Variant2"
         | 
| 27 | 
            +
                  optional :double_value, :double, 10
         | 
| 28 | 
            +
                  repeated :code_values, :message, 11, "com.rookout.Variant.CodeObject"
         | 
| 29 | 
            +
                  optional :time_value, :message, 12, "google.protobuf.Timestamp"
         | 
| 30 | 
            +
                  optional :error_value, :message, 16, "com.rookout.Error2"
         | 
| 31 | 
            +
                  optional :complex_value, :message, 17, "com.rookout.Variant.Complex"
         | 
| 32 | 
            +
                  optional :livetail, :message, 18, "com.rookout.Variant.LiveTailMessage"
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
            end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            module Com
         | 
| 38 | 
            +
              module Rookout
         | 
| 39 | 
            +
                Error2 = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("com.rookout.Error2").msgclass
         | 
| 40 | 
            +
                Variant2 = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("com.rookout.Variant2").msgclass
         | 
| 41 | 
            +
              end
         | 
| 42 | 
            +
            end
         | 
| @@ -18,6 +18,7 @@ Google::Protobuf::DescriptorPool.generated_pool.build do | |
| 18 18 | 
             
                  optional :original_type, :string, 2
         | 
| 19 19 | 
             
                  repeated :attributes, :message, 3, "com.rookout.Variant.NamedValue"
         | 
| 20 20 | 
             
                  optional :max_depth, :bool, 4
         | 
| 21 | 
            +
                  optional :original_type_index_in_cache, :uint32, 5
         | 
| 21 22 | 
             
                  oneof :value do
         | 
| 22 23 | 
             
                    optional :int_value, :int32, 11
         | 
| 23 24 | 
             
                    optional :long_value, :int64, 12
         | 
| @@ -35,6 +36,7 @@ Google::Protobuf::DescriptorPool.generated_pool.build do | |
| 35 36 | 
             
                    optional :complex_value, :message, 28, "com.rookout.Variant.Complex"
         | 
| 36 37 | 
             
                    optional :enum_value, :message, 31, "com.rookout.Variant.Enumeration"
         | 
| 37 38 | 
             
                    optional :traceback, :message, 32, "com.rookout.Variant.Traceback"
         | 
| 39 | 
            +
                    optional :livetail, :message, 33, "com.rookout.Variant.LiveTailMessage"
         | 
| 38 40 | 
             
                  end
         | 
| 39 41 | 
             
                end
         | 
| 40 42 | 
             
                add_message "com.rookout.Variant.NamedValue" do
         | 
| @@ -48,6 +50,7 @@ Google::Protobuf::DescriptorPool.generated_pool.build do | |
| 48 50 | 
             
                add_message "com.rookout.Variant.String" do
         | 
| 49 51 | 
             
                  optional :original_size, :int32, 1
         | 
| 50 52 | 
             
                  optional :value, :string, 2
         | 
| 53 | 
            +
                  optional :value_index_in_cache, :uint32, 3
         | 
| 51 54 | 
             
                end
         | 
| 52 55 | 
             
                add_message "com.rookout.Variant.List" do
         | 
| 53 56 | 
             
                  optional :type, :string, 1
         | 
| @@ -73,6 +76,9 @@ Google::Protobuf::DescriptorPool.generated_pool.build do | |
| 73 76 | 
             
                  optional :module, :string, 2
         | 
| 74 77 | 
             
                  optional :filename, :string, 3
         | 
| 75 78 | 
             
                  optional :lineno, :uint32, 4
         | 
| 79 | 
            +
                  optional :name_index_in_cache, :uint32, 5
         | 
| 80 | 
            +
                  optional :module_index_in_cache, :uint32, 6
         | 
| 81 | 
            +
                  optional :filename_index_in_cache, :uint32, 7
         | 
| 76 82 | 
             
                end
         | 
| 77 83 | 
             
                add_message "com.rookout.Variant.LargeInt" do
         | 
| 78 84 | 
             
                  optional :value, :string, 1
         | 
| @@ -89,6 +95,19 @@ Google::Protobuf::DescriptorPool.generated_pool.build do | |
| 89 95 | 
             
                add_message "com.rookout.Variant.Traceback" do
         | 
| 90 96 | 
             
                  repeated :locations, :message, 1, "com.rookout.Variant.CodeObject"
         | 
| 91 97 | 
             
                end
         | 
| 98 | 
            +
                add_message "com.rookout.Variant.LiveTailMessage" do
         | 
| 99 | 
            +
                  optional :level_name, :string, 1
         | 
| 100 | 
            +
                  optional :msg, :string, 2
         | 
| 101 | 
            +
                  optional :formatted_message, :string, 3
         | 
| 102 | 
            +
                  optional :time, :double, 4
         | 
| 103 | 
            +
                  optional :filename, :string, 5
         | 
| 104 | 
            +
                  optional :lineno, :int32, 6
         | 
| 105 | 
            +
                  optional :function, :string, 7
         | 
| 106 | 
            +
                  optional :module, :string, 8
         | 
| 107 | 
            +
                  optional :thread_id, :int64, 9
         | 
| 108 | 
            +
                  optional :thread_name, :string, 10
         | 
| 109 | 
            +
                  map :log_context, :string, :string, 11
         | 
| 110 | 
            +
                end
         | 
| 92 111 | 
             
                add_enum "com.rookout.Variant.Type" do
         | 
| 93 112 | 
             
                  value :VARIANT_NONE, 0
         | 
| 94 113 | 
             
                  value :VARIANT_INT, 1
         | 
| @@ -113,6 +132,8 @@ Google::Protobuf::DescriptorPool.generated_pool.build do | |
| 113 132 | 
             
                  value :VARIANT_DYNAMIC, 20
         | 
| 114 133 | 
             
                  value :VARIANT_ENUM, 21
         | 
| 115 134 | 
             
                  value :VARIANT_TRACEBACK, 22
         | 
| 135 | 
            +
                  value :VARIANT_LIVETAIL, 23
         | 
| 136 | 
            +
                  value :VARIANT_SET, 24
         | 
| 116 137 | 
             
                end
         | 
| 117 138 | 
             
              end
         | 
| 118 139 | 
             
            end
         | 
| @@ -134,6 +155,7 @@ module Com | |
| 134 155 | 
             
                Variant::Complex = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("com.rookout.Variant.Complex").msgclass
         | 
| 135 156 | 
             
                Variant::Enumeration = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("com.rookout.Variant.Enumeration").msgclass
         | 
| 136 157 | 
             
                Variant::Traceback = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("com.rookout.Variant.Traceback").msgclass
         | 
| 158 | 
            +
                Variant::LiveTailMessage = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("com.rookout.Variant.LiveTailMessage").msgclass
         | 
| 137 159 | 
             
                Variant::Type = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("com.rookout.Variant.Type").enummodule
         | 
| 138 160 | 
             
              end
         | 
| 139 161 | 
             
            end
         | 
    
        data/lib/rookout/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rookout
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.32
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Liran Haimovitch
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2022- | 
| 11 | 
            +
            date: 2022-04-24 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: binding_of_caller
         | 
| @@ -72,14 +72,14 @@ dependencies: | |
| 72 72 | 
             
                requirements:
         | 
| 73 73 | 
             
                - - '='
         | 
| 74 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version: 3. | 
| 75 | 
            +
                    version: 3.19.2
         | 
| 76 76 | 
             
              type: :runtime
         | 
| 77 77 | 
             
              prerelease: false
         | 
| 78 78 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 79 | 
             
                requirements:
         | 
| 80 80 | 
             
                - - '='
         | 
| 81 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version: 3. | 
| 82 | 
            +
                    version: 3.19.2
         | 
| 83 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 84 | 
             
              name: google-style
         | 
| 85 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -203,6 +203,7 @@ files: | |
| 203 203 | 
             
            - lib/rookout/com_ws/agent_com_ws.rb
         | 
| 204 204 | 
             
            - lib/rookout/com_ws/backoff.rb
         | 
| 205 205 | 
             
            - lib/rookout/com_ws/command_handler.rb
         | 
| 206 | 
            +
            - lib/rookout/com_ws/envelope_wrapper.rb
         | 
| 206 207 | 
             
            - lib/rookout/com_ws/git.rb
         | 
| 207 208 | 
             
            - lib/rookout/com_ws/information.rb
         | 
| 208 209 | 
             
            - lib/rookout/com_ws/output.rb
         | 
| @@ -215,6 +216,7 @@ files: | |
| 215 216 | 
             
            - lib/rookout/interface.rb
         | 
| 216 217 | 
             
            - lib/rookout/logger.rb
         | 
| 217 218 | 
             
            - lib/rookout/processor/namespace_serializer.rb
         | 
| 219 | 
            +
            - lib/rookout/processor/namespace_serializer2.rb
         | 
| 218 220 | 
             
            - lib/rookout/processor/namespaces/container_namespace.rb
         | 
| 219 221 | 
             
            - lib/rookout/processor/namespaces/frame_namespace.rb
         | 
| 220 222 | 
             
            - lib/rookout/processor/namespaces/namespace.rb
         | 
| @@ -240,6 +242,7 @@ files: | |
| 240 242 | 
             
            - lib/rookout/protobuf/controller_info_pb.rb
         | 
| 241 243 | 
             
            - lib/rookout/protobuf/envelope_pb.rb
         | 
| 242 244 | 
             
            - lib/rookout/protobuf/messages_pb.rb
         | 
| 245 | 
            +
            - lib/rookout/protobuf/variant2_pb.rb
         | 
| 243 246 | 
             
            - lib/rookout/protobuf/variant_pb.rb
         | 
| 244 247 | 
             
            - lib/rookout/rookout_singleton.rb
         | 
| 245 248 | 
             
            - lib/rookout/services/position.rb
         |