mirror of https://github.com/dapr/docs.git
Merge branch 'v1.15' into net9-sdk-quickstart-docs
This commit is contained in:
commit
696ada4e4e
|
@ -2,6 +2,6 @@
|
|||
type: docs
|
||||
title: "Debugging Dapr applications and the Dapr control plane"
|
||||
linkTitle: "Debugging"
|
||||
weight: 50
|
||||
weight: 60
|
||||
description: "Guides on how to debug Dapr applications and the Dapr control plane"
|
||||
---
|
|
@ -2,6 +2,6 @@
|
|||
type: docs
|
||||
title: "Components"
|
||||
linkTitle: "Components"
|
||||
weight: 30
|
||||
weight: 40
|
||||
description: "Learn more about developing Dapr's pluggable and middleware components"
|
||||
---
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
type: docs
|
||||
title: "Error codes"
|
||||
linkTitle: "Error codes"
|
||||
weight: 20
|
||||
description: "Error codes and messages you may encounter while using Dapr"
|
||||
---
|
||||
|
|
@ -1,20 +1,11 @@
|
|||
---
|
||||
type: docs
|
||||
title: "Error codes returned by APIs"
|
||||
linkTitle: "Error codes"
|
||||
description: "Detailed reference of the Dapr API error codes"
|
||||
weight: 1400
|
||||
title: "Error codes reference guide"
|
||||
linkTitle: "Reference"
|
||||
description: "List of gRPC and HTTP error codes in Dapr and their descriptions"
|
||||
weight: 20
|
||||
---
|
||||
|
||||
For http calls made to Dapr runtime, when an error is encountered, an error json is returned in http response body. The json contains an error code and an descriptive error message, e.g.
|
||||
|
||||
```
|
||||
{
|
||||
"errorCode": "ERR_STATE_GET",
|
||||
"message": "Requested state key does not exist in state store."
|
||||
}
|
||||
```
|
||||
|
||||
The following tables list the error codes returned by Dapr runtime:
|
||||
|
||||
### Actors API
|
||||
|
@ -154,3 +145,8 @@ The following tables list the error codes returned by Dapr runtime:
|
|||
| ERR_MALFORMED_REQUEST | Error with a malformed request. |
|
||||
| ERR_MALFORMED_REQUEST_DATA | Error request data is malformed. |
|
||||
| ERR_MALFORMED_RESPONSE | Error response data is malformed. |
|
||||
|
||||
## Next steps
|
||||
|
||||
- [Handling HTTP error codes]({{< ref http-error-codes.md >}})
|
||||
- [Handling gRPC error codes]({{< ref grpc-error-codes.md >}})
|
|
@ -0,0 +1,62 @@
|
|||
---
|
||||
type: docs
|
||||
title: "Errors overview"
|
||||
linkTitle: "Overview"
|
||||
weight: 10
|
||||
description: "Overview of Dapr errors"
|
||||
---
|
||||
|
||||
An error code is a numeric or alphamueric code that indicates the nature of an error and, when possible, why it occured.
|
||||
|
||||
Dapr error codes are standardized strings for over 80+ common errors across HTTP and gRPC requests when using the Dapr APIs. These codes are both:
|
||||
- Returned in the JSON response body of the request.
|
||||
- When enabled, logged in debug-level logs in the runtime.
|
||||
- If you're running in Kubernetes, error codes are logged in the sidecar.
|
||||
- If you're running in self-hosted, you can enable and run debug logs.
|
||||
|
||||
## Error format
|
||||
|
||||
Dapr error codes consist of a prefix, a category, and shorthand of the error itself. For example:
|
||||
|
||||
| Prefix | Category | Error shorthand |
|
||||
| ------ | -------- | --------------- |
|
||||
| ERR_ | PUBSUB_ | NOT_FOUND |
|
||||
|
||||
Some of the most common errors returned include:
|
||||
|
||||
- ERR_ACTOR_TIMER_CREATE
|
||||
- ERR_PURGE_WORKFLOW
|
||||
- ERR_STATE_STORE_NOT_FOUND
|
||||
- ERR_HEALTH_NOT_READY
|
||||
|
||||
> **Note:** [See a full list of error codes in Dapr.]({{< ref error-codes-reference.md >}})
|
||||
|
||||
An error returned for a state store not found might look like the following:
|
||||
|
||||
```json
|
||||
{
|
||||
"error": "Bad Request",
|
||||
"error_msg": "{\"errorCode\":\"ERR_STATE_STORE_NOT_FOUND\",\"message\":\"state store <name> is not found\",\"details\":[{\"@type\":\"type.googleapis.com/google.rpc.ErrorInfo\",\"domain\":\"dapr.io\",\"metadata\":{\"appID\":\"nodeapp\"},\"reason\":\"DAPR_STATE_NOT_FOUND\"}]}",
|
||||
"status": 400
|
||||
}
|
||||
```
|
||||
|
||||
The returned error includes:
|
||||
- The error code: `ERR_STATE_STORE_NOT_FOUND`
|
||||
- The error message describing the issue: `state store <name> is not found`
|
||||
- The app ID in which the error is occuring: `nodeapp`
|
||||
- The reason for the error: `DAPR_STATE_NOT_FOUND`
|
||||
|
||||
## Dapr error code metrics
|
||||
|
||||
Metrics help you see when exactly errors are occuring from within the runtime. Error code metrics are collected using the `error_code_total` endpoint. This endpoint is disabled by default. You can [enable it using the `recordErrorCodes` field in your configuration file]({{< ref "metrics-overview.md#configuring-metrics-for-error-codes" >}}).
|
||||
|
||||
## Demo
|
||||
|
||||
Watch a demo presented during [Diagrid's Dapr v1.15 celebration](https://www.diagrid.io/videos/dapr-1-15-deep-dive) to see how to enable error code metrics and handle error codes returned in the runtime.
|
||||
|
||||
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/NTnwoDhHIcQ?si=I2uCB_TINGxlu-9v&start=2812" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
|
||||
## Next step
|
||||
|
||||
{{< button text="See a list of all Dapr error codes" page="error-codes-reference" >}}
|
|
@ -1,20 +1,18 @@
|
|||
---
|
||||
type: docs
|
||||
title: Dapr errors
|
||||
linkTitle: "Dapr errors"
|
||||
weight: 700
|
||||
description: "Information on Dapr errors and how to handle them"
|
||||
title: Handling gRPC error codes
|
||||
linkTitle: "gRPC"
|
||||
weight: 40
|
||||
description: "Information on Dapr gRPC errors and how to handle them"
|
||||
---
|
||||
|
||||
## Error handling: Understanding errors model and reporting
|
||||
|
||||
Initially, errors followed the [Standard gRPC error model](https://grpc.io/docs/guides/error/#standard-error-model). However, to provide more detailed and informative error messages, an enhanced error model has been defined which aligns with the gRPC [Richer error model](https://grpc.io/docs/guides/error/#richer-error-model).
|
||||
|
||||
{{% alert title="Note" color="primary" %}}
|
||||
Not all Dapr errors have been converted to the richer gRPC error model.
|
||||
{{% /alert %}}
|
||||
|
||||
### Standard gRPC Error Model
|
||||
## Standard gRPC Error Model
|
||||
|
||||
The [Standard gRPC error model](https://grpc.io/docs/guides/error/#standard-error-model) is an approach to error reporting in gRPC. Each error response includes an error code and an error message. The error codes are standardized and reflect common error conditions.
|
||||
|
||||
|
@ -25,7 +23,7 @@ ERROR:
|
|||
Message: input key/keyPrefix 'bad||keyname' can't contain '||'
|
||||
```
|
||||
|
||||
### Richer gRPC Error Model
|
||||
## Richer gRPC Error Model
|
||||
|
||||
The [Richer gRPC error model](https://grpc.io/docs/guides/error/#richer-error-model) extends the standard error model by providing additional context and details about the error. This model includes the standard error `code` and `message`, along with a `details` section that can contain various types of information, such as `ErrorInfo`, `ResourceInfo`, and `BadRequest` details.
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
---
|
||||
type: docs
|
||||
title: "Handling HTTP error codes"
|
||||
linkTitle: "HTTP"
|
||||
description: "Detailed reference of the Dapr HTTP error codes and how to handle them"
|
||||
weight: 30
|
||||
---
|
||||
|
||||
For HTTP calls made to Dapr runtime, when an error is encountered, an error JSON is returned in response body. The JSON contains an error code and an descriptive error message.
|
||||
|
||||
```
|
||||
{
|
||||
"errorCode": "ERR_STATE_GET",
|
||||
"message": "Requested state key does not exist in state store."
|
||||
}
|
||||
```
|
||||
|
||||
## Related
|
||||
|
||||
- [Error code reference list]({{< ref error-codes-reference.md >}})
|
||||
- [Handling gRPC error codes]({{< ref grpc-error-codes.md >}})
|
|
@ -2,6 +2,6 @@
|
|||
type: docs
|
||||
title: "Integrations"
|
||||
linkTitle: "Integrations"
|
||||
weight: 60
|
||||
weight: 70
|
||||
description: "Dapr integrations with other technologies"
|
||||
---
|
|
@ -2,6 +2,6 @@
|
|||
type: docs
|
||||
title: "Local development"
|
||||
linkTitle: "Local development"
|
||||
weight: 40
|
||||
weight: 50
|
||||
description: "Capabilities for developing Dapr applications locally"
|
||||
---
|
|
@ -2,7 +2,7 @@
|
|||
type: docs
|
||||
title: "Dapr Software Development Kits (SDKs)"
|
||||
linkTitle: "SDKs"
|
||||
weight: 20
|
||||
weight: 30
|
||||
description: "Use your favorite languages with Dapr"
|
||||
no_list: true
|
||||
---
|
||||
|
|
|
@ -145,9 +145,12 @@ metrics:
|
|||
- /payments/{paymentID}/refund
|
||||
- /payments/{paymentID}/details
|
||||
excludeVerbs: false
|
||||
recordErrorCodes: true
|
||||
```
|
||||
|
||||
In the examples above, the path filter `/orders/{orderID}/items/{itemID}` would return _a single metric count_ matching all the `orderID`s and all the `itemID`s, rather than multiple metrics for each `itemID`. For more information, see [HTTP metrics path matching]({{< ref "metrics-overview.md#http-metrics-path-matching" >}})
|
||||
In the examples above, the path filter `/orders/{orderID}/items/{itemID}` would return _a single metric count_ matching all the `orderID`s and all the `itemID`s, rather than multiple metrics for each `itemID`. For more information, see [HTTP metrics path matching]({{< ref "metrics-overview.md#http-metrics-path-matching" >}}).
|
||||
|
||||
The above example also enables [recording error code metrics]({{< ref "metrics-overview.md#configuring-metrics-for-error-codes" >}}), which is disabled by default.
|
||||
|
||||
The following table lists the properties for metrics:
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@ spec:
|
|||
|
||||
## Configuring metrics for error codes
|
||||
|
||||
You can enable additional metrics for [Dapr API error codes](https://docs.dapr.io/reference/api/error_codes/) by setting `spec.metrics.recordErrorCodes` to `true`. Dapr APIs which communicate back to their caller may return standardized error codes. As described in the [Dapr development docs](https://github.com/dapr/dapr/blob/master/docs/development/dapr-metrics.md), a new metric called `error_code_total` is recorded, which allows monitoring of error codes triggered by application, code, and category. See [the `errorcodes` package](https://github.com/dapr/dapr/blob/master/pkg/messages/errorcodes/errorcodes.go) for specific codes and categories.
|
||||
You can enable additional metrics for [Dapr API error codes](https://docs.dapr.io/reference/api/error_codes/) by setting `spec.metrics.recordErrorCodes` to `true`. Dapr APIs which communicate back to their caller may return standardized error codes. [A new metric called `error_code_total` is recorded]({{< ref errors-overview.md >}}), which allows monitoring of error codes triggered by application, code, and category. See [the `errorcodes` package](https://github.com/dapr/dapr/blob/master/pkg/messages/errorcodes/errorcodes.go) for specific codes and categories.
|
||||
|
||||
Example configuration:
|
||||
```yaml
|
||||
|
|
|
@ -110,7 +110,7 @@ Circuit Breaker (CB) policies are used when other applications/services/componen
|
|||
| `maxRequests` | The maximum number of requests allowed to pass through when the CB is half-open (recovering from failure). Defaults to `1`. |
|
||||
| `interval` | The cyclical period of time used by the CB to clear its internal counts. If set to 0 seconds, this never clears. Defaults to `0s`. |
|
||||
| `timeout` | The period of the open state (directly after failure) until the CB switches to half-open. Defaults to `60s`. |
|
||||
| `trip` | A [Common Expression Language (CEL)](https://github.com/google/cel-spec) statement that is evaluated by the CB. When the statement evaluates to true, the CB trips and becomes open. Defaults to `consecutiveFailures > 5`. |
|
||||
| `trip` | A [Common Expression Language (CEL)](https://github.com/google/cel-spec) statement that is evaluated by the CB. When the statement evaluates to true, the CB trips and becomes open. Defaults to `consecutiveFailures > 5`. Other possible values are `requests` and `totalFailures` where `requests` represents the number of either successful or failed calls before the circuit opens and `totalFailures` represents the total (not necessarily consecutive) number of failed attempts before the circuit opens. Example: `requests > 5` and `totalFailures >3`.|
|
||||
|
||||
Example:
|
||||
|
||||
|
|
|
@ -36,6 +36,7 @@ spec:
|
|||
labels:
|
||||
- name: <LABEL-NAME>
|
||||
regex: {}
|
||||
recordErrorCodes: <TRUE-OR-FALSE>
|
||||
latencyDistributionBuckets:
|
||||
- <BUCKET-VALUE-MS-0>
|
||||
- <BUCKET-VALUE-MS-1>
|
||||
|
|
Loading…
Reference in New Issue