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