tasker-engine 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (605) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +22 -0
  3. data/README.md +443 -0
  4. data/Rakefile +10 -0
  5. data/app/controllers/tasker/analytics_controller.rb +179 -0
  6. data/app/controllers/tasker/application_controller.rb +45 -0
  7. data/app/controllers/tasker/graphql_controller.rb +193 -0
  8. data/app/controllers/tasker/handlers_controller.rb +217 -0
  9. data/app/controllers/tasker/health_controller.rb +229 -0
  10. data/app/controllers/tasker/metrics_controller.rb +111 -0
  11. data/app/controllers/tasker/page_sort.rb +97 -0
  12. data/app/controllers/tasker/task_diagrams_controller.rb +30 -0
  13. data/app/controllers/tasker/tasks_controller.rb +123 -0
  14. data/app/controllers/tasker/workflow_steps_controller.rb +69 -0
  15. data/app/graphql/examples/all_tasks.graphql +22 -0
  16. data/app/graphql/examples/pending_tasks.graphql +23 -0
  17. data/app/graphql/tasker/graph_ql_types/annotation_type.rb +14 -0
  18. data/app/graphql/tasker/graph_ql_types/base_argument.rb +9 -0
  19. data/app/graphql/tasker/graph_ql_types/base_connection.rb +11 -0
  20. data/app/graphql/tasker/graph_ql_types/base_edge.rb +10 -0
  21. data/app/graphql/tasker/graph_ql_types/base_enum.rb +9 -0
  22. data/app/graphql/tasker/graph_ql_types/base_field.rb +10 -0
  23. data/app/graphql/tasker/graph_ql_types/base_input_object.rb +10 -0
  24. data/app/graphql/tasker/graph_ql_types/base_interface.rb +14 -0
  25. data/app/graphql/tasker/graph_ql_types/base_object.rb +10 -0
  26. data/app/graphql/tasker/graph_ql_types/base_scalar.rb +9 -0
  27. data/app/graphql/tasker/graph_ql_types/base_union.rb +11 -0
  28. data/app/graphql/tasker/graph_ql_types/dependent_system_object_map_type.rb +18 -0
  29. data/app/graphql/tasker/graph_ql_types/dependent_system_type.rb +13 -0
  30. data/app/graphql/tasker/graph_ql_types/mutation_type.rb +16 -0
  31. data/app/graphql/tasker/graph_ql_types/named_step_type.rb +16 -0
  32. data/app/graphql/tasker/graph_ql_types/named_task_type.rb +14 -0
  33. data/app/graphql/tasker/graph_ql_types/named_tasks_named_step_type.rb +19 -0
  34. data/app/graphql/tasker/graph_ql_types/node_type.rb +12 -0
  35. data/app/graphql/tasker/graph_ql_types/query_type.rb +20 -0
  36. data/app/graphql/tasker/graph_ql_types/task_annotation_type.rb +17 -0
  37. data/app/graphql/tasker/graph_ql_types/task_interface.rb +17 -0
  38. data/app/graphql/tasker/graph_ql_types/task_type.rb +26 -0
  39. data/app/graphql/tasker/graph_ql_types/workflow_step_type.rb +154 -0
  40. data/app/graphql/tasker/graph_ql_types.rb +42 -0
  41. data/app/graphql/tasker/mutations/base_mutation.rb +13 -0
  42. data/app/graphql/tasker/mutations/cancel_step.rb +29 -0
  43. data/app/graphql/tasker/mutations/cancel_task.rb +29 -0
  44. data/app/graphql/tasker/mutations/create_task.rb +52 -0
  45. data/app/graphql/tasker/mutations/update_step.rb +36 -0
  46. data/app/graphql/tasker/mutations/update_task.rb +41 -0
  47. data/app/graphql/tasker/queries/all_annotation_types.rb +17 -0
  48. data/app/graphql/tasker/queries/all_tasks.rb +23 -0
  49. data/app/graphql/tasker/queries/base_query.rb +9 -0
  50. data/app/graphql/tasker/queries/helpers.rb +16 -0
  51. data/app/graphql/tasker/queries/one_step.rb +24 -0
  52. data/app/graphql/tasker/queries/one_task.rb +18 -0
  53. data/app/graphql/tasker/queries/tasks_by_annotation.rb +31 -0
  54. data/app/graphql/tasker/queries/tasks_by_status.rb +30 -0
  55. data/app/graphql/tasker/tasker_rails_schema.rb +52 -0
  56. data/app/jobs/tasker/application_job.rb +8 -0
  57. data/app/jobs/tasker/metrics_export_job.rb +252 -0
  58. data/app/jobs/tasker/task_runner_job.rb +224 -0
  59. data/app/models/tasker/annotation_type.rb +26 -0
  60. data/app/models/tasker/application_record.rb +70 -0
  61. data/app/models/tasker/dependent_system.rb +26 -0
  62. data/app/models/tasker/dependent_system_object_map.rb +64 -0
  63. data/app/models/tasker/diagram/edge.rb +106 -0
  64. data/app/models/tasker/diagram/flowchart.rb +137 -0
  65. data/app/models/tasker/diagram/node.rb +99 -0
  66. data/app/models/tasker/named_step.rb +41 -0
  67. data/app/models/tasker/named_task.rb +121 -0
  68. data/app/models/tasker/named_tasks_named_step.rb +82 -0
  69. data/app/models/tasker/step_dag_relationship.rb +65 -0
  70. data/app/models/tasker/step_readiness_status.rb +59 -0
  71. data/app/models/tasker/task.rb +424 -0
  72. data/app/models/tasker/task_annotation.rb +36 -0
  73. data/app/models/tasker/task_diagram.rb +332 -0
  74. data/app/models/tasker/task_execution_context.rb +29 -0
  75. data/app/models/tasker/task_namespace.rb +41 -0
  76. data/app/models/tasker/task_transition.rb +235 -0
  77. data/app/models/tasker/workflow_step.rb +461 -0
  78. data/app/models/tasker/workflow_step_edge.rb +94 -0
  79. data/app/models/tasker/workflow_step_transition.rb +434 -0
  80. data/app/serializers/tasker/annotation_type_serializer.rb +8 -0
  81. data/app/serializers/tasker/handler_serializer.rb +109 -0
  82. data/app/serializers/tasker/task_annotation_serializer.rb +32 -0
  83. data/app/serializers/tasker/task_serializer.rb +168 -0
  84. data/app/serializers/tasker/workflow_step_serializer.rb +27 -0
  85. data/app/services/tasker/analytics_service.rb +409 -0
  86. data/app/views/tasker/task/_diagram.html.erb +32 -0
  87. data/config/initializers/dry_struct.rb +11 -0
  88. data/config/initializers/statesman.rb +6 -0
  89. data/config/initializers/tasker_orchestration.rb +17 -0
  90. data/config/initializers/time_formats.rb +4 -0
  91. data/config/routes.rb +34 -0
  92. data/config/tasker/subscriptions/example_integrations.yml +67 -0
  93. data/config/tasker/system_events.yml +305 -0
  94. data/db/functions/calculate_dependency_levels_v01.sql +45 -0
  95. data/db/functions/get_analytics_metrics_v01.sql +137 -0
  96. data/db/functions/get_slowest_steps_v01.sql +82 -0
  97. data/db/functions/get_slowest_tasks_v01.sql +96 -0
  98. data/db/functions/get_step_readiness_status_batch_v01.sql +140 -0
  99. data/db/functions/get_step_readiness_status_v01.sql +139 -0
  100. data/db/functions/get_system_health_counts_v01.sql +108 -0
  101. data/db/functions/get_task_execution_context_v01.sql +108 -0
  102. data/db/functions/get_task_execution_contexts_batch_v01.sql +104 -0
  103. data/db/init/schema.sql +2277 -0
  104. data/db/migrate/20250701165431_initial_tasker_schema.rb +116 -0
  105. data/db/views/tasker_step_dag_relationships_v01.sql +69 -0
  106. data/docs/APPLICATION_GENERATOR.md +384 -0
  107. data/docs/AUTH.md +1780 -0
  108. data/docs/CIRCUIT_BREAKER.md +224 -0
  109. data/docs/DEVELOPER_GUIDE.md +2665 -0
  110. data/docs/EVENT_SYSTEM.md +637 -0
  111. data/docs/EXECUTION_CONFIGURATION.md +341 -0
  112. data/docs/FLOW_CHART.md +149 -0
  113. data/docs/HEALTH.md +542 -0
  114. data/docs/METRICS.md +731 -0
  115. data/docs/OPTIMIZATION_PLAN.md +1479 -0
  116. data/docs/OVERVIEW.md +552 -0
  117. data/docs/QUICK_START.md +270 -0
  118. data/docs/REGISTRY_SYSTEMS.md +373 -0
  119. data/docs/REST_API.md +632 -0
  120. data/docs/ROADMAP.md +221 -0
  121. data/docs/SQL_FUNCTIONS.md +1408 -0
  122. data/docs/TASK_DIAGRAM.md +252 -0
  123. data/docs/TASK_EXECUTION_CONTROL_FLOW.md +237 -0
  124. data/docs/TELEMETRY.md +795 -0
  125. data/docs/TROUBLESHOOTING.md +756 -0
  126. data/docs/TaskHandlerGenerator.html +255 -0
  127. data/docs/Tasker/Analysis/RuntimeGraphAnalyzer.html +907 -0
  128. data/docs/Tasker/Analysis/TemplateGraphAnalyzer.html +1236 -0
  129. data/docs/Tasker/Analysis.html +117 -0
  130. data/docs/Tasker/AnalyticsController.html +450 -0
  131. data/docs/Tasker/AnalyticsService/BottleneckAnalytics.html +816 -0
  132. data/docs/Tasker/AnalyticsService/PerformanceAnalytics.html +586 -0
  133. data/docs/Tasker/AnalyticsService.html +2221 -0
  134. data/docs/Tasker/AnnotationType.html +137 -0
  135. data/docs/Tasker/AnnotationTypeSerializer.html +124 -0
  136. data/docs/Tasker/ApplicationController.html +147 -0
  137. data/docs/Tasker/ApplicationJob.html +128 -0
  138. data/docs/Tasker/ApplicationRecord.html +378 -0
  139. data/docs/Tasker/Authentication/AuthenticationError.html +124 -0
  140. data/docs/Tasker/Authentication/ConfigurationError.html +124 -0
  141. data/docs/Tasker/Authentication/Coordinator.html +242 -0
  142. data/docs/Tasker/Authentication/Interface.html +560 -0
  143. data/docs/Tasker/Authentication/InterfaceError.html +124 -0
  144. data/docs/Tasker/Authentication/NoneAuthenticator.html +338 -0
  145. data/docs/Tasker/Authentication.html +119 -0
  146. data/docs/Tasker/Authorization/AuthorizationError.html +139 -0
  147. data/docs/Tasker/Authorization/BaseCoordinator.html +927 -0
  148. data/docs/Tasker/Authorization/ConfigurationError.html +153 -0
  149. data/docs/Tasker/Authorization/ResourceConstants/ACTIONS.html +428 -0
  150. data/docs/Tasker/Authorization/ResourceConstants/RESOURCES.html +365 -0
  151. data/docs/Tasker/Authorization/ResourceConstants.html +146 -0
  152. data/docs/Tasker/Authorization/ResourceRegistry.html +882 -0
  153. data/docs/Tasker/Authorization/UnauthorizedError.html +153 -0
  154. data/docs/Tasker/Authorization.html +582 -0
  155. data/docs/Tasker/CacheCapabilities.html +167 -0
  156. data/docs/Tasker/CacheStrategy.html +1297 -0
  157. data/docs/Tasker/Concerns/Authenticatable.html +116 -0
  158. data/docs/Tasker/Concerns/Authorizable/AdminStatusChecker.html +256 -0
  159. data/docs/Tasker/Concerns/Authorizable.html +816 -0
  160. data/docs/Tasker/Concerns/ControllerAuthorizable.html +157 -0
  161. data/docs/Tasker/Concerns/EventPublisher.html +4023 -0
  162. data/docs/Tasker/Concerns/IdempotentStateTransitions.html +806 -0
  163. data/docs/Tasker/Concerns/LifecycleEventHelpers.html +129 -0
  164. data/docs/Tasker/Concerns/OrchestrationPublisher.html +129 -0
  165. data/docs/Tasker/Concerns/StateMachineBase/ClassMethods.html +1075 -0
  166. data/docs/Tasker/Concerns/StateMachineBase/StateMachineBase/ClassMethods.html +191 -0
  167. data/docs/Tasker/Concerns/StateMachineBase/StateMachineBase.html +126 -0
  168. data/docs/Tasker/Concerns/StateMachineBase.html +153 -0
  169. data/docs/Tasker/Concerns/StructuredLogging.html +1413 -0
  170. data/docs/Tasker/Concerns.html +117 -0
  171. data/docs/Tasker/Configuration/AuthConfiguration.html +1023 -0
  172. data/docs/Tasker/Configuration/ConfigurationProxy.html +581 -0
  173. data/docs/Tasker/Configuration/DatabaseConfiguration.html +475 -0
  174. data/docs/Tasker/Configuration/EngineConfiguration.html +1265 -0
  175. data/docs/Tasker/Configuration/HealthConfiguration.html +791 -0
  176. data/docs/Tasker/Configuration/TelemetryConfiguration.html +1308 -0
  177. data/docs/Tasker/Configuration/TelemetryConfigurationProxy.html +388 -0
  178. data/docs/Tasker/Configuration.html +1669 -0
  179. data/docs/Tasker/ConfigurationError.html +143 -0
  180. data/docs/Tasker/ConfiguredTask.html +514 -0
  181. data/docs/Tasker/Constants/EventDefinitions.html +590 -0
  182. data/docs/Tasker/Constants/LifecycleEvents.html +137 -0
  183. data/docs/Tasker/Constants/ObservabilityEvents/Step.html +152 -0
  184. data/docs/Tasker/Constants/ObservabilityEvents/Task.html +142 -0
  185. data/docs/Tasker/Constants/ObservabilityEvents.html +126 -0
  186. data/docs/Tasker/Constants/RegistryEvents.html +285 -0
  187. data/docs/Tasker/Constants/StepEvents.html +177 -0
  188. data/docs/Tasker/Constants/TaskEvents.html +167 -0
  189. data/docs/Tasker/Constants/TaskExecution/ExecutionStatus.html +207 -0
  190. data/docs/Tasker/Constants/TaskExecution/HealthStatus.html +191 -0
  191. data/docs/Tasker/Constants/TaskExecution/RecommendedAction.html +207 -0
  192. data/docs/Tasker/Constants/TaskExecution.html +126 -0
  193. data/docs/Tasker/Constants/TaskFinalization/ErrorMessages.html +132 -0
  194. data/docs/Tasker/Constants/TaskFinalization/PendingReasons.html +207 -0
  195. data/docs/Tasker/Constants/TaskFinalization/ReenqueueReasons.html +239 -0
  196. data/docs/Tasker/Constants/TaskFinalization.html +126 -0
  197. data/docs/Tasker/Constants/TaskStatuses.html +223 -0
  198. data/docs/Tasker/Constants/TestEvents.html +163 -0
  199. data/docs/Tasker/Constants/WorkflowEvents.html +222 -0
  200. data/docs/Tasker/Constants/WorkflowStepStatuses.html +223 -0
  201. data/docs/Tasker/Constants.html +561 -0
  202. data/docs/Tasker/DependentSystem.html +137 -0
  203. data/docs/Tasker/DependentSystemObjectMap.html +250 -0
  204. data/docs/Tasker/DetectorRegistry.html +598 -0
  205. data/docs/Tasker/Diagram/Edge.html +1191 -0
  206. data/docs/Tasker/Diagram/Flowchart.html +1539 -0
  207. data/docs/Tasker/Diagram/Node.html +1165 -0
  208. data/docs/Tasker/Diagram.html +117 -0
  209. data/docs/Tasker/Engine.html +215 -0
  210. data/docs/Tasker/Error.html +139 -0
  211. data/docs/Tasker/Events/Bus.html +1226 -0
  212. data/docs/Tasker/Events/Catalog/CatalogPrinter.html +258 -0
  213. data/docs/Tasker/Events/Catalog/CustomEventRegistrar.html +276 -0
  214. data/docs/Tasker/Events/Catalog/ExamplePayloadGenerator.html +294 -0
  215. data/docs/Tasker/Events/Catalog.html +1291 -0
  216. data/docs/Tasker/Events/CustomRegistry.html +943 -0
  217. data/docs/Tasker/Events/DefinitionLoader.html +575 -0
  218. data/docs/Tasker/Events/EventPayloadBuilder/ErrorInfoExtractor.html +286 -0
  219. data/docs/Tasker/Events/EventPayloadBuilder/StepPayloadBuilder.html +312 -0
  220. data/docs/Tasker/Events/EventPayloadBuilder.html +664 -0
  221. data/docs/Tasker/Events/Publisher.html +365 -0
  222. data/docs/Tasker/Events/Subscribers/BaseSubscriber/ErrorCategorizer/ErrorTypeClassifier.html +1128 -0
  223. data/docs/Tasker/Events/Subscribers/BaseSubscriber/ErrorCategorizer.html +270 -0
  224. data/docs/Tasker/Events/Subscribers/BaseSubscriber/MetricTagsExtractor.html +266 -0
  225. data/docs/Tasker/Events/Subscribers/BaseSubscriber.html +2556 -0
  226. data/docs/Tasker/Events/Subscribers/MetricsSubscriber.html +723 -0
  227. data/docs/Tasker/Events/Subscribers/TelemetrySubscriber.html +2251 -0
  228. data/docs/Tasker/Events/Subscribers.html +117 -0
  229. data/docs/Tasker/Events/SubscriptionLoader.html +493 -0
  230. data/docs/Tasker/Events.html +294 -0
  231. data/docs/Tasker/EventsGenerator.html +459 -0
  232. data/docs/Tasker/Functions/FunctionBasedAnalyticsMetrics/AnalyticsMetrics.html +135 -0
  233. data/docs/Tasker/Functions/FunctionBasedAnalyticsMetrics.html +412 -0
  234. data/docs/Tasker/Functions/FunctionBasedDependencyLevels.html +598 -0
  235. data/docs/Tasker/Functions/FunctionBasedSlowestSteps/SlowestStep.html +135 -0
  236. data/docs/Tasker/Functions/FunctionBasedSlowestSteps.html +453 -0
  237. data/docs/Tasker/Functions/FunctionBasedSlowestTasks/SlowestTask.html +135 -0
  238. data/docs/Tasker/Functions/FunctionBasedSlowestTasks.html +453 -0
  239. data/docs/Tasker/Functions/FunctionBasedStepReadinessStatus.html +1457 -0
  240. data/docs/Tasker/Functions/FunctionBasedSystemHealthCounts/HealthMetrics.html +135 -0
  241. data/docs/Tasker/Functions/FunctionBasedSystemHealthCounts.html +370 -0
  242. data/docs/Tasker/Functions/FunctionBasedTaskExecutionContext.html +1250 -0
  243. data/docs/Tasker/Functions/FunctionWrapper.html +479 -0
  244. data/docs/Tasker/Functions.html +117 -0
  245. data/docs/Tasker/Generators/AuthenticatorGenerator/UsageInstructionsFormatter.html +244 -0
  246. data/docs/Tasker/Generators/AuthenticatorGenerator.html +373 -0
  247. data/docs/Tasker/Generators/AuthorizationCoordinatorGenerator.html +430 -0
  248. data/docs/Tasker/Generators/SubscriberGenerator.html +377 -0
  249. data/docs/Tasker/Generators/TaskHandlerGenerator.html +263 -0
  250. data/docs/Tasker/Generators.html +117 -0
  251. data/docs/Tasker/GraphQLTypes/AnnotationType.html +132 -0
  252. data/docs/Tasker/GraphQLTypes/BaseArgument.html +124 -0
  253. data/docs/Tasker/GraphQLTypes/BaseConnection.html +124 -0
  254. data/docs/Tasker/GraphQLTypes/BaseEdge.html +130 -0
  255. data/docs/Tasker/GraphQLTypes/BaseEnum.html +124 -0
  256. data/docs/Tasker/GraphQLTypes/BaseField.html +124 -0
  257. data/docs/Tasker/GraphQLTypes/BaseInputObject.html +124 -0
  258. data/docs/Tasker/GraphQLTypes/BaseInterface.html +116 -0
  259. data/docs/Tasker/GraphQLTypes/BaseObject.html +128 -0
  260. data/docs/Tasker/GraphQLTypes/BaseScalar.html +124 -0
  261. data/docs/Tasker/GraphQLTypes/BaseUnion.html +124 -0
  262. data/docs/Tasker/GraphQLTypes/DependentSystemObjectMapType.html +132 -0
  263. data/docs/Tasker/GraphQLTypes/DependentSystemType.html +132 -0
  264. data/docs/Tasker/GraphQLTypes/MutationType.html +132 -0
  265. data/docs/Tasker/GraphQLTypes/NamedStepType.html +132 -0
  266. data/docs/Tasker/GraphQLTypes/NamedTaskType.html +132 -0
  267. data/docs/Tasker/GraphQLTypes/NamedTasksNamedStepType.html +132 -0
  268. data/docs/Tasker/GraphQLTypes/NodeType.html +118 -0
  269. data/docs/Tasker/GraphQLTypes/QueryType.html +139 -0
  270. data/docs/Tasker/GraphQLTypes/TaskAnnotationType.html +132 -0
  271. data/docs/Tasker/GraphQLTypes/TaskInterface.html +111 -0
  272. data/docs/Tasker/GraphQLTypes/TaskType.html +201 -0
  273. data/docs/Tasker/GraphQLTypes/WorkflowStepType.html +694 -0
  274. data/docs/Tasker/GraphQLTypes.html +130 -0
  275. data/docs/Tasker/GraphqlController.html +251 -0
  276. data/docs/Tasker/HandlerFactory.html +1518 -0
  277. data/docs/Tasker/HandlerSerializer.html +682 -0
  278. data/docs/Tasker/HandlersController.html +574 -0
  279. data/docs/Tasker/HashIdentityStrategy.html +278 -0
  280. data/docs/Tasker/Health/ReadinessChecker.html +712 -0
  281. data/docs/Tasker/Health/StatusChecker.html +653 -0
  282. data/docs/Tasker/Health.html +117 -0
  283. data/docs/Tasker/HealthController.html +523 -0
  284. data/docs/Tasker/IdentityStrategy.html +276 -0
  285. data/docs/Tasker/InvalidTaskHandlerConfig.html +135 -0
  286. data/docs/Tasker/LifecycleEvents/Events/Step.html +162 -0
  287. data/docs/Tasker/LifecycleEvents/Events/Task.html +162 -0
  288. data/docs/Tasker/LifecycleEvents/Events.html +204 -0
  289. data/docs/Tasker/LifecycleEvents/Publisher.html +132 -0
  290. data/docs/Tasker/LifecycleEvents.html +799 -0
  291. data/docs/Tasker/Logging/CorrelationIdGenerator.html +688 -0
  292. data/docs/Tasker/Logging.html +115 -0
  293. data/docs/Tasker/MetricsController.html +293 -0
  294. data/docs/Tasker/MetricsExportJob.html +414 -0
  295. data/docs/Tasker/Mutations/BaseMutation.html +128 -0
  296. data/docs/Tasker/Mutations/CancelStep.html +219 -0
  297. data/docs/Tasker/Mutations/CancelTask.html +221 -0
  298. data/docs/Tasker/Mutations/CreateTask.html +243 -0
  299. data/docs/Tasker/Mutations/UpdateStep.html +243 -0
  300. data/docs/Tasker/Mutations/UpdateTask.html +243 -0
  301. data/docs/Tasker/Mutations.html +117 -0
  302. data/docs/Tasker/NamedStep.html +216 -0
  303. data/docs/Tasker/NamedTask.html +910 -0
  304. data/docs/Tasker/NamedTasksNamedStep.html +435 -0
  305. data/docs/Tasker/Orchestration/BackoffCalculator.html +404 -0
  306. data/docs/Tasker/Orchestration/ConnectionBuilder/ConfigValidator.html +258 -0
  307. data/docs/Tasker/Orchestration/ConnectionBuilder.html +435 -0
  308. data/docs/Tasker/Orchestration/ConnectionPoolIntelligence.html +513 -0
  309. data/docs/Tasker/Orchestration/Coordinator.html +641 -0
  310. data/docs/Tasker/Orchestration/FutureStateAnalyzer.html +1045 -0
  311. data/docs/Tasker/Orchestration/Orchestrator.html +679 -0
  312. data/docs/Tasker/Orchestration/PluginIntegration.html +1127 -0
  313. data/docs/Tasker/Orchestration/ResponseProcessor.html +504 -0
  314. data/docs/Tasker/Orchestration/RetryHeaderParser.html +304 -0
  315. data/docs/Tasker/Orchestration/StepExecutor.html +995 -0
  316. data/docs/Tasker/Orchestration/StepSequenceFactory.html +644 -0
  317. data/docs/Tasker/Orchestration/TaskFinalizer/BlockageChecker.html +264 -0
  318. data/docs/Tasker/Orchestration/TaskFinalizer/ContextManager.html +254 -0
  319. data/docs/Tasker/Orchestration/TaskFinalizer/DelayCalculator.html +556 -0
  320. data/docs/Tasker/Orchestration/TaskFinalizer/FinalizationDecisionMaker.html +348 -0
  321. data/docs/Tasker/Orchestration/TaskFinalizer/FinalizationProcessor.html +286 -0
  322. data/docs/Tasker/Orchestration/TaskFinalizer/ReasonDeterminer.html +432 -0
  323. data/docs/Tasker/Orchestration/TaskFinalizer/ReenqueueManager.html +296 -0
  324. data/docs/Tasker/Orchestration/TaskFinalizer/UnclearStateHandler.html +314 -0
  325. data/docs/Tasker/Orchestration/TaskFinalizer.html +1212 -0
  326. data/docs/Tasker/Orchestration/TaskInitializer.html +766 -0
  327. data/docs/Tasker/Orchestration/TaskReenqueuer.html +506 -0
  328. data/docs/Tasker/Orchestration/ViableStepDiscovery.html +442 -0
  329. data/docs/Tasker/Orchestration/WorkflowCoordinator.html +510 -0
  330. data/docs/Tasker/Orchestration.html +130 -0
  331. data/docs/Tasker/PageSort/PageSortParamsBuilder.html +296 -0
  332. data/docs/Tasker/PageSort.html +247 -0
  333. data/docs/Tasker/PermanentError.html +518 -0
  334. data/docs/Tasker/ProceduralError.html +147 -0
  335. data/docs/Tasker/Queries/AllAnnotationTypes.html +217 -0
  336. data/docs/Tasker/Queries/AllTasks.html +221 -0
  337. data/docs/Tasker/Queries/BaseQuery.html +128 -0
  338. data/docs/Tasker/Queries/Helpers.html +187 -0
  339. data/docs/Tasker/Queries/OneStep.html +225 -0
  340. data/docs/Tasker/Queries/OneTask.html +217 -0
  341. data/docs/Tasker/Queries/TasksByAnnotation.html +231 -0
  342. data/docs/Tasker/Queries/TasksByStatus.html +233 -0
  343. data/docs/Tasker/Queries.html +119 -0
  344. data/docs/Tasker/Railtie.html +124 -0
  345. data/docs/Tasker/Registry/BaseRegistry.html +1690 -0
  346. data/docs/Tasker/Registry/EventPublisher.html +667 -0
  347. data/docs/Tasker/Registry/InterfaceValidator.html +569 -0
  348. data/docs/Tasker/Registry/RegistrationError.html +132 -0
  349. data/docs/Tasker/Registry/RegistryError.html +139 -0
  350. data/docs/Tasker/Registry/StatisticsCollector.html +841 -0
  351. data/docs/Tasker/Registry/SubscriberRegistry.html +1504 -0
  352. data/docs/Tasker/Registry/ValidationError.html +132 -0
  353. data/docs/Tasker/Registry.html +119 -0
  354. data/docs/Tasker/RetryableError.html +515 -0
  355. data/docs/Tasker/StateMachine/Compatibility.html +282 -0
  356. data/docs/Tasker/StateMachine/InvalidStateTransition.html +135 -0
  357. data/docs/Tasker/StateMachine/StepStateMachine/StandardizedPayloadBuilder.html +260 -0
  358. data/docs/Tasker/StateMachine/StepStateMachine.html +2215 -0
  359. data/docs/Tasker/StateMachine/TaskStateMachine.html +734 -0
  360. data/docs/Tasker/StateMachine.html +602 -0
  361. data/docs/Tasker/StepDagRelationship.html +657 -0
  362. data/docs/Tasker/StepHandler/Api/Config.html +1091 -0
  363. data/docs/Tasker/StepHandler/Api.html +884 -0
  364. data/docs/Tasker/StepHandler/AutomaticEventPublishing.html +321 -0
  365. data/docs/Tasker/StepHandler/Base.html +970 -0
  366. data/docs/Tasker/StepHandler.html +119 -0
  367. data/docs/Tasker/StepReadinessStatus.html +836 -0
  368. data/docs/Tasker/Task.html +2575 -0
  369. data/docs/Tasker/TaskAnnotation.html +137 -0
  370. data/docs/Tasker/TaskAnnotationSerializer.html +124 -0
  371. data/docs/Tasker/TaskBuilder/StepNameValidator.html +264 -0
  372. data/docs/Tasker/TaskBuilder/StepTemplateDefiner.html +264 -0
  373. data/docs/Tasker/TaskBuilder.html +764 -0
  374. data/docs/Tasker/TaskDiagram/StepToStepEdgeBuilder.html +260 -0
  375. data/docs/Tasker/TaskDiagram/TaskToRootStepEdgeBuilder.html +290 -0
  376. data/docs/Tasker/TaskDiagram.html +548 -0
  377. data/docs/Tasker/TaskDiagramsController.html +240 -0
  378. data/docs/Tasker/TaskExecutionContext.html +469 -0
  379. data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner/ClassBasedEventRegistrar.html +238 -0
  380. data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner/YamlEventRegistrar.html +254 -0
  381. data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner.html +988 -0
  382. data/docs/Tasker/TaskHandler/ClassMethods.html +357 -0
  383. data/docs/Tasker/TaskHandler/InstanceMethods.html +1396 -0
  384. data/docs/Tasker/TaskHandler/StepGroup.html +1748 -0
  385. data/docs/Tasker/TaskHandler.html +271 -0
  386. data/docs/Tasker/TaskNamespace.html +312 -0
  387. data/docs/Tasker/TaskRunnerJob.html +406 -0
  388. data/docs/Tasker/TaskSerializer.html +474 -0
  389. data/docs/Tasker/TaskTransition.html +1517 -0
  390. data/docs/Tasker/TaskWorkflowSummary.html +988 -0
  391. data/docs/Tasker/TaskerRailsSchema/InvalidObjectTypeError.html +132 -0
  392. data/docs/Tasker/TaskerRailsSchema/TypeResolutionError.html +139 -0
  393. data/docs/Tasker/TaskerRailsSchema/UnknownInterfaceError.html +132 -0
  394. data/docs/Tasker/TaskerRailsSchema.html +384 -0
  395. data/docs/Tasker/TasksController.html +595 -0
  396. data/docs/Tasker/Telemetry/EventMapping.html +1307 -0
  397. data/docs/Tasker/Telemetry/EventRouter.html +2178 -0
  398. data/docs/Tasker/Telemetry/Events/ExportEvents.html +246 -0
  399. data/docs/Tasker/Telemetry/Events.html +115 -0
  400. data/docs/Tasker/Telemetry/ExportCoordinator/DistributedLockTimeoutError.html +135 -0
  401. data/docs/Tasker/Telemetry/ExportCoordinator.html +2137 -0
  402. data/docs/Tasker/Telemetry/IntelligentCacheManager.html +1083 -0
  403. data/docs/Tasker/Telemetry/LogBackend.html +1088 -0
  404. data/docs/Tasker/Telemetry/MetricTypes/Counter.html +1054 -0
  405. data/docs/Tasker/Telemetry/MetricTypes/Gauge.html +1270 -0
  406. data/docs/Tasker/Telemetry/MetricTypes/Histogram.html +1492 -0
  407. data/docs/Tasker/Telemetry/MetricTypes.html +153 -0
  408. data/docs/Tasker/Telemetry/MetricsBackend.html +2510 -0
  409. data/docs/Tasker/Telemetry/MetricsExportService.html +578 -0
  410. data/docs/Tasker/Telemetry/PluginRegistry.html +1774 -0
  411. data/docs/Tasker/Telemetry/Plugins/BaseExporter.html +1835 -0
  412. data/docs/Tasker/Telemetry/Plugins/CsvExporter.html +768 -0
  413. data/docs/Tasker/Telemetry/Plugins/JsonExporter.html +747 -0
  414. data/docs/Tasker/Telemetry/Plugins.html +117 -0
  415. data/docs/Tasker/Telemetry/PrometheusExporter.html +481 -0
  416. data/docs/Tasker/Telemetry/TraceBackend.html +891 -0
  417. data/docs/Tasker/Telemetry.html +130 -0
  418. data/docs/Tasker/Types/AuthConfig.html +886 -0
  419. data/docs/Tasker/Types/BackoffConfig.html +1063 -0
  420. data/docs/Tasker/Types/BaseConfig.html +227 -0
  421. data/docs/Tasker/Types/CacheConfig.html +1731 -0
  422. data/docs/Tasker/Types/DatabaseConfig.html +388 -0
  423. data/docs/Tasker/Types/DependencyGraph.html +526 -0
  424. data/docs/Tasker/Types/DependencyGraphConfig.html +753 -0
  425. data/docs/Tasker/Types/EngineConfig.html +1181 -0
  426. data/docs/Tasker/Types/ExecutionConfig.html +1963 -0
  427. data/docs/Tasker/Types/GraphEdge.html +517 -0
  428. data/docs/Tasker/Types/GraphMetadata.html +781 -0
  429. data/docs/Tasker/Types/GraphNode.html +694 -0
  430. data/docs/Tasker/Types/HealthConfig.html +784 -0
  431. data/docs/Tasker/Types/StepSequence.html +353 -0
  432. data/docs/Tasker/Types/StepTemplate.html +1193 -0
  433. data/docs/Tasker/Types/TaskRequest.html +1179 -0
  434. data/docs/Tasker/Types/TelemetryConfig.html +2746 -0
  435. data/docs/Tasker/Types.html +154 -0
  436. data/docs/Tasker/WorkflowStep/StepFinder.html +282 -0
  437. data/docs/Tasker/WorkflowStep.html +2724 -0
  438. data/docs/Tasker/WorkflowStepEdge.html +304 -0
  439. data/docs/Tasker/WorkflowStepSerializer.html +305 -0
  440. data/docs/Tasker/WorkflowStepTransition/TransitionDescriptionFormatter.html +282 -0
  441. data/docs/Tasker/WorkflowStepTransition.html +2201 -0
  442. data/docs/Tasker/WorkflowStepsController.html +462 -0
  443. data/docs/Tasker.html +452 -0
  444. data/docs/VISION.md +584 -0
  445. data/docs/WHY.md +21 -0
  446. data/docs/_index.html +2375 -0
  447. data/docs/class_list.html +54 -0
  448. data/docs/css/common.css +1 -0
  449. data/docs/css/full_list.css +58 -0
  450. data/docs/css/style.css +503 -0
  451. data/docs/events/migration_plan_outcomes.md +80 -0
  452. data/docs/file.README.html +541 -0
  453. data/docs/file_list.html +59 -0
  454. data/docs/frames.html +22 -0
  455. data/docs/index.html +541 -0
  456. data/docs/js/app.js +344 -0
  457. data/docs/js/full_list.js +242 -0
  458. data/docs/js/jquery.js +4 -0
  459. data/docs/method_list.html +9182 -0
  460. data/docs/top-level-namespace.html +110 -0
  461. data/lib/generators/tasker/authenticator_generator.rb +301 -0
  462. data/lib/generators/tasker/authorization_coordinator_generator.rb +139 -0
  463. data/lib/generators/tasker/events_generator.rb +91 -0
  464. data/lib/generators/tasker/subscriber_generator.rb +107 -0
  465. data/lib/generators/tasker/task_handler_generator.rb +138 -0
  466. data/lib/generators/tasker/templates/api_token_authenticator.rb.erb +113 -0
  467. data/lib/generators/tasker/templates/api_token_authenticator_spec.rb.erb +144 -0
  468. data/lib/generators/tasker/templates/authorization_coordinator.rb.erb +95 -0
  469. data/lib/generators/tasker/templates/authorization_coordinator_spec.rb.erb +142 -0
  470. data/lib/generators/tasker/templates/custom_authenticator.rb.erb +108 -0
  471. data/lib/generators/tasker/templates/custom_authenticator_spec.rb.erb +162 -0
  472. data/lib/generators/tasker/templates/custom_events.yml.erb +62 -0
  473. data/lib/generators/tasker/templates/custom_subscriber.rb.erb +72 -0
  474. data/lib/generators/tasker/templates/devise_authenticator.rb.erb +101 -0
  475. data/lib/generators/tasker/templates/devise_authenticator_spec.rb.erb +126 -0
  476. data/lib/generators/tasker/templates/initialize.rb.erb +202 -0
  477. data/lib/generators/tasker/templates/jwt_authenticator.rb.erb +144 -0
  478. data/lib/generators/tasker/templates/jwt_authenticator_spec.rb.erb +298 -0
  479. data/lib/generators/tasker/templates/metrics_subscriber.rb.erb +258 -0
  480. data/lib/generators/tasker/templates/metrics_subscriber_spec.rb.erb +308 -0
  481. data/lib/generators/tasker/templates/omniauth_authenticator.rb.erb +135 -0
  482. data/lib/generators/tasker/templates/omniauth_authenticator_spec.rb.erb +196 -0
  483. data/lib/generators/tasker/templates/opentelemetry_initializer.rb +52 -0
  484. data/lib/generators/tasker/templates/subscriber.rb.erb +64 -0
  485. data/lib/generators/tasker/templates/subscriber_spec.rb.erb +80 -0
  486. data/lib/generators/tasker/templates/task_config.yaml.erb +117 -0
  487. data/lib/generators/tasker/templates/task_handler.rb.erb +59 -0
  488. data/lib/generators/tasker/templates/task_handler_spec.rb.erb +159 -0
  489. data/lib/tasker/analysis/runtime_graph_analyzer.rb +1168 -0
  490. data/lib/tasker/analysis/template_graph_analyzer.rb +328 -0
  491. data/lib/tasker/authentication/coordinator.rb +78 -0
  492. data/lib/tasker/authentication/errors.rb +9 -0
  493. data/lib/tasker/authentication/interface.rb +36 -0
  494. data/lib/tasker/authentication/none_authenticator.rb +26 -0
  495. data/lib/tasker/authorization/base_coordinator.rb +112 -0
  496. data/lib/tasker/authorization/errors.rb +26 -0
  497. data/lib/tasker/authorization/resource_constants.rb +74 -0
  498. data/lib/tasker/authorization/resource_registry.rb +143 -0
  499. data/lib/tasker/authorization.rb +75 -0
  500. data/lib/tasker/cache_capabilities.rb +131 -0
  501. data/lib/tasker/cache_strategy.rb +469 -0
  502. data/lib/tasker/concerns/authenticatable.rb +41 -0
  503. data/lib/tasker/concerns/authorizable.rb +204 -0
  504. data/lib/tasker/concerns/controller_authorizable.rb +124 -0
  505. data/lib/tasker/concerns/event_publisher.rb +716 -0
  506. data/lib/tasker/concerns/idempotent_state_transitions.rb +128 -0
  507. data/lib/tasker/concerns/state_machine_base.rb +218 -0
  508. data/lib/tasker/concerns/structured_logging.rb +387 -0
  509. data/lib/tasker/configuration.rb +325 -0
  510. data/lib/tasker/constants/event_definitions.rb +147 -0
  511. data/lib/tasker/constants/registry_events.rb +54 -0
  512. data/lib/tasker/constants.rb +417 -0
  513. data/lib/tasker/engine.rb +90 -0
  514. data/lib/tasker/errors.rb +90 -0
  515. data/lib/tasker/events/catalog.rb +432 -0
  516. data/lib/tasker/events/custom_registry.rb +175 -0
  517. data/lib/tasker/events/definition_loader.rb +199 -0
  518. data/lib/tasker/events/event_payload_builder.rb +461 -0
  519. data/lib/tasker/events/publisher.rb +149 -0
  520. data/lib/tasker/events/subscribers/base_subscriber.rb +601 -0
  521. data/lib/tasker/events/subscribers/metrics_subscriber.rb +120 -0
  522. data/lib/tasker/events/subscribers/telemetry_subscriber.rb +462 -0
  523. data/lib/tasker/events/subscription_loader.rb +161 -0
  524. data/lib/tasker/events.rb +37 -0
  525. data/lib/tasker/functions/function_based_analytics_metrics.rb +103 -0
  526. data/lib/tasker/functions/function_based_dependency_levels.rb +54 -0
  527. data/lib/tasker/functions/function_based_slowest_steps.rb +84 -0
  528. data/lib/tasker/functions/function_based_slowest_tasks.rb +84 -0
  529. data/lib/tasker/functions/function_based_step_readiness_status.rb +183 -0
  530. data/lib/tasker/functions/function_based_system_health_counts.rb +94 -0
  531. data/lib/tasker/functions/function_based_task_execution_context.rb +148 -0
  532. data/lib/tasker/functions/function_wrapper.rb +42 -0
  533. data/lib/tasker/functions.rb +12 -0
  534. data/lib/tasker/handler_factory.rb +322 -0
  535. data/lib/tasker/health/readiness_checker.rb +186 -0
  536. data/lib/tasker/health/status_checker.rb +203 -0
  537. data/lib/tasker/identity_strategy.rb +38 -0
  538. data/lib/tasker/logging/correlation_id_generator.rb +120 -0
  539. data/lib/tasker/orchestration/backoff_calculator.rb +184 -0
  540. data/lib/tasker/orchestration/connection_builder.rb +122 -0
  541. data/lib/tasker/orchestration/connection_pool_intelligence.rb +177 -0
  542. data/lib/tasker/orchestration/coordinator.rb +119 -0
  543. data/lib/tasker/orchestration/future_state_analyzer.rb +137 -0
  544. data/lib/tasker/orchestration/plugin_integration.rb +124 -0
  545. data/lib/tasker/orchestration/response_processor.rb +168 -0
  546. data/lib/tasker/orchestration/retry_header_parser.rb +78 -0
  547. data/lib/tasker/orchestration/step_executor.rb +941 -0
  548. data/lib/tasker/orchestration/step_sequence_factory.rb +67 -0
  549. data/lib/tasker/orchestration/task_finalizer.rb +564 -0
  550. data/lib/tasker/orchestration/task_initializer.rb +140 -0
  551. data/lib/tasker/orchestration/task_reenqueuer.rb +71 -0
  552. data/lib/tasker/orchestration/viable_step_discovery.rb +65 -0
  553. data/lib/tasker/orchestration/workflow_coordinator.rb +294 -0
  554. data/lib/tasker/orchestration.rb +45 -0
  555. data/lib/tasker/railtie.rb +9 -0
  556. data/lib/tasker/registry/base_registry.rb +177 -0
  557. data/lib/tasker/registry/event_publisher.rb +91 -0
  558. data/lib/tasker/registry/interface_validator.rb +140 -0
  559. data/lib/tasker/registry/statistics_collector.rb +381 -0
  560. data/lib/tasker/registry/subscriber_registry.rb +285 -0
  561. data/lib/tasker/registry.rb +22 -0
  562. data/lib/tasker/state_machine/step_state_machine.rb +508 -0
  563. data/lib/tasker/state_machine/task_state_machine.rb +192 -0
  564. data/lib/tasker/state_machine.rb +83 -0
  565. data/lib/tasker/step_handler/api.rb +410 -0
  566. data/lib/tasker/step_handler/base.rb +206 -0
  567. data/lib/tasker/task_builder.rb +432 -0
  568. data/lib/tasker/task_handler/class_methods.rb +324 -0
  569. data/lib/tasker/task_handler/instance_methods.rb +293 -0
  570. data/lib/tasker/task_handler/step_group.rb +182 -0
  571. data/lib/tasker/task_handler.rb +43 -0
  572. data/lib/tasker/telemetry/event_mapping.rb +126 -0
  573. data/lib/tasker/telemetry/event_router.rb +318 -0
  574. data/lib/tasker/telemetry/events/export_events.rb +38 -0
  575. data/lib/tasker/telemetry/export_coordinator.rb +497 -0
  576. data/lib/tasker/telemetry/intelligent_cache_manager.rb +508 -0
  577. data/lib/tasker/telemetry/log_backend.rb +224 -0
  578. data/lib/tasker/telemetry/metric_types.rb +368 -0
  579. data/lib/tasker/telemetry/metrics_backend.rb +1227 -0
  580. data/lib/tasker/telemetry/metrics_export_service.rb +392 -0
  581. data/lib/tasker/telemetry/plugin_registry.rb +333 -0
  582. data/lib/tasker/telemetry/plugins/base_exporter.rb +246 -0
  583. data/lib/tasker/telemetry/plugins/csv_exporter.rb +198 -0
  584. data/lib/tasker/telemetry/plugins/json_exporter.rb +141 -0
  585. data/lib/tasker/telemetry/prometheus_exporter.rb +249 -0
  586. data/lib/tasker/telemetry/trace_backend.rb +186 -0
  587. data/lib/tasker/telemetry.rb +59 -0
  588. data/lib/tasker/types/auth_config.rb +81 -0
  589. data/lib/tasker/types/backoff_config.rb +142 -0
  590. data/lib/tasker/types/cache_config.rb +257 -0
  591. data/lib/tasker/types/database_config.rb +39 -0
  592. data/lib/tasker/types/dependency_graph.rb +225 -0
  593. data/lib/tasker/types/dependency_graph_config.rb +149 -0
  594. data/lib/tasker/types/engine_config.rb +131 -0
  595. data/lib/tasker/types/execution_config.rb +289 -0
  596. data/lib/tasker/types/health_config.rb +84 -0
  597. data/lib/tasker/types/step_sequence.rb +24 -0
  598. data/lib/tasker/types/step_template.rb +63 -0
  599. data/lib/tasker/types/task_request.rb +60 -0
  600. data/lib/tasker/types/telemetry_config.rb +273 -0
  601. data/lib/tasker/types.rb +64 -0
  602. data/lib/tasker/version.rb +7 -0
  603. data/lib/tasker.rb +82 -0
  604. data/lib/tasks/tasker_tasks.rake +302 -0
  605. metadata +958 -0
@@ -0,0 +1,2251 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Class: Tasker::Events::Subscribers::TelemetrySubscriber
8
+
9
+ &mdash; Documentation by YARD 0.9.37
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../../../css/style.css" type="text/css" />
14
+
15
+ <link rel="stylesheet" href="../../../css/common.css" type="text/css" />
16
+
17
+ <script type="text/javascript">
18
+ pathId = "Tasker::Events::Subscribers::TelemetrySubscriber";
19
+ relpath = '../../../';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="../../../js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="../../../js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="../../../class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="../../../_index.html">Index (T)</a> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../../../Tasker.html" title="Tasker (module)">Tasker</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../../Events.html" title="Tasker::Events (module)">Events</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Subscribers.html" title="Tasker::Events::Subscribers (module)">Subscribers</a></span></span>
41
+ &raquo;
42
+ <span class="title">TelemetrySubscriber</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="../../../class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Class: Tasker::Events::Subscribers::TelemetrySubscriber
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+ <dl>
70
+ <dt>Inherits:</dt>
71
+ <dd>
72
+ <span class="inheritName"><span class='object_link'><a href="BaseSubscriber.html" title="Tasker::Events::Subscribers::BaseSubscriber (class)">BaseSubscriber</a></span></span>
73
+
74
+ <ul class="fullTree">
75
+ <li>Object</li>
76
+
77
+ <li class="next"><span class='object_link'><a href="BaseSubscriber.html" title="Tasker::Events::Subscribers::BaseSubscriber (class)">BaseSubscriber</a></span></li>
78
+
79
+ <li class="next">Tasker::Events::Subscribers::TelemetrySubscriber</li>
80
+
81
+ </ul>
82
+ <a href="#" class="inheritanceTree">show all</a>
83
+
84
+ </dd>
85
+ </dl>
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+ <dl>
98
+ <dt>Defined in:</dt>
99
+ <dd>lib/tasker/events/subscribers/telemetry_subscriber.rb</dd>
100
+ </dl>
101
+
102
+ </div>
103
+
104
+ <h2>Overview</h2><div class="docstring">
105
+ <div class="discussion">
106
+
107
+ <p>TelemetrySubscriber handles telemetry events for observability</p>
108
+
109
+ <p>This subscriber creates OpenTelemetry spans with proper hierarchical context for distributed tracing in systems like Jaeger. It follows OpenTelemetry best practices by creating detailed spans for debugging while allowing metrics to be derived from span data.</p>
110
+
111
+ <p>Architecture Decision: - SPANS: Individual trace records for detailed debugging (this class) - METRICS: Aggregated data for dashboards/alerts (derived from spans or separate collectors)</p>
112
+
113
+
114
+ </div>
115
+ </div>
116
+ <div class="tags">
117
+
118
+
119
+ </div>
120
+
121
+ <h2>
122
+ Constant Summary
123
+ <small><a href="#" class="constants_summary_toggle">collapse</a></small>
124
+ </h2>
125
+
126
+ <dl class="constants">
127
+
128
+ <dt id="EVENT_ANNOTATION_MAP-constant" class="">EVENT_ANNOTATION_MAP =
129
+ <div class="docstring">
130
+ <div class="discussion">
131
+
132
+ <p>Event type to annotation name mapping</p>
133
+
134
+
135
+ </div>
136
+ </div>
137
+ <div class="tags">
138
+
139
+
140
+ </div>
141
+ </dt>
142
+ <dd><pre class="code"><span class='lbrace'>{</span>
143
+ <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>initialize_requested</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>task.initialize</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
144
+ <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>execution_requested</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>step.queued</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
145
+ <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>retry_requested</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>step.retry</span><span class='tstring_end'>&#39;</span></span>
146
+ <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
147
+
148
+ </dl>
149
+
150
+
151
+
152
+
153
+
154
+ <h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
155
+ <ul class="summary">
156
+
157
+ <li class="public ">
158
+ <span class="summary_signature">
159
+
160
+ <a href="#tracer-instance_method" title="#tracer (instance method)">#<strong>tracer</strong> &#x21d2; Object </a>
161
+
162
+
163
+
164
+ </span>
165
+
166
+
167
+
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+
176
+
177
+ <span class="summary_desc"><div class='inline'>
178
+ <p>Returns the value of attribute tracer.</p>
179
+ </div></span>
180
+
181
+ </li>
182
+
183
+
184
+ </ul>
185
+
186
+
187
+
188
+
189
+
190
+ <h2>
191
+ Instance Method Summary
192
+ <small><a href="#" class="summary_toggle">collapse</a></small>
193
+ </h2>
194
+
195
+ <ul class="summary">
196
+
197
+ <li class="public ">
198
+ <span class="summary_signature">
199
+
200
+ <a href="#convert_attributes_for_otel-instance_method" title="#convert_attributes_for_otel (instance method)">#<strong>convert_attributes_for_otel</strong>(attributes) &#x21d2; Hash </a>
201
+
202
+
203
+
204
+ </span>
205
+
206
+
207
+
208
+
209
+
210
+
211
+
212
+
213
+
214
+ <span class="summary_desc"><div class='inline'>
215
+ <p>Convert event attributes to OpenTelemetry format.</p>
216
+ </div></span>
217
+
218
+ </li>
219
+
220
+
221
+ <li class="public ">
222
+ <span class="summary_signature">
223
+
224
+ <a href="#create_simple_span-instance_method" title="#create_simple_span (instance method)">#<strong>create_simple_span</strong>(event, span_name, attributes) &#x21d2; Object </a>
225
+
226
+
227
+
228
+ </span>
229
+
230
+
231
+
232
+
233
+
234
+
235
+
236
+
237
+
238
+ <span class="summary_desc"><div class='inline'>
239
+ <p>Create a simple span for events that don’t need complex hierarchy.</p>
240
+ </div></span>
241
+
242
+ </li>
243
+
244
+
245
+ <li class="public ">
246
+ <span class="summary_signature">
247
+
248
+ <a href="#create_step_span-instance_method" title="#create_step_span (instance method)">#<strong>create_step_span</strong>(event, span_name, attributes, status) &#x21d2; Object </a>
249
+
250
+
251
+
252
+ </span>
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+
262
+ <span class="summary_desc"><div class='inline'>
263
+ <p>Create a step span as a child of the task span.</p>
264
+ </div></span>
265
+
266
+ </li>
267
+
268
+
269
+ <li class="public ">
270
+ <span class="summary_signature">
271
+
272
+ <a href="#create_task_span-instance_method" title="#create_task_span (instance method)">#<strong>create_task_span</strong>(event, span_name, attributes) &#x21d2; Object </a>
273
+
274
+
275
+
276
+ </span>
277
+
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+ <span class="summary_desc"><div class='inline'>
287
+ <p>Create a root span for a task and store it for child spans.</p>
288
+ </div></span>
289
+
290
+ </li>
291
+
292
+
293
+ <li class="public ">
294
+ <span class="summary_signature">
295
+
296
+ <a href="#create_tracer-instance_method" title="#create_tracer (instance method)">#<strong>create_tracer</strong> &#x21d2; OpenTelemetry::Tracer </a>
297
+
298
+
299
+
300
+ </span>
301
+
302
+
303
+
304
+
305
+
306
+
307
+
308
+
309
+
310
+ <span class="summary_desc"><div class='inline'>
311
+ <p>Create the OpenTelemetry tracer.</p>
312
+ </div></span>
313
+
314
+ </li>
315
+
316
+
317
+ <li class="public ">
318
+ <span class="summary_signature">
319
+
320
+ <a href="#event_to_annotation_name-instance_method" title="#event_to_annotation_name (instance method)">#<strong>event_to_annotation_name</strong>(event) &#x21d2; Object </a>
321
+
322
+
323
+
324
+ </span>
325
+
326
+
327
+
328
+
329
+
330
+
331
+
332
+
333
+
334
+ <span class="summary_desc"><div class='inline'>
335
+ <p>Convert event to annotation name.</p>
336
+ </div></span>
337
+
338
+ </li>
339
+
340
+
341
+ <li class="public ">
342
+ <span class="summary_signature">
343
+
344
+ <a href="#extract_step_attributes-instance_method" title="#extract_step_attributes (instance method)">#<strong>extract_step_attributes</strong>(event) &#x21d2; Object </a>
345
+
346
+
347
+
348
+ </span>
349
+
350
+
351
+
352
+
353
+
354
+
355
+
356
+
357
+
358
+ <span class="summary_desc"><div class='inline'>
359
+ <p>Extract step-specific attributes (enhanced from BaseSubscriber).</p>
360
+ </div></span>
361
+
362
+ </li>
363
+
364
+
365
+ <li class="public ">
366
+ <span class="summary_signature">
367
+
368
+ <a href="#finish_task_span-instance_method" title="#finish_task_span (instance method)">#<strong>finish_task_span</strong>(event, status, attributes) &#x21d2; Object </a>
369
+
370
+
371
+
372
+ </span>
373
+
374
+
375
+
376
+
377
+
378
+
379
+
380
+
381
+
382
+ <span class="summary_desc"><div class='inline'>
383
+ <p>Finish a task span with the appropriate status.</p>
384
+ </div></span>
385
+
386
+ </li>
387
+
388
+
389
+ <li class="public ">
390
+ <span class="summary_signature">
391
+
392
+ <a href="#handle_step_completed-instance_method" title="#handle_step_completed (instance method)">#<strong>handle_step_completed</strong>(event) &#x21d2; Object </a>
393
+
394
+
395
+
396
+ </span>
397
+
398
+
399
+
400
+
401
+
402
+
403
+
404
+
405
+
406
+ <span class="summary_desc"><div class='inline'>
407
+ <p>Handle step completion events.</p>
408
+ </div></span>
409
+
410
+ </li>
411
+
412
+
413
+ <li class="public ">
414
+ <span class="summary_signature">
415
+
416
+ <a href="#handle_step_execution_requested-instance_method" title="#handle_step_execution_requested (instance method)">#<strong>handle_step_execution_requested</strong>(event) &#x21d2; Object </a>
417
+
418
+
419
+
420
+ </span>
421
+
422
+
423
+
424
+
425
+
426
+
427
+
428
+
429
+
430
+ <span class="summary_desc"><div class='inline'>
431
+ <p>Handle step execution requested events.</p>
432
+ </div></span>
433
+
434
+ </li>
435
+
436
+
437
+ <li class="public ">
438
+ <span class="summary_signature">
439
+
440
+ <a href="#handle_step_failed-instance_method" title="#handle_step_failed (instance method)">#<strong>handle_step_failed</strong>(event) &#x21d2; Object </a>
441
+
442
+
443
+
444
+ </span>
445
+
446
+
447
+
448
+
449
+
450
+
451
+
452
+
453
+
454
+ <span class="summary_desc"><div class='inline'>
455
+ <p>Handle step failure events.</p>
456
+ </div></span>
457
+
458
+ </li>
459
+
460
+
461
+ <li class="public ">
462
+ <span class="summary_signature">
463
+
464
+ <a href="#handle_step_retry_requested-instance_method" title="#handle_step_retry_requested (instance method)">#<strong>handle_step_retry_requested</strong>(event) &#x21d2; Object </a>
465
+
466
+
467
+
468
+ </span>
469
+
470
+
471
+
472
+
473
+
474
+
475
+
476
+
477
+
478
+ <span class="summary_desc"><div class='inline'>
479
+ <p>Handle step retry events.</p>
480
+ </div></span>
481
+
482
+ </li>
483
+
484
+
485
+ <li class="public ">
486
+ <span class="summary_signature">
487
+
488
+ <a href="#handle_task_completed-instance_method" title="#handle_task_completed (instance method)">#<strong>handle_task_completed</strong>(event) &#x21d2; Object </a>
489
+
490
+
491
+
492
+ </span>
493
+
494
+
495
+
496
+
497
+
498
+
499
+
500
+
501
+
502
+ <span class="summary_desc"><div class='inline'>
503
+ <p>Handle task completion events.</p>
504
+ </div></span>
505
+
506
+ </li>
507
+
508
+
509
+ <li class="public ">
510
+ <span class="summary_signature">
511
+
512
+ <a href="#handle_task_failed-instance_method" title="#handle_task_failed (instance method)">#<strong>handle_task_failed</strong>(event) &#x21d2; Object </a>
513
+
514
+
515
+
516
+ </span>
517
+
518
+
519
+
520
+
521
+
522
+
523
+
524
+
525
+
526
+ <span class="summary_desc"><div class='inline'>
527
+ <p>Handle task failure events.</p>
528
+ </div></span>
529
+
530
+ </li>
531
+
532
+
533
+ <li class="public ">
534
+ <span class="summary_signature">
535
+
536
+ <a href="#handle_task_initialize_requested-instance_method" title="#handle_task_initialize_requested (instance method)">#<strong>handle_task_initialize_requested</strong>(event) &#x21d2; Object </a>
537
+
538
+
539
+
540
+ </span>
541
+
542
+
543
+
544
+
545
+
546
+
547
+
548
+
549
+
550
+ <span class="summary_desc"><div class='inline'>
551
+ <p>Handle task initialization events.</p>
552
+ </div></span>
553
+
554
+ </li>
555
+
556
+
557
+ <li class="public ">
558
+ <span class="summary_signature">
559
+
560
+ <a href="#handle_task_start_requested-instance_method" title="#handle_task_start_requested (instance method)">#<strong>handle_task_start_requested</strong>(event) &#x21d2; Object </a>
561
+
562
+
563
+
564
+ </span>
565
+
566
+
567
+
568
+
569
+
570
+
571
+
572
+
573
+
574
+ <span class="summary_desc"><div class='inline'>
575
+ <p>Handle task start events.</p>
576
+ </div></span>
577
+
578
+ </li>
579
+
580
+
581
+ <li class="public ">
582
+ <span class="summary_signature">
583
+
584
+ <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong> &#x21d2; TelemetrySubscriber </a>
585
+
586
+
587
+
588
+ </span>
589
+
590
+
591
+ <span class="note title constructor">constructor</span>
592
+
593
+
594
+
595
+
596
+
597
+
598
+
599
+
600
+ <span class="summary_desc"><div class='inline'>
601
+ <p>A new instance of TelemetrySubscriber.</p>
602
+ </div></span>
603
+
604
+ </li>
605
+
606
+
607
+ <li class="public ">
608
+ <span class="summary_signature">
609
+
610
+ <a href="#opentelemetry_available%3F-instance_method" title="#opentelemetry_available? (instance method)">#<strong>opentelemetry_available?</strong> &#x21d2; Boolean </a>
611
+
612
+
613
+
614
+ </span>
615
+
616
+
617
+
618
+
619
+
620
+
621
+
622
+
623
+
624
+ <span class="summary_desc"><div class='inline'>
625
+ <p>Check if OpenTelemetry is available and configured.</p>
626
+ </div></span>
627
+
628
+ </li>
629
+
630
+
631
+ <li class="public ">
632
+ <span class="summary_signature">
633
+
634
+ <a href="#should_process_event%3F-instance_method" title="#should_process_event? (instance method)">#<strong>should_process_event?</strong>(event_constant) &#x21d2; Boolean </a>
635
+
636
+
637
+
638
+ </span>
639
+
640
+
641
+
642
+
643
+
644
+
645
+
646
+
647
+
648
+ <span class="summary_desc"><div class='inline'>
649
+ <p>Override BaseSubscriber to add telemetry-specific filtering.</p>
650
+ </div></span>
651
+
652
+ </li>
653
+
654
+
655
+ <li class="public ">
656
+ <span class="summary_signature">
657
+
658
+ <a href="#telemetry_enabled%3F-instance_method" title="#telemetry_enabled? (instance method)">#<strong>telemetry_enabled?</strong> &#x21d2; Boolean </a>
659
+
660
+
661
+
662
+ </span>
663
+
664
+
665
+
666
+
667
+
668
+
669
+
670
+
671
+
672
+ <span class="summary_desc"><div class='inline'>
673
+ <p>Check if telemetry is enabled.</p>
674
+ </div></span>
675
+
676
+ </li>
677
+
678
+
679
+ </ul>
680
+
681
+
682
+
683
+
684
+
685
+
686
+
687
+
688
+
689
+
690
+
691
+ <h3 class="inherited">Methods inherited from <span class='object_link'><a href="BaseSubscriber.html" title="Tasker::Events::Subscribers::BaseSubscriber (class)">BaseSubscriber</a></span></h3>
692
+ <p class="inherited"><span class='object_link'><a href="BaseSubscriber.html#build_event_subscriptions-instance_method" title="Tasker::Events::Subscribers::BaseSubscriber#build_event_subscriptions (method)">#build_event_subscriptions</a></span>, <span class='object_link'><a href="BaseSubscriber.html#build_metric_name-instance_method" title="Tasker::Events::Subscribers::BaseSubscriber#build_metric_name (method)">#build_metric_name</a></span>, <span class='object_link'><a href="BaseSubscriber.html#custom_event%3F-instance_method" title="Tasker::Events::Subscribers::BaseSubscriber#custom_event? (method)">#custom_event?</a></span>, <span class='object_link'><a href="BaseSubscriber.html#event_subscriptions-instance_method" title="Tasker::Events::Subscribers::BaseSubscriber#event_subscriptions (method)">#event_subscriptions</a></span>, <span class='object_link'><a href="BaseSubscriber.html#extract_core_attributes-instance_method" title="Tasker::Events::Subscribers::BaseSubscriber#extract_core_attributes (method)">#extract_core_attributes</a></span>, <span class='object_link'><a href="BaseSubscriber.html#extract_error_metrics-instance_method" title="Tasker::Events::Subscribers::BaseSubscriber#extract_error_metrics (method)">#extract_error_metrics</a></span>, <span class='object_link'><a href="BaseSubscriber.html#extract_metric_tags-instance_method" title="Tasker::Events::Subscribers::BaseSubscriber#extract_metric_tags (method)">#extract_metric_tags</a></span>, <span class='object_link'><a href="BaseSubscriber.html#extract_numeric_metric-instance_method" title="Tasker::Events::Subscribers::BaseSubscriber#extract_numeric_metric (method)">#extract_numeric_metric</a></span>, <span class='object_link'><a href="BaseSubscriber.html#extract_performance_metrics-instance_method" title="Tasker::Events::Subscribers::BaseSubscriber#extract_performance_metrics (method)">#extract_performance_metrics</a></span>, <span class='object_link'><a href="BaseSubscriber.html#extract_timing_metrics-instance_method" title="Tasker::Events::Subscribers::BaseSubscriber#extract_timing_metrics (method)">#extract_timing_metrics</a></span>, <span class='object_link'><a href="BaseSubscriber.html#filter_events-class_method" title="Tasker::Events::Subscribers::BaseSubscriber.filter_events (method)">filter_events</a></span>, <span class='object_link'><a href="BaseSubscriber.html#generate_handler_method_name-instance_method" title="Tasker::Events::Subscribers::BaseSubscriber#generate_handler_method_name (method)">#generate_handler_method_name</a></span>, <span class='object_link'><a href="BaseSubscriber.html#resolve_internal_event_constant-instance_method" title="Tasker::Events::Subscribers::BaseSubscriber#resolve_internal_event_constant (method)">#resolve_internal_event_constant</a></span>, <span class='object_link'><a href="BaseSubscriber.html#safe_get-instance_method" title="Tasker::Events::Subscribers::BaseSubscriber#safe_get (method)">#safe_get</a></span>, <span class='object_link'><a href="BaseSubscriber.html#should_handle_event%3F-instance_method" title="Tasker::Events::Subscribers::BaseSubscriber#should_handle_event? (method)">#should_handle_event?</a></span>, <span class='object_link'><a href="BaseSubscriber.html#subscribe-class_method" title="Tasker::Events::Subscribers::BaseSubscriber.subscribe (method)">subscribe</a></span>, <span class='object_link'><a href="BaseSubscriber.html#subscribe_to-class_method" title="Tasker::Events::Subscribers::BaseSubscriber.subscribe_to (method)">subscribe_to</a></span>, <span class='object_link'><a href="BaseSubscriber.html#subscribe_to_publisher-instance_method" title="Tasker::Events::Subscribers::BaseSubscriber#subscribe_to_publisher (method)">#subscribe_to_publisher</a></span></p>
693
+ <div id="constructor_details" class="method_details_list">
694
+ <h2>Constructor Details</h2>
695
+
696
+ <div class="method_details first">
697
+ <h3 class="signature first" id="initialize-instance_method">
698
+
699
+ #<strong>initialize</strong> &#x21d2; <tt><span class='object_link'><a href="" title="Tasker::Events::Subscribers::TelemetrySubscriber (class)">TelemetrySubscriber</a></span></tt>
700
+
701
+
702
+
703
+
704
+
705
+ </h3><div class="docstring">
706
+ <div class="discussion">
707
+
708
+ <p>Returns a new instance of TelemetrySubscriber.</p>
709
+
710
+
711
+ </div>
712
+ </div>
713
+ <div class="tags">
714
+
715
+
716
+ </div><table class="source_code">
717
+ <tr>
718
+ <td>
719
+ <pre class="lines">
720
+
721
+
722
+ 32
723
+ 33
724
+ 34
725
+ 35</pre>
726
+ </td>
727
+ <td>
728
+ <pre class="code"><span class="info file"># File 'lib/tasker/events/subscribers/telemetry_subscriber.rb', line 32</span>
729
+
730
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span>
731
+ <span class='kw'>super</span>
732
+ <span class='ivar'>@tracer</span> <span class='op'>=</span> <span class='id identifier rubyid_create_tracer'>create_tracer</span>
733
+ <span class='kw'>end</span></pre>
734
+ </td>
735
+ </tr>
736
+ </table>
737
+ </div>
738
+
739
+ </div>
740
+
741
+ <div id="instance_attr_details" class="attr_details">
742
+ <h2>Instance Attribute Details</h2>
743
+
744
+
745
+ <span id="tracer=-instance_method"></span>
746
+ <div class="method_details first">
747
+ <h3 class="signature first" id="tracer-instance_method">
748
+
749
+ #<strong>tracer</strong> &#x21d2; <tt>Object</tt>
750
+
751
+
752
+
753
+
754
+
755
+ </h3><div class="docstring">
756
+ <div class="discussion">
757
+
758
+ <p>Returns the value of attribute tracer.</p>
759
+
760
+
761
+ </div>
762
+ </div>
763
+ <div class="tags">
764
+
765
+
766
+ </div><table class="source_code">
767
+ <tr>
768
+ <td>
769
+ <pre class="lines">
770
+
771
+
772
+ 20
773
+ 21
774
+ 22</pre>
775
+ </td>
776
+ <td>
777
+ <pre class="code"><span class="info file"># File 'lib/tasker/events/subscribers/telemetry_subscriber.rb', line 20</span>
778
+
779
+ <span class='kw'>def</span> <span class='id identifier rubyid_tracer'>tracer</span>
780
+ <span class='ivar'>@tracer</span>
781
+ <span class='kw'>end</span></pre>
782
+ </td>
783
+ </tr>
784
+ </table>
785
+ </div>
786
+
787
+ </div>
788
+
789
+
790
+ <div id="instance_method_details" class="method_details_list">
791
+ <h2>Instance Method Details</h2>
792
+
793
+
794
+ <div class="method_details first">
795
+ <h3 class="signature first" id="convert_attributes_for_otel-instance_method">
796
+
797
+ #<strong>convert_attributes_for_otel</strong>(attributes) &#x21d2; <tt>Hash</tt>
798
+
799
+
800
+
801
+
802
+
803
+ </h3><div class="docstring">
804
+ <div class="discussion">
805
+
806
+ <p>Convert event attributes to OpenTelemetry format</p>
807
+
808
+
809
+ </div>
810
+ </div>
811
+ <div class="tags">
812
+ <p class="tag_title">Parameters:</p>
813
+ <ul class="param">
814
+
815
+ <li>
816
+
817
+ <span class='name'>attributes</span>
818
+
819
+
820
+ <span class='type'>(<tt>Hash</tt>)</span>
821
+
822
+
823
+
824
+ &mdash;
825
+ <div class='inline'>
826
+ <p>The attributes to convert</p>
827
+ </div>
828
+
829
+ </li>
830
+
831
+ </ul>
832
+
833
+ <p class="tag_title">Returns:</p>
834
+ <ul class="return">
835
+
836
+ <li>
837
+
838
+
839
+ <span class='type'>(<tt>Hash</tt>)</span>
840
+
841
+
842
+
843
+ &mdash;
844
+ <div class='inline'>
845
+ <p>OpenTelemetry-compatible attributes</p>
846
+ </div>
847
+
848
+ </li>
849
+
850
+ </ul>
851
+
852
+ </div><table class="source_code">
853
+ <tr>
854
+ <td>
855
+ <pre class="lines">
856
+
857
+
858
+ 310
859
+ 311
860
+ 312
861
+ 313
862
+ 314
863
+ 315
864
+ 316
865
+ 317
866
+ 318
867
+ 319
868
+ 320
869
+ 321
870
+ 322
871
+ 323
872
+ 324
873
+ 325
874
+ 326
875
+ 327
876
+ 328
877
+ 329
878
+ 330
879
+ 331
880
+ 332</pre>
881
+ </td>
882
+ <td>
883
+ <pre class="code"><span class="info file"># File 'lib/tasker/events/subscribers/telemetry_subscriber.rb', line 310</span>
884
+
885
+ <span class='kw'>def</span> <span class='id identifier rubyid_convert_attributes_for_otel'>convert_attributes_for_otel</span><span class='lparen'>(</span><span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span>
886
+ <span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
887
+ <span class='id identifier rubyid_config'>config</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../../../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='period'>.</span><span class='id identifier rubyid_configuration'><span class='object_link'><a href="../../../Tasker.html#configuration-class_method" title="Tasker.configuration (method)">configuration</a></span></span>
888
+ <span class='id identifier rubyid_service_name'>service_name</span> <span class='op'>=</span> <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_telemetry'>telemetry</span><span class='period'>.</span><span class='id identifier rubyid_service_name'>service_name</span>
889
+
890
+ <span class='comment'># Filter sensitive data first
891
+ </span> <span class='id identifier rubyid_filtered_attributes'>filtered_attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_filter_sensitive_attributes'>filter_sensitive_attributes</span><span class='lparen'>(</span><span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span>
892
+
893
+ <span class='comment'># Ensure attributes are properly formatted for OpenTelemetry
894
+ </span> <span class='id identifier rubyid_filtered_attributes'>filtered_attributes</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='op'>|</span>
895
+ <span class='comment'># Skip exception_object as it can&#39;t be properly serialized
896
+ </span> <span class='kw'>next</span> <span class='kw'>if</span> <span class='id identifier rubyid_key'>key</span> <span class='op'>==</span> <span class='symbol'>:exception_object</span>
897
+
898
+ <span class='comment'># Use the configured service name as prefix for all attributes
899
+ </span> <span class='id identifier rubyid_attr_prefix'>attr_prefix</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_service_name'>service_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>.</span><span class='tstring_end'>&quot;</span></span>
900
+ <span class='id identifier rubyid_attr_key'>attr_key</span> <span class='op'>=</span> <span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_start_with?'>start_with?</span><span class='lparen'>(</span><span class='id identifier rubyid_attr_prefix'>attr_prefix</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_attr_prefix'>attr_prefix</span><span class='embexpr_end'>}</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_key'>key</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
901
+
902
+ <span class='comment'># Convert values based on their type
903
+ </span> <span class='id identifier rubyid_result'>result</span><span class='lbracket'>[</span><span class='id identifier rubyid_attr_key'>attr_key</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_convert_value_for_otel'>convert_value_for_otel</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
904
+ <span class='kw'>end</span>
905
+
906
+ <span class='id identifier rubyid_result'>result</span>
907
+ <span class='kw'>end</span></pre>
908
+ </td>
909
+ </tr>
910
+ </table>
911
+ </div>
912
+
913
+ <div class="method_details ">
914
+ <h3 class="signature " id="create_simple_span-instance_method">
915
+
916
+ #<strong>create_simple_span</strong>(event, span_name, attributes) &#x21d2; <tt>Object</tt>
917
+
918
+
919
+
920
+
921
+
922
+ </h3><div class="docstring">
923
+ <div class="discussion">
924
+
925
+ <p>Create a simple span for events that don’t need complex hierarchy</p>
926
+
927
+
928
+ </div>
929
+ </div>
930
+ <div class="tags">
931
+ <p class="tag_title">Parameters:</p>
932
+ <ul class="param">
933
+
934
+ <li>
935
+
936
+ <span class='name'>event</span>
937
+
938
+
939
+ <span class='type'>(<tt>Hash</tt>)</span>
940
+
941
+
942
+
943
+ &mdash;
944
+ <div class='inline'>
945
+ <p>The event data</p>
946
+ </div>
947
+
948
+ </li>
949
+
950
+ <li>
951
+
952
+ <span class='name'>span_name</span>
953
+
954
+
955
+ <span class='type'>(<tt>String</tt>)</span>
956
+
957
+
958
+
959
+ &mdash;
960
+ <div class='inline'>
961
+ <p>The name for the span</p>
962
+ </div>
963
+
964
+ </li>
965
+
966
+ <li>
967
+
968
+ <span class='name'>attributes</span>
969
+
970
+
971
+ <span class='type'>(<tt>Hash</tt>)</span>
972
+
973
+
974
+
975
+ &mdash;
976
+ <div class='inline'>
977
+ <p>Span attributes</p>
978
+ </div>
979
+
980
+ </li>
981
+
982
+ </ul>
983
+
984
+
985
+ </div><table class="source_code">
986
+ <tr>
987
+ <td>
988
+ <pre class="lines">
989
+
990
+
991
+ 174
992
+ 175
993
+ 176
994
+ 177
995
+ 178
996
+ 179
997
+ 180
998
+ 181
999
+ 182
1000
+ 183
1001
+ 184
1002
+ 185</pre>
1003
+ </td>
1004
+ <td>
1005
+ <pre class="code"><span class="info file"># File 'lib/tasker/events/subscribers/telemetry_subscriber.rb', line 174</span>
1006
+
1007
+ <span class='kw'>def</span> <span class='id identifier rubyid_create_simple_span'>create_simple_span</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='id identifier rubyid_span_name'>span_name</span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span>
1008
+ <span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_opentelemetry_available?'>opentelemetry_available?</span>
1009
+
1010
+ <span class='id identifier rubyid_otel_attributes'>otel_attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_convert_attributes_for_otel'>convert_attributes_for_otel</span><span class='lparen'>(</span><span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span>
1011
+
1012
+ <span class='id identifier rubyid_tracer'>tracer</span><span class='period'>.</span><span class='id identifier rubyid_in_span'>in_span</span><span class='lparen'>(</span><span class='id identifier rubyid_span_name'>span_name</span><span class='comma'>,</span> <span class='label'>attributes:</span> <span class='id identifier rubyid_otel_attributes'>otel_attributes</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_span'>span</span><span class='op'>|</span>
1013
+ <span class='comment'># Add event annotation
1014
+ </span> <span class='id identifier rubyid_span'>span</span><span class='period'>.</span><span class='id identifier rubyid_add_event'>add_event</span><span class='lparen'>(</span><span class='id identifier rubyid_event_to_annotation_name'>event_to_annotation_name</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='label'>attributes:</span> <span class='id identifier rubyid_otel_attributes'>otel_attributes</span><span class='rparen'>)</span>
1015
+ <span class='kw'>end</span>
1016
+ <span class='kw'>rescue</span> <span class='const'>StandardError</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
1017
+ <span class='const'>Rails</span><span class='period'>.</span><span class='id identifier rubyid_logger'>logger</span><span class='period'>.</span><span class='id identifier rubyid_warn'>warn</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Failed to create simple span: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
1018
+ <span class='kw'>end</span></pre>
1019
+ </td>
1020
+ </tr>
1021
+ </table>
1022
+ </div>
1023
+
1024
+ <div class="method_details ">
1025
+ <h3 class="signature " id="create_step_span-instance_method">
1026
+
1027
+ #<strong>create_step_span</strong>(event, span_name, attributes, status) &#x21d2; <tt>Object</tt>
1028
+
1029
+
1030
+
1031
+
1032
+
1033
+ </h3><div class="docstring">
1034
+ <div class="discussion">
1035
+
1036
+ <p>Create a step span as a child of the task span</p>
1037
+
1038
+
1039
+ </div>
1040
+ </div>
1041
+ <div class="tags">
1042
+ <p class="tag_title">Parameters:</p>
1043
+ <ul class="param">
1044
+
1045
+ <li>
1046
+
1047
+ <span class='name'>event</span>
1048
+
1049
+
1050
+ <span class='type'>(<tt>Hash</tt>)</span>
1051
+
1052
+
1053
+
1054
+ &mdash;
1055
+ <div class='inline'>
1056
+ <p>The event data</p>
1057
+ </div>
1058
+
1059
+ </li>
1060
+
1061
+ <li>
1062
+
1063
+ <span class='name'>span_name</span>
1064
+
1065
+
1066
+ <span class='type'>(<tt>String</tt>)</span>
1067
+
1068
+
1069
+
1070
+ &mdash;
1071
+ <div class='inline'>
1072
+ <p>The name for the span</p>
1073
+ </div>
1074
+
1075
+ </li>
1076
+
1077
+ <li>
1078
+
1079
+ <span class='name'>attributes</span>
1080
+
1081
+
1082
+ <span class='type'>(<tt>Hash</tt>)</span>
1083
+
1084
+
1085
+
1086
+ &mdash;
1087
+ <div class='inline'>
1088
+ <p>Span attributes</p>
1089
+ </div>
1090
+
1091
+ </li>
1092
+
1093
+ <li>
1094
+
1095
+ <span class='name'>status</span>
1096
+
1097
+
1098
+ <span class='type'>(<tt>Symbol</tt>)</span>
1099
+
1100
+
1101
+
1102
+ &mdash;
1103
+ <div class='inline'>
1104
+ <p>The span status (:ok or :error)</p>
1105
+ </div>
1106
+
1107
+ </li>
1108
+
1109
+ </ul>
1110
+
1111
+
1112
+ </div><table class="source_code">
1113
+ <tr>
1114
+ <td>
1115
+ <pre class="lines">
1116
+
1117
+
1118
+ 245
1119
+ 246
1120
+ 247
1121
+ 248
1122
+ 249
1123
+ 250
1124
+ 251
1125
+ 252
1126
+ 253
1127
+ 254
1128
+ 255
1129
+ 256
1130
+ 257
1131
+ 258
1132
+ 259
1133
+ 260
1134
+ 261
1135
+ 262
1136
+ 263
1137
+ 264
1138
+ 265
1139
+ 266
1140
+ 267
1141
+ 268
1142
+ 269
1143
+ 270
1144
+ 271
1145
+ 272</pre>
1146
+ </td>
1147
+ <td>
1148
+ <pre class="code"><span class="info file"># File 'lib/tasker/events/subscribers/telemetry_subscriber.rb', line 245</span>
1149
+
1150
+ <span class='kw'>def</span> <span class='id identifier rubyid_create_step_span'>create_step_span</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='id identifier rubyid_span_name'>span_name</span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='comma'>,</span> <span class='id identifier rubyid_status'>status</span><span class='rparen'>)</span>
1151
+ <span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_opentelemetry_available?'>opentelemetry_available?</span>
1152
+
1153
+ <span class='id identifier rubyid_task_id'>task_id</span> <span class='op'>=</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:task_id</span><span class='rparen'>)</span>
1154
+ <span class='id identifier rubyid_step_id'>step_id</span> <span class='op'>=</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:step_id</span><span class='rparen'>)</span>
1155
+ <span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_task_id'>task_id</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_step_id'>step_id</span>
1156
+
1157
+ <span class='id identifier rubyid_task_span'>task_span</span> <span class='op'>=</span> <span class='id identifier rubyid_get_task_span'>get_task_span</span><span class='lparen'>(</span><span class='id identifier rubyid_task_id'>task_id</span><span class='rparen'>)</span>
1158
+ <span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_task_span'>task_span</span>
1159
+
1160
+ <span class='id identifier rubyid_otel_attributes'>otel_attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_convert_attributes_for_otel'>convert_attributes_for_otel</span><span class='lparen'>(</span><span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span>
1161
+
1162
+ <span class='comment'># Create child span context
1163
+ </span> <span class='id identifier rubyid_span_context'>span_context</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'>OpenTelemetry</span><span class='op'>::</span><span class='const'>Trace</span><span class='period'>.</span><span class='id identifier rubyid_context_with_span'>context_with_span</span><span class='lparen'>(</span><span class='id identifier rubyid_task_span'>task_span</span><span class='rparen'>)</span>
1164
+
1165
+ <span class='op'>::</span><span class='const'>OpenTelemetry</span><span class='op'>::</span><span class='const'>Context</span><span class='period'>.</span><span class='id identifier rubyid_with_current'>with_current</span><span class='lparen'>(</span><span class='id identifier rubyid_span_context'>span_context</span><span class='rparen'>)</span> <span class='kw'>do</span>
1166
+ <span class='id identifier rubyid_tracer'>tracer</span><span class='period'>.</span><span class='id identifier rubyid_in_span'>in_span</span><span class='lparen'>(</span><span class='id identifier rubyid_span_name'>span_name</span><span class='comma'>,</span> <span class='label'>attributes:</span> <span class='id identifier rubyid_otel_attributes'>otel_attributes</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_step_span'>step_span</span><span class='op'>|</span>
1167
+ <span class='comment'># Add step event
1168
+ </span> <span class='id identifier rubyid_event_name'>event_name</span> <span class='op'>=</span> <span class='id identifier rubyid_status'>status</span> <span class='op'>==</span> <span class='symbol'>:error</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>step.failed</span><span class='tstring_end'>&#39;</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>step.completed</span><span class='tstring_end'>&#39;</span></span>
1169
+ <span class='id identifier rubyid_step_span'>step_span</span><span class='period'>.</span><span class='id identifier rubyid_add_event'>add_event</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name'>event_name</span><span class='comma'>,</span> <span class='label'>attributes:</span> <span class='id identifier rubyid_otel_attributes'>otel_attributes</span><span class='rparen'>)</span>
1170
+
1171
+ <span class='comment'># Set span status
1172
+ </span> <span class='id identifier rubyid_set_span_status'>set_span_status</span><span class='lparen'>(</span><span class='id identifier rubyid_step_span'>step_span</span><span class='comma'>,</span> <span class='id identifier rubyid_status'>status</span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span>
1173
+ <span class='kw'>end</span>
1174
+ <span class='kw'>end</span>
1175
+ <span class='kw'>rescue</span> <span class='const'>StandardError</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
1176
+ <span class='const'>Rails</span><span class='period'>.</span><span class='id identifier rubyid_logger'>logger</span><span class='period'>.</span><span class='id identifier rubyid_warn'>warn</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Failed to create step span: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
1177
+ <span class='kw'>end</span></pre>
1178
+ </td>
1179
+ </tr>
1180
+ </table>
1181
+ </div>
1182
+
1183
+ <div class="method_details ">
1184
+ <h3 class="signature " id="create_task_span-instance_method">
1185
+
1186
+ #<strong>create_task_span</strong>(event, span_name, attributes) &#x21d2; <tt>Object</tt>
1187
+
1188
+
1189
+
1190
+
1191
+
1192
+ </h3><div class="docstring">
1193
+ <div class="discussion">
1194
+
1195
+ <p>Create a root span for a task and store it for child spans</p>
1196
+
1197
+
1198
+ </div>
1199
+ </div>
1200
+ <div class="tags">
1201
+ <p class="tag_title">Parameters:</p>
1202
+ <ul class="param">
1203
+
1204
+ <li>
1205
+
1206
+ <span class='name'>event</span>
1207
+
1208
+
1209
+ <span class='type'>(<tt>Hash</tt>)</span>
1210
+
1211
+
1212
+
1213
+ &mdash;
1214
+ <div class='inline'>
1215
+ <p>The event data</p>
1216
+ </div>
1217
+
1218
+ </li>
1219
+
1220
+ <li>
1221
+
1222
+ <span class='name'>span_name</span>
1223
+
1224
+
1225
+ <span class='type'>(<tt>String</tt>)</span>
1226
+
1227
+
1228
+
1229
+ &mdash;
1230
+ <div class='inline'>
1231
+ <p>The name for the span</p>
1232
+ </div>
1233
+
1234
+ </li>
1235
+
1236
+ <li>
1237
+
1238
+ <span class='name'>attributes</span>
1239
+
1240
+
1241
+ <span class='type'>(<tt>Hash</tt>)</span>
1242
+
1243
+
1244
+
1245
+ &mdash;
1246
+ <div class='inline'>
1247
+ <p>Span attributes</p>
1248
+ </div>
1249
+
1250
+ </li>
1251
+
1252
+ </ul>
1253
+
1254
+
1255
+ </div><table class="source_code">
1256
+ <tr>
1257
+ <td>
1258
+ <pre class="lines">
1259
+
1260
+
1261
+ 192
1262
+ 193
1263
+ 194
1264
+ 195
1265
+ 196
1266
+ 197
1267
+ 198
1268
+ 199
1269
+ 200
1270
+ 201
1271
+ 202
1272
+ 203
1273
+ 204
1274
+ 205
1275
+ 206
1276
+ 207</pre>
1277
+ </td>
1278
+ <td>
1279
+ <pre class="code"><span class="info file"># File 'lib/tasker/events/subscribers/telemetry_subscriber.rb', line 192</span>
1280
+
1281
+ <span class='kw'>def</span> <span class='id identifier rubyid_create_task_span'>create_task_span</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='id identifier rubyid_span_name'>span_name</span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span>
1282
+ <span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_opentelemetry_available?'>opentelemetry_available?</span>
1283
+
1284
+ <span class='id identifier rubyid_task_id'>task_id</span> <span class='op'>=</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:task_id</span><span class='rparen'>)</span>
1285
+ <span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_task_id'>task_id</span>
1286
+
1287
+ <span class='id identifier rubyid_otel_attributes'>otel_attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_convert_attributes_for_otel'>convert_attributes_for_otel</span><span class='lparen'>(</span><span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span>
1288
+
1289
+ <span class='id identifier rubyid_span'>span</span> <span class='op'>=</span> <span class='id identifier rubyid_tracer'>tracer</span><span class='period'>.</span><span class='id identifier rubyid_start_root_span'>start_root_span</span><span class='lparen'>(</span><span class='id identifier rubyid_span_name'>span_name</span><span class='comma'>,</span> <span class='label'>attributes:</span> <span class='id identifier rubyid_otel_attributes'>otel_attributes</span><span class='rparen'>)</span>
1290
+ <span class='id identifier rubyid_store_task_span'>store_task_span</span><span class='lparen'>(</span><span class='id identifier rubyid_task_id'>task_id</span><span class='comma'>,</span> <span class='id identifier rubyid_span'>span</span><span class='rparen'>)</span>
1291
+
1292
+ <span class='comment'># Add an event to mark the task start
1293
+ </span> <span class='id identifier rubyid_span'>span</span><span class='period'>.</span><span class='id identifier rubyid_add_event'>add_event</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>task.started</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>attributes:</span> <span class='id identifier rubyid_otel_attributes'>otel_attributes</span><span class='rparen'>)</span>
1294
+ <span class='kw'>rescue</span> <span class='const'>StandardError</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
1295
+ <span class='const'>Rails</span><span class='period'>.</span><span class='id identifier rubyid_logger'>logger</span><span class='period'>.</span><span class='id identifier rubyid_warn'>warn</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Failed to create task span: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
1296
+ <span class='kw'>end</span></pre>
1297
+ </td>
1298
+ </tr>
1299
+ </table>
1300
+ </div>
1301
+
1302
+ <div class="method_details ">
1303
+ <h3 class="signature " id="create_tracer-instance_method">
1304
+
1305
+ #<strong>create_tracer</strong> &#x21d2; <tt>OpenTelemetry::Tracer</tt>
1306
+
1307
+
1308
+
1309
+
1310
+
1311
+ </h3><div class="docstring">
1312
+ <div class="discussion">
1313
+
1314
+ <p>Create the OpenTelemetry tracer</p>
1315
+
1316
+
1317
+ </div>
1318
+ </div>
1319
+ <div class="tags">
1320
+
1321
+ <p class="tag_title">Returns:</p>
1322
+ <ul class="return">
1323
+
1324
+ <li>
1325
+
1326
+
1327
+ <span class='type'>(<tt>OpenTelemetry::Tracer</tt>)</span>
1328
+
1329
+
1330
+
1331
+ &mdash;
1332
+ <div class='inline'>
1333
+ <p>The tracer instance</p>
1334
+ </div>
1335
+
1336
+ </li>
1337
+
1338
+ </ul>
1339
+
1340
+ </div><table class="source_code">
1341
+ <tr>
1342
+ <td>
1343
+ <pre class="lines">
1344
+
1345
+
1346
+ 298
1347
+ 299
1348
+ 300
1349
+ 301
1350
+ 302
1351
+ 303
1352
+ 304</pre>
1353
+ </td>
1354
+ <td>
1355
+ <pre class="code"><span class="info file"># File 'lib/tasker/events/subscribers/telemetry_subscriber.rb', line 298</span>
1356
+
1357
+ <span class='kw'>def</span> <span class='id identifier rubyid_create_tracer'>create_tracer</span>
1358
+ <span class='id identifier rubyid_config'>config</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../../../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='period'>.</span><span class='id identifier rubyid_configuration'><span class='object_link'><a href="../../../Tasker.html#configuration-class_method" title="Tasker.configuration (method)">configuration</a></span></span>
1359
+ <span class='op'>::</span><span class='const'>OpenTelemetry</span><span class='period'>.</span><span class='id identifier rubyid_tracer_provider'>tracer_provider</span><span class='period'>.</span><span class='id identifier rubyid_tracer'>tracer</span><span class='lparen'>(</span>
1360
+ <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_telemetry'>telemetry</span><span class='period'>.</span><span class='id identifier rubyid_service_name'>service_name</span><span class='comma'>,</span>
1361
+ <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_telemetry'>telemetry</span><span class='period'>.</span><span class='id identifier rubyid_service_version'>service_version</span>
1362
+ <span class='rparen'>)</span>
1363
+ <span class='kw'>end</span></pre>
1364
+ </td>
1365
+ </tr>
1366
+ </table>
1367
+ </div>
1368
+
1369
+ <div class="method_details ">
1370
+ <h3 class="signature " id="event_to_annotation_name-instance_method">
1371
+
1372
+ #<strong>event_to_annotation_name</strong>(event) &#x21d2; <tt>Object</tt>
1373
+
1374
+
1375
+
1376
+
1377
+
1378
+ </h3><div class="docstring">
1379
+ <div class="discussion">
1380
+
1381
+ <p>Convert event to annotation name</p>
1382
+
1383
+
1384
+ </div>
1385
+ </div>
1386
+ <div class="tags">
1387
+
1388
+
1389
+ </div><table class="source_code">
1390
+ <tr>
1391
+ <td>
1392
+ <pre class="lines">
1393
+
1394
+
1395
+ 282
1396
+ 283
1397
+ 284
1398
+ 285
1399
+ 286</pre>
1400
+ </td>
1401
+ <td>
1402
+ <pre class="code"><span class="info file"># File 'lib/tasker/events/subscribers/telemetry_subscriber.rb', line 282</span>
1403
+
1404
+ <span class='kw'>def</span> <span class='id identifier rubyid_event_to_annotation_name'>event_to_annotation_name</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='rparen'>)</span>
1405
+ <span class='comment'># Simple mapping from event to annotation
1406
+ </span> <span class='id identifier rubyid_event_type'>event_type</span> <span class='op'>=</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:event_type</span><span class='rparen'>)</span>
1407
+ <span class='const'><span class='object_link'><a href="#EVENT_ANNOTATION_MAP-constant" title="Tasker::Events::Subscribers::TelemetrySubscriber::EVENT_ANNOTATION_MAP (constant)">EVENT_ANNOTATION_MAP</a></span></span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='id identifier rubyid_event_type'>event_type</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>event.processed</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
1408
+ <span class='kw'>end</span></pre>
1409
+ </td>
1410
+ </tr>
1411
+ </table>
1412
+ </div>
1413
+
1414
+ <div class="method_details ">
1415
+ <h3 class="signature " id="extract_step_attributes-instance_method">
1416
+
1417
+ #<strong>extract_step_attributes</strong>(event) &#x21d2; <tt>Object</tt>
1418
+
1419
+
1420
+
1421
+
1422
+
1423
+ </h3><div class="docstring">
1424
+ <div class="discussion">
1425
+
1426
+ <p>Extract step-specific attributes (enhanced from BaseSubscriber)</p>
1427
+
1428
+
1429
+ </div>
1430
+ </div>
1431
+ <div class="tags">
1432
+
1433
+
1434
+ </div><table class="source_code">
1435
+ <tr>
1436
+ <td>
1437
+ <pre class="lines">
1438
+
1439
+
1440
+ 158
1441
+ 159
1442
+ 160
1443
+ 161
1444
+ 162</pre>
1445
+ </td>
1446
+ <td>
1447
+ <pre class="code"><span class="info file"># File 'lib/tasker/events/subscribers/telemetry_subscriber.rb', line 158</span>
1448
+
1449
+ <span class='kw'>def</span> <span class='id identifier rubyid_extract_step_attributes'>extract_step_attributes</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='rparen'>)</span>
1450
+ <span class='kw'>super</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span>
1451
+ <span class='label'>step_name:</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:step_name</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>unknown_step</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
1452
+ <span class='rparen'>)</span>
1453
+ <span class='kw'>end</span></pre>
1454
+ </td>
1455
+ </tr>
1456
+ </table>
1457
+ </div>
1458
+
1459
+ <div class="method_details ">
1460
+ <h3 class="signature " id="finish_task_span-instance_method">
1461
+
1462
+ #<strong>finish_task_span</strong>(event, status, attributes) &#x21d2; <tt>Object</tt>
1463
+
1464
+
1465
+
1466
+
1467
+
1468
+ </h3><div class="docstring">
1469
+ <div class="discussion">
1470
+
1471
+ <p>Finish a task span with the appropriate status</p>
1472
+
1473
+
1474
+ </div>
1475
+ </div>
1476
+ <div class="tags">
1477
+ <p class="tag_title">Parameters:</p>
1478
+ <ul class="param">
1479
+
1480
+ <li>
1481
+
1482
+ <span class='name'>event</span>
1483
+
1484
+
1485
+ <span class='type'>(<tt>Hash</tt>)</span>
1486
+
1487
+
1488
+
1489
+ &mdash;
1490
+ <div class='inline'>
1491
+ <p>The event data</p>
1492
+ </div>
1493
+
1494
+ </li>
1495
+
1496
+ <li>
1497
+
1498
+ <span class='name'>status</span>
1499
+
1500
+
1501
+ <span class='type'>(<tt>Symbol</tt>)</span>
1502
+
1503
+
1504
+
1505
+ &mdash;
1506
+ <div class='inline'>
1507
+ <p>The span status (:ok or :error)</p>
1508
+ </div>
1509
+
1510
+ </li>
1511
+
1512
+ <li>
1513
+
1514
+ <span class='name'>attributes</span>
1515
+
1516
+
1517
+ <span class='type'>(<tt>Hash</tt>)</span>
1518
+
1519
+
1520
+
1521
+ &mdash;
1522
+ <div class='inline'>
1523
+ <p>Final span attributes</p>
1524
+ </div>
1525
+
1526
+ </li>
1527
+
1528
+ </ul>
1529
+
1530
+
1531
+ </div><table class="source_code">
1532
+ <tr>
1533
+ <td>
1534
+ <pre class="lines">
1535
+
1536
+
1537
+ 214
1538
+ 215
1539
+ 216
1540
+ 217
1541
+ 218
1542
+ 219
1543
+ 220
1544
+ 221
1545
+ 222
1546
+ 223
1547
+ 224
1548
+ 225
1549
+ 226
1550
+ 227
1551
+ 228
1552
+ 229
1553
+ 230
1554
+ 231
1555
+ 232
1556
+ 233
1557
+ 234
1558
+ 235
1559
+ 236
1560
+ 237</pre>
1561
+ </td>
1562
+ <td>
1563
+ <pre class="code"><span class="info file"># File 'lib/tasker/events/subscribers/telemetry_subscriber.rb', line 214</span>
1564
+
1565
+ <span class='kw'>def</span> <span class='id identifier rubyid_finish_task_span'>finish_task_span</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='id identifier rubyid_status'>status</span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span>
1566
+ <span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_opentelemetry_available?'>opentelemetry_available?</span>
1567
+
1568
+ <span class='id identifier rubyid_task_id'>task_id</span> <span class='op'>=</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:task_id</span><span class='rparen'>)</span>
1569
+ <span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_task_id'>task_id</span>
1570
+
1571
+ <span class='id identifier rubyid_span'>span</span> <span class='op'>=</span> <span class='id identifier rubyid_get_task_span'>get_task_span</span><span class='lparen'>(</span><span class='id identifier rubyid_task_id'>task_id</span><span class='rparen'>)</span>
1572
+ <span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_span'>span</span>
1573
+
1574
+ <span class='id identifier rubyid_otel_attributes'>otel_attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_convert_attributes_for_otel'>convert_attributes_for_otel</span><span class='lparen'>(</span><span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span>
1575
+
1576
+ <span class='comment'># Add completion event
1577
+ </span> <span class='id identifier rubyid_event_name'>event_name</span> <span class='op'>=</span> <span class='id identifier rubyid_status'>status</span> <span class='op'>==</span> <span class='symbol'>:error</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>task.failed</span><span class='tstring_end'>&#39;</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>task.completed</span><span class='tstring_end'>&#39;</span></span>
1578
+ <span class='id identifier rubyid_span'>span</span><span class='period'>.</span><span class='id identifier rubyid_add_event'>add_event</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name'>event_name</span><span class='comma'>,</span> <span class='label'>attributes:</span> <span class='id identifier rubyid_otel_attributes'>otel_attributes</span><span class='rparen'>)</span>
1579
+
1580
+ <span class='comment'># Set span status
1581
+ </span> <span class='id identifier rubyid_set_span_status'>set_span_status</span><span class='lparen'>(</span><span class='id identifier rubyid_span'>span</span><span class='comma'>,</span> <span class='id identifier rubyid_status'>status</span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span>
1582
+
1583
+ <span class='comment'># Finish the span
1584
+ </span> <span class='id identifier rubyid_span'>span</span><span class='period'>.</span><span class='id identifier rubyid_finish'>finish</span>
1585
+ <span class='id identifier rubyid_remove_task_span'>remove_task_span</span><span class='lparen'>(</span><span class='id identifier rubyid_task_id'>task_id</span><span class='rparen'>)</span>
1586
+ <span class='kw'>rescue</span> <span class='const'>StandardError</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
1587
+ <span class='const'>Rails</span><span class='period'>.</span><span class='id identifier rubyid_logger'>logger</span><span class='period'>.</span><span class='id identifier rubyid_warn'>warn</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Failed to finish task span: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
1588
+ <span class='kw'>end</span></pre>
1589
+ </td>
1590
+ </tr>
1591
+ </table>
1592
+ </div>
1593
+
1594
+ <div class="method_details ">
1595
+ <h3 class="signature " id="handle_step_completed-instance_method">
1596
+
1597
+ #<strong>handle_step_completed</strong>(event) &#x21d2; <tt>Object</tt>
1598
+
1599
+
1600
+
1601
+
1602
+
1603
+ </h3><div class="docstring">
1604
+ <div class="discussion">
1605
+
1606
+ <p>Handle step completion events</p>
1607
+
1608
+
1609
+ </div>
1610
+ </div>
1611
+ <div class="tags">
1612
+
1613
+
1614
+ </div><table class="source_code">
1615
+ <tr>
1616
+ <td>
1617
+ <pre class="lines">
1618
+
1619
+
1620
+ 106
1621
+ 107
1622
+ 108
1623
+ 109
1624
+ 110
1625
+ 111
1626
+ 112
1627
+ 113
1628
+ 114
1629
+ 115
1630
+ 116</pre>
1631
+ </td>
1632
+ <td>
1633
+ <pre class="code"><span class="info file"># File 'lib/tasker/events/subscribers/telemetry_subscriber.rb', line 106</span>
1634
+
1635
+ <span class='kw'>def</span> <span class='id identifier rubyid_handle_step_completed'>handle_step_completed</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='rparen'>)</span>
1636
+ <span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_should_process_event?'>should_process_event?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../../../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants.html" title="Tasker::Constants (module)">Constants</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants/StepEvents.html" title="Tasker::Constants::StepEvents (module)">StepEvents</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants/StepEvents.html#COMPLETED-constant" title="Tasker::Constants::StepEvents::COMPLETED (constant)">COMPLETED</a></span></span><span class='rparen'>)</span>
1637
+
1638
+ <span class='id identifier rubyid_attributes'>attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_extract_step_attributes'>extract_step_attributes</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span>
1639
+ <span class='label'>execution_duration:</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:execution_duration</span><span class='comma'>,</span> <span class='float'>0.0</span><span class='rparen'>)</span><span class='comma'>,</span>
1640
+ <span class='label'>attempt_number:</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:attempt_number</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span>
1641
+ <span class='rparen'>)</span>
1642
+
1643
+ <span class='comment'># Create step span as child of task span
1644
+ </span> <span class='id identifier rubyid_create_step_span'>create_step_span</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>tasker.step.execution</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='comma'>,</span> <span class='symbol'>:ok</span><span class='rparen'>)</span>
1645
+ <span class='kw'>end</span></pre>
1646
+ </td>
1647
+ </tr>
1648
+ </table>
1649
+ </div>
1650
+
1651
+ <div class="method_details ">
1652
+ <h3 class="signature " id="handle_step_execution_requested-instance_method">
1653
+
1654
+ #<strong>handle_step_execution_requested</strong>(event) &#x21d2; <tt>Object</tt>
1655
+
1656
+
1657
+
1658
+
1659
+
1660
+ </h3><div class="docstring">
1661
+ <div class="discussion">
1662
+
1663
+ <p>Handle step execution requested events</p>
1664
+
1665
+
1666
+ </div>
1667
+ </div>
1668
+ <div class="tags">
1669
+
1670
+
1671
+ </div><table class="source_code">
1672
+ <tr>
1673
+ <td>
1674
+ <pre class="lines">
1675
+
1676
+
1677
+ 94
1678
+ 95
1679
+ 96
1680
+ 97
1681
+ 98
1682
+ 99
1683
+ 100
1684
+ 101
1685
+ 102
1686
+ 103</pre>
1687
+ </td>
1688
+ <td>
1689
+ <pre class="code"><span class="info file"># File 'lib/tasker/events/subscribers/telemetry_subscriber.rb', line 94</span>
1690
+
1691
+ <span class='kw'>def</span> <span class='id identifier rubyid_handle_step_execution_requested'>handle_step_execution_requested</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='rparen'>)</span>
1692
+ <span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_should_process_event?'>should_process_event?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../../../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants.html" title="Tasker::Constants (module)">Constants</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants/StepEvents.html" title="Tasker::Constants::StepEvents (module)">StepEvents</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants/StepEvents.html#EXECUTION_REQUESTED-constant" title="Tasker::Constants::StepEvents::EXECUTION_REQUESTED (constant)">EXECUTION_REQUESTED</a></span></span><span class='rparen'>)</span>
1693
+
1694
+ <span class='id identifier rubyid_attributes'>attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_extract_step_attributes'>extract_step_attributes</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span>
1695
+ <span class='label'>attempt_number:</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:attempt_number</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span>
1696
+ <span class='rparen'>)</span>
1697
+
1698
+ <span class='comment'># Create a simple span for step queuing
1699
+ </span> <span class='id identifier rubyid_create_simple_span'>create_simple_span</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>tasker.step.queued</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span>
1700
+ <span class='kw'>end</span></pre>
1701
+ </td>
1702
+ </tr>
1703
+ </table>
1704
+ </div>
1705
+
1706
+ <div class="method_details ">
1707
+ <h3 class="signature " id="handle_step_failed-instance_method">
1708
+
1709
+ #<strong>handle_step_failed</strong>(event) &#x21d2; <tt>Object</tt>
1710
+
1711
+
1712
+
1713
+
1714
+
1715
+ </h3><div class="docstring">
1716
+ <div class="discussion">
1717
+
1718
+ <p>Handle step failure events</p>
1719
+
1720
+
1721
+ </div>
1722
+ </div>
1723
+ <div class="tags">
1724
+
1725
+
1726
+ </div><table class="source_code">
1727
+ <tr>
1728
+ <td>
1729
+ <pre class="lines">
1730
+
1731
+
1732
+ 119
1733
+ 120
1734
+ 121
1735
+ 122
1736
+ 123
1737
+ 124
1738
+ 125
1739
+ 126
1740
+ 127
1741
+ 128
1742
+ 129
1743
+ 130
1744
+ 131</pre>
1745
+ </td>
1746
+ <td>
1747
+ <pre class="code"><span class="info file"># File 'lib/tasker/events/subscribers/telemetry_subscriber.rb', line 119</span>
1748
+
1749
+ <span class='kw'>def</span> <span class='id identifier rubyid_handle_step_failed'>handle_step_failed</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='rparen'>)</span>
1750
+ <span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_should_process_event?'>should_process_event?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../../../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants.html" title="Tasker::Constants (module)">Constants</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants/StepEvents.html" title="Tasker::Constants::StepEvents (module)">StepEvents</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants/StepEvents.html#FAILED-constant" title="Tasker::Constants::StepEvents::FAILED (constant)">FAILED</a></span></span><span class='rparen'>)</span>
1751
+
1752
+ <span class='id identifier rubyid_attributes'>attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_extract_step_attributes'>extract_step_attributes</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span>
1753
+ <span class='label'>error:</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:error_message</span><span class='comma'>,</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:error</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Unknown error</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='rparen'>)</span><span class='comma'>,</span>
1754
+ <span class='label'>attempt_number:</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:attempt_number</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span><span class='comma'>,</span>
1755
+ <span class='label'>exception_class:</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:exception_class</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>StandardError</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='comma'>,</span>
1756
+ <span class='label'>retry_limit:</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:retry_limit</span><span class='comma'>,</span> <span class='int'>3</span><span class='rparen'>)</span>
1757
+ <span class='rparen'>)</span>
1758
+
1759
+ <span class='comment'># Create step span as child of task span with error status
1760
+ </span> <span class='id identifier rubyid_create_step_span'>create_step_span</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>tasker.step.execution</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='comma'>,</span> <span class='symbol'>:error</span><span class='rparen'>)</span>
1761
+ <span class='kw'>end</span></pre>
1762
+ </td>
1763
+ </tr>
1764
+ </table>
1765
+ </div>
1766
+
1767
+ <div class="method_details ">
1768
+ <h3 class="signature " id="handle_step_retry_requested-instance_method">
1769
+
1770
+ #<strong>handle_step_retry_requested</strong>(event) &#x21d2; <tt>Object</tt>
1771
+
1772
+
1773
+
1774
+
1775
+
1776
+ </h3><div class="docstring">
1777
+ <div class="discussion">
1778
+
1779
+ <p>Handle step retry events</p>
1780
+
1781
+
1782
+ </div>
1783
+ </div>
1784
+ <div class="tags">
1785
+
1786
+
1787
+ </div><table class="source_code">
1788
+ <tr>
1789
+ <td>
1790
+ <pre class="lines">
1791
+
1792
+
1793
+ 134
1794
+ 135
1795
+ 136
1796
+ 137
1797
+ 138
1798
+ 139
1799
+ 140
1800
+ 141
1801
+ 142
1802
+ 143
1803
+ 144</pre>
1804
+ </td>
1805
+ <td>
1806
+ <pre class="code"><span class="info file"># File 'lib/tasker/events/subscribers/telemetry_subscriber.rb', line 134</span>
1807
+
1808
+ <span class='kw'>def</span> <span class='id identifier rubyid_handle_step_retry_requested'>handle_step_retry_requested</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='rparen'>)</span>
1809
+ <span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_should_process_event?'>should_process_event?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../../../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants.html" title="Tasker::Constants (module)">Constants</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants/StepEvents.html" title="Tasker::Constants::StepEvents (module)">StepEvents</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants/StepEvents.html#RETRY_REQUESTED-constant" title="Tasker::Constants::StepEvents::RETRY_REQUESTED (constant)">RETRY_REQUESTED</a></span></span><span class='rparen'>)</span>
1810
+
1811
+ <span class='id identifier rubyid_attributes'>attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_extract_step_attributes'>extract_step_attributes</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span>
1812
+ <span class='label'>attempt_number:</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:attempt_number</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span><span class='comma'>,</span>
1813
+ <span class='label'>retry_limit:</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:retry_limit</span><span class='comma'>,</span> <span class='int'>3</span><span class='rparen'>)</span>
1814
+ <span class='rparen'>)</span>
1815
+
1816
+ <span class='comment'># Create a simple span for retry events
1817
+ </span> <span class='id identifier rubyid_create_simple_span'>create_simple_span</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>tasker.step.retry</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span>
1818
+ <span class='kw'>end</span></pre>
1819
+ </td>
1820
+ </tr>
1821
+ </table>
1822
+ </div>
1823
+
1824
+ <div class="method_details ">
1825
+ <h3 class="signature " id="handle_task_completed-instance_method">
1826
+
1827
+ #<strong>handle_task_completed</strong>(event) &#x21d2; <tt>Object</tt>
1828
+
1829
+
1830
+
1831
+
1832
+
1833
+ </h3><div class="docstring">
1834
+ <div class="discussion">
1835
+
1836
+ <p>Handle task completion events</p>
1837
+
1838
+
1839
+ </div>
1840
+ </div>
1841
+ <div class="tags">
1842
+
1843
+
1844
+ </div><table class="source_code">
1845
+ <tr>
1846
+ <td>
1847
+ <pre class="lines">
1848
+
1849
+
1850
+ 62
1851
+ 63
1852
+ 64
1853
+ 65
1854
+ 66
1855
+ 67
1856
+ 68
1857
+ 69
1858
+ 70
1859
+ 71
1860
+ 72
1861
+ 73
1862
+ 74
1863
+ 75
1864
+ 76</pre>
1865
+ </td>
1866
+ <td>
1867
+ <pre class="code"><span class="info file"># File 'lib/tasker/events/subscribers/telemetry_subscriber.rb', line 62</span>
1868
+
1869
+ <span class='kw'>def</span> <span class='id identifier rubyid_handle_task_completed'>handle_task_completed</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='rparen'>)</span>
1870
+ <span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_should_process_event?'>should_process_event?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../../../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants.html" title="Tasker::Constants (module)">Constants</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants/TaskEvents.html" title="Tasker::Constants::TaskEvents (module)">TaskEvents</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants/TaskEvents.html#COMPLETED-constant" title="Tasker::Constants::TaskEvents::COMPLETED (constant)">COMPLETED</a></span></span><span class='rparen'>)</span>
1871
+
1872
+ <span class='id identifier rubyid_attributes'>attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_extract_core_attributes'>extract_core_attributes</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span>
1873
+ <span class='label'>task_name:</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:task_name</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>unknown_task</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='comma'>,</span>
1874
+ <span class='label'>duration:</span> <span class='id identifier rubyid_calculate_duration'>calculate_duration</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='rparen'>)</span><span class='comma'>,</span>
1875
+ <span class='label'>total_execution_duration:</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:total_execution_duration</span><span class='comma'>,</span> <span class='float'>0.0</span><span class='rparen'>)</span><span class='comma'>,</span>
1876
+ <span class='label'>current_execution_duration:</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:current_execution_duration</span><span class='comma'>,</span> <span class='float'>0.0</span><span class='rparen'>)</span><span class='comma'>,</span>
1877
+ <span class='label'>total_steps:</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:total_steps</span><span class='comma'>,</span> <span class='int'>0</span><span class='rparen'>)</span><span class='comma'>,</span>
1878
+ <span class='label'>completed_steps:</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:completed_steps</span><span class='comma'>,</span> <span class='int'>0</span><span class='rparen'>)</span>
1879
+ <span class='rparen'>)</span>
1880
+
1881
+ <span class='comment'># Finish the task span with success status
1882
+ </span> <span class='id identifier rubyid_finish_task_span'>finish_task_span</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:ok</span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span>
1883
+ <span class='kw'>end</span></pre>
1884
+ </td>
1885
+ </tr>
1886
+ </table>
1887
+ </div>
1888
+
1889
+ <div class="method_details ">
1890
+ <h3 class="signature " id="handle_task_failed-instance_method">
1891
+
1892
+ #<strong>handle_task_failed</strong>(event) &#x21d2; <tt>Object</tt>
1893
+
1894
+
1895
+
1896
+
1897
+
1898
+ </h3><div class="docstring">
1899
+ <div class="discussion">
1900
+
1901
+ <p>Handle task failure events</p>
1902
+
1903
+
1904
+ </div>
1905
+ </div>
1906
+ <div class="tags">
1907
+
1908
+
1909
+ </div><table class="source_code">
1910
+ <tr>
1911
+ <td>
1912
+ <pre class="lines">
1913
+
1914
+
1915
+ 79
1916
+ 80
1917
+ 81
1918
+ 82
1919
+ 83
1920
+ 84
1921
+ 85
1922
+ 86
1923
+ 87
1924
+ 88
1925
+ 89
1926
+ 90
1927
+ 91</pre>
1928
+ </td>
1929
+ <td>
1930
+ <pre class="code"><span class="info file"># File 'lib/tasker/events/subscribers/telemetry_subscriber.rb', line 79</span>
1931
+
1932
+ <span class='kw'>def</span> <span class='id identifier rubyid_handle_task_failed'>handle_task_failed</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='rparen'>)</span>
1933
+ <span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_should_process_event?'>should_process_event?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../../../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants.html" title="Tasker::Constants (module)">Constants</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants/TaskEvents.html" title="Tasker::Constants::TaskEvents (module)">TaskEvents</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants/TaskEvents.html#FAILED-constant" title="Tasker::Constants::TaskEvents::FAILED (constant)">FAILED</a></span></span><span class='rparen'>)</span>
1934
+
1935
+ <span class='id identifier rubyid_attributes'>attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_extract_core_attributes'>extract_core_attributes</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span>
1936
+ <span class='label'>task_name:</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:task_name</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>unknown_task</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='comma'>,</span>
1937
+ <span class='label'>error:</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:error_message</span><span class='comma'>,</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:error</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Unknown error</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='rparen'>)</span><span class='comma'>,</span>
1938
+ <span class='label'>exception_class:</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:exception_class</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>StandardError</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='comma'>,</span>
1939
+ <span class='label'>failed_steps:</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:failed_steps</span><span class='comma'>,</span> <span class='int'>0</span><span class='rparen'>)</span>
1940
+ <span class='rparen'>)</span>
1941
+
1942
+ <span class='comment'># Finish the task span with error status
1943
+ </span> <span class='id identifier rubyid_finish_task_span'>finish_task_span</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:error</span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span>
1944
+ <span class='kw'>end</span></pre>
1945
+ </td>
1946
+ </tr>
1947
+ </table>
1948
+ </div>
1949
+
1950
+ <div class="method_details ">
1951
+ <h3 class="signature " id="handle_task_initialize_requested-instance_method">
1952
+
1953
+ #<strong>handle_task_initialize_requested</strong>(event) &#x21d2; <tt>Object</tt>
1954
+
1955
+
1956
+
1957
+
1958
+
1959
+ </h3><div class="docstring">
1960
+ <div class="discussion">
1961
+
1962
+ <p>Handle task initialization events</p>
1963
+
1964
+
1965
+ </div>
1966
+ </div>
1967
+ <div class="tags">
1968
+
1969
+
1970
+ </div><table class="source_code">
1971
+ <tr>
1972
+ <td>
1973
+ <pre class="lines">
1974
+
1975
+
1976
+ 38
1977
+ 39
1978
+ 40
1979
+ 41
1980
+ 42
1981
+ 43
1982
+ 44
1983
+ 45
1984
+ 46
1985
+ 47</pre>
1986
+ </td>
1987
+ <td>
1988
+ <pre class="code"><span class="info file"># File 'lib/tasker/events/subscribers/telemetry_subscriber.rb', line 38</span>
1989
+
1990
+ <span class='kw'>def</span> <span class='id identifier rubyid_handle_task_initialize_requested'>handle_task_initialize_requested</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='rparen'>)</span>
1991
+ <span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_should_process_event?'>should_process_event?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../../../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants.html" title="Tasker::Constants (module)">Constants</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants/TaskEvents.html" title="Tasker::Constants::TaskEvents (module)">TaskEvents</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants/TaskEvents.html#INITIALIZE_REQUESTED-constant" title="Tasker::Constants::TaskEvents::INITIALIZE_REQUESTED (constant)">INITIALIZE_REQUESTED</a></span></span><span class='rparen'>)</span>
1992
+
1993
+ <span class='id identifier rubyid_attributes'>attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_extract_core_attributes'>extract_core_attributes</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span>
1994
+ <span class='label'>task_name:</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:task_name</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>unknown_task</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
1995
+ <span class='rparen'>)</span>
1996
+
1997
+ <span class='comment'># Only create basic span for initialization - task.start_requested will create the main span
1998
+ </span> <span class='id identifier rubyid_create_simple_span'>create_simple_span</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>tasker.task.initialize</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span>
1999
+ <span class='kw'>end</span></pre>
2000
+ </td>
2001
+ </tr>
2002
+ </table>
2003
+ </div>
2004
+
2005
+ <div class="method_details ">
2006
+ <h3 class="signature " id="handle_task_start_requested-instance_method">
2007
+
2008
+ #<strong>handle_task_start_requested</strong>(event) &#x21d2; <tt>Object</tt>
2009
+
2010
+
2011
+
2012
+
2013
+
2014
+ </h3><div class="docstring">
2015
+ <div class="discussion">
2016
+
2017
+ <p>Handle task start events</p>
2018
+
2019
+
2020
+ </div>
2021
+ </div>
2022
+ <div class="tags">
2023
+
2024
+
2025
+ </div><table class="source_code">
2026
+ <tr>
2027
+ <td>
2028
+ <pre class="lines">
2029
+
2030
+
2031
+ 50
2032
+ 51
2033
+ 52
2034
+ 53
2035
+ 54
2036
+ 55
2037
+ 56
2038
+ 57
2039
+ 58
2040
+ 59</pre>
2041
+ </td>
2042
+ <td>
2043
+ <pre class="code"><span class="info file"># File 'lib/tasker/events/subscribers/telemetry_subscriber.rb', line 50</span>
2044
+
2045
+ <span class='kw'>def</span> <span class='id identifier rubyid_handle_task_start_requested'>handle_task_start_requested</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='rparen'>)</span>
2046
+ <span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_should_process_event?'>should_process_event?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../../../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants.html" title="Tasker::Constants (module)">Constants</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants/TaskEvents.html" title="Tasker::Constants::TaskEvents (module)">TaskEvents</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Constants/TaskEvents.html#START_REQUESTED-constant" title="Tasker::Constants::TaskEvents::START_REQUESTED (constant)">START_REQUESTED</a></span></span><span class='rparen'>)</span>
2047
+
2048
+ <span class='id identifier rubyid_attributes'>attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_extract_core_attributes'>extract_core_attributes</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span>
2049
+ <span class='label'>task_name:</span> <span class='id identifier rubyid_safe_get'>safe_get</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='symbol'>:task_name</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>unknown_task</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
2050
+ <span class='rparen'>)</span>
2051
+
2052
+ <span class='comment'># Create root span for task and store it for child spans
2053
+ </span> <span class='id identifier rubyid_create_task_span'>create_task_span</span><span class='lparen'>(</span><span class='id identifier rubyid_event'>event</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>tasker.task.execution</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span>
2054
+ <span class='kw'>end</span></pre>
2055
+ </td>
2056
+ </tr>
2057
+ </table>
2058
+ </div>
2059
+
2060
+ <div class="method_details ">
2061
+ <h3 class="signature " id="opentelemetry_available?-instance_method">
2062
+
2063
+ #<strong>opentelemetry_available?</strong> &#x21d2; <tt>Boolean</tt>
2064
+
2065
+
2066
+
2067
+
2068
+
2069
+ </h3><div class="docstring">
2070
+ <div class="discussion">
2071
+
2072
+ <p>Check if OpenTelemetry is available and configured</p>
2073
+
2074
+
2075
+ </div>
2076
+ </div>
2077
+ <div class="tags">
2078
+
2079
+ <p class="tag_title">Returns:</p>
2080
+ <ul class="return">
2081
+
2082
+ <li>
2083
+
2084
+
2085
+ <span class='type'>(<tt>Boolean</tt>)</span>
2086
+
2087
+
2088
+
2089
+ &mdash;
2090
+ <div class='inline'>
2091
+ <p>True if OpenTelemetry is available</p>
2092
+ </div>
2093
+
2094
+ </li>
2095
+
2096
+ </ul>
2097
+
2098
+ </div><table class="source_code">
2099
+ <tr>
2100
+ <td>
2101
+ <pre class="lines">
2102
+
2103
+
2104
+ 291
2105
+ 292
2106
+ 293</pre>
2107
+ </td>
2108
+ <td>
2109
+ <pre class="code"><span class="info file"># File 'lib/tasker/events/subscribers/telemetry_subscriber.rb', line 291</span>
2110
+
2111
+ <span class='kw'>def</span> <span class='id identifier rubyid_opentelemetry_available?'>opentelemetry_available?</span>
2112
+ <span class='kw'>defined?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>OpenTelemetry</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='op'>::</span><span class='const'>OpenTelemetry</span><span class='period'>.</span><span class='id identifier rubyid_tracer_provider'>tracer_provider</span>
2113
+ <span class='kw'>end</span></pre>
2114
+ </td>
2115
+ </tr>
2116
+ </table>
2117
+ </div>
2118
+
2119
+ <div class="method_details ">
2120
+ <h3 class="signature " id="should_process_event?-instance_method">
2121
+
2122
+ #<strong>should_process_event?</strong>(event_constant) &#x21d2; <tt>Boolean</tt>
2123
+
2124
+
2125
+
2126
+
2127
+
2128
+ </h3><div class="docstring">
2129
+ <div class="discussion">
2130
+
2131
+ <p>Override BaseSubscriber to add telemetry-specific filtering</p>
2132
+
2133
+
2134
+ </div>
2135
+ </div>
2136
+ <div class="tags">
2137
+
2138
+ <p class="tag_title">Returns:</p>
2139
+ <ul class="return">
2140
+
2141
+ <li>
2142
+
2143
+
2144
+ <span class='type'>(<tt>Boolean</tt>)</span>
2145
+
2146
+
2147
+
2148
+ </li>
2149
+
2150
+ </ul>
2151
+
2152
+ </div><table class="source_code">
2153
+ <tr>
2154
+ <td>
2155
+ <pre class="lines">
2156
+
2157
+
2158
+ 147
2159
+ 148
2160
+ 149
2161
+ 150
2162
+ 151
2163
+ 152
2164
+ 153
2165
+ 154
2166
+ 155</pre>
2167
+ </td>
2168
+ <td>
2169
+ <pre class="code"><span class="info file"># File 'lib/tasker/events/subscribers/telemetry_subscriber.rb', line 147</span>
2170
+
2171
+ <span class='kw'>def</span> <span class='id identifier rubyid_should_process_event?'>should_process_event?</span><span class='lparen'>(</span><span class='id identifier rubyid_event_constant'>event_constant</span><span class='rparen'>)</span>
2172
+ <span class='comment'># Get configuration once for efficiency
2173
+ </span> <span class='id identifier rubyid_config'>config</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../../../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='period'>.</span><span class='id identifier rubyid_configuration'><span class='object_link'><a href="../../../Tasker.html#configuration-class_method" title="Tasker.configuration (method)">configuration</a></span></span>
2174
+
2175
+ <span class='comment'># Only process if telemetry is enabled
2176
+ </span> <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_telemetry'>telemetry</span><span class='period'>.</span><span class='id identifier rubyid_enabled'>enabled</span>
2177
+
2178
+ <span class='kw'>super</span>
2179
+ <span class='kw'>end</span></pre>
2180
+ </td>
2181
+ </tr>
2182
+ </table>
2183
+ </div>
2184
+
2185
+ <div class="method_details ">
2186
+ <h3 class="signature " id="telemetry_enabled?-instance_method">
2187
+
2188
+ #<strong>telemetry_enabled?</strong> &#x21d2; <tt>Boolean</tt>
2189
+
2190
+
2191
+
2192
+
2193
+
2194
+ </h3><div class="docstring">
2195
+ <div class="discussion">
2196
+
2197
+ <p>Check if telemetry is enabled</p>
2198
+
2199
+
2200
+ </div>
2201
+ </div>
2202
+ <div class="tags">
2203
+
2204
+ <p class="tag_title">Returns:</p>
2205
+ <ul class="return">
2206
+
2207
+ <li>
2208
+
2209
+
2210
+ <span class='type'>(<tt>Boolean</tt>)</span>
2211
+
2212
+
2213
+
2214
+ </li>
2215
+
2216
+ </ul>
2217
+
2218
+ </div><table class="source_code">
2219
+ <tr>
2220
+ <td>
2221
+ <pre class="lines">
2222
+
2223
+
2224
+ 165
2225
+ 166
2226
+ 167</pre>
2227
+ </td>
2228
+ <td>
2229
+ <pre class="code"><span class="info file"># File 'lib/tasker/events/subscribers/telemetry_subscriber.rb', line 165</span>
2230
+
2231
+ <span class='kw'>def</span> <span class='id identifier rubyid_telemetry_enabled?'>telemetry_enabled?</span>
2232
+ <span class='const'><span class='object_link'><a href="../../../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='period'>.</span><span class='id identifier rubyid_configuration'><span class='object_link'><a href="../../../Tasker.html#configuration-class_method" title="Tasker.configuration (method)">configuration</a></span></span><span class='period'>.</span><span class='id identifier rubyid_telemetry'><span class='object_link'><a href="../../Configuration.html#telemetry-instance_method" title="Tasker::Configuration#telemetry (method)">telemetry</a></span></span><span class='period'>.</span><span class='id identifier rubyid_enabled'><span class='object_link'><a href="../../Types/TelemetryConfig.html#enabled-instance_method" title="Tasker::Types::TelemetryConfig#enabled (method)">enabled</a></span></span> <span class='op'>!=</span> <span class='kw'>false</span>
2233
+ <span class='kw'>end</span></pre>
2234
+ </td>
2235
+ </tr>
2236
+ </table>
2237
+ </div>
2238
+
2239
+ </div>
2240
+
2241
+ </div>
2242
+
2243
+ <div id="footer">
2244
+ Generated on Tue Jul 1 16:47:41 2025 by
2245
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
2246
+ 0.9.37 (ruby-3.2.4).
2247
+ </div>
2248
+
2249
+ </div>
2250
+ </body>
2251
+ </html>