Details
-
Type: Bug
-
Status: Closed (View Workflow)
-
Priority: Major
-
Resolution: Done
-
Affects Version/s: None
-
Fix Version/s: 9.0.1 Minor Release
-
Labels:
-
Sprint:B - Summer 2018
Description
*We get an exception when starting IGB:*
22:47:33.486 ERROR c.a.i.p.IgbPreferencesLoadingOrchestrator - Index: 0, Size: 0
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source) ~[na:1.8.0_152]
at java.util.ArrayList.get(Unknown Source) ~[na:1.8.0_152]
at com.affymetrix.igb.general.DataProviderManager.getDataProviderById(DataProviderManager.java:287) ~[na:na]
at com.affymetrix.igb.general.DataProviderManager.initializeDataProvider(DataProviderManager.java:206) ~[na:na]
From a functional standpoint, everything is fine. The issue relates to how IGB initializes preferences using multiple threads. Some threads get ahead and is request information about a data provider that hasn't been loaded yet. It looked like the load and check processes are called multiple times, so the early times (things are not fully loaded) throw exceptions, but the later times everything is loaded and things end up working out.
If you run through start up in the debugger, you can demonstrate that there are moments when the list of data providers is partially loaded. But we never figured out where the root call was coming from to prevent the exceptions.
The exception was because of getDataProviderById() method of DataProviderManager file.
The method was trying to return 1st object from an empty list.
So adding the null condition before returning solved the issue.
Note: The preferences file in windows can be found by following the instructions below:
press : win+r -> type : reg.edit
List of registries open.
Navigate to this location or simply copy paste to find the preferences of IGB
Computer\HKEY_CURRENT_USER\Software\JavaSoft\Prefs\com\affymetrix\igb