{"record":{"id":"e643a19bfee84928","repo":"pinpoint-apm/pinpoint","slug":"e-getmessage-e643a1","errorCode":null,"errorMessage":"e.getMessage()","messagePattern":"e\\.getMessage\\(\\)","errorType":"http","errorClass":"ResponseStatusException","httpStatus":500,"severity":"error","filePath":"web/src/main/java/com/navercorp/pinpoint/web/authorization/controller/AdminController.java","lineNumber":78,"sourceCode":"\n    public AdminController(AdminService adminService,\n                           ApplicationFactory applicationFactory,\n                           ServiceModelResolver serviceModelResolver) {\n        this.adminService = Objects.requireNonNull(adminService, \"adminService\");\n        this.applicationFactory = Objects.requireNonNull(applicationFactory, \"applicationFactory\");\n        this.serviceModelResolver = Objects.requireNonNull(serviceModelResolver, \"serviceModelResolver\");\n    }\n\n    @Deprecated\n    @RequestMapping(value = \"/removeApplicationName\")\n    public String removeApplicationName(@RequestParam(\"applicationName\") @NotBlank String applicationName) {\n        logger.info(\"Removing application - applicationName: [{}]\", applicationName);\n        try {\n            this.adminService.removeApplicationName(applicationName);\n            return \"OK\";\n        } catch (Exception e) {\n            logger.error(\"error while removing applicationName\", e);\n            throw new ResponseStatusException(HttpStatus.INTERNAL_SERVER_ERROR, e.getMessage());\n        }\n    }\n\n    @DeleteMapping(value = \"/applications\")\n    public String removeApplication(@ServiceParam ServiceName serviceName,\n                                    @RequestParam(\"applicationName\") @NotBlank String applicationName,\n                                    @RequestParam(value = \"serviceTypeCode\", required = false) Integer serviceTypeCode,\n                                    @RequestParam(value = \"serviceTypeName\", required = false) String serviceTypeName) {\n        Service service = serviceModelResolver.getService(serviceName.getName());\n        Application application = getApplication(service, applicationName, serviceTypeCode, serviceTypeName);\n        if (application.getServiceType().equals(ServiceType.UNDEFINED)) {\n            throw new ResponseStatusException(HttpStatus.BAD_REQUEST, \"Undefined service type\");\n        }\n        logger.info(\"Removing application - application: {}\", application);\n        try {\n            this.adminService.removeApplication(application.getService(), application.getApplicationName(), application.getServiceTypeCode());\n            return \"OK\";\n        } catch (Exception e) {","sourceCodeStart":60,"sourceCodeEnd":96,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/web/src/main/java/com/navercorp/pinpoint/web/authorization/controller/AdminController.java#L60-L96","documentation":"AdminController.removeApplicationName wraps adminService.removeApplicationName in a broad try/catch and rethrows any exception as an HTTP 500 ResponseStatusException whose reason is the original exception's message. It is a generic passthrough: any failure while deleting the application's metadata from HBase surfaces as this 500, so the real cause must be read from the server log ('error while removing applicationName').","triggerScenarios":"DELETE/POST /admin/removeApplicationName failing for any reason inside adminService.removeApplicationName — HBase connection failures, table/put/delete errors, timeouts, or an exception thrown while scanning and deleting the application's rows.","commonSituations":"HBase region server down or throttling; application name never existed and the service throws; permission problems on the HBase tables; network interruption between Pinpoint Web and HBase; very large application data causing the delete to time out.","solutions":["Read the Pinpoint Web server log entry 'error while removing applicationName' to find the underlying exception and fix that root cause","Verify HBase connectivity and health from the Pinpoint Web host (zookeeper quorum, hbase client config)","Confirm the applicationName exists and is spelled correctly (service param + applicationName parameter)","Retry the delete after HBase recovers if it was a transient connection/timeout error"],"exampleFix":"// before — diagnosis only\nDELETE /admin/removeApplicationName?applicationName=MyApp  -> 500: <underlying message>\n// after — check server log, fix HBase connectivity, then retry\nDELETE /admin/removeApplicationName?applicationName=MyApp  -> 200 OK","handlingStrategy":"try-catch","validationCode":"if (!applicationName || applicationName.trim() === '') {\n  throw new Error('applicationName is required');\n}","typeGuard":null,"tryCatchPattern":"try {\n  await adminApi.removeApplicationName(applicationName);\n} catch (e) {\n  if (e.status === 500) {\n    // e.message is the passthrough cause; check server log 'error while removing applicationName'\n    logAndAlert(`removeApplicationName failed for ${applicationName}: ${e.message}`);\n  }\n  throw e;\n}","preventionTips":["Treat the 500 message as a passthrough and always correlate with the server log","Check HBase health before running bulk admin deletions","Verify the application exists before attempting removal","Retry only after confirming the failure was transient (connectivity/timeout)"],"tags":["hbase","admin","http-500","pass-through"],"backgroundTag":"database-write-failed","analyzedSha":"744c3d3075e595656abb1ae331ad2c0e4c9eb996","analyzedAt":"2026-09-07T18:48:45.289Z","contentChangedAt":"2026-09-07T18:48:45.289Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}