-
Notifications
You must be signed in to change notification settings - Fork 79
VDK Logging And Error Handling: Technical Analysis
Logging configuration is implemented as a plugin. The plugin hooks into the vdk_configure and initialize_job methods. The vdk_configure hook configures the host, port, enabled flag and socket type for SYSLOG. The initialize_job hook fetches all the relevant job data and passes it to the configure_loggers method.
configure_logs deals with more SYSLOG configuration and configures logging for different environments, e.g. CLOUD vs. LOCAL.
There is only one logging formatter which is hardcoded. It's used in all environments.
DETAILED_FORMAT = (
f"%(asctime)s [VDK] {job_name} [%(levelname)-5.5s] %(name)-30.30s %(filename)20.20s:%("
f"lineno)-4.4s %(funcName)-16.16s[id:{attempt_id}]- %(message)s"
)
Error handling is built into VDK core.
There are three types of errors thrown by VDK
- PLATFORM_ERROR - infrastructure errors
- USER_ERROR - errors in user code/configuration
- CONFIG_ERROR - errors in the configuration provided to VDK
Each error has a corresponding accountable
- PLATFORM_ERROR - should be fixed by the PLATFORM (SRE Team, Platform team, operating the infrastructure and services).
- USER_ERROR - should be fixed by the end USER (or data job owner), for example: supplied bad arguments, bug in user code.
- CONFIG_ERROR that occurred during:
- platform run (in case the data job runs on platfrom infrastructure), is handled by the PLATFORM;
- local run (in case the data job runs on local end user infrastructure), is handled by the USER.
Errors that are reported by VDK in the logs follow the format outlined in the Resolvable class.
- resolvable_by: Indicates the resolvable type.
- resolvable_by_actual: Who is actually responsible for resolving it
- error_message: the error message
- exception: the exception related to the error
- resolved: indicate if the error is resolved (for example error may be handled in user code and they are considred resolved). It should be use for informative purposes. It may be None/empty (for example if error originates from a new thread spawned by a job step)
SDK - Develop Data Jobs
SDK Key Concepts
Control Service - Deploy Data Jobs
Control Service Key Concepts
- Scheduling a Data Job for automatic execution
- Deployment
- Execution
- Production
- Properties and Secrets
Operations UI
Community
Contacts