This is an automated email from the ASF dual-hosted git repository. gnodet pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven-build-cache-extension.git
The following commit(s) were added to refs/heads/master by this push: new 78e6b06 [MBUILDCACHE-17] IllegalStateException: Cache is not initialized. Actual state: null (#9) 78e6b06 is described below commit 78e6b066251d000ce7aeff3a0a7c1a340327de54 Author: Guillaume Nodet <gno...@gmail.com> AuthorDate: Tue May 10 08:53:18 2022 +0200 [MBUILDCACHE-17] IllegalStateException: Cache is not initialized. Actual state: null (#9) --- .../maven/buildcache/xml/CacheConfigImpl.java | 122 +++++++++++---------- 1 file changed, 65 insertions(+), 57 deletions(-) diff --git a/src/main/java/org/apache/maven/buildcache/xml/CacheConfigImpl.java b/src/main/java/org/apache/maven/buildcache/xml/CacheConfigImpl.java index fcc5dd8..313cf58 100644 --- a/src/main/java/org/apache/maven/buildcache/xml/CacheConfigImpl.java +++ b/src/main/java/org/apache/maven/buildcache/xml/CacheConfigImpl.java @@ -92,7 +92,7 @@ public class CacheConfigImpl implements org.apache.maven.buildcache.xml.CacheCon private final XmlService xmlService; private final MavenSession session; - private CacheState state; + private volatile CacheState state; private CacheConfig cacheConfig; private HashFactory hashFactory; private List<Pattern> excludePatterns; @@ -110,69 +110,77 @@ public class CacheConfigImpl implements org.apache.maven.buildcache.xml.CacheCon { if ( state == null ) { - final String enabled = getProperty( CACHE_ENABLED_PROPERTY_NAME, "true" ); - if ( !Boolean.parseBoolean( enabled ) ) + synchronized ( this ) { - LOGGER.info( "Cache disabled by command line flag, project will be built fully and not cached" ); - state = CacheState.DISABLED; - } - else - { - Path configPath; - - String configPathText = getProperty( CONFIG_PATH_PROPERTY_NAME, null ); - if ( StringUtils.isNotBlank( configPathText ) ) + if ( state == null ) { - configPath = Paths.get( configPathText ); - } - else - { - configPath = getMultimoduleRoot( session ).resolve( ".mvn" ) - .resolve( "maven-build-cache-config.xml" ); - } - - if ( !Files.exists( configPath ) ) - { - LOGGER.info( "Cache configuration is not available at configured path {}, " - + "cache is enabled with defaults", configPath ); - cacheConfig = new CacheConfig(); - } - else - { - try + final String enabled = getProperty( CACHE_ENABLED_PROPERTY_NAME, "true" ); + if ( !Boolean.parseBoolean( enabled ) ) { - LOGGER.info( "Loading cache configuration from {}", configPath ); - cacheConfig = xmlService.loadCacheConfig( configPath.toFile() ); - fillWithDefaults( cacheConfig ); + LOGGER.info( + "Cache disabled by command line flag, project will be built fully and not cached" ); + state = CacheState.DISABLED; } - catch ( Exception e ) + else { - throw new IllegalArgumentException( - "Cannot initialize cache because xml config is not valid or not available", e ); - } - } - fillWithDefaults( cacheConfig ); + Path configPath; + + String configPathText = getProperty( CONFIG_PATH_PROPERTY_NAME, null ); + if ( StringUtils.isNotBlank( configPathText ) ) + { + configPath = Paths.get( configPathText ); + } + else + { + configPath = getMultimoduleRoot( session ).resolve( ".mvn" ) + .resolve( "maven-build-cache-config.xml" ); + } + + if ( !Files.exists( configPath ) ) + { + LOGGER.info( "Cache configuration is not available at configured path {}, " + + "cache is enabled with defaults", configPath ); + cacheConfig = new CacheConfig(); + } + else + { + try + { + LOGGER.info( "Loading cache configuration from {}", configPath ); + cacheConfig = xmlService.loadCacheConfig( configPath.toFile() ); + fillWithDefaults( cacheConfig ); + } + catch ( Exception e ) + { + throw new IllegalArgumentException( + "Cannot initialize cache because xml config is not valid or not available", e ); + } + } + fillWithDefaults( cacheConfig ); - if ( !cacheConfig.getConfiguration().isEnabled() ) - { - state = CacheState.DISABLED; - } - else - { - String hashAlgorithm = null; - try - { - hashAlgorithm = getConfiguration().getHashAlgorithm(); - hashFactory = HashFactory.of( hashAlgorithm ); - LOGGER.info( "Using {} hash algorithm for cache", hashAlgorithm ); + if ( !cacheConfig.getConfiguration().isEnabled() ) + { + state = CacheState.DISABLED; + } + else + { + String hashAlgorithm = null; + try + { + hashAlgorithm = getConfiguration().getHashAlgorithm(); + hashFactory = HashFactory.of( hashAlgorithm ); + LOGGER.info( "Using {} hash algorithm for cache", hashAlgorithm ); + } + catch ( Exception e ) + { + throw new IllegalArgumentException( "Unsupported hashing algorithm: " + hashAlgorithm, + e ); + } + + excludePatterns = compileExcludePatterns(); + state = CacheState.INITIALIZED; + } } - catch ( Exception e ) - { - throw new IllegalArgumentException( "Unsupported hashing algorithm: " + hashAlgorithm, e ); - } - - excludePatterns = compileExcludePatterns(); - state = CacheState.INITIALIZED; } } }