Project

General

Profile

Actions

bug #5691

closed

Referencing objects view makes editor inresponsive if an object references many objects

Added by Andreas Müller about 8 years ago. Updated about 7 years ago.

Status:
Closed
Priority:
Highest
Assignee:
Category:
taxeditor
Target version:
Start date:
Due date:
% Done:

100%

Estimated time:
8:00 h
Severity:
major
Found in Version:

Description

If the referencing objects view is switched on and an object gets the focus which is referenced very often (e.g. secundum references or Linné/L.) the TaxEditor does not react anymore but shows an hourglass instead.

This should not happen as the referencing objects view should run in a separate thread not influencing the performance of the editor.

For very large sets the Editor may even crash.


Related issues

Precedes EDIT - bug #6418: Status line does not update after completing the update of the referencing objects viewWorksformeKatja Luther

Actions
Actions #1

Updated by Andreas Müller over 7 years ago

  • Description updated (diff)
  • Priority changed from New to Highest
Actions #2

Updated by Andreas Müller over 7 years ago

Maybe the problem is the label provider which initializes lazy objects. Which thread does it use?

Actions #3

Updated by Andreas Müller over 7 years ago

  • Target version changed from Unassigned CDM tickets to Release 4.4
  • Estimated time set to 8:00 h

Or even better solution, use DTOs on server side.

Actions #4

Updated by Andreas Müller over 7 years ago

  • Target version changed from Release 4.4 to Release 4.5
Actions #5

Updated by Andreas Müller about 7 years ago

  • Target version changed from Release 4.5 to Release 4.6
Actions #6

Updated by Katja Luther about 7 years ago

  • Status changed from New to Resolved
  • Assignee changed from Katja Luther to Andreas Müller

The problem of unresponsible editor is solved but the status line keeps the message "Updating referencing objects view...", this needs to be solved.
@AM could you please review the main topic of this ticket, I will create a new ticket for the status line subject.

Actions #7

Updated by Katja Luther about 7 years ago

  • Precedes bug #6418: Status line does not update after completing the update of the referencing objects view added
Actions #8

Updated by Andreas Müller about 7 years ago

  • Status changed from Resolved to Feedback
  • Assignee changed from Andreas Müller to Katja Luther

I got an "Invalid thread access" exception when testing it for reference "The International Plant Names Index (2012)..." on edit_test/rem_conf_am (for some reason the log does not show the server information - maybe also a bug?).
Second time it worked.

login : 
editor version : 4.6.0.201702161652
server :  ()
schema version : 
os : Windows Server 2012 R2 6.3 amd64
java : 1.8.0_121
org.eclipse.swt.SWTException: Invalid thread access
    at org.eclipse.swt.SWT.error(SWT.java:4282)
    at org.eclipse.swt.SWT.error(SWT.java:4197)
    at org.eclipse.swt.SWT.error(SWT.java:4168)
    at org.eclipse.swt.widgets.Widget.error(Widget.java:468)
    at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:359)
    at org.eclipse.swt.widgets.Widget.getData(Widget.java:525)
    at org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder.getTab(DefaultTabFolder.java:186)
    at org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder.getItems(DefaultTabFolder.java:238)
    at org.eclipse.ui.internal.presentations.util.AbstractTabFolder.findItem(AbstractTabFolder.java:171)
    at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.getTab(PresentablePartFolder.java:375)
    at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.childPropertyChanged(PresentablePartFolder.java:304)
    at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.access$2(PresentablePartFolder.java:303)
    at org.eclipse.ui.internal.presentations.util.PresentablePartFolder$3.propertyChanged(PresentablePartFolder.java:83)
    at org.eclipse.ui.internal.presentations.PresentablePart.firePropertyChange(PresentablePart.java:137)
    at org.eclipse.ui.internal.presentations.PresentablePart$1.propertyChanged(PresentablePart.java:97)
    at org.eclipse.ui.internal.PartPane.firePropertyChange(PartPane.java:620)
    at org.eclipse.ui.internal.PartPane.propertyChanged(PartPane.java:625)
    at org.eclipse.ui.internal.WorkbenchPartReference.immediateFirePropertyChange(WorkbenchPartReference.java:571)
    at org.eclipse.ui.internal.WorkbenchPartReference.firePropertyChange(WorkbenchPartReference.java:564)
    at org.eclipse.ui.internal.WorkbenchPartReference.deferEvents(WorkbenchPartReference.java:219)
    at org.eclipse.ui.internal.WorkbenchPartReference.refreshFromPart(WorkbenchPartReference.java:328)
    at org.eclipse.ui.internal.WorkbenchPartReference.partPropertyChanged(WorkbenchPartReference.java:296)
    at org.eclipse.ui.internal.WorkbenchPartReference$2.propertyChanged(WorkbenchPartReference.java:181)
    at org.eclipse.ui.part.WorkbenchPart.firePropertyChange(WorkbenchPart.java:129)
    at org.eclipse.ui.part.WorkbenchPart.internalSetContentDescription(WorkbenchPart.java:451)
    at org.eclipse.ui.part.WorkbenchPart.setContentDescription(WorkbenchPart.java:437)
    at org.eclipse.ui.part.ViewPart.setContentDescription(ViewPart.java:154)
    at eu.etaxonomy.taxeditor.bulkeditor.referencingobjects.ReferencingObjectsView.getReferencingObjects(ReferencingObjectsView.java:336)
    at eu.etaxonomy.taxeditor.bulkeditor.referencingobjects.ReferencingObjectsView.access$3(ReferencingObjectsView.java:273)
    at eu.etaxonomy.taxeditor.bulkeditor.referencingobjects.ReferencingObjectsView$2.run(ReferencingObjectsView.java:214)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Actions #9

Updated by Andreas Müller about 7 years ago

when canceling the job it looks like it sometimes still shows the old records (for an old selection) this may be misleading. We should always empty the view (best before the job starts to make immediately clear that the selection has changed and the view does not represent the selections referencing objects anymore.

Also when the job is canceled we should somehow note that it was canceled and if any records are shown they may not be complete. By the way it would be nice to have a count saying how many records are there in total. Something like "xxx is referenced 3454 times:" (maybe a new ticket? But cdmlib functionality already exists for this I think)

Actions #10

Updated by Andreas Müller about 7 years ago

The above exceptions appears often though not 100% reproducable.

Also when a new object is selected the dialog does not immediately go away, though the ref objects view response quite fast.

Actions #11

Updated by Katja Luther about 7 years ago

moved the setting of the description to its own thread to avoid the "Invalid thread access" exception. And clear right after the selection changed.

Actions #12

Updated by Andreas Müller about 7 years ago

Invalid thread access still exists. Happened when editing specimen data in specimen editor.

login : 
editor version : 4.6.0.201702272351
server :  ()
schema version : 
os : Windows Server 2012 R2 6.3 amd64
java : 1.8.0_121
org.eclipse.swt.SWTException: Invalid thread access
    at org.eclipse.swt.SWT.error(SWT.java:4282)
    at org.eclipse.swt.SWT.error(SWT.java:4197)
    at org.eclipse.swt.SWT.error(SWT.java:4168)
    at org.eclipse.swt.widgets.Widget.error(Widget.java:468)
    at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:359)
    at org.eclipse.swt.widgets.Widget.getData(Widget.java:525)
    at org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder.getTab(DefaultTabFolder.java:186)
    at org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder.getItems(DefaultTabFolder.java:238)
    at org.eclipse.ui.internal.presentations.util.AbstractTabFolder.findItem(AbstractTabFolder.java:171)
    at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.getTab(PresentablePartFolder.java:375)
    at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.childPropertyChanged(PresentablePartFolder.java:304)
    at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.access$2(PresentablePartFolder.java:303)
    at org.eclipse.ui.internal.presentations.util.PresentablePartFolder$3.propertyChanged(PresentablePartFolder.java:83)
    at org.eclipse.ui.internal.presentations.PresentablePart.firePropertyChange(PresentablePart.java:137)
    at org.eclipse.ui.internal.presentations.PresentablePart$1.propertyChanged(PresentablePart.java:97)
    at org.eclipse.ui.internal.PartPane.firePropertyChange(PartPane.java:620)
    at org.eclipse.ui.internal.PartPane.propertyChanged(PartPane.java:625)
    at org.eclipse.ui.internal.WorkbenchPartReference.immediateFirePropertyChange(WorkbenchPartReference.java:571)
    at org.eclipse.ui.internal.WorkbenchPartReference.firePropertyChange(WorkbenchPartReference.java:564)
    at org.eclipse.ui.internal.WorkbenchPartReference.deferEvents(WorkbenchPartReference.java:219)
    at org.eclipse.ui.internal.WorkbenchPartReference.refreshFromPart(WorkbenchPartReference.java:328)
    at org.eclipse.ui.internal.WorkbenchPartReference.partPropertyChanged(WorkbenchPartReference.java:296)
    at org.eclipse.ui.internal.WorkbenchPartReference$2.propertyChanged(WorkbenchPartReference.java:181)
    at org.eclipse.ui.part.WorkbenchPart.firePropertyChange(WorkbenchPart.java:129)
    at org.eclipse.ui.part.WorkbenchPart.setTitle(WorkbenchPart.java:311)
    at org.eclipse.ui.part.WorkbenchPart.setDefaultTitle(WorkbenchPart.java:404)
    at org.eclipse.ui.part.WorkbenchPart.setContentDescription(WorkbenchPart.java:439)
    at org.eclipse.ui.part.ViewPart.setContentDescription(ViewPart.java:154)
    at eu.etaxonomy.taxeditor.bulkeditor.referencingobjects.ReferencingObjectsView.getReferencingObjects(ReferencingObjectsView.java:336)
    at eu.etaxonomy.taxeditor.bulkeditor.referencingobjects.ReferencingObjectsView.access$3(ReferencingObjectsView.java:273)
    at eu.etaxonomy.taxeditor.bulkeditor.referencingobjects.ReferencingObjectsView$2.run(ReferencingObjectsView.java:214)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Actions #13

Updated by Katja Luther about 7 years ago

  • Status changed from Feedback to Resolved

please check whether the exception occurs again.

Actions #14

Updated by Katja Luther about 7 years ago

  • Assignee changed from Katja Luther to Andreas Müller
Actions #15

Updated by Andreas Müller about 7 years ago

Unfortunately it still exists. I opened my test database rem_conf_am on edit_test and opened taxon Abies testus nothosubsp. uppltj V.V.Petrovsky in classification Testklass after opening the view => there it immediately came.

login : 
editor version : 4.6.0.201703071052
server :  ()
schema version : 
os : Windows Server 2012 R2 6.3 amd64
java : 1.8.0_121
org.eclipse.swt.SWTException: Invalid thread access
    at org.eclipse.swt.SWT.error(SWT.java:4282)
    at org.eclipse.swt.SWT.error(SWT.java:4197)
    at org.eclipse.swt.SWT.error(SWT.java:4168)
    at org.eclipse.swt.widgets.Widget.error(Widget.java:468)
    at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:359)
    at org.eclipse.swt.widgets.Widget.getData(Widget.java:525)
    at org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder.getTab(DefaultTabFolder.java:186)
    at org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder.getItems(DefaultTabFolder.java:238)
    at org.eclipse.ui.internal.presentations.util.AbstractTabFolder.findItem(AbstractTabFolder.java:171)
    at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.getTab(PresentablePartFolder.java:375)
    at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.childPropertyChanged(PresentablePartFolder.java:304)
    at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.access$2(PresentablePartFolder.java:303)
    at org.eclipse.ui.internal.presentations.util.PresentablePartFolder$3.propertyChanged(PresentablePartFolder.java:83)
    at org.eclipse.ui.internal.presentations.PresentablePart.firePropertyChange(PresentablePart.java:137)
    at org.eclipse.ui.internal.presentations.PresentablePart$1.propertyChanged(PresentablePart.java:97)
    at org.eclipse.ui.internal.PartPane.firePropertyChange(PartPane.java:620)
    at org.eclipse.ui.internal.PartPane.propertyChanged(PartPane.java:625)
    at org.eclipse.ui.internal.WorkbenchPartReference.immediateFirePropertyChange(WorkbenchPartReference.java:571)
    at org.eclipse.ui.internal.WorkbenchPartReference.firePropertyChange(WorkbenchPartReference.java:564)
    at org.eclipse.ui.internal.WorkbenchPartReference.deferEvents(WorkbenchPartReference.java:219)
    at org.eclipse.ui.internal.WorkbenchPartReference.refreshFromPart(WorkbenchPartReference.java:328)
    at org.eclipse.ui.internal.WorkbenchPartReference.partPropertyChanged(WorkbenchPartReference.java:296)
    at org.eclipse.ui.internal.WorkbenchPartReference$2.propertyChanged(WorkbenchPartReference.java:181)
    at org.eclipse.ui.part.WorkbenchPart.firePropertyChange(WorkbenchPart.java:129)
    at org.eclipse.ui.part.WorkbenchPart.setTitle(WorkbenchPart.java:311)
    at org.eclipse.ui.part.WorkbenchPart.setDefaultTitle(WorkbenchPart.java:404)
    at org.eclipse.ui.part.WorkbenchPart.setContentDescription(WorkbenchPart.java:439)
    at org.eclipse.ui.part.ViewPart.setContentDescription(ViewPart.java:154)
    at eu.etaxonomy.taxeditor.bulkeditor.referencingobjects.ReferencingObjectsView.getReferencingObjects(ReferencingObjectsView.java:345)
    at eu.etaxonomy.taxeditor.bulkeditor.referencingobjects.ReferencingObjectsView.access$3(ReferencingObjectsView.java:282)
    at eu.etaxonomy.taxeditor.bulkeditor.referencingobjects.ReferencingObjectsView$2.run(ReferencingObjectsView.java:223)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Actions #16

Updated by Andreas Müller about 7 years ago

  • Status changed from Resolved to Feedback
  • Assignee changed from Andreas Müller to Katja Luther
Actions #17

Updated by Katja Luther about 7 years ago

  • Status changed from Feedback to Resolved
  • Assignee changed from Katja Luther to Andreas Müller

with the last commits it should work now

Actions #18

Updated by Andreas Müller about 7 years ago

  • Status changed from Resolved to Closed
  • Assignee changed from Andreas Müller to Katja Luther

Yes we close this ticket now, the View really works MUCH better now.
Anyway, could you still adapt the label provider to never return null,

Actions #19

Updated by Andreas Müller about 7 years ago

  • % Done changed from 0 to 100
  • Private changed from Yes to No
Actions

Also available in: Atom PDF