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>
>
>

Reply via email to