Skip to content

Commit

Permalink
Merge pull request #38 in XP/xp-v-golden-gate from andy/log-error-on-…
Browse files Browse the repository at this point in the history
…blocked-thread to master

* commit 'b84f750abca257d6ccdf65a362433c4afa1d5039':
  log the time blocked
  Log which resource handler caused the blockage
  Log error if GG thread is blocked
  • Loading branch information
droolingsheep committed Mar 10, 2021
2 parents 6d397a6 + b84f750 commit 29f0b34
Showing 1 changed file with 11 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

package com.fitbit.goldengate.bindings.coap.handler

import android.os.SystemClock
import com.fitbit.goldengate.bindings.coap.data.Data
import com.fitbit.goldengate.bindings.coap.data.IncomingBody
import com.fitbit.goldengate.bindings.coap.data.IncomingRequest
Expand All @@ -14,6 +15,8 @@ import com.fitbit.goldengate.bindings.coap.data.RawRequestMessage
import io.reactivex.Observer
import io.reactivex.Single
import io.reactivex.internal.util.EmptyComponent
import timber.log.Timber
import java.util.concurrent.TimeUnit

/**
* Helper method used in JNI server binding code to call appropriate requested method
Expand All @@ -38,14 +41,20 @@ internal class ResourceHandlerInvoker(
get() = EmptyComponent.asObserver()
}

val response = when (request.method) {
val responseSingle = when (request.method) {
Method.GET -> resourceHandler.onGet(request, OutgoingResponseBuilder())
Method.PUT -> resourceHandler.onPut(request, OutgoingResponseBuilder())
Method.POST -> resourceHandler.onPost(request, OutgoingResponseBuilder())
Method.DELETE -> resourceHandler.onDelete(request, OutgoingResponseBuilder())
}

// TODO: making a blocking call right now but this should instead support sending response back to jni asynchronously
return response.blockingGet()
val startTime = SystemClock.elapsedRealtime()
val response = responseSingle.blockingGet()
val timeBlocked = SystemClock.elapsedRealtime() - startTime
if (timeBlocked > TimeUnit.MILLISECONDS.convert(1, TimeUnit.SECONDS)) {
Timber.e("GG Thread blocked on handler response from ${resourceHandler.javaClass.name} for $timeBlocked milliseconds!")
}
return response
}
}

0 comments on commit 29f0b34

Please sign in to comment.