You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2018/10/12 07:34:35 UTC

[isis] 02/02: ISIS-1974: reinstates building metamodel in parallel; adds new configuration property to enable/disable

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 1e723393c9b3b86ff5e9d460f1f87f32b8653fce
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Oct 12 08:34:06 2018 +0100

    ISIS-1974: reinstates building metamodel in parallel; adds new configuration property to enable/disable
---
 .../guides/rgcfg/_rgcfg_configuring-core.adoc      | 25 ++++++++++++++++++++++
 ...adoc => _migration-notes_1.16.0-to-1.17.0.adoc} | 18 +++++-----------
 .../asciidoc/migration-notes/migration-notes.adoc  |  1 +
 .../release-notes/_release-notes_1.17.0.adoc       | 10 +++++++++
 .../main/asciidoc/release-notes/release-notes.adoc |  9 ++++++++
 .../metamodel/specloader/SpecificationLoader.java  | 12 ++++++++++-
 6 files changed, 61 insertions(+), 14 deletions(-)

diff --git a/adocs/documentation/src/main/asciidoc/guides/rgcfg/_rgcfg_configuring-core.adoc b/adocs/documentation/src/main/asciidoc/guides/rgcfg/_rgcfg_configuring-core.adoc
index f4fadc3..f0e05d0 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgcfg/_rgcfg_configuring-core.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgcfg/_rgcfg_configuring-core.adoc
@@ -291,6 +291,31 @@ If the setting is changed to disabled then this may reduce application start-up
 
 
 
+[[__rgcfg_configuring-core_metamodel-introspection]]
+== MetaModel Introspection
+
+
+.Metamodel Introspection
+[cols="2a,1,3a", options="header"]
+|===
+|Property
+|Value +
+(default value)
+|Description
+
+|`isis.reflector.introspect.` +
+`parallelize`
+|`true`,`false` +
+(`true`)
+|Whether to build the metamodel in parallel (with multiple threads) or in serial (using a single thread).
+
+In general, parallelisation should result in faster bootstrap times.
+
+
+|===
+
+
+
 [[__rgcfg_configuring-core_metamodel-validation]]
 == MetaModel Validation
 
diff --git a/adocs/documentation/src/main/asciidoc/migration-notes/migration-notes.adoc b/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-1.17.0.adoc
similarity index 52%
copy from adocs/documentation/src/main/asciidoc/migration-notes/migration-notes.adoc
copy to adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-1.17.0.adoc
index 1e38b3a..70d788a 100644
--- a/adocs/documentation/src/main/asciidoc/migration-notes/migration-notes.adoc
+++ b/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-1.17.0.adoc
@@ -1,22 +1,14 @@
-[[migration-notes]]
-= Migration Notes
+[[_migration-notes_1.16.0-to-1.17.0]]
+= From v1.16.x to 1.17.0
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 :_basedir: ../
 :_imagesdir: images/
 
 
 
-Consult these notes when migrating to new versions of the framework.
 
+TODO
 
+* parallelized introspection
+* new `MetaModelService#exportMetaModel(Config)`
 
-include::_migration-notes_1.15.0-to-1.16.0.adoc[leveloffset=+1]
-include::_migration-notes_1.14.0-to-1.15.0.adoc[leveloffset=+1]
-include::_migration-notes_1.13.0-to-1.14.0.adoc[leveloffset=+1]
-include::_migration-notes_1.12.0-to-1.13.0.adoc[leveloffset=+1]
-include::_migration-notes_1.11.0-to-1.12.0.adoc[leveloffset=+1]
-include::_migration-notes_1.10.0-to-1.11.0.adoc[leveloffset=+1]
-include::_migration-notes_1.9.0-to-1.10.0.adoc[leveloffset=+1]
-include::_migration-notes_1.8.0-to-1.9.0.adoc[leveloffset=+1]
-include::_migration-notes_1.7.0-to-1.8.0.adoc[leveloffset=+1]
-include::_migration-notes_1.6.0-to-1.7.0.adoc[leveloffset=+1]
diff --git a/adocs/documentation/src/main/asciidoc/migration-notes/migration-notes.adoc b/adocs/documentation/src/main/asciidoc/migration-notes/migration-notes.adoc
index 1e38b3a..ff93b86 100644
--- a/adocs/documentation/src/main/asciidoc/migration-notes/migration-notes.adoc
+++ b/adocs/documentation/src/main/asciidoc/migration-notes/migration-notes.adoc
@@ -10,6 +10,7 @@ Consult these notes when migrating to new versions of the framework.
 
 
 
+include::_migration-notes_1.16.0-to-1.17.0.adoc[leveloffset=+1]
 include::_migration-notes_1.15.0-to-1.16.0.adoc[leveloffset=+1]
 include::_migration-notes_1.14.0-to-1.15.0.adoc[leveloffset=+1]
 include::_migration-notes_1.13.0-to-1.14.0.adoc[leveloffset=+1]
diff --git a/adocs/documentation/src/main/asciidoc/release-notes/_release-notes_1.17.0.adoc b/adocs/documentation/src/main/asciidoc/release-notes/_release-notes_1.17.0.adoc
new file mode 100644
index 0000000..d91e862
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/release-notes/_release-notes_1.17.0.adoc
@@ -0,0 +1,10 @@
+[[_release-notes_1.17.0]]
+= 1.17.0
+:notice: licensed to the apache software foundation (asf) under one or more contributor license agreements. see the notice file distributed with this work for additional information regarding copyright ownership. the asf licenses this file to you under the apache license, version 2.0 (the "license"); you may not use this file except in compliance with the license. you may obtain a copy of the license at. http://www.apache.org/licenses/license-2.0 . unless required by applicable law or ag [...]
+:_basedir: ../
+:_imagesdir: images/
+:toc: right
+
+
+This release ...
+
diff --git a/adocs/documentation/src/main/asciidoc/release-notes/release-notes.adoc b/adocs/documentation/src/main/asciidoc/release-notes/release-notes.adoc
index 9766c86..e916674 100644
--- a/adocs/documentation/src/main/asciidoc/release-notes/release-notes.adoc
+++ b/adocs/documentation/src/main/asciidoc/release-notes/release-notes.adoc
@@ -21,6 +21,14 @@ This table summarises all releases of Apache Isis to date.
 | Bugs
 | JIRA relnotes
 
+| xref:release-notes.adoc#_release-notes_1.17.0[1.17.0]
+| dd-mm-yyyy
+| TODO
+|
+|
+|
+| TODO
+
 | xref:release-notes.adoc#_release-notes_1.16.2[1.16.2]
 | 05-03-2018
 | RO viewer support, performance improvement, fix of severe bug for parented checkboxes
@@ -321,6 +329,7 @@ This table summarises all releases of Apache Isis to date.
 
 
 
+include::_release-notes_1.17.0.adoc[leveloffset=+1]
 include::_release-notes_1.16.2.adoc[leveloffset=+1]
 include::_release-notes_1.16.1.adoc[leveloffset=+1]
 include::_release-notes_1.16.0.adoc[leveloffset=+1]
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
index 2ce4dbc..fefa1ab 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
@@ -91,6 +91,9 @@ public class SpecificationLoader implements ApplicationScopedComponent {
 
     private final static Logger LOG = LoggerFactory.getLogger(SpecificationLoader.class);
 
+    public static final String INTROSPECTOR_PARALLELIZE_KEY = "isis.reflector.introspector.parallelize";
+    public static final boolean INTROSPECTOR_PARALLELIZE_DEFAULT = true;
+
     //region > constructor, fields
     private final ClassSubstitutor classSubstitutor = new ClassSubstitutor();
 
@@ -242,7 +245,14 @@ public class SpecificationLoader implements ApplicationScopedComponent {
             callables.add(callable);
         }
         ThreadPoolSupport threadPoolSupport = ThreadPoolSupport.getInstance();
-        List<Future<Object>> futures = threadPoolSupport.invokeAllSequential(callables);
+        final boolean parallelize =
+                configuration.getBoolean(INTROSPECTOR_PARALLELIZE_KEY, INTROSPECTOR_PARALLELIZE_DEFAULT);
+        List<Future<Object>> futures;
+        if(parallelize) {
+            futures = threadPoolSupport.invokeAll(callables);
+        } else {
+            futures = threadPoolSupport.invokeAllSequential(callables);
+        }
         threadPoolSupport.joinGatherFailures(futures);