blob: ffd8c9238760637253e8509f3fa73b5d0d916020 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.apache.ignite.internal.processors.cache.persistence.pagemem;
import java.nio.ByteBuffer;
import java.util.Collections;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Predicate;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.pagemem.FullPageId;
import org.apache.ignite.internal.pagemem.PageIdUtils;
import org.apache.ignite.internal.pagemem.store.IgnitePageStoreManager;
import org.apache.ignite.internal.pagemem.store.PageStore;
import org.apache.ignite.internal.processors.cache.CacheGroupContext;
import org.apache.ignite.internal.processors.cache.CacheGroupDescriptor;
import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
import org.apache.ignite.internal.processors.cache.StoredCacheData;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.lang.IgniteFuture;
/**
*
*/
public class NoOpPageStoreManager implements IgnitePageStoreManager {
/** */
private ConcurrentMap<FullPageId, AtomicInteger> allocators = new ConcurrentHashMap<>();
/** {@inheritDoc} */
@Override public void beginRecover() {
// No-op.
}
/** {@inheritDoc} */
@Override public void finishRecover() {
// No-op.
}
/** {@inheritDoc} */
@Override public void initialize(int cacheId, int partitions, String workingDir,
PageMetrics pageMetrics) throws IgniteCheckedException {
// No-op.
}
/** {@inheritDoc} */
@Override public void initializeForCache(CacheGroupDescriptor grpDesc,
StoredCacheData cacheData) throws IgniteCheckedException {
// No-op.
}
/** {@inheritDoc} */
@Override public void initializeForMetastorage() throws IgniteCheckedException {
// No-op.
}
/** {@inheritDoc} */
@Override public void shutdownForCacheGroup(CacheGroupContext grp, boolean destroy) throws IgniteCheckedException {
// No-op.
}
/** {@inheritDoc} */
@Override public void truncate(int cacheId, int partId, int tag) throws IgniteCheckedException {
// No-op.
}
/** {@inheritDoc} */
@Override public void read(int grpId, long pageId, ByteBuffer pageBuf, boolean keepCrc) throws IgniteCheckedException {
// No-op.
}
/** {@inheritDoc} */
@Override public boolean exists(int cacheId, int partId) throws IgniteCheckedException {
return false;
}
/** {@inheritDoc} */
@Override public void readHeader(int grpId, int partId, ByteBuffer buf) throws IgniteCheckedException {
// No-op.
}
/** {@inheritDoc} */
@Override public PageStore write(
int grpId,
long pageId,
ByteBuffer pageBuf,
int tag,
boolean calculateCrc
) throws IgniteCheckedException {
// No-op.
return null;
}
/** {@inheritDoc} */
@Override public void sync(int grpId, int partId) throws IgniteCheckedException {
// No-op.
}
/** {@inheritDoc} */
@Override public void ensure(int grpId, int partId) throws IgniteCheckedException {
// No-op.
}
/** {@inheritDoc} */
@Override public long pageOffset(int grpId, long pageId) throws IgniteCheckedException {
return 0;
}
/** {@inheritDoc} */
@Override public long allocatePage(int grpId, int partId, byte flags) throws IgniteCheckedException {
long root = PageIdUtils.pageId(partId, flags, 0);
FullPageId fullId = new FullPageId(root, grpId);
AtomicInteger allocator = allocators.get(fullId);
if (allocator == null)
allocator = F.addIfAbsent(allocators, fullId, new AtomicInteger(1));
return PageIdUtils.pageId(partId, flags, allocator.getAndIncrement());
}
/** {@inheritDoc} */
@Override public int pages(int grpId, int partId) throws IgniteCheckedException {
long root = PageIdUtils.pageId(partId, (byte)0, 0);
FullPageId fullId = new FullPageId(root, grpId);
AtomicInteger allocator = allocators.get(fullId);
if (allocator == null)
allocator = F.addIfAbsent(allocators, fullId, new AtomicInteger(2));
return allocator.get();
}
/** {@inheritDoc} */
@Override public void start(GridCacheSharedContext cctx) throws IgniteCheckedException {
// No-op.
}
/** {@inheritDoc} */
@Override public void onKernalStart(boolean active) {
// No-op.
}
/** {@inheritDoc} */
@Override public void stop(boolean cancel) {
// No-op.
}
/** {@inheritDoc} */
@Override public void onKernalStop(boolean cancel) {
// No-op.
}
/** {@inheritDoc} */
@Override public void onDisconnected(IgniteFuture reconnectFut) {
// No-op.
}
/** {@inheritDoc} */
@Override public void onReconnected(boolean active) {
// No-op.
}
/** {@inheritDoc} */
@Override public void printMemoryStats() {
// No-op.
}
/** {@inheritDoc} */
@Override public Map<String, StoredCacheData> readCacheConfigurations() throws IgniteCheckedException {
return Collections.emptyMap();
}
/** {@inheritDoc} */
@Override public void storeCacheData(StoredCacheData cacheData, boolean overwrite) throws IgniteCheckedException {
// No-op.
}
/** {@inheritDoc} */
@Override public void removeCacheData(StoredCacheData cacheData) throws IgniteCheckedException {
// No-op.
}
/** {@inheritDoc} */
@Override public boolean hasIndexStore(int grpId) {
return false;
}
/** {@inheritDoc} */
@Override public void onActivate(GridKernalContext kctx) {
// No-op.
}
/** {@inheritDoc} */
@Override public void onDeActivate(GridKernalContext kctx) {
// No-op.
}
/** {@inheritDoc} */
@Override public long pagesAllocated(int grpId) {
return 0;
}
/** {@inheritDoc} */
@Override public void cleanupPersistentSpace(CacheConfiguration cacheConfiguration) throws IgniteCheckedException {
// No-op.
}
/** {@inheritDoc} */
@Override public void cleanupPersistentSpace() throws IgniteCheckedException {
// No-op.
}
/** {@inheritDoc} */
@Override public void cleanupPageStoreIfMatch(Predicate<Integer> cacheGrpPred, boolean cleanFiles) {
// No-op.
}
/** {@inheritDoc} */
@Override public boolean checkAndInitCacheWorkDir(CacheConfiguration cacheCfg) throws IgniteCheckedException {
return false;
}
}