Skip to content

Commit

Permalink
Merge pull request #456 from newrelic/vince/conditional-warnings
Browse files Browse the repository at this point in the history
Conditional compilation to address warnings
  • Loading branch information
tpitale authored Jan 7, 2025
2 parents c940d45 + 9bf2093 commit 810136a
Show file tree
Hide file tree
Showing 11 changed files with 44 additions and 73 deletions.
19 changes: 0 additions & 19 deletions lib/new_relic/conditional_compile.ex

This file was deleted.

6 changes: 3 additions & 3 deletions lib/new_relic/error/metadata_reporter.ex
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ defmodule NewRelic.Error.MetadataReporter do
alias NewRelic.Util
alias NewRelic.Harvest.Collector

import NewRelic.ConditionalCompile

# Before elixir 1.15, ignore terminating errors so they don't get reported twice
before_elixir_version("1.15.0", def(report_error(_, {{_, :terminating}, _}), do: nil))
if NewRelic.Util.ConditionalCompile.match?("< 1.15.0") do
def report_error(_, {{_, :terminating}, _}), do: nil
end

def report_error(:transaction, {_cause, metadata}) do
kind = :error
Expand Down
30 changes: 16 additions & 14 deletions lib/new_relic/error_logger.ex
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ defmodule NewRelic.ErrorLogger do
"""
@behaviour :gen_event

import NewRelic.ConditionalCompile

def init(opts) do
after_elixir_version(
"1.15.0",
if NewRelic.Util.ConditionalCompile.match?(">= 1.15.0") do
def init(opts) do
Logger.add_translator({__MODULE__, :translator})
)

{:ok, opts}
{:ok, opts}
end
else
def init(opts) do
{:ok, opts}
end
end

def handle_call(_opts, state), do: {:ok, :ok, state}
Expand All @@ -23,13 +23,15 @@ defmodule NewRelic.ErrorLogger do

def code_change(_old_vsn, state, _extra), do: {:ok, state}

def terminate(_reason, _state) do
after_elixir_version(
"1.15.0",
if NewRelic.Util.ConditionalCompile.match?(">= 1.15.0") do
def terminate(_reason, _state) do
Logger.remove_translator({__MODULE__, :translator})
)

:ok
:ok
end
else
def terminate(_reason, _state) do
:ok
end
end

# Don't log SASL progress reports
Expand Down
2 changes: 1 addition & 1 deletion lib/new_relic/logger.ex
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ defmodule NewRelic.Logger do

defp elixir_logger(:debug, message), do: Logger.debug(message)
defp elixir_logger(:info, message), do: Logger.info(message)
defp elixir_logger(:warn, message), do: Logger.warn(message)
defp elixir_logger(:warn, message), do: Logger.warning(message)
defp elixir_logger(:error, message), do: Logger.error(message)

@sep " - "
Expand Down
14 changes: 0 additions & 14 deletions lib/new_relic/logs_in_context.ex
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,6 @@ defmodule NewRelic.LogsInContext do
alias NewRelic.Harvest.Collector.AgentRun
alias NewRelic.Harvest.TelemetrySdk

@elixir_version_requirement ">= 1.10.0"
def elixir_version_supported?(mode) do
case Version.match?(System.version(), @elixir_version_requirement) do
true ->
true

false ->
mode in [:direct, :forwarder] &&
NewRelic.log(:error, ":logs_in_context requires Elixir 1.10 or greater")

false
end
end

def configure(:direct) do
:logger.add_primary_filter(:nr_logs_in_context, {&primary_filter/2, %{mode: :direct}})
end
Expand Down
4 changes: 1 addition & 3 deletions lib/new_relic/logs_in_context/supervisor.ex
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@ defmodule NewRelic.LogsInContext.Supervisor do

def init(_) do
mode = NewRelic.Config.feature(:logs_in_context)

NewRelic.LogsInContext.elixir_version_supported?(mode) &&
NewRelic.LogsInContext.configure(mode)
NewRelic.LogsInContext.configure(mode)

Supervisor.init([], strategy: :one_for_one)
end
Expand Down
8 changes: 5 additions & 3 deletions lib/new_relic/sampler/beam.ex
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,9 @@ defmodule NewRelic.Sampler.Beam do
safe_div(active, total)
end

defp safe_div(_, +0.0), do: 0.0
defp safe_div(_, -0.0), do: 0.0
defp safe_div(a, b), do: a / b
defp safe_div(a, b) do
a / b
rescue
ArithmeticError -> 0.0
end
end
22 changes: 11 additions & 11 deletions lib/new_relic/transaction/erlang_trace.ex
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ defmodule NewRelic.Transaction.ErlangTrace do

@moduledoc false

import NewRelic.ConditionalCompile

def start_link(_) do
GenServer.start_link(__MODULE__, :ok, name: __MODULE__)
end
Expand Down Expand Up @@ -91,23 +89,25 @@ defmodule NewRelic.Transaction.ErlangTrace do
# http://erlang.org/doc/apps/erts/match_spec.html

trace_proc_lib_spawn_link()
trace_task_supervised_spawn_link()
end

defp trace_proc_lib_spawn_link do
:erlang.trace_pattern({:proc_lib, :spawn_link, :_}, [{:_, [], [{:return_trace}]}], [])
:erlang.trace_pattern({:proc_lib, :start_link, :_}, [{:_, [], [{:return_trace}]}], [])
end

# Starting with elixir 1.15 tasks are spawned with Task.Supervised.
# See https://github.com/elixir-lang/elixir/commit/ecdf68438160928f01769b3ed76e184ad451c9fe
after_elixir_version(
"1.15.0",
# Starting with elixir 1.15 tasks are spawned with Task.Supervised.
# See https://github.com/elixir-lang/elixir/commit/ecdf68438160928f01769b3ed76e184ad451c9fe
if NewRelic.Util.ConditionalCompile.match?(">= 1.15.0") do
defp trace_task_supervised_spawn_link do
:erlang.trace_pattern({Task.Supervised, :spawn_link, :_}, [{:_, [], [{:return_trace}]}], [])
)

after_elixir_version(
"1.15.0",
:erlang.trace_pattern({Task.Supervised, :start_link, :_}, [{:_, [], [{:return_trace}]}], [])
)
end
else
defp trace_task_supervised_spawn_link do
:ignore
end
end

defp overload_protection(%{backoff: backoff} = overload) do
Expand Down
6 changes: 6 additions & 0 deletions lib/new_relic/util/conditional_compile.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
defmodule NewRelic.Util.ConditionalCompile do
@moduledoc false
def match?(version) do
Version.match?(System.version(), version)
end
end
4 changes: 0 additions & 4 deletions test/logs_in_context_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,6 @@ defmodule LogsInContextTest do

alias NewRelic.Harvest.TelemetrySdk

unless NewRelic.LogsInContext.elixir_version_supported?(:direct) do
@moduletag :skip
end

test "LogsInContext formats log messages" do
configure_logs_in_context(:forwarder)

Expand Down
2 changes: 1 addition & 1 deletion test/support/test_helper.ex
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ defmodule TestHelper do

def gather_harvest(harvester) do
Process.sleep(300)
harvester.gather_harvest
harvester.gather_harvest()
end

def restart_harvest_cycle(harvest_cycle) do
Expand Down

0 comments on commit 810136a

Please sign in to comment.