Skip to content

Commit ebb1440

Browse files
authored
Merge pull request #270 from synonymdev/fix/2133-handle-dropped-peers-crash
Android: Fix crash in handleDroppedPeers
2 parents 3767cc7 + 981c124 commit ebb1440

File tree

5 files changed

+27
-19
lines changed

5 files changed

+27
-19
lines changed

README.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,21 @@ cd ios && pod install && cd ../
3333
### Android
3434
- Open `lib/android` in Android Studio
3535
- To enable documentation for the LDK code, follow this guide: [How to attach JavaDoc to the library in Android Studio](https://medium.com/@mydogtom/tip-how-to-attach-javadoc-to-the-library-in-android-studio-5ff43c4303b3), ie.:
36-
1. Switch to `Project` view in the Project browser tool windo
36+
1. Switch to `Project` view in the Project browser tool window
3737
2. Expand `External Libraries`
3838
3. Right click on `Gradle: ./libs/LDK-release.aar` then `Library Properties…`
3939
4. Tap the ➕ button and select the `./lib/android/libs/ldk-java-javadoc.jar` file
4040
5. In the popup that appears select `JavaDocs` and tap `OK` then `OK` again
4141
42+
### Version Bump
43+
```sh
44+
# apply your changes
45+
cd example
46+
yarn reinstall # bump versions package.json & podfile
47+
cd ../
48+
# copy version from `./lib/package.json` to `backup-server/package.json`
49+
50+
```
4251
## Running example app
4352
See also [`./example/README.md`](./example/README.md)
4453
```bash

backup-server/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "backup-server",
3-
"version": "0.0.146",
3+
"version": "0.0.151",
44
"description": "",
55
"main": "index.js",
66
"engines": {

example/ios/Podfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ PODS:
316316
- React-jsinspector (0.72.4)
317317
- React-logger (0.72.4):
318318
- glog
319-
- react-native-ldk (0.0.150):
319+
- react-native-ldk (0.0.151):
320320
- React
321321
- react-native-randombytes (3.6.1):
322322
- React-Core
@@ -621,7 +621,7 @@ SPEC CHECKSUMS:
621621
React-jsiexecutor: c7f826e40fa9cab5d37cab6130b1af237332b594
622622
React-jsinspector: aaed4cf551c4a1c98092436518c2d267b13a673f
623623
React-logger: da1ebe05ae06eb6db4b162202faeafac4b435e77
624-
react-native-ldk: 2b19de9eb94dcfd46f3f2a7191502292b75a5d7a
624+
react-native-ldk: a7e71785237dd3d12dc52b4287abd88c865f5262
625625
react-native-randombytes: 421f1c7d48c0af8dbcd471b0324393ebf8fe7846
626626
react-native-tcp-socket: c1b7297619616b4c9caae6889bcb0aba78086989
627627
React-NativeModulesApple: edb5ace14f73f4969df6e7b1f3e41bef0012740f

lib/android/src/main/java/com/reactnativeldk/LdkModule.kt

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import org.ldk.enums.Currency
1010
import org.ldk.enums.Network
1111
import org.ldk.enums.Recipient
1212
import org.ldk.enums.RetryableSendFailure
13-
import org.ldk.impl.bindings.LDKPaymentSendFailure.DuplicatePayment
1413
import org.ldk.impl.bindings.get_ldk_c_bindings_version
1514
import org.ldk.impl.bindings.get_ldk_version
1615
import org.ldk.structs.*
@@ -29,6 +28,10 @@ import java.nio.file.Files
2928
import java.nio.file.Paths
3029
import java.text.SimpleDateFormat
3130
import java.util.*
31+
import java.util.concurrent.ConcurrentLinkedQueue
32+
import java.util.concurrent.ScheduledFuture
33+
import java.util.concurrent.ScheduledThreadPoolExecutor
34+
import java.util.concurrent.TimeUnit
3235

3336

3437
//MARK: ************Replicate in typescript and swift************
@@ -182,9 +185,9 @@ class LdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
182185
private var currentBlockchainHeight: Double? = null
183186

184187
//List of peers that "should" remain connected. Stores address: String, port: Double, pubKey: String
185-
private var addedPeers: MutableList<HashMap<String, Any>> = mutableListOf()
186-
private var currentlyConnectingPeers: MutableList<String> = mutableListOf()
187-
private var timerTaskScheduled: Boolean = false
188+
private var addedPeers = ConcurrentLinkedQueue<Map<String, Any>>()
189+
private var currentlyConnectingPeers = ConcurrentLinkedQueue<String>()
190+
private var periodicDroppedPeersHandler: ScheduledFuture<*>? = null
188191

189192
//Static to be accessed from other classes
190193
companion object {
@@ -512,14 +515,10 @@ class LdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
512515

513516
peerHandler = channelManagerConstructor!!.nio_peer_handler
514517

515-
//Start watching for dropped peers every 1 second
516-
if (!timerTaskScheduled) {
517-
Timer().schedule(object : TimerTask() {
518-
override fun run() {
519-
handleDroppedPeers()
520-
}
521-
}, 1000, 3000)
522-
timerTaskScheduled = true
518+
//after 1s, Start watching for dropped peers every 3 seconds
519+
if (periodicDroppedPeersHandler == null) {
520+
periodicDroppedPeersHandler = ScheduledThreadPoolExecutor(1)
521+
.scheduleWithFixedDelay(::handleDroppedPeers,1, 3, TimeUnit.SECONDS)
523522
}
524523

525524
//Cached for restarts
@@ -621,7 +620,7 @@ class LdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
621620
handleResolve(promise, LdkCallbackResponses.chain_sync_success)
622621
}
623622

624-
fun handleDroppedPeers() {
623+
private fun handleDroppedPeers() {
625624
peerHandler ?: return LdkEventEmitter.send(EventTypes.native_log, "Handling dropped peers error. Peer handler not initialized.")
626625

627626
LdkEventEmitter.send(EventTypes.native_log, "Checking for dropped peers")
@@ -679,7 +678,7 @@ class LdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
679678
currentlyConnectingPeers.remove(pubKey)
680679

681680
//Should retry if success or fail
682-
if (!addedPeers.map { it["pubKey"] as String }.contains(pubKey)) {
681+
if (addedPeers.none { it["pubKey"] as String == pubKey }) {
683682
addedPeers.add(hashMapOf(
684683
"address" to address,
685684
"port" to port,

lib/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@synonymdev/react-native-ldk",
33
"title": "React Native LDK",
4-
"version": "0.0.150",
4+
"version": "0.0.151",
55
"description": "React Native wrapper for LDK",
66
"main": "./dist/index.js",
77
"types": "./dist/index.d.ts",

0 commit comments

Comments
 (0)