AtomicReference<IOException> problem = new AtomicReference<>();
Collection<GraphBundle> gbundles = Arrays.stream(getBundles())
- .parallel()
+ // #7806: Due to databoard Binding/Serializer construction process thread-unsafety
+ // not even the DataContainer.readHeader invocations can run in parallel, most likely
+ // due to recurring serializer construction for Variant datatypes.
+ // Therefore, we must disable parallel loading for now.
+ //.parallel()
.map(b -> {
try {
return problem.get() == null ? getGraph(b) : null;
private static GraphBundleEx tryGetOnDemandGraph(Bundle bundle, URL url) throws IOException {
try {
Integer cachedHash = readCachedHash(url);
- System.out.println("Read cached hashcode from " + bundle + ": " + cachedHash);
if (cachedHash == null)
-// if (true)
return null;
Supplier<TransferableGraph1> graphSource = () -> {
throw new IOException("Problem loading graph.tg from bundle " + bundle.getSymbolicName(), e);
}
}
+
+ private static FormatHandler<TransferableGraph1> FORMAT_HANDLER = new FormatHandler<TransferableGraph1>() {
+ @Override
+ public Binding getBinding() {
+ return TransferableGraph1.BINDING;
+ }
+ @Override
+ public TransferableGraph1 process(DataContainer container) throws Exception {
+ return (TransferableGraph1) container.content.getValue(TransferableGraph1.BINDING);
+ }
+ };
@SuppressWarnings("unchecked")
private static Map<String, FormatHandler<TransferableGraph1>> handlers = ArrayMap.make(
new String[] {
- "graph:1"
+ "graph:1",
+ "sharedLibrary:1"
},
- new FormatHandler<TransferableGraph1>() {
- @Override
- public Binding getBinding() {
- return TransferableGraph1.BINDING;
- }
- @Override
- public TransferableGraph1 process(DataContainer container) throws Exception {
- return (TransferableGraph1) container.content.getValue(TransferableGraph1.BINDING);
- }
- });
+ FORMAT_HANDLER,
+ FORMAT_HANDLER);
private static TransferableGraph1 readTG(InputStream is) throws Exception {
// For an unknown reason this is totally broken when running the TestSCLOsgi