Search in sources :

Example 51 with KernelException

use of org.neo4j.exceptions.KernelException in project neo4j by neo4j.

the class StoreUpgrader method migrateToIsolatedDirectory.

private void migrateToIsolatedDirectory(DatabaseLayout directoryLayout, DatabaseLayout migrationLayout, String versionToMigrateFrom) {
    try {
        for (Map.Entry<String, StoreMigrationParticipant> participantEntry : participants.entrySet()) {
            ProgressReporter progressReporter = progressMonitor.startSection(participantEntry.getKey());
            String versionToMigrateTo = storeVersionCheck.configuredVersion();
            IndexImporterFactory indexImporterFactory = new IndexImporterFactoryImpl(config);
            participantEntry.getValue().migrate(directoryLayout, migrationLayout, progressReporter, versionToMigrateFrom, versionToMigrateTo, indexImporterFactory);
            progressReporter.completed();
        }
    } catch (IOException | UncheckedIOException | KernelException e) {
        throw new UnableToUpgradeException("Failure doing migration", e);
    }
}
Also used : StoreMigrationParticipant(org.neo4j.storageengine.migration.StoreMigrationParticipant) IndexImporterFactory(org.neo4j.internal.batchimport.IndexImporterFactory) ProgressReporter(org.neo4j.common.ProgressReporter) UncheckedIOException(java.io.UncheckedIOException) IndexImporterFactoryImpl(org.neo4j.kernel.impl.index.schema.IndexImporterFactoryImpl) IOException(java.io.IOException) UncheckedIOException(java.io.UncheckedIOException) KernelException(org.neo4j.exceptions.KernelException) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map)

Example 52 with KernelException

use of org.neo4j.exceptions.KernelException in project neo4j by neo4j.

the class SchemaStatementProcedure method createStatement.

public static String createStatement(TokenRead tokenRead, IndexDescriptor indexDescriptor) throws ProcedureException {
    try {
        final String name = indexDescriptor.getName();
        final String labelsOrRelTypes = labelsOrRelTypesAsStringArray(tokenRead, indexDescriptor.schema());
        final String properties = propertiesAsStringArray(tokenRead, indexDescriptor.schema());
        switch(indexDescriptor.getIndexType()) {
            case BTREE:
                String btreeConfig = btreeConfigAsString(indexDescriptor);
                final String providerName = indexDescriptor.getIndexProvider().name();
                return format(CREATE_BTREE_INDEX, name, labelsOrRelTypes, properties, providerName, btreeConfig);
            case FULLTEXT:
                String fulltextConfig = fulltextConfigAsString(indexDescriptor);
                switch(indexDescriptor.schema().entityType()) {
                    case NODE:
                        return format(CREATE_NODE_FULLTEXT_INDEX, name, labelsOrRelTypes, properties, fulltextConfig);
                    case RELATIONSHIP:
                        return format(CREATE_RELATIONSHIP_FULLTEXT_INDEX, name, labelsOrRelTypes, properties, fulltextConfig);
                    default:
                        throw new IllegalArgumentException("Did not recognize entity type " + indexDescriptor.schema().entityType());
                }
            default:
                throw new IllegalArgumentException("Did not recognize index type " + indexDescriptor.getIndexType());
        }
    } catch (KernelException e) {
        throw new ProcedureException(Status.General.UnknownError, e, "Failed to re-create create statement.");
    }
}
Also used : ProcedureException(org.neo4j.internal.kernel.api.exceptions.ProcedureException) PropertyKeyIdNotFoundKernelException(org.neo4j.internal.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException) IndexNotFoundKernelException(org.neo4j.internal.kernel.api.exceptions.schema.IndexNotFoundKernelException) KernelException(org.neo4j.exceptions.KernelException)

Example 53 with KernelException

use of org.neo4j.exceptions.KernelException in project neo4j by neo4j.

the class NodeEntity method createRelationshipTo.

@Override
public Relationship createRelationshipTo(Node otherNode, RelationshipType type) {
    if (otherNode == null) {
        throw new IllegalArgumentException("Other node is null.");
    }
    KernelTransaction transaction = internalTransaction.kernelTransaction();
    int relationshipTypeId;
    try {
        relationshipTypeId = transaction.tokenWrite().relationshipTypeGetOrCreateForName(type.name());
    } catch (IllegalTokenNameException e) {
        throw new IllegalArgumentException(e);
    } catch (TokenCapacityExceededKernelException e) {
        throw new ConstraintViolationException(e.getMessage(), e);
    } catch (KernelException e) {
        throw new TransactionFailureException("Unknown error trying to create relationship type token", e);
    }
    try {
        long relationshipId = transaction.dataWrite().relationshipCreate(nodeId, relationshipTypeId, otherNode.getId());
        return internalTransaction.newRelationshipEntity(relationshipId, nodeId, relationshipTypeId, otherNode.getId());
    } catch (EntityNotFoundException e) {
        throw new NotFoundException("Node[" + e.entityId() + "] is deleted and cannot be used to create a relationship");
    } catch (InvalidTransactionTypeKernelException e) {
        throw new ConstraintViolationException(e.getMessage(), e);
    }
}
Also used : KernelTransaction(org.neo4j.kernel.api.KernelTransaction) TransactionFailureException(org.neo4j.graphdb.TransactionFailureException) InvalidTransactionTypeKernelException(org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException) ConstraintViolationException(org.neo4j.graphdb.ConstraintViolationException) NotFoundException(org.neo4j.graphdb.NotFoundException) EntityNotFoundException(org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException) TokenCapacityExceededKernelException(org.neo4j.internal.kernel.api.exceptions.schema.TokenCapacityExceededKernelException) EntityNotFoundException(org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException) IllegalTokenNameException(org.neo4j.internal.kernel.api.exceptions.schema.IllegalTokenNameException) PropertyKeyIdNotFoundKernelException(org.neo4j.internal.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException) InvalidTransactionTypeKernelException(org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException) TokenCapacityExceededKernelException(org.neo4j.internal.kernel.api.exceptions.schema.TokenCapacityExceededKernelException) LabelNotFoundKernelException(org.neo4j.internal.kernel.api.exceptions.LabelNotFoundKernelException) KernelException(org.neo4j.exceptions.KernelException)

Example 54 with KernelException

use of org.neo4j.exceptions.KernelException in project neo4j by neo4j.

the class NodeEntity method addLabel.

@Override
public void addLabel(Label label) {
    KernelTransaction transaction = internalTransaction.kernelTransaction();
    int labelId;
    try {
        labelId = transaction.tokenWrite().labelGetOrCreateForName(label.name());
    } catch (IllegalTokenNameException e) {
        throw new ConstraintViolationException(format("Invalid label name '%s'.", label.name()), e);
    } catch (TokenCapacityExceededKernelException e) {
        throw new ConstraintViolationException(e.getMessage(), e);
    } catch (KernelException e) {
        throw new TransactionFailureException("Unknown error trying to create label token", e);
    }
    try {
        transaction.dataWrite().nodeAddLabel(getId(), labelId);
    } catch (ConstraintValidationException e) {
        throw new ConstraintViolationException(e.getUserMessage(transaction.tokenRead()), e);
    } catch (EntityNotFoundException e) {
        throw new NotFoundException("No node with id " + getId() + " found.", e);
    } catch (KernelException e) {
        throw new ConstraintViolationException(e.getMessage(), e);
    }
}
Also used : KernelTransaction(org.neo4j.kernel.api.KernelTransaction) TransactionFailureException(org.neo4j.graphdb.TransactionFailureException) ConstraintValidationException(org.neo4j.internal.kernel.api.exceptions.schema.ConstraintValidationException) ConstraintViolationException(org.neo4j.graphdb.ConstraintViolationException) NotFoundException(org.neo4j.graphdb.NotFoundException) EntityNotFoundException(org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException) TokenCapacityExceededKernelException(org.neo4j.internal.kernel.api.exceptions.schema.TokenCapacityExceededKernelException) EntityNotFoundException(org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException) IllegalTokenNameException(org.neo4j.internal.kernel.api.exceptions.schema.IllegalTokenNameException) PropertyKeyIdNotFoundKernelException(org.neo4j.internal.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException) InvalidTransactionTypeKernelException(org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException) TokenCapacityExceededKernelException(org.neo4j.internal.kernel.api.exceptions.schema.TokenCapacityExceededKernelException) LabelNotFoundKernelException(org.neo4j.internal.kernel.api.exceptions.LabelNotFoundKernelException) KernelException(org.neo4j.exceptions.KernelException)

Example 55 with KernelException

use of org.neo4j.exceptions.KernelException in project neo4j by neo4j.

the class NodeEntity method setProperty.

@Override
public void setProperty(String key, Object value) {
    KernelTransaction transaction = internalTransaction.kernelTransaction();
    int propertyKeyId;
    try {
        propertyKeyId = transaction.tokenWrite().propertyKeyGetOrCreateForName(key);
    } catch (IllegalTokenNameException e) {
        throw new IllegalArgumentException(format("Invalid property key '%s'.", key), e);
    } catch (TokenCapacityExceededKernelException e) {
        throw new ConstraintViolationException(e.getMessage(), e);
    } catch (KernelException e) {
        throw new TransactionFailureException("Unknown error trying to create property key token", e);
    }
    try {
        transaction.dataWrite().nodeSetProperty(nodeId, propertyKeyId, Values.of(value, false));
    } catch (ConstraintValidationException e) {
        throw new ConstraintViolationException(e.getUserMessage(transaction.tokenRead()), e);
    } catch (IllegalArgumentException e) {
        try {
            transaction.rollback();
        } catch (org.neo4j.internal.kernel.api.exceptions.TransactionFailureException ex) {
            ex.addSuppressed(e);
            throw new TransactionFailureException("Fail to rollback transaction.", ex);
        }
        throw e;
    } catch (EntityNotFoundException e) {
        throw new NotFoundException(e);
    } catch (KernelException e) {
        throw new ConstraintViolationException(e.getMessage(), e);
    }
}
Also used : KernelTransaction(org.neo4j.kernel.api.KernelTransaction) ConstraintValidationException(org.neo4j.internal.kernel.api.exceptions.schema.ConstraintValidationException) NotFoundException(org.neo4j.graphdb.NotFoundException) EntityNotFoundException(org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException) TokenCapacityExceededKernelException(org.neo4j.internal.kernel.api.exceptions.schema.TokenCapacityExceededKernelException) EntityNotFoundException(org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException) IllegalTokenNameException(org.neo4j.internal.kernel.api.exceptions.schema.IllegalTokenNameException) TransactionFailureException(org.neo4j.graphdb.TransactionFailureException) ConstraintViolationException(org.neo4j.graphdb.ConstraintViolationException) PropertyKeyIdNotFoundKernelException(org.neo4j.internal.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException) InvalidTransactionTypeKernelException(org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException) TokenCapacityExceededKernelException(org.neo4j.internal.kernel.api.exceptions.schema.TokenCapacityExceededKernelException) LabelNotFoundKernelException(org.neo4j.internal.kernel.api.exceptions.LabelNotFoundKernelException) KernelException(org.neo4j.exceptions.KernelException)

Aggregations

KernelException (org.neo4j.exceptions.KernelException)58 IndexNotFoundKernelException (org.neo4j.internal.kernel.api.exceptions.schema.IndexNotFoundKernelException)22 InvalidTransactionTypeKernelException (org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException)21 SchemaKernelException (org.neo4j.internal.kernel.api.exceptions.schema.SchemaKernelException)16 KernelTransaction (org.neo4j.kernel.api.KernelTransaction)15 IndexDescriptor (org.neo4j.internal.schema.IndexDescriptor)13 TokenCapacityExceededKernelException (org.neo4j.internal.kernel.api.exceptions.schema.TokenCapacityExceededKernelException)12 Test (org.junit.jupiter.api.Test)11 ProcedureException (org.neo4j.internal.kernel.api.exceptions.ProcedureException)10 PropertyKeyIdNotFoundKernelException (org.neo4j.internal.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException)10 QueryExecutionKernelException (org.neo4j.kernel.impl.query.QueryExecutionKernelException)10 List (java.util.List)8 NotFoundException (org.neo4j.graphdb.NotFoundException)8 SchemaRead (org.neo4j.internal.kernel.api.SchemaRead)8 Arrays (java.util.Arrays)7 Collectors (java.util.stream.Collectors)7 ConstraintViolationException (org.neo4j.graphdb.ConstraintViolationException)7 EntityNotFoundException (org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException)7 IllegalTokenNameException (org.neo4j.internal.kernel.api.exceptions.schema.IllegalTokenNameException)7 ArrayList (java.util.ArrayList)6