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.
- checksums.yaml +7 -0
- data/LICENSE +22 -0
- data/README.md +443 -0
- data/Rakefile +10 -0
- data/app/controllers/tasker/analytics_controller.rb +179 -0
- data/app/controllers/tasker/application_controller.rb +45 -0
- data/app/controllers/tasker/graphql_controller.rb +193 -0
- data/app/controllers/tasker/handlers_controller.rb +217 -0
- data/app/controllers/tasker/health_controller.rb +229 -0
- data/app/controllers/tasker/metrics_controller.rb +111 -0
- data/app/controllers/tasker/page_sort.rb +97 -0
- data/app/controllers/tasker/task_diagrams_controller.rb +30 -0
- data/app/controllers/tasker/tasks_controller.rb +123 -0
- data/app/controllers/tasker/workflow_steps_controller.rb +69 -0
- data/app/graphql/examples/all_tasks.graphql +22 -0
- data/app/graphql/examples/pending_tasks.graphql +23 -0
- data/app/graphql/tasker/graph_ql_types/annotation_type.rb +14 -0
- data/app/graphql/tasker/graph_ql_types/base_argument.rb +9 -0
- data/app/graphql/tasker/graph_ql_types/base_connection.rb +11 -0
- data/app/graphql/tasker/graph_ql_types/base_edge.rb +10 -0
- data/app/graphql/tasker/graph_ql_types/base_enum.rb +9 -0
- data/app/graphql/tasker/graph_ql_types/base_field.rb +10 -0
- data/app/graphql/tasker/graph_ql_types/base_input_object.rb +10 -0
- data/app/graphql/tasker/graph_ql_types/base_interface.rb +14 -0
- data/app/graphql/tasker/graph_ql_types/base_object.rb +10 -0
- data/app/graphql/tasker/graph_ql_types/base_scalar.rb +9 -0
- data/app/graphql/tasker/graph_ql_types/base_union.rb +11 -0
- data/app/graphql/tasker/graph_ql_types/dependent_system_object_map_type.rb +18 -0
- data/app/graphql/tasker/graph_ql_types/dependent_system_type.rb +13 -0
- data/app/graphql/tasker/graph_ql_types/mutation_type.rb +16 -0
- data/app/graphql/tasker/graph_ql_types/named_step_type.rb +16 -0
- data/app/graphql/tasker/graph_ql_types/named_task_type.rb +14 -0
- data/app/graphql/tasker/graph_ql_types/named_tasks_named_step_type.rb +19 -0
- data/app/graphql/tasker/graph_ql_types/node_type.rb +12 -0
- data/app/graphql/tasker/graph_ql_types/query_type.rb +20 -0
- data/app/graphql/tasker/graph_ql_types/task_annotation_type.rb +17 -0
- data/app/graphql/tasker/graph_ql_types/task_interface.rb +17 -0
- data/app/graphql/tasker/graph_ql_types/task_type.rb +26 -0
- data/app/graphql/tasker/graph_ql_types/workflow_step_type.rb +154 -0
- data/app/graphql/tasker/graph_ql_types.rb +42 -0
- data/app/graphql/tasker/mutations/base_mutation.rb +13 -0
- data/app/graphql/tasker/mutations/cancel_step.rb +29 -0
- data/app/graphql/tasker/mutations/cancel_task.rb +29 -0
- data/app/graphql/tasker/mutations/create_task.rb +52 -0
- data/app/graphql/tasker/mutations/update_step.rb +36 -0
- data/app/graphql/tasker/mutations/update_task.rb +41 -0
- data/app/graphql/tasker/queries/all_annotation_types.rb +17 -0
- data/app/graphql/tasker/queries/all_tasks.rb +23 -0
- data/app/graphql/tasker/queries/base_query.rb +9 -0
- data/app/graphql/tasker/queries/helpers.rb +16 -0
- data/app/graphql/tasker/queries/one_step.rb +24 -0
- data/app/graphql/tasker/queries/one_task.rb +18 -0
- data/app/graphql/tasker/queries/tasks_by_annotation.rb +31 -0
- data/app/graphql/tasker/queries/tasks_by_status.rb +30 -0
- data/app/graphql/tasker/tasker_rails_schema.rb +52 -0
- data/app/jobs/tasker/application_job.rb +8 -0
- data/app/jobs/tasker/metrics_export_job.rb +252 -0
- data/app/jobs/tasker/task_runner_job.rb +224 -0
- data/app/models/tasker/annotation_type.rb +26 -0
- data/app/models/tasker/application_record.rb +70 -0
- data/app/models/tasker/dependent_system.rb +26 -0
- data/app/models/tasker/dependent_system_object_map.rb +64 -0
- data/app/models/tasker/diagram/edge.rb +106 -0
- data/app/models/tasker/diagram/flowchart.rb +137 -0
- data/app/models/tasker/diagram/node.rb +99 -0
- data/app/models/tasker/named_step.rb +41 -0
- data/app/models/tasker/named_task.rb +121 -0
- data/app/models/tasker/named_tasks_named_step.rb +82 -0
- data/app/models/tasker/step_dag_relationship.rb +65 -0
- data/app/models/tasker/step_readiness_status.rb +59 -0
- data/app/models/tasker/task.rb +424 -0
- data/app/models/tasker/task_annotation.rb +36 -0
- data/app/models/tasker/task_diagram.rb +332 -0
- data/app/models/tasker/task_execution_context.rb +29 -0
- data/app/models/tasker/task_namespace.rb +41 -0
- data/app/models/tasker/task_transition.rb +235 -0
- data/app/models/tasker/workflow_step.rb +461 -0
- data/app/models/tasker/workflow_step_edge.rb +94 -0
- data/app/models/tasker/workflow_step_transition.rb +434 -0
- data/app/serializers/tasker/annotation_type_serializer.rb +8 -0
- data/app/serializers/tasker/handler_serializer.rb +109 -0
- data/app/serializers/tasker/task_annotation_serializer.rb +32 -0
- data/app/serializers/tasker/task_serializer.rb +168 -0
- data/app/serializers/tasker/workflow_step_serializer.rb +27 -0
- data/app/services/tasker/analytics_service.rb +409 -0
- data/app/views/tasker/task/_diagram.html.erb +32 -0
- data/config/initializers/dry_struct.rb +11 -0
- data/config/initializers/statesman.rb +6 -0
- data/config/initializers/tasker_orchestration.rb +17 -0
- data/config/initializers/time_formats.rb +4 -0
- data/config/routes.rb +34 -0
- data/config/tasker/subscriptions/example_integrations.yml +67 -0
- data/config/tasker/system_events.yml +305 -0
- data/db/functions/calculate_dependency_levels_v01.sql +45 -0
- data/db/functions/get_analytics_metrics_v01.sql +137 -0
- data/db/functions/get_slowest_steps_v01.sql +82 -0
- data/db/functions/get_slowest_tasks_v01.sql +96 -0
- data/db/functions/get_step_readiness_status_batch_v01.sql +140 -0
- data/db/functions/get_step_readiness_status_v01.sql +139 -0
- data/db/functions/get_system_health_counts_v01.sql +108 -0
- data/db/functions/get_task_execution_context_v01.sql +108 -0
- data/db/functions/get_task_execution_contexts_batch_v01.sql +104 -0
- data/db/init/schema.sql +2277 -0
- data/db/migrate/20250701165431_initial_tasker_schema.rb +116 -0
- data/db/views/tasker_step_dag_relationships_v01.sql +69 -0
- data/docs/APPLICATION_GENERATOR.md +384 -0
- data/docs/AUTH.md +1780 -0
- data/docs/CIRCUIT_BREAKER.md +224 -0
- data/docs/DEVELOPER_GUIDE.md +2665 -0
- data/docs/EVENT_SYSTEM.md +637 -0
- data/docs/EXECUTION_CONFIGURATION.md +341 -0
- data/docs/FLOW_CHART.md +149 -0
- data/docs/HEALTH.md +542 -0
- data/docs/METRICS.md +731 -0
- data/docs/OPTIMIZATION_PLAN.md +1479 -0
- data/docs/OVERVIEW.md +552 -0
- data/docs/QUICK_START.md +270 -0
- data/docs/REGISTRY_SYSTEMS.md +373 -0
- data/docs/REST_API.md +632 -0
- data/docs/ROADMAP.md +221 -0
- data/docs/SQL_FUNCTIONS.md +1408 -0
- data/docs/TASK_DIAGRAM.md +252 -0
- data/docs/TASK_EXECUTION_CONTROL_FLOW.md +237 -0
- data/docs/TELEMETRY.md +795 -0
- data/docs/TROUBLESHOOTING.md +756 -0
- data/docs/TaskHandlerGenerator.html +255 -0
- data/docs/Tasker/Analysis/RuntimeGraphAnalyzer.html +907 -0
- data/docs/Tasker/Analysis/TemplateGraphAnalyzer.html +1236 -0
- data/docs/Tasker/Analysis.html +117 -0
- data/docs/Tasker/AnalyticsController.html +450 -0
- data/docs/Tasker/AnalyticsService/BottleneckAnalytics.html +816 -0
- data/docs/Tasker/AnalyticsService/PerformanceAnalytics.html +586 -0
- data/docs/Tasker/AnalyticsService.html +2221 -0
- data/docs/Tasker/AnnotationType.html +137 -0
- data/docs/Tasker/AnnotationTypeSerializer.html +124 -0
- data/docs/Tasker/ApplicationController.html +147 -0
- data/docs/Tasker/ApplicationJob.html +128 -0
- data/docs/Tasker/ApplicationRecord.html +378 -0
- data/docs/Tasker/Authentication/AuthenticationError.html +124 -0
- data/docs/Tasker/Authentication/ConfigurationError.html +124 -0
- data/docs/Tasker/Authentication/Coordinator.html +242 -0
- data/docs/Tasker/Authentication/Interface.html +560 -0
- data/docs/Tasker/Authentication/InterfaceError.html +124 -0
- data/docs/Tasker/Authentication/NoneAuthenticator.html +338 -0
- data/docs/Tasker/Authentication.html +119 -0
- data/docs/Tasker/Authorization/AuthorizationError.html +139 -0
- data/docs/Tasker/Authorization/BaseCoordinator.html +927 -0
- data/docs/Tasker/Authorization/ConfigurationError.html +153 -0
- data/docs/Tasker/Authorization/ResourceConstants/ACTIONS.html +428 -0
- data/docs/Tasker/Authorization/ResourceConstants/RESOURCES.html +365 -0
- data/docs/Tasker/Authorization/ResourceConstants.html +146 -0
- data/docs/Tasker/Authorization/ResourceRegistry.html +882 -0
- data/docs/Tasker/Authorization/UnauthorizedError.html +153 -0
- data/docs/Tasker/Authorization.html +582 -0
- data/docs/Tasker/CacheCapabilities.html +167 -0
- data/docs/Tasker/CacheStrategy.html +1297 -0
- data/docs/Tasker/Concerns/Authenticatable.html +116 -0
- data/docs/Tasker/Concerns/Authorizable/AdminStatusChecker.html +256 -0
- data/docs/Tasker/Concerns/Authorizable.html +816 -0
- data/docs/Tasker/Concerns/ControllerAuthorizable.html +157 -0
- data/docs/Tasker/Concerns/EventPublisher.html +4023 -0
- data/docs/Tasker/Concerns/IdempotentStateTransitions.html +806 -0
- data/docs/Tasker/Concerns/LifecycleEventHelpers.html +129 -0
- data/docs/Tasker/Concerns/OrchestrationPublisher.html +129 -0
- data/docs/Tasker/Concerns/StateMachineBase/ClassMethods.html +1075 -0
- data/docs/Tasker/Concerns/StateMachineBase/StateMachineBase/ClassMethods.html +191 -0
- data/docs/Tasker/Concerns/StateMachineBase/StateMachineBase.html +126 -0
- data/docs/Tasker/Concerns/StateMachineBase.html +153 -0
- data/docs/Tasker/Concerns/StructuredLogging.html +1413 -0
- data/docs/Tasker/Concerns.html +117 -0
- data/docs/Tasker/Configuration/AuthConfiguration.html +1023 -0
- data/docs/Tasker/Configuration/ConfigurationProxy.html +581 -0
- data/docs/Tasker/Configuration/DatabaseConfiguration.html +475 -0
- data/docs/Tasker/Configuration/EngineConfiguration.html +1265 -0
- data/docs/Tasker/Configuration/HealthConfiguration.html +791 -0
- data/docs/Tasker/Configuration/TelemetryConfiguration.html +1308 -0
- data/docs/Tasker/Configuration/TelemetryConfigurationProxy.html +388 -0
- data/docs/Tasker/Configuration.html +1669 -0
- data/docs/Tasker/ConfigurationError.html +143 -0
- data/docs/Tasker/ConfiguredTask.html +514 -0
- data/docs/Tasker/Constants/EventDefinitions.html +590 -0
- data/docs/Tasker/Constants/LifecycleEvents.html +137 -0
- data/docs/Tasker/Constants/ObservabilityEvents/Step.html +152 -0
- data/docs/Tasker/Constants/ObservabilityEvents/Task.html +142 -0
- data/docs/Tasker/Constants/ObservabilityEvents.html +126 -0
- data/docs/Tasker/Constants/RegistryEvents.html +285 -0
- data/docs/Tasker/Constants/StepEvents.html +177 -0
- data/docs/Tasker/Constants/TaskEvents.html +167 -0
- data/docs/Tasker/Constants/TaskExecution/ExecutionStatus.html +207 -0
- data/docs/Tasker/Constants/TaskExecution/HealthStatus.html +191 -0
- data/docs/Tasker/Constants/TaskExecution/RecommendedAction.html +207 -0
- data/docs/Tasker/Constants/TaskExecution.html +126 -0
- data/docs/Tasker/Constants/TaskFinalization/ErrorMessages.html +132 -0
- data/docs/Tasker/Constants/TaskFinalization/PendingReasons.html +207 -0
- data/docs/Tasker/Constants/TaskFinalization/ReenqueueReasons.html +239 -0
- data/docs/Tasker/Constants/TaskFinalization.html +126 -0
- data/docs/Tasker/Constants/TaskStatuses.html +223 -0
- data/docs/Tasker/Constants/TestEvents.html +163 -0
- data/docs/Tasker/Constants/WorkflowEvents.html +222 -0
- data/docs/Tasker/Constants/WorkflowStepStatuses.html +223 -0
- data/docs/Tasker/Constants.html +561 -0
- data/docs/Tasker/DependentSystem.html +137 -0
- data/docs/Tasker/DependentSystemObjectMap.html +250 -0
- data/docs/Tasker/DetectorRegistry.html +598 -0
- data/docs/Tasker/Diagram/Edge.html +1191 -0
- data/docs/Tasker/Diagram/Flowchart.html +1539 -0
- data/docs/Tasker/Diagram/Node.html +1165 -0
- data/docs/Tasker/Diagram.html +117 -0
- data/docs/Tasker/Engine.html +215 -0
- data/docs/Tasker/Error.html +139 -0
- data/docs/Tasker/Events/Bus.html +1226 -0
- data/docs/Tasker/Events/Catalog/CatalogPrinter.html +258 -0
- data/docs/Tasker/Events/Catalog/CustomEventRegistrar.html +276 -0
- data/docs/Tasker/Events/Catalog/ExamplePayloadGenerator.html +294 -0
- data/docs/Tasker/Events/Catalog.html +1291 -0
- data/docs/Tasker/Events/CustomRegistry.html +943 -0
- data/docs/Tasker/Events/DefinitionLoader.html +575 -0
- data/docs/Tasker/Events/EventPayloadBuilder/ErrorInfoExtractor.html +286 -0
- data/docs/Tasker/Events/EventPayloadBuilder/StepPayloadBuilder.html +312 -0
- data/docs/Tasker/Events/EventPayloadBuilder.html +664 -0
- data/docs/Tasker/Events/Publisher.html +365 -0
- data/docs/Tasker/Events/Subscribers/BaseSubscriber/ErrorCategorizer/ErrorTypeClassifier.html +1128 -0
- data/docs/Tasker/Events/Subscribers/BaseSubscriber/ErrorCategorizer.html +270 -0
- data/docs/Tasker/Events/Subscribers/BaseSubscriber/MetricTagsExtractor.html +266 -0
- data/docs/Tasker/Events/Subscribers/BaseSubscriber.html +2556 -0
- data/docs/Tasker/Events/Subscribers/MetricsSubscriber.html +723 -0
- data/docs/Tasker/Events/Subscribers/TelemetrySubscriber.html +2251 -0
- data/docs/Tasker/Events/Subscribers.html +117 -0
- data/docs/Tasker/Events/SubscriptionLoader.html +493 -0
- data/docs/Tasker/Events.html +294 -0
- data/docs/Tasker/EventsGenerator.html +459 -0
- data/docs/Tasker/Functions/FunctionBasedAnalyticsMetrics/AnalyticsMetrics.html +135 -0
- data/docs/Tasker/Functions/FunctionBasedAnalyticsMetrics.html +412 -0
- data/docs/Tasker/Functions/FunctionBasedDependencyLevels.html +598 -0
- data/docs/Tasker/Functions/FunctionBasedSlowestSteps/SlowestStep.html +135 -0
- data/docs/Tasker/Functions/FunctionBasedSlowestSteps.html +453 -0
- data/docs/Tasker/Functions/FunctionBasedSlowestTasks/SlowestTask.html +135 -0
- data/docs/Tasker/Functions/FunctionBasedSlowestTasks.html +453 -0
- data/docs/Tasker/Functions/FunctionBasedStepReadinessStatus.html +1457 -0
- data/docs/Tasker/Functions/FunctionBasedSystemHealthCounts/HealthMetrics.html +135 -0
- data/docs/Tasker/Functions/FunctionBasedSystemHealthCounts.html +370 -0
- data/docs/Tasker/Functions/FunctionBasedTaskExecutionContext.html +1250 -0
- data/docs/Tasker/Functions/FunctionWrapper.html +479 -0
- data/docs/Tasker/Functions.html +117 -0
- data/docs/Tasker/Generators/AuthenticatorGenerator/UsageInstructionsFormatter.html +244 -0
- data/docs/Tasker/Generators/AuthenticatorGenerator.html +373 -0
- data/docs/Tasker/Generators/AuthorizationCoordinatorGenerator.html +430 -0
- data/docs/Tasker/Generators/SubscriberGenerator.html +377 -0
- data/docs/Tasker/Generators/TaskHandlerGenerator.html +263 -0
- data/docs/Tasker/Generators.html +117 -0
- data/docs/Tasker/GraphQLTypes/AnnotationType.html +132 -0
- data/docs/Tasker/GraphQLTypes/BaseArgument.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseConnection.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseEdge.html +130 -0
- data/docs/Tasker/GraphQLTypes/BaseEnum.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseField.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseInputObject.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseInterface.html +116 -0
- data/docs/Tasker/GraphQLTypes/BaseObject.html +128 -0
- data/docs/Tasker/GraphQLTypes/BaseScalar.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseUnion.html +124 -0
- data/docs/Tasker/GraphQLTypes/DependentSystemObjectMapType.html +132 -0
- data/docs/Tasker/GraphQLTypes/DependentSystemType.html +132 -0
- data/docs/Tasker/GraphQLTypes/MutationType.html +132 -0
- data/docs/Tasker/GraphQLTypes/NamedStepType.html +132 -0
- data/docs/Tasker/GraphQLTypes/NamedTaskType.html +132 -0
- data/docs/Tasker/GraphQLTypes/NamedTasksNamedStepType.html +132 -0
- data/docs/Tasker/GraphQLTypes/NodeType.html +118 -0
- data/docs/Tasker/GraphQLTypes/QueryType.html +139 -0
- data/docs/Tasker/GraphQLTypes/TaskAnnotationType.html +132 -0
- data/docs/Tasker/GraphQLTypes/TaskInterface.html +111 -0
- data/docs/Tasker/GraphQLTypes/TaskType.html +201 -0
- data/docs/Tasker/GraphQLTypes/WorkflowStepType.html +694 -0
- data/docs/Tasker/GraphQLTypes.html +130 -0
- data/docs/Tasker/GraphqlController.html +251 -0
- data/docs/Tasker/HandlerFactory.html +1518 -0
- data/docs/Tasker/HandlerSerializer.html +682 -0
- data/docs/Tasker/HandlersController.html +574 -0
- data/docs/Tasker/HashIdentityStrategy.html +278 -0
- data/docs/Tasker/Health/ReadinessChecker.html +712 -0
- data/docs/Tasker/Health/StatusChecker.html +653 -0
- data/docs/Tasker/Health.html +117 -0
- data/docs/Tasker/HealthController.html +523 -0
- data/docs/Tasker/IdentityStrategy.html +276 -0
- data/docs/Tasker/InvalidTaskHandlerConfig.html +135 -0
- data/docs/Tasker/LifecycleEvents/Events/Step.html +162 -0
- data/docs/Tasker/LifecycleEvents/Events/Task.html +162 -0
- data/docs/Tasker/LifecycleEvents/Events.html +204 -0
- data/docs/Tasker/LifecycleEvents/Publisher.html +132 -0
- data/docs/Tasker/LifecycleEvents.html +799 -0
- data/docs/Tasker/Logging/CorrelationIdGenerator.html +688 -0
- data/docs/Tasker/Logging.html +115 -0
- data/docs/Tasker/MetricsController.html +293 -0
- data/docs/Tasker/MetricsExportJob.html +414 -0
- data/docs/Tasker/Mutations/BaseMutation.html +128 -0
- data/docs/Tasker/Mutations/CancelStep.html +219 -0
- data/docs/Tasker/Mutations/CancelTask.html +221 -0
- data/docs/Tasker/Mutations/CreateTask.html +243 -0
- data/docs/Tasker/Mutations/UpdateStep.html +243 -0
- data/docs/Tasker/Mutations/UpdateTask.html +243 -0
- data/docs/Tasker/Mutations.html +117 -0
- data/docs/Tasker/NamedStep.html +216 -0
- data/docs/Tasker/NamedTask.html +910 -0
- data/docs/Tasker/NamedTasksNamedStep.html +435 -0
- data/docs/Tasker/Orchestration/BackoffCalculator.html +404 -0
- data/docs/Tasker/Orchestration/ConnectionBuilder/ConfigValidator.html +258 -0
- data/docs/Tasker/Orchestration/ConnectionBuilder.html +435 -0
- data/docs/Tasker/Orchestration/ConnectionPoolIntelligence.html +513 -0
- data/docs/Tasker/Orchestration/Coordinator.html +641 -0
- data/docs/Tasker/Orchestration/FutureStateAnalyzer.html +1045 -0
- data/docs/Tasker/Orchestration/Orchestrator.html +679 -0
- data/docs/Tasker/Orchestration/PluginIntegration.html +1127 -0
- data/docs/Tasker/Orchestration/ResponseProcessor.html +504 -0
- data/docs/Tasker/Orchestration/RetryHeaderParser.html +304 -0
- data/docs/Tasker/Orchestration/StepExecutor.html +995 -0
- data/docs/Tasker/Orchestration/StepSequenceFactory.html +644 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/BlockageChecker.html +264 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/ContextManager.html +254 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/DelayCalculator.html +556 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/FinalizationDecisionMaker.html +348 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/FinalizationProcessor.html +286 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/ReasonDeterminer.html +432 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/ReenqueueManager.html +296 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/UnclearStateHandler.html +314 -0
- data/docs/Tasker/Orchestration/TaskFinalizer.html +1212 -0
- data/docs/Tasker/Orchestration/TaskInitializer.html +766 -0
- data/docs/Tasker/Orchestration/TaskReenqueuer.html +506 -0
- data/docs/Tasker/Orchestration/ViableStepDiscovery.html +442 -0
- data/docs/Tasker/Orchestration/WorkflowCoordinator.html +510 -0
- data/docs/Tasker/Orchestration.html +130 -0
- data/docs/Tasker/PageSort/PageSortParamsBuilder.html +296 -0
- data/docs/Tasker/PageSort.html +247 -0
- data/docs/Tasker/PermanentError.html +518 -0
- data/docs/Tasker/ProceduralError.html +147 -0
- data/docs/Tasker/Queries/AllAnnotationTypes.html +217 -0
- data/docs/Tasker/Queries/AllTasks.html +221 -0
- data/docs/Tasker/Queries/BaseQuery.html +128 -0
- data/docs/Tasker/Queries/Helpers.html +187 -0
- data/docs/Tasker/Queries/OneStep.html +225 -0
- data/docs/Tasker/Queries/OneTask.html +217 -0
- data/docs/Tasker/Queries/TasksByAnnotation.html +231 -0
- data/docs/Tasker/Queries/TasksByStatus.html +233 -0
- data/docs/Tasker/Queries.html +119 -0
- data/docs/Tasker/Railtie.html +124 -0
- data/docs/Tasker/Registry/BaseRegistry.html +1690 -0
- data/docs/Tasker/Registry/EventPublisher.html +667 -0
- data/docs/Tasker/Registry/InterfaceValidator.html +569 -0
- data/docs/Tasker/Registry/RegistrationError.html +132 -0
- data/docs/Tasker/Registry/RegistryError.html +139 -0
- data/docs/Tasker/Registry/StatisticsCollector.html +841 -0
- data/docs/Tasker/Registry/SubscriberRegistry.html +1504 -0
- data/docs/Tasker/Registry/ValidationError.html +132 -0
- data/docs/Tasker/Registry.html +119 -0
- data/docs/Tasker/RetryableError.html +515 -0
- data/docs/Tasker/StateMachine/Compatibility.html +282 -0
- data/docs/Tasker/StateMachine/InvalidStateTransition.html +135 -0
- data/docs/Tasker/StateMachine/StepStateMachine/StandardizedPayloadBuilder.html +260 -0
- data/docs/Tasker/StateMachine/StepStateMachine.html +2215 -0
- data/docs/Tasker/StateMachine/TaskStateMachine.html +734 -0
- data/docs/Tasker/StateMachine.html +602 -0
- data/docs/Tasker/StepDagRelationship.html +657 -0
- data/docs/Tasker/StepHandler/Api/Config.html +1091 -0
- data/docs/Tasker/StepHandler/Api.html +884 -0
- data/docs/Tasker/StepHandler/AutomaticEventPublishing.html +321 -0
- data/docs/Tasker/StepHandler/Base.html +970 -0
- data/docs/Tasker/StepHandler.html +119 -0
- data/docs/Tasker/StepReadinessStatus.html +836 -0
- data/docs/Tasker/Task.html +2575 -0
- data/docs/Tasker/TaskAnnotation.html +137 -0
- data/docs/Tasker/TaskAnnotationSerializer.html +124 -0
- data/docs/Tasker/TaskBuilder/StepNameValidator.html +264 -0
- data/docs/Tasker/TaskBuilder/StepTemplateDefiner.html +264 -0
- data/docs/Tasker/TaskBuilder.html +764 -0
- data/docs/Tasker/TaskDiagram/StepToStepEdgeBuilder.html +260 -0
- data/docs/Tasker/TaskDiagram/TaskToRootStepEdgeBuilder.html +290 -0
- data/docs/Tasker/TaskDiagram.html +548 -0
- data/docs/Tasker/TaskDiagramsController.html +240 -0
- data/docs/Tasker/TaskExecutionContext.html +469 -0
- data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner/ClassBasedEventRegistrar.html +238 -0
- data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner/YamlEventRegistrar.html +254 -0
- data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner.html +988 -0
- data/docs/Tasker/TaskHandler/ClassMethods.html +357 -0
- data/docs/Tasker/TaskHandler/InstanceMethods.html +1396 -0
- data/docs/Tasker/TaskHandler/StepGroup.html +1748 -0
- data/docs/Tasker/TaskHandler.html +271 -0
- data/docs/Tasker/TaskNamespace.html +312 -0
- data/docs/Tasker/TaskRunnerJob.html +406 -0
- data/docs/Tasker/TaskSerializer.html +474 -0
- data/docs/Tasker/TaskTransition.html +1517 -0
- data/docs/Tasker/TaskWorkflowSummary.html +988 -0
- data/docs/Tasker/TaskerRailsSchema/InvalidObjectTypeError.html +132 -0
- data/docs/Tasker/TaskerRailsSchema/TypeResolutionError.html +139 -0
- data/docs/Tasker/TaskerRailsSchema/UnknownInterfaceError.html +132 -0
- data/docs/Tasker/TaskerRailsSchema.html +384 -0
- data/docs/Tasker/TasksController.html +595 -0
- data/docs/Tasker/Telemetry/EventMapping.html +1307 -0
- data/docs/Tasker/Telemetry/EventRouter.html +2178 -0
- data/docs/Tasker/Telemetry/Events/ExportEvents.html +246 -0
- data/docs/Tasker/Telemetry/Events.html +115 -0
- data/docs/Tasker/Telemetry/ExportCoordinator/DistributedLockTimeoutError.html +135 -0
- data/docs/Tasker/Telemetry/ExportCoordinator.html +2137 -0
- data/docs/Tasker/Telemetry/IntelligentCacheManager.html +1083 -0
- data/docs/Tasker/Telemetry/LogBackend.html +1088 -0
- data/docs/Tasker/Telemetry/MetricTypes/Counter.html +1054 -0
- data/docs/Tasker/Telemetry/MetricTypes/Gauge.html +1270 -0
- data/docs/Tasker/Telemetry/MetricTypes/Histogram.html +1492 -0
- data/docs/Tasker/Telemetry/MetricTypes.html +153 -0
- data/docs/Tasker/Telemetry/MetricsBackend.html +2510 -0
- data/docs/Tasker/Telemetry/MetricsExportService.html +578 -0
- data/docs/Tasker/Telemetry/PluginRegistry.html +1774 -0
- data/docs/Tasker/Telemetry/Plugins/BaseExporter.html +1835 -0
- data/docs/Tasker/Telemetry/Plugins/CsvExporter.html +768 -0
- data/docs/Tasker/Telemetry/Plugins/JsonExporter.html +747 -0
- data/docs/Tasker/Telemetry/Plugins.html +117 -0
- data/docs/Tasker/Telemetry/PrometheusExporter.html +481 -0
- data/docs/Tasker/Telemetry/TraceBackend.html +891 -0
- data/docs/Tasker/Telemetry.html +130 -0
- data/docs/Tasker/Types/AuthConfig.html +886 -0
- data/docs/Tasker/Types/BackoffConfig.html +1063 -0
- data/docs/Tasker/Types/BaseConfig.html +227 -0
- data/docs/Tasker/Types/CacheConfig.html +1731 -0
- data/docs/Tasker/Types/DatabaseConfig.html +388 -0
- data/docs/Tasker/Types/DependencyGraph.html +526 -0
- data/docs/Tasker/Types/DependencyGraphConfig.html +753 -0
- data/docs/Tasker/Types/EngineConfig.html +1181 -0
- data/docs/Tasker/Types/ExecutionConfig.html +1963 -0
- data/docs/Tasker/Types/GraphEdge.html +517 -0
- data/docs/Tasker/Types/GraphMetadata.html +781 -0
- data/docs/Tasker/Types/GraphNode.html +694 -0
- data/docs/Tasker/Types/HealthConfig.html +784 -0
- data/docs/Tasker/Types/StepSequence.html +353 -0
- data/docs/Tasker/Types/StepTemplate.html +1193 -0
- data/docs/Tasker/Types/TaskRequest.html +1179 -0
- data/docs/Tasker/Types/TelemetryConfig.html +2746 -0
- data/docs/Tasker/Types.html +154 -0
- data/docs/Tasker/WorkflowStep/StepFinder.html +282 -0
- data/docs/Tasker/WorkflowStep.html +2724 -0
- data/docs/Tasker/WorkflowStepEdge.html +304 -0
- data/docs/Tasker/WorkflowStepSerializer.html +305 -0
- data/docs/Tasker/WorkflowStepTransition/TransitionDescriptionFormatter.html +282 -0
- data/docs/Tasker/WorkflowStepTransition.html +2201 -0
- data/docs/Tasker/WorkflowStepsController.html +462 -0
- data/docs/Tasker.html +452 -0
- data/docs/VISION.md +584 -0
- data/docs/WHY.md +21 -0
- data/docs/_index.html +2375 -0
- data/docs/class_list.html +54 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +503 -0
- data/docs/events/migration_plan_outcomes.md +80 -0
- data/docs/file.README.html +541 -0
- data/docs/file_list.html +59 -0
- data/docs/frames.html +22 -0
- data/docs/index.html +541 -0
- data/docs/js/app.js +344 -0
- data/docs/js/full_list.js +242 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +9182 -0
- data/docs/top-level-namespace.html +110 -0
- data/lib/generators/tasker/authenticator_generator.rb +301 -0
- data/lib/generators/tasker/authorization_coordinator_generator.rb +139 -0
- data/lib/generators/tasker/events_generator.rb +91 -0
- data/lib/generators/tasker/subscriber_generator.rb +107 -0
- data/lib/generators/tasker/task_handler_generator.rb +138 -0
- data/lib/generators/tasker/templates/api_token_authenticator.rb.erb +113 -0
- data/lib/generators/tasker/templates/api_token_authenticator_spec.rb.erb +144 -0
- data/lib/generators/tasker/templates/authorization_coordinator.rb.erb +95 -0
- data/lib/generators/tasker/templates/authorization_coordinator_spec.rb.erb +142 -0
- data/lib/generators/tasker/templates/custom_authenticator.rb.erb +108 -0
- data/lib/generators/tasker/templates/custom_authenticator_spec.rb.erb +162 -0
- data/lib/generators/tasker/templates/custom_events.yml.erb +62 -0
- data/lib/generators/tasker/templates/custom_subscriber.rb.erb +72 -0
- data/lib/generators/tasker/templates/devise_authenticator.rb.erb +101 -0
- data/lib/generators/tasker/templates/devise_authenticator_spec.rb.erb +126 -0
- data/lib/generators/tasker/templates/initialize.rb.erb +202 -0
- data/lib/generators/tasker/templates/jwt_authenticator.rb.erb +144 -0
- data/lib/generators/tasker/templates/jwt_authenticator_spec.rb.erb +298 -0
- data/lib/generators/tasker/templates/metrics_subscriber.rb.erb +258 -0
- data/lib/generators/tasker/templates/metrics_subscriber_spec.rb.erb +308 -0
- data/lib/generators/tasker/templates/omniauth_authenticator.rb.erb +135 -0
- data/lib/generators/tasker/templates/omniauth_authenticator_spec.rb.erb +196 -0
- data/lib/generators/tasker/templates/opentelemetry_initializer.rb +52 -0
- data/lib/generators/tasker/templates/subscriber.rb.erb +64 -0
- data/lib/generators/tasker/templates/subscriber_spec.rb.erb +80 -0
- data/lib/generators/tasker/templates/task_config.yaml.erb +117 -0
- data/lib/generators/tasker/templates/task_handler.rb.erb +59 -0
- data/lib/generators/tasker/templates/task_handler_spec.rb.erb +159 -0
- data/lib/tasker/analysis/runtime_graph_analyzer.rb +1168 -0
- data/lib/tasker/analysis/template_graph_analyzer.rb +328 -0
- data/lib/tasker/authentication/coordinator.rb +78 -0
- data/lib/tasker/authentication/errors.rb +9 -0
- data/lib/tasker/authentication/interface.rb +36 -0
- data/lib/tasker/authentication/none_authenticator.rb +26 -0
- data/lib/tasker/authorization/base_coordinator.rb +112 -0
- data/lib/tasker/authorization/errors.rb +26 -0
- data/lib/tasker/authorization/resource_constants.rb +74 -0
- data/lib/tasker/authorization/resource_registry.rb +143 -0
- data/lib/tasker/authorization.rb +75 -0
- data/lib/tasker/cache_capabilities.rb +131 -0
- data/lib/tasker/cache_strategy.rb +469 -0
- data/lib/tasker/concerns/authenticatable.rb +41 -0
- data/lib/tasker/concerns/authorizable.rb +204 -0
- data/lib/tasker/concerns/controller_authorizable.rb +124 -0
- data/lib/tasker/concerns/event_publisher.rb +716 -0
- data/lib/tasker/concerns/idempotent_state_transitions.rb +128 -0
- data/lib/tasker/concerns/state_machine_base.rb +218 -0
- data/lib/tasker/concerns/structured_logging.rb +387 -0
- data/lib/tasker/configuration.rb +325 -0
- data/lib/tasker/constants/event_definitions.rb +147 -0
- data/lib/tasker/constants/registry_events.rb +54 -0
- data/lib/tasker/constants.rb +417 -0
- data/lib/tasker/engine.rb +90 -0
- data/lib/tasker/errors.rb +90 -0
- data/lib/tasker/events/catalog.rb +432 -0
- data/lib/tasker/events/custom_registry.rb +175 -0
- data/lib/tasker/events/definition_loader.rb +199 -0
- data/lib/tasker/events/event_payload_builder.rb +461 -0
- data/lib/tasker/events/publisher.rb +149 -0
- data/lib/tasker/events/subscribers/base_subscriber.rb +601 -0
- data/lib/tasker/events/subscribers/metrics_subscriber.rb +120 -0
- data/lib/tasker/events/subscribers/telemetry_subscriber.rb +462 -0
- data/lib/tasker/events/subscription_loader.rb +161 -0
- data/lib/tasker/events.rb +37 -0
- data/lib/tasker/functions/function_based_analytics_metrics.rb +103 -0
- data/lib/tasker/functions/function_based_dependency_levels.rb +54 -0
- data/lib/tasker/functions/function_based_slowest_steps.rb +84 -0
- data/lib/tasker/functions/function_based_slowest_tasks.rb +84 -0
- data/lib/tasker/functions/function_based_step_readiness_status.rb +183 -0
- data/lib/tasker/functions/function_based_system_health_counts.rb +94 -0
- data/lib/tasker/functions/function_based_task_execution_context.rb +148 -0
- data/lib/tasker/functions/function_wrapper.rb +42 -0
- data/lib/tasker/functions.rb +12 -0
- data/lib/tasker/handler_factory.rb +322 -0
- data/lib/tasker/health/readiness_checker.rb +186 -0
- data/lib/tasker/health/status_checker.rb +203 -0
- data/lib/tasker/identity_strategy.rb +38 -0
- data/lib/tasker/logging/correlation_id_generator.rb +120 -0
- data/lib/tasker/orchestration/backoff_calculator.rb +184 -0
- data/lib/tasker/orchestration/connection_builder.rb +122 -0
- data/lib/tasker/orchestration/connection_pool_intelligence.rb +177 -0
- data/lib/tasker/orchestration/coordinator.rb +119 -0
- data/lib/tasker/orchestration/future_state_analyzer.rb +137 -0
- data/lib/tasker/orchestration/plugin_integration.rb +124 -0
- data/lib/tasker/orchestration/response_processor.rb +168 -0
- data/lib/tasker/orchestration/retry_header_parser.rb +78 -0
- data/lib/tasker/orchestration/step_executor.rb +941 -0
- data/lib/tasker/orchestration/step_sequence_factory.rb +67 -0
- data/lib/tasker/orchestration/task_finalizer.rb +564 -0
- data/lib/tasker/orchestration/task_initializer.rb +140 -0
- data/lib/tasker/orchestration/task_reenqueuer.rb +71 -0
- data/lib/tasker/orchestration/viable_step_discovery.rb +65 -0
- data/lib/tasker/orchestration/workflow_coordinator.rb +294 -0
- data/lib/tasker/orchestration.rb +45 -0
- data/lib/tasker/railtie.rb +9 -0
- data/lib/tasker/registry/base_registry.rb +177 -0
- data/lib/tasker/registry/event_publisher.rb +91 -0
- data/lib/tasker/registry/interface_validator.rb +140 -0
- data/lib/tasker/registry/statistics_collector.rb +381 -0
- data/lib/tasker/registry/subscriber_registry.rb +285 -0
- data/lib/tasker/registry.rb +22 -0
- data/lib/tasker/state_machine/step_state_machine.rb +508 -0
- data/lib/tasker/state_machine/task_state_machine.rb +192 -0
- data/lib/tasker/state_machine.rb +83 -0
- data/lib/tasker/step_handler/api.rb +410 -0
- data/lib/tasker/step_handler/base.rb +206 -0
- data/lib/tasker/task_builder.rb +432 -0
- data/lib/tasker/task_handler/class_methods.rb +324 -0
- data/lib/tasker/task_handler/instance_methods.rb +293 -0
- data/lib/tasker/task_handler/step_group.rb +182 -0
- data/lib/tasker/task_handler.rb +43 -0
- data/lib/tasker/telemetry/event_mapping.rb +126 -0
- data/lib/tasker/telemetry/event_router.rb +318 -0
- data/lib/tasker/telemetry/events/export_events.rb +38 -0
- data/lib/tasker/telemetry/export_coordinator.rb +497 -0
- data/lib/tasker/telemetry/intelligent_cache_manager.rb +508 -0
- data/lib/tasker/telemetry/log_backend.rb +224 -0
- data/lib/tasker/telemetry/metric_types.rb +368 -0
- data/lib/tasker/telemetry/metrics_backend.rb +1227 -0
- data/lib/tasker/telemetry/metrics_export_service.rb +392 -0
- data/lib/tasker/telemetry/plugin_registry.rb +333 -0
- data/lib/tasker/telemetry/plugins/base_exporter.rb +246 -0
- data/lib/tasker/telemetry/plugins/csv_exporter.rb +198 -0
- data/lib/tasker/telemetry/plugins/json_exporter.rb +141 -0
- data/lib/tasker/telemetry/prometheus_exporter.rb +249 -0
- data/lib/tasker/telemetry/trace_backend.rb +186 -0
- data/lib/tasker/telemetry.rb +59 -0
- data/lib/tasker/types/auth_config.rb +81 -0
- data/lib/tasker/types/backoff_config.rb +142 -0
- data/lib/tasker/types/cache_config.rb +257 -0
- data/lib/tasker/types/database_config.rb +39 -0
- data/lib/tasker/types/dependency_graph.rb +225 -0
- data/lib/tasker/types/dependency_graph_config.rb +149 -0
- data/lib/tasker/types/engine_config.rb +131 -0
- data/lib/tasker/types/execution_config.rb +289 -0
- data/lib/tasker/types/health_config.rb +84 -0
- data/lib/tasker/types/step_sequence.rb +24 -0
- data/lib/tasker/types/step_template.rb +63 -0
- data/lib/tasker/types/task_request.rb +60 -0
- data/lib/tasker/types/telemetry_config.rb +273 -0
- data/lib/tasker/types.rb +64 -0
- data/lib/tasker/version.rb +7 -0
- data/lib/tasker.rb +82 -0
- data/lib/tasks/tasker_tasks.rake +302 -0
- metadata +958 -0
@@ -0,0 +1,1083 @@
|
|
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::Telemetry::IntelligentCacheManager
|
8
|
+
|
9
|
+
— 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::Telemetry::IntelligentCacheManager";
|
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 (I)</a> »
|
40
|
+
<span class='title'><span class='object_link'><a href="../../Tasker.html" title="Tasker (module)">Tasker</a></span></span> » <span class='title'><span class='object_link'><a href="../Telemetry.html" title="Tasker::Telemetry (module)">Telemetry</a></span></span>
|
41
|
+
»
|
42
|
+
<span class="title">IntelligentCacheManager</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::Telemetry::IntelligentCacheManager
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
</h1>
|
67
|
+
<div class="box_info">
|
68
|
+
|
69
|
+
<dl>
|
70
|
+
<dt>Inherits:</dt>
|
71
|
+
<dd>
|
72
|
+
<span class="inheritName">Object</span>
|
73
|
+
|
74
|
+
<ul class="fullTree">
|
75
|
+
<li>Object</li>
|
76
|
+
|
77
|
+
<li class="next">Tasker::Telemetry::IntelligentCacheManager</li>
|
78
|
+
|
79
|
+
</ul>
|
80
|
+
<a href="#" class="inheritanceTree">show all</a>
|
81
|
+
|
82
|
+
</dd>
|
83
|
+
</dl>
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
<dl>
|
91
|
+
<dt>Includes:</dt>
|
92
|
+
<dd><span class='object_link'><a href="../Concerns/StructuredLogging.html" title="Tasker::Concerns::StructuredLogging (module)">Concerns::StructuredLogging</a></span></dd>
|
93
|
+
</dl>
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
<dl>
|
101
|
+
<dt>Defined in:</dt>
|
102
|
+
<dd>lib/tasker/telemetry/intelligent_cache_manager.rb</dd>
|
103
|
+
</dl>
|
104
|
+
|
105
|
+
</div>
|
106
|
+
|
107
|
+
<h2>Overview</h2><div class="docstring">
|
108
|
+
<div class="discussion">
|
109
|
+
|
110
|
+
<p>Intelligent cache management with adaptive TTL and distributed coordination</p>
|
111
|
+
|
112
|
+
<p>This class implements a strategic constants vs configuration approach: - CONSTANTS: Infrastructure naming for consistency across deployments - CONFIGURABLE: Algorithm parameters for workload-specific tuning</p>
|
113
|
+
|
114
|
+
<p><strong>Phase 2.1 Enhancement: Distributed Coordination</strong> Leverages proven MetricsBackend patterns for multi-container coordination: - Instance ID generation (hostname-pid pattern) - Cache capability detection with adaptive strategies - Multi-strategy coordination (distributed_atomic, distributed_basic, local_only) - Atomic operations with fallback strategies</p>
|
115
|
+
|
116
|
+
<p>Features: - Kubernetes-ready distributed cache coordination - Rails.cache abstraction (works with Redis, Memcached, File, Memory) - Configurable smoothing factors for different workload patterns - Comprehensive performance tracking with structured logging</p>
|
117
|
+
|
118
|
+
|
119
|
+
</div>
|
120
|
+
</div>
|
121
|
+
<div class="tags">
|
122
|
+
|
123
|
+
<div class="examples">
|
124
|
+
<h4 class="tag_title">Examples:</h4>
|
125
|
+
|
126
|
+
|
127
|
+
<h5 class="example_title"><div class='inline'>
|
128
|
+
<p>Basic usage</p>
|
129
|
+
</div></h5>
|
130
|
+
|
131
|
+
<pre class="example code"><code><span class='id identifier rubyid_manager'>manager</span> <span class='op'>=</span> <span class='const'>IntelligentCacheManager</span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="Tasker::Telemetry::IntelligentCacheManager#initialize (method)">new</a></span></span>
|
132
|
+
<span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_manager'>manager</span><span class='period'>.</span><span class='id identifier rubyid_intelligent_fetch'>intelligent_fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>expensive_key</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='id identifier rubyid_expensive_computation'>expensive_computation</span> <span class='rbrace'>}</span></code></pre>
|
133
|
+
|
134
|
+
|
135
|
+
<h5 class="example_title"><div class='inline'>
|
136
|
+
<p>With custom configuration</p>
|
137
|
+
</div></h5>
|
138
|
+
|
139
|
+
<pre class="example code"><code><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='op'>::</span><span class='const'><span class='object_link'><a href="../Types.html" title="Tasker::Types (module)">Types</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Types/CacheConfig.html" title="Tasker::Types::CacheConfig (class)">CacheConfig</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="../Types/BaseConfig.html#initialize-instance_method" title="Tasker::Types::BaseConfig#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='label'>hit_rate_smoothing_factor:</span> <span class='float'>0.95</span><span class='rparen'>)</span>
|
140
|
+
<span class='id identifier rubyid_manager'>manager</span> <span class='op'>=</span> <span class='const'>IntelligentCacheManager</span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="Tasker::Telemetry::IntelligentCacheManager#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_config'>config</span><span class='rparen'>)</span>
|
141
|
+
<span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_manager'>manager</span><span class='period'>.</span><span class='id identifier rubyid_intelligent_fetch'>intelligent_fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>key</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>base_ttl:</span> <span class='int'>600</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='id identifier rubyid_data'>data</span> <span class='rbrace'>}</span></code></pre>
|
142
|
+
|
143
|
+
</div>
|
144
|
+
|
145
|
+
|
146
|
+
</div>
|
147
|
+
|
148
|
+
<h2>
|
149
|
+
Constant Summary
|
150
|
+
<small><a href="#" class="constants_summary_toggle">collapse</a></small>
|
151
|
+
</h2>
|
152
|
+
|
153
|
+
<dl class="constants">
|
154
|
+
|
155
|
+
<dt id="CACHE_PERFORMANCE_KEY_PREFIX-constant" class="">CACHE_PERFORMANCE_KEY_PREFIX =
|
156
|
+
<div class="docstring">
|
157
|
+
<div class="discussion">
|
158
|
+
|
159
|
+
<p>✅ CONSTANTS: Infrastructure naming (consistency across deployments)</p>
|
160
|
+
|
161
|
+
|
162
|
+
</div>
|
163
|
+
</div>
|
164
|
+
<div class="tags">
|
165
|
+
|
166
|
+
|
167
|
+
</div>
|
168
|
+
</dt>
|
169
|
+
<dd><pre class="code"><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>tasker:cache_perf</span><span class='tstring_end'>'</span></span></pre></dd>
|
170
|
+
|
171
|
+
<dt id="DASHBOARD_CACHE_KEY_PREFIX-constant" class="">DASHBOARD_CACHE_KEY_PREFIX =
|
172
|
+
|
173
|
+
</dt>
|
174
|
+
<dd><pre class="code"><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>tasker:dashboard</span><span class='tstring_end'>'</span></span></pre></dd>
|
175
|
+
|
176
|
+
<dt id="WORKFLOW_CACHE_KEY_PREFIX-constant" class="">WORKFLOW_CACHE_KEY_PREFIX =
|
177
|
+
|
178
|
+
</dt>
|
179
|
+
<dd><pre class="code"><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>tasker:workflow</span><span class='tstring_end'>'</span></span></pre></dd>
|
180
|
+
|
181
|
+
<dt id="PERFORMANCE_RETENTION_PERIOD-constant" class="">PERFORMANCE_RETENTION_PERIOD =
|
182
|
+
|
183
|
+
</dt>
|
184
|
+
<dd><pre class="code"><span class='int'>1</span><span class='period'>.</span><span class='id identifier rubyid_hour'>hour</span></pre></dd>
|
185
|
+
|
186
|
+
<dt id="COORDINATION_RETRY_ATTEMPTS-constant" class="">COORDINATION_RETRY_ATTEMPTS =
|
187
|
+
|
188
|
+
</dt>
|
189
|
+
<dd><pre class="code"><span class='int'>3</span></pre></dd>
|
190
|
+
|
191
|
+
<dt id="ATOMIC_OPERATION_TIMEOUT-constant" class="">ATOMIC_OPERATION_TIMEOUT =
|
192
|
+
<div class="docstring">
|
193
|
+
<div class="discussion">
|
194
|
+
|
195
|
+
<p>✅ CONSTANTS: Coordination strategy thresholds (algorithmic, not configurable)</p>
|
196
|
+
|
197
|
+
|
198
|
+
</div>
|
199
|
+
</div>
|
200
|
+
<div class="tags">
|
201
|
+
|
202
|
+
|
203
|
+
</div>
|
204
|
+
</dt>
|
205
|
+
<dd><pre class="code"><span class='int'>5</span><span class='period'>.</span><span class='id identifier rubyid_seconds'>seconds</span></pre></dd>
|
206
|
+
|
207
|
+
<dt id="BASIC_COORDINATION_TIMEOUT-constant" class="">BASIC_COORDINATION_TIMEOUT =
|
208
|
+
|
209
|
+
</dt>
|
210
|
+
<dd><pre class="code"><span class='int'>10</span><span class='period'>.</span><span class='id identifier rubyid_seconds'>seconds</span></pre></dd>
|
211
|
+
|
212
|
+
<dt id="LOCAL_COORDINATION_TIMEOUT-constant" class="">LOCAL_COORDINATION_TIMEOUT =
|
213
|
+
|
214
|
+
</dt>
|
215
|
+
<dd><pre class="code"><span class='int'>1</span><span class='period'>.</span><span class='id identifier rubyid_second'>second</span></pre></dd>
|
216
|
+
|
217
|
+
</dl>
|
218
|
+
|
219
|
+
|
220
|
+
|
221
|
+
|
222
|
+
|
223
|
+
|
224
|
+
<h3 class="inherited">Constants included
|
225
|
+
from <span class='object_link'><a href="../Concerns/StructuredLogging.html" title="Tasker::Concerns::StructuredLogging (module)">Concerns::StructuredLogging</a></span></h3>
|
226
|
+
<p class="inherited"><span class='object_link'><a href="../Concerns/StructuredLogging.html#CORRELATION_ID_KEY-constant" title="Tasker::Concerns::StructuredLogging::CORRELATION_ID_KEY (constant)">Concerns::StructuredLogging::CORRELATION_ID_KEY</a></span></p>
|
227
|
+
|
228
|
+
|
229
|
+
<h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
|
230
|
+
<ul class="summary">
|
231
|
+
|
232
|
+
<li class="public ">
|
233
|
+
<span class="summary_signature">
|
234
|
+
|
235
|
+
<a href="#cache_capabilities-instance_method" title="#cache_capabilities (instance method)">#<strong>cache_capabilities</strong> ⇒ Object </a>
|
236
|
+
|
237
|
+
|
238
|
+
|
239
|
+
</span>
|
240
|
+
|
241
|
+
|
242
|
+
|
243
|
+
|
244
|
+
<span class="note title readonly">readonly</span>
|
245
|
+
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
|
250
|
+
|
251
|
+
|
252
|
+
|
253
|
+
|
254
|
+
<span class="summary_desc"><div class='inline'>
|
255
|
+
<p>Returns the value of attribute cache_capabilities.</p>
|
256
|
+
</div></span>
|
257
|
+
|
258
|
+
</li>
|
259
|
+
|
260
|
+
|
261
|
+
<li class="public ">
|
262
|
+
<span class="summary_signature">
|
263
|
+
|
264
|
+
<a href="#config-instance_method" title="#config (instance method)">#<strong>config</strong> ⇒ Object </a>
|
265
|
+
|
266
|
+
|
267
|
+
|
268
|
+
</span>
|
269
|
+
|
270
|
+
|
271
|
+
|
272
|
+
|
273
|
+
<span class="note title readonly">readonly</span>
|
274
|
+
|
275
|
+
|
276
|
+
|
277
|
+
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
|
282
|
+
|
283
|
+
<span class="summary_desc"><div class='inline'>
|
284
|
+
<p>Returns the value of attribute config.</p>
|
285
|
+
</div></span>
|
286
|
+
|
287
|
+
</li>
|
288
|
+
|
289
|
+
|
290
|
+
<li class="public ">
|
291
|
+
<span class="summary_signature">
|
292
|
+
|
293
|
+
<a href="#coordination_strategy-instance_method" title="#coordination_strategy (instance method)">#<strong>coordination_strategy</strong> ⇒ Object </a>
|
294
|
+
|
295
|
+
|
296
|
+
|
297
|
+
</span>
|
298
|
+
|
299
|
+
|
300
|
+
|
301
|
+
|
302
|
+
<span class="note title readonly">readonly</span>
|
303
|
+
|
304
|
+
|
305
|
+
|
306
|
+
|
307
|
+
|
308
|
+
|
309
|
+
|
310
|
+
|
311
|
+
|
312
|
+
<span class="summary_desc"><div class='inline'>
|
313
|
+
<p>Returns the value of attribute coordination_strategy.</p>
|
314
|
+
</div></span>
|
315
|
+
|
316
|
+
</li>
|
317
|
+
|
318
|
+
|
319
|
+
<li class="public ">
|
320
|
+
<span class="summary_signature">
|
321
|
+
|
322
|
+
<a href="#instance_id-instance_method" title="#instance_id (instance method)">#<strong>instance_id</strong> ⇒ Object </a>
|
323
|
+
|
324
|
+
|
325
|
+
|
326
|
+
</span>
|
327
|
+
|
328
|
+
|
329
|
+
|
330
|
+
|
331
|
+
<span class="note title readonly">readonly</span>
|
332
|
+
|
333
|
+
|
334
|
+
|
335
|
+
|
336
|
+
|
337
|
+
|
338
|
+
|
339
|
+
|
340
|
+
|
341
|
+
<span class="summary_desc"><div class='inline'>
|
342
|
+
<p>Returns the value of attribute instance_id.</p>
|
343
|
+
</div></span>
|
344
|
+
|
345
|
+
</li>
|
346
|
+
|
347
|
+
|
348
|
+
</ul>
|
349
|
+
|
350
|
+
|
351
|
+
|
352
|
+
|
353
|
+
|
354
|
+
<h2>
|
355
|
+
Instance Method Summary
|
356
|
+
<small><a href="#" class="summary_toggle">collapse</a></small>
|
357
|
+
</h2>
|
358
|
+
|
359
|
+
<ul class="summary">
|
360
|
+
|
361
|
+
<li class="public ">
|
362
|
+
<span class="summary_signature">
|
363
|
+
|
364
|
+
<a href="#clear_performance_data-instance_method" title="#clear_performance_data (instance method)">#<strong>clear_performance_data</strong>(cache_key) ⇒ Boolean </a>
|
365
|
+
|
366
|
+
|
367
|
+
|
368
|
+
</span>
|
369
|
+
|
370
|
+
|
371
|
+
|
372
|
+
|
373
|
+
|
374
|
+
|
375
|
+
|
376
|
+
|
377
|
+
|
378
|
+
<span class="summary_desc"><div class='inline'>
|
379
|
+
<p>Clear performance data for a specific cache key.</p>
|
380
|
+
</div></span>
|
381
|
+
|
382
|
+
</li>
|
383
|
+
|
384
|
+
|
385
|
+
<li class="public ">
|
386
|
+
<span class="summary_signature">
|
387
|
+
|
388
|
+
<a href="#export_performance_metrics-instance_method" title="#export_performance_metrics (instance method)">#<strong>export_performance_metrics</strong> ⇒ Hash </a>
|
389
|
+
|
390
|
+
|
391
|
+
|
392
|
+
</span>
|
393
|
+
|
394
|
+
|
395
|
+
|
396
|
+
|
397
|
+
|
398
|
+
|
399
|
+
|
400
|
+
|
401
|
+
|
402
|
+
<span class="summary_desc"><div class='inline'>
|
403
|
+
<p>Export cache performance metrics for observability.</p>
|
404
|
+
</div></span>
|
405
|
+
|
406
|
+
</li>
|
407
|
+
|
408
|
+
|
409
|
+
<li class="public ">
|
410
|
+
<span class="summary_signature">
|
411
|
+
|
412
|
+
<a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(config = nil) ⇒ IntelligentCacheManager </a>
|
413
|
+
|
414
|
+
|
415
|
+
|
416
|
+
</span>
|
417
|
+
|
418
|
+
|
419
|
+
<span class="note title constructor">constructor</span>
|
420
|
+
|
421
|
+
|
422
|
+
|
423
|
+
|
424
|
+
|
425
|
+
|
426
|
+
|
427
|
+
|
428
|
+
<span class="summary_desc"><div class='inline'>
|
429
|
+
<p>Initialize intelligent cache manager with distributed coordination.</p>
|
430
|
+
</div></span>
|
431
|
+
|
432
|
+
</li>
|
433
|
+
|
434
|
+
|
435
|
+
<li class="public ">
|
436
|
+
<span class="summary_signature">
|
437
|
+
|
438
|
+
<a href="#intelligent_fetch-instance_method" title="#intelligent_fetch (instance method)">#<strong>intelligent_fetch</strong>(cache_key, base_ttl: @config.default_ttl) { ... } ⇒ Object </a>
|
439
|
+
|
440
|
+
|
441
|
+
|
442
|
+
</span>
|
443
|
+
|
444
|
+
|
445
|
+
|
446
|
+
|
447
|
+
|
448
|
+
|
449
|
+
|
450
|
+
|
451
|
+
|
452
|
+
<span class="summary_desc"><div class='inline'>
|
453
|
+
<p>Main intelligent cache method with distributed coordination.</p>
|
454
|
+
</div></span>
|
455
|
+
|
456
|
+
</li>
|
457
|
+
|
458
|
+
|
459
|
+
</ul>
|
460
|
+
|
461
|
+
|
462
|
+
|
463
|
+
|
464
|
+
|
465
|
+
|
466
|
+
|
467
|
+
|
468
|
+
|
469
|
+
|
470
|
+
|
471
|
+
<h3 class="inherited">Methods included from <span class='object_link'><a href="../Concerns/StructuredLogging.html" title="Tasker::Concerns::StructuredLogging (module)">Concerns::StructuredLogging</a></span></h3>
|
472
|
+
<p class="inherited"><span class='object_link'><a href="../Concerns/StructuredLogging.html#correlation_id-instance_method" title="Tasker::Concerns::StructuredLogging#correlation_id (method)">#correlation_id</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#correlation_id=-instance_method" title="Tasker::Concerns::StructuredLogging#correlation_id= (method)">#correlation_id=</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#log_exception-instance_method" title="Tasker::Concerns::StructuredLogging#log_exception (method)">#log_exception</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#log_orchestration_event-instance_method" title="Tasker::Concerns::StructuredLogging#log_orchestration_event (method)">#log_orchestration_event</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#log_performance_event-instance_method" title="Tasker::Concerns::StructuredLogging#log_performance_event (method)">#log_performance_event</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#log_step_event-instance_method" title="Tasker::Concerns::StructuredLogging#log_step_event (method)">#log_step_event</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#log_structured-instance_method" title="Tasker::Concerns::StructuredLogging#log_structured (method)">#log_structured</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#log_task_event-instance_method" title="Tasker::Concerns::StructuredLogging#log_task_event (method)">#log_task_event</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#with_correlation_id-instance_method" title="Tasker::Concerns::StructuredLogging#with_correlation_id (method)">#with_correlation_id</a></span></p>
|
473
|
+
|
474
|
+
<div id="constructor_details" class="method_details_list">
|
475
|
+
<h2>Constructor Details</h2>
|
476
|
+
|
477
|
+
<div class="method_details first">
|
478
|
+
<h3 class="signature first" id="initialize-instance_method">
|
479
|
+
|
480
|
+
#<strong>initialize</strong>(config = nil) ⇒ <tt><span class='object_link'><a href="" title="Tasker::Telemetry::IntelligentCacheManager (class)">IntelligentCacheManager</a></span></tt>
|
481
|
+
|
482
|
+
|
483
|
+
|
484
|
+
|
485
|
+
|
486
|
+
</h3><div class="docstring">
|
487
|
+
<div class="discussion">
|
488
|
+
|
489
|
+
<p>Initialize intelligent cache manager with distributed coordination</p>
|
490
|
+
|
491
|
+
|
492
|
+
</div>
|
493
|
+
</div>
|
494
|
+
<div class="tags">
|
495
|
+
<p class="tag_title">Parameters:</p>
|
496
|
+
<ul class="param">
|
497
|
+
|
498
|
+
<li>
|
499
|
+
|
500
|
+
<span class='name'>config</span>
|
501
|
+
|
502
|
+
|
503
|
+
<span class='type'>(<tt><span class='object_link'><a href="../Types/CacheConfig.html" title="Tasker::Types::CacheConfig (class)">Tasker::Types::CacheConfig</a></span></tt>, <tt>nil</tt>)</span>
|
504
|
+
|
505
|
+
|
506
|
+
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
507
|
+
|
508
|
+
|
509
|
+
—
|
510
|
+
<div class='inline'>
|
511
|
+
<p>Cache configuration</p>
|
512
|
+
</div>
|
513
|
+
|
514
|
+
</li>
|
515
|
+
|
516
|
+
</ul>
|
517
|
+
|
518
|
+
|
519
|
+
</div><table class="source_code">
|
520
|
+
<tr>
|
521
|
+
<td>
|
522
|
+
<pre class="lines">
|
523
|
+
|
524
|
+
|
525
|
+
53
|
526
|
+
54
|
527
|
+
55
|
528
|
+
56
|
529
|
+
57
|
530
|
+
58
|
531
|
+
59
|
532
|
+
60
|
533
|
+
61
|
534
|
+
62
|
535
|
+
63
|
536
|
+
64
|
537
|
+
65
|
538
|
+
66
|
539
|
+
67
|
540
|
+
68
|
541
|
+
69
|
542
|
+
70
|
543
|
+
71</pre>
|
544
|
+
</td>
|
545
|
+
<td>
|
546
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/telemetry/intelligent_cache_manager.rb', line 53</span>
|
547
|
+
|
548
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_config'>config</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
549
|
+
<span class='ivar'>@config</span> <span class='op'>=</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><span class='period'>.</span><span class='id identifier rubyid_cache'><span class='object_link'><a href="../Configuration.html#cache-instance_method" title="Tasker::Configuration#cache (method)">cache</a></span></span>
|
550
|
+
|
551
|
+
<span class='comment'># Use unified cache strategy for capability detection
|
552
|
+
</span> <span class='ivar'>@cache_strategy</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='op'>::</span><span class='const'><span class='object_link'><a href="../CacheStrategy.html" title="Tasker::CacheStrategy (class)">CacheStrategy</a></span></span><span class='period'>.</span><span class='id identifier rubyid_detect'><span class='object_link'><a href="../CacheStrategy.html#detect-class_method" title="Tasker::CacheStrategy.detect (method)">detect</a></span></span>
|
553
|
+
<span class='ivar'>@instance_id</span> <span class='op'>=</span> <span class='ivar'>@cache_strategy</span><span class='period'>.</span><span class='id identifier rubyid_instance_id'>instance_id</span>
|
554
|
+
<span class='ivar'>@coordination_strategy</span> <span class='op'>=</span> <span class='ivar'>@cache_strategy</span><span class='period'>.</span><span class='id identifier rubyid_coordination_mode'>coordination_mode</span>
|
555
|
+
|
556
|
+
<span class='comment'># Extract capabilities for backward compatibility
|
557
|
+
</span> <span class='ivar'>@cache_capabilities</span> <span class='op'>=</span> <span class='ivar'>@cache_strategy</span><span class='period'>.</span><span class='id identifier rubyid_export_capabilities'>export_capabilities</span>
|
558
|
+
<span class='ivar'>@coordination_config</span> <span class='op'>=</span> <span class='id identifier rubyid_configure_coordination_parameters'>configure_coordination_parameters</span>
|
559
|
+
|
560
|
+
<span class='id identifier rubyid_log_structured'>log_structured</span><span class='lparen'>(</span><span class='symbol'>:info</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>IntelligentCacheManager initialized</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
561
|
+
<span class='label'>coordination_strategy:</span> <span class='ivar'>@coordination_strategy</span><span class='comma'>,</span>
|
562
|
+
<span class='label'>cache_store:</span> <span class='ivar'>@cache_strategy</span><span class='period'>.</span><span class='id identifier rubyid_store_class_name'>store_class_name</span><span class='comma'>,</span>
|
563
|
+
<span class='label'>instance_id:</span> <span class='ivar'>@instance_id</span><span class='comma'>,</span>
|
564
|
+
<span class='label'>adaptive_ttl_enabled:</span> <span class='ivar'>@config</span><span class='period'>.</span><span class='id identifier rubyid_adaptive_ttl_enabled'>adaptive_ttl_enabled</span><span class='comma'>,</span>
|
565
|
+
<span class='label'>performance_tracking_enabled:</span> <span class='ivar'>@config</span><span class='period'>.</span><span class='id identifier rubyid_performance_tracking_enabled'>performance_tracking_enabled</span><span class='rparen'>)</span>
|
566
|
+
<span class='kw'>end</span></pre>
|
567
|
+
</td>
|
568
|
+
</tr>
|
569
|
+
</table>
|
570
|
+
</div>
|
571
|
+
|
572
|
+
</div>
|
573
|
+
|
574
|
+
<div id="instance_attr_details" class="attr_details">
|
575
|
+
<h2>Instance Attribute Details</h2>
|
576
|
+
|
577
|
+
|
578
|
+
<span id=""></span>
|
579
|
+
<div class="method_details first">
|
580
|
+
<h3 class="signature first" id="cache_capabilities-instance_method">
|
581
|
+
|
582
|
+
#<strong>cache_capabilities</strong> ⇒ <tt>Object</tt> <span class="extras">(readonly)</span>
|
583
|
+
|
584
|
+
|
585
|
+
|
586
|
+
|
587
|
+
|
588
|
+
</h3><div class="docstring">
|
589
|
+
<div class="discussion">
|
590
|
+
|
591
|
+
<p>Returns the value of attribute cache_capabilities.</p>
|
592
|
+
|
593
|
+
|
594
|
+
</div>
|
595
|
+
</div>
|
596
|
+
<div class="tags">
|
597
|
+
|
598
|
+
|
599
|
+
</div><table class="source_code">
|
600
|
+
<tr>
|
601
|
+
<td>
|
602
|
+
<pre class="lines">
|
603
|
+
|
604
|
+
|
605
|
+
48
|
606
|
+
49
|
607
|
+
50</pre>
|
608
|
+
</td>
|
609
|
+
<td>
|
610
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/telemetry/intelligent_cache_manager.rb', line 48</span>
|
611
|
+
|
612
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_cache_capabilities'>cache_capabilities</span>
|
613
|
+
<span class='ivar'>@cache_capabilities</span>
|
614
|
+
<span class='kw'>end</span></pre>
|
615
|
+
</td>
|
616
|
+
</tr>
|
617
|
+
</table>
|
618
|
+
</div>
|
619
|
+
|
620
|
+
|
621
|
+
<span id=""></span>
|
622
|
+
<div class="method_details ">
|
623
|
+
<h3 class="signature " id="config-instance_method">
|
624
|
+
|
625
|
+
#<strong>config</strong> ⇒ <tt>Object</tt> <span class="extras">(readonly)</span>
|
626
|
+
|
627
|
+
|
628
|
+
|
629
|
+
|
630
|
+
|
631
|
+
</h3><div class="docstring">
|
632
|
+
<div class="discussion">
|
633
|
+
|
634
|
+
<p>Returns the value of attribute config.</p>
|
635
|
+
|
636
|
+
|
637
|
+
</div>
|
638
|
+
</div>
|
639
|
+
<div class="tags">
|
640
|
+
|
641
|
+
|
642
|
+
</div><table class="source_code">
|
643
|
+
<tr>
|
644
|
+
<td>
|
645
|
+
<pre class="lines">
|
646
|
+
|
647
|
+
|
648
|
+
48
|
649
|
+
49
|
650
|
+
50</pre>
|
651
|
+
</td>
|
652
|
+
<td>
|
653
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/telemetry/intelligent_cache_manager.rb', line 48</span>
|
654
|
+
|
655
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_config'>config</span>
|
656
|
+
<span class='ivar'>@config</span>
|
657
|
+
<span class='kw'>end</span></pre>
|
658
|
+
</td>
|
659
|
+
</tr>
|
660
|
+
</table>
|
661
|
+
</div>
|
662
|
+
|
663
|
+
|
664
|
+
<span id=""></span>
|
665
|
+
<div class="method_details ">
|
666
|
+
<h3 class="signature " id="coordination_strategy-instance_method">
|
667
|
+
|
668
|
+
#<strong>coordination_strategy</strong> ⇒ <tt>Object</tt> <span class="extras">(readonly)</span>
|
669
|
+
|
670
|
+
|
671
|
+
|
672
|
+
|
673
|
+
|
674
|
+
</h3><div class="docstring">
|
675
|
+
<div class="discussion">
|
676
|
+
|
677
|
+
<p>Returns the value of attribute coordination_strategy.</p>
|
678
|
+
|
679
|
+
|
680
|
+
</div>
|
681
|
+
</div>
|
682
|
+
<div class="tags">
|
683
|
+
|
684
|
+
|
685
|
+
</div><table class="source_code">
|
686
|
+
<tr>
|
687
|
+
<td>
|
688
|
+
<pre class="lines">
|
689
|
+
|
690
|
+
|
691
|
+
48
|
692
|
+
49
|
693
|
+
50</pre>
|
694
|
+
</td>
|
695
|
+
<td>
|
696
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/telemetry/intelligent_cache_manager.rb', line 48</span>
|
697
|
+
|
698
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_coordination_strategy'>coordination_strategy</span>
|
699
|
+
<span class='ivar'>@coordination_strategy</span>
|
700
|
+
<span class='kw'>end</span></pre>
|
701
|
+
</td>
|
702
|
+
</tr>
|
703
|
+
</table>
|
704
|
+
</div>
|
705
|
+
|
706
|
+
|
707
|
+
<span id=""></span>
|
708
|
+
<div class="method_details ">
|
709
|
+
<h3 class="signature " id="instance_id-instance_method">
|
710
|
+
|
711
|
+
#<strong>instance_id</strong> ⇒ <tt>Object</tt> <span class="extras">(readonly)</span>
|
712
|
+
|
713
|
+
|
714
|
+
|
715
|
+
|
716
|
+
|
717
|
+
</h3><div class="docstring">
|
718
|
+
<div class="discussion">
|
719
|
+
|
720
|
+
<p>Returns the value of attribute instance_id.</p>
|
721
|
+
|
722
|
+
|
723
|
+
</div>
|
724
|
+
</div>
|
725
|
+
<div class="tags">
|
726
|
+
|
727
|
+
|
728
|
+
</div><table class="source_code">
|
729
|
+
<tr>
|
730
|
+
<td>
|
731
|
+
<pre class="lines">
|
732
|
+
|
733
|
+
|
734
|
+
48
|
735
|
+
49
|
736
|
+
50</pre>
|
737
|
+
</td>
|
738
|
+
<td>
|
739
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/telemetry/intelligent_cache_manager.rb', line 48</span>
|
740
|
+
|
741
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_instance_id'>instance_id</span>
|
742
|
+
<span class='ivar'>@instance_id</span>
|
743
|
+
<span class='kw'>end</span></pre>
|
744
|
+
</td>
|
745
|
+
</tr>
|
746
|
+
</table>
|
747
|
+
</div>
|
748
|
+
|
749
|
+
</div>
|
750
|
+
|
751
|
+
|
752
|
+
<div id="instance_method_details" class="method_details_list">
|
753
|
+
<h2>Instance Method Details</h2>
|
754
|
+
|
755
|
+
|
756
|
+
<div class="method_details first">
|
757
|
+
<h3 class="signature first" id="clear_performance_data-instance_method">
|
758
|
+
|
759
|
+
#<strong>clear_performance_data</strong>(cache_key) ⇒ <tt>Boolean</tt>
|
760
|
+
|
761
|
+
|
762
|
+
|
763
|
+
|
764
|
+
|
765
|
+
</h3><div class="docstring">
|
766
|
+
<div class="discussion">
|
767
|
+
|
768
|
+
<p>Clear performance data for a specific cache key</p>
|
769
|
+
|
770
|
+
|
771
|
+
</div>
|
772
|
+
</div>
|
773
|
+
<div class="tags">
|
774
|
+
<p class="tag_title">Parameters:</p>
|
775
|
+
<ul class="param">
|
776
|
+
|
777
|
+
<li>
|
778
|
+
|
779
|
+
<span class='name'>cache_key</span>
|
780
|
+
|
781
|
+
|
782
|
+
<span class='type'>(<tt>String</tt>)</span>
|
783
|
+
|
784
|
+
|
785
|
+
|
786
|
+
—
|
787
|
+
<div class='inline'>
|
788
|
+
<p>The cache key to clear performance data for</p>
|
789
|
+
</div>
|
790
|
+
|
791
|
+
</li>
|
792
|
+
|
793
|
+
</ul>
|
794
|
+
|
795
|
+
<p class="tag_title">Returns:</p>
|
796
|
+
<ul class="return">
|
797
|
+
|
798
|
+
<li>
|
799
|
+
|
800
|
+
|
801
|
+
<span class='type'>(<tt>Boolean</tt>)</span>
|
802
|
+
|
803
|
+
|
804
|
+
|
805
|
+
—
|
806
|
+
<div class='inline'>
|
807
|
+
<p>Success status</p>
|
808
|
+
</div>
|
809
|
+
|
810
|
+
</li>
|
811
|
+
|
812
|
+
</ul>
|
813
|
+
|
814
|
+
</div><table class="source_code">
|
815
|
+
<tr>
|
816
|
+
<td>
|
817
|
+
<pre class="lines">
|
818
|
+
|
819
|
+
|
820
|
+
97
|
821
|
+
98
|
822
|
+
99
|
823
|
+
100
|
824
|
+
101
|
825
|
+
102
|
826
|
+
103
|
827
|
+
104
|
828
|
+
105
|
829
|
+
106
|
830
|
+
107
|
831
|
+
108
|
832
|
+
109
|
833
|
+
110
|
834
|
+
111
|
835
|
+
112
|
836
|
+
113</pre>
|
837
|
+
</td>
|
838
|
+
<td>
|
839
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/telemetry/intelligent_cache_manager.rb', line 97</span>
|
840
|
+
|
841
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_clear_performance_data'>clear_performance_data</span><span class='lparen'>(</span><span class='id identifier rubyid_cache_key'>cache_key</span><span class='rparen'>)</span>
|
842
|
+
<span class='id identifier rubyid_performance_key'>performance_key</span> <span class='op'>=</span> <span class='id identifier rubyid_build_performance_key'>build_performance_key</span><span class='lparen'>(</span><span class='id identifier rubyid_cache_key'>cache_key</span><span class='rparen'>)</span>
|
843
|
+
<span class='const'>Rails</span><span class='period'>.</span><span class='id identifier rubyid_cache'>cache</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='id identifier rubyid_performance_key'>performance_key</span><span class='rparen'>)</span>
|
844
|
+
|
845
|
+
<span class='id identifier rubyid_log_structured'>log_structured</span><span class='lparen'>(</span><span class='symbol'>:debug</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Cache performance data cleared</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
846
|
+
<span class='label'>cache_key:</span> <span class='id identifier rubyid_cache_key'>cache_key</span><span class='comma'>,</span>
|
847
|
+
<span class='label'>performance_key:</span> <span class='id identifier rubyid_performance_key'>performance_key</span><span class='comma'>,</span>
|
848
|
+
<span class='label'>coordination_strategy:</span> <span class='ivar'>@coordination_strategy</span><span class='rparen'>)</span>
|
849
|
+
|
850
|
+
<span class='kw'>true</span>
|
851
|
+
<span class='kw'>rescue</span> <span class='const'>StandardError</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
852
|
+
<span class='id identifier rubyid_log_structured'>log_structured</span><span class='lparen'>(</span><span class='symbol'>:error</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Failed to clear cache performance data</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
853
|
+
<span class='label'>cache_key:</span> <span class='id identifier rubyid_cache_key'>cache_key</span><span class='comma'>,</span>
|
854
|
+
<span class='label'>error:</span> <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_message'>message</span><span class='comma'>,</span>
|
855
|
+
<span class='label'>coordination_strategy:</span> <span class='ivar'>@coordination_strategy</span><span class='rparen'>)</span>
|
856
|
+
<span class='kw'>false</span>
|
857
|
+
<span class='kw'>end</span></pre>
|
858
|
+
</td>
|
859
|
+
</tr>
|
860
|
+
</table>
|
861
|
+
</div>
|
862
|
+
|
863
|
+
<div class="method_details ">
|
864
|
+
<h3 class="signature " id="export_performance_metrics-instance_method">
|
865
|
+
|
866
|
+
#<strong>export_performance_metrics</strong> ⇒ <tt>Hash</tt>
|
867
|
+
|
868
|
+
|
869
|
+
|
870
|
+
|
871
|
+
|
872
|
+
</h3><div class="docstring">
|
873
|
+
<div class="discussion">
|
874
|
+
|
875
|
+
<p>Export cache performance metrics for observability</p>
|
876
|
+
|
877
|
+
|
878
|
+
</div>
|
879
|
+
</div>
|
880
|
+
<div class="tags">
|
881
|
+
|
882
|
+
<p class="tag_title">Returns:</p>
|
883
|
+
<ul class="return">
|
884
|
+
|
885
|
+
<li>
|
886
|
+
|
887
|
+
|
888
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
889
|
+
|
890
|
+
|
891
|
+
|
892
|
+
—
|
893
|
+
<div class='inline'>
|
894
|
+
<p>Performance metrics summary</p>
|
895
|
+
</div>
|
896
|
+
|
897
|
+
</li>
|
898
|
+
|
899
|
+
</ul>
|
900
|
+
|
901
|
+
</div><table class="source_code">
|
902
|
+
<tr>
|
903
|
+
<td>
|
904
|
+
<pre class="lines">
|
905
|
+
|
906
|
+
|
907
|
+
118
|
908
|
+
119
|
909
|
+
120
|
910
|
+
121
|
911
|
+
122
|
912
|
+
123
|
913
|
+
124
|
914
|
+
125
|
915
|
+
126
|
916
|
+
127</pre>
|
917
|
+
</td>
|
918
|
+
<td>
|
919
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/telemetry/intelligent_cache_manager.rb', line 118</span>
|
920
|
+
|
921
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_export_performance_metrics'>export_performance_metrics</span>
|
922
|
+
<span class='kw'>case</span> <span class='ivar'>@coordination_strategy</span>
|
923
|
+
<span class='kw'>when</span> <span class='symbol'>:distributed_atomic</span><span class='comma'>,</span> <span class='symbol'>:distributed_basic</span>
|
924
|
+
<span class='id identifier rubyid_export_distributed_performance_metrics'>export_distributed_performance_metrics</span>
|
925
|
+
<span class='kw'>when</span> <span class='symbol'>:local_only</span>
|
926
|
+
<span class='id identifier rubyid_export_local_performance_metrics'>export_local_performance_metrics</span>
|
927
|
+
<span class='kw'>else</span>
|
928
|
+
<span class='lbrace'>{</span> <span class='label'>strategy:</span> <span class='ivar'>@coordination_strategy</span><span class='comma'>,</span> <span class='label'>metrics:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> <span class='rbrace'>}</span>
|
929
|
+
<span class='kw'>end</span>
|
930
|
+
<span class='kw'>end</span></pre>
|
931
|
+
</td>
|
932
|
+
</tr>
|
933
|
+
</table>
|
934
|
+
</div>
|
935
|
+
|
936
|
+
<div class="method_details ">
|
937
|
+
<h3 class="signature " id="intelligent_fetch-instance_method">
|
938
|
+
|
939
|
+
#<strong>intelligent_fetch</strong>(cache_key, base_ttl: @config.default_ttl) { ... } ⇒ <tt>Object</tt>
|
940
|
+
|
941
|
+
|
942
|
+
|
943
|
+
|
944
|
+
|
945
|
+
</h3><div class="docstring">
|
946
|
+
<div class="discussion">
|
947
|
+
|
948
|
+
<p>Main intelligent cache method with distributed coordination</p>
|
949
|
+
|
950
|
+
|
951
|
+
</div>
|
952
|
+
</div>
|
953
|
+
<div class="tags">
|
954
|
+
<p class="tag_title">Parameters:</p>
|
955
|
+
<ul class="param">
|
956
|
+
|
957
|
+
<li>
|
958
|
+
|
959
|
+
<span class='name'>cache_key</span>
|
960
|
+
|
961
|
+
|
962
|
+
<span class='type'>(<tt>String</tt>)</span>
|
963
|
+
|
964
|
+
|
965
|
+
|
966
|
+
—
|
967
|
+
<div class='inline'>
|
968
|
+
<p>The cache key</p>
|
969
|
+
</div>
|
970
|
+
|
971
|
+
</li>
|
972
|
+
|
973
|
+
<li>
|
974
|
+
|
975
|
+
<span class='name'>base_ttl</span>
|
976
|
+
|
977
|
+
|
978
|
+
<span class='type'>(<tt>Integer</tt>)</span>
|
979
|
+
|
980
|
+
|
981
|
+
<em class="default">(defaults to: <tt>@config.default_ttl</tt>)</em>
|
982
|
+
|
983
|
+
|
984
|
+
—
|
985
|
+
<div class='inline'>
|
986
|
+
<p>Base TTL in seconds</p>
|
987
|
+
</div>
|
988
|
+
|
989
|
+
</li>
|
990
|
+
|
991
|
+
</ul>
|
992
|
+
|
993
|
+
<p class="tag_title">Yields:</p>
|
994
|
+
<ul class="yield">
|
995
|
+
|
996
|
+
<li>
|
997
|
+
|
998
|
+
|
999
|
+
<span class='type'></span>
|
1000
|
+
|
1001
|
+
|
1002
|
+
|
1003
|
+
|
1004
|
+
<div class='inline'>
|
1005
|
+
<p>Block that generates the value if cache miss</p>
|
1006
|
+
</div>
|
1007
|
+
|
1008
|
+
</li>
|
1009
|
+
|
1010
|
+
</ul>
|
1011
|
+
<p class="tag_title">Returns:</p>
|
1012
|
+
<ul class="return">
|
1013
|
+
|
1014
|
+
<li>
|
1015
|
+
|
1016
|
+
|
1017
|
+
<span class='type'>(<tt>Object</tt>)</span>
|
1018
|
+
|
1019
|
+
|
1020
|
+
|
1021
|
+
—
|
1022
|
+
<div class='inline'>
|
1023
|
+
<p>The cached or generated value</p>
|
1024
|
+
</div>
|
1025
|
+
|
1026
|
+
</li>
|
1027
|
+
|
1028
|
+
</ul>
|
1029
|
+
|
1030
|
+
</div><table class="source_code">
|
1031
|
+
<tr>
|
1032
|
+
<td>
|
1033
|
+
<pre class="lines">
|
1034
|
+
|
1035
|
+
|
1036
|
+
79
|
1037
|
+
80
|
1038
|
+
81
|
1039
|
+
82
|
1040
|
+
83
|
1041
|
+
84
|
1042
|
+
85
|
1043
|
+
86
|
1044
|
+
87
|
1045
|
+
88
|
1046
|
+
89
|
1047
|
+
90
|
1048
|
+
91</pre>
|
1049
|
+
</td>
|
1050
|
+
<td>
|
1051
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/telemetry/intelligent_cache_manager.rb', line 79</span>
|
1052
|
+
|
1053
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_intelligent_fetch'>intelligent_fetch</span><span class='lparen'>(</span><span class='id identifier rubyid_cache_key'>cache_key</span><span class='comma'>,</span> <span class='label'>base_ttl:</span> <span class='ivar'>@config</span><span class='period'>.</span><span class='id identifier rubyid_default_ttl'>default_ttl</span><span class='comma'>,</span> <span class='op'>&</span><span class='rparen'>)</span>
|
1054
|
+
<span class='kw'>case</span> <span class='ivar'>@coordination_strategy</span>
|
1055
|
+
<span class='kw'>when</span> <span class='symbol'>:distributed_atomic</span>
|
1056
|
+
<span class='id identifier rubyid_intelligent_fetch_with_atomic_coordination'>intelligent_fetch_with_atomic_coordination</span><span class='lparen'>(</span><span class='id identifier rubyid_cache_key'>cache_key</span><span class='comma'>,</span> <span class='id identifier rubyid_base_ttl'>base_ttl</span><span class='comma'>,</span> <span class='op'>&</span><span class='rparen'>)</span>
|
1057
|
+
<span class='kw'>when</span> <span class='symbol'>:distributed_basic</span>
|
1058
|
+
<span class='id identifier rubyid_intelligent_fetch_with_basic_coordination'>intelligent_fetch_with_basic_coordination</span><span class='lparen'>(</span><span class='id identifier rubyid_cache_key'>cache_key</span><span class='comma'>,</span> <span class='id identifier rubyid_base_ttl'>base_ttl</span><span class='comma'>,</span> <span class='op'>&</span><span class='rparen'>)</span>
|
1059
|
+
<span class='kw'>when</span> <span class='symbol'>:local_only</span>
|
1060
|
+
<span class='id identifier rubyid_intelligent_fetch_with_local_tracking'>intelligent_fetch_with_local_tracking</span><span class='lparen'>(</span><span class='id identifier rubyid_cache_key'>cache_key</span><span class='comma'>,</span> <span class='id identifier rubyid_base_ttl'>base_ttl</span><span class='comma'>,</span> <span class='op'>&</span><span class='rparen'>)</span>
|
1061
|
+
<span class='kw'>else</span>
|
1062
|
+
<span class='comment'># Fallback to basic Rails.cache behavior
|
1063
|
+
</span> <span class='const'>Rails</span><span class='period'>.</span><span class='id identifier rubyid_cache'>cache</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='id identifier rubyid_cache_key'>cache_key</span><span class='comma'>,</span> <span class='label'>expires_in:</span> <span class='id identifier rubyid_base_ttl'>base_ttl</span><span class='comma'>,</span> <span class='op'>&</span><span class='rparen'>)</span>
|
1064
|
+
<span class='kw'>end</span>
|
1065
|
+
<span class='kw'>end</span></pre>
|
1066
|
+
</td>
|
1067
|
+
</tr>
|
1068
|
+
</table>
|
1069
|
+
</div>
|
1070
|
+
|
1071
|
+
</div>
|
1072
|
+
|
1073
|
+
</div>
|
1074
|
+
|
1075
|
+
<div id="footer">
|
1076
|
+
Generated on Tue Jul 1 16:47:41 2025 by
|
1077
|
+
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
1078
|
+
0.9.37 (ruby-3.2.4).
|
1079
|
+
</div>
|
1080
|
+
|
1081
|
+
</div>
|
1082
|
+
</body>
|
1083
|
+
</html>
|