Skip to content

Commit

Permalink
refactor: avoid using callable when unnecessary
Browse files Browse the repository at this point in the history
  • Loading branch information
fractalwrench committed Jan 3, 2024
1 parent 21a185d commit a6267d4
Show file tree
Hide file tree
Showing 9 changed files with 255 additions and 289 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import java.net.Inet4Address
import java.net.NetworkInterface
import java.util.NavigableMap
import java.util.TreeMap
import java.util.concurrent.Callable
import java.util.concurrent.ExecutorService

@Suppress("DEPRECATION") // uses deprecated APIs for backwards compat
Expand Down Expand Up @@ -132,20 +131,17 @@ internal class EmbraceNetworkConnectivityService(
lastNetworkStatus == null || lastNetworkStatus != newNetworkStatus

private fun registerConnectivityActionReceiver() {
registrationExecutorService.submit(
Callable<Any?> {
try {
context.registerReceiver(this, intentFilter)
} catch (ex: Exception) {
logger.logDebug(
"Failed to register EmbraceNetworkConnectivityService " +
"broadcast receiver. Connectivity status will be unavailable.",
ex
)
}
null
registrationExecutorService.submit {
try {
context.registerReceiver(this, intentFilter)
} catch (ex: Exception) {
logger.logDebug(
"Failed to register EmbraceNetworkConnectivityService " +

Check warning on line 139 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/capture/connectivity/EmbraceNetworkConnectivityService.kt

View check run for this annotation

Codecov / codecov/patch

embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/capture/connectivity/EmbraceNetworkConnectivityService.kt#L137-L139

Added lines #L137 - L139 were not covered by tests
"broadcast receiver. Connectivity status will be unavailable.",
ex

Check warning on line 141 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/capture/connectivity/EmbraceNetworkConnectivityService.kt

View check run for this annotation

Codecov / codecov/patch

embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/capture/connectivity/EmbraceNetworkConnectivityService.kt#L141

Added line #L141 was not covered by tests
)
}
)
}
}

override fun close() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -207,48 +207,42 @@ internal class EmbraceMetadataService private constructor(
logDeveloper("EmbraceMetadataService", "Jailbroken already exists")
return
}
metadataRetrieveExecutorService.submit(
Callable<Any?> {
logDeveloper("EmbraceMetadataService", "Async retrieve jailbroken")
val storedIsJailbroken = preferencesService.jailbroken
// load value from shared preferences
if (storedIsJailbroken != null) {
logDeveloper("EmbraceMetadataService", "Jailbroken is present, loading from store")
isJailbroken = storedIsJailbroken
} else {
isJailbroken = MetadataUtils.isJailbroken()
preferencesService.jailbroken = isJailbroken
logDeveloper("EmbraceMetadataService", "Jailbroken processed and stored")
}
logDeveloper("EmbraceMetadataService", "Jailbroken: $isJailbroken")
null
metadataRetrieveExecutorService.submit {
logDeveloper("EmbraceMetadataService", "Async retrieve jailbroken")
val storedIsJailbroken = preferencesService.jailbroken
// load value from shared preferences
if (storedIsJailbroken != null) {
logDeveloper("EmbraceMetadataService", "Jailbroken is present, loading from store")
isJailbroken = storedIsJailbroken
} else {
isJailbroken = MetadataUtils.isJailbroken()
preferencesService.jailbroken = isJailbroken
logDeveloper("EmbraceMetadataService", "Jailbroken processed and stored")
}
)
logDeveloper("EmbraceMetadataService", "Jailbroken: $isJailbroken")
}
}

fun asyncRetrieveDiskUsage(isAndroid26OrAbove: Boolean) {
metadataRetrieveExecutorService.submit(
Callable<Any?> {
logDeveloper("EmbraceMetadataService", "Async retrieve disk usage")
val free = MetadataUtils.getInternalStorageFreeCapacity(statFs.value)
if (isAndroid26OrAbove && configService.autoDataCaptureBehavior.isDiskUsageReportingEnabled()) {
val deviceDiskAppUsage = MetadataUtils.getDeviceDiskAppUsage(
storageStatsManager,
packageManager,
packageName
)
if (deviceDiskAppUsage != null) {
logDeveloper("EmbraceMetadataService", "Disk usage is present")
diskUsage = DiskUsage(deviceDiskAppUsage, free)
}
}
if (diskUsage == null) {
diskUsage = DiskUsage(null, free)
metadataRetrieveExecutorService.submit {
logDeveloper("EmbraceMetadataService", "Async retrieve disk usage")
val free = MetadataUtils.getInternalStorageFreeCapacity(statFs.value)
if (isAndroid26OrAbove && configService.autoDataCaptureBehavior.isDiskUsageReportingEnabled()) {
val deviceDiskAppUsage = MetadataUtils.getDeviceDiskAppUsage(
storageStatsManager,
packageManager,
packageName
)
if (deviceDiskAppUsage != null) {
logDeveloper("EmbraceMetadataService", "Disk usage is present")
diskUsage = DiskUsage(deviceDiskAppUsage, free)
}
logDeveloper("EmbraceMetadataService", "Device disk free: $free")
null
}
)
if (diskUsage == null) {
diskUsage = DiskUsage(null, free)
}
logDeveloper("EmbraceMetadataService", "Device disk free: $free")
}
}

fun getReactNativeBundleId(): String? = reactNativeBundleId.value
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import io.embrace.android.embracesdk.logging.InternalEmbraceLogger
import io.embrace.android.embracesdk.prefs.PreferencesService
import io.embrace.android.embracesdk.session.lifecycle.ProcessStateListener
import io.embrace.android.embracesdk.utils.stream
import java.util.concurrent.Callable
import java.util.concurrent.CopyOnWriteArraySet
import java.util.concurrent.ExecutorService
import kotlin.math.min
Expand Down Expand Up @@ -208,36 +207,33 @@ internal class EmbraceConfigService @JvmOverloads constructor(
private fun refreshConfig() {
logger.logDeveloper("EmbraceConfigService", "Attempting to refresh config")
val previousConfig = configProp
executorService.submit(
Callable<Any> {
logger.logDeveloper("EmbraceConfigService", "Updating config in background thread")

// Ensure that another thread didn't refresh it already in the meantime
if (configRequiresRefresh()) {
try {
lastRefreshConfigAttempt = clock.now()
val newConfig = apiService.getConfig()
if (newConfig != null) {
updateConfig(previousConfig, newConfig)
lastUpdated = clock.now()
}
configRetrySafeWindow = DEFAULT_RETRY_WAIT_TIME.toDouble()
logger.logDeveloper("EmbraceConfigService", "Config updated")
} catch (ex: Exception) {
configRetrySafeWindow =
min(
MAX_ALLOWED_RETRY_WAIT_TIME.toDouble(),
configRetrySafeWindow * 2
)
logger.logWarning(
"Failed to load SDK config from the server. " +
"Trying again in " + configRetrySafeWindow + " seconds."
)
executorService.submit {
logger.logDeveloper("EmbraceConfigService", "Updating config in background thread")

// Ensure that another thread didn't refresh it already in the meantime
if (configRequiresRefresh()) {
try {
lastRefreshConfigAttempt = clock.now()
val newConfig = apiService.getConfig()
if (newConfig != null) {
updateConfig(previousConfig, newConfig)
lastUpdated = clock.now()
}
configRetrySafeWindow = DEFAULT_RETRY_WAIT_TIME.toDouble()
logger.logDeveloper("EmbraceConfigService", "Config updated")
} catch (ex: Exception) {
configRetrySafeWindow =

Check warning on line 225 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/config/EmbraceConfigService.kt

View check run for this annotation

Codecov / codecov/patch

embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/config/EmbraceConfigService.kt#L225

Added line #L225 was not covered by tests
min(
MAX_ALLOWED_RETRY_WAIT_TIME.toDouble(),
configRetrySafeWindow * 2
)
logger.logWarning(
"Failed to load SDK config from the server. " +
"Trying again in " + configRetrySafeWindow + " seconds."
)
}
configProp
}
)
}
}

private fun updateConfig(previousConfig: RemoteConfig, newConfig: RemoteConfig) {
Expand Down
Loading

0 comments on commit a6267d4

Please sign in to comment.