Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2012 Red Hat Inc. and/or its affiliates and other contributors
   * as indicated by the @author tags. All rights reserved.
   * See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This copyrighted material is made available to anyone wishing to use,
   * modify, copy, or redistribute it subject to the terms and conditions
  * of the GNU Lesser General Public License, v. 2.1.
  * This program is distributed in the hope that it will be useful, but WITHOUT A
  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
  * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
  * You should have received a copy of the GNU Lesser General Public License,
  * v.2.1 along with this distribution; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  * MA  02110-1301, USA.
  */
 package org.infinispan.upgrade.hotrod;
 
 import java.util.List;
 import java.util.Set;
 
 public class HotRodTargetMigrator implements TargetMigrator {
    private static final String MIGRATION_MANAGER_HOT_ROD_KNOWN_KEYS = "___MigrationManager_HotRod_KnownKeys___";
 
    private static final Log log = LogFactory.getLog(HotRodTargetMigrator.classLog.class);
 
    public HotRodTargetMigrator() {
    }
 
    @Override
    public String getName() {
       return "hotrod";
    }
 
    @Override
    public long synchronizeData(final Cache<ObjectObjectcachethrows CacheException {
       int threads = Runtime.getRuntime().availableProcessors();
       CacheLoaderManager loaderManager = cr.getComponent(CacheLoaderManager.class);
       List<RemoteCacheStorestores = loaderManager.getCacheLoaders(RemoteCacheStore.class);
       Marshaller marshaller = new GenericJBossMarshaller();
       ByteArrayKey knownKeys;
       try {
          knownKeys = new ByteArrayKey(marshaller.objectToByteBuffer());
       } catch (Exception e) {
          throw new CacheException(e);
       }
 
       for (RemoteCacheStore store : stores) {
          final RemoteCache<ObjectObjectstoreCache = store.getRemoteCache();
          if (storeCache.containsKey(knownKeys)) {
             RemoteCacheStoreConfig storeConfig = (RemoteCacheStoreConfigstore.getCacheStoreConfig();
             if (!storeConfig.isHotRodWrapping()) {
                throw .remoteStoreNoHotRodWrapping(cache.getName());
             }
 
 
             Set<ByteArrayKeykeys;
             try {
                keys = (Set<ByteArrayKey>) marshaller.objectFromByteBuffer((byte[])storeCache.get(knownKeys));
             } catch (Exception e) {
                throw new CacheException(e);
             }
 
             ExecutorService es = Executors.newFixedThreadPool(threads);
             final AtomicInteger count = new AtomicInteger(0);
             for (final ByteArrayKey key : keys) {
                es.submit(new Runnable() {
 
                   @Override
                   public void run() {
                      try {
                         cache.get(key);
                         int i = count.getAndIncrement();
                         if (.isDebugEnabled() && i % 100 == 0)
                            .debugf(">>    Moved %s keys\n"i);
                      } catch (Exception e) {
 
                      }
                   }
               });
            }
            es.shutdown();
            try {
               while (!es.awaitTermination(500, .));
            } catch (InterruptedException e) {
               throw new CacheException(e);
            }
            return count.longValue();
         }
      }
      throw .missingMigrationData(cache.getName());
   }
   public void disconnectSource(Cache<ObjectObjectcachethrows CacheException {
      CacheLoaderManager loaderManager = cr.getComponent(CacheLoaderManager.class);
      loaderManager.disableCacheStore(RemoteCacheStore.class.getName());
   }
New to GrepCode? Check out our FAQ X