𝗬𝗼𝘂𝗿 𝗔𝗽𝗲𝘅 𝗠𝗶𝗴𝗵𝘁 𝗥𝗲𝘁𝘂𝗿𝗻 𝗙𝗲𝘄𝗲𝗿 𝗥𝗲𝗰𝗼𝗿𝗱𝘀 𝗶𝗻 𝗦𝘂𝗺𝗺𝗲𝗿 '𝟮𝟲
Salesforce Summer '26 (API v67.0) Apexలో ఒక ప్రధాన మార్పును తీసుకువస్తోంది. ఈ మార్పు ఎటువంటి ఎర్రర్ (error) చూపించకుండానే మీ కోడ్ ఫలితాలను మార్చవచ్చు.
ఏళ్ల తరబడి, Apex డిఫాల్ట్గా system modeలో నడిచేది. అంటే SOQL, SOSL మరియు DML యూజర్ పర్మిషన్లు (user permissions) మరియు షేరింగ్ రూల్స్ను (sharing rules) పట్టించుకునేవి కావు. దీనివల్ల చూడకూడదు అనుకున్న డేటాను కూడా మీ కోడ్ యూజర్లకు చూపించే అవకాశం ఉండేది.
API v67.0లో, ఈ డిఫాల్ట్ మారుతుంది. డేటాబేస్ ఆపరేషన్లు ఇప్పుడు user modeలో నడుస్తాయి.
v67.0లో ఏమేమి మారుతాయి:
• SOQL, SOSL మరియు DML డిఫాల్ట్గా యూజర్ పర్మిషన్లు మరియు షేరింగ్ రూల్స్ను అమలు చేస్తాయి. • షేరింగ్ డిక్లరేషన్ (sharing declaration) లేని క్లాస్లు ఇప్పుడు డిఫాల్ట్గా "with sharing"గా మారుతాయి. • "WITH SECURITY_ENFORCED" తొలగించబడింది. దానికి బదులుగా మీరు "WITH USER_MODE"ని ఉపయోగించాలి. • Triggers ఎల్లప్పుడూ system modeలోనే నడుస్తాయి.
ఈ మార్పు మీ క్లాస్ యొక్క API వెర్షన్తో ముడిపడి ఉంటుంది. మీరు వాటిని 67.0కి అప్గ్రేడ్ చేసే వరకు మీ పాత క్లాస్లు యథాతథంగా ఉంటాయి. ఇది మైగ్రేషన్ను (migration) మీరు నియంత్రించుకోవడానికి వీలు కల్పిస్తుంది.
ఈ నిశ్శబ్ద సమస్యల (silent issues) పట్ల జాగ్రత్తగా ఉండండి:
- క్వెరీలలో తక్కువ రికార్డులు: యూజర్కు యాక్సెస్ లేకపోవడం వల్ల, ఒక క్వెరీ 500 రోలకు బదులుగా 40 రోలను మాత్రమే తిరిగి ఇవ్వవచ్చు. దీనివల్ల తప్పు టోటల్స్ మరియు తప్పుడు రిపోర్ట్లు వచ్చే అవకాశం ఉంది.
- కంపైలేషన్ ఎర్రర్స్: కొత్త వెర్షన్లో "WITH SECURITY_ENFORCED" కంపైల్ అవ్వదు.
- ఇంటిగ్రేషన్ వైఫల్యాలు: ఆటోమేటెడ్ జాబ్స్ కోసం అవసరమైన డేటాపై ఇంటిగ్రేషన్ యూజర్లు యాక్సెస్ కోల్పోయే అవకాశం ఉంది.
- షేరింగ్ మార్పులు: షేరింగ్ డిక్లరేషన్ లేని క్లాస్లు ఇప్పుడు షేరింగ్ను అమలు చేస్తాయి.
సురక్షితంగా మైగ్రేట్ చేయడం ఎలా:
- మీ కోడ్ను తనిఖీ చేయండి (Inventory): "WITH SECURITY_ENFORCED" మరియు షేరింగ్ డిక్లరేషన్లు లేని క్లాస్ల కోసం వెతకండి.
- సాండ్బాక్స్లో (sandbox) పరీక్షించండి: ముందుగా కంట్రోలర్లు (controllers) మరియు REST ఎండ్పాయింట్లు (REST endpoints) వంటి అధిక రిస్క్ ఉన్న క్లాస్లను అప్డేట్ చేయండి.
- System.runAs()ని ఉపయోగించండి: కేవలం టెస్ట్లు పాస్ అయ్యాయని నమ్మకండి. డేటా విజిబిలిటీని (data visibility) తనిఖీ చేయడానికి పరిమిత యాక్సెస్ ఉన్న యూజర్లతో పరీక్షించండి.
- స్పష్టమైన ఉద్దేశంతో ఉండండి: మీకు ఏదైనా ప్రత్యేక కారణం ఉన్నప్పుడు మాత్రమే "SYSTEM_MODE" లేదా "without sharing"ని ఉపయోగించండి.
ఈ మార్పులను ఇప్పుడే చేయడం వల్ల భవిష్యత్తులో ప్రొడక్షన్ (production) లో నిశ్శబ్ద బగ్లు (silent bugs) రాకుండా నిరోధించవచ్చు.
Optional learning community: https://t.me/GyaanSetuAi