Hi Adam, Agreed, we should opt-out of the telemetry feature of Liquibase. Frankly speaking I wasn't even following the Liquibase changelogs recently so I didn't even notice it was a thing.
The change you're proposing though is not the one where we should set this - in fact we don't even need Spring Boot's support for this since Fineract has a custom trigger for starting the Liquibase migrations instead of the built-in Spring Boot one. You can find the relevant code here: https://github.com/apache/fineract/blob/develop/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/TenantDatabaseUpgradeService.java This is where we should actually opt-out of the telemetry feature. Are you planning to raise a PR for this or just wanted to report this issue? Best, Arnold On Mon, Nov 18, 2024 at 9:16 PM Adam Monsen <amon...@mifos.org> wrote: > I think we should tell liquibase not to phone home > <https://docs.liquibase.com/analytics/home.html>. It does this during > database migration (at least). > > The phone home anti-feature can be disabled by setting the > LIQUIBASE_ANALYTICS_ENABLED environment variable to false, or by setting > the system property liquibase.analytics.enabled to false. > > Would a patch be welcome to disable the liquibase phone home by default > for Fineract? If so, could I get a hint on where/how to do this properly? > > > I'm guessing the ideal place would be in > fineract-provider/src/main/resources/application.properties, (default to > false, allow override) but our version of spring boot doesn't support it > yet <https://github.com/spring-projects/spring-boot/issues/43067>. > > We could do System.setProperty("liquibase.analytics.enabled", "false"); > in the top-level main method but that feels a bit heavy-handed. > > I tried disabling the phone home in a few other places but I couldn't get > it to work. > > For now I am using the suggested env > setting LIQUIBASE_ANALYTICS_ENABLED=false in the run config for my Fineract > project in IntelliJ. > > If a "default off" patch would not be welcome, perhaps folks would > appreciate a mention in a README (next to where other env var settings are > mentioned? > > > I noticed the phone home because I block requests from my computer to 3rd > party tracking/analytics services, and I was getting this error in my > console: > > 2024-11-18 11:27:28.799 - INFO 2390993 --- [ main] > a.f.i.c.s.m.TenantDatabaseUpgradeService : Upgrading tenant store DB at > localhost:5432 > 2024-11-18 11:27:28.800 - INFO 2390993 --- [ main] > a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.username: > postgres > 2024-11-18 11:27:28.800 - INFO 2390993 --- [ main] > a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.password: **** > 2024-11-18 11:27:28.800 - INFO 2390993 --- [ main] > a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.parameters: > 2024-11-18 11:27:28.800 - INFO 2390993 --- [ main] > a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.timezone: > Asia/Kolkata > 2024-11-18 11:27:28.800 - INFO 2390993 --- [ main] > a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.description: > Default Demo Tenant > 2024-11-18 11:27:28.800 - INFO 2390993 --- [ main] > a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.identifier: > default > 2024-11-18 11:27:28.800 - INFO 2390993 --- [ main] > a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.name: > fineract_default > Exception in thread "Thread-2" java.lang.RuntimeException: > java.net.ConnectException: Connection refused > at > liquibase.analytics.LiquibaseAnalyticsListener.lambda$handleEvent$2(LiquibaseAnalyticsListener.java:110) > at java.base/java.lang.Thread.run(Thread.java:840) > Caused by: java.net.ConnectException: Connection refused > at java.base/sun.nio.ch.Net.connect0(Native Method) > at java.base/sun.nio.ch.Net.connect(Net.java:579) > at java.base/sun.nio.ch.Net.connect(Net.java:568) > at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:593) > at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) > at java.base/java.net.Socket.connect(Socket.java:639) > at > java.base/sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:304) > at > java.base/sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:174) > at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:183) > Caused by: java.net.ConnectException: Connection refused > > at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:533) > at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:638) > at > java.base/sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:266) > at > java.base/sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:380) > at > java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:193) > at > java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1259) > at > java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1145) > at > java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:179) > at > java.base/sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1468) > at > java.base/sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1439) > at > java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:220) > at > liquibase.analytics.LiquibaseAnalyticsListener.lambda$handleEvent$2(LiquibaseAnalyticsListener.java:101) > ... 1 more > > At first I misunderstood this as a database connection error, but it was > really just liquibase throwing an error because it couldn't connect to its > analytics server. > > I think the default behavior of trackers like these should always be opt > out. > > > See also: > > - > > Analytics is enabled by default in OSS version · Issue #6503 · > liquibase/liquibase · GitHub > <https://github.com/liquibase/liquibase/issues/6503> > - > > Add a method for Spring Boot to configure the new analytics feature · > Issue #6501 · liquibase/liquibase · GitHub > <https://github.com/liquibase/liquibase/issues/6501> > >