private Connection getFetchableConnection(String groupName, String remoteFileName) throws FdfsException {
        if (getReadableConnectionPool() == null) {

            logger.debug("start getReadableConnectionPool...");

            Set<StorageConfig> storageConfigSet =
                    getTrackerClient().getFetchStorageSet(groupName, remoteFileName);

            Asserts.assertCollectionIsBlank(storageConfigSet, "storageConfigSet is empty");

            int perSize = getFdfsClientConfig().getFetchSizePerAddr();
            int elementSize = perSize * storageConfigSet.size();
            final SimpleConnectionPool connectionPool = new SimpleConnectionPool(elementSize, 3);

            for (StorageConfig storageConfig : storageConfigSet) {
                InetSocketAddress inetSocketAddress = storageConfig.getInetSocketAddress();
                byte storePathIndex = storageConfig.getStorePathIndex();
                for (int i = 0; i < perSize; i++) {
                    try {
                        Connection con = super.newConnection(inetSocketAddress);
                        con.setStorePathIndex(storePathIndex);
                        connectionPool.put(con);
                    } catch (Exception e) {// 跳过异常，后面检查。
                        logger.error("newConnection fail, inetSocketAddress=[{}]", inetSocketAddress, e);
                    }
                }
            }

            setReadableConnectionPool(connectionPool);
        }

        return getReadableConnectionPool().get();
    }