All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.janusgraph.diskstorage.cql.builder.CQLMutateManyFunctionBuilder Maven / Gradle / Ivy

There is a newer version: 1.2.0-20241120-125614.80ef1d9
Show newest version
// Copyright 2021 JanusGraph Authors
//
// 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.janusgraph.diskstorage.cql.builder;

import com.datastax.oss.driver.api.core.CqlSession;
import org.janusgraph.diskstorage.common.DistributedStoreManager;
import org.janusgraph.diskstorage.configuration.Configuration;
import org.janusgraph.diskstorage.cql.CQLKeyColumnValueStore;
import org.janusgraph.diskstorage.cql.function.ConsumerWithBackendException;
import org.janusgraph.diskstorage.cql.function.mutate.CQLMutateManyFunction;
import org.janusgraph.diskstorage.cql.function.mutate.CQLMutateManyLoggedFunction;
import org.janusgraph.diskstorage.cql.function.mutate.CQLMutateManyUnloggedFunction;
import org.janusgraph.diskstorage.util.backpressure.QueryBackPressure;
import org.janusgraph.diskstorage.util.time.TimestampProvider;

import java.util.Map;

import static org.janusgraph.diskstorage.cql.CQLConfigOptions.ATOMIC_BATCH_MUTATE;
import static org.janusgraph.diskstorage.cql.CQLConfigOptions.BATCH_STATEMENT_SIZE;

public class CQLMutateManyFunctionBuilder {

    public CQLMutateManyFunction build(final CqlSession session, final Configuration configuration,
                                       final TimestampProvider times, final boolean assignTimestamp,
                                       final Map openStores,
                                       ConsumerWithBackendException sleepAfterWriteFunction,
                                       QueryBackPressure queriesBackPressure) {

        int batchSize = configuration.get(BATCH_STATEMENT_SIZE);
        boolean atomicBatch = configuration.get(ATOMIC_BATCH_MUTATE);

        final CQLMutateManyFunction mutateManyFunction;
        if (atomicBatch) {
            mutateManyFunction = new CQLMutateManyLoggedFunction(times,
                assignTimestamp, openStores, session, sleepAfterWriteFunction, queriesBackPressure);
        } else {
            mutateManyFunction = new CQLMutateManyUnloggedFunction(batchSize,
                session, openStores, times, assignTimestamp, sleepAfterWriteFunction, queriesBackPressure);
        }

        return mutateManyFunction;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy