Coder Social home page Coder Social logo

Comments (6)

anod avatar anod commented on June 2, 2024

Do you use main thread to initalize Room?

from cpp_client_telemetry.

FreddyJD avatar FreddyJD commented on June 2, 2024

Hi @anod It seems so, yes. Is this issue causing crashes for the users? It only affects a small portion of our user base, and we've followed the setup in the repository.

After reviewing the documentation, it appears that Room, HTTP, and the library need to be initialized before we can initialize the loggers.

image

from cpp_client_telemetry.

anod avatar anod commented on June 2, 2024

Yes, initialization looks correct,
looking on stack, the crash is happening during uploading an event when it tires to load records from Room DB

Is it possible to add line number to stack trace nd error message?
Do you know if the crash is happening during a specific lifecycle: openning app or closing?

from cpp_client_telemetry.

FreddyJD avatar FreddyJD commented on June 2, 2024

@anod App Center reports the only function names where the crash occurs (from native crashes atleast). It appears to be random. Also we are not sending events right now; we are just initializing. So, the issue could be occurring after a background notification, while using the app, or after some time has passed (reporting session times are random)

Question to clarify, is this function called only during the creation of the Room database? Seems that is happening with an Observable that the library sets*

from cpp_client_telemetry.

FreddyJD avatar FreddyJD commented on June 2, 2024

To add more context, we are creating 3 loggers currently.

private fun getLogConfiguration(apiKey: String, teamName: String): ILogConfiguration {
        val config = LogManager.getLogConfigurationCopy().apply {
            set(LogConfigurationKey.CFG_STR_PRIMARY_TOKEN, apiKey)
            set(LogConfigurationKey.CFG_STR_FACTORY_NAME, teamName)
            set(LogConfigurationKey.CFG_STR_FACTORY_HOST, teamName)
        }
        return config
    }

    private fun initializeLogger() {
        if (loggerAuthApp == null) {
            val logConfigAuthApp = getLogConfiguration(TelemetryClientType.AUTHAPP.apiKey, "authapp")
            loggerAuthApp = LogManagerProvider.createLogManager(logConfigAuthApp)
                .getLogger(TelemetryClientType.AUTHAPP.apiKey, "authapp", "")
        }
        if (loggerPIM == null) {
            val logConfigPIM = getLogConfiguration(TelemetryClientType.PIM.apiKey, "pim")
            loggerPIM = LogManagerProvider.createLogManager(logConfigPIM)
                .getLogger(TelemetryClientType.PIM.apiKey, "pim", "")
        }
        if (loggerDID == null) {
            val logConfigDID = getLogConfiguration(TelemetryClientType.DID.apiKey, "did")
            loggerDID = LogManagerProvider.createLogManager(logConfigDID)
                .getLogger(TelemetryClientType.DID.apiKey, "did", "")
        }
    }

from cpp_client_telemetry.

anod avatar anod commented on June 2, 2024

The trace posted is trying to uploadAsync something, looking in the source, the flow looks following: scheduleUpload >> uploadAsync >> initiateUpload >> retrieveEvents >> handleRetrieveEvents >> GetAndReserveRecords.

May be some stats info is being collected, not familiar with it, you can try to disable stats via configuration and see if it helps

The code crashes when accessing Room DB via GetAndReserveRecords,
I would also suggest to verify that:

  • Code that initializes Room, Http client and loggers runs once.
  • Code that initializes loggers creates 3 separate database files.

we use the following code, to create multiple loggers:

            val config = LogManager.logConfigurationFactory().apply {
                set(LogConfigurationKey.CFG_STR_PRIMARY_TOKEN, token)
                set(LogConfigurationKey.CFG_STR_COLLECTOR_URL, collectorUrl)
                set(LogConfigurationKey.CFG_STR_FACTORY_NAME, name + UUID.randomUUID())
            }

            val logManager = LogManagerProvider.createLogManager(config)
            return logManager.getLogger(token, "", "")

from cpp_client_telemetry.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.