[ 
https://issues.apache.org/jira/browse/MBUILDCACHE-103?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17876898#comment-17876898
 ] 

ASF GitHub Bot commented on MBUILDCACHE-103:
--------------------------------------------

AlexanderAshitkin commented on code in PR #177:
URL: 
https://github.com/apache/maven-build-cache-extension/pull/177#discussion_r1732057978


##########
src/main/java/org/apache/maven/buildcache/BuildCacheMojosExecutionStrategy.java:
##########
@@ -267,6 +286,12 @@ private CacheRestorationStatus restoreProject(
                     // mojoExecutionScope.seed(
                     //        org.apache.maven.api.MojoExecution.class, new 
DefaultMojoExecution(cacheCandidate));
                     mojoExecutionRunner.run(cacheCandidate);
+                } else if 
(reconciliationExecutionMojos.contains(cacheCandidate)) {

Review Comment:
   I'm not convinced that this logic is valid. If you have build 1 with the 
plugins [(X, parameters PX1), (Y, parameters PX1)], with the flag on the new 
cached build might be a result of [(X, parameters PX2), (Y, parameters PY1)]. 
The issue here is that without tracking inputs/outputs, we can't guarantee that 
reusing PY1 is valid if the first plugin changed parameters. It's possible that 
it relies on outputs from the first plugin and could yield a different result 
without the cache. This logic seems flawed to me at the moment. It might lead 
to all sorts of corruptions inadvertently. it probably could run for certain 
plugins in presence of additional metadata, but not in a general case.
   
   This optimization could work for a leaf plugins (plugins which do not 
contribute and do not impact subsequent plugins) but that will require an 
additional plugin metadata





> Allow incremental restore in case of plugin parameter mismatch
> --------------------------------------------------------------
>
>                 Key: MBUILDCACHE-103
>                 URL: https://issues.apache.org/jira/browse/MBUILDCACHE-103
>             Project: Maven Build Cache Extension
>          Issue Type: Improvement
>            Reporter: Réda Housni Alaoui
>            Priority: Major
>              Labels: pull-request-available
>
> Property {{groups}} of {{maven-surefire-plugin}} allows to run a subset of 
> tests matching the property value. E.g. {{groups=foo}} will only execute 
> tests tagged with 'foo'.
> If I run a build with {{groups=foo}}, and if a cache entry exists for 
> {{groups=null}} (i.e. no test filter), I want the cache entry to be reused as 
> much as possible and the {{maven-surefire-plugin}} to be run on top of that.
> I think I need to specify that every non null value for groups should be 
> considered as a skip value.
> Following this, what I need is the ability to declare a reconcile entry in 
> xml config file looking like this:
> {code:xml}
> <cache>
>  <executionControl>
>     <reconcile>
>       <plugins>
>         <plugin artifactId="maven-surefire-plugin" goal="test">
>           <reconciles>
>             <reconcile propertyName="groups" skipValueRegex=".+"/>
>           </reconciles>
>         </plugin>
>       </plugins>
>     </reconcile>
>   </executionControl>
> </cache>
> {code}
> Could we introduce this {{skipValueRegex}} that would allow to match multiple 
> skip values and fix my issue?



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to