Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Neo4j.Driver/Neo4j.Driver.Reactive/DriverExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,6 @@ public static IRxSession RxSession(this IDriver driver, Action<SessionConfigBuil

return new InternalRxSession(
reactiveDriver.Session(action, true),
new RxRetryLogic(reactiveDriver.Config.MaxTransactionRetryTime, reactiveDriver.Config.Logger));
new RxRetryLogic(reactiveDriver.Config.MaxTransactionRetryTime, reactiveDriver.Config.Neo4JLogger));
}
}
8 changes: 4 additions & 4 deletions Neo4j.Driver/Neo4j.Driver.Reactive/Internal/RxRetryLogic.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,18 +30,18 @@ internal class RxRetryLogic : IRxRetryLogic
private readonly double _delayJitter;
private readonly double _delayMultiplier;
private readonly double _initialDelay;
private readonly ILogger _logger;
private readonly INeo4jLogger _neo4JLogger;
private readonly int _maxRetryTimeout;
private readonly Random _random;

public RxRetryLogic(TimeSpan maxRetryTimeout, ILogger logger)
public RxRetryLogic(TimeSpan maxRetryTimeout, INeo4jLogger neo4JLogger)
{
_maxRetryTimeout = (int)maxRetryTimeout.TotalMilliseconds;
_initialDelay = TimeSpan.FromSeconds(1).TotalMilliseconds;
_delayMultiplier = 2.0;
_delayJitter = 0.2;
_random = new Random(Guid.NewGuid().GetHashCode());
_logger = logger;
_neo4JLogger = neo4JLogger;
}

public IObservable<T> Retry<T>(IObservable<T> work)
Expand Down Expand Up @@ -76,7 +76,7 @@ public IObservable<T> Retry<T>(IObservable<T> work)
var delayDuration = TimeSpan.FromMilliseconds(ComputeNextDelay(delay));
delay *= _delayMultiplier;
retryCount++;
_logger?.Warn(exc, $"Transaction failed and will be retried in {delay} ms.");
_neo4JLogger?.Warn(exc, $"Transaction failed and will be retried in {delay} ms.");
return Observable.Return(1).Delay(delayDuration);
});
});
Expand Down
2 changes: 1 addition & 1 deletion Neo4j.Driver/Neo4j.Driver.Simple/DriverExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public static ISession Session(this IDriver driver, Action<SessionConfigBuilder>

return new InternalSession(
driver.AsyncSession(action).CastOrThrow<IInternalAsyncSession>(),
new RetryLogic(asyncDriver.Config.MaxTransactionRetryTime, asyncDriver.Config.Logger),
new RetryLogic(asyncDriver.Config.MaxTransactionRetryTime, asyncDriver.Config.Neo4JLogger),
new BlockingExecutor());
}
}
8 changes: 4 additions & 4 deletions Neo4j.Driver/Neo4j.Driver.Simple/Internal/RetryLogic.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,18 +30,18 @@ internal class RetryLogic : IRetryLogic
private readonly double _delayJitter;
private readonly double _delayMultiplier;
private readonly double _initialDelay;
private readonly ILogger _logger;
private readonly INeo4jLogger _neo4JLogger;
private readonly int _maxRetryTimeout;
private readonly Random _random;

public RetryLogic(TimeSpan maxRetryTimeout, ILogger logger)
public RetryLogic(TimeSpan maxRetryTimeout, INeo4jLogger neo4JLogger)
{
_maxRetryTimeout = (int)maxRetryTimeout.TotalMilliseconds;
_initialDelay = TimeSpan.FromSeconds(1).TotalMilliseconds;
_delayMultiplier = 2.0;
_delayJitter = 0.2;
_random = new Random(Guid.NewGuid().GetHashCode());
_logger = logger;
_neo4JLogger = neo4JLogger;
}

public T Retry<T>(Func<T> work)
Expand Down Expand Up @@ -69,7 +69,7 @@ public T Retry<T>(Func<T> work)
if (shouldRetry)
{
var delay = TimeSpan.FromMilliseconds(ComputeNextDelay(delayMs));
_logger?.Warn(e, $"Transaction failed and will be retried in {delay}ms.");
_neo4JLogger?.Warn(e, $"Transaction failed and will be retried in {delay}ms.");
Thread.Sleep(delay);
delayMs *= _delayMultiplier;
}
Expand Down
4 changes: 2 additions & 2 deletions Neo4j.Driver/Neo4j.Driver.Tests.Integration/ExamplesAsync.cs
Original file line number Diff line number Diff line change
Expand Up @@ -620,7 +620,7 @@ public DriverIntroductionExample(string uri, string user, string password)
_driver = GraphDatabase.Driver(
uri,
AuthTokens.Basic(user, password),
configBuilder => configBuilder.WithLogger(new SimpleLogger()));
configBuilder => configBuilder.WithLogger(new SimpleNeo4JLogger()));
}

public void Dispose()
Expand Down Expand Up @@ -732,7 +732,7 @@ public static async Task Main(string[] args)
}
}

internal class SimpleLogger : ILogger
internal class SimpleNeo4JLogger : INeo4jLogger
{
public void Debug(string message, params object[] args)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ public static IDriver NewBoltDriver(Uri boltUri, IAuthToken authToken)
{
var configuredLevelStr = Environment.GetEnvironmentVariable("NEOLOGLEVEL");
var logger = Enum.TryParse<ExtendedLogLevel>(configuredLevelStr ?? "", true, out var configuredLevel)
? new TestLogger(Console.WriteLine, configuredLevel)
: new TestLogger(s => Debug.WriteLine(s), ExtendedLogLevel.Debug);
? new TestNeo4JLogger(Console.WriteLine, configuredLevel)
: new TestNeo4JLogger(s => Debug.WriteLine(s), ExtendedLogLevel.Debug);

return GraphDatabase.Driver(boltUri, authToken, o => { o.WithLogger(logger); });
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public BoltV4IT(ITestOutputHelper output, CausalClusterIntegrationTestFixture fi
_driver = GraphDatabase.Driver(
Cluster.BoltRoutingUri,
Cluster.AuthToken,
o => o.WithLogger(TestLogger.Create(output)));
o => o.WithLogger(TestNeo4JLogger.Create(output)));
}

[RequireClusterFact("4.0.0", GreaterThanOrEqualTo)]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ protected RoutingDriverTestBase(ITestOutputHelper output, CausalClusterIntegrati
AuthToken,
builder =>
{
builder.WithLogger(TestLogger.Create(output));
builder.WithLogger(TestNeo4JLogger.Create(output));
Cluster.Configure(builder);
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ protected StressTest(
builder =>
{
builder
.WithLogger(new StressTestLogger(_output, minLevel))
.WithLogger(new StressTestNeo4JLogger(_output, minLevel))
.WithMaxConnectionPoolSize(100)
.WithConnectionAcquisitionTimeout(TimeSpan.FromMinutes(1));

Expand All @@ -109,12 +109,12 @@ private enum StressTestMinLogLevel
None
}

private class StressTestLogger : ILogger
private class StressTestNeo4JLogger : INeo4jLogger
{
private readonly StressTestMinLogLevel _minLevel;
private readonly ITestOutputHelper _output;

public StressTestLogger(ITestOutputHelper output, StressTestMinLogLevel minLevel)
public StressTestNeo4JLogger(ITestOutputHelper output, StressTestMinLogLevel minLevel)
{
_output = output ?? throw new ArgumentNullException(nameof(output));
_minLevel = minLevel;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public DirectDriverTests(ITestOutputHelper output)
{
SetupConfig = o => o
.WithEncryptionLevel(EncryptionLevel.None)
.WithLogger(TestLogger.Create(output));
.WithLogger(TestNeo4JLogger.Create(output));
}

private Action<ConfigBuilder> SetupConfig { get; }
Expand All @@ -44,7 +44,7 @@ public async Task ShouldLogServerAddress()
void SetupConfig(ConfigBuilder o)
{
o.WithEncryptionLevel(EncryptionLevel.None);
o.WithLogger(new TestLogger(logs.Add, ExtendedLogLevel.Debug));
o.WithLogger(new TestNeo4JLogger(logs.Add, ExtendedLogLevel.Debug));
}

using var _ = BoltStubServer.Start("V4/accessmode_reader_implicit", 9001);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public sealed class MultiDatabasesTests

public MultiDatabasesTests(ITestOutputHelper output)
{
_setupConfig = o => o.WithLogger(TestLogger.Create(output));
_setupConfig = o => o.WithLogger(TestNeo4JLogger.Create(output));
}

[Fact]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public sealed class ResultStreamingTests
public ResultStreamingTests(ITestOutputHelper output)
{
_output = output;
_setupConfig = o => o.WithLogger(TestLogger.Create(output));
_setupConfig = o => o.WithLogger(TestNeo4JLogger.Create(output));
}

[Fact]
Expand All @@ -60,7 +60,7 @@ public async Task ShouldAllowChangeFetchSize()
await using var driver = GraphDatabase.Driver(
"bolt://127.0.0.1:9001",
AuthTokens.None,
o => o.WithLogger(TestLogger.Create(_output)).WithFetchSize(2));
o => o.WithLogger(TestNeo4JLogger.Create(_output)).WithFetchSize(2));

await using var session = driver.AsyncSession();
var cursor =
Expand All @@ -78,7 +78,7 @@ public void ShouldDiscardIfNotFinished()
using var driver = GraphDatabase.Driver(
"bolt://127.0.0.1:9001",
AuthTokens.None,
o => o.WithLogger(TestLogger.Create(_output)).WithFetchSize(2));
o => o.WithLogger(TestNeo4JLogger.Create(_output)).WithFetchSize(2));

var session = driver.RxSession();

Expand All @@ -99,7 +99,7 @@ public void ShouldDiscardTxIfNotFinished()
using var driver = GraphDatabase.Driver(
"bolt://127.0.0.1:9001",
AuthTokens.None,
o => o.WithLogger(TestLogger.Create(_output)).WithFetchSize(2));
o => o.WithLogger(TestNeo4JLogger.Create(_output)).WithFetchSize(2));

var session = driver.RxSession();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ List<string> GetPaths()
TimeSpan.FromMilliseconds(data.livenessCheckTimeoutMs.Value));
}

var logger = new SimpleLogger();
var logger = new SimpleNeo4JLogger();
configBuilder.WithLogger(logger);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

namespace Neo4j.Driver.Tests.TestBackend.Protocol.Driver;

internal class SimpleLogger : ILogger
internal class SimpleNeo4JLogger : INeo4jLogger
{
private string Now => DateTime.UtcNow.ToString("HH:mm:ss");

Expand Down
12 changes: 6 additions & 6 deletions Neo4j.Driver/Neo4j.Driver.Tests/AsyncRetryLogicTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public class AsyncRetryLogicTests
[MemberData(nameof(NonTransientErrors))]
public async Task ShouldNotRetryOnNonTransientErrors(Exception error)
{
var retryLogic = new AsyncRetryLogic(TimeSpan.FromSeconds(5), new TestLogger(Console.WriteLine));
var retryLogic = new AsyncRetryLogic(TimeSpan.FromSeconds(5), new TestNeo4JLogger(Console.WriteLine));
var work = CreateFailingWork(0, error);

var exc = await Record.ExceptionAsync(() => retryLogic.RetryAsync(() => work.Work(null)));
Expand All @@ -46,7 +46,7 @@ public async Task ShouldNotRetryOnNonTransientErrors(Exception error)
[MemberData(nameof(TransientErrors))]
public async Task ShouldRetryOnTransientErrors(Exception error)
{
var retryLogic = new AsyncRetryLogic(TimeSpan.FromSeconds(5), NullLogger.Instance);
var retryLogic = new AsyncRetryLogic(TimeSpan.FromSeconds(5), NullNeo4JLogger.Instance);
var work = CreateFailingWork(5, error);

var result = await retryLogic.RetryAsync(() => work.Work(null));
Expand All @@ -58,7 +58,7 @@ public async Task ShouldRetryOnTransientErrors(Exception error)
[Fact]
public async Task ShouldNotRetryOnSuccess()
{
var retryLogic = new AsyncRetryLogic(TimeSpan.FromSeconds(5), NullLogger.Instance);
var retryLogic = new AsyncRetryLogic(TimeSpan.FromSeconds(5), NullNeo4JLogger.Instance);
var work = CreateFailingWork(5);

var result = await retryLogic.RetryAsync(() => work.Work(null));
Expand All @@ -74,7 +74,7 @@ public async Task ShouldNotRetryOnSuccess()
public async Task ShouldLogRetries(int errorCount)
{
var error = new TransientException("code", "message");
var logger = new Mock<ILogger>();
var logger = new Mock<INeo4jLogger>();
var retryLogic = new AsyncRetryLogic(TimeSpan.FromMinutes(1), logger.Object);
var work = CreateFailingWork(
1,
Expand All @@ -94,7 +94,7 @@ public async Task ShouldLogRetries(int errorCount)
public async Task ShouldRetryAtLeastTwice()
{
var error = new TransientException("code", "message");
var logger = new Mock<ILogger>();
var logger = new Mock<INeo4jLogger>();
var retryLogic = new AsyncRetryLogic(TimeSpan.FromSeconds(1), logger.Object);
var work = CreateFailingWork(TimeSpan.FromSeconds(2), 1, error);

Expand All @@ -117,7 +117,7 @@ public async Task ShouldThrowServiceUnavailableWhenRetriesTimedOut()
.Cast<Exception>()
.ToArray();

var logger = new Mock<ILogger>();
var logger = new Mock<INeo4jLogger>();
var retryLogic = new AsyncRetryLogic(TimeSpan.FromSeconds(2), logger.Object);
var work = CreateFailingWork(TimeSpan.FromSeconds(1), 1, exceptions);

Expand Down
6 changes: 3 additions & 3 deletions Neo4j.Driver/Neo4j.Driver.Tests/AsyncSessionTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,11 @@ namespace Neo4j.Driver.Tests;

public class AsyncSessionTests
{
internal static AsyncSession NewSession(IConnection connection, bool reactive = false, ILogger logger = null)
internal static AsyncSession NewSession(IConnection connection, bool reactive = false, INeo4jLogger neo4JLogger = null)
{
return new AsyncSession(
new TestConnectionProvider(connection),
logger ?? NullLogger.Instance,
neo4JLogger ?? NullNeo4JLogger.Instance,
null,
0,
new Driver.SessionConfig(),
Expand Down Expand Up @@ -302,7 +302,7 @@ public async void PipelinedShouldBeginWithoutBlocking()

var session = new AsyncSession(
new TestConnectionProvider(mockConn.Object),
NullLogger.Instance,
NullNeo4JLogger.Instance,
new AsyncRetryLogic(TimeSpan.Zero, null),
0,
new Driver.SessionConfig(),
Expand Down
Loading