Commit e49bea27 authored by Matthias Kaeppler's avatar Matthias Kaeppler

Fix existing WorkerDataConsistency cop offenses

This cop was introduced in:
https://gitlab.com/gitlab-org/gitlab/-/merge_requests/65341
parent fed6566c
This diff is collapsed.
......@@ -3,6 +3,8 @@
class AdminEmailWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
......
......@@ -6,6 +6,8 @@ module Analytics
extend ::Gitlab::Utils::Override
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
......
......@@ -6,6 +6,8 @@ module Analytics
extend ::Gitlab::Utils::Override
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
feature_category :devops_reports
......
......@@ -3,6 +3,8 @@
class ApproveBlockedPendingApprovalUsersWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
idempotent!
......
......@@ -3,6 +3,8 @@
class AuthorizedKeysWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
PERMITTED_ACTIONS = %w[add_key remove_key].freeze
......
......@@ -4,6 +4,8 @@ module AuthorizedProjectUpdate
class PeriodicRecalculateWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
# This worker does not perform work scoped to a context
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
......
......@@ -4,6 +4,8 @@ module AuthorizedProjectUpdate
class ProjectCreateWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
feature_category :authentication_and_authorization
......
......@@ -4,6 +4,8 @@ module AuthorizedProjectUpdate
class ProjectGroupLinkCreateWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
feature_category :authentication_and_authorization
......
......@@ -3,6 +3,8 @@
module AuthorizedProjectUpdate
class ProjectRecalculateWorker
include ApplicationWorker
data_consistency :always
include Gitlab::ExclusiveLeaseHelpers
feature_category :authentication_and_authorization
......
......@@ -7,6 +7,7 @@ module AuthorizedProjectUpdate
sidekiq_options retry: 3
feature_category :authentication_and_authorization
urgency :low
data_consistency :always
queue_namespace :authorized_project_update
idempotent!
......
......@@ -3,6 +3,8 @@
class AuthorizedProjectsWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
prepend WaitableWorker
......
......@@ -4,6 +4,8 @@ module AutoDevops
class DisableWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include AutoDevopsQueue
......
......@@ -3,6 +3,8 @@
class AutoMergeProcessWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
queue_namespace :auto_merge
......
......@@ -3,6 +3,8 @@
class BackgroundMigrationWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
feature_category :database
......
......@@ -3,6 +3,8 @@
class BuildSuccessWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include PipelineQueue
......
......@@ -3,6 +3,8 @@
class BulkImportWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
feature_category :importers
tags :exclude_from_kubernetes
......
......@@ -4,6 +4,8 @@ module BulkImports
class EntityWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
feature_category :importers
tags :exclude_from_kubernetes
......
......@@ -4,6 +4,8 @@ module BulkImports
class ExportRequestWorker
include ApplicationWorker
data_consistency :always
idempotent!
worker_has_external_dependencies!
feature_category :importers
......
......@@ -4,6 +4,8 @@ module BulkImports
class PipelineWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
NDJSON_PIPELINE_PERFORM_DELAY = 1.minute
feature_category :importers
......
......@@ -3,6 +3,8 @@
module BulkImports
class RelationExportWorker
include ApplicationWorker
data_consistency :always
include ExceptionBacktrace
idempotent!
......
......@@ -4,6 +4,8 @@ module Chaos
class CpuSpinWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include ChaosQueue
......
......@@ -4,6 +4,8 @@ module Chaos
class DbSpinWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include ChaosQueue
......
......@@ -3,6 +3,8 @@
module Chaos
class KillWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
include ChaosQueue
sidekiq_options retry: false
......
......@@ -4,6 +4,8 @@ module Chaos
class LeakMemWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include ChaosQueue
......
......@@ -4,6 +4,8 @@ module Chaos
class SleepWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include ChaosQueue
......
......@@ -3,6 +3,8 @@
class ChatNotificationWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
TimeoutExceeded = Class.new(StandardError)
sidekiq_options retry: false
......
......@@ -4,6 +4,8 @@ module Ci
class ArchiveTraceWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include PipelineBackgroundQueue
......
......@@ -4,6 +4,8 @@ module Ci
class ArchiveTracesCronWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
......
......@@ -4,6 +4,8 @@ module Ci
class BuildFinishedWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include PipelineQueue
......
......@@ -4,6 +4,8 @@ module Ci
class BuildPrepareWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include PipelineQueue
......
......@@ -4,6 +4,8 @@ module Ci
class BuildScheduleWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include PipelineQueue
......
......@@ -4,6 +4,8 @@ module Ci
class BuildTraceChunkFlushWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include PipelineBackgroundQueue
......
......@@ -4,6 +4,8 @@ module Ci
class DailyBuildGroupReportResultsWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include PipelineBackgroundQueue
......
......@@ -4,6 +4,8 @@ module Ci
class DeleteObjectsWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include LimitedCapacity::Worker
......
......@@ -3,6 +3,8 @@
module Ci
class DeleteUnitTestsWorker
include ApplicationWorker
data_consistency :always
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -4,6 +4,8 @@ module Ci
class DropPipelineWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include PipelineQueue
......
......@@ -4,6 +4,8 @@ module Ci
class InitialPipelineProcessWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include PipelineQueue
......
......@@ -4,6 +4,8 @@ module Ci
class AddTodoWhenBuildFailsWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include PipelineQueue
......
......@@ -5,6 +5,8 @@ module Ci
class CoverageReportWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include PipelineBackgroundQueue
......
......@@ -5,6 +5,8 @@ module Ci
class CreateQualityReportWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
queue_namespace :pipeline_background
......
......@@ -5,6 +5,8 @@ module Ci
class ExpireArtifactsWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
......
......@@ -4,6 +4,8 @@ module Ci
class PipelineSuccessUnlockArtifactsWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include PipelineBackgroundQueue
......
......@@ -4,6 +4,8 @@ module Ci
class RefDeleteUnlockArtifactsWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include PipelineBackgroundQueue
......
......@@ -8,6 +8,8 @@ module Ci
class AssignResourceFromResourceGroupWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include PipelineQueue
......
......@@ -4,6 +4,8 @@ module Ci
class ScheduleDeleteObjectsCronWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
......
......@@ -4,6 +4,8 @@ module Ci
class TestFailureHistoryWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include PipelineBackgroundQueue
......
......@@ -3,6 +3,8 @@
class CiPlatformMetricsUpdateCronWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
# This worker does not perform work scoped to a context
......
......@@ -3,6 +3,8 @@
class CleanupContainerRepositoryWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
queue_namespace :container_repository
......
......@@ -3,6 +3,8 @@
class ClusterConfigureIstioWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include ClusterQueue
......
......@@ -3,6 +3,8 @@
class ClusterInstallAppWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include ClusterQueue
include ClusterApplications
......
......@@ -3,6 +3,8 @@
class ClusterPatchAppWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include ClusterQueue
include ClusterApplications
......
......@@ -3,6 +3,8 @@
class ClusterProvisionWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include ClusterQueue
......
......@@ -5,6 +5,8 @@ class ClusterUpdateAppWorker # rubocop:disable Scalability/IdempotentWorker
UpdateAlreadyInProgressError = Class.new(StandardError)
include ApplicationWorker
data_consistency :always
include ClusterQueue
include ClusterApplications
include ExclusiveLeaseGuard
......
......@@ -3,6 +3,8 @@
class ClusterUpgradeAppWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include ClusterQueue
include ClusterApplications
......
......@@ -3,6 +3,8 @@
class ClusterWaitForAppInstallationWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include ClusterQueue
include ClusterApplications
......
......@@ -3,6 +3,8 @@
class ClusterWaitForAppUpdateWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include ClusterQueue
include ClusterApplications
......
......@@ -3,6 +3,8 @@
class ClusterWaitForIngressIpAddressWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include ClusterQueue
include ClusterApplications
......
......@@ -5,6 +5,8 @@ module Clusters
class ActivateServiceWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include ClusterQueue
......
......@@ -5,6 +5,8 @@ module Clusters
class CheckPrometheusHealthWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
......
......@@ -5,6 +5,8 @@ module Clusters
class DeactivateServiceWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include ClusterQueue
......
......@@ -5,6 +5,8 @@ module Clusters
class UninstallWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include ClusterQueue
include ClusterApplications
......
......@@ -5,6 +5,8 @@ module Clusters
class WaitForUninstallAppWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include ClusterQueue
include ClusterApplications
......
......@@ -4,6 +4,8 @@ module ContainerExpirationPolicies
class CleanupContainerRepositoryWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include LimitedCapacity::Worker
include Gitlab::Utils::StrongMemoize
......
......@@ -3,6 +3,8 @@
class ContainerExpirationPolicyWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue
include ExclusiveLeaseGuard
......
......@@ -3,6 +3,8 @@
class CreateCommitSignatureWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
feature_category :source_code_management
......
......@@ -3,6 +3,8 @@
class CreateNoteDiffFileWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
feature_category :code_review
......
......@@ -3,6 +3,8 @@
class CreatePipelineWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include PipelineQueue
......
......@@ -4,6 +4,8 @@ module Database
class BatchedBackgroundMigrationWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
......
......@@ -7,6 +7,8 @@ module Database
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
data_consistency :always
feature_category :database
idempotent!
......
......@@ -3,6 +3,8 @@
class DeleteContainerRepositoryWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include ExclusiveLeaseGuard
......
......@@ -3,6 +3,8 @@
class DeleteDiffFilesWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
feature_category :code_review
......
......@@ -3,6 +3,8 @@
class DeleteMergedBranchesWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
feature_category :source_code_management
......
......@@ -3,6 +3,8 @@
class DeleteStoredFilesWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
feature_category_not_owned!
......
......@@ -3,6 +3,8 @@
class DeleteUserWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
feature_category :authentication_and_authorization
......
......@@ -4,6 +4,8 @@ module Deployments
class DropOlderDeploymentsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
queue_namespace :deployment
......
......@@ -6,6 +6,8 @@ module Deployments
class FinishedWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
queue_namespace :deployment
......
......@@ -6,6 +6,8 @@ module Deployments
class ForwardDeploymentWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
queue_namespace :deployment
......
......@@ -4,6 +4,8 @@ module Deployments
class HooksWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
queue_namespace :deployment
feature_category :continuous_delivery
......
......@@ -4,6 +4,8 @@ module Deployments
class LinkMergeRequestWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
queue_namespace :deployment
......
......@@ -6,6 +6,8 @@ module Deployments
class SuccessWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
queue_namespace :deployment
......
......@@ -4,6 +4,8 @@ module Deployments
class UpdateEnvironmentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
queue_namespace :deployment
......
......@@ -4,6 +4,8 @@ module DesignManagement
class CopyDesignCollectionWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
feature_category :design_management
......
......@@ -4,6 +4,8 @@ module DesignManagement
class NewVersionWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
feature_category :design_management
......
......@@ -3,6 +3,8 @@
class DestroyPagesDeploymentsWorker
include ApplicationWorker
data_consistency :always
idempotent!
loggable_arguments 0, 1
......
......@@ -2,6 +2,8 @@
class DetectRepositoryLanguagesWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
include ExceptionBacktrace
include ExclusiveLeaseGuard
......
......@@ -3,6 +3,8 @@
class DisallowTwoFactorForGroupWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include ExceptionBacktrace
......
......@@ -3,6 +3,8 @@
class DisallowTwoFactorForSubgroupsWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include ExceptionBacktrace
......
......@@ -3,6 +3,8 @@
class EmailReceiverWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
feature_category :issue_tracking
......
......@@ -3,6 +3,8 @@
class EmailsOnPushWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
attr_reader :email, :skip_premailer
......
......@@ -4,6 +4,8 @@ module Environments
class AutoStopCronWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
......
......@@ -5,6 +5,8 @@ module Environments
class UpdateWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: false
idempotent!
worker_has_external_dependencies!
......
......@@ -8,6 +8,8 @@
class ErrorTrackingIssueLinkWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include ExclusiveLeaseGuard
include Gitlab::Utils::StrongMemoize
......
......@@ -4,6 +4,8 @@ module Experiments
class RecordConversionEventWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
feature_category :users
......
......@@ -3,6 +3,8 @@
class ExpireBuildArtifactsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
......
......@@ -3,6 +3,8 @@
class ExpireBuildInstanceArtifactsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
feature_category :continuous_integration
......
......@@ -3,6 +3,8 @@
class ExpireJobCacheWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include PipelineQueue
......
......@@ -3,6 +3,8 @@
class ExportCsvWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
feature_category :issue_tracking
......
......@@ -3,6 +3,8 @@
class FileHookWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: false
feature_category :integrations
loggable_arguments 0
......
......@@ -8,6 +8,8 @@
class FlushCounterIncrementsWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
feature_category_not_owned!
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment