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

Release 0.21.6 #6577

Closed
TobiGr opened this issue Jun 26, 2021 · 39 comments
Closed

Release 0.21.6 #6577

TobiGr opened this issue Jun 26, 2021 · 39 comments

Comments

@TobiGr
Copy link
Member

TobiGr commented Jun 26, 2021

APK for testing

From GitHub Actions: NewPipe_v0.21.6_RC3.zip

Please report only new bugs in this ticket. Corresponding PR: #6576

Changelogs

App

New

1- Long press on player share button to copy url to clipboard #6436
2- Added "Open website" button to WebView in license fragment #6314
9- Recognize timestamps and hashtags in description #5523
10- Added manual tablet mode setting #6059
11- Added ability to hide played items in a feed #3371

Improved

3- Support Storage Access Framework properly #5415
4- Better error handling of terminated channels #5876
5- Use constraint layout for play queue item #6443
12- The Android share sheet for Android 10+ users now shows the content title and other improvements #5523
20- Update Invidious instances and support Piped links #6557

Fixed

13- Dismiss choice dialog in onStop() to avoid a leaked window Exception: #6504
17- Don't enable SAF on Fire TV #6516

Development

6- Convert the abstract class DAOs to interfaces #5462
7- Resolve Tabs style checks #6346
8- Update Room to 2.3.0 #6313
14- Replace the System.exit calls with getActivity.finishAffinity() #6495
15- Update AndroidX Fragment to 1.3.4 #6394
16- Annotate some overridden methods and parameters as NonNull #6528
18- Refactoring by Android Studio #6556
19- Comment out test-android CI job #6562
21- Ask for screenshots/video of UI changes in PR template #6539

Extractor

New

1- Added AccountTerminatedException for terminated channels TeamNewPipe/NewPipeExtractor#580
2- [SoundCloud] Added streamPosition for comments TeamNewPipe/NewPipeExtractor#625

Improved

9- Update Invidious instances and support Piped links TeamNewPipe/NewPipeExtractor#668

Fixed

3- [YouTube] Fix getting stream type of live streams TeamNewPipe/NewPipeExtractor#658
5- [SoundCloud] Update HARDCODED_CLIENT_ID TeamNewPipe/NewPipeExtractor#660
10- [YouTube] Fix extraction of age restricted videos TeamNewPipe/NewPipeExtractor#665

Development

4- Add dependabot TeamNewPipe/NewPipeExtractor#552
6- Bump gson from 2.8.6 to 2.8.7 TeamNewPipe/NewPipeExtractor#654
7- Bump rhino from 1.7.12 to 1.7.13 TeamNewPipe/NewPipeExtractor#656
8- Bump spotbugs-annotations from 4.0.2 to 4.2.3 TeamNewPipe/NewPipeExtractor#655

@TobiGr TobiGr mentioned this issue Jun 26, 2021
@TobiGr TobiGr pinned this issue Jun 26, 2021
@SameenAhnaf
Copy link
Collaborator

SameenAhnaf commented Jun 26, 2021

NOTE: Both bugs don't seem to appear after 12 hours of installation.

  1. Bookmarked playlists are not loading at all.
Bug Report

Exception

  • User Action: bookmark
  • Request: Loading playlists
  • Content Country: US
  • Content Language: en-US
  • App Language: en_US
  • Service: none
  • Version: 0.21.6
  • OS: Linux Redmi/begonia/begonia:10/QP1A.190711.020/V12.0.7.0.QGGMIXM:user/release-keys 10 - 29
Crash log

android.database.sqlite.SQLiteException: cannot start a transaction within a transaction (code 1 SQLITE_ERROR)
	at android.database.sqlite.SQLiteConnection.nativeExecute(Native Method)
	at android.database.sqlite.SQLiteConnection.execute(SQLiteConnection.java:648)
	at android.database.sqlite.SQLiteSession.beginTransactionUnchecked(SQLiteSession.java:321)
	at android.database.sqlite.SQLiteSession.beginTransaction(SQLiteSession.java:300)
	at android.database.sqlite.SQLiteDatabase.beginTransaction(SQLiteDatabase.java:568)
	at android.database.sqlite.SQLiteDatabase.beginTransactionNonExclusive(SQLiteDatabase.java:502)
	at androidx.sqlite.db.framework.FrameworkSQLiteDatabase.beginTransactionNonExclusive(FrameworkSQLiteDatabase.java:74)
	at androidx.room.RoomDatabase.internalBeginTransaction(RoomDatabase.java:486)
	at androidx.room.RoomDatabase.beginTransaction(RoomDatabase.java:471)
	at org.schabi.newpipe.database.playlist.dao.PlaylistStreamDAO_Impl$9.call(PlaylistStreamDAO_Impl.java:438)
	at org.schabi.newpipe.database.playlist.dao.PlaylistStreamDAO_Impl$9.call(PlaylistStreamDAO_Impl.java:435)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeFromCallable.subscribeActual(MaybeFromCallable.java:47)
	at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5330)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableFlatMapMaybe$FlatMapMaybeSubscriber.onNext(FlowableFlatMapMaybe.java:131)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$ObserveOnSubscriber.runAsync(FlowableObserveOn.java:402)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176)
	at io.reactivex.rxjava3.internal.schedulers.ExecutorScheduler$ExecutorWorker$BooleanRunnable.run(ExecutorScheduler.java:322)
	at io.reactivex.rxjava3.internal.schedulers.ExecutorScheduler$ExecutorWorker.runEager(ExecutorScheduler.java:287)
	at io.reactivex.rxjava3.internal.schedulers.ExecutorScheduler$ExecutorWorker.run(ExecutorScheduler.java:248)
	at androidx.room.TransactionExecutor$1.run(TransactionExecutor.java:47)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	at java.lang.Thread.run(Thread.java:919)


  1. Subscription feeds stop loading at the middle of process.
Bug Report

Exception

  • User Action: requested feed
  • Request: Loading feed
  • Content Country: US
  • Content Language: en-US
  • App Language: en_US
  • Service: none
  • Version: 0.21.6
  • OS: Linux Redmi/begonia/begonia:10/QP1A.190711.020/V12.0.7.0.QGGMIXM:user/release-keys 10 - 29
Crash log

android.database.sqlite.SQLiteException: cannot start a transaction within a transaction (code 1 SQLITE_ERROR)
	at android.database.sqlite.SQLiteConnection.nativeExecute(Native Method)
	at android.database.sqlite.SQLiteConnection.execute(SQLiteConnection.java:648)
	at android.database.sqlite.SQLiteSession.beginTransactionUnchecked(SQLiteSession.java:321)
	at android.database.sqlite.SQLiteSession.beginTransaction(SQLiteSession.java:300)
	at android.database.sqlite.SQLiteDatabase.beginTransaction(SQLiteDatabase.java:568)
	at android.database.sqlite.SQLiteDatabase.beginTransactionNonExclusive(SQLiteDatabase.java:502)
	at androidx.sqlite.db.framework.FrameworkSQLiteDatabase.beginTransactionNonExclusive(FrameworkSQLiteDatabase.java:74)
	at androidx.room.RoomDatabase.internalBeginTransaction(RoomDatabase.java:486)
	at androidx.room.RoomDatabase.beginTransaction(RoomDatabase.java:471)
	at androidx.room.RoomDatabase.runInTransaction(RoomDatabase.java:554)
	at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1.accept(FeedLoadService.kt:316)
	at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1.accept(FeedLoadService.kt:65)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableDoOnEach$DoOnEachSubscriber.onNext(FlowableDoOnEach.java:86)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableBuffer$PublisherBufferExactSubscriber.onComplete(FlowableBuffer.java:152)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.checkTerminated(FlowableObserveOn.java:215)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$ObserveOnSubscriber.runAsync(FlowableObserveOn.java:394)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	at java.lang.Thread.run(Thread.java:919)


@OhMyLove666
Copy link

Some age-gated videos still tend to show error.

Exception

  • User Action: requested stream
  • Request: https://www.youtube.com/watch?v=61i0AoRh5Ws
  • Content Country: US
  • Content Language: en-US
  • App Language: en_US
  • Service: YouTube
  • Version: 0.21.6
  • OS: Linux Redmi/begonia/begonia:10/QP1A.190711.020/V12.0.7.0.QGGMIXM:user/release-keys 10 - 29
Crash log

org.schabi.newpipe.extractor.exceptions.AgeRestrictedContentException: This age-restricted video cannot be watched.
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.onFetchPage(YoutubeStreamExtractor.java:752)
	at org.schabi.newpipe.extractor.Extractor.fetchPage(Extractor.java:54)
	at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:68)
	at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:64)
	at org.schabi.newpipe.util.ExtractorHelper.lambda$getStreamInfo$3(ExtractorHelper.java:116)
	at org.schabi.newpipe.util.-$$Lambda$ExtractorHelper$YTHJjScxCJNO1LTCqs3IKy35iyY.call(Unknown Source:4)
	at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:43)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
	at io.reactivex.rxjava3.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
	at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5330)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.drain(MaybeConcatArray.java:153)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.request(MaybeConcatArray.java:78)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe$ElementAtSubscriber.onSubscribe(FlowableElementAtMaybe.java:66)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray.subscribeActual(MaybeConcatArray.java:42)
	at io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15753)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe.subscribeActual(FlowableElementAtMaybe.java:36)
	at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5330)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeToSingle.subscribeActual(MaybeToSingle.java:46)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
	at io.reactivex.rxjava3.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
	at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:614)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	at java.lang.Thread.run(Thread.java:919)


@opusforlife2
Copy link
Collaborator

Some age-gated videos still tend to show error.

Indeed. The PR seems to have fixed some videos, but not all.

@TobiGr
Copy link
Member Author

TobiGr commented Jul 4, 2021

NewPipe_v0.21.6_RC2.zip.
The second and probably last release candidate for 0.21.6 comes with fixes for the YouTube consent cookie, a fixed crash that occurred when connecting the device to a car's Bluetooth and updated translations.

@SameenAhnaf I was not able to reproduce your crashes. Did you import old feeds and bookmarks or did you create new ones?

@TobiGr
Copy link
Member Author

TobiGr commented Jul 4, 2021

NewPipe_v0.21.6_RC3.zip fixes empty strings when using a Chinese localization.

@SameenAhnaf
Copy link
Collaborator

SameenAhnaf commented Jul 4, 2021

@TobiGr Import any other database (from 'Settings'>'Content') and you will begin to notice the bugs. EDIT: I noticed that the bug seems to persist only for a few hours after importing database.

I found out some more bugs. These bugs tend to behave the same way.

  1. Subscribing or unsubscribing to a channel seems to be impossible.
Bug Report

Exception

  • User Action: subscription change
  • Request: Changing subscription for https://www.youtube.com/channel/UC2WuPTt0k8yDJpfenggOAVQ
  • Content Country: US
  • Content Language: en-US
  • App Language: en_US
  • Service: YouTube
  • Version: 0.21.6
  • OS: Linux Redmi/begonia/begonia:10/QP1A.190711.020/V12.0.7.0.QGGMIXM:user/release-keys 10 - 29
Crash log

android.database.sqlite.SQLiteException: cannot start a transaction within a transaction (code 1 SQLITE_ERROR)
	at android.database.sqlite.SQLiteConnection.nativeExecute(Native Method)
	at android.database.sqlite.SQLiteConnection.execute(SQLiteConnection.java:648)
	at android.database.sqlite.SQLiteSession.beginTransactionUnchecked(SQLiteSession.java:321)
	at android.database.sqlite.SQLiteSession.beginTransaction(SQLiteSession.java:300)
	at android.database.sqlite.SQLiteDatabase.beginTransaction(SQLiteDatabase.java:568)
	at android.database.sqlite.SQLiteDatabase.beginTransactionNonExclusive(SQLiteDatabase.java:502)
	at androidx.sqlite.db.framework.FrameworkSQLiteDatabase.beginTransactionNonExclusive(FrameworkSQLiteDatabase.java:74)
	at androidx.room.RoomDatabase.internalBeginTransaction(RoomDatabase.java:486)
	at androidx.room.RoomDatabase.beginTransaction(RoomDatabase.java:471)
	at org.schabi.newpipe.database.subscription.SubscriptionDAO_Impl.delete(SubscriptionDAO_Impl.java:240)
	at org.schabi.newpipe.database.subscription.SubscriptionDAO_Impl.delete(SubscriptionDAO_Impl.java:27)
	at org.schabi.newpipe.local.subscription.SubscriptionManager.deleteSubscription(SubscriptionManager.kt:95)
	at org.schabi.newpipe.fragments.list.channel.ChannelFragment.lambda$mapOnUnsubscribe$3$ChannelFragment(ChannelFragment.java:259)
	at org.schabi.newpipe.fragments.list.channel.-$$Lambda$ChannelFragment$eO2Vi4d3E1jdZvQonqJR0OVT01o.apply(Unknown Source:4)
	at io.reactivex.rxjava3.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:58)
	at io.reactivex.rxjava3.observers.SerializedObserver.onNext(SerializedObserver.java:113)
	at io.reactivex.rxjava3.internal.operators.observable.ObservableDebounceTimed$DebounceTimedObserver.emit(ObservableDebounceTimed.java:143)
	at io.reactivex.rxjava3.internal.operators.observable.ObservableDebounceTimed$DebounceEmitter.run(ObservableDebounceTimed.java:168)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	at java.lang.Thread.run(Thread.java:919)


  1. No way to add or remove a playlist.
Bug Report

Exception

  • User Action: bookmark
  • Request: Adding playlist bookmark
  • Content Country: US
  • Content Language: en-US
  • App Language: en_US
  • Service: none
  • Version: 0.21.6
  • OS: Linux Redmi/begonia/begonia:10/QP1A.190711.020/V12.0.7.0.QGGMIXM:user/release-keys 10 - 29
Crash log

android.database.sqlite.SQLiteException: cannot start a transaction within a transaction (code 1 SQLITE_ERROR)
	at android.database.sqlite.SQLiteConnection.nativeExecute(Native Method)
	at android.database.sqlite.SQLiteConnection.execute(SQLiteConnection.java:648)
	at android.database.sqlite.SQLiteSession.beginTransactionUnchecked(SQLiteSession.java:321)
	at android.database.sqlite.SQLiteSession.beginTransaction(SQLiteSession.java:300)
	at android.database.sqlite.SQLiteDatabase.beginTransaction(SQLiteDatabase.java:568)
	at android.database.sqlite.SQLiteDatabase.beginTransactionNonExclusive(SQLiteDatabase.java:502)
	at androidx.sqlite.db.framework.FrameworkSQLiteDatabase.beginTransactionNonExclusive(FrameworkSQLiteDatabase.java:74)
	at androidx.room.RoomDatabase.internalBeginTransaction(RoomDatabase.java:486)
	at androidx.room.RoomDatabase.beginTransaction(RoomDatabase.java:471)
	at org.schabi.newpipe.database.playlist.dao.PlaylistRemoteDAO_Impl.upsert(PlaylistRemoteDAO_Impl.java:238)
	at org.schabi.newpipe.local.playlist.RemotePlaylistManager.lambda$onBookmark$1$RemotePlaylistManager(RemotePlaylistManager.java:39)
	at org.schabi.newpipe.local.playlist.-$$Lambda$RemotePlaylistManager$TexHkGtzshvlLIp_-4QeooeoZoo.call(Unknown Source:4)
	at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:43)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
	at io.reactivex.rxjava3.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
	at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:614)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	at java.lang.Thread.run(Thread.java:919)


  1. History seems to update neither.

@Kr1sh1
Copy link

Kr1sh1 commented Jul 5, 2021

After installing the app and importing my settings and subscriptions, refreshing my feed causes this exception.

Exception

  • User Action: requested feed
  • Request: Loading feed
  • Content Country: GB
  • Content Language: en-GB
  • App Language: en_GB
  • Service: none
  • Version: 0.21.6
  • OS: Linux Android 10 - 29
Crash log

java.lang.NullPointerException: Attempt to invoke virtual method 'void org.schabi.newpipe.database.subscription.SubscriptionEntity.setData(java.lang.String, java.lang.String, java.lang.String, java.lang.Long)' on a null object reference
	at org.schabi.newpipe.local.subscription.SubscriptionManager.updateFromInfo(SubscriptionManager.kt:75)
	at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1$1.run(FeedLoadService.kt:324)
	at androidx.room.RoomDatabase.runInTransaction(RoomDatabase.java:556)
	at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1.accept(FeedLoadService.kt:316)
	at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1.accept(FeedLoadService.kt:65)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableDoOnEach$DoOnEachSubscriber.onNext(FlowableDoOnEach.java:86)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableBuffer$PublisherBufferExactSubscriber.onNext(FlowableBuffer.java:124)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$ObserveOnSubscriber.runAsync(FlowableObserveOn.java:402)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	at java.lang.Thread.run(Thread.java:919)


@Kr1sh1
Copy link

Kr1sh1 commented Jul 5, 2021

Also when I don't import my settings and subscriptions, but rather add them manually, after refreshing the feed it says "Feed last updated: 4 minutes ago" rather than "Feed last updated: moments ago".

@SameenAhnaf
Copy link
Collaborator

SameenAhnaf commented Jul 5, 2021

Also when I don't import my settings and subscriptions, but rather add them manually, after refreshing the feed it says "Feed last updated: 4 minutes ago" rather than "Feed last updated: moments ago".

That's probably because the default setting of "Feed Update threshold" is "5 minutes".

Screenshot

IMG_20210706_020748

@opusforlife2
Copy link
Collaborator

@TobiGr How strange. RC3 doesn't install over RC1. Did the signing keys change?

@TobiGr
Copy link
Member Author

TobiGr commented Jul 6, 2021

i took the builds from the CI. that's indeed strange. I'll look into it later.

@TobiGr
Copy link
Member Author

TobiGr commented Jul 7, 2021

I think we should try to revert #5462 to fix the transaction problems (#6577 (comment), #6577 (comment)). From the @Transation docs:

Marks a method in a Dao class as a transaction method.

When used on a non-abstract method of an abstract Dao class, the derived implementation of the method will execute the super method in a database transaction. All the parameters and return types are preserved. The transaction will be marked as successful unless an exception is thrown in the method body.

@TacoTheDank @Isira-Seneviratne What do you think?

@TobiGr
Copy link
Member Author

TobiGr commented Jul 7, 2021

@SameenAhnaf Please test this APK and let me know if we fixed the database transaction crashes: transaction.zip

@SameenAhnaf
Copy link
Collaborator

@TobiGr Unfortunately, no. I tried to do following things.

  1. I subscribed to a few channels and playlists randomly.
  2. Then I exported database.
  3. The app data was cleared.
  4. I imported database from the recently made file in step-2.
  5. Same database errors are still shown.

I followed these steps to make sure that there's nothing wrong with my personal database. Also, the bugs seem to persist no matter if you import settings or not.

@TobiGr
Copy link
Member Author

TobiGr commented Jul 7, 2021

I still cannot reproduce the bug, can you try this apk as well? room.zip

@TacoTheDank
Copy link
Member

@TobiGr I'd say that if trying to fix the issue starts to feel like more of a hassle than it's worth, then it would probably be better to just revert the change until we can find a better solution (at least so that it doesn't end up stalling the release process).

@Thewisem
Copy link

Thewisem commented Jul 8, 2021

Yeah this issue still persists.
Steps

  1. Open Newpipe
  2. Click on a video
  3. Escape from newpipe
  4. Go to notification panel and click on repeat

It is happening n android 7 tablet. And is happening on this version as well

Exception

  • User Action: ui error
  • Request: ACRA report
  • Content Country: GB
  • Content Language: en-GB
  • App Language: en_GB
  • Service: none
  • Version: 0.21.6
  • OS: Linux Android 7.1.1 - 25
Crash log

java.lang.RuntimeException: Error receiving broadcast Intent { act=org.schabi.newpipe.debug.release0216.player.MainPlayer.REPEAT flg=0x10000010 launchParam=MultiScreenLaunchParams { mDisplayId=0 mBaseDisplayId=0 mFlags=0 } bqHint=0 bnds=[376,187][424,235] } in org.schabi.newpipe.player.Player$3@f74bbd3
	at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:1195)
	at android.os.Handler.handleCallback(Handler.java:751)
	at android.os.Handler.dispatchMessage(Handler.java:95)
	at android.os.Looper.loop(Looper.java:154)
	at android.app.ActivityThread.main(ActivityThread.java:6823)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1563)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1451)
Caused by: java.lang.ClassCastException: android.widget.ImageButton cannot be cast to androidx.appcompat.widget.AppCompatImageButton
	at org.schabi.newpipe.player.Player.onRepeatModeChanged(Player.java:2263)
	at com.google.android.exoplayer2.ExoPlayerImpl.lambda$setRepeatMode$2(ExoPlayerImpl.java:564)
	at com.google.android.exoplayer2.-$$Lambda$ExoPlayerImpl$rgrcbaqP9Y8LgzdByBnAfUO4ydU.invokeListener(lambda)
	at com.google.android.exoplayer2.BasePlayer$ListenerHolder.invoke(BasePlayer.java:279)
	at com.google.android.exoplayer2.ExoPlayerImpl.invokeAll(ExoPlayerImpl.java:1498)
	at com.google.android.exoplayer2.ExoPlayerImpl.lambda$notifyListeners$6(ExoPlayerImpl.java:1318)
	at com.google.android.exoplayer2.-$$Lambda$ExoPlayerImpl$b59raXxaB-trjwE5bgpZInm1QnU.run(lambda)
	at com.google.android.exoplayer2.ExoPlayerImpl.notifyListeners(ExoPlayerImpl.java:1328)
	at com.google.android.exoplayer2.ExoPlayerImpl.notifyListeners(ExoPlayerImpl.java:1318)
	at com.google.android.exoplayer2.ExoPlayerImpl.setRepeatMode(ExoPlayerImpl.java:564)
	at com.google.android.exoplayer2.SimpleExoPlayer.setRepeatMode(SimpleExoPlayer.java:1636)
	at org.schabi.newpipe.player.Player.setRepeatMode(Player.java:2253)
	at org.schabi.newpipe.player.Player.onRepeatClicked(Player.java:2232)
	at org.schabi.newpipe.player.Player.onBroadcastReceived(Player.java:1123)
	at org.schabi.newpipe.player.Player.access$200(Player.java:190)
	at org.schabi.newpipe.player.Player$3.onReceive(Player.java:1060)
	at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:1185)
	... 7 more


TobiGr added a commit that referenced this issue Jul 8, 2021
See #6577 (comment)

java.lang.ClassCastException: android.widget.ImageButton cannot be cast to androidx.appcompat.widget.AppCompatImageButton
	at org.schabi.newpipe.player.Player.onRepeatModeChanged(Player.java:2263)
	at com.google.android.exoplayer2.ExoPlayerImpl.lambda$setRepeatMode$2(ExoPlayerImpl.java:564)
	at com.google.android.exoplayer2.-$$Lambda$ExoPlayerImpl$rgrcbaqP9Y8LgzdByBnAfUO4ydU.invokeListener(lambda)
	at com.google.android.exoplayer2.BasePlayer$ListenerHolder.invoke(BasePlayer.java:279)
	at com.google.android.exoplayer2.ExoPlayerImpl.invokeAll(ExoPlayerImpl.java:1498)
	at com.google.android.exoplayer2.ExoPlayerImpl.lambda$notifyListeners$6(ExoPlayerImpl.java:1318)
	at com.google.android.exoplayer2.-$$Lambda$ExoPlayerImpl$b59raXxaB-trjwE5bgpZInm1QnU.run(lambda)
	at com.google.android.exoplayer2.ExoPlayerImpl.notifyListeners(ExoPlayerImpl.java:1328)
	at com.google.android.exoplayer2.ExoPlayerImpl.notifyListeners(ExoPlayerImpl.java:1318)
	at com.google.android.exoplayer2.ExoPlayerImpl.setRepeatMode(ExoPlayerImpl.java:564)
	at com.google.android.exoplayer2.SimpleExoPlayer.setRepeatMode(SimpleExoPlayer.java:1636)
	at org.schabi.newpipe.player.Player.setRepeatMode(Player.java:2253)
	at org.schabi.newpipe.player.Player.onRepeatClicked(Player.java:2232)
	at org.schabi.newpipe.player.Player.onBroadcastReceived(Player.java:1123)
	at org.schabi.newpipe.player.Player.access$200(Player.java:190)
	at org.schabi.newpipe.player.Player$3.onReceive(Player.java:1060)
	at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:1185)
	... 7 more
@TobiGr
Copy link
Member Author

TobiGr commented Jul 8, 2021

@Thewisem That's a different issue. I tried to fix it in #6622. Could you please test the APK from that PR?

TobiGr added a commit that referenced this issue Jul 8, 2021
See #6577 (comment)

java.lang.ClassCastException: android.widget.ImageButton cannot be cast to androidx.appcompat.widget.AppCompatImageButton
	at org.schabi.newpipe.player.Player.onRepeatModeChanged(Player.java:2263)
	at com.google.android.exoplayer2.ExoPlayerImpl.lambda$setRepeatMode$2(ExoPlayerImpl.java:564)
	at com.google.android.exoplayer2.-$$Lambda$ExoPlayerImpl$rgrcbaqP9Y8LgzdByBnAfUO4ydU.invokeListener(lambda)
	at com.google.android.exoplayer2.BasePlayer$ListenerHolder.invoke(BasePlayer.java:279)
	at com.google.android.exoplayer2.ExoPlayerImpl.invokeAll(ExoPlayerImpl.java:1498)
	at com.google.android.exoplayer2.ExoPlayerImpl.lambda$notifyListeners$6(ExoPlayerImpl.java:1318)
	at com.google.android.exoplayer2.-$$Lambda$ExoPlayerImpl$b59raXxaB-trjwE5bgpZInm1QnU.run(lambda)
	at com.google.android.exoplayer2.ExoPlayerImpl.notifyListeners(ExoPlayerImpl.java:1328)
	at com.google.android.exoplayer2.ExoPlayerImpl.notifyListeners(ExoPlayerImpl.java:1318)
	at com.google.android.exoplayer2.ExoPlayerImpl.setRepeatMode(ExoPlayerImpl.java:564)
	at com.google.android.exoplayer2.SimpleExoPlayer.setRepeatMode(SimpleExoPlayer.java:1636)
	at org.schabi.newpipe.player.Player.setRepeatMode(Player.java:2253)
	at org.schabi.newpipe.player.Player.onRepeatClicked(Player.java:2232)
	at org.schabi.newpipe.player.Player.onBroadcastReceived(Player.java:1123)
	at org.schabi.newpipe.player.Player.access$200(Player.java:190)
	at org.schabi.newpipe.player.Player$3.onReceive(Player.java:1060)
	at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:1185)
	... 7 more
@Thewisem
Copy link

Thewisem commented Jul 8, 2021

If your taking about this apk, then it doesn't work on this one

@Stypox
Copy link
Member

Stypox commented Jul 9, 2021

I also get crashes after importing the database and refreshing feed:

Exception

  • User Action: requested feed
  • Request: Loading feed
  • Content Country: US
  • Content Language: en
  • App Language: en_GB
  • Service: none
  • Version: 0.21.6
  • OS: Linux Android 10 - 29
Crash log

java.lang.NullPointerException: Attempt to invoke virtual method 'void org.schabi.newpipe.database.subscription.SubscriptionEntity.setName(java.lang.String)' on a null object reference
	at org.schabi.newpipe.local.subscription.SubscriptionManager.updateFromInfo(SubscriptionManager.kt:73)
	at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1$1.run(FeedLoadService.kt:324)
	at androidx.room.RoomDatabase.runInTransaction(RoomDatabase.java:556)
	at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1.accept(FeedLoadService.kt:316)
	at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1.accept(FeedLoadService.kt:65)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableDoOnEach$DoOnEachSubscriber.onNext(FlowableDoOnEach.java:86)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableBuffer$PublisherBufferExactSubscriber.onNext(FlowableBuffer.java:124)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$ObserveOnSubscriber.runAsync(FlowableObserveOn.java:402)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	at java.lang.Thread.run(Thread.java:919)


And the second time I reloaded feed I got this:

Exception

  • User Action: requested feed
  • Request: Loading feed
  • Content Country: US
  • Content Language: en
  • App Language: en_GB
  • Service: none
  • Version: 0.21.6
  • OS: Linux Android 10 - 29
Crash log

android.database.sqlite.SQLiteException: cannot start a transaction within a transaction (code 1 SQLITE_ERROR)
	at android.database.sqlite.SQLiteConnection.nativeExecute(Native Method)
	at android.database.sqlite.SQLiteConnection.execute(SQLiteConnection.java:648)
	at android.database.sqlite.SQLiteSession.beginTransactionUnchecked(SQLiteSession.java:321)
	at android.database.sqlite.SQLiteSession.beginTransaction(SQLiteSession.java:300)
	at android.database.sqlite.SQLiteDatabase.beginTransaction(SQLiteDatabase.java:568)
	at android.database.sqlite.SQLiteDatabase.beginTransactionNonExclusive(SQLiteDatabase.java:502)
	at androidx.sqlite.db.framework.FrameworkSQLiteDatabase.beginTransactionNonExclusive(FrameworkSQLiteDatabase.java:74)
	at androidx.room.RoomDatabase.internalBeginTransaction(RoomDatabase.java:486)
	at androidx.room.RoomDatabase.beginTransaction(RoomDatabase.java:471)
	at androidx.room.RoomDatabase.runInTransaction(RoomDatabase.java:554)
	at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1.accept(FeedLoadService.kt:316)
	at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1.accept(FeedLoadService.kt:65)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableDoOnEach$DoOnEachSubscriber.onNext(FlowableDoOnEach.java:86)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableBuffer$PublisherBufferExactSubscriber.onComplete(FlowableBuffer.java:152)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.checkTerminated(FlowableObserveOn.java:215)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$ObserveOnSubscriber.runAsync(FlowableObserveOn.java:394)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	at java.lang.Thread.run(Thread.java:919)


Also for some reason all of my local playlists seem to be missing

I also get errors on unsubscribing:

Exception

Crash log

android.database.sqlite.SQLiteException: cannot start a transaction within a transaction (code 1 SQLITE_ERROR)
	at android.database.sqlite.SQLiteConnection.nativeExecute(Native Method)
	at android.database.sqlite.SQLiteConnection.execute(SQLiteConnection.java:648)
	at android.database.sqlite.SQLiteSession.beginTransactionUnchecked(SQLiteSession.java:321)
	at android.database.sqlite.SQLiteSession.beginTransaction(SQLiteSession.java:300)
	at android.database.sqlite.SQLiteDatabase.beginTransaction(SQLiteDatabase.java:568)
	at android.database.sqlite.SQLiteDatabase.beginTransactionNonExclusive(SQLiteDatabase.java:502)
	at androidx.sqlite.db.framework.FrameworkSQLiteDatabase.beginTransactionNonExclusive(FrameworkSQLiteDatabase.java:74)
	at androidx.room.RoomDatabase.internalBeginTransaction(RoomDatabase.java:486)
	at androidx.room.RoomDatabase.beginTransaction(RoomDatabase.java:471)
	at org.schabi.newpipe.database.subscription.SubscriptionDAO_Impl.delete(SubscriptionDAO_Impl.java:240)
	at org.schabi.newpipe.database.subscription.SubscriptionDAO_Impl.delete(SubscriptionDAO_Impl.java:27)
	at org.schabi.newpipe.local.subscription.SubscriptionManager.deleteSubscription(SubscriptionManager.kt:95)
	at org.schabi.newpipe.fragments.list.channel.ChannelFragment.lambda$mapOnUnsubscribe$3$ChannelFragment(ChannelFragment.java:259)
	at org.schabi.newpipe.fragments.list.channel.-$$Lambda$ChannelFragment$eO2Vi4d3E1jdZvQonqJR0OVT01o.apply(Unknown Source:4)
	at io.reactivex.rxjava3.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:58)
	at io.reactivex.rxjava3.observers.SerializedObserver.onNext(SerializedObserver.java:113)
	at io.reactivex.rxjava3.internal.operators.observable.ObservableDebounceTimed$DebounceTimedObserver.emit(ObservableDebounceTimed.java:143)
	at io.reactivex.rxjava3.internal.operators.observable.ObservableDebounceTimed$DebounceEmitter.run(ObservableDebounceTimed.java:168)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	at java.lang.Thread.run(Thread.java:919)


I will have time for investigating myself tomorrow afternoon

@opusforlife2
Copy link
Collaborator

I haven't encountered any crashes after importing my database. But I always close and reopen Newpipe after the import finishes. Are you guys doing the other actions without restarting Newpipe at least once when you encounter these crashes?

@triallax
Copy link
Contributor

triallax commented Jul 9, 2021

@opusforlife2 I get all the errors below without restarting the app after import, but after restarting everything works smoothly.

I always get this error on feed refresh (regardless of if it's the first time or not, and it happens close to the end of the refresh):

Error

Exception

  • User Action: requested feed
  • Request: Loading feed
  • Content Country: US
  • Content Language: en-US
  • App Language: en_US
  • Service: none
  • Version: 0.21.6
  • OS: Linux Android 11 - 30
Crash log

java.lang.NullPointerException: Attempt to invoke virtual method 'void org.schabi.newpipe.database.subscription.SubscriptionEntity.setData(java.lang.String, java.lang.String, java.lang.String, java.lang.Long)' on a null object reference
	at org.schabi.newpipe.local.subscription.SubscriptionManager.updateFromInfo(SubscriptionManager.kt:75)
	at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1$1.run(FeedLoadService.kt:324)
	at androidx.room.RoomDatabase.runInTransaction(RoomDatabase.java:556)
	at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1.accept(FeedLoadService.kt:316)
	at org.schabi.newpipe.local.feed.service.FeedLoadService$databaseConsumer$1.accept(FeedLoadService.kt:65)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableDoOnEach$DoOnEachSubscriber.onNext(FlowableDoOnEach.java:86)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableBuffer$PublisherBufferExactSubscriber.onNext(FlowableBuffer.java:124)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$ObserveOnSubscriber.runAsync(FlowableObserveOn.java:402)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	at java.lang.Thread.run(Thread.java:923)


I get this error on opening ANY channel for the first time (that is, if I open channel A, I get this error, but if I open channel B afterwards or even re-open channel A, I get another error that I will show next):
Error

Exception

  • User Action: subscription update
  • Request: Updating subscription for https://soundcloud.com/hinkik
  • Content Country: US
  • Content Language: en-US
  • App Language: en_US
  • Service: SoundCloud
  • Version: 0.21.6
  • OS: Linux Android 11 - 30
Crash log

android.database.sqlite.SQLiteConstraintException: FOREIGN KEY constraint failed (code 787 SQLITE_CONSTRAINT_FOREIGNKEY[787])
	at android.database.sqlite.SQLiteConnection.nativeExecute(Native Method)
	at android.database.sqlite.SQLiteConnection.execute(SQLiteConnection.java:957)
	at android.database.sqlite.SQLiteSession.endTransactionUnchecked(SQLiteSession.java:439)
	at android.database.sqlite.SQLiteSession.endTransaction(SQLiteSession.java:403)
	at android.database.sqlite.SQLiteDatabase.endTransaction(SQLiteDatabase.java:792)
	at androidx.sqlite.db.framework.FrameworkSQLiteDatabase.endTransaction(FrameworkSQLiteDatabase.java:90)
	at androidx.room.RoomDatabase.internalEndTransaction(RoomDatabase.java:510)
	at androidx.room.RoomDatabase.endTransaction(RoomDatabase.java:500)
	at org.schabi.newpipe.database.feed.dao.FeedDAO_Impl.setLastUpdatedForSubscription(FeedDAO_Impl.java:206)
	at org.schabi.newpipe.local.feed.FeedDatabaseManager.upsertAll(FeedDatabaseManager.kt:101)
	at org.schabi.newpipe.local.feed.FeedDatabaseManager.upsertAll$default(FeedDatabaseManager.kt:78)
	at org.schabi.newpipe.local.subscription.SubscriptionManager$updateChannelInfo$1$1.run(SubscriptionManager.kt:65)
	at io.reactivex.rxjava3.internal.operators.completable.CompletableFromRunnable.subscribeActual(CompletableFromRunnable.java:35)
	at io.reactivex.rxjava3.core.Completable.subscribe(Completable.java:2856)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeFlatMapCompletable$FlatMapCompletableObserver.onSuccess(MaybeFlatMapCompletable.java:91)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeFromCallable.subscribeActual(MaybeFromCallable.java:62)
	at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5330)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeFlatMapCompletable.subscribeActual(MaybeFlatMapCompletable.java:44)
	at io.reactivex.rxjava3.core.Completable.subscribe(Completable.java:2856)
	at io.reactivex.rxjava3.internal.operators.completable.CompletableSubscribeOn$SubscribeOnObserver.run(CompletableSubscribeOn.java:64)
	at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:614)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	at java.lang.Thread.run(Thread.java:923)


I get this error when I open a channel (not for the first time, see above):
Error

Exception

  • User Action: subscription update
  • Request: Updating subscription for https://soundcloud.com/hinkik
  • Content Country: US
  • Content Language: en-US
  • App Language: en_US
  • Service: SoundCloud
  • Version: 0.21.6
  • OS: Linux Android 11 - 30
Crash log

android.database.sqlite.SQLiteException: cannot start a transaction within a transaction (code 1 SQLITE_ERROR[1])
	at android.database.sqlite.SQLiteConnection.nativeExecute(Native Method)
	at android.database.sqlite.SQLiteConnection.execute(SQLiteConnection.java:957)
	at android.database.sqlite.SQLiteSession.beginTransactionUnchecked(SQLiteSession.java:321)
	at android.database.sqlite.SQLiteSession.beginTransaction(SQLiteSession.java:300)
	at android.database.sqlite.SQLiteDatabase.beginTransaction(SQLiteDatabase.java:772)
	at android.database.sqlite.SQLiteDatabase.beginTransactionNonExclusive(SQLiteDatabase.java:706)
	at androidx.sqlite.db.framework.FrameworkSQLiteDatabase.beginTransactionNonExclusive(FrameworkSQLiteDatabase.java:74)
	at androidx.room.RoomDatabase.internalBeginTransaction(RoomDatabase.java:486)
	at androidx.room.RoomDatabase.beginTransaction(RoomDatabase.java:471)
	at org.schabi.newpipe.database.subscription.SubscriptionDAO_Impl.update(SubscriptionDAO_Impl.java:267)
	at org.schabi.newpipe.database.subscription.SubscriptionDAO_Impl.update(SubscriptionDAO_Impl.java:27)
	at org.schabi.newpipe.local.subscription.SubscriptionManager$updateChannelInfo$1$1.run(SubscriptionManager.kt:64)
	at io.reactivex.rxjava3.internal.operators.completable.CompletableFromRunnable.subscribeActual(CompletableFromRunnable.java:35)
	at io.reactivex.rxjava3.core.Completable.subscribe(Completable.java:2856)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeFlatMapCompletable$FlatMapCompletableObserver.onSuccess(MaybeFlatMapCompletable.java:91)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeFromCallable.subscribeActual(MaybeFromCallable.java:62)
	at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5330)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeFlatMapCompletable.subscribeActual(MaybeFlatMapCompletable.java:44)
	at io.reactivex.rxjava3.core.Completable.subscribe(Completable.java:2856)
	at io.reactivex.rxjava3.internal.operators.completable.CompletableSubscribeOn$SubscribeOnObserver.run(CompletableSubscribeOn.java:64)
	at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:614)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	at java.lang.Thread.run(Thread.java:923)


The playlists tab gives this error (it worked fine the first time, but when I reset the app's storage and imported my data again it doesn't for some reason):
Error

Exception

  • User Action: bookmark
  • Request: Loading playlists
  • Content Country: US
  • Content Language: en-US
  • App Language: en_US
  • Service: none
  • Version: 0.21.6
  • OS: Linux Android 11 - 30
Crash log

android.database.sqlite.SQLiteException: cannot start a transaction within a transaction (code 1 SQLITE_ERROR[1])
	at android.database.sqlite.SQLiteConnection.nativeExecute(Native Method)
	at android.database.sqlite.SQLiteConnection.execute(SQLiteConnection.java:957)
	at android.database.sqlite.SQLiteSession.beginTransactionUnchecked(SQLiteSession.java:321)
	at android.database.sqlite.SQLiteSession.beginTransaction(SQLiteSession.java:300)
	at android.database.sqlite.SQLiteDatabase.beginTransaction(SQLiteDatabase.java:772)
	at android.database.sqlite.SQLiteDatabase.beginTransactionNonExclusive(SQLiteDatabase.java:706)
	at androidx.sqlite.db.framework.FrameworkSQLiteDatabase.beginTransactionNonExclusive(FrameworkSQLiteDatabase.java:74)
	at androidx.room.RoomDatabase.internalBeginTransaction(RoomDatabase.java:486)
	at androidx.room.RoomDatabase.beginTransaction(RoomDatabase.java:471)
	at org.schabi.newpipe.database.playlist.dao.PlaylistStreamDAO_Impl$9.call(PlaylistStreamDAO_Impl.java:438)
	at org.schabi.newpipe.database.playlist.dao.PlaylistStreamDAO_Impl$9.call(PlaylistStreamDAO_Impl.java:435)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeFromCallable.subscribeActual(MaybeFromCallable.java:47)
	at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5330)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableFlatMapMaybe$FlatMapMaybeSubscriber.onNext(FlowableFlatMapMaybe.java:131)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$ObserveOnSubscriber.runAsync(FlowableObserveOn.java:402)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176)
	at io.reactivex.rxjava3.internal.schedulers.ExecutorScheduler$ExecutorWorker$BooleanRunnable.run(ExecutorScheduler.java:322)
	at io.reactivex.rxjava3.internal.schedulers.ExecutorScheduler$ExecutorWorker.runEager(ExecutorScheduler.java:287)
	at io.reactivex.rxjava3.internal.schedulers.ExecutorScheduler$ExecutorWorker.run(ExecutorScheduler.java:248)
	at androidx.room.TransactionExecutor$1.run(TransactionExecutor.java:47)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	at java.lang.Thread.run(Thread.java:923)


@SameenAhnaf
Copy link
Collaborator

Hopefully, restarting the app solves the bugs for me. But the app never misbehaved in the past.

I am not sure if it is a standard practice to restart the app after applying every single setting. However, if such a bug is inevitable at this moment, 'Requires app restart to have app effect' subnote should be added.

@triallax
Copy link
Contributor

triallax commented Jul 9, 2021

Since yours truly had some time on his hands, he decided to bisect the issue, and he found out that the commit that introduced the issue is 90de759 from #6495.

@TobiGr
Copy link
Member Author

TobiGr commented Jul 10, 2021

I compiled a test version without the changes from #6495. Please test if the database error is gone.
0.21.6_no_6495.zip

@TobiGr
Copy link
Member Author

TobiGr commented Jul 10, 2021

Another test APK which (hopefully) fixed the bug introduced in #6495 without reverting the PR: app-debug.zip

@Kr1sh1
Copy link

Kr1sh1 commented Jul 10, 2021

Another test APK which (hopefully) fixed the bug introduced in #6495 without reverting the PR: app-debug.zip

Thank you, I'm no longer getting any errors when refreshing my imported subscriptions.

I did still having that issue I mentioned earlier when after refreshing it still doesn't say "Feed last updated: moments ago", in fact it says last updated 5 days ago which is when the database export was created. However simply restarting the app fixed it.

@TobiGr
Copy link
Member Author

TobiGr commented Jul 10, 2021

I'm no longer getting any errors when refreshing my imported subscriptions.

Perfect! I opened #6639.

I did still having that issue I mentioned earlier when after refreshing it still doesn't say "Feed last updated: moments ago", in fact it says last updated 5 days ago which is when the database export was created. However simply restarting the app fixed it.

@el-banto Can you open a new issue describing the problem so we do not forget about it. I do not want to fix this issue in this release, because this is only a minor issue and the release process was already halted for too long.

@skyGtm
Copy link

skyGtm commented Jul 10, 2021

"What's new" Section BUG

Steps to Reproduce:

  1. Go to what's new section.
  2. Pull down to refresh.
  3. (If new videos are available) You have to manually scroll up to see the latest videos.

@TobiGr
Copy link
Member Author

TobiGr commented Jul 10, 2021

@skyGtm I cannot reproduce that. Please give us some more info on your device and Android version

@skyGtm
Copy link

skyGtm commented Jul 10, 2021

Device: Huawei Nova 3i
OS : Android 9

I will provide screen recording when possible.

@Thewisem
Copy link

Has anyone had problems with lag?

@Thewisem
Copy link

Cause it WAS a problem. Maybe we could ask the people on THAT issue whether it still persists

@Kr1sh1
Copy link

Kr1sh1 commented Jul 10, 2021

@el-banto Can you open a new issue describing the problem so we do not forget about it. I do not want to fix this issue in this release, because this is only a minor issue and the release process was already halted for too long.

Will do!

"What's new" Section BUG

Steps to Reproduce:

  1. Go to what's new section.
  2. Pull down to refresh.
  3. (If new videos are available) You have to manually scroll up to see the latest videos.

I have noticed this as well

OS: Android 10
Device: OnePlus 6

@Thewisem

This comment has been minimized.

@skyGtm
Copy link

skyGtm commented Jul 10, 2021

Please give us some more info on your device and Android version

(If new videos are available) You have to manually scroll up to see the latest videos.

abc.mp4

@TobiGr here is the video

Ingnore the video pattern change. I don't know why that happened

Problem of Interest:
Before refresh:
First video: 'Dear Apple'

After refresh:
First Video: (is still) 'Dear Apple'
Until you manually scroll up. You'll see new video above it.

This was not an issue in v0.21.5

@Thewisem
Copy link

Why did the video pattern change? Strange

@Kr1sh1
Copy link

Kr1sh1 commented Jul 10, 2021

The videos changing order seems to happen for videos which were released very close to each other (same hour or so). Perhaps the sorting is based on the hour?

@TobiGr
Copy link
Member Author

TobiGr commented Jul 12, 2021

@skyGtm Thank you for the screencast. I am able to reproduce this now. I tried to fix this, but was just partly successful. This is only a minor regression. For this reason we'll proceed with releasing 0.21.6. Please open a new issue with the details from you two comments. I aim to fix this in the next version.

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

10 participants