Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deadlock in interaction between flatMap, Single, and shareReplayLatestWhileConnected #1323

Closed
4 tasks done
dpassage opened this issue Jul 12, 2017 · 6 comments
Closed
4 tasks done

Comments

@dpassage
Copy link

dpassage commented Jul 12, 2017

Using an admittedly odd combination of flatMap and shareReplayLatestWhileConnected, I managed to get my code into a deadlock condition.

Here's a short, contrived example:

    @IBAction func go(_ sender: Any) {
        print("go again!")
        disposables = DisposeBag()

        Observable.just(1)
            .flatMap { (int) -> Observable<[Int]> in
                return Observable.create { (observer) -> Disposable in
                    print("creating!")
                    // in real code, int is really an NSManagedObjectContext,
                    // and the dispatch is really moc.perform with a fetch
                    DispatchQueue.global().async {
                        observer.onNext([int])
                    }
                    sleep(1)
                    return Disposables.create()
                }
            }
            .shareReplayLatestWhileConnected()
            .subscribe { (e) in
                print(e)
            }
            .disposed(by: disposables)
    }

Put that in a single-VC iOS sample app, hook it up to a button, and hit go!

The result will be that the main thread is holding the lock in ShareReplay1WhileConnected.subscribe() and waiting on the lock in MergeSink.on to deliver the .completed event coming out of the just(1) at the top.

Meanwhile, the background dispatch queue will be holding the lock in MergeSinkIter.on (which is the same as in the parent MergeSink object) while waiting for the lock in ShareReplay1WhileConnectedConnection.on. to deliver the little array.

In real, non-contrived code, Observable.just(1) is actually a ReplaySubject which delivers an NSManagedObjectContext wrapped into a Single, and the dispatch block is really a call to NSManagedObjectContext.perform in which we do a fetch. In the real code, I was getting the deadlock about one time in 5 at my desk. The sleep above is just there to make it happen reliably; I'm sure NSManagedObjectContext.perform is actually doing a bunch of work here, plus there are a bunch of other threads in my real app.

It appears that the root cause is the background thread sneaking in to deliver the results of the computation between the next and completed events coming out of the .just.

Once I found it, I was able to work around it with proper application of .observeOn, to ensure that the connect down in the ShareReplay1WhileConnected returns immediately instead of waiting for the events. But it was a bear to find.

RxSwift/RxCocoa/RxBlocking/RxTest version/commit

RxSwift 3.5.0

Platform/Environment

  • iOS 10.3

How easy is to reproduce? (chances of successful reproduce after running the self contained code)

The code above will deadlock every time; the real code was deadlocking on occasion.

Xcode version:

Version 8.3.2 (8E2002)

Installation method:

  • CocoaPods

I have multiple versions of Xcode installed:
(so we can know if this is a potential cause of your issue)

  • yes (Xcode 9 beta)

Level of RxSwift knowledge:
(this is so we can understand your level of knowledge
and formulate the response in an appropriate manner)

  • I have a significant code base
@sergdort
Copy link
Contributor

Hi, @dpassage I'm not sure if this would help with your CoreData use case, but you can try to use ContextScheduler with e.g subscribeOn

@sergdort
Copy link
Contributor

I wonder why did you put sleep(1) is it to reproduce the issue or you are using it in real code?
Because it does not cause deadlock without it

@freak4pc
Copy link
Member

@sergdort I imagine it was in order to cause a 100% reproducible example for this Deadlock.

He did state his production code looks different and that he did solve it using subscribeOn, but I would still say this is some sort of a bug as a Deadlock is definitely not the expected result here :)

@sergdort
Copy link
Contributor

sergdort commented Jul 12, 2017

I feel like it's not a problem with the library, but I may be mistaken =)

The problem is that you are pushing value on another thread without leaving subscribe which is why you are getting a deadlock as NSRecursiveLock does not allow "recursive calls" from different thread

@dpassage
Copy link
Author

@sergdort yes, the sleep(1) is only to make the reproduction reliable. The important bit is that the background thread calls onNext in the window between .just calling .onNext and .onCompleted. This allows the background thread to grab the lock in the FlatMap.

And yes, that is the root problem. Here's the thing - if I hadn't told you that the code above could deadlock, would you have given it a second thought?

@kzaher
Copy link
Member

kzaher commented Jul 12, 2017

Hi @dpassage ,

I think we can improve this behavior.

@kzaher kzaher closed this as completed Jul 16, 2017
qazyn951230 added a commit to qazyn951230/RxSwift that referenced this issue Jul 21, 2017
commit 1314805
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 16 22:25:42 2017 +0200

    Release 3.6.0

commit 8c874c4
Author: Krunoslav Zaher <[email protected]>
Date:   Mon Jul 17 00:39:40 2017 +0200

    Improves sleep method in unit tests.

commit 11675f0
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 16 23:32:29 2017 +0200

    Updates SPM.

commit 846d608
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 16 23:26:59 2017 +0200

    Adds `delay` to `SharedSequence`.

commit eb5d238
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 16 23:19:55 2017 +0200

    Adds `timeout` to `PrimitiveSequence`.

commit c6d9ca0
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 16 22:45:03 2017 +0200

    Fixes UITests.

commit 95dc6fd
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 16 22:21:37 2017 +0200

    Removes redundant conformance to `Equatable` from `value` convenience on `NSControl`.

commit eccd8cc
Merge: 42d4250 3afb0e7
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 16 21:55:09 2017 +0200

    Merge branch 'sergdort-feature/reactive-uipickerview' into develop

commit 3afb0e7
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 16 21:22:05 2017 +0200

    Adds picker view adapter to SPM.

commit 7b866f0
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 16 20:25:58 2017 +0200

    Improves documentation to UIPickerView components, changes modelSelected type to [T], simplifies UIPickerView adapter example.

commit b5e1d84
Merge: 42d4250 d634687
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 16 18:47:04 2017 +0200

    Merge branch 'feature/reactive-uipickerview' of https://github.com/sergdort/RxSwift into sergdort-feature/reactive-uipickerview

commit d634687
Author: sergdort <[email protected]>
Date:   Sat Jul 15 18:42:25 2017 +0100

    Add tests for model at index path

commit 64773ed
Author: sergdort <[email protected]>
Date:   Sat Jul 15 18:20:11 2017 +0100

    run jazzy to remove ViewDataSourceType

commit 1e0c524
Author: sergdort <[email protected]>
Date:   Sat Jul 15 18:18:27 2017 +0100

    Remove unnecessary protocol and use SectionedViewDatasourceType

commit 42d4250
Author: Daniel Duan <[email protected]>
Date:   Thu Jul 13 23:54:10 2017 -0700

    Fix Small Issues in GettingStarted.md

    Read this excellent document today and noticed a few thing that bothered me:

    1. The `NS` part of `NSURL*` should be dropped in most cases.
    2. There are some trailing whitespaces.
    3. In one case, "your" is misspelled as "you".

commit b6fe1ff
Author: sergdort <[email protected]>
Date:   Fri Jul 14 15:11:11 2017 +0100

    Add changes to CHANGELOG.md

commit b03a192
Author: sergdort <[email protected]>
Date:   Fri Jul 14 13:55:34 2017 +0100

    remove UIPicker extension from TV as it’s not available there

commit 6d1c165
Author: sergdort <[email protected]>
Date:   Fri Jul 14 11:59:54 2017 +0100

    run jazzy

commit de8de1d
Author: sergdort <[email protected]>
Date:   Fri Jul 14 11:54:30 2017 +0100

    Add UIPickerView data source extensions tests

commit 3127ef4
Author: sergdort <[email protected]>
Date:   Fri Jul 14 11:13:03 2017 +0100

    Add `modelSelected` to the UIPickerView extension

commit b47f17b
Author: sergdort <[email protected]>
Date:   Fri Jul 14 11:04:16 2017 +0100

    Add `model(at: Int) -> Any` and ViewDataSource

commit d5a754d
Author: Krunoslav Zaher <[email protected]>
Date:   Wed Jul 12 22:22:48 2017 +0200

    Fixes deadlock with `shareReplayWhileLatest`. ReactiveX#1323

commit d215a2a
Author: magicmon <[email protected]>
Date:   Wed Jul 12 17:43:57 2017 +0900

    When importing a user list or image, the app was modified when the user failed to import the user due to a network error.

commit 5699fea
Author: magicmon <[email protected]>
Date:   Wed Jul 12 17:06:08 2017 +0900

    If "Allow Arbitrary Loads" is set to No in Info.plist, the "TableViewWithEditingCommands" example will exit as soon as you run it.
    So, added a catchError.

commit f55c3f6
Author: sergdort <[email protected]>
Date:   Wed Jul 12 17:31:25 2017 +0100

    Add convenience UIPickerView rx extensions example

commit 508454f
Author: sergdort <[email protected]>
Date:   Wed Jul 12 15:52:58 2017 +0100

    Add convenience UIPickerView adapters and extensions

commit de2837f
Merge: fa8a8bb ca938b6
Author: Shai Mishali <[email protected]>
Date:   Wed Jul 12 17:18:41 2017 +0300

    Merge pull request ReactiveX#1326 from MasayaHayashi724/fix-typo

    Fix typo: so -> do

commit ca938b6
Author: Masaya Hayashi <[email protected]>
Date:   Wed Jul 12 23:02:54 2017 +0900

    fix typo

commit eb6eb5a
Author: sergdort <[email protected]>
Date:   Mon Jul 10 21:53:59 2017 +0100

    Add UIPickerView adapter example

commit 4f3d803
Author: sergdort <[email protected]>
Date:   Mon Jul 10 20:32:35 2017 +0100

    Add missing method description

commit fa8a8bb
Author: Nolan Warner <[email protected]>
Date:   Sun Jul 9 22:36:18 2017 +0900

    Update label and variable names for consistancy

commit af450fc
Author: Nolan Warner <[email protected]>
Date:   Wed Jul 5 17:44:49 2017 +0900

    Update changelog

commit 130867b
Author: Nolan Warner <[email protected]>
Date:   Fri Jun 30 17:09:51 2017 +0900

    Update method prototype syntax in UICollectionView+Rx comments

commit 8d982e2
Author: Nolan Warner <[email protected]>
Date:   Fri Jun 30 16:59:53 2017 +0900

    Add UICollectionViewDelegate control event tests

commit deed0bc
Author: Nolan Warner <[email protected]>
Date:   Fri Jun 30 12:32:46 2017 +0900

    Add missing control events to UICollectionView+Rx

commit b318040
Author: sergdort <[email protected]>
Date:   Fri Jul 7 22:45:27 2017 +0100

    Add UIPickerView + rx.items tests

commit 52c6022
Author: sergdort <[email protected]>
Date:   Fri Jul 7 22:45:01 2017 +0100

    Default to 0 components and items

commit 39730ef
Author: grafele <[email protected]>
Date:   Thu Jul 6 10:04:22 2017 +0200

    fix typo in RxCocoaError debug description

commit 90cd66a
Author: sergdort <[email protected]>
Date:   Wed Jul 5 17:01:29 2017 +0100

    Add RxPickerViewDataSourceProxy, RxPickerViewDataSourceType and UIPickerView reactive extensions

commit 38552d5
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 2 21:11:55 2017 +0200

    Fixes unit tests warning.

commit d950ddd
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 2 21:07:03 2017 +0200

    Fixes warning on Linux.

commit 6b4b68e
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 2 20:08:01 2017 +0200

    Adds `andThen` to `Completable`.

commit b0a1118
Author: Casey Liss <[email protected]>
Date:   Fri Jun 30 09:17:42 2017 -0400

    adds UITableView.rx.modelDeleted

commit 4e06fc8
Author: Nolan Warner <[email protected]>
Date:   Thu Jun 29 12:15:57 2017 +0900

    Add UIScrollViewDelegate control event tests

commit b7d1bdd
Author: Nolan Warner <[email protected]>
Date:   Thu Jun 29 12:15:39 2017 +0900

    Add missing control events to UIScrollView+Rx

commit 4da31c6
Author: JolieYang_Pro <[email protected]>
Date:   Thu Jun 29 14:32:14 2017 +0800

    :bug: ReactiveX#1309 change calculator model

commit 002512f
Author: JolieYang_Pro <[email protected]>
Date:   Tue Jun 27 01:03:42 2017 +0800

    :bug: ReactiveX#1309 continuous input operations should update operator

commit f0d0ec9
Author: Christian Tietze <[email protected]>
Date:   Thu Jun 22 09:32:12 2017 +0200

    don't swallow duplicate control events

commit 6eba4ab
Author: Brian Hardy <[email protected]>
Date:   Fri Jun 16 10:50:06 2017 -0400

    Avoids the use of expectations since the subscription will fire synchronously.

commit 38e00f9
Author: Brian Hardy <[email protected]>
Date:   Fri Jun 16 10:13:01 2017 -0400

    Fixes arguments to perform to avoid a crash

commit 342bbd1
Author: Brian Hardy <[email protected]>
Date:   Thu Jun 15 15:42:53 2017 -0400

    Adds failing test illustrating crash on UIBarButtonItem tap.

commit 60d1d88
Author: Romain Bertozzi <[email protected]>
Date:   Wed Jun 14 09:57:42 2017 -0400

    UITabBar+Rx: update methods prototypes in comments

    This commit updates methods prototypes in some comments. These comments
    did not represent the current syntax of the methods.

commit 1e2cbf6
Author: hagmas <[email protected]>
Date:   Wed May 31 14:47:52 2017 +0900

    Remove concrete same-type requirements for Swift3.0

commit 1a8e7f4
Author: hagmas <[email protected]>
Date:   Tue May 16 22:13:14 2017 +0900

    Add concat operator to Completable

commit 46325a0
Author: Håvard Fossli <[email protected]>
Date:   Wed Jun 14 10:34:21 2017 +0200

    Move word inside paranthesis

commit 53bda68
Author: Håvard Fossli <[email protected]>
Date:   Wed Jun 14 10:30:46 2017 +0200

    Tidy up clutter in top of README.md

    Moved note about swift 2.x branch to "requirements" section. Removed "About RxSwift" because I find it excessive considering it is just below the super title `ReactiveX for Swift`

commit c0644c2
Author: Christian Tietze <[email protected]>
Date:   Wed Jun 14 08:32:42 2017 +0200

    add delegate tests

commit ea6c252
Author: Christian Tietze <[email protected]>
Date:   Tue Jun 13 10:27:22 2017 +0200

    forward controlTextDidChange to non-Rx delegate

commit 498e22f
Author: Håvard Fossli <[email protected]>
Date:   Mon Jun 12 14:02:21 2017 +0200

    Tone down warning about swift 3.0 requirement

commit 44d7659
Author: Krunoslav Zaher <[email protected]>
Date:   Wed Jun 14 09:11:54 2017 +0200

    Renames `UIViewControler+RxTests.swift` to `UIViewController+RxTests.swift`.

commit 57a7261
Author: Krunoslav Zaher <[email protected]>
Date:   Wed Jun 14 09:07:47 2017 +0200

    Modifies links.

commit 69dbcd5
Author: Dominik Arnhof <[email protected]>
Date:   Tue Jun 6 14:22:49 2017 +0200

    added UIViewController Reactive extension for tvOS

commit caec217
Author: Romain Bertozzi <[email protected]>
Date:   Sat Jun 10 11:30:29 2017 -0400

    Fixes a typo.

    This commits fixes a typo where the word nondeterministic was spelled
    nondetermininstic.

commit f60363c
Author: Serhiy Krivtsov <[email protected]>
Date:   Wed May 31 00:14:06 2017 +0300

    Removed duplication of words

commit ff62249
Author: Christian Tietze <[email protected]>
Date:   Thu Jun 1 10:12:49 2017 +0200

    pass file & line along to XCTestAssert

    This way the failure is reported at call site
qazyn951230 added a commit to qazyn951230/RxSwift that referenced this issue Aug 11, 2017
commit 80de962
Author: Krunoslav Zaher <[email protected]>
Date:   Fri Jul 21 10:34:55 2017 +0200

    Adds 3.6.1 changes to `CHANGELOG.md`.

commit dcc77bd
Author: Krunoslav Zaher <[email protected]>
Date:   Thu Jul 20 12:15:25 2017 +0200

    Fixes issues with `andThen` operator. ReactiveX#1347

commit b343881
Author: Krunoslav Zaher <[email protected]>
Date:   Wed Jul 19 15:22:56 2017 +0200

    Improves locking behavior of `merge` and `switch` operators. ReactiveX#1344

commit e782081
Author: zhongwuzw <[email protected]>
Date:   Thu Jul 20 10:16:27 2017 +0800

    fix wrong semantic

commit 79ac3d0
Author: Krunoslav Zaher <[email protected]>
Date:   Tue Jul 18 19:55:06 2017 +0200

    Release 3.6.1

commit 2e63f16
Author: Krunoslav Zaher <[email protected]>
Date:   Tue Jul 18 19:49:44 2017 +0200

    Adds xcode9 to CI.

commit 0c057c8
Author: Albin "albinek" Sadowski <[email protected]>
Date:   Sun Jul 16 09:08:53 2017 +0200

    Add missing syntax highlighting

commit 3722e09
Author: Boris Kolozsi <[email protected]>
Date:   Tue Jul 18 13:32:31 2017 +0200

    unifying access control

commit ada09c4
Author: Boris Kolozsi <[email protected]>
Date:   Tue Jul 18 12:18:19 2017 +0200

    no need to be public, just not private

commit 0461f44
Author: Boris Kolozsi <[email protected]>
Date:   Tue Jul 18 09:51:35 2017 +0200

    rxcocoa build fix on xcode 9

commit 1314805
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 16 22:25:42 2017 +0200

    Release 3.6.0

commit 8c874c4
Author: Krunoslav Zaher <[email protected]>
Date:   Mon Jul 17 00:39:40 2017 +0200

    Improves sleep method in unit tests.

commit 11675f0
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 16 23:32:29 2017 +0200

    Updates SPM.

commit 846d608
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 16 23:26:59 2017 +0200

    Adds `delay` to `SharedSequence`.

commit eb5d238
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 16 23:19:55 2017 +0200

    Adds `timeout` to `PrimitiveSequence`.

commit c6d9ca0
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 16 22:45:03 2017 +0200

    Fixes UITests.

commit 95dc6fd
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 16 22:21:37 2017 +0200

    Removes redundant conformance to `Equatable` from `value` convenience on `NSControl`.

commit eccd8cc
Merge: 42d4250 3afb0e7
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 16 21:55:09 2017 +0200

    Merge branch 'sergdort-feature/reactive-uipickerview' into develop

commit 3afb0e7
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 16 21:22:05 2017 +0200

    Adds picker view adapter to SPM.

commit 7b866f0
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 16 20:25:58 2017 +0200

    Improves documentation to UIPickerView components, changes modelSelected type to [T], simplifies UIPickerView adapter example.

commit b5e1d84
Merge: 42d4250 d634687
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 16 18:47:04 2017 +0200

    Merge branch 'feature/reactive-uipickerview' of https://github.com/sergdort/RxSwift into sergdort-feature/reactive-uipickerview

commit d634687
Author: sergdort <[email protected]>
Date:   Sat Jul 15 18:42:25 2017 +0100

    Add tests for model at index path

commit 64773ed
Author: sergdort <[email protected]>
Date:   Sat Jul 15 18:20:11 2017 +0100

    run jazzy to remove ViewDataSourceType

commit 1e0c524
Author: sergdort <[email protected]>
Date:   Sat Jul 15 18:18:27 2017 +0100

    Remove unnecessary protocol and use SectionedViewDatasourceType

commit 42d4250
Author: Daniel Duan <[email protected]>
Date:   Thu Jul 13 23:54:10 2017 -0700

    Fix Small Issues in GettingStarted.md

    Read this excellent document today and noticed a few thing that bothered me:

    1. The `NS` part of `NSURL*` should be dropped in most cases.
    2. There are some trailing whitespaces.
    3. In one case, "your" is misspelled as "you".

commit b6fe1ff
Author: sergdort <[email protected]>
Date:   Fri Jul 14 15:11:11 2017 +0100

    Add changes to CHANGELOG.md

commit b03a192
Author: sergdort <[email protected]>
Date:   Fri Jul 14 13:55:34 2017 +0100

    remove UIPicker extension from TV as it’s not available there

commit 6d1c165
Author: sergdort <[email protected]>
Date:   Fri Jul 14 11:59:54 2017 +0100

    run jazzy

commit de8de1d
Author: sergdort <[email protected]>
Date:   Fri Jul 14 11:54:30 2017 +0100

    Add UIPickerView data source extensions tests

commit 3127ef4
Author: sergdort <[email protected]>
Date:   Fri Jul 14 11:13:03 2017 +0100

    Add `modelSelected` to the UIPickerView extension

commit b47f17b
Author: sergdort <[email protected]>
Date:   Fri Jul 14 11:04:16 2017 +0100

    Add `model(at: Int) -> Any` and ViewDataSource

commit d5a754d
Author: Krunoslav Zaher <[email protected]>
Date:   Wed Jul 12 22:22:48 2017 +0200

    Fixes deadlock with `shareReplayWhileLatest`. ReactiveX#1323

commit d215a2a
Author: magicmon <[email protected]>
Date:   Wed Jul 12 17:43:57 2017 +0900

    When importing a user list or image, the app was modified when the user failed to import the user due to a network error.

commit 5699fea
Author: magicmon <[email protected]>
Date:   Wed Jul 12 17:06:08 2017 +0900

    If "Allow Arbitrary Loads" is set to No in Info.plist, the "TableViewWithEditingCommands" example will exit as soon as you run it.
    So, added a catchError.

commit f55c3f6
Author: sergdort <[email protected]>
Date:   Wed Jul 12 17:31:25 2017 +0100

    Add convenience UIPickerView rx extensions example

commit 508454f
Author: sergdort <[email protected]>
Date:   Wed Jul 12 15:52:58 2017 +0100

    Add convenience UIPickerView adapters and extensions

commit de2837f
Merge: fa8a8bb ca938b6
Author: Shai Mishali <[email protected]>
Date:   Wed Jul 12 17:18:41 2017 +0300

    Merge pull request ReactiveX#1326 from MasayaHayashi724/fix-typo

    Fix typo: so -> do

commit ca938b6
Author: Masaya Hayashi <[email protected]>
Date:   Wed Jul 12 23:02:54 2017 +0900

    fix typo

commit eb6eb5a
Author: sergdort <[email protected]>
Date:   Mon Jul 10 21:53:59 2017 +0100

    Add UIPickerView adapter example

commit 4f3d803
Author: sergdort <[email protected]>
Date:   Mon Jul 10 20:32:35 2017 +0100

    Add missing method description

commit fa8a8bb
Author: Nolan Warner <[email protected]>
Date:   Sun Jul 9 22:36:18 2017 +0900

    Update label and variable names for consistancy

commit af450fc
Author: Nolan Warner <[email protected]>
Date:   Wed Jul 5 17:44:49 2017 +0900

    Update changelog

commit 130867b
Author: Nolan Warner <[email protected]>
Date:   Fri Jun 30 17:09:51 2017 +0900

    Update method prototype syntax in UICollectionView+Rx comments

commit 8d982e2
Author: Nolan Warner <[email protected]>
Date:   Fri Jun 30 16:59:53 2017 +0900

    Add UICollectionViewDelegate control event tests

commit deed0bc
Author: Nolan Warner <[email protected]>
Date:   Fri Jun 30 12:32:46 2017 +0900

    Add missing control events to UICollectionView+Rx

commit b318040
Author: sergdort <[email protected]>
Date:   Fri Jul 7 22:45:27 2017 +0100

    Add UIPickerView + rx.items tests

commit 52c6022
Author: sergdort <[email protected]>
Date:   Fri Jul 7 22:45:01 2017 +0100

    Default to 0 components and items

commit 39730ef
Author: grafele <[email protected]>
Date:   Thu Jul 6 10:04:22 2017 +0200

    fix typo in RxCocoaError debug description

commit 90cd66a
Author: sergdort <[email protected]>
Date:   Wed Jul 5 17:01:29 2017 +0100

    Add RxPickerViewDataSourceProxy, RxPickerViewDataSourceType and UIPickerView reactive extensions

commit 38552d5
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 2 21:11:55 2017 +0200

    Fixes unit tests warning.

commit d950ddd
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 2 21:07:03 2017 +0200

    Fixes warning on Linux.

commit 6b4b68e
Author: Krunoslav Zaher <[email protected]>
Date:   Sun Jul 2 20:08:01 2017 +0200

    Adds `andThen` to `Completable`.

commit b0a1118
Author: Casey Liss <[email protected]>
Date:   Fri Jun 30 09:17:42 2017 -0400

    adds UITableView.rx.modelDeleted

commit 4e06fc8
Author: Nolan Warner <[email protected]>
Date:   Thu Jun 29 12:15:57 2017 +0900

    Add UIScrollViewDelegate control event tests

commit b7d1bdd
Author: Nolan Warner <[email protected]>
Date:   Thu Jun 29 12:15:39 2017 +0900

    Add missing control events to UIScrollView+Rx

commit 4da31c6
Author: JolieYang_Pro <[email protected]>
Date:   Thu Jun 29 14:32:14 2017 +0800

    :bug: ReactiveX#1309 change calculator model

commit 002512f
Author: JolieYang_Pro <[email protected]>
Date:   Tue Jun 27 01:03:42 2017 +0800

    :bug: ReactiveX#1309 continuous input operations should update operator

commit f0d0ec9
Author: Christian Tietze <[email protected]>
Date:   Thu Jun 22 09:32:12 2017 +0200

    don't swallow duplicate control events

commit 6eba4ab
Author: Brian Hardy <[email protected]>
Date:   Fri Jun 16 10:50:06 2017 -0400

    Avoids the use of expectations since the subscription will fire synchronously.

commit 38e00f9
Author: Brian Hardy <[email protected]>
Date:   Fri Jun 16 10:13:01 2017 -0400

    Fixes arguments to perform to avoid a crash

commit 342bbd1
Author: Brian Hardy <[email protected]>
Date:   Thu Jun 15 15:42:53 2017 -0400

    Adds failing test illustrating crash on UIBarButtonItem tap.

commit 60d1d88
Author: Romain Bertozzi <[email protected]>
Date:   Wed Jun 14 09:57:42 2017 -0400

    UITabBar+Rx: update methods prototypes in comments

    This commit updates methods prototypes in some comments. These comments
    did not represent the current syntax of the methods.

commit 1e2cbf6
Author: hagmas <[email protected]>
Date:   Wed May 31 14:47:52 2017 +0900

    Remove concrete same-type requirements for Swift3.0

commit 1a8e7f4
Author: hagmas <[email protected]>
Date:   Tue May 16 22:13:14 2017 +0900

    Add concat operator to Completable

commit 46325a0
Author: Håvard Fossli <[email protected]>
Date:   Wed Jun 14 10:34:21 2017 +0200

    Move word inside paranthesis

commit 53bda68
Author: Håvard Fossli <[email protected]>
Date:   Wed Jun 14 10:30:46 2017 +0200

    Tidy up clutter in top of README.md

    Moved note about swift 2.x branch to "requirements" section. Removed "About RxSwift" because I find it excessive considering it is just below the super title `ReactiveX for Swift`

commit c0644c2
Author: Christian Tietze <[email protected]>
Date:   Wed Jun 14 08:32:42 2017 +0200

    add delegate tests

commit ea6c252
Author: Christian Tietze <[email protected]>
Date:   Tue Jun 13 10:27:22 2017 +0200

    forward controlTextDidChange to non-Rx delegate

commit 498e22f
Author: Håvard Fossli <[email protected]>
Date:   Mon Jun 12 14:02:21 2017 +0200

    Tone down warning about swift 3.0 requirement

commit 44d7659
Author: Krunoslav Zaher <[email protected]>
Date:   Wed Jun 14 09:11:54 2017 +0200

    Renames `UIViewControler+RxTests.swift` to `UIViewController+RxTests.swift`.

commit 57a7261
Author: Krunoslav Zaher <[email protected]>
Date:   Wed Jun 14 09:07:47 2017 +0200

    Modifies links.

commit 69dbcd5
Author: Dominik Arnhof <[email protected]>
Date:   Tue Jun 6 14:22:49 2017 +0200

    added UIViewController Reactive extension for tvOS

commit caec217
Author: Romain Bertozzi <[email protected]>
Date:   Sat Jun 10 11:30:29 2017 -0400

    Fixes a typo.

    This commits fixes a typo where the word nondeterministic was spelled
    nondetermininstic.

commit f60363c
Author: Serhiy Krivtsov <[email protected]>
Date:   Wed May 31 00:14:06 2017 +0300

    Removed duplication of words

commit ff62249
Author: Christian Tietze <[email protected]>
Date:   Thu Jun 1 10:12:49 2017 +0200

    pass file & line along to XCTestAssert

    This way the failure is reported at call site
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants