Search in sources :

Example 1 with HDBException

use of herddb.client.HDBException in project herddb by diennea.

the class HerdDBPreparedStatement method doExecuteLargeUpdateWithParameters.

private long doExecuteLargeUpdateWithParameters(List<Object> actualParameters, boolean returnValues) throws SQLException {
    try {
        parent.discoverTableSpace(sql);
        DMLResult result = parent.getConnection().executeUpdate(parent.getTableSpace(), sql, parent.ensureTransaction(), returnValues, actualParameters);
        parent.statementFinished(result.transactionId);
        lastUpdateCount = result.updateCount;
        lastKey = result.key;
        return lastUpdateCount;
    } catch (ClientSideMetadataProviderException | HDBException err) {
        throw SQLExceptionUtils.wrapException(err);
    }
}
Also used : DMLResult(herddb.client.DMLResult) ClientSideMetadataProviderException(herddb.client.ClientSideMetadataProviderException) HDBException(herddb.client.HDBException)

Example 2 with HDBException

use of herddb.client.HDBException in project herddb by diennea.

the class HerdDBStatement method executeLargeUpdateImpl.

private long executeLargeUpdateImpl(String sql, boolean returnValues) throws SQLException {
    try {
        parent.discoverTableSpace(sql);
        DMLResult result = parent.getConnection().executeUpdate(parent.getTableSpace(), sql, parent.ensureTransaction(), returnValues, Collections.emptyList());
        parent.statementFinished(result.transactionId);
        lastUpdateCount = result.updateCount;
        lastKey = result.key;
        return lastUpdateCount;
    } catch (ClientSideMetadataProviderException | HDBException err) {
        throw SQLExceptionUtils.wrapException(err);
    }
}
Also used : DMLResult(herddb.client.DMLResult) ClientSideMetadataProviderException(herddb.client.ClientSideMetadataProviderException) HDBException(herddb.client.HDBException)

Example 3 with HDBException

use of herddb.client.HDBException in project herddb by diennea.

the class SQLExceptionUtils method wrapException.

public static SQLException wrapException(Exception exception) {
    SQLException res;
    if (exception instanceof HDBException) {
        HDBException ex = (HDBException) exception;
        res = new SQLException(ex.getMessage(), ex);
    } else {
        res = new SQLException(exception);
    }
    return res;
}
Also used : SQLException(java.sql.SQLException) HDBException(herddb.client.HDBException)

Example 4 with HDBException

use of herddb.client.HDBException in project herddb by diennea.

the class TableSpaceManager method downloadTableSpaceData.

private void downloadTableSpaceData() throws MetadataStorageManagerException, DataStorageManagerException, LogNotAvailableException {
    TableSpace tableSpaceData = metadataStorageManager.describeTableSpace(tableSpaceName);
    String leaderId = tableSpaceData.leaderId;
    if (this.nodeId.equals(leaderId)) {
        throw new DataStorageManagerException("cannot download data of tableSpace " + tableSpaceName + " from myself");
    }
    Optional<NodeMetadata> leaderAddress = metadataStorageManager.listNodes().stream().filter(n -> n.nodeId.equals(leaderId)).findAny();
    if (!leaderAddress.isPresent()) {
        throw new DataStorageManagerException("cannot download data of tableSpace " + tableSpaceName + " from leader " + leaderId + ", no metadata found");
    }
    NodeMetadata nodeData = leaderAddress.get();
    ClientConfiguration clientConfiguration = new ClientConfiguration(dbmanager.getTmpDirectory());
    clientConfiguration.set(ClientConfiguration.PROPERTY_CLIENT_USERNAME, dbmanager.getServerToServerUsername());
    clientConfiguration.set(ClientConfiguration.PROPERTY_CLIENT_PASSWORD, dbmanager.getServerToServerPassword());
    try (HDBClient client = new HDBClient(clientConfiguration)) {
        client.setClientSideMetadataProvider(new ClientSideMetadataProvider() {

            @Override
            public String getTableSpaceLeader(String tableSpace) throws ClientSideMetadataProviderException {
                return leaderId;
            }

            @Override
            public ServerHostData getServerHostData(String nodeId) throws ClientSideMetadataProviderException {
                return new ServerHostData(nodeData.host, nodeData.port, "?", nodeData.ssl, Collections.emptyMap());
            }
        });
        try (HDBConnection con = client.openConnection()) {
            ReplicaFullTableDataDumpReceiver receiver = new ReplicaFullTableDataDumpReceiver(this);
            int fetchSize = 10000;
            con.dumpTableSpace(tableSpaceName, receiver, fetchSize, false);
            long _start = System.currentTimeMillis();
            boolean ok = receiver.join(1000 * 60 * 60);
            if (!ok) {
                throw new DataStorageManagerException("Cannot receive dump within " + (System.currentTimeMillis() - _start) + " ms");
            }
            if (receiver.getError() != null) {
                throw new DataStorageManagerException("Error while receiving dump: " + receiver.getError(), receiver.getError());
            }
            this.actualLogSequenceNumber = receiver.logSequenceNumber;
            LOGGER.log(Level.SEVERE, "After download local actualLogSequenceNumber is " + actualLogSequenceNumber);
        } catch (ClientSideMetadataProviderException | HDBException | InterruptedException networkError) {
            throw new DataStorageManagerException(networkError);
        }
    }
}
Also used : HDBException(herddb.client.HDBException) SystablesTableManager(herddb.core.system.SystablesTableManager) CommitTransactionStatement(herddb.model.commands.CommitTransactionStatement) TableCheckpoint(herddb.core.AbstractTableManager.TableCheckpoint) Table(herddb.model.Table) ClientConfiguration(herddb.client.ClientConfiguration) IndexAlreadyExistsException(herddb.model.IndexAlreadyExistsException) Map(java.util.Map) DDLStatementExecutionResult(herddb.model.DDLStatementExecutionResult) LogNotAvailableException(herddb.log.LogNotAvailableException) CommitLogResult(herddb.log.CommitLogResult) ClientSideMetadataProviderException(herddb.client.ClientSideMetadataProviderException) Set(java.util.Set) LogSequenceNumber(herddb.log.LogSequenceNumber) ScanStatement(herddb.model.commands.ScanStatement) HDBClient(herddb.client.HDBClient) DropTableStatement(herddb.model.commands.DropTableStatement) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) Bytes(herddb.utils.Bytes) LogEntry(herddb.log.LogEntry) ReentrantReadWriteLock(java.util.concurrent.locks.ReentrantReadWriteLock) SysnodesTableManager(herddb.core.system.SysnodesTableManager) ArrayList(java.util.ArrayList) CreateIndexStatement(herddb.model.commands.CreateIndexStatement) TransactionContext(herddb.model.TransactionContext) Transaction(herddb.model.Transaction) BRINIndexManager(herddb.index.brin.BRINIndexManager) BiConsumer(java.util.function.BiConsumer) SystablestatsTableManager(herddb.core.system.SystablestatsTableManager) CommitLogListener(herddb.log.CommitLogListener) IndexDoesNotExistException(herddb.model.IndexDoesNotExistException) TableSpaceManagerStats(herddb.core.stats.TableSpaceManagerStats) LogEntryType(herddb.log.LogEntryType) LogEntryFactory(herddb.log.LogEntryFactory) DataStorageManager(herddb.storage.DataStorageManager) DropIndexStatement(herddb.model.commands.DropIndexStatement) AtomicLong(java.util.concurrent.atomic.AtomicLong) FullRecoveryNeededException(herddb.log.FullRecoveryNeededException) ServerHostData(herddb.network.ServerHostData) TableAlreadyExistsException(herddb.model.TableAlreadyExistsException) RollbackTransactionStatement(herddb.model.commands.RollbackTransactionStatement) TimeoutException(java.util.concurrent.TimeoutException) CreateTableStatement(herddb.model.commands.CreateTableStatement) JMXUtils(herddb.jmx.JMXUtils) TransactionResult(herddb.model.TransactionResult) MetadataStorageManager(herddb.metadata.MetadataStorageManager) KeyValue(herddb.network.KeyValue) Channel(herddb.network.Channel) SendResultCallback(herddb.network.SendResultCallback) ServerConfiguration(herddb.server.ServerConfiguration) DataStorageManagerException(herddb.storage.DataStorageManagerException) Index(herddb.model.Index) TableDoesNotExistException(herddb.model.TableDoesNotExistException) AlterTableStatement(herddb.model.commands.AlterTableStatement) DataScanner(herddb.model.DataScanner) DDLException(herddb.model.DDLException) StatementExecutionException(herddb.model.StatementExecutionException) Collection(java.util.Collection) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) BeginTransactionStatement(herddb.model.commands.BeginTransactionStatement) Logger(java.util.logging.Logger) TableAwareStatement(herddb.model.TableAwareStatement) EOFException(java.io.EOFException) Collectors(java.util.stream.Collectors) Objects(java.util.Objects) HDBConnection(herddb.client.HDBConnection) List(java.util.List) Message(herddb.network.Message) FullTableScanConsumer(herddb.storage.FullTableScanConsumer) SystransactionsTableManager(herddb.core.system.SystransactionsTableManager) Entry(java.util.Map.Entry) NodeMetadata(herddb.model.NodeMetadata) Optional(java.util.Optional) TableSpace(herddb.model.TableSpace) SysconfigTableManager(herddb.core.system.SysconfigTableManager) SysindexesTableManager(herddb.core.system.SysindexesTableManager) Statement(herddb.model.Statement) MetadataStorageManagerException(herddb.metadata.MetadataStorageManagerException) HashMap(java.util.HashMap) CompletableFuture(java.util.concurrent.CompletableFuture) SystablespacesTableManager(herddb.core.system.SystablespacesTableManager) Level(java.util.logging.Level) HashSet(java.util.HashSet) SysclientsTableManager(herddb.core.system.SysclientsTableManager) DumpedLogEntry(herddb.backup.DumpedLogEntry) StatementExecutionResult(herddb.model.StatementExecutionResult) CommitLog(herddb.log.CommitLog) ConcurrentSkipListSet(java.util.concurrent.ConcurrentSkipListSet) ClientSideMetadataProvider(herddb.client.ClientSideMetadataProvider) SystablespacereplicastateTableManager(herddb.core.system.SystablespacereplicastateTableManager) SQLPlannedOperationStatement(herddb.model.commands.SQLPlannedOperationStatement) StatementEvaluationContext(herddb.model.StatementEvaluationContext) Comparator(java.util.Comparator) SyscolumnsTableManager(herddb.core.system.SyscolumnsTableManager) Collections(java.util.Collections) TableManagerStats(herddb.core.stats.TableManagerStats) MemoryHashIndexManager(herddb.index.MemoryHashIndexManager) TableSpace(herddb.model.TableSpace) DataStorageManagerException(herddb.storage.DataStorageManagerException) ClientSideMetadataProviderException(herddb.client.ClientSideMetadataProviderException) ClientSideMetadataProvider(herddb.client.ClientSideMetadataProvider) ServerHostData(herddb.network.ServerHostData) TableCheckpoint(herddb.core.AbstractTableManager.TableCheckpoint) HDBException(herddb.client.HDBException) NodeMetadata(herddb.model.NodeMetadata) HDBConnection(herddb.client.HDBConnection) HDBClient(herddb.client.HDBClient) ClientConfiguration(herddb.client.ClientConfiguration)

Example 5 with HDBException

use of herddb.client.HDBException in project herddb by diennea.

the class HerdDBPreparedStatement method executeBatch.

@Override
public int[] executeBatch() throws SQLException {
    try {
        int[] results = new int[batch.size()];
        int i = 0;
        lastUpdateCount = 0;
        parent.discoverTableSpace(sql);
        List<DMLResult> dmlresults = parent.getConnection().executeUpdates(parent.getTableSpace(), sql, parent.ensureTransaction(), false, this.batch);
        for (DMLResult dmlresult : dmlresults) {
            results[i++] = (int) dmlresult.updateCount;
            parent.statementFinished(dmlresult.transactionId);
            lastUpdateCount += dmlresult.updateCount;
            lastKey = dmlresult.key;
        }
        return results;
    } catch (ClientSideMetadataProviderException | HDBException err) {
        throw SQLExceptionUtils.wrapException(err);
    } finally {
        batch.clear();
    }
}
Also used : DMLResult(herddb.client.DMLResult) ClientSideMetadataProviderException(herddb.client.ClientSideMetadataProviderException) HDBException(herddb.client.HDBException)

Aggregations

HDBException (herddb.client.HDBException)7 ClientSideMetadataProviderException (herddb.client.ClientSideMetadataProviderException)6 DMLResult (herddb.client.DMLResult)3 ScanResultSet (herddb.client.ScanResultSet)2 DumpedLogEntry (herddb.backup.DumpedLogEntry)1 ClientConfiguration (herddb.client.ClientConfiguration)1 ClientSideMetadataProvider (herddb.client.ClientSideMetadataProvider)1 HDBClient (herddb.client.HDBClient)1 HDBConnection (herddb.client.HDBConnection)1 EmptyScanResultSet (herddb.client.impl.EmptyScanResultSet)1 SingletonScanResultSet (herddb.client.impl.SingletonScanResultSet)1 TableCheckpoint (herddb.core.AbstractTableManager.TableCheckpoint)1 TableManagerStats (herddb.core.stats.TableManagerStats)1 TableSpaceManagerStats (herddb.core.stats.TableSpaceManagerStats)1 SysclientsTableManager (herddb.core.system.SysclientsTableManager)1 SyscolumnsTableManager (herddb.core.system.SyscolumnsTableManager)1 SysconfigTableManager (herddb.core.system.SysconfigTableManager)1 SysindexesTableManager (herddb.core.system.SysindexesTableManager)1 SysnodesTableManager (herddb.core.system.SysnodesTableManager)1 SystablesTableManager (herddb.core.system.SystablesTableManager)1