Version Information
Akka.Persistence.Sql 1.5.13 / current dev branch
Describe the bug
Setting plugin identifier to something other than default value (sql) fails to start due to hard-coded hocon paths in the library.
To Reproduce
I'm attaching a PR with adjusted tests and a fix
Expected behavior
ActorSystem starts
Actual behavior
Failed: Expected a message of type Akka.Streams.TestKit.TestSubscriber+OnNext`1[Akka.Persistence.Query.EventEnvelope], but received {TestSubscriber.On...
Xunit.Sdk.TrueException
Failed: Expected a message of type Akka.Streams.TestKit.TestSubscriber+OnNext`1[Akka.Persistence.Query.EventEnvelope], but received {TestSubscriber.OnError(One or more errors occurred. (One or more errors occurred. (DataProvider '' not found.)))} (type Akka.Streams.TestKit.TestSubscriber+OnError) instead from [akka://SqlEndToEndSpec/user/StreamSupervisor-4/Flow-0-0-unknown-operation#1836253147]
at Akka.TestKit.Xunit2.XunitAssertions.Fail(String format, Object[] args)
at Akka.TestKit.TestKitBase.InternalExpectMsgEnvelopeAsync[T](Nullable`1 timeout, Action`2 assert, String hint, CancellationToken cancellationToken, Boolean shouldLog)
at Akka.TestKit.TestKitBase.InternalExpectMsgAsync[T](Nullable`1 timeout, Action`2 assert, String hint, CancellationToken cancellationToken)
at Akka.Streams.TestKit.TestSubscriber.ManualProbe`1.ExpectNextTask[TOther](TestProbe probe, Predicate`1 predicate, CancellationToken cancellationToken)
at Akka.Streams.TestKit.TestSubscriber.ManualProbe`1.ExpectNext[TOther](Predicate`1 predicate, CancellationToken cancellationToken)
at Akka.Persistence.Sql.Hosting.Tests.SqlEndToEndSpec.Should_Start_ActorSystem_wth_Sql_Persistence() in /home/a/projects/Akka.Persistence.Sql/src/Akka.Persistence.Sql.Hosting.Tests/SqlEndToEndSpec.cs:line 89
at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass48_0.<<InvokeTestMethodAsync>b__1>d.MoveNext() in /_/src/xunit.execution/Sdk/Frameworks/Runners/TestInvoker.cs:line 276
--- End of stack trace from previous location ---
at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) in /_/src/xunit.execution/Sdk/Frameworks/ExecutionTimer.cs:line 48
at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) in /_/src/xunit.core/Sdk/ExceptionAggregator.cs:line 90
4/17/2024 10:29:06 AM:INF:Microsoft.Hosting.Lifetime:0 Application started. Press Ctrl+C to shut down.
4/17/2024 10:29:06 AM:INF:Microsoft.Hosting.Lifetime:0 Hosting environment: Production
4/17/2024 10:29:06 AM:INF:Microsoft.Hosting.Lifetime:0 Content root path: /home/a/projects/Akka.Persistence.Sql/src/Akka.Persistence.Sql.Hosting.Tests/bin/Debug/net8.0/
4/17/2024 10:29:07 AM:ERR:Akka.Actor.ActorSystem:0 [ERROR][04/17/2024 09:29:07.252Z][Thread 0042][LogSource (akka://SqlEndToEndSpec)] An exception occured inside SelectAsync while executing Task. Supervision strategy: Stop
Cause: System.AggregateException: One or more errors occurred. (DataProvider '' not found.)
---> LinqToDB.LinqToDBException: DataProvider '' not found.
at LinqToDB.Data.DataConnection.GetDataProviderEx(String providerName, String connectionString)
at LinqToDB.Data.DataConnection.ConfigurationApplier.Apply(DataConnection dataConnection, ConnectionOptions options)
at LinqToDB.Data.ConnectionOptions.LinqToDB.Common.IApplicable<LinqToDB.Data.DataConnection>.Apply(DataConnection obj)
at LinqToDB.DataOptions.Apply(DataConnection dataConnection)
at LinqToDB.Data.DataConnection..ctor(DataOptions options)
at Akka.Persistence.Sql.Db.AkkaPersistenceDataConnectionFactory.<>c__DisplayClass4_0.<.ctor>b__0() in /home/a/projects/Akka.Persistence.Sql/src/Akka.Persistence.Sql/Db/AkkaPersistenceDataConnectionFactory.cs:line 55
at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
--- End of stack trace from previous location ---
at System.Lazy`1.CreateValue()
at Akka.Persistence.Sql.Db.AkkaPersistenceDataConnectionFactory.GetConnection() in /home/a/projects/Akka.Persistence.Sql/src/Akka.Persistence.Sql/Db/AkkaPersistenceDataConnectionFactory.cs:line 396
at Akka.Persistence.Sql.Extensions.ConnectionFactoryExtensions.ExecuteWithTransactionAsync[TState,T](AkkaPersistenceDataConnectionFactory factory, TState state, IsolationLevel level, CancellationToken token, Func`4 handler) in /home/a/projects/Akka.Persistence.Sql/src/Akka.Persistence.Sql/Extensions/ConnectionFactoryExtensions.cs:line 92
at Akka.Persistence.Sql.Query.Dao.BaseByteReadArrayJournalDao.<>c.<<JournalSequence>b__7_0>d.MoveNext() in /home/a/projects/Akka.Persistence.Sql/src/Akka.Persistence.Sql/Query/Dao/BaseByteReadArrayJournalDao.cs:line 188
--- End of inner exception stack trace ---
at Akka.Actor.PipeToSupport.PipeTo[T](Task`1 taskToPipe, ICanTell recipient, Boolean useConfigureAwait, IActorRef sender, Func`2 success, Func`2 failure)
System.AggregateException One or more errors occurred. (DataProvider '' not found.)
at Akka.Actor.PipeToSupport.PipeTo[T](Task`1 taskToPipe, ICanTell recipient, Boolean useConfigureAwait, IActorRef sender, Func`2 success, Func`2 failure)
4/17/2024 10:29:07 AM:ERR:Akka.Actor.ActorSystem:0 [ERROR][04/17/2024 09:29:07.276Z][Thread 0011][LogSource (akka://SqlEndToEndSpec)] An exception occured inside SelectAsync while executing Task. Supervision strategy: Stop
Cause: System.AggregateException: One or more errors occurred. (DataProvider '' not found.)
---> LinqToDB.LinqToDBException: DataProvider '' not found.
at LinqToDB.Data.DataConnection.GetDataProviderEx(String providerName, String connectionString)
at LinqToDB.Data.DataConnection.ConfigurationApplier.Apply(DataConnection dataConnection, ConnectionOptions options)
at LinqToDB.Data.ConnectionOptions.LinqToDB.Common.IApplicable<LinqToDB.Data.DataConnection>.Apply(DataConnection obj)
at LinqToDB.DataOptions.Apply(DataConnection dataConnection)
at LinqToDB.Data.DataConnection..ctor(DataOptions options)
at Akka.Persistence.Sql.Db.AkkaPersistenceDataConnectionFactory.<>c__DisplayClass4_0.<.ctor>b__0() in /home/a/projects/Akka.Persistence.Sql/src/Akka.Persistence.Sql/Db/AkkaPersistenceDataConnectionFactory.cs:line 55
at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
--- End of stack trace from previous location ---
at System.Lazy`1.CreateValue()
at Akka.Persistence.Sql.Db.AkkaPersistenceDataConnectionFactory.GetConnection() in /home/a/projects/Akka.Persistence.Sql/src/Akka.Persistence.Sql/Db/AkkaPersistenceDataConnectionFactory.cs:line 396
at Akka.Persistence.Sql.Extensions.ConnectionFactoryExtensions.ExecuteWithTransactionAsync[TState,T](AkkaPersistenceDataConnectionFactory factory, TState state, IsolationLevel level, CancellationToken token, Func`4 handler) in /home/a/projects/Akka.Persistence.Sql/src/Akka.Persistence.Sql/Extensions/ConnectionFactoryExtensions.cs:line 92
at Akka.Persistence.Sql.Query.Dao.BaseByteReadArrayJournalDao.ExecuteEventQueryTagTable(DbStateHolder stateHolder, QueryArgs queryArgs) in /home/a/projects/Akka.Persistence.Sql/src/Akka.Persistence.Sql/Query/Dao/BaseByteReadArrayJournalDao.cs:line 254
at Akka.Persistence.Sql.Query.Dao.BaseByteReadArrayJournalDao.ExecuteEventQuery(DbStateHolder stateHolder, TagMode tagMode, QueryArgs queryArgs) in /home/a/projects/Akka.Persistence.Sql/src/Akka.Persistence.Sql/Query/Dao/BaseByteReadArrayJournalDao.cs:line 247
at Akka.Persistence.Sql.Query.Dao.BaseByteReadArrayJournalDao.<>c.<<Events>b__10_0>d.MoveNext() in /home/a/projects/Akka.Persistence.Sql/src/Akka.Persistence.Sql/Query/Dao/BaseByteReadArrayJournalDao.cs:line 239
--- End of inner exception stack trace ---
at Akka.Persistence.Sql.Query.SqlReadJournal.<>c__DisplayClass25_1.<<Events>g__RetrieveNextBatch|2>d.MoveNext() in /home/a/projects/Akka.Persistence.Sql/src/Akka.Persistence.Sql/Query/SqlReadJournal.cs:line 344
System.AggregateException One or more errors occurred. (DataProvider '' not found.)
at Akka.Persistence.Sql.Query.SqlReadJournal.<>c__DisplayClass25_1.<<Events>g__RetrieveNextBatch|2>d.MoveNext() in /home/a/projects/Akka.Persistence.Sql/src/Akka.Persistence.Sql/Query/SqlReadJournal.cs:line 344
4/17/2024 10:29:07 AM:INF:Microsoft.Hosting.Lifetime:0 Application is shutting down...
Environment
nixos / dotnet 8, both sqlite and postgresql
Version Information Akka.Persistence.Sql 1.5.13 / current dev branch
Describe the bug Setting plugin identifier to something other than default value (sql) fails to start due to hard-coded hocon paths in the library.
To Reproduce
I'm attaching a PR with adjusted tests and a fix
Expected behavior ActorSystem starts
Actual behavior
Environment nixos / dotnet 8, both sqlite and postgresql