New session ID is not created
kataRebuy opened this issue · 2 comments
SDK version: 1.4.4
A new session ID is not provided even after the minTimeBetweenSessionsMillis is exceeded. The issue only happens when there is an ampli.identify() call at app start. In this case startNewSessionIfNeeded
is called twice causing probably some threading issue. When I only put a breakpoint inside isWithinMinTimeBetweenSessions
I get timestamp - lastEventTime == 0
. If I start debugging I can also get a negative number for timestamp - lastEventTime
I can see that once the function is called from onEnterForeground
and the other time it is called because of applyContextData
inside AndroidContextPlugin
because of the identify call. Probably this is causing a threading issue.
With this I can reproduce the issue:
ampli.load(
context,
LoadOptions(
environment = Ampli.Environment.DEVELOPMENT,
client = LoadClientOptions(instance = Amplitude(Configuration(apiKey = apiKey, context = context, minTimeBetweenSessionsMillis = 5000)))
)
)
ampli.identify(null, Identify(property ="value"))
Once the identify is removed then it works fine.
H @kataRebuy, thank you for choosing Amplitude. We'll investigate this with the team and get back to you soon. This may be related to another issue that we are working on a fix for.
@kevinpagtakhan it seems like your recent release(com.amplitude:analytics-android:1.4.5
) solved the issue but introduced a new one, now I always get a start session event when restarting the app.
Following config for testing:
ampli.load(
context,
LoadOptions(
environment = Ampli.Environment.DEVELOPMENT,
client = LoadClientOptions(instance = Amplitude(Configuration(apiKey = apiKey, context = context, minTimeBetweenSessionsMillis = 3000000)))
)
)
ampli.identify(null, Identify(property ="value"))
With this config, every time I get a new Start session
event even though the minTimeBetweenSessionsMillis
haven't passed. Once I remove the ampli.identify
it works as expected. It seems that it triggers the startNewSession
function because inSession()
is false