Idempotency کا مطلب ہے کہ کسی آپریشن کو کئی بار انجام دینے کا وہی اثر ہوتا ہے جو اسے ایک بار انجام دینے کا۔ یہ اس لیے اہم ہے کیونکہ نیٹ ورکس ناقابلِ اعتماد ہیں: جب کوئی client ایک request بھیجتا ہے اور response کبھی نہیں پہنچتا، تو یہ نہیں بتا سکتا کہ آیا server نے اسے پروسیس کیا۔ اگر یہ retry کرے، تو ایک غیر idempotent آپریشن دو بار چل سکتا ہے۔
مسئلہ
Client ──POST /payments {$100}──▶ Server (charges $100 ✓)
Client ◀────────X (timeout)────── Server (response lost)
Client ──POST /payments {$100}──▶ Server (charges $100 AGAIN ✗ → $200!)
، ، اور فطری طور پر idempotent ہیں، اس لیے انہیں retry کرنا محفوظ ہے۔ ہے — بالکل یہیں سے ڈپلیکیٹ charges اور ڈپلیکیٹ orders آتے ہیں۔
