void setRepository(SchemaRepository xdmRepo) { this.xdmRepo = xdmRepo; this.hState = xdmRepo.getHealthManagement().getHealthState(); xdmRepo.getHealthManagement().addHealthChangeListener(this); ((SchemaRepositoryImpl) xdmRepo).setStaticRepository(); }
@Override public long beginTransaction(TransactionIsolation txIsolation) throws BagriException { logger.trace("beginTransaction.enter; current txId: {}", txId); repo.getHealthManagement().checkClusterState(); if (txId != TX_NO) { throw new BagriException("Nested client transactions are not supported", BagriException.ecTransNoNested); } TransactionStarter txs = new TransactionStarter(clientId, txIsolation); Future<Long> future = execService.submitToKeyOwner(txs, clientId); try { txId = future.get(); } catch (InterruptedException | ExecutionException ex) { logger.error("beginTransaction; error getting result", ex); throw new BagriException(ex, BagriException.ecTransaction); } logger.trace("beginTransaction.exit; returnig txId: {}", txId); return txId; }
public void setClientContext(ClassPathXmlApplicationContext clientContext) { if (clientContext == null) { if (xdmRepo != null) { xdmRepo.getHealthManagement().removeHealthChangeListener(this); xdmRepo.close(); xdmRepo = null; } execService = null; schemaInstance = null; // shutdown ? } else { //schemaInstance = clientContext.getBean(hz_instance, HazelcastInstance.class); schemaInstance = HazelcastUtils.getHazelcastClientByName(entityName); logger.trace("setClientContext; got HZ instance: {}, from {}", schemaInstance, HazelcastClient.getAllHazelcastClients()); execService = schemaInstance.getExecutorService(PN_XDM_SCHEMA_POOL); //setRepository(clientContext.getBean(XDMRepository.class)); setRepository((SchemaRepository) schemaInstance.getUserContext().get(bean_id)); } }
String value = props.getProperty(pn_client_healthCheck); if (value != null) { getHealthManagement().setCheckSate(HealthCheckState.valueOf(value));
@Override public ResultCursor<DocumentAccessor> removeDocuments(String pattern, Properties props) throws BagriException { logger.trace("removeDocuments.enter; pattern: {}", pattern); repo.getHealthManagement().checkClusterState(); props = checkDocumentProperties(props); DocumentsRemover task = new DocumentsRemover(repo.getClientId(), repo.getTransactionId(), props, pattern); ResultCursor<DocumentAccessor> result = runIterableDocumentTask(task, props); logger.trace("removeDocuments.exit; results: {}", result); return result; }
@Override public <T> ResultCursor<DocumentAccessor> storeDocuments(Map<String, T> documents, Properties props) throws BagriException { logger.trace("storeDocuments.enter; documents: {}; props: {}", documents, props); if (documents == null || documents.isEmpty()) { throw new BagriException("Empty Document collection provided", ecDocument); } repo.getHealthManagement().checkClusterState(); props = checkDocumentProperties(props); DocumentsCreator task = new DocumentsCreator(repo.getClientId(), repo.getTransactionId(), props, (Map<String, Object>) documents); // TODO: split documents between members properly.. ResultCursor<DocumentAccessor> result = runIterableDocumentTask(task, props); logger.trace("storeDocuments.exit; results: {}", result); return result; }
@Override public DocumentAccessor removeDocument(String uri, Properties props) throws BagriException { logger.trace("removeDocument.enter; uri: {}", uri); repo.getHealthManagement().checkClusterState(); props = checkDocumentProperties(props); DocumentRemover task = new DocumentRemover(repo.getClientId(), repo.getTransactionId(), props, uri, repo.getDistributionStrategy()); DocumentAccessor result = runSimpleDocumentTask(task, props); logger.trace("removeDocument.exit; returning: {}", result); return result; }
@Override public <T> DocumentAccessor storeDocument(String uri, T content, Properties props) throws BagriException { logger.trace("storeDocument.enter; uri: {}; content: {}; props: {}", uri, content, props); if (content == null) { throw new BagriException("Document content can not be null", ecDocument); } repo.getHealthManagement().checkClusterState(); props = checkDocumentProperties(props); DocumentCreator task = new DocumentCreator(repo.getClientId(), repo.getTransactionId(), props, uri, repo.getDistributionStrategy(), content); task.setRepository(repo); DocumentAccessor result = runSimpleDocumentTask(task, props); logger.trace("storeDocument.exit; returning: {}", result); return result; }