রেসকিউ পার্টি

ব্যবহারকারীরা তাদের ফোনের উপর নির্ভরশীল এবং সব সময় একটি সচল ডিভাইস চান। তবে, কখনও কখনও ডিভাইসগুলো রিবুট লুপে আটকে যায়, যার ফলে ব্যবহারকারীরা সাপোর্ট টিকেট বা ওয়ারেন্টি সংক্রান্ত অনুসন্ধান দাখিল করতে বাধ্য হন। এই প্রক্রিয়াটি ব্যবহারকারীদের জন্য হতাশাজনক এবং ডিভাইস নির্মাতা ও পরিষেবা প্রদানকারীদের জন্য ব্যয়বহুল।

অ্যান্ড্রয়েড ৮.০ (এপিআই লেভেল ২৬) এবং এর পরবর্তী সংস্করণগুলোতে এমন একটি ফিচার রয়েছে, যা সিস্টেমের মূল উপাদানগুলো ক্র্যাশ লুপে আটকে গেছে বলে শনাক্ত করলে একটি উদ্ধার প্রক্রিয়া চালু করে। এই সংকেত পেয়ে রেসকিউ পার্টি ফিচারটি ডিভাইসটিকে পুনরুদ্ধার করার জন্য ধাপে ধাপে বিভিন্ন পদক্ষেপ গ্রহণ করে। শেষ উপায় হিসেবে, রেসকিউ পার্টি ডিভাইসটিকে রিকভারি মোডে রিবুট করে এবং ব্যবহারকারীকে ফ্যাক্টরি রিসেট করার জন্য অনুরোধ জানায়।

বাস্তবায়ন

রেসকিউ পার্টি ডিফল্টরূপে সক্রিয় থাকে এবং এর বাস্তবায়ন /services/core/java/com/android/server/RescueParty.java ফাইলে থাকে। রেসকিউ পার্টি বুট এবং ক্র্যাশ ইভেন্ট সম্পর্কে তথ্য গ্রহণ করে এবং নিম্নলিখিত ক্ষেত্রে চালু হয়:

  • system_server পাঁচ মিনিটে পাঁচবারের বেশি রিস্টার্ট হয়।
  • একটি স্থায়ী সিস্টেম অ্যাপ ৩০ সেকেন্ডে পাঁচবারের বেশি ক্র্যাশ করে।

যখন রেসকিউ পার্টি এই পরিস্থিতিগুলোর কোনো একটি শনাক্ত করে, তখন এটি পরবর্তী উদ্ধার স্তরে উন্নীত হয়, সেই স্তরের সাথে যুক্ত কাজটি সম্পন্ন করে এবং ডিভাইসটি পুনরুদ্ধার হয় কিনা তা দেখার জন্য সেটিকে এগিয়ে যেতে দেয়। প্রতিটি স্তর যা কিছু পরিষ্কার বা রিসেট করে, তাতে ক্রমান্বয়ে আরও কঠোর হয়। চূড়ান্ত স্তরটি ব্যবহারকারীকে ডিভাইসটি ফ্যাক্টরি রিসেট করার জন্য অনুরোধ করে।

রেসকিউ পার্টির জন্য কোনো বিশেষ হার্ডওয়্যার সাপোর্টের প্রয়োজন হয় না। যদি এটি প্রয়োগ করা হয়, তবে ডিভাইসের রিকভারি সিস্টেমকে অবশ্যই --prompt_and_wipe_data কমান্ডে সাড়া দিতে হবে এবং ডিভাইসটিতে ব্যবহারকারীদের ডেটা মুছে ফেলার বিষয়টি নিশ্চিত করার জন্য একটি উপায় থাকতে হবে। রিকভারি সিস্টেমটিতে ব্যবহারকারীকে তাদের ডিভাইসটি পুনরায় বুট করার চেষ্টা করার বিকল্পও থাকা উচিত।

যেহেতু প্রতিটি রেসকিউ লেভেলের কারণে একটি ডিভাইস পুনরায় সচল হতে পাঁচ মিনিট পর্যন্ত সময় লাগতে পারে, তাই ডিভাইস প্রস্তুতকারকদের কাস্টম রেসকিউ লেভেল যোগ করা উচিত নয়। একটি অচল ডিভাইস নিয়ে দীর্ঘ সময় কাটানোর ফলে ব্যবহারকারীরা তাদের ডিভাইসটি নিজে থেকে পুনরুদ্ধার করার পরিবর্তে সাপোর্ট বা ওয়ারেন্টির জন্য অনুসন্ধান শুরু করার সম্ভাবনা বেড়ে যায়।

বৈধতা

ডিভাইসটিতে একটি সক্রিয় ইউএসবি ডেটা সংযোগ থাকলে রেসকিউ পার্টি সমস্ত রেসকিউ ইভেন্ট দমন করে, কারণ এটি একটি জোরালো সংকেত যে কেউ ডিভাইসটি ডিবাগ করছে।

এই দমনকে অগ্রাহ্য করতে, চালান:

adb shell setprop persist.sys.enable_rescue 1

সেখান থেকে, একটি সিস্টেম বা UI ক্র্যাশ লুপ চালু করুন:

  • নিম্ন-স্তরের system_server ক্র্যাশ লুপ চালু করতে, চালান:

    adb shell setprop debug.crash_system 1
    adb shell stop
    adb shell start
  • মধ্যবর্তী স্তরের SystemUI ক্র্যাশ লুপ চালু করতে, চালান:

    adb shell setprop debug.crash_sysui 1

উভয় ক্র্যাশ লুপই রেসকিউ লজিক শুরু করে। রেসকিউ পার্টি পরবর্তী পরিদর্শন এবং ডিবাগিংয়ের জন্য সমস্ত রেসকিউ অপারেশন /data/system/uiderrors.txt এ সংরক্ষিত স্থায়ী প্যাকেজম্যানেজার লগে লগ করে রাখে। বাগ রিপোর্টেও প্যাকেজ সতর্কীকরণ বার্তা বিভাগের অধীনে এই স্থায়ী লগগুলো অন্তর্ভুক্ত থাকে।