Uploaded image for project: 'Realm Java SDK'
  1. Realm Java SDK
  2. RJAVA-1089

Flexible Sync initialSubscriptions should run the first time only

    • Type: Icon: Bug Bug
    • Resolution: Unresolved
    • Priority: Icon: Unknown Unknown
    • None
    • Affects Version/s: None
    • Component/s: None

      How frequently does the bug occur?

      All the time

      Description

      initialSubscriptions block runs on the subsequent starts of the App which causes the subscriptions to be added which throws

      Unable to find source-code formatter for language: kotlin. Available languages are: actionscript, ada, applescript, bash, c, c#, c++, cpp, css, erlang, go, groovy, haskell, html, java, javascript, js, json, lua, none, nyan, objc, perl, php, python, r, rainbow, ruby, scala, sh, sql, swift, visualbasic, xml, yaml
              app.loginAsync(Credentials.anonymous()) {
                  if (it.isSuccess)  {
                      user = it.get()
                      val config = SyncConfiguration.Builder(user)
                          .initialSubscriptions { realm, subscriptions ->
      
                              subscriptions.add(
                                  Subscription.create(
                                      "My Bookshelf",
                                      realm.where(Bookshelf::class.java)
                                  )
                              )
      
                              subscriptions.add(
                                  Subscription.create(
                                      "All Book",
                                      realm.where(Book::class.java)
                                  )
                              )
      
                              subscriptions.add(
                                  Subscription.create(
                                      "All Authors",
                                      realm.where(Author::class.java)
                                  )
                              )
                              subscriptions.add(
                                  Subscription.create(
                                      "All UserBook",
                                      realm.where(UserBook::class.java)
                                  )
                              )
                          }
                          .waitForInitialRemoteData()
                          .build()
                      Realm.getInstanceAsync(config, object : Callback() {
                          override fun onSuccess(syncRealm: Realm) {
                              realm = syncRealm
                              _isSyncReady.value = true
                         }})
      
      

      Stacktrace & log output

      Unable to find source-code formatter for language: shell. Available languages are: actionscript, ada, applescript, bash, c, c#, c++, cpp, css, erlang, go, groovy, haskell, html, java, javascript, js, json, lua, none, nyan, objc, perl, php, python, r, rainbow, ruby, scala, sh, sql, swift, visualbasic, xml, yaml
      03-10 21:34:07.580 13996 14040 E REALM_JNI: jni: ThrowingException 1, Subscription could not be added because it already existed, .
      03-10 21:34:07.580 13996 14040 E REALM_JNI: Exception has been thrown: Illegal Argument: Subscription could not be added because it already existed
      03-10 21:34:07.586 13996 14040 E REALM_JAVA: java.lang.IllegalArgumentException: Illegal Argument: Subscription could not be added because it already existed
      03-10 21:34:07.586 13996 14040 E REALM_JAVA: 	at io.realm.internal.objectstore.OsMutableSubscriptionSet.nativeInsertOrAssign(Native Method)
      03-10 21:34:07.586 13996 14040 E REALM_JAVA: 	at io.realm.internal.objectstore.OsMutableSubscriptionSet.addSubscription(OsMutableSubscriptionSet.java:49)
      03-10 21:34:07.586 13996 14040 E REALM_JAVA: 	at io.realm.internal.objectstore.OsMutableSubscriptionSet.add(OsMutableSubscriptionSet.java:38)
      03-10 21:34:07.586 13996 14040 E REALM_JAVA: 	at io.realm.example.bookshelf.RealmDatabase.init$lambda-1$lambda-0(RealmDatabase.kt:89)
      03-10 21:34:07.586 13996 14040 E REALM_JAVA: 	at io.realm.example.bookshelf.RealmDatabase.$r8$lambda$pPIJyIDfcis7MGgVcDWegtLQiQA(Unknown Source:0)
      03-10 21:34:07.586 13996 14040 E REALM_JAVA: 	at io.realm.example.bookshelf.RealmDatabase$$ExternalSyntheticLambda1.configure(Unknown Source:0)
      03-10 21:34:07.586 13996 14040 E REALM_JAVA: 	at io.realm.internal.SyncObjectServerFacade$1.update(SyncObjectServerFacade.java:304)
      03-10 21:34:07.586 13996 14040 E REALM_JAVA: 	at io.realm.internal.objectstore.OsSubscriptionSet.update(OsSubscriptionSet.java:178)
      03-10 21:34:07.586 13996 14040 E REALM_JAVA: 	at io.realm.internal.SyncObjectServerFacade.downloadInitialFlexibleSyncData(SyncObjectServerFacade.java:301)
      03-10 21:34:07.586 13996 14040 E REALM_JAVA: 	at io.realm.RealmCache.doCreateRealmOrGetFromCache(RealmCache.java:473)
      03-10 21:34:07.586 13996 14040 E REALM_JAVA: 	at io.realm.RealmCache.createRealmOrGetFromCache(RealmCache.java:422)
      03-10 21:34:07.586 13996 14040 E REALM_JAVA: 	at io.realm.RealmCache$CreateRealmRunnable.run(RealmCache.java:249)
      03-10 21:34:07.586 13996 14040 E REALM_JAVA: 	at io.realm.internal.async.BgPriorityRunnable.run(BgPriorityRunnable.java:34)
      03-10 21:34:07.586 13996 14040 E REALM_JAVA: 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
      03-10 21:34:07.586 13996 14040 E REALM_JAVA: 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      03-10 21:34:07.586 13996 14040 E REALM_JAVA: 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
      03-10 21:34:07.586 13996 14040 E REALM_JAVA: 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
      03-10 21:34:07.586 13996 14040 E REALM_JAVA: 	at java.lang.Thread.run(Thread.java:919)
      03-10 21:34:07.586 13996 14040 E REALM_JAVA:
      03-10 21:34:07.586 13996 14040 E REALM_JAVA: `CreateRealmRunnable` failed.
      03-10 21:34:07.697 13996 13996 D AndroidRuntime: Shutting down VM
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: FATAL EXCEPTION: main
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: Process: io.realm.example.bookshelf, PID: 13996
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: io.realm.exceptions.RealmException: Exception happens when initializing Realm in the background thread.
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at io.realm.BaseRealm$InstanceCallback.onError(BaseRealm.java:1058)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at io.realm.Realm$Callback.onError(Realm.java:2061)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at io.realm.RealmCache$CreateRealmRunnable$2.run(RealmCache.java:303)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:883)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:100)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:214)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:7356)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: Caused by: java.lang.IllegalArgumentException: Illegal Argument: Subscription could not be added because it already existed
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at io.realm.internal.objectstore.OsMutableSubscriptionSet.nativeInsertOrAssign(Native Method)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at io.realm.internal.objectstore.OsMutableSubscriptionSet.addSubscription(OsMutableSubscriptionSet.java:49)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at io.realm.internal.objectstore.OsMutableSubscriptionSet.add(OsMutableSubscriptionSet.java:38)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at io.realm.example.bookshelf.RealmDatabase.init$lambda-1$lambda-0(RealmDatabase.kt:89)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at io.realm.example.bookshelf.RealmDatabase.$r8$lambda$pPIJyIDfcis7MGgVcDWegtLQiQA(Unknown Source:0)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at io.realm.example.bookshelf.RealmDatabase$$ExternalSyntheticLambda1.configure(Unknown Source:0)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at io.realm.internal.SyncObjectServerFacade$1.update(SyncObjectServerFacade.java:304)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at io.realm.internal.objectstore.OsSubscriptionSet.update(OsSubscriptionSet.java:178)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at io.realm.internal.SyncObjectServerFacade.downloadInitialFlexibleSyncData(SyncObjectServerFacade.java:301)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at io.realm.RealmCache.doCreateRealmOrGetFromCache(RealmCache.java:473)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at io.realm.RealmCache.createRealmOrGetFromCache(RealmCache.java:422)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at io.realm.RealmCache$CreateRealmRunnable.run(RealmCache.java:249)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at io.realm.internal.async.BgPriorityRunnable.run(BgPriorityRunnable.java:34)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
      03-10 21:34:07.699 13996 13996 E AndroidRuntime: 	at java.lang.Thread.run(Thread.java:919)
      03-10 21:34:07.699 13159 13159 I GoogleInputMethodService: GoogleInputMethodService.onFinishInput():3210
      03-10 21:34:07.700 13996 14036 I OpenGLRenderer: Davey! duration=1023ms; Flags=0, IntendedVsync=155469373454252, Vsync=155470140120888, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=155470149052428, AnimationStart=155470149109428, PerformTraversalsStart=155470357014428, DrawStart=155470382723428, SyncQueued=155470390499428, SyncStart=155470390777428, IssueDrawCommandsStart=155470390847428, SwapBuffers=155470391936428, FrameCompleted=155470397143428, DequeueBufferDur
      

      Can you reproduce the bug?

      Yes, always

      Reproduction Steps

      No response

      Version

      10.10.1

      What SDK flavour are you using?

      MongoDB Realm (i.e. Sync, auth, functions)

      Are you using encryption?

      No, not using encryption

      Platform OS and version(s)

      Android API29 x86_64

      Build environment

      No response

            Assignee:
            Unassigned Unassigned
            Reporter:
            nabil.hachicha@mongodb.com Nabil Hachicha
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: