private void initialize()

in tablestore/src/main/java/com/alicloud/openservices/tablestore/DefaultTableStoreWriter.java [149:194]


    private void initialize() {
        logger.info("Start initialize ots writer, table name: {}.", tableName);
        DescribeTableRequest request = new DescribeTableRequest();
        request.setTableName(tableName);
        Future<DescribeTableResponse> result = ots.describeTable(request, null);
        DescribeTableResponse res = null;
        try {
            res = result.get();
        } catch (Exception e) {
            throw new ClientException(e);
        }
        if (res.getIndexMeta() != null && res.getIndexMeta().size() > 0) {
            allowDuplicatePkInBatchRequest = false;
            logger.info("Table [{}] has globalIndex, allowDuplicatePkInBatchRequest will be overwrite by [false]", tableName);
        }
        this.tableMeta = res.getTableMeta();
        logger.info("End initialize with table meta: {}.", tableMeta);

        buckets = new Bucket[writerConfig.getBucketCount()];
        for (int i = 0; i < writerConfig.getBucketCount(); i++) {
            BucketConfig bucketConfig = new BucketConfig(
                    i,
                    this.tableMeta.getTableName(),
                    this.writerConfig.getWriteMode(),
                    this.allowDuplicatePkInBatchRequest);

            buckets[i] = new Bucket(bucketConfig, ots, writerConfig, resultCallback, executor, writerStatistics, semaphore);
        }

        switch (writerConfig.getDispatchMode()) {
            case HASH_PARTITION_KEY:
                dispatcher = new HashPartitionKeyDispatcher(writerConfig.getBucketCount());
                break;
            case ROUND_ROBIN:
                dispatcher = new RoundRobinDispatcher(writerConfig.getBucketCount());
                break;
            case HASH_PRIMARY_KEY:
                dispatcher = new HashPrimaryKeyDispatcher(writerConfig.getBucketCount());
                break;
            default:
                throw new ClientException(String.format("The dispatch mode [%s] not supported", writerConfig.getDispatchMode()));
        }

        startFlushTimer(writerConfig.getFlushInterval());
        startLogTimer(writerConfig.getLogInterval());
    }