{"record":{"id":"e680b43aa2065217","repo":"microg/GmsCore","slug":"request-id-not-set","errorCode":null,"errorMessage":"Request ID not set.","messagePattern":"Request ID not set\\.","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"play-services-location/src/main/java/com/google/android/gms/location/Geofence.java","lineNumber":112,"sourceCode":"    class Builder {\n        private int regionType = -1;\n        private double latitude;\n        private double longitude;\n        private float radius;\n        private long expirationTime = Long.MIN_VALUE;\n        private int loiteringDelay = -1;\n        private int notificationResponsiveness;\n        private String requestId;\n        private @TransitionTypes int transitionTypes;\n\n        /**\n         * Creates a geofence object.\n         *\n         * @throws IllegalArgumentException if any parameters are not set or out of range\n         */\n        public Geofence build() throws IllegalArgumentException {\n            if (requestId == null) {\n                throw new IllegalArgumentException(\"Request ID not set.\");\n            } else if (transitionTypes == 0) {\n                throw new IllegalArgumentException(\"Transition types not set.\");\n            } else if ((transitionTypes & GEOFENCE_TRANSITION_DWELL) > 0 && loiteringDelay < 0) {\n                throw new IllegalArgumentException(\"Non-negative loitering delay needs to be set when transition types include GEOFENCE_TRANSITION_DWELLING.\");\n            } else if (expirationTime == Long.MIN_VALUE) {\n                throw new IllegalArgumentException(\"Expiration not set.\");\n            } else if (regionType == -1) {\n                throw new IllegalArgumentException(\"Geofence region not set.\");\n            } else if (notificationResponsiveness < 0) {\n                throw new IllegalArgumentException(\"Notification responsiveness should be nonnegative.\");\n            } else {\n                return new ParcelableGeofence(requestId, expirationTime, regionType, latitude, longitude, radius, transitionTypes, notificationResponsiveness, loiteringDelay);\n            }\n        }\n\n        /**\n         * Sets the region of this geofence. The geofence represents a circular area on a flat, horizontal plane.\n         *","sourceCodeStart":94,"sourceCodeEnd":130,"githubUrl":"https://github.com/microg/GmsCore/blob/157c9d86ac46c195a86c2f15ab55c84036223f95/play-services-location/src/main/java/com/google/android/gms/location/Geofence.java#L94-L130","documentation":"Geofence.Builder.build() assembles the Geofence and validates all required fields; it throws IllegalArgumentException when setRequestId(String) was never called, so the request ID is missing. This guard is part of build()'s completeness validation of required parameters.","triggerScenarios":"Thrown at play-services-location/src/main/java/com/google/android/gms/location/Geofence.java:112 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Call setRequestId(...) before build()","Default the request id to a stable app-defined identifier when none is supplied"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"157c9d86ac46c195a86c2f15ab55c84036223f95","analyzedAt":"2026-09-06T17:27:33.892Z","contentChangedAt":"2026-09-06T17:27:33.892Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}