mbari-org / vars-annotation

Video Annotation Application for MBARI's Media Management (M3) software stack
https://docs.mbari.org/vars-annotation/
Apache License 2.0
16 stars 6 forks source link

Invalld localizations are throwing exceptions. Might cause redraw issues. #139

Closed hohonuuli closed 2 months ago

hohonuuli commented 1 year ago

The video lab is seeing incomplete redraws of the tableview:

Screen Shot 2022-11-28 at 12 15 30 PM

I'm looking through the log for that to see if any exceptions are occurring. Here's one about the time Kyra reported the issue:

20:18:28 [pool-58-thread-1] ERROR org.mbari.vars.ui.App - Exception in thread [pool-58-thread-1]
java.lang.IllegalArgumentException: A localization requires an elapsedtime. Null was found
    at vcr4j.sharktopoda.client@4.4.1.jre11-SNAPSHOT/org.mbari.vcr4j.sharktopoda.client.localization.Preconditions.require(Preconditions.java:13)
    at vcr4j.sharktopoda.client@4.4.1.jre11-SNAPSHOT/org.mbari.vcr4j.sharktopoda.client.localization.LocalizationController.validateLocalizationForAdd(LocalizationController.java:137)
    at java.base/java.lang.Iterable.forEach(Iterable.java:75)
    at vcr4j.sharktopoda.client@4.4.1.jre11-SNAPSHOT/org.mbari.vcr4j.sharktopoda.client.localization.LocalizationController.addLocalizations(LocalizationController.java:124)
    at vcr4j.sharktopoda.client@4.4.1.jre11-SNAPSHOT/org.mbari.vcr4j.sharktopoda.client.localization.LocalizationController.addLocalization(LocalizationController.java:120)
    at org.mbari.vars.ui/org.mbari.vars.ui.mediaplayers.sharktopoda.localization.DataSyncController.addAnnotation(DataSyncController.java:119)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
    at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
    at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
    at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
    at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1921)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
    at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
    at org.mbari.vars.ui/org.mbari.vars.ui.mediaplayers.sharktopoda.localization.DataSyncController.handleAddAnnotations(DataSyncController.java:106)
    at org.mbari.vars.ui/org.mbari.vars.ui.mediaplayers.sharktopoda.localization.DataSyncController.lambda$init$1(DataSyncController.java:53)
    at javafx.base@19/com.sun.javafx.collections.ListListenerHelper$Generic.fireValueChangedEvent(ListListenerHelper.java:329)
    at javafx.base@19/com.sun.javafx.collections.ListListenerHelper.fireValueChangedEvent(ListListenerHelper.java:73)
    at javafx.base@19/javafx.collections.ObservableListBase.fireChange(ObservableListBase.java:239)
    at javafx.base@19/javafx.collections.ListChangeBuilder.commit(ListChangeBuilder.java:482)
    at javafx.base@19/javafx.collections.ListChangeBuilder.endChange(ListChangeBuilder.java:541)
    at javafx.base@19/javafx.collections.ObservableListBase.endChange(ObservableListBase.java:211)
    at javafx.base@19/javafx.collections.ModifiableObservableListBase.addAll(ModifiableObservableListBase.java:109)
    at org.mbari.vars.ui/org.mbari.vars.ui.AppController.lambda$initialize$1(AppController.java:83)
    at vars.annotation.merged.module@1.4.0/io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:63)
    at vars.annotation.merged.module@1.4.0/io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)
    at vars.annotation.merged.module@1.4.0/io.reactivex.internal.operators.observable.ObservableFilter$FilterObserver.onNext(ObservableFilter.java:52)
    at vars.annotation.merged.module@1.4.0/io.reactivex.subjects.PublishSubject$PublishDisposable.onNext(PublishSubject.java:308)
    at vars.annotation.merged.module@1.4.0/io.reactivex.subjects.PublishSubject.onNext(PublishSubject.java:228)
    at vars.annotation.merged.module@1.4.0/io.reactivex.subjects.SerializedSubject.onNext(SerializedSubject.java:104)
    at org.mbari.vars.core/org.mbari.vars.core.EventBus.send(EventBus.java:18)
    at org.mbari.vars.ui/org.mbari.vars.ui.services.ConcurrentAnnotationDecorator.doNext(ConcurrentAnnotationDecorator.java:121)
    at org.mbari.vars.ui/org.mbari.vars.ui.services.ConcurrentAnnotationDecorator.lambda$loadAnnotations$3(ConcurrentAnnotationDecorator.java:114)
    at vars.annotation.merged.module@1.4.0/io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:63)
    at vars.annotation.merged.module@1.4.0/io.reactivex.subjects.PublishSubject$PublishDisposable.onNext(PublishSubject.java:308)
    at vars.annotation.merged.module@1.4.0/io.reactivex.subjects.PublishSubject.onNext(PublishSubject.java:228)
    at vars.annotation.merged.module@1.4.0/io.reactivex.subjects.SerializedSubject.onNext(SerializedSubject.java:104)
    at vars.annotation.merged.module@1.4.0/io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:63)
    at vars.annotation.merged.module@1.4.0/io.reactivex.internal.operators.observable.ObservableScalarXMap$ScalarDisposable.run(ObservableScalarXMap.java:248)
    at vars.annotation.merged.module@1.4.0/io.reactivex.internal.operators.observable.ObservableJust.subscribeActual(ObservableJust.java:35)
    at vars.annotation.merged.module@1.4.0/io.reactivex.Observable.subscribe(Observable.java:12284)
    at vars.annotation.merged.module@1.4.0/io.reactivex.internal.operators.observable.ObservableDefer.subscribeActual(ObservableDefer.java:40)
    at vars.annotation.merged.module@1.4.0/io.reactivex.Observable.subscribe(Observable.java:12284)
    at vars.annotation.merged.module@1.4.0/io.reactivex.Observable.subscribe(Observable.java:12270)
    at vars.annotation.merged.module@1.4.0/io.reactivex.Observable.subscribe(Observable.java:12229)
    at org.mbari.vars.services/org.mbari.vars.services.RequestPager$Runner.lambda$execute$0(RequestPager.java:98)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1589)
hohonuuli commented 1 year ago

Fix is to wrap this error in try/catch:

at org.mbari.vars.ui/org.mbari.vars.ui.mediaplayers.sharktopoda.localization.DataSyncController.addAnnotation(DataSyncController.java:119)
lonnylundsten commented 2 months ago

@hohonuuli Looks like this was fixed?