From 9f76e5721bbdfa9ae0d72b3d311402fecc0c4988 Mon Sep 17 00:00:00 2001 From: yma Date: Fri, 7 Feb 2025 13:57:06 +0800 Subject: [PATCH 1/2] Add Proxy Site cache support for squid proxy delivery --- .../galley/proxy/NoOpProxySitesCache.java | 59 +++++++++++++++++++ .../galley/spi/proxy/ProxySitesCache.java | 32 ++++++++++ .../galley/embed/EmbeddableCDIProducer.java | 12 ++++ .../transport/htcli/HttpClientTransport.java | 13 ++-- .../htcli/internal/AbstractHttpJob.java | 28 ++++++--- .../htcli/internal/HttpDownload.java | 21 +++++-- .../htcli/internal/HttpExistence.java | 16 +++-- .../transport/htcli/internal/HttpListing.java | 33 +++++++---- .../transport/htcli/internal/HttpPublish.java | 11 ++-- 9 files changed, 184 insertions(+), 41 deletions(-) create mode 100644 api/src/main/java/org/commonjava/maven/galley/proxy/NoOpProxySitesCache.java create mode 100644 api/src/main/java/org/commonjava/maven/galley/spi/proxy/ProxySitesCache.java diff --git a/api/src/main/java/org/commonjava/maven/galley/proxy/NoOpProxySitesCache.java b/api/src/main/java/org/commonjava/maven/galley/proxy/NoOpProxySitesCache.java new file mode 100644 index 000000000..f7a881a75 --- /dev/null +++ b/api/src/main/java/org/commonjava/maven/galley/proxy/NoOpProxySitesCache.java @@ -0,0 +1,59 @@ +/** + * Copyright (C) 2013 Red Hat, Inc. (https://github.com/Commonjava/galley) + * + * Licensed 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 agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.commonjava.maven.galley.proxy; + +import org.commonjava.maven.galley.spi.proxy.ProxySitesCache; + +import javax.enterprise.inject.Alternative; +import javax.inject.Named; +import java.util.Collections; +import java.util.Set; + +@Named +@Alternative +public class NoOpProxySitesCache + implements ProxySitesCache +{ + @Override + public Set getProxySites() + { + return Collections.emptySet(); + } + + @Override + public boolean isProxySite( String site ) + { + return false; + } + + @Override + public void saveProxySite( String site ) + { + + } + + @Override + public void deleteProxySite( String site ) + { + + } + + @Override + public void deleteAllProxySites() + { + + } +} diff --git a/api/src/main/java/org/commonjava/maven/galley/spi/proxy/ProxySitesCache.java b/api/src/main/java/org/commonjava/maven/galley/spi/proxy/ProxySitesCache.java new file mode 100644 index 000000000..8f043b937 --- /dev/null +++ b/api/src/main/java/org/commonjava/maven/galley/spi/proxy/ProxySitesCache.java @@ -0,0 +1,32 @@ +/** + * Copyright (C) 2013 Red Hat, Inc. (https://github.com/Commonjava/galley) + * + * Licensed 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 agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.commonjava.maven.galley.spi.proxy; + +import java.util.Set; + +public interface ProxySitesCache +{ + Set getProxySites(); + + boolean isProxySite( String site ); + + void saveProxySite( String site ); + + void deleteProxySite( String site ); + + void deleteAllProxySites(); + +} diff --git a/cdi-embedder/src/main/java/org/commonjava/maven/galley/embed/EmbeddableCDIProducer.java b/cdi-embedder/src/main/java/org/commonjava/maven/galley/embed/EmbeddableCDIProducer.java index 39eee109c..5b59a503e 100644 --- a/cdi-embedder/src/main/java/org/commonjava/maven/galley/embed/EmbeddableCDIProducer.java +++ b/cdi-embedder/src/main/java/org/commonjava/maven/galley/embed/EmbeddableCDIProducer.java @@ -29,11 +29,13 @@ import org.commonjava.maven.galley.maven.spi.defaults.MavenPluginDefaults; import org.commonjava.maven.galley.maven.spi.defaults.MavenPluginImplications; import org.commonjava.maven.galley.nfc.MemoryNotFoundCache; +import org.commonjava.maven.galley.proxy.NoOpProxySitesCache; import org.commonjava.maven.galley.spi.auth.PasswordManager; import org.commonjava.maven.galley.spi.event.FileEventManager; import org.commonjava.maven.galley.spi.io.PathGenerator; import org.commonjava.maven.galley.spi.io.TransferDecorator; import org.commonjava.maven.galley.spi.nfc.NotFoundCache; +import org.commonjava.maven.galley.spi.proxy.ProxySitesCache; import org.commonjava.maven.galley.spi.transport.TransportManager; import org.commonjava.maven.galley.transport.htcli.Http; import org.commonjava.maven.galley.transport.htcli.HttpImpl; @@ -59,6 +61,8 @@ public class EmbeddableCDIProducer private NotFoundCache nfc; + private ProxySitesCache proxySitesCache; + private ObjectMapper objectMapper; private Http http; @@ -86,6 +90,7 @@ public void postConstruct() transferDecorator = new NoOpTransferDecorator(); pathGenerator = new HashedLocationPathGenerator(); nfc = new MemoryNotFoundCache(); + proxySitesCache = new NoOpProxySitesCache(); transportManagerConfig = new TransportManagerConfig(); passwordManager = new MemoryPasswordManager(); @@ -161,6 +166,13 @@ public NotFoundCache getNotFoundCache() return nfc; } + @Default + @Produces + public ProxySitesCache getProxySitesCache() + { + return proxySitesCache; + } + @Default @Produces public Http getHttp() diff --git a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/HttpClientTransport.java b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/HttpClientTransport.java index c958809f3..4f7c18a8d 100644 --- a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/HttpClientTransport.java +++ b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/HttpClientTransport.java @@ -23,6 +23,7 @@ import org.commonjava.maven.galley.model.ConcreteResource; import org.commonjava.maven.galley.model.Location; import org.commonjava.maven.galley.model.Transfer; +import org.commonjava.maven.galley.spi.proxy.ProxySitesCache; import org.commonjava.maven.galley.spi.transport.DownloadJob; import org.commonjava.maven.galley.spi.transport.ExistenceJob; import org.commonjava.maven.galley.spi.transport.ListingJob; @@ -78,6 +79,9 @@ public class HttpClientTransport @Inject private TransportMetricConfig metricConfig; + @Inject + private ProxySitesCache proxySitesCache; + protected HttpClientTransport() { } @@ -117,7 +121,8 @@ public DownloadJob createDownloadJob( final ConcreteResource resource, final Tra throws TransferException { return new HttpDownload( getUrl( resource ), getHttpLocation( resource.getLocation(), download ), target, - transferSizes, eventMetadata, http, mapper, metricRegistry, metricConfig ); + transferSizes, eventMetadata, http, mapper, metricRegistry, metricConfig, + proxySitesCache ); } @Override @@ -126,7 +131,7 @@ public PublishJob createPublishJob( final ConcreteResource resource, final Input throws TransferException { return new HttpPublish( getUrl( resource ), getHttpLocation( resource.getLocation(), publish ), stream, length, - contentType, http ); + contentType, http, proxySitesCache ); } @Override @@ -160,7 +165,7 @@ public ListingJob createListingJob( final ConcreteResource resource, final Trans { return new HttpListing( getUrl( resource ), new ConcreteResource( getHttpLocation( resource.getLocation(), listing ), - resource.getPath() ), http ); + resource.getPath() ), http, proxySitesCache ); } private HttpLocation getHttpLocation( final Location repository, HttpJobType httpJobType ) @@ -184,7 +189,7 @@ public ExistenceJob createExistenceJob( final ConcreteResource resource, final T throws TransferException { return new HttpExistence( getUrl( resource ), getHttpLocation( resource.getLocation(), existence ), target, - http, mapper ); + http, mapper, proxySitesCache ); } private String getUrl( final ConcreteResource resource ) diff --git a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/AbstractHttpJob.java b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/AbstractHttpJob.java index a542920e8..b3ef3f5f7 100644 --- a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/AbstractHttpJob.java +++ b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/AbstractHttpJob.java @@ -33,6 +33,7 @@ import org.commonjava.maven.galley.io.checksum.ChecksumAlgorithm; import org.commonjava.maven.galley.model.Transfer; import org.commonjava.maven.galley.model.TransferOperation; +import org.commonjava.maven.galley.spi.proxy.ProxySitesCache; import org.commonjava.maven.galley.transport.htcli.Http; import org.commonjava.maven.galley.transport.htcli.internal.util.TransferResponseUtils; import org.commonjava.maven.galley.transport.htcli.model.HttpExchangeMetadata; @@ -72,12 +73,15 @@ public abstract class AbstractHttpJob protected boolean success; + private final ProxySitesCache proxySitesCache; + protected AbstractHttpJob( final String url, final HttpLocation location, final Http http, - final Integer... successStatuses ) + ProxySitesCache proxySitesCache, final Integer... successStatuses ) { this.url = url; this.location = location; this.http = http; + this.proxySitesCache = proxySitesCache; if ( successStatuses.length < 1 ) { @@ -104,6 +108,7 @@ protected boolean executeHttp() { int tries = 1; boolean doProxy = false; + String site = location.getHost(); try { while ( tries > 0 ) @@ -111,6 +116,11 @@ protected boolean executeHttp() tries--; try { + if ( proxySitesCache.isProxySite( site ) ) + { + doProxy = true; + logger.debug( "Access with proxy in cache, site: {}", site ); + } client = http.createClient( location, doProxy ); response = client.execute( request, http.createContext( location ) ); @@ -144,15 +154,17 @@ else if ( !doProxy ) // never do with proxy, retry with proxy { tries = 1; doProxy = true; - logger.debug( "Retry to execute with global proxy for {}", url ); + proxySitesCache.saveProxySite( site ); + logger.debug( "Retry to execute with global proxy for {} and add into proxy cache, site: {}", + url, site ); } else // already did proxy, still timeout { addFieldToActiveSpan( "target-error-reason", "timeout" ); addFieldToActiveSpan( "target-error", e.getClass().getSimpleName() ); throw new TransferTimeoutException( location, url, - "Repository remote request failed for: {}. Reason: {}", e, - url, e.getMessage() ); + "Retried with proxy, repository remote request timeout failed for: {}. Reason: {}", + e, url, e.getMessage() ); } } catch ( final IOException e ) @@ -160,8 +172,8 @@ else if ( !doProxy ) // never do with proxy, retry with proxy addFieldToActiveSpan( "target-error-reason", "I/O" ); addFieldToActiveSpan( "target-error", e.getClass().getSimpleName() ); throw new TransferLocationException( location, - "Repository remote request failed for: {}. Reason: {}", e, url, - e.getMessage() ); + "Repository remote request IO failed for: {}. Reason: {}", e, + url, e.getMessage() ); } catch ( TransferLocationException e ) { @@ -173,7 +185,7 @@ else if ( !doProxy ) // never do with proxy, retry with proxy { addFieldToActiveSpan( "target-error-reason", "unknown" ); addFieldToActiveSpan( "target-error", e.getClass().getSimpleName() ); - throw new TransferException( "Repository remote request failed for: {}. Reason: {}", e, url, + throw new TransferException( "Repository remote request Galley failed for: {}. Reason: {}", e, url, e.getMessage() ); } } @@ -200,7 +212,6 @@ else if ( !doProxy ) // never do with proxy, retry with proxy } /* for GET/HEAD request, need to override below two methods for writeMetadata() */ - protected Transfer getTransfer() { return null; @@ -306,5 +317,4 @@ protected void cleanup() request = null; response = null; } - } diff --git a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpDownload.java b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpDownload.java index 33478a23e..afba38dc7 100644 --- a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpDownload.java +++ b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpDownload.java @@ -21,13 +21,14 @@ import org.apache.http.util.EntityUtils; import org.commonjava.maven.galley.TransferContentException; import org.commonjava.maven.galley.TransferException; +import org.commonjava.maven.galley.config.TransportMetricConfig; import org.commonjava.maven.galley.event.EventMetadata; import org.commonjava.maven.galley.model.ConcreteResource; import org.commonjava.maven.galley.model.Transfer; import org.commonjava.maven.galley.model.TransferOperation; +import org.commonjava.maven.galley.spi.proxy.ProxySitesCache; import org.commonjava.maven.galley.spi.transport.DownloadJob; import org.commonjava.maven.galley.transport.htcli.Http; -import org.commonjava.maven.galley.config.TransportMetricConfig; import org.commonjava.maven.galley.transport.htcli.model.HttpLocation; import org.commonjava.maven.galley.transport.htcli.util.HttpUtil; import org.commonjava.o11yphant.metrics.api.MetricRegistry; @@ -67,7 +68,7 @@ public HttpDownload( final String url, final HttpLocation location, final Transf final Map transferSizes, final EventMetadata eventMetadata, final Http http, final ObjectMapper mapper ) { - this( url, location, target, transferSizes, eventMetadata, http, mapper, true, null, null ); + this( url, location, target, transferSizes, eventMetadata, http, mapper, true, null, null, null ); } public HttpDownload( final String url, final HttpLocation location, final Transfer target, @@ -76,15 +77,25 @@ public HttpDownload( final String url, final HttpLocation location, final Transf final TransportMetricConfig transportMetricConfig ) { this( url, location, target, transferSizes, eventMetadata, http, mapper, true, metricRegistry, - transportMetricConfig ); + transportMetricConfig, null ); + } + + public HttpDownload( final String url, final HttpLocation location, final Transfer target, + final Map transferSizes, final EventMetadata eventMetadata, final Http http, + final ObjectMapper mapper, final MetricRegistry metricRegistry, + final TransportMetricConfig transportMetricConfig, ProxySitesCache proxySitesCache ) + { + this( url, location, target, transferSizes, eventMetadata, http, mapper, true, metricRegistry, + transportMetricConfig, proxySitesCache ); } public HttpDownload( final String url, final HttpLocation location, final Transfer target, final Map transferSizes, final EventMetadata eventMetadata, final Http http, final ObjectMapper mapper, final boolean deleteFilesOnPath, - final MetricRegistry metricRegistry, final TransportMetricConfig transportMetricConfig) + final MetricRegistry metricRegistry, final TransportMetricConfig transportMetricConfig, + ProxySitesCache proxySitesCache ) { - super( url, location, http ); + super( url, location, http, proxySitesCache ); this.request = new HttpGet( url ); this.target = target; this.transferSizes = transferSizes; diff --git a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpExistence.java b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpExistence.java index ac73866af..a2e2a26e2 100644 --- a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpExistence.java +++ b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpExistence.java @@ -15,20 +15,20 @@ */ package org.commonjava.maven.galley.transport.htcli.internal; +import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.http.client.methods.HttpHead; import org.commonjava.maven.galley.TransferException; import org.commonjava.maven.galley.model.Transfer; +import org.commonjava.maven.galley.spi.proxy.ProxySitesCache; import org.commonjava.maven.galley.spi.transport.ExistenceJob; import org.commonjava.maven.galley.transport.htcli.Http; import org.commonjava.maven.galley.transport.htcli.model.HttpLocation; -import com.fasterxml.jackson.databind.ObjectMapper; - import static org.commonjava.o11yphant.trace.TraceManager.addFieldToActiveSpan; public final class HttpExistence - extends AbstractHttpJob - implements ExistenceJob + extends AbstractHttpJob + implements ExistenceJob { private final ObjectMapper mapper; @@ -38,7 +38,13 @@ public final class HttpExistence public HttpExistence( final String url, final HttpLocation location, final Transfer transfer, final Http http, final ObjectMapper mapper ) { - super( url, location, http ); + this( url, location, transfer, http, mapper, null ); + } + + public HttpExistence( final String url, final HttpLocation location, final Transfer transfer, final Http http, + final ObjectMapper mapper, ProxySitesCache proxySitesCache ) + { + super( url, location, http, proxySitesCache ); this.transfer = transfer; this.mapper = mapper; } diff --git a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpListing.java b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpListing.java index 2a00fdd48..f02542286 100644 --- a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpListing.java +++ b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpListing.java @@ -15,23 +15,12 @@ */ package org.commonjava.maven.galley.transport.htcli.internal; -import static org.apache.commons.io.IOUtils.closeQuietly; -import static org.commonjava.o11yphant.trace.TraceManager.addFieldToActiveSpan; - -import java.io.IOException; -import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URL; -import java.nio.charset.Charset; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.Set; - import org.apache.commons.io.IOUtils; import org.apache.http.client.methods.HttpGet; import org.commonjava.maven.galley.TransferException; import org.commonjava.maven.galley.model.ConcreteResource; import org.commonjava.maven.galley.model.ListingResult; +import org.commonjava.maven.galley.spi.proxy.ProxySitesCache; import org.commonjava.maven.galley.spi.transport.ListingJob; import org.commonjava.maven.galley.transport.htcli.Http; import org.commonjava.maven.galley.transport.htcli.model.HttpLocation; @@ -41,6 +30,18 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Set; + +import static org.apache.commons.io.IOUtils.closeQuietly; +import static org.commonjava.o11yphant.trace.TraceManager.addFieldToActiveSpan; + public class HttpListing extends AbstractHttpJob implements ListingJob @@ -59,7 +60,13 @@ public class HttpListing public HttpListing( final String url, final ConcreteResource resource, final Http http ) { - super( url, (HttpLocation) resource.getLocation(), http ); + this( url, resource, http, null ); + } + + public HttpListing( final String url, final ConcreteResource resource, final Http http, + ProxySitesCache proxySitesCache ) + { + super( url, (HttpLocation) resource.getLocation(), http, proxySitesCache ); this.resource = resource; } diff --git a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpPublish.java b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpPublish.java index 99e1cda26..bec73d798 100644 --- a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpPublish.java +++ b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpPublish.java @@ -15,18 +15,19 @@ */ package org.commonjava.maven.galley.transport.htcli.internal; -import java.io.InputStream; - import org.apache.http.HttpStatus; import org.apache.http.client.methods.HttpPut; import org.apache.http.entity.ContentType; import org.apache.http.entity.InputStreamEntity; import org.commonjava.maven.galley.TransferException; +import org.commonjava.maven.galley.spi.proxy.ProxySitesCache; import org.commonjava.maven.galley.spi.transport.PublishJob; import org.commonjava.maven.galley.transport.htcli.Http; import org.commonjava.maven.galley.transport.htcli.model.HttpLocation; import org.commonjava.maven.galley.util.ContentTypeUtils; +import java.io.InputStream; + import static org.commonjava.o11yphant.trace.TraceManager.addFieldToActiveSpan; public final class HttpPublish @@ -42,10 +43,10 @@ public final class HttpPublish private boolean success; - public HttpPublish( final String url, final HttpLocation location, final InputStream stream, final long length, final String contentType, - final Http http ) + public HttpPublish( final String url, final HttpLocation location, final InputStream stream, final long length, + final String contentType, final Http http, ProxySitesCache proxySitesCache ) { - super( url, location, http, HttpStatus.SC_OK, HttpStatus.SC_CREATED ); + super( url, location, http, proxySitesCache, HttpStatus.SC_OK, HttpStatus.SC_CREATED ); this.stream = stream; this.length = length; this.contentType = contentType == null ? ContentTypeUtils.detectContent( url ) : contentType; From b2024993076e7f298697f6562220ac6828cb0ec8 Mon Sep 17 00:00:00 2001 From: yma Date: Sat, 8 Feb 2025 16:29:38 +0800 Subject: [PATCH 2/2] Remove proxySitesCache param usage for publish job --- .../maven/galley/transport/htcli/HttpClientTransport.java | 2 +- .../galley/transport/htcli/internal/AbstractHttpJob.java | 7 +++++-- .../maven/galley/transport/htcli/internal/HttpPublish.java | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/HttpClientTransport.java b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/HttpClientTransport.java index 4f7c18a8d..738ca11f0 100644 --- a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/HttpClientTransport.java +++ b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/HttpClientTransport.java @@ -131,7 +131,7 @@ public PublishJob createPublishJob( final ConcreteResource resource, final Input throws TransferException { return new HttpPublish( getUrl( resource ), getHttpLocation( resource.getLocation(), publish ), stream, length, - contentType, http, proxySitesCache ); + contentType, http ); } @Override diff --git a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/AbstractHttpJob.java b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/AbstractHttpJob.java index b3ef3f5f7..340b8517b 100644 --- a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/AbstractHttpJob.java +++ b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/AbstractHttpJob.java @@ -116,7 +116,7 @@ protected boolean executeHttp() tries--; try { - if ( proxySitesCache.isProxySite( site ) ) + if ( proxySitesCache != null && proxySitesCache.isProxySite( site ) ) { doProxy = true; logger.debug( "Access with proxy in cache, site: {}", site ); @@ -154,7 +154,10 @@ else if ( !doProxy ) // never do with proxy, retry with proxy { tries = 1; doProxy = true; - proxySitesCache.saveProxySite( site ); + if ( proxySitesCache != null ) + { + proxySitesCache.saveProxySite( site ); + } logger.debug( "Retry to execute with global proxy for {} and add into proxy cache, site: {}", url, site ); } diff --git a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpPublish.java b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpPublish.java index bec73d798..7dbd87fb9 100644 --- a/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpPublish.java +++ b/transports/httpclient/src/main/java/org/commonjava/maven/galley/transport/htcli/internal/HttpPublish.java @@ -44,9 +44,9 @@ public final class HttpPublish private boolean success; public HttpPublish( final String url, final HttpLocation location, final InputStream stream, final long length, - final String contentType, final Http http, ProxySitesCache proxySitesCache ) + final String contentType, final Http http ) { - super( url, location, http, proxySitesCache, HttpStatus.SC_OK, HttpStatus.SC_CREATED ); + super( url, location, http, null, HttpStatus.SC_OK, HttpStatus.SC_CREATED ); this.stream = stream; this.length = length; this.contentType = contentType == null ? ContentTypeUtils.detectContent( url ) : contentType;