Search in sources :

Example 1 with File

use of org.apache.cassandra.io.util.File in project cassandra by apache.

the class HintsStore method hasExpired.

private boolean hasExpired(HintsDescriptor descriptor, long now) {
    Long cachedExpiresAt = hintsExpirations.get(descriptor);
    if (null != cachedExpiresAt)
        return cachedExpiresAt <= now;
    File hintFile = new File(hintsDirectory, descriptor.fileName());
    // the file does not exist or if an I/O error occurs
    if (!hintFile.exists() || hintFile.lastModified() == 0)
        return false;
    // 'lastModified' can be considered as the upper bound of the hint creation time.
    // So the TTL upper bound of all hints in the file can be estimated by lastModified + maxGcgs of all tables
    long ttl = hintFile.lastModified() + Schema.instance.largestGcgs();
    hintsExpirations.put(descriptor, ttl);
    return ttl <= now;
}
Also used : File(org.apache.cassandra.io.util.File)

Example 2 with File

use of org.apache.cassandra.io.util.File in project cassandra by apache.

the class HintsWriter method create.

// HintsWriter owns channel
@SuppressWarnings("resource")
static HintsWriter create(File directory, HintsDescriptor descriptor) throws IOException {
    File file = descriptor.file(directory);
    FileChannel channel = FileChannel.open(file.toPath(), StandardOpenOption.WRITE, StandardOpenOption.CREATE_NEW);
    int fd = NativeLibrary.getfd(channel);
    CRC32 crc = new CRC32();
    try (DataOutputBuffer dob = DataOutputBuffer.scratchBuffer.get()) {
        // write the descriptor
        descriptor.serialize(dob);
        ByteBuffer descriptorBytes = dob.buffer();
        updateChecksum(crc, descriptorBytes);
        channel.write(descriptorBytes);
        if (descriptor.isEncrypted())
            return new EncryptedHintsWriter(directory, descriptor, file, channel, fd, crc);
        if (descriptor.isCompressed())
            return new CompressedHintsWriter(directory, descriptor, file, channel, fd, crc);
        return new HintsWriter(directory, descriptor, file, channel, fd, crc);
    } catch (Throwable e) {
        channel.close();
        throw e;
    }
}
Also used : CRC32(java.util.zip.CRC32) FileChannel(java.nio.channels.FileChannel) DataOutputBuffer(org.apache.cassandra.io.util.DataOutputBuffer) File(org.apache.cassandra.io.util.File) ByteBuffer(java.nio.ByteBuffer)

Example 3 with File

use of org.apache.cassandra.io.util.File in project cassandra by apache.

the class ClusterUtils method getDataDirectories.

/**
 * Get all data directories for the given instance.
 *
 * @param instance to get data directories for
 * @return data directories
 */
public static List<File> getDataDirectories(IInstance instance) {
    IInstanceConfig conf = instance.config();
    // this isn't safe as it assumes the implementation of InstanceConfig
    // might need to get smarter... some day...
    String[] ds = (String[]) conf.get("data_file_directories");
    List<File> files = new ArrayList<>(ds.length);
    for (int i = 0; i < ds.length; i++) files.add(new File(ds[i]));
    return files;
}
Also used : IInstanceConfig(org.apache.cassandra.distributed.api.IInstanceConfig) ArrayList(java.util.ArrayList) File(org.apache.cassandra.io.util.File)

Example 4 with File

use of org.apache.cassandra.io.util.File in project cassandra by apache.

the class ClusterUtils method getCommitLogDirectory.

/**
 * Get the commit log directory for the given instance.
 *
 * @param instance to get the commit log directory for
 * @return commit log directory
 */
public static File getCommitLogDirectory(IInstance instance) {
    IInstanceConfig conf = instance.config();
    // this isn't safe as it assumes the implementation of InstanceConfig
    // might need to get smarter... some day...
    String d = (String) conf.get("commitlog_directory");
    return new File(d);
}
Also used : IInstanceConfig(org.apache.cassandra.distributed.api.IInstanceConfig) File(org.apache.cassandra.io.util.File)

Example 5 with File

use of org.apache.cassandra.io.util.File in project cassandra by apache.

the class ClusterUtils method getSavedCachesDirectory.

/**
 * Get the saved caches directory for the given instance.
 *
 * @param instance to get the saved caches directory for
 * @return saved caches directory
 */
public static File getSavedCachesDirectory(IInstance instance) {
    IInstanceConfig conf = instance.config();
    // this isn't safe as it assumes the implementation of InstanceConfig
    // might need to get smarter... some day...
    String d = (String) conf.get("saved_caches_directory");
    return new File(d);
}
Also used : IInstanceConfig(org.apache.cassandra.distributed.api.IInstanceConfig) File(org.apache.cassandra.io.util.File)

Aggregations

File (org.apache.cassandra.io.util.File)404 Test (org.junit.Test)203 SSTableReader (org.apache.cassandra.io.sstable.format.SSTableReader)92 ColumnFamilyStore (org.apache.cassandra.db.ColumnFamilyStore)42 Descriptor (org.apache.cassandra.io.sstable.Descriptor)40 IOException (java.io.IOException)38 ByteBuffer (java.nio.ByteBuffer)38 TableMetadata (org.apache.cassandra.schema.TableMetadata)37 DatabaseDescriptor (org.apache.cassandra.config.DatabaseDescriptor)35 Directories (org.apache.cassandra.db.Directories)25 SerializationHeader (org.apache.cassandra.db.SerializationHeader)21 LifecycleTransaction (org.apache.cassandra.db.lifecycle.LifecycleTransaction)21 Path (java.nio.file.Path)20 Component (org.apache.cassandra.io.sstable.Component)19 AbstractTransactionalTest (org.apache.cassandra.utils.concurrent.AbstractTransactionalTest)19 HashSet (java.util.HashSet)18 FileChannel (java.nio.channels.FileChannel)16 FileOutputStreamPlus (org.apache.cassandra.io.util.FileOutputStreamPlus)16 RandomAccessReader (org.apache.cassandra.io.util.RandomAccessReader)15 FileUtils (org.apache.cassandra.io.util.FileUtils)14