Search in sources :

Example 1 with MemoryNotFoundCache

use of org.commonjava.maven.galley.nfc.MemoryNotFoundCache in project galley by Commonjava.

the class GalleyCoreBuilder method initMissingComponents.

public void initMissingComponents() throws GalleyInitException {
    if (transportManager == null) {
        transportManager = new TransportManagerImpl(transports);
    }
    handlerExecutor = Executors.newFixedThreadPool(2, new NamedThreadFactory("transfer-handlers", true, 4));
    batchExecutor = Executors.newFixedThreadPool(2, new NamedThreadFactory("transfer-batches", true, 4));
    if (decorator == null) {
        decorator = new NoOpTransferDecorator();
    }
    if (events == null) {
        events = new NoOpFileEventManager();
    }
    if (nfc == null) {
        nfc = new MemoryNotFoundCache();
    }
    if (transportManagerConfig == null) {
        transportManagerConfig = new TransportManagerConfig();
    }
    final DownloadHandler dh = new DownloadHandler(getNfc(), transportManagerConfig, handlerExecutor);
    final UploadHandler uh = new UploadHandler(getNfc(), transportManagerConfig, handlerExecutor);
    final ListingHandler lh = new ListingHandler(getNfc());
    final ExistenceHandler eh = new ExistenceHandler(getNfc());
    if (specialPathManager == null) {
        specialPathManager = new SpecialPathManagerImpl();
    }
    if (pathGenerator == null) {
        pathGenerator = new HashedLocationPathGenerator();
    }
    if (cache == null) {
        if (cacheProviderFactory != null) {
            cache = cacheProviderFactory.create(pathGenerator, decorator, events);
        } else {
            throw new GalleyInitException("No CacheProvider / CacheProviderFactory specified!");
        }
    }
    if (transferManager == null) {
        transferManager = new TransferManagerImpl(transportManager, getCache(), getNfc(), getFileEvents(), dh, uh, lh, eh, specialPathManager, batchExecutor);
    }
    if (locationExpander == null) {
        logger.debug("Initializing default location expander");
        locationExpander = new NoOpLocationExpander();
    }
    if (locationResolver == null) {
        locationResolver = new SimpleUrlLocationResolver(locationExpander, transportManager);
    }
    if (passwordManager == null) {
        passwordManager = new MemoryPasswordManager();
    }
}
Also used : ListingHandler(org.commonjava.maven.galley.internal.xfer.ListingHandler) NoOpTransferDecorator(org.commonjava.maven.galley.io.NoOpTransferDecorator) TransferManagerImpl(org.commonjava.maven.galley.internal.TransferManagerImpl) TransportManagerImpl(org.commonjava.maven.galley.transport.TransportManagerImpl) HashedLocationPathGenerator(org.commonjava.maven.galley.io.HashedLocationPathGenerator) NamedThreadFactory(org.commonjava.cdi.util.weft.NamedThreadFactory) DownloadHandler(org.commonjava.maven.galley.internal.xfer.DownloadHandler) TransportManagerConfig(org.commonjava.maven.galley.config.TransportManagerConfig) MemoryNotFoundCache(org.commonjava.maven.galley.nfc.MemoryNotFoundCache) MemoryPasswordManager(org.commonjava.maven.galley.auth.MemoryPasswordManager) NoOpLocationExpander(org.commonjava.maven.galley.transport.NoOpLocationExpander) SpecialPathManagerImpl(org.commonjava.maven.galley.io.SpecialPathManagerImpl) NoOpFileEventManager(org.commonjava.maven.galley.event.NoOpFileEventManager) SimpleUrlLocationResolver(org.commonjava.maven.galley.transport.SimpleUrlLocationResolver) UploadHandler(org.commonjava.maven.galley.internal.xfer.UploadHandler) ExistenceHandler(org.commonjava.maven.galley.internal.xfer.ExistenceHandler)

Example 2 with MemoryNotFoundCache

use of org.commonjava.maven.galley.nfc.MemoryNotFoundCache in project galley by Commonjava.

the class TransferManagerImplTest method setup.

@Before
public void setup() {
    transport = new TestTransport();
    transportMgr = new TransportManagerImpl(transport);
    cacheProvider = new FileCacheProvider(temp.newFolder("cache"), new HashedLocationPathGenerator(), new NoOpFileEventManager(), new NoOpTransferDecorator(), true);
    nfc = new MemoryNotFoundCache();
    fileEvents = new NoOpFileEventManager();
    executor = Executors.newSingleThreadExecutor();
    TransportManagerConfig transportManagerConfig = new TransportManagerConfig();
    final DownloadHandler dh = new DownloadHandler(nfc, transportManagerConfig, executor);
    final UploadHandler uh = new UploadHandler(nfc, transportManagerConfig, executor);
    final ListingHandler lh = new ListingHandler(nfc);
    final ExistenceHandler eh = new ExistenceHandler(nfc);
    mgr = new TransferManagerImpl(transportMgr, cacheProvider, nfc, fileEvents, dh, uh, lh, eh, new SpecialPathManagerImpl(), Executors.newFixedThreadPool(2));
}
Also used : FileCacheProvider(org.commonjava.maven.galley.cache.FileCacheProvider) ListingHandler(org.commonjava.maven.galley.internal.xfer.ListingHandler) NoOpTransferDecorator(org.commonjava.maven.galley.io.NoOpTransferDecorator) TransferManagerImpl(org.commonjava.maven.galley.internal.TransferManagerImpl) TransportManagerImpl(org.commonjava.maven.galley.transport.TransportManagerImpl) HashedLocationPathGenerator(org.commonjava.maven.galley.io.HashedLocationPathGenerator) DownloadHandler(org.commonjava.maven.galley.internal.xfer.DownloadHandler) TransportManagerConfig(org.commonjava.maven.galley.config.TransportManagerConfig) MemoryNotFoundCache(org.commonjava.maven.galley.nfc.MemoryNotFoundCache) SpecialPathManagerImpl(org.commonjava.maven.galley.io.SpecialPathManagerImpl) NoOpFileEventManager(org.commonjava.maven.galley.event.NoOpFileEventManager) TestTransport(org.commonjava.maven.galley.testing.core.transport.TestTransport) UploadHandler(org.commonjava.maven.galley.internal.xfer.UploadHandler) ExistenceHandler(org.commonjava.maven.galley.internal.xfer.ExistenceHandler) Before(org.junit.Before)

Example 3 with MemoryNotFoundCache

use of org.commonjava.maven.galley.nfc.MemoryNotFoundCache in project galley by Commonjava.

the class DownloadHandlerConcurrencyTest method concurrentDownloadWaitsThenUsesFirstResult_SmallFile.

@BMRules(rules = { @BMRule(name = "init rendezvous", targetClass = "DownloadHandler", targetMethod = "<init>", targetLocation = "ENTRY", action = "debug(\"Creating rendezvous\"); createRendezvous(\"tsync\", 4);"), @BMRule(name = "rendezvous threads", targetClass = "DownloadHandler", targetMethod = "joinOrStart", targetLocation = "ENTRY", action = "debug(\"waiting for rendezvous\"); rendezvous(\"tsync\"); debug(\"proceeding\");") })
@Test
public void concurrentDownloadWaitsThenUsesFirstResult_SmallFile() throws Exception {
    final NotFoundCache nfc = new MemoryNotFoundCache();
    final TransportManagerConfig mgrConfig = new TransportManagerConfig();
    handler = new DownloadHandler(nfc, mgrConfig, executor);
    // NOTE: Coordinate with "init" @BMRule above!
    final int threads = 4;
    final int timeoutSeconds = 10;
    final String content = "this is a test " + System.currentTimeMillis();
    final String base = "repo";
    final String path = "this/is/the/path.txt";
    final String baseurl = server.formatUrl(base);
    // Serve the content EXACTLY ONCE. It should be cached / cache should be used after that.
    server.expect("GET", server.formatUrl(base, path), new ExpectationHandler() {

        private boolean sent = false;

        @Override
        public void handle(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
            if (!sent) {
                resp.setStatus(HttpServletResponse.SC_OK);
                resp.getWriter().write(content);
                sent = true;
            } else {
                throw new ServletException("Cannot write content more than once.");
            }
        }
    });
    final ConcreteResource resource = new ConcreteResource(new SimpleLocation(base, baseurl), path);
    final Transfer target = cacheProvider.getTransfer(resource);
    final CountDownLatch latch = new CountDownLatch(threads);
    final AtomicInteger successes = new AtomicInteger(0);
    final Logger logger = LoggerFactory.getLogger(getClass());
    // start threads, then wait for each to complete, and
    for (int i = 0; i < threads; i++) {
        executor.execute(new Runnable() {

            @Override
            public void run() {
                String oldName = Thread.currentThread().getName();
                try {
                    Thread.currentThread().setName("Download - " + oldName);
                    Transfer result = handler.download(resource, target, timeoutSeconds, transport, false, new EventMetadata());
                    try (InputStream in = result.openInputStream()) {
                        String resultContent = IOUtils.toString(in);
                        if (resultContent.equals(content)) {
                            successes.incrementAndGet();
                        } else {
                            logger.error("Expected content: '{}'\nActual content: '{}'", content, resultContent);
                        }
                    } catch (IOException e) {
                        logger.error("Failed to read transfer: " + e.getMessage(), e);
                    }
                } catch (TransferException e) {
                    logger.error("Failed to retrieve: " + e.getMessage(), e);
                } finally {
                    latch.countDown();
                    Thread.currentThread().setName(oldName);
                }
            }
        });
    }
}
Also used : InputStream(java.io.InputStream) TransportManagerConfig(org.commonjava.maven.galley.config.TransportManagerConfig) HttpServletResponse(javax.servlet.http.HttpServletResponse) MemoryNotFoundCache(org.commonjava.maven.galley.nfc.MemoryNotFoundCache) IOException(java.io.IOException) CountDownLatch(java.util.concurrent.CountDownLatch) Logger(org.slf4j.Logger) EventMetadata(org.commonjava.maven.galley.event.EventMetadata) HttpServletRequest(javax.servlet.http.HttpServletRequest) ServletException(javax.servlet.ServletException) TransferException(org.commonjava.maven.galley.TransferException) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) ExpectationHandler(org.commonjava.test.http.expect.ExpectationHandler) ConcreteResource(org.commonjava.maven.galley.model.ConcreteResource) Transfer(org.commonjava.maven.galley.model.Transfer) SimpleLocation(org.commonjava.maven.galley.model.SimpleLocation) MemoryNotFoundCache(org.commonjava.maven.galley.nfc.MemoryNotFoundCache) NotFoundCache(org.commonjava.maven.galley.spi.nfc.NotFoundCache) Test(org.junit.Test) BMRules(org.jboss.byteman.contrib.bmunit.BMRules)

Example 4 with MemoryNotFoundCache

use of org.commonjava.maven.galley.nfc.MemoryNotFoundCache in project pom-manipulation-ext by release-engineering.

the class GalleyInfrastructure method init.

private void init(final File targetDirectory, final List<ArtifactRepository> remoteRepositories, final ArtifactRepository localRepository, final Settings settings, final List<String> activeProfiles, final Location customLocation, final Transport customTransport, File cacheDir_) throws ManipulationException {
    LocationExpander locationExpander;
    try {
        final List<Location> custom = customLocation == null ? Collections.<Location>emptyList() : Collections.singletonList(customLocation);
        locationExpander = new MavenLocationExpander(custom, remoteRepositories, localRepository, mirrorSelector, settings, activeProfiles);
    } catch (final MalformedURLException e) {
        throw new ManipulationException("Failed to setup Maven-specific LocationExpander: %s", e, e.getMessage());
    }
    xml = new XMLInfrastructure();
    xpaths = new XPathManager();
    final TransportManager transports;
    if (customTransport != null) {
        transports = new TransportManagerImpl(customTransport);
    } else {
        transports = new TransportManagerImpl(new HttpClientTransport(new HttpImpl(new MemoryPasswordManager())), new FileTransport(), new ZipJarTransport());
    }
    cacheDir = cacheDir_;
    if (cacheDir == null) {
        cacheDir = new File(targetDirectory, "manipulator-cache");
    }
    final FileEventManager fileEvents = new NoOpFileEventManager();
    final CacheProvider cache = new FileCacheProvider(cacheDir, new HashedLocationPathGenerator(), fileEvents, new NoOpTransferDecorator());
    final NotFoundCache nfc = new MemoryNotFoundCache();
    executor = Executors.newCachedThreadPool();
    final TransportManagerConfig config = new TransportManagerConfig();
    final TransferManager transfers = new TransferManagerImpl(transports, cache, nfc, fileEvents, new DownloadHandler(nfc, config, executor), new UploadHandler(nfc, config, executor), new ListingHandler(nfc), new ExistenceHandler(nfc), new SpecialPathManagerImpl(), executor);
    final TypeMapper types = new StandardTypeMapper();
    final ArtifactMetadataManager metadataManager = new ArtifactMetadataManagerImpl(transfers, locationExpander);
    final VersionResolver versionResolver = new VersionResolverImpl(new MavenMetadataReader(xml, locationExpander, metadataManager, xpaths));
    artifactManager = new ArtifactManagerImpl(transfers, locationExpander, types, versionResolver);
    // TODO: auto-adjust this to the current Maven runtime!
    final MavenPluginDefaults pluginDefaults = new StandardMaven304PluginDefaults();
    final MavenPluginImplications pluginImplications = new StandardMavenPluginImplications(xml);
    pomReader = new MavenPomReader(xml, locationExpander, artifactManager, xpaths, pluginDefaults, pluginImplications);
    metadataReader = new MavenMetadataReader(xml, locationExpander, metadataManager, xpaths);
}
Also used : StandardTypeMapper(org.commonjava.maven.galley.maven.internal.type.StandardTypeMapper) TypeMapper(org.commonjava.maven.galley.maven.spi.type.TypeMapper) MalformedURLException(java.net.MalformedURLException) NoOpTransferDecorator(org.commonjava.maven.galley.io.NoOpTransferDecorator) TransferManagerImpl(org.commonjava.maven.galley.internal.TransferManagerImpl) VersionResolverImpl(org.commonjava.maven.galley.maven.internal.version.VersionResolverImpl) MavenPluginDefaults(org.commonjava.maven.galley.maven.spi.defaults.MavenPluginDefaults) XPathManager(org.commonjava.maven.galley.maven.model.view.XPathManager) HttpImpl(org.commonjava.maven.galley.transport.htcli.HttpImpl) SpecialPathManagerImpl(org.commonjava.maven.galley.io.SpecialPathManagerImpl) LocationExpander(org.commonjava.maven.galley.spi.transport.LocationExpander) StandardMavenPluginImplications(org.commonjava.maven.galley.maven.internal.defaults.StandardMavenPluginImplications) MavenPluginImplications(org.commonjava.maven.galley.maven.spi.defaults.MavenPluginImplications) ArtifactMetadataManager(org.commonjava.maven.galley.maven.ArtifactMetadataManager) MavenMetadataReader(org.commonjava.maven.galley.maven.parse.MavenMetadataReader) MemoryNotFoundCache(org.commonjava.maven.galley.nfc.MemoryNotFoundCache) NotFoundCache(org.commonjava.maven.galley.spi.nfc.NotFoundCache) UploadHandler(org.commonjava.maven.galley.internal.xfer.UploadHandler) StandardTypeMapper(org.commonjava.maven.galley.maven.internal.type.StandardTypeMapper) ExistenceHandler(org.commonjava.maven.galley.internal.xfer.ExistenceHandler) FileCacheProvider(org.commonjava.maven.galley.cache.FileCacheProvider) TransferManager(org.commonjava.maven.galley.TransferManager) ListingHandler(org.commonjava.maven.galley.internal.xfer.ListingHandler) TransportManagerImpl(org.commonjava.maven.galley.transport.TransportManagerImpl) HashedLocationPathGenerator(org.commonjava.maven.galley.io.HashedLocationPathGenerator) DownloadHandler(org.commonjava.maven.galley.internal.xfer.DownloadHandler) TransportManagerConfig(org.commonjava.maven.galley.config.TransportManagerConfig) MemoryNotFoundCache(org.commonjava.maven.galley.nfc.MemoryNotFoundCache) MemoryPasswordManager(org.commonjava.maven.galley.auth.MemoryPasswordManager) CacheProvider(org.commonjava.maven.galley.spi.cache.CacheProvider) FileCacheProvider(org.commonjava.maven.galley.cache.FileCacheProvider) StandardMavenPluginImplications(org.commonjava.maven.galley.maven.internal.defaults.StandardMavenPluginImplications) ArtifactMetadataManagerImpl(org.commonjava.maven.galley.maven.internal.ArtifactMetadataManagerImpl) NoOpFileEventManager(org.commonjava.maven.galley.event.NoOpFileEventManager) StandardMaven304PluginDefaults(org.commonjava.maven.galley.maven.internal.defaults.StandardMaven304PluginDefaults) HttpClientTransport(org.commonjava.maven.galley.transport.htcli.HttpClientTransport) NoOpFileEventManager(org.commonjava.maven.galley.event.NoOpFileEventManager) FileEventManager(org.commonjava.maven.galley.spi.event.FileEventManager) VersionResolver(org.commonjava.maven.galley.maven.spi.version.VersionResolver) FileTransport(org.commonjava.maven.galley.filearc.FileTransport) ZipJarTransport(org.commonjava.maven.galley.filearc.ZipJarTransport) ManipulationException(org.commonjava.maven.ext.common.ManipulationException) XMLInfrastructure(org.commonjava.maven.galley.maven.parse.XMLInfrastructure) ArtifactManagerImpl(org.commonjava.maven.galley.maven.internal.ArtifactManagerImpl) TransportManager(org.commonjava.maven.galley.spi.transport.TransportManager) MavenPomReader(org.commonjava.maven.galley.maven.parse.MavenPomReader) File(java.io.File) Location(org.commonjava.maven.galley.model.Location)

Example 5 with MemoryNotFoundCache

use of org.commonjava.maven.galley.nfc.MemoryNotFoundCache in project indy by Commonjava.

the class MavenMetadataGeneratorTest method setup.

@Before
public void setup() throws Exception {
    stores = new MemoryStoreDataManager(true);
    final LocationExpander locations = new IndyLocationExpander(stores);
    final DefaultIndyConfiguration config = new DefaultIndyConfiguration();
    config.setNotFoundCacheTimeoutSeconds(1);
    final ExpiringMemoryNotFoundCache nfc = new ExpiringMemoryNotFoundCache(config);
    WeftExecutorService rescanService = new PoolWeftExecutorService("test-rescan-executor", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false, null, null);
    final DownloadManager downloads = new DefaultDownloadManager(stores, fixture.getTransferManager(), locations, null, nfc, rescanService);
    final XMLInfrastructure xml = new XMLInfrastructure();
    final TypeMapper types = new StandardTypeMapper();
    final MavenMetadataMerger merger = new MavenMetadataMerger();
    final GroupMergeHelper helper = new GroupMergeHelper(downloads);
    WeftExecutorService contentAccessService = new PoolWeftExecutorService("test-content-access-executor", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false, null, null);
    DefaultDirectContentAccess contentAccess = new DefaultDirectContentAccess(downloads, contentAccessService);
    WeftExecutorService mdService = new PoolWeftExecutorService("test-md-executor", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false, null, null);
    generator = new MavenMetadataGenerator(contentAccess, stores, xml, types, merger, helper, new MemoryNotFoundCache(), mdService);
    metadataReader = new MavenMetadataReader(xml, locations, fixture.getArtifactMetadataManager(), fixture.getXPathManager());
}
Also used : StandardTypeMapper(org.commonjava.maven.galley.maven.internal.type.StandardTypeMapper) TypeMapper(org.commonjava.maven.galley.maven.spi.type.TypeMapper) PoolWeftExecutorService(org.commonjava.cdi.util.weft.PoolWeftExecutorService) ExpiringMemoryNotFoundCache(org.commonjava.indy.core.inject.ExpiringMemoryNotFoundCache) MemoryNotFoundCache(org.commonjava.maven.galley.nfc.MemoryNotFoundCache) ExpiringMemoryNotFoundCache(org.commonjava.indy.core.inject.ExpiringMemoryNotFoundCache) DownloadManager(org.commonjava.indy.content.DownloadManager) DefaultDownloadManager(org.commonjava.indy.core.content.DefaultDownloadManager) WeftExecutorService(org.commonjava.cdi.util.weft.WeftExecutorService) PoolWeftExecutorService(org.commonjava.cdi.util.weft.PoolWeftExecutorService) LocationExpander(org.commonjava.maven.galley.spi.transport.LocationExpander) IndyLocationExpander(org.commonjava.indy.content.IndyLocationExpander) MavenMetadataMerger(org.commonjava.indy.pkg.maven.content.group.MavenMetadataMerger) MemoryStoreDataManager(org.commonjava.indy.mem.data.MemoryStoreDataManager) IndyLocationExpander(org.commonjava.indy.content.IndyLocationExpander) XMLInfrastructure(org.commonjava.maven.galley.maven.parse.XMLInfrastructure) DefaultDownloadManager(org.commonjava.indy.core.content.DefaultDownloadManager) MavenMetadataReader(org.commonjava.maven.galley.maven.parse.MavenMetadataReader) DefaultDirectContentAccess(org.commonjava.indy.core.content.DefaultDirectContentAccess) DefaultIndyConfiguration(org.commonjava.indy.conf.DefaultIndyConfiguration) StandardTypeMapper(org.commonjava.maven.galley.maven.internal.type.StandardTypeMapper) GroupMergeHelper(org.commonjava.indy.core.content.group.GroupMergeHelper) Before(org.junit.Before)

Aggregations

MemoryNotFoundCache (org.commonjava.maven.galley.nfc.MemoryNotFoundCache)14 SpecialPathManagerImpl (org.commonjava.maven.galley.io.SpecialPathManagerImpl)8 MemoryStoreDataManager (org.commonjava.indy.mem.data.MemoryStoreDataManager)7 Before (org.junit.Before)7 PoolWeftExecutorService (org.commonjava.cdi.util.weft.PoolWeftExecutorService)6 WeftExecutorService (org.commonjava.cdi.util.weft.WeftExecutorService)6 DefaultIndyConfiguration (org.commonjava.indy.conf.DefaultIndyConfiguration)6 IndyObjectMapper (org.commonjava.indy.model.core.io.IndyObjectMapper)6 DefaultDirectContentAccess (org.commonjava.indy.core.content.DefaultDirectContentAccess)5 DefaultDownloadManager (org.commonjava.indy.core.content.DefaultDownloadManager)5 ExpiringMemoryNotFoundCache (org.commonjava.indy.core.inject.ExpiringMemoryNotFoundCache)5 TransportManagerConfig (org.commonjava.maven.galley.config.TransportManagerConfig)5 StandardTypeMapper (org.commonjava.maven.galley.maven.internal.type.StandardTypeMapper)5 IOException (java.io.IOException)4 PostConstruct (javax.annotation.PostConstruct)4 DownloadManager (org.commonjava.indy.content.DownloadManager)4 IndyLocationExpander (org.commonjava.indy.content.IndyLocationExpander)4 DataFileManager (org.commonjava.indy.subsys.datafile.DataFileManager)4 NoOpFileEventManager (org.commonjava.maven.galley.event.NoOpFileEventManager)4 NoOpTransferDecorator (org.commonjava.maven.galley.io.NoOpTransferDecorator)4