Esempio n. 1
0
    public void TestMessageTooLong()
    {
        int    maxMessageLength   = KuduStatus.MaxMessageLength;
        string abbreviation       = KuduStatus.Abbreviation;
        int    abbreviationLength = abbreviation.Length;

        // Test string that will not get abbreviated.
        var str    = new string('a', maxMessageLength);
        var status = KuduStatus.Corruption(str);

        Assert.Equal(str, status.Message);

        // Test string just over the limit that will get abbreviated.
        str    = new string('a', maxMessageLength + 1);
        status = KuduStatus.Corruption(str);
        Assert.Equal(maxMessageLength, status.Message.Length);
        Assert.Equal(
            status.Message.Substring(maxMessageLength - abbreviationLength),
            abbreviation);

        // Test string that's way too big that will get abbreviated.
        str    = new string('a', maxMessageLength * 2);
        status = KuduStatus.Corruption(str);
        Assert.Equal(maxMessageLength, status.Message.Length);
        Assert.Equal(
            status.Message.Substring(maxMessageLength - abbreviationLength),
            abbreviation);
    }
 public NonCoveredRangeException(
     byte[] nonCoveredRangeStart,
     byte[] nonCoveredRangeEnd)
     : base(KuduStatus.NotFound(GetMessage(
                                    nonCoveredRangeStart, nonCoveredRangeEnd)))
 {
     NonCoveredRangeStart = nonCoveredRangeStart;
     NonCoveredRangeEnd   = nonCoveredRangeEnd;
 }
Esempio n. 3
0
    public void TestPosixCode()
    {
        var status = KuduStatus.NotFound("File not found", 2);

        Assert.False(status.IsOk);
        Assert.False(status.IsAborted);
        Assert.True(status.IsNotFound);
        Assert.Equal(2, status.PosixCode);
        Assert.Equal("Not found: File not found (error 2)", status.ToString());
    }
    private static KuduStatus GetStatus(List <KuduStatus> errors)
    {
        var stringBuilder = new StringBuilder("Per row errors:");

        foreach (var error in errors)
        {
            stringBuilder.Append($"{Environment.NewLine}{error.Message}");
        }
        return(KuduStatus.InvalidArgument(stringBuilder.ToString()));
    }
Esempio n. 5
0
    public async Task <KuduConnection> GetConnectionAsync(
        ServerInfo serverInfo, CancellationToken cancellationToken = default)
    {
        if (_disposed)
        {
            ThrowObjectDisposedException();
        }

        IPEndPoint            endpoint = serverInfo.Endpoint;
        Task <KuduConnection>?connectionTask;
        bool newConnection = false;

        lock (_connections)
        {
            if (!_connections.TryGetValue(endpoint, out connectionTask))
            {
                connectionTask = _connectionFactory.ConnectAsync(serverInfo, cancellationToken);
                _connections.Add(endpoint, connectionTask);
                newConnection = true;
            }
        }

        try
        {
            var connection = await connectionTask.ConfigureAwait(false);

            if (newConnection)
            {
                connection.ConnectionClosed.UnsafeRegister(
                    state => RemoveConnection((IPEndPoint)state !),
                    endpoint);
            }

            return(connection);
        }
        catch (Exception ex)
        {
            // Failed to negotiate a new connection.
            RemoveFaultedConnection(endpoint);

            _logger.UnableToConnectToServer(ex, serverInfo);

            if (ex is NonRecoverableException)
            {
                // Always retry, except for these.
                throw;
            }

            // The upper-level caller should handle the exception and
            // retry using a new connection.
            throw new RecoverableException(
                      KuduStatus.NetworkError(ex.Message), ex);
        }
    }
Esempio n. 6
0
    public void TestStatusNonPosix()
    {
        var status = KuduStatus.Aborted("foo");

        Assert.False(status.IsOk);
        Assert.True(status.IsAborted);
        Assert.Equal(ErrorCode.Aborted, status.Code);
        Assert.Equal("foo", status.Message);
        Assert.Equal(-1, status.PosixCode);
        Assert.Equal("Aborted: foo", status.ToString());
    }
    private static async Task <IPAddress[]> GetHostAddressesAsync(string hostName)
    {
        Exception?exception = null;

        try
        {
            var ipAddresses = await Dns.GetHostAddressesAsync(hostName).ConfigureAwait(false);

            if (ipAddresses.Length > 0)
            {
                return(ipAddresses);
            }
        }
        catch (Exception ex)
        {
            exception = ex;
        }

        var status = KuduStatus.IOError($"Unable to resolve address for {hostName}");

        throw new NonRecoverableException(status, exception);
    }
 public InvalidAuthzTokenException(KuduStatus status)
     : base(status)
 {
 }
 public RecoverableException(KuduStatus status)
     : base(status)
 {
 }
 public RecoverableException(KuduStatus status, Exception?innerException)
     : base(status, innerException)
 {
 }
 public FaultTolerantScannerExpiredException(KuduStatus status)
     : base(status)
 {
 }
 public NoLeaderFoundException(string message, Exception?innerException)
     : base(KuduStatus.NetworkError(message), innerException)
 {
 }
Esempio n. 13
0
 public RpcRemoteException(KuduStatus status, ErrorStatusPB errorPb)
     : base(status)
 {
     ErrorPb = errorPb;
 }
Esempio n. 14
0
 public KuduException(KuduStatus status, Exception?innerException)
     : base(status.Message, innerException)
 {
     Status = status;
 }
Esempio n. 15
0
 public KuduException(KuduStatus status)
     : base(status.Message)
 {
     Status = status;
 }