Skip to content

Commit 7f29ab5

Browse files
OguzErdierdi.erkmen
andauthored
chore: remove NewRelic dependency for vendor-neutral monitoring (#23)
- Remove NewRelic.Agent.Api package dependency - Remove all NewRelic monitoring attributes from codebase - Bump version to 1.7.0 - Update CHANGELOG and README with monitoring flexibility info - Add .DS_Store to .gitignore Co-authored-by: erdi.erkmen <erdi.erkmen@trendyol.com>
1 parent f842268 commit 7f29ab5

18 files changed

+34
-44
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,3 +268,6 @@ __pycache__/
268268

269269
#nCrunchTemp_
270270

271+
# macOS system files
272+
.DS_Store
273+

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
## v1.7.0 (February 5, 2026)
2+
3+
### Removed:
4+
- NewRelic.Agent.Api dependency removed to make the project vendor-neutral
5+
- All NewRelic monitoring attributes ([Transaction], [Trace]) removed from codebase
6+
- This change makes the project more suitable for open-source use without proprietary dependencies
7+
8+
### Changed:
9+
- Users can now integrate their own preferred monitoring solution (OpenTelemetry, Application Insights, Datadog, etc.)
10+
111
## v1.6.0 (July 2, 2025)
212

313
### Added:

README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,19 @@ The application uses circuit breakers to handle database operation failures grac
122122
The application can be configured using the `config.json` and `secret.json` files. Here are the configurations you can
123123
set:
124124

125+
## Monitoring & Observability
126+
127+
This project does not include built-in APM or monitoring. Users can integrate their preferred observability solution:
128+
- **OpenTelemetry** (vendor-neutral, recommended for distributed tracing)
129+
- **Application Insights** (Azure)
130+
- **Datadog**
131+
- **NewRelic**
132+
- **Elastic APM**
133+
- **Prometheus** (for metrics)
134+
- Or any other monitoring tool of your choice
135+
136+
The codebase is clean and ready for you to add instrumentation as needed for your monitoring platform.
137+
125138
## Important Notes
126139

127140
> [!WARNING]

src/Coordinators/MissingCoordinator/Services/MissingEventCleaner.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using System.Threading.Tasks;
55
using Microsoft.Extensions.Logging;
66
using Microsoft.Extensions.Options;
7-
using NewRelic.Api.Agent;
87
using PollingOutboxPublisher.ConfigOptions;
98
using PollingOutboxPublisher.Coordinators.MissingCoordinator.Services.Interfaces;
109
using PollingOutboxPublisher.Database.Repositories.Interfaces;
@@ -31,7 +30,6 @@ public MissingEventCleaner(IOptions<WorkerSettings> workerSettings, ILogger<Miss
3130
_brokerErrorsMaxRetryCount = workerSettings.Value.BrokerErrorsMaxRetryCount;
3231
}
3332

34-
[Trace]
3533
public async Task CleanMissingEventsHaveOutboxEventAsync(MissingEvent[] missingEvents,
3634
List<MappedMissingEvent> results)
3735
{
@@ -46,13 +44,11 @@ public async Task CleanMissingEventsHaveOutboxEventAsync(MissingEvent[] missingE
4644
await PushToExceeded(missingEvents, _brokerErrorsMaxRetryCount);
4745
}
4846

49-
[Trace]
5047
public async Task CleanMissingEventsNotHaveOutboxEventAsync(MissingEvent[] missingEvents)
5148
{
5249
await PushToExceeded(missingEvents, _missingEventsMaxRetryCount);
5350
}
5451

55-
[Trace]
5652
public async Task HandleNonMatchedMissingEventsAsync(OutboxEvent[] outboxEvents,
5753
MissingEvent[] retryableMissingEvents)
5854
{

src/Coordinators/MissingCoordinator/Services/PollingMissingEventsQueue.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
using System.Collections.Generic;
1+
using System.Collections.Generic;
22
using System.Linq;
33
using System.Threading;
44
using System.Threading.Tasks;
55
using Microsoft.Extensions.Options;
6-
using NewRelic.Api.Agent;
76
using PollingOutboxPublisher.ConfigOptions;
87
using PollingOutboxPublisher.Coordinators.MissingCoordinator.Services.Interfaces;
98
using PollingOutboxPublisher.Models;
@@ -26,7 +25,6 @@ public PollingMissingEventsQueue(IPollingMissingEventsSource pollingMissingEvent
2625
_retryLimit = outboxSettings.Value.MissingEventsMaxRetryCount;
2726
}
2827

29-
[Trace]
3028
public Task<(MissingEvent[], MissingEvent[], List<MappedMissingEvent>, OutboxEvent[])> DequeueAsync(
3129
CancellationToken cancellationToken)
3230
{

src/Coordinators/MissingCoordinator/Services/PollingMissingEventsSource.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
using System;
1+
using System;
22
using System.Linq;
33
using System.Threading.Tasks;
44
using Microsoft.Extensions.Logging;
5-
using NewRelic.Api.Agent;
65
using PollingOutboxPublisher.Coordinators.MissingCoordinator.Services.Interfaces;
76
using PollingOutboxPublisher.Database.Repositories.Interfaces;
87
using PollingOutboxPublisher.Extensions;
@@ -25,7 +24,6 @@ public PollingMissingEventsSource(ILogger<PollingMissingEventsSource> logger,
2524
_outboxEventRepository = outboxEventRepository;
2625
}
2726

28-
[Trace]
2927
public async Task<MissingEvent[]> GetMissingEventsAsync(int batchCount)
3028
{
3129
var missingEvents = await _missingEventRepository.GetMissingEventsAsync(batchCount);

src/Coordinators/OutboxCoordinator/Services/OffsetSetter.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using System.Linq;
44
using System.Threading.Tasks;
55
using Microsoft.Extensions.Logging;
6-
using NewRelic.Api.Agent;
76
using PollingOutboxPublisher.Coordinators.OutboxCoordinator.Services.Interfaces;
87
using PollingOutboxPublisher.Database.Repositories.Interfaces;
98
using PollingOutboxPublisher.Models;
@@ -23,7 +22,6 @@ public OffsetSetter(ILogger<OffsetSetter> logger, IOutboxOffsetRepository outbox
2322
_outboxOffsetRepository = outboxOffsetRepository;
2423
}
2524

26-
[Trace]
2725
public async Task SetLatestOffset(OutboxEvent[] items)
2826
{
2927
try

src/Coordinators/OutboxCoordinator/Services/PollingOutboxQueue.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
using System.Threading;
1+
using System.Threading;
22
using System.Threading.Tasks;
33
using Microsoft.Extensions.Options;
4-
using NewRelic.Api.Agent;
54
using PollingOutboxPublisher.ConfigOptions;
65
using PollingOutboxPublisher.Coordinators.OutboxCoordinator.Services.Interfaces;
76
using PollingOutboxPublisher.Models;
@@ -23,7 +22,6 @@ public PollingOutboxQueue(IPollingSource pollingSource, IOptions<WorkerSettings>
2322
_prefetchCount = workerSettings.Value.OutboxEventsBatchSize;
2423
}
2524

26-
[Trace]
2725
public async Task<OutboxEvent[]> DequeueAsync(CancellationToken cancellationToken)
2826
{
2927
var result = await _pollingSource.GetNextAsync(_prefetchCount);

src/Coordinators/OutboxCoordinator/Services/PollingSource.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
using System.Threading.Tasks;
1+
using System.Threading.Tasks;
22
using Microsoft.Extensions.Logging;
3-
using NewRelic.Api.Agent;
43
using PollingOutboxPublisher.Coordinators.OutboxCoordinator.Services.Interfaces;
54
using PollingOutboxPublisher.Database.Repositories.Interfaces;
65
using PollingOutboxPublisher.Models;
@@ -22,7 +21,6 @@ public PollingSource(ILogger<PollingSource> logger, IOutboxOffsetRepository outb
2221
_outboxEventRepository = outboxEventRepository;
2322
}
2423

25-
[Trace]
2624
public async Task<OutboxEventsBatch> GetNextAsync(int batchCount)
2725
{
2826
var outboxEventsBatch = new OutboxEventsBatch();

src/Coordinators/Services/KafkaProducer.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using Confluent.Kafka;
55
using Microsoft.Extensions.Logging;
66
using Microsoft.Extensions.Options;
7-
using NewRelic.Api.Agent;
87
using PollingOutboxPublisher.ConfigOptions;
98
using PollingOutboxPublisher.Coordinators.Services.Interfaces;
109

@@ -61,14 +60,12 @@ private void BuildProducer(Kafka kafka)
6160
_producer = new ProducerBuilder<string, string>(config).Build();
6261
}
6362

64-
[Trace]
6563
public async Task<DeliveryResult<string, string>> ProduceAsync(string topic, Message<string, string> message)
6664
{
6765
var deliveryResult = await _producer.ProduceAsync(topic, message);
6866
return deliveryResult;
6967
}
7068

71-
[Trace]
7269
public void Dispose()
7370
{
7471
_producer?.Flush(TimeSpan.FromSeconds(10));

0 commit comments

Comments
 (0)