dvankley / firefly-plaid-connector-2

Connector to pull Plaid financial data into the Firefly finance tool
GNU General Public License v3.0
93 stars 14 forks source link

Seeing Application Failed To Run On polled state for Firefly and Plaid #15

Closed jdisom013 closed 11 months ago

jdisom013 commented 1 year ago

Hi see error code below. Thinking this is an application issue. Seeing a different Error in Batch See below. Can you confirm?

POLLED Error java.lang.reflect.UndeclaredThrowableException: Failed to invoke event listener method HandlerMethod details: Bean [net.djvk.fireflyPlaidConnector2.FireflyPlaidConnector2Application$$EnhancerBySpringCGLIB$$85ab5567] Method [public void net.djvk.fireflyPlaidConnector2.FireflyPlaidConnector2Application.appReady()] Resolved arguments:

at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:361) ~[spring-context-5.3.22.jar:5.3.22]
at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:229) ~[spring-context-5.3.22.jar:5.3.22]
at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:166) ~[spring-context-5.3.22.jar:5.3.22]
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.22.jar:5.3.22]
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.22.jar:5.3.22]
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.22.jar:5.3.22]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421) ~[spring-context-5.3.22.jar:5.3.22]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378) ~[spring-context-5.3.22.jar:5.3.22]
at org.springframework.boot.context.event.EventPublishingRunListener.ready(EventPublishingRunListener.java:114) ~[spring-boot-2.7.3.jar:2.7.3]
at org.springframework.boot.SpringApplicationRunListeners.lambda$ready$6(SpringApplicationRunListeners.java:82) ~[spring-boot-2.7.3.jar:2.7.3]
at java.base/java.util.ArrayList.forEach(Unknown Source) ~[na:na]
at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:120) ~[spring-boot-2.7.3.jar:2.7.3]
at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:114) ~[spring-boot-2.7.3.jar:2.7.3]
at org.springframework.boot.SpringApplicationRunListeners.ready(SpringApplicationRunListeners.java:82) ~[spring-boot-2.7.3.jar:2.7.3]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) ~[spring-boot-2.7.3.jar:2.7.3]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-2.7.3.jar:2.7.3]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) ~[spring-boot-2.7.3.jar:2.7.3]
at net.djvk.fireflyPlaidConnector2.FireflyPlaidConnector2ApplicationKt.main(FireflyPlaidConnector2Application.kt:31) ~[classes/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[workspace/:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) ~[workspace/:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[workspace/:na]
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) ~[workspace/:na]

Caused by: io.ktor.serialization.JsonConvertException: Illegal json parameter found at io.ktor.serialization.jackson.JacksonConverter.deserialize(JacksonConverter.kt:67) ~[ktor-serialization-jackson-jvm-2.1.1.jar:2.1.1] at io.ktor.serialization.jackson.JacksonConverter$deserialize$1.invokeSuspend(JacksonConverter.kt) ~[ktor-serialization-jackson-jvm-2.1.1.jar:2.1.1] at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlin-stdlib-1.7.10.jar:1.7.10-release-333(1.7.10)] at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.BuildersKtBuildersKt.runBlocking(Builders.kt:59) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.BuildersKtBuildersKt.runBlocking$default(Builders.kt:38) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at net.djvk.fireflyPlaidConnector2.sync.PolledSyncRunner.run(PolledSyncRunner.kt:62) ~[classes/:na] at net.djvk.fireflyPlaidConnector2.FireflyPlaidConnector2Application.appReady(FireflyPlaidConnector2Application.kt:23) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na] at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:344) ~[spring-context-5.3.22.jar:5.3.22] ... 25 common frames omitted Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "next" (class net.djvk.fireflyPlaidConnector2.api.firefly.models.PageLink), not marked as ignorable (4 known properties: "first", "prev", "self", "last"]) at [Source: (InputStreamReader); line: 1, column: 91641] (through reference chain: net.djvk.fireflyPlaidConnector2.api.firefly.models.TransactionArray["links"]->net.djvk.fireflyPlaidConnector2.api.firefly.models.PageLink["next"]) at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61) ~[jackson-databind-2.13.3.jar:2.13.3] at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:1127) ~[jackson-databind-2.13.3.jar:2.13.3] at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:2023) ~[jackson-databind-2.13.3.jar:2.13.3] at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1700) ~[jackson-databind-2.13.3.jar:2.13.3] at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperties(BeanDeserializerBase.java:1650) ~[jackson-databind-2.13.3.jar:2.13.3] at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:539) ~[jackson-databind-2.13.3.jar:2.13.3] at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1405) ~[jackson-databind-2.13.3.jar:2.13.3] at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:351) ~[jackson-databind-2.13.3.jar:2.13.3] at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:184) ~[jackson-databind-2.13.3.jar:2.13.3] at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:542) ~[jackson-databind-2.13.3.jar:2.13.3] at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:563) ~[jackson-databind-2.13.3.jar:2.13.3] at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:438) ~[jackson-databind-2.13.3.jar:2.13.3] at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1405) ~[jackson-databind-2.13.3.jar:2.13.3] at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:351) ~[jackson-databind-2.13.3.jar:2.13.3] at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:184) ~[jackson-databind-2.13.3.jar:2.13.3] at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323) ~[jackson-databind-2.13.3.jar:2.13.3] at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4674) ~[jackson-databind-2.13.3.jar:2.13.3] at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3658) ~[jackson-databind-2.13.3.jar:2.13.3] at io.ktor.serialization.jackson.JacksonConverter$deserialize$2.invokeSuspend(JacksonConverter.kt:64) ~[ktor-serialization-jackson-jvm-2.1.1.jar:2.1.1] at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlin-stdlib-1.7.10.jar:1.7.10-release-333(1.7.10)] at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na]

2023-08-17 05:22:56.305 INFO 1 --- [ main] n.d.f.sync.PolledSyncRunner : Shutting down class net.djvk.fireflyPlaidConnector2.sync.PolledSyncRunner

Batched Error 2023-08-17 05:43:41.699 ERROR 1 --- [ main] n.d.f.sync.SyncHelper : Firefly transaction insert FireflyApiError(message=Could not find a valid destination account when searching for ID "51" or name "". (and 1 more error), errors={transactions.0.destination_id=[Could not find a valid destination account when searching for ID "51" or name "".], transactions.0.destination_name=[Could not find a valid destination account when searching for ID "51" or name "".]}) for tx: FireflyTransactionDto(id=null, tx=TransactionSplit(type=transfer, date=2023-08-14T00:00-04:00, amount=192.66, description=OVERDRAFT XFER FROM CREDIT CARD OR LINE, sourceId=5, destinationId=51, user=null, transactionJournalId=null, order=0, currencyId=null, currencyCode=null, currencySymbol=null, currencyName=null, currencyDecimalPlaces=null, foreignCurrencyId=null, foreignCurrencyCode=null, foreignCurrencySymbol=null, foreignCurrencyDecimalPlaces=null, foreignAmount=0, sourceName=null, sourceIban=null, sourceType=null, destinationName=null, destinationIban=null, destinationType=null, budgetId=null, budgetName=null, categoryId=null, categoryName=null, billId=null, billName=null, reconciled=false, notes=null, tags=[plaid-primary-cat-transfer-in, plaid-detailed-cat-cash-advances-and-loans], internalReference=null, externalId=plaid-3kLzK8NoEwcdOArPV6vMtgEdRx8L07UPay4LO, externalUrl=null, originalSource=null, recurrenceId=null, recurrenceTotal=null, recurrenceCount=null, bunqPaymentId=null, importHashV2=null, sepaCc=null, sepaCtOp=null, sepaCtId=null, sepaDb=null, sepaCountry=null, sepaEp=null, sepaCi=null, sepaBatchId=null, interestDate=null, bookDate=null, processDate=null, dueDate=null, paymentDate=null, invoiceDate=null, latitude=null, longitude=null, zoomLevel=null, hasAttachments=null))

io.ktor.client.plugins.ClientRequestException: Client request(POST http://192.168.*.*:3473/api/v1/transactions) invalid: 422 Unprocessable Content. Text: "{"message":"Could not find a valid destination account when searching for ID \"51\" or name \"\". (and 1 more error)","errors":{"transactions.0.destination_id":["Could not find a valid destination account when searching for ID \"51\" or name \"\"."],"transactions.0.destination_name":["Could not find a valid destination account when searching for ID \"51\" or name \"\"."]}}" at io.ktor.client.plugins.DefaultResponseValidationKt$addDefaultResponseValidation$1$1.invokeSuspend(DefaultResponseValidation.kt:51) ~[ktor-client-core-jvm-2.1.3.jar:2.1.3] at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlin-stdlib-1.7.10.jar:1.7.10-release-333(1.7.10)] at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.BuildersKtBuildersKt.runBlocking(Builders.kt:59) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.BuildersKtBuildersKt.runBlocking$default(Builders.kt:38) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at net.djvk.fireflyPlaidConnector2.sync.BatchSyncRunner.run(BatchSyncRunner.kt:59) ~[classes/:na] at net.djvk.fireflyPlaidConnector2.FireflyPlaidConnector2Application.appReady(FireflyPlaidConnector2Application.kt:23) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na] at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:344) ~[spring-context-5.3.22.jar:5.3.22] at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:229) ~[spring-context-5.3.22.jar:5.3.22] at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:166) ~[spring-context-5.3.22.jar:5.3.22] at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.22.jar:5.3.22] at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.22.jar:5.3.22] at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.22.jar:5.3.22] at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421) ~[spring-context-5.3.22.jar:5.3.22] at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378) ~[spring-context-5.3.22.jar:5.3.22] at org.springframework.boot.context.event.EventPublishingRunListener.ready(EventPublishingRunListener.java:114) ~[spring-boot-2.7.3.jar:2.7.3] at org.springframework.boot.SpringApplicationRunListeners.lambda$ready$6(SpringApplicationRunListeners.java:82) ~[spring-boot-2.7.3.jar:2.7.3] at java.base/java.util.ArrayList.forEach(Unknown Source) ~[na:na] at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:120) ~[spring-boot-2.7.3.jar:2.7.3] at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:114) ~[spring-boot-2.7.3.jar:2.7.3] at org.springframework.boot.SpringApplicationRunListeners.ready(SpringApplicationRunListeners.java:82) ~[spring-boot-2.7.3.jar:2.7.3] at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) ~[spring-boot-2.7.3.jar:2.7.3] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-2.7.3.jar:2.7.3] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) ~[spring-boot-2.7.3.jar:2.7.3] at net.djvk.fireflyPlaidConnector2.FireflyPlaidConnector2ApplicationKt.main(FireflyPlaidConnector2Application.kt:31) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na] at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[workspace/:na] at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) ~[workspace/:na] at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[workspace/:na] at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) ~[workspace/:na]

dvankley commented 1 year ago

Regarding the polled issue: That looks like Firefly is returning a field the connector doesn't expect for one of the API queries. This typically happens when the API contract is tweaked in Firefly. What version of Firefly are you running?

dvankley commented 1 year ago

Regarding the batched issue: That's a bit weirder. It's an error trying to insert a transfer transaction into Firefly, where the account id the connector gives Firefly isn't valid in Firefly for some reason. Do you have an account in Firefly with an id of 51?

jdisom013 commented 1 year ago

Regarding the polled issue: That looks like Firefly is returning a field the connector doesn't expect for one of the API queries. This typically happens when the API contract is tweaked in Firefly. What version of Firefly are you running?

I’m running 6.0.20. I was able to make a few tweaks to the application.yml file and now am receiving the following error, see below. Any suggestions to fix. Wonder if this a mapping issue with Firefly?

ERROR 1 --- [ main] o.s.boot.SpringApplication : Application run failed

java.lang.IllegalArgumentException: Can't get Plaid amount for a Firefly transaction of type reconciliation at net.djvk.fireflyPlaidConnector2.transactions.TransactionConverter$Companion.getPlaidAmount(TransactionConverter.kt:66) ~[classes/:na] at net.djvk.fireflyPlaidConnector2.transactions.FireflyTransactionDto.getAmount(FireflyTransactionDto.kt:26) ~[classes/:na] at net.djvk.fireflyPlaidConnector2.transactions.TransactionConverter.sortByPairs$suspendImpl(TransactionConverter.kt:346) ~[classes/:na] at net.djvk.fireflyPlaidConnector2.transactions.TransactionConverter.sortByPairs(TransactionConverter.kt) ~[classes/:na] at net.djvk.fireflyPlaidConnector2.transactions.TransactionConverter.convertPollSync$suspendImpl(TransactionConverter.kt:175) ~[classes/:na] at net.djvk.fireflyPlaidConnector2.transactions.TransactionConverter.convertPollSync(TransactionConverter.kt) ~[classes/:na] at net.djvk.fireflyPlaidConnector2.sync.PolledSyncRunner$run$1$1.invokeSuspend(PolledSyncRunner.kt:186) ~[classes/:na] at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlin-stdlib-1.7.10.jar:1.7.10-release-333(1.7.10)] at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138) ~[ktor-utils-jvm-2.1.3.jar:2.1.3] at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112) ~[ktor-utils-jvm-2.1.3.jar:2.1.3] at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14) ~[ktor-utils-jvm-2.1.3.jar:2.1.3] at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62) ~[ktor-utils-jvm-2.1.3.jar:2.1.3] at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) ~[kotlin-stdlib-1.7.10.jar:1.7.10-release-333(1.7.10)] at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138) ~[ktor-utils-jvm-2.1.3.jar:2.1.3] at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112) ~[ktor-utils-jvm-2.1.3.jar:2.1.3] at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14) ~[ktor-utils-jvm-2.1.3.jar:2.1.3] at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62) ~[ktor-utils-jvm-2.1.3.jar:2.1.3] at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) ~[kotlin-stdlib-1.7.10.jar:1.7.10-release-333(1.7.10)] at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138) ~[ktor-utils-jvm-2.1.3.jar:2.1.3] at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112) ~[ktor-utils-jvm-2.1.3.jar:2.1.3] at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14) ~[ktor-utils-jvm-2.1.3.jar:2.1.3] at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62) ~[ktor-utils-jvm-2.1.3.jar:2.1.3] at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) ~[kotlin-stdlib-1.7.10.jar:1.7.10-release-333(1.7.10)] at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.BuildersKtBuildersKt.runBlocking(Builders.kt:59) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.BuildersKtBuildersKt.runBlocking$default(Builders.kt:38) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at net.djvk.fireflyPlaidConnector2.sync.PolledSyncRunner.run(PolledSyncRunner.kt:62) ~[classes/:na] at net.djvk.fireflyPlaidConnector2.FireflyPlaidConnector2Application.appReady(FireflyPlaidConnector2Application.kt:23) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na] at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:344) ~[spring-context-5.3.22.jar:5.3.22] at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:229) ~[spring-context-5.3.22.jar:5.3.22] at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:166) ~[spring-context-5.3.22.jar:5.3.22] at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.22.jar:5.3.22] at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.22.jar:5.3.22] at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.22.jar:5.3.22] at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421) ~[spring-context-5.3.22.jar:5.3.22] at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378) ~[spring-context-5.3.22.jar:5.3.22] at org.springframework.boot.context.event.EventPublishingRunListener.ready(EventPublishingRunListener.java:114) ~[spring-boot-2.7.3.jar:2.7.3] at org.springframework.boot.SpringApplicationRunListeners.lambda$ready$6(SpringApplicationRunListeners.java:82) ~[spring-boot-2.7.3.jar:2.7.3] at java.base/java.util.ArrayList.forEach(Unknown Source) ~[na:na] at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:120) ~[spring-boot-2.7.3.jar:2.7.3] at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:114) ~[spring-boot-2.7.3.jar:2.7.3] at org.springframework.boot.SpringApplicationRunListeners.ready(SpringApplicationRunListeners.java:82) ~[spring-boot-2.7.3.jar:2.7.3] at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) ~[spring-boot-2.7.3.jar:2.7.3] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-2.7.3.jar:2.7.3] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) ~[spring-boot-2.7.3.jar:2.7.3] at net.djvk.fireflyPlaidConnector2.FireflyPlaidConnector2ApplicationKt.main(FireflyPlaidConnector2Application.kt:31) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na] at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[workspace/:na] at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) ~[workspace/:na] at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[workspace/:na] at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) ~[workspace/:na]

jdisom013 commented 1 year ago

Regarding the polled issue: That looks like Firefly is returning a field the connector doesn't expect for one of the API queries. This typically happens when the API contract is tweaked in Firefly. What version of Firefly are you running?

I was a bozo and turned off that account by accident. Enabling account in firefly fixed the issue.

dvankley commented 1 year ago

I was able to reproduce your issue. Looks like the issue was that I have never used reconciliation transactions and the transfer matching logic didn't account for it. I've pushed up a fix for that, I'll cut a new release shortly after I appease dependabot.

jdisom013 commented 1 year ago

Thanks Dan! Appreciate you and your work on this project. -JeffJeff @. in Realtime from my iPad ProOn Aug 25, 2023, at 8:27 PM, Dan van Kley @.> wrote: I was able to reproduce your issue. Looks like the issue was that I have never used reconciliation transactions and the transfer matching logic didn't account for it. I've pushed up a fix for that, I'll cut a new release shortly after I appease dependabot.

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

dvankley commented 1 year ago

Fixed in https://github.com/dvankley/firefly-plaid-connector-2/releases/tag/v1.0.6

jdisom013 commented 1 year ago

Sweet, I’ll update my containers and docker images. -JeffJeff @. in Realtime from my iPad ProOn Aug 25, 2023, at 8:41 PM, Dan van Kley @.> wrote: Closed #15 as completed.

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

jdisom013 commented 1 year ago

Tried updating docker images and containers still getting the following errors. @Dan. Could this be a config thing on my side. FYI, I’m using the docker production environment, as well as, just using the docker run file. Additionally I dropped my DB and reinstalled the Firefly app.

java.lang.reflect.UndeclaredThrowableException: Failed to invoke event listener method HandlerMethod details: Bean [net.djvk.fireflyPlaidConnector2.FireflyPlaidConnector2Application$$SpringCGLIB$$0] Method [public void net.djvk.fireflyPlaidConnector2.FireflyPlaidConnector2Application.appReady()] Resolved arguments:

    at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:365) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:233) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:165) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:437) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:370) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.boot.context.event.EventPublishingRunListener.ready(EventPublishingRunListener.java:109) ~[spring-boot-3.1.2.jar:3.1.2]
    at org.springframework.boot.SpringApplicationRunListeners.lambda$ready$6(SpringApplicationRunListeners.java:80) ~[spring-boot-3.1.2.jar:3.1.2]
    at java.base/java.lang.Iterable.forEach(Unknown Source) ~[na:na]
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118) ~[spring-boot-3.1.2.jar:3.1.2]
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:112) ~[spring-boot-3.1.2.jar:3.1.2]
    at org.springframework.boot.SpringApplicationRunListeners.ready(SpringApplicationRunListeners.java:80) ~[spring-boot-3.1.2.jar:3.1.2]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:331) ~[spring-boot-3.1.2.jar:3.1.2]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-3.1.2.jar:3.1.2]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) ~[spring-boot-3.1.2.jar:3.1.2]
    at net.djvk.fireflyPlaidConnector2.FireflyPlaidConnector2ApplicationKt.main(FireflyPlaidConnector2Application.kt:31) ~[classes/:1.0.6]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[workspace/:na]
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:95) ~[workspace/:na]
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[workspace/:na]
    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) ~[workspace/:na]

Caused by: java.net.ConnectException: Connection refused at java.base/sun.nio.ch.Net.pollConnect(Native Method) ~[na:na] at java.base/sun.nio.ch.Net.pollConnectNow(Unknown Source) ~[na:na] at java.base/sun.nio.ch.SocketChannelImpl.finishConnect(Unknown Source) ~[na:na] at io.ktor.network.sockets.SocketImpl.connect$ktor_network(SocketImpl.kt:50) ~[ktor-network-jvm-2.1.3.jar:2.1.3] at io.ktor.network.sockets.SocketImpl$connect$1.invokeSuspend(SocketImpl.kt) ~[ktor-network-jvm-2.1.3.jar:2.1.3] at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlin-stdlib-1.7.10.jar:1.7.10-release-333(1.7.10)] at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na]

dvankley commented 1 year ago

@jdisom013 any other logs aside from that stack trace? The coroutine/threading stuff makes it a little hard to tell what's going on there, but the core of it java.net.ConnectException: Connection refused, which is coming from the ktor client code, which could either be requests to Firefly or Plaid. "Connection refused" usually means you have the connection URL, IP, or port wrong. What are your config values for fireflyPlaidConnector2.plaid.url and fireflyPlaidConnector2.firefly?

jdisom013 commented 1 year ago

@jdisom013 any other logs aside from that stack trace? The coroutine/threading stuff makes it a little hard to tell what's going on there, but the core of it java.net.ConnectException: Connection refused, which is coming from the ktor client code, which could either be requests to Firefly or Plaid. "Connection refused" usually means you have the connection URL, IP, or port wrong. What are your config values for fireflyPlaidConnector2.plaid.url and fireflyPlaidConnector2.firefly?

@dvankley so I was using http://production.plaid.com/ as my link. I switched back to http://development.plaid.com/ as my link. On the internal firefly server side of things I was using it on a Raspberry Pi which coincidentally runs my home assistant server. Moved the app off of the Pi server onto an old ubuntu Mac that was collecting dust in the corner. The app is now throwing more in-depth code showing an "illegal JSON parameter" see code below. Also not sure if this is a contributing issue but the accounts I was having a problem with were Liability accounts but not with Asset Accounts. Not sure if that might have something to do with the error?

app_1 | java.lang.reflect.UndeclaredThrowableException: Failed to invoke event listener method app_1 | HandlerMethod details: app_1 | Bean [net.djvk.fireflyPlaidConnector2.FireflyPlaidConnector2Application$$SpringCGLIB$$0] app_1 | Method [public void net.djvk.fireflyPlaidConnector2.FireflyPlaidConnector2Application.appReady()] app_1 | Resolved arguments: app_1 | app_1 | at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:365) ~[spring-context-6.0.11.jar:6.0.11] app_1 | at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:233) ~[spring-context-6.0.11.jar:6.0.11] app_1 | at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:165) ~[spring-context-6.0.11.jar:6.0.11] app_1 | at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) ~[spring-context-6.0.11.jar:6.0.11] app_1 | at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) ~[spring-context-6.0.11.jar:6.0.11] app_1 | at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-6.0.11.jar:6.0.11] app_1 | at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:437) ~[spring-context-6.0.11.jar:6.0.11] app_1 | at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:370) ~[spring-context-6.0.11.jar:6.0.11] app_1 | at org.springframework.boot.context.event.EventPublishingRunListener.ready(EventPublishingRunListener.java:109) ~[spring-boot-3.1.2.jar:3.1.2] app_1 | at org.springframework.boot.SpringApplicationRunListeners.lambda$ready$6(SpringApplicationRunListeners.java:80) ~[spring-boot-3.1.2.jar:3.1.2] app_1 | at java.base/java.lang.Iterable.forEach(Unknown Source) ~[na:na] app_1 | at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118) ~[spring-boot-3.1.2.jar:3.1.2] app_1 | at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:112) ~[spring-boot-3.1.2.jar:3.1.2] app_1 | at org.springframework.boot.SpringApplicationRunListeners.ready(SpringApplicationRunListeners.java:80) ~[spring-boot-3.1.2.jar:3.1.2] app_1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:331) ~[spring-boot-3.1.2.jar:3.1.2] app_1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-3.1.2.jar:3.1.2] app_1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) ~[spring-boot-3.1.2.jar:3.1.2] app_1 | at net.djvk.fireflyPlaidConnector2.FireflyPlaidConnector2ApplicationKt.main(FireflyPlaidConnector2Application.kt:31) ~[classes/:1.0.6] app_1 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] app_1 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:na] app_1 | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na] app_1 | at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na] app_1 | at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[workspace/:na] app_1 | at org.springframework.boot.loader.Launcher.launch(Launcher.java:95) ~[workspace/:na] app_1 | at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[workspace/:na] app_1 | at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) ~[workspace/:na] app_1 | Caused by: io.ktor.serialization.JsonConvertException: Illegal json parameter found app_1 | at io.ktor.serialization.jackson.JacksonConverter.deserialize(JacksonConverter.kt:67) ~[ktor-serialization-jackson-jvm-2.1.1.jar:2.1.1] app_1 | at io.ktor.serialization.jackson.JacksonConverter$deserialize$1.invokeSuspend(JacksonConverter.kt) ~[ktor-serialization-jackson-jvm-2.1.1.jar:2.1.1] app_1 | at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlin-stdlib-1.7.10.jar:1.7.10-release-333(1.7.10)] app_1 | at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] app_1 | at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] app_1 | at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] app_1 | at kotlinx.coroutines.BuildersKtBuildersKt.runBlocking(Builders.kt:59) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] app_1 | at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] app_1 | at kotlinx.coroutines.BuildersKtBuildersKt.runBlocking$default(Builders.kt:38) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] app_1 | at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] app_1 | at net.djvk.fireflyPlaidConnector2.sync.PolledSyncRunner.run(PolledSyncRunner.kt:62) ~[classes/:1.0.6] app_1 | at net.djvk.fireflyPlaidConnector2.FireflyPlaidConnector2Application.appReady(FireflyPlaidConnector2Application.kt:23) ~[classes/:1.0.6] app_1 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] app_1 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:na] app_1 | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na] app_1 | at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na] app_1 | at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:348) ~[spring-context-6.0.11.jar:6.0.11] app_1 | ... 25 common frames omitted app_1 | Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "next" (class net.djvk.fireflyPlaidConnector2.api.firefly.models.PageLink), not marked as ignorable (4 known properties: "first", "prev", "self", "last"]) app_1 | at [Source: (InputStreamReader); line: 1, column: 92640] (through reference chain: net.djvk.fireflyPlaidConnector2.api.firefly.models.TransactionArray["links"]->net.djvk.fireflyPlaidConnector2.api.firefly.models.PageLink["next"]) app_1 | at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61) ~[jackson-databind-2.15.2.jar:2.15.2] app_1 | at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:1138) ~[jackson-databind-2.15.2.jar:2.15.2] app_1 | at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:2224) ~[jackson-databind-2.15.2.jar:2.15.2] app_1 | at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1709) ~[jackson-databind-2.15.2.jar:2.15.2] app_1 | at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperties(BeanDeserializerBase.java:1659) ~[jackson-databind-2.15.2.jar:2.15.2] app_1 | at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:546) ~[jackson-databind-2.15.2.jar:2.15.2] app_1 | at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1409) ~[jackson-databind-2.15.2.jar:2.15.2] app_1 | at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:352) ~[jackson-databind-2.15.2.jar:2.15.2] app_1 | at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185) ~[jackson-databind-2.15.2.jar:2.15.2] app_1 | at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:545) ~[jackson-databind-2.15.2.jar:2.15.2] app_1 | at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:570) ~[jackson-databind-2.15.2.jar:2.15.2] app_1 | at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:439) ~[jackson-databind-2.15.2.jar:2.15.2] app_1 | at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1409) ~[jackson-databind-2.15.2.jar:2.15.2] app_1 | at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:352) ~[jackson-databind-2.15.2.jar:2.15.2] app_1 | at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185) ~[jackson-databind-2.15.2.jar:2.15.2] app_1 | at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323) ~[jackson-databind-2.15.2.jar:2.15.2] app_1 | at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4825) ~[jackson-databind-2.15.2.jar:2.15.2] app_1 | at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3801) ~[jackson-databind-2.15.2.jar:2.15.2] app_1 | at io.ktor.serialization.jackson.JacksonConverter$deserialize$2.invokeSuspend(JacksonConverter.kt:64) ~[ktor-serialization-jackson-jvm-2.1.1.jar:2.1.1] app_1 | at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlin-stdlib-1.7.10.jar:1.7.10-release-333(1.7.10)] app_1 | at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] app_1 | at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] app_1 | at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] app_1 | at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] app_1 | at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] app_1 | at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] app_1 | at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664) ~[kotlinx-coroutines-core-jvm-1.6.4.jar:na] app_1 | app_1 | 2023-08-28T22:29:01.535Z INFO 1 --- [ main] n.d.f.sync.PolledSyncRunner : Shutting down class net.djvk.fireflyPlaidConnector2.sync.PolledSyncRunne

dvankley commented 1 year ago

so I was using http://production.plaid.com/ as my link. I switched back to http://development.plaid.com/ as my link.

Yeah, that's a good idea. I think running Plaid in production requires a lot more effort. You may want to change that to https; many sites no longer allow http.

dvankley commented 1 year ago

On the internal firefly server side of things I was using it on a Raspberry Pi which coincidentally runs my home assistant server. Moved the app off of the Pi server onto an old ubuntu Mac that was collecting dust in the corner.

That's probably a good idea, although low system resources probably wouldn't cause the error you posted before unless your system was so overloaded your network calls were timing out.

dvankley commented 1 year ago

The app is now throwing more in-depth code showing an "illegal JSON parameter" see code below.

Yeah, same error as you originally posted, and the sort of error I've seen before, although for some reason I can't reproduce it myself with my setup. I feel like the root cause here is because https://github.com/firefly-iii/api-docs/blob/main/firefly-iii-1.5.6.yaml#L11616-L11630 should match the ['links'] keys in https://github.com/thephpleague/fractal/blame/8b9d39b67624db9195c06f9c1ffd0355151eaf62/src/Serializer/JsonApiSerializer.php#L101-L116, but I'm not 100% sure (@JC5, if you have a minute to sanity check that assertion and fix the OpenAPI spec if needed, that would be appreciated). Anyway, the way I've solved this in the past is just adding the missing properties to my JSON spec, so I think that's what I'll try here. Stand by.

dvankley commented 1 year ago

Also not sure if this is a contributing issue but the accounts I was having a problem with were Liability accounts but not with Asset Accounts.

Maaaaybe, but I feel like that wouldn't cause this particular error. I've only used the connector with Asset accounts; credit cards should be set as Asset accounts of the "credit card" type (it's a bit confusing, I know).

dvankley commented 1 year ago

@jdisom013 alright, give https://github.com/dvankley/firefly-plaid-connector-2/releases/tag/v1.0.7 a try.

JC5 commented 1 year ago

So this is the culprit, right?

Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "next" (class net.djvk.fireflyPlaidConnector2.api.firefly.models.PageLink), not marked as ignorable (4 known properties: "first", "prev", "self", "last"])

I'll check it out!

dvankley commented 1 year ago

So this is the culprit, right?

@JC5 correct, thanks for looking! Also I should note that prev is in my PageLink model but not the Firefly openAPI spec because I ran into a similar issue before and added the prev property manually.

JC5 commented 1 year ago

That sounds like something I would mess up 😁

JC5 commented 1 year ago

New API docs are committed, the site should update soon. Although technically nothing changed, I bumped the version to 2.0.6

dvankley commented 11 months ago

Closing this due to no activity and a purported fix.