public void HandleFailureMessage(string code, string message)
 {
     DequeueMessage();
     Error = ParseServerException(code, message);
     CurrentResponseCollector?.DoneFailure();
     _logger?.Debug("S: ", new FailureMessage(code, message));
 }
Exemplo n.º 2
0
 public void Clear()
 {
     _resultBuilders.Clear();
     _sentMessages.Clear();
     CurrentResultBuilder = null;
     Error = null;
 }
Exemplo n.º 3
0
 public Neo4jException OnNeo4jError(Neo4jException e)
 {
     foreach (var handler in _handlers)
     {
         e = handler.OnNeo4jError(e);
     }
     return(e);
 }
 private Neo4jException OnNeo4jError(Neo4jException error)
 {
     if (error.IsRecoverableError())
     {
         _connection.AckFailure();
     }
     else
     {
         HasUnrecoverableError = true;
     }
     return(error);
 }
 public void HandleSuccessMessage(IDictionary <string, object> meta)
 {
     DequeueMessage();
     if (meta.ContainsKey("fields"))
     {
         // first success
         CurrentResultBuilder?.CollectFields(meta);
     }
     else
     {
         // second success
         // before summary method is called
         CurrentResultBuilder?.CollectSummary(meta);
     }
     Error = null;
     _logger?.Debug("S: ", new SuccessMessage(meta));
 }
Exemplo n.º 6
0
 private Neo4jException OnNeo4jError(Neo4jException error, Uri uri)
 {
     if (error.IsClusterNotALeaderError())
     {
         // The lead is no longer a leader, a.k.a. the write server no longer accepts writes
         // However the server is still available for possible reads.
         // Therefore we just remove it from ClusterView but keep it in connection pool.
         _clusterView.Remove(uri);
         return(new SessionExpiredException($"Server at {uri} no longer accepts writes"));
     }
     else if (error.IsForbiddenOnReadOnlyDatabaseError())
     {
         // The user was trying to run a write in a read session
         // So inform the user and let him try with a proper session mode
         return(new ClientException("Write queries cannot be performed in READ access mode."));
     }
     return(error);
 }
Exemplo n.º 7
0
        public void HandleFailureMessage(string code, string message)
        {
            var parts          = code.Split('.');
            var classification = parts[1].ToLowerInvariant();

            switch (classification)
            {
            case "clienterror":
                Error = new ClientException(code, message);
                break;

            case "transienterror":
                Error = new TransientException(code, message);
                break;

            default:
                Error = new DatabaseException(code, message);
                break;
            }
            _sentMessages.Dequeue();
            _resultBuilders.Dequeue();
            _logger?.Debug("S: ", new FailureMessage(code, message));
        }
        public void HandleFailureMessage(string code, string message)
        {
            DequeueMessage();
            var parts          = code.Split('.');
            var classification = parts[1].ToLowerInvariant();

            switch (classification)
            {
            case "clienterror":
                Error = new ClientException(code, message);
                break;

            case "transienterror":
                Error = new TransientException(code, message);
                break;

            default:
                Error = new DatabaseException(code, message);
                break;
            }
            CurrentResultBuilder?.InvalidateResult(); // an error received, so the result is broken
            _logger?.Debug("S: ", new FailureMessage(code, message));
        }
 public static bool IsForbiddenOnReadOnlyDatabaseError(this Neo4jException error)
 {
     return(error.Code.Equals("Neo.ClientError.General.ForbiddenOnReadOnlyDatabase"));
 }
 public static bool IsClusterNotALeaderError(this Neo4jException error)
 {
     return(error.Code.Equals("Neo.ClientError.Cluster.NotALeader"));
 }
 public static bool IsClusterError(this Neo4jException error)
 {
     return(IsClusterNotALeaderError(error) ||
            IsForbiddenOnReadOnlyDatabaseError(error));
 }
 public static bool IsRecoverableError(this Neo4jException error)
 {
     return((error is ClientException || error is TransientException) && !IsClusterError(error));
 }
Exemplo n.º 13
0
 public Neo4jException OnNeo4jError(Neo4jException e)
 {
     return(_onNeo4jErrorFunc.Invoke(e));
 }
Exemplo n.º 14
0
 private bool IsRecoverableError(Neo4jException error)
 {
     return(error is ClientException || error is TransientException);
 }