public IndexInfo(ILSMIndex index, int datasetId, LocalResource localResource, int partition) { this.index = index; this.datasetId = datasetId; this.localResource = localResource; this.resourceId = localResource.getId(); this.partition = partition; }
private long getResourceIDfromResourcePath(String resourcePath) throws HyracksDataException { LocalResource lr = resourceRepository.get(resourcePath); if (lr == null) { return -1; } return lr.getId(); }
@Override public synchronized void delete(String path) throws HyracksDataException { LocalResource resource = name2ResourceMap.get(path); if (resource == null) { throw new HyracksDataException("Resource doesn't exist"); } id2ResourceMap.remove(resource.getId()); name2ResourceMap.remove(path); }
@Override public synchronized void insert(LocalResource resource) throws HyracksDataException { long id = resource.getId(); if (id2ResourceMap.containsKey(id)) { throw new HyracksDataException("Duplicate resource"); } id2ResourceMap.put(id, resource); name2ResourceMap.put(resource.getPath(), resource); }
public synchronized Map<Long, LocalResource> getResources(Predicate<LocalResource> filter) throws HyracksDataException { Map<Long, LocalResource> resourcesMap = new HashMap<>(); for (Path root : storageRoots) { final Collection<File> files = FileUtils.listFiles(root.toFile(), METADATA_FILES_FILTER, ALL_DIR_FILTER); try { for (File file : files) { final LocalResource localResource = readLocalResource(file); if (filter.test(localResource)) { resourcesMap.put(localResource.getId(), localResource); } } } catch (IOException e) { throw HyracksDataException.create(e); } } return resourcesMap; }
private long getResourceId() throws HyracksDataException { LocalResource lr = localResourceRepository.get(resourceRef.getRelativePath()); return lr == null ? -1 : lr.getId(); }
private static void assignIds(LocalResource localResource, DatasetResourceReference lrr) { final DatasetLocalResource dsResource = (DatasetLocalResource) localResource.getResource(); lrr.datasetId = dsResource.getDatasetId(); lrr.partitionId = dsResource.getPartition(); lrr.resourceId = localResource.getId(); }
private void scan(FrameTupleAppender appender) throws IOException { ITreeIndex treeIndex = (ITreeIndex) treeIndexHelper.getIndexInstance(); LocalResource resource = treeIndexHelper.getResource(); ISearchOperationCallback searchCallback = searchCallbackFactory.createSearchOperationCallback(resource.getId(), ctx, null); IIndexAccessParameters iap = new IndexAccessParameters(NoOpOperationCallback.INSTANCE, searchCallback); ITreeIndexAccessor indexAccessor = (ITreeIndexAccessor) treeIndex.createAccessor(iap); try { doScan(treeIndex, indexAccessor, appender); } finally { indexAccessor.destroy(); } }
Mockito.when(localResource.getId()).thenReturn(nextResourceId++); IndexInfo indexInfo = new IndexInfo(index, DATASET_ID, localResource, partition); indexInfo.setOpen(true);
@Override public IModificationOperationCallback createModificationOperationCallback(LocalResource resource, IHyracksTaskContext ctx, IOperatorNodePushable operatorNodePushable) throws HyracksDataException { ITransactionSubsystem txnSubsystem = txnSubsystemProvider.getTransactionSubsystem(ctx); IResourceLifecycleManager<IIndex> indexLifeCycleManager = txnSubsystem.getApplicationContext().getDatasetLifecycleManager(); ILSMIndex index = (ILSMIndex) indexLifeCycleManager.get(resource.getPath()); if (index == null) { throw new HyracksDataException("Index(id:" + resource.getId() + ") is not registered."); } try { IJobletEventListenerFactory fact = ctx.getJobletContext().getJobletEventListenerFactory(); ITransactionContext txnCtx = txnSubsystem.getTransactionManager() .getTransactionContext(((IJobEventListenerFactory) fact).getTxnId(datasetId)); DatasetLocalResource aResource = (DatasetLocalResource) resource.getResource(); IModificationOperationCallback modCallback = new PrimaryIndexModificationOperationCallback( new DatasetId(datasetId), primaryKeyFields, txnCtx, txnSubsystem.getLockManager(), txnSubsystem, resource.getId(), aResource.getPartition(), resourceType, indexOp, operatorNodePushable); txnCtx.register(resource.getId(), aResource.getPartition(), index, modCallback, true); return modCallback; } catch (ACIDException e) { throw HyracksDataException.create(e); } } }
@Override public IModificationOperationCallback createModificationOperationCallback(LocalResource resource, IHyracksTaskContext ctx, IOperatorNodePushable operatorNodePushable) throws HyracksDataException { DatasetLocalResource aResource = (DatasetLocalResource) resource.getResource(); ITransactionSubsystem txnSubsystem = txnSubsystemProvider.getTransactionSubsystem(ctx); IResourceLifecycleManager indexLifeCycleManager = txnSubsystem.getApplicationContext().getDatasetLifecycleManager(); ILSMIndex index = (ILSMIndex) indexLifeCycleManager.get(resource.getPath()); if (index == null) { throw new HyracksDataException("Index(id:" + resource.getId() + ") is not registered."); } try { IJobletEventListenerFactory fact = ctx.getJobletContext().getJobletEventListenerFactory(); ITransactionContext txnCtx = txnSubsystem.getTransactionManager() .getTransactionContext(((IJobEventListenerFactory) fact).getTxnId(datasetId)); IModificationOperationCallback modCallback = new UpsertOperationCallback(new DatasetId(datasetId), primaryKeyFields, txnCtx, txnSubsystem.getLockManager(), txnSubsystem, resource.getId(), aResource.getPartition(), resourceType, indexOp); txnCtx.register(resource.getId(), aResource.getPartition(), index, modCallback, true); return modCallback; } catch (ACIDException e) { throw HyracksDataException.create(e); } } }
@Override public IModificationOperationCallback createModificationOperationCallback(LocalResource resource, IHyracksTaskContext ctx, IOperatorNodePushable operatorNodePushable) throws HyracksDataException { ITransactionSubsystem txnSubsystem = txnSubsystemProvider.getTransactionSubsystem(ctx); IResourceLifecycleManager indexLifeCycleManager = txnSubsystem.getApplicationContext().getDatasetLifecycleManager(); ILSMIndex index = (ILSMIndex) indexLifeCycleManager.get(resource.getPath()); if (index == null) { throw new HyracksDataException("Index(id:" + resource.getId() + ") is not registered."); } try { IJobletEventListenerFactory fact = ctx.getJobletContext().getJobletEventListenerFactory(); ITransactionContext txnCtx = txnSubsystem.getTransactionManager() .getTransactionContext(((IJobEventListenerFactory) fact).getTxnId(datasetId)); DatasetLocalResource aResource = (DatasetLocalResource) resource.getResource(); IModificationOperationCallback modCallback = new SecondaryIndexModificationOperationCallback( new DatasetId(datasetId), primaryKeyFields, txnCtx, txnSubsystem.getLockManager(), txnSubsystem, resource.getId(), aResource.getPartition(), resourceType, indexOp); txnCtx.register(resource.getId(), aResource.getPartition(), index, modCallback, false); return modCallback; } catch (ACIDException e) { throw HyracksDataException.create(e); } } }
public void register(LocalResource resource, ILSMIndex index) throws HyracksDataException { long resourceID = resource.getId(); if (!datasetInfo.isRegistered()) { synchronized (datasetInfo) { if (!datasetInfo.isRegistered()) { datasetInfo.setExternal(index.getNumberOfAllMemoryComponents() == 0); datasetInfo.setRegistered(true); datasetInfo.setDurable(index.isDurable()); } } } if (datasetInfo.getIndexes().containsKey(resourceID)) { throw new HyracksDataException("Index with resource ID " + resourceID + " already exists."); } if (index == null) { throw new HyracksDataException("Attempt to register a null index"); } datasetInfo.addIndex(resourceID, new IndexInfo(index, datasetInfo.getDatasetID(), resource, ((DatasetLocalResource) resource.getResource()).getPartition())); }
public void open() throws HyracksDataException { // Open the index and get the instance indexDataflowHelper.open(); index = (ExternalBTree) indexDataflowHelper.getIndexInstance(); // Create search key and search predicate objects searchKey = new ArrayTupleReference(); searchKeyTupleBuilder = new ArrayTupleBuilder(FilesIndexDescription.FILE_KEY_SIZE); searchKeyTupleBuilder.reset(); searchKeyTupleBuilder.addField(intSerde, currentFileNumber); searchKey.reset(searchKeyTupleBuilder.getFieldEndOffsets(), searchKeyTupleBuilder.getByteArray()); MultiComparator searchCmp = BTreeUtils.getSearchMultiComparator(index.getComparatorFactories(), searchKey); searchPredicate = new RangePredicate(searchKey, searchKey, true, true, searchCmp, searchCmp); // create the accessor and the cursor using the passed version ISearchOperationCallback searchCallback = searchCallbackFactory .createSearchOperationCallback(indexDataflowHelper.getResource().getId(), ctx, null); fileIndexAccessor = index.createAccessor(searchCallback, version); fileIndexSearchCursor = fileIndexAccessor.createSearchCursor(false); }
appender = new FrameTupleAppender(new VSizeFrame(ctx)); ISearchOperationCallback searchCallback = searchCallbackFactory.createSearchOperationCallback(indexHelper.getResource().getId(), ctx, null);
dclm.open(indexPath); final ILSMIndex index = (ILSMIndex) dclm.get(indexPath); final long resourceId = ncAppCtx.getLocalResourceRepository().get(indexPath).getId(); final DatasetLocalResource datasetLocalResource = (DatasetLocalResource) ncAppCtx.getLocalResourceRepository().get(indexPath).getResource();
long resourceId = lr == null ? -1 : lr.getId(); if (resourceId != -1) { localResourceRepository.delete(resourceRef.getRelativePath());
appender = new FrameTupleAppender(new VSizeFrame(ctx)); ISearchOperationCallback searchCallback = searchCallbackFactory.createSearchOperationCallback(indexHelper.getResource().getId(), ctx, null);
appender = new FrameTupleAppender(new VSizeFrame(ctx), true); ISearchOperationCallback searchCallback = searchCallbackFactory.createSearchOperationCallback(indexHelper.getResource().getId(), ctx, null); IIndexAccessParameters iap = new IndexAccessParameters(NoOpOperationCallback.INSTANCE, searchCallback); addAdditionalIndexAccessorParams(iap);
abstractModCallback = (AbstractIndexModificationOperationCallback) modCallback; searchCallback = (LockThenSearchOperationCallback) searchCallbackFactory .createSearchOperationCallback(indexHelper.getResource().getId(), ctx, this); IIndexAccessParameters iap = new IndexAccessParameters(abstractModCallback, searchCallback); indexAccessor = index.createAccessor(iap);