Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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