निजता बजट खत्म होने की गड़बड़ी को डीबग करना

इस गाइड में, PRIVACY_BUDGET_EXHAUSTED गड़बड़ियों के लिए, निजता बजट की नई डीबगिंग सुविधा इस्तेमाल करने का तरीका बताया गया है. यह सुविधा, v2.12.0 से एग्रीगेशन सेवा में उपलब्ध है. जैसा कि दस्तावेज़ में बताया गया है, एग्रीगेट की जा सकने वाली रिपोर्ट, जॉब के ज़रिए एग्रीगेशन सेवा के डिप्लॉयमेंट में सबमिट की जाती हैं. साथ ही, निजता बजट के इस्तेमाल को सीमित करने के लिए, इन्फ़्रास्ट्रक्चर, टीईई (भरोसेमंद एक्सीक्यूशन एनवायरमेंट) कोऑर्डिनेटर में मौजूद, एग्रीगेट की जा सकने वाली रिपोर्टिंग खाता सेवा पर निर्भर करता है. आपको याद दिला दें कि निजता बजट से यह तय होता है कि खास जानकारी वाली रिपोर्ट जनरेट करने के लिए, एग्रीगेट की जा सकने वाली इन रिपोर्ट का इस्तेमाल कितनी बार किया जा सकता है. इससे, ज़्यादा जानकारी हासिल करने से रोका जा सकता है. अगर किसी रिपोर्ट को, तय किए गए निजता बजट से ज़्यादा एग्रीगेट किया जाता है, तो PRIVACY_BUDGET_EXHAUSTED गड़बड़ी का मैसेज दिखेगा.

इस गाइड में, आपको डीबग करने की एक सुविधा के बारे में बताया गया है. यह सुविधा v2.12.0 से, काम से जुड़ी उन रिपोर्ट की हेल्पर JSON फ़ाइल जनरेट और सेव करती है जिनकी वजह से, आपकी जॉब में PRIVACY_BUDGET_EXHAUSTED गड़बड़ियां हुई हैं.

अगर आपको बजट वापस पाने में दिलचस्पी है, तो GitHub पर सार्वजनिक तौर पर उपलब्ध हमारे दिशा-निर्देशों पर जाएं

ज़रूरी शर्त

इस गाइड में यह माना गया है कि आपने ये काम कर लिए हैं:

  • आपके चुने गए सार्वजनिक क्लाउड (Google Cloud Platform या Amazon Web Services) पर, एग्रीगेशन सेवा v2.12.0 (या उसके बाद की) डिप्लॉय की गई हो.

PRIVACY_BUDGET_EXHAUSTED गड़बड़ी की वजह से पूरा न हो पाने वाले जॉब को डीबग करना

इस समय, हमें उम्मीद है कि आपने अपने सबसे नए जॉब रिक्वेस्ट आईडी के साथ getJob एंडपॉइंट को एक्सीक्यूट किया है और आपको नीचे दिए गए जवाब जैसी PRIVACY_BUDGET_EXHAUSTED गड़बड़ी मिली है. Aggregation Service v2.12.0 में, आपके पास अपनी सार्वजनिक क्लाउड स्टोरेज बकेट में, निजता बजट खत्म होने की वजह से डीबग करने के लिए जनरेट की गई नई JSON फ़ाइल होनी चाहिए.

पाथ, return_message से तय किए जाते हैं और ये इन फ़ॉर्मैट के हिसाब से होते हैं:

  • फ़ाइल का पाथ: <output_data_bucket_name>/<output_data_blob_prefix>/
  • फ़ाइल का नाम: privacy_budget_exhausted_<request_received_at_timestamp>.json
{
  "job_status": "FINISHED",
  "request_received_at": <utc timestamp>,
  "request_updated_at": <utc timestamp>,
  "job_request_id": <customer assigned job id>,
  
  "request_processing_started_at": <utc timestamp>,
  "result_info": {
    "return_code": "PRIVACY_BUDGET_EXHAUSTED",
    "return_message": "com.google.aggregate.adtech.worker.exceptions.AggregationJobProcessException: Insufficient privacy budget for one or more aggregatable reports. No aggregatable report can appear in more than one aggregation job. Information related to reports that do not have budget can be found in the following file:
    File path: ags-privacy-budget-codelab/output-bucket/output-domain Filename: privacy budget exhausted debugging information <utc timestamp> \n com.google.aggregate.adtech.worker.aggregation.concurrent.ConcurrentAggregationProcessor.consumePrivacyBudgetUnits(ConcurrentAggregationProcessor.java:525) \n com.google.aggregate.adtech.worker.aggregation.concurrent.ConcurrentAggregationProcessor.process(ConcurrentAggregationProcessor.java:319) \n com.google.aggregate.adtech.worker.WorkerPullWorkService.run(WorkerPullWorkService.java:157)",
    "error_summary": {
      "error_counts": "",
      "error_messages": ""
    }
  }
}

गड़बड़ी को ठीक करने का तरीका

अपनी सार्वजनिक क्लाउड स्टोरेज बकेट में, privacy_budget_exhausted_debugging_information_<utc timestamp>.json आउटपुट ढूंढें और खोलें. इसे return_message में दिए गए पाथ <output_data_bucket_name>/<output_data_blob_prefix> पर देखा जा सकता है. उस JSON फ़ाइल में, filtering_id (डिफ़ॉल्ट रूप से 0) और relevant_shared_info प्रॉपर्टी की तुलना, एग्रीगेट की जा सकने वाली इनपुट रिपोर्ट shared_info से करें. मैच मिलने का मतलब है कि वे रिपोर्ट, तय किए गए बजट से ज़्यादा की हैं. इससे, टास्क पूरा नहीं हो पाता और आने वाले समय में उन्हें फ़िल्टर करना ज़रूरी हो जाता है. ध्यान दें कि मैच होने वाली रिपोर्ट का इस्तेमाल, अब भी किसी दूसरे फ़िल्टरिंग आईडी के साथ किया जा सकता है. अपनी बैच रिपोर्ट AVRO फ़ाइल से मैच होने वाली रिपोर्ट की पहचान करने और उन्हें हटाने के बाद, अपनी जॉब को फिर से चलाया जा सकता है.

यहां privacy_budget_exhausted_debugging_information_<utc timestamp>.json के आउटपुट का उदाहरण दिया गया है.

{
 "privacy_budget_exhausted_info" : {
   "aggregatable_input_budget_consumption_info" : [ {
     "aggregateable_input_budget_id" : {
       "filtering_id" : 0,
       "relevant_shared_info" : {
         "api" : "attribution-reporting",
         "attribution_destination" : "f246a4e6-dde9-46a5-a6b2-ea523b484d0a",
         "reporting_origin" : "foo.com",
         "scheduled_report_time" : 1738814400.000000000,
         "source_registration_time" : 1738713600.000000000,
         "version" : "0.1"
       }
     }
   }, {
       "aggregateable_input_budget_id" : {
       "filtering_id" : 0,
       "relevant_shared_info" : {
         "api" : "attribution-reporting",
         "attribution_destination" : "f246a4e6-dde9-46a5-a6b2-ea523b484d0a",
         "reporting_origin" : "foo.com",
         "scheduled_report_time" : 1738796400.000000000,
         "source_registration_time" : 1738713600.000000000,
         "version" : "0.1"
       }
     }
   } ]
 }
}

अगले चरण

देखें कि क्या किसी और को भी Privacy Sandbox के स्टेटस डैशबोर्ड या सार्वजनिक GitHub रिपॉज़िटरी पर, यह समस्या आ रही है या नहीं. अगर आपको एग्रीगेशन सेवा से जुड़ी समस्या का समाधान नहीं दिखता है, तो GitHub पर समस्या दर्ज करें या तकनीकी सहायता फ़ॉर्म सबमिट करें.