SORMAS-Project icon indicating copy to clipboard operation
SORMAS-Project copied to clipboard

#9666 - Improve visit deletion performance

Open MateStrysewske opened this issue 3 years ago • 2 comments

Fixes #9666

MateStrysewske avatar Jun 29 '22 09:06 MateStrysewske

The log still shows - after a call with a list parameter - one-by-one calls to VisitService.deletePersonVisits:

$ grep VisitService.deletePersonVisits configurations/payara/sormas/logs/application.debug
2022-06-29 12:02:02,771 TRACE   __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Started: VisitService.deletePersonVisits with parameters '[[bb0caa2a-c825-440f-9bd9-11c77d94e27d, 47dea767-60f3-47f3-9fcf-8c2e4d7036b2, ef90dd1d-cfc5-4c13-94bb-390a5a720d44, 82898e7e-d40d-4535-b570-11631403fb77, 0a982a38-cd04-4d87-8498-f7036c9cfcf8, ea1d509a-6731-438f-bf79-77c7daf26f39, 51cf4d2f-be8e-4f1f-8e0f-9626c9850a03, 909ff545-7f8c-4008-ba3e-9d8d2bcac3cb, 504244ee-d9c7-4d26-9c53-e6e498c49c37, a8069463-757b-46b1-a578-5532a1058ddc, 842c9294-d9d3-4dcb-969d-4ff42e411475, daf2dc1a-c66a-49be-9e5a-494a3f3a6756, 4a9d9572-97fd-4a0c-afb4-87ed0140785e, d5337cb1-5df5-4f36-9168-4e05643252f8, 8075a223-b0ce-436b-9292-d0344aa4d2d0, 15368e52-4530-44a4-98f3-6fe3a4982bf4, ce1516da-5f2b-4290-a39f-d9abc72d8320, 2797a7b2-357c-4b03-958c-f360aef29aa0, e9fc822b-8956-40d5-acad-1da8ab05e974, f705710d-eed4-4b3c-a779-cd7b696d1215, d721a24a-b9fa-4dcb-bbbf-90421a1a71e5, 271362b9-9a6d-43b2-8cbc-49b59f77f8b6, 5d3bf0db-419b-4e3b-a3b1-79a0ceaec728, fb109564-d519-4912-ae70-dddb535ca3f2, 07a165f6-5cc0-4bfc-acd3-e3204c62f329, eef2add7-ad79-4f01-a045-bc43c69b40ff, 4da84175-1a09-425a-acfd-d12e3e58d1a2, 13a40bd3-f6aa-47e0-8ab4-d6e579882d35, ffd398f0-c894-404a-ba0e-905ad77f2242, ff1a0d3a-230f-4668-9336-0240c7fdc45b, 1e8cc0a0-e648-409d-8c79-79d24c14e549, 7d16402a-2125-4691-a6c0-bd69280e7d46, 70731009-e725-4425-878a-362573d95279, e382c174-4f73-47ec-9617-f1add5e2669f, 8b6c2d84-8254-42b5-858a-77b4c5c56e6a, 45957c57-7d68-4857-ad94-31d1d8d38cf4, f6bc1352-d365-497b-be0a-7acef88125d4, 7f7ac24f-44c0-4999-af92-4ca4f4aaeae7, 1c89433f-21b1-4efe-bb9d-57f84683b8c2, 59fad38b-68fc-4642-9c67-1c32b59c3619, 0d239058-45f4-4a7d-9b70-9f1583a7492f, a8f30228-c037-4654-bc2f-671f4e0f4def, 0072d3f3-d4a6-48cc-b35c-8eb2770500f0, b87df9ed-d091-4f96-b91c-3a2d8e771666, 767feeca-f241-4938-b0eb-96bb8e9bf624, 53483fbf-63ac-465d-ab0c-6d72e4f91af3, 2617f493-a6eb-44dd-9936-43d806b74b5a, 80a83c27-0e38-4257-a872-35f8565b96dd, bd653d62-cbcb-4170-a534-68a8fd99afb6, 3697144f-e64e-48f0-8a95-66d6dc396835, 529cb69c-35f5-4b48-b66f-ce8e7ffa0dd1, e1fb8711-7510-43e4-ac18-0b97dfcf5eb3, 6ae121cc-f3f4-4bee-90c7-3ca64c316fb9, 42415877-ccef-4fed-9c12-472dca027286, 03275415-65e4-4871-8f52-ff229a957408, 1902c0f9-c896-4941-a1cc-547d88a3698c, 76a725d6-e81f-417d-8fd7-a65050c1e982, 411004b5-3def-4402-8a32-dc73d975930c, 7b7dba63-2ec8-42cc-89da-73179e0adc6c, 5f275159-f729-44ce-9c8e-e62a21715068, cb4e7f5b-ffce-4821-97b9-bce60aa3013c, bc7a8e5a-b0ab-433d-b322-559079f961f2, 5ace7bcb-d65b-4966-baa0-13111d5b2652, 4257ee9c-fdb9-4c16-ba88-96125610da46, 611d1d69-d471-43b6-9eef-61c599353d1b, 52048515-3c60-4220-a89e-dbbd35db9674, d08f51c8-a1a4-4c4f-ade8-2d6078b2d096, 36ea95bf-58c1-4af7-8692-fea5f1e3f5d7, e3cca5ce-b0b7-4fe5-aeb9-ad31089f0e50, 98e9661c-9f01-4c22-98db-4f731d08752f, 38add661-e757-4343-a3fb-e0d5783ee52c, 2747b9ef-cf3e-4480-8abe-dfa9c09d2c1b, 30e97184-9249-4951-b5e1-25a9fcbbaa55, 8f4de3c4-bc82-4c47-b0d3-c46bbfa9e8fe, 8d284850-3a99-4b43-8e5d-23943532b117, 57184765-b683-46da-b322-cb3e84d24c2c, 27d10fd5-6c64-4291-ae85-099590472315, 37599481-d817-46cb-89d9-d21ad3563b84, 70c83241-f965-4dbe-bcf9-2624fa6b2758, c30751a1-0003-4805-abe7-28bb63fc71d8, 473430e4-54b1-4f5f-8431-e3db42cbef45, d094615f-701c-4d2e-80ea-992e7a8960c9, eedf0b66-e977-44f3-b4de-eb30d6f45c21, 8512cbec-5de1-4b9f-9164-93e9d2e6d23a, 2bb00524-fb35-4aa4-a2a7-de6a87e358d8, 2e4b1f56-c1de-4ecf-a925-c408eb8af449, 91f6ce14-b06c-4cc1-b7b7-56616e9f139e, 01bd9635-02ab-4e04-af0d-d40312f815c2, bd087663-f058-4b88-bd0d-b2e9ef850675, a008aebe-dce8-4ee7-8df5-0750d3a1241a, 3def3b2c-e7de-49cf-b597-82ce2f11dfae, 9527cd8e-5f6c-483b-a671-3ac8043d7209, 9314a4fd-dc6f-4727-a7b4-5366a96f41dd, 78ebe520-0092-41fd-8e66-56f1010388df, a9b59a48-03a9-4883-83ce-29d682975e5f, 44746268-b67c-494d-80d6-1549592df4bd, e806e72a-5e88-4863-af78-073913842c8e, e7f44b0b-1c73-433f-b276-ebd1e6bf8ccb, 9d3b242e-1129-412f-bbd8-d37df3111e5f, e6c5d04c-f6c2-4059-ac75-e9232c282079, b1382a5d-bb6d-4d1c-96d1-d907617e1ea9, 27a74d3b-712e-46eb-8262-605a15f950b6, e886f78e-edfd-4964-9bc5-e3604d651a77, a1adab43-3a36-447c-b777-5ed552f8190a, d84399a4-2e44-4c1c-82f6-f8f3401db4e6, 44bb7627-9997-40b0-a094-40bc54a607e0, 42478a04-7065-4bd2-9b7d-f551404a221c, b7732f69-8fd4-4d6a-bd27-184978507fb7, 0538b85b-ade9-4368-b474-6025c447fed4, 388e5e05-4c4d-49aa-803b-574d68cf8573, 9f369efd-ec26-46f6-a643-90f8fd0599b8, 06145966-61c8-4293-97d8-f3553bafd643, 6e69d6d6-0005-474d-bc44-8b6e3ebb4a25, e839aa62-a3e9-49b0-81c8-6d77306475cd, 33839ff7-8d1e-4d97-8af0-5f937f35162d, 0e93ae82-cbad-444f-b287-a22de1469a6c, 149ee3aa-f6e6-40c2-b9b8-b3351da5aafb, eb940392-97b2-4d0b-8194-5b9df480b1c0, 3cced3bf-6064-4d0d-a646-395292bb27ee, aef660ef-5d4b-4b78-836e-7ef74424cbca, 7774573e-1056-462f-a19a-cbefb43850f1, 53e370d0-65e4-4091-b0db-ce01cb303877, 262fbf8b-13af-488d-8dd8-9a3a342a45b1, c38bf5f9-41ee-46d9-8c67-ee4820453803, d6ab982d-26df-401b-87fe-6abebed71e76, e009e9d2-27ff-4cca-ba29-0eb4c6b420e2, 4fed26bf-bf82-4a2b-892b-b1b15720daec, 49c6aad9-a4ad-47db-bef2-3b64ae8278bb, 3667482d-bbf8-44b5-9872-56dd629afc28, a6908fbc-8807-4b56-9443-c1252fa077a8, 81fbb6fa-a697-4039-92b0-1aff22b272a0, 4ebbaa52-c90f-4c68-b3ab-62baeecc01f9, 86eaeffd-b8ae-442a-8c87-b4840683cdf5, b0607f3a-57be-463f-9b79-c4e1c50d5ce4, 24f0b332-b33a-4850-8f33-71b4f3eda042, dc947417-bd10-44b3-aa6d-80708a8f1a8e, e8d4bc4e-f1e8-4c8d-949e-b4f4e2d7ae75, 2a76f57f-a594-40e6-b52e-57c4f98aeb7a, e714540d-fe38-4092-bdc1-236c011ab6f7, 0031cfb1-7e7f-4a06-b427-fa5fce93b7a9, 76ea8021-036e-4c51-be04-df9a824de6f3, e27d19ad-36bc-43a6-b44a-c5d561739f83, 629a8407-092f-4a11-b17d-bb2fc39ad81f, f65f8b32-2b4c-4465-ade5-878d0442af79, add1a9b9-65cf-4617-8ea6-3cf5e26260d1, 3cc1e50c-bcb9-4611-b821-765d648b4fe4, 488a5250-38b5-4181-96d8-42a9070161dc, a0f876ec-fcc8-47c8-9ae2-16e6a449b455, e7e6c01e-e216-4d92-ad08-bf296a73a70c, ec139fcc-be15-48a2-976c-dbec7f18fd43, e3b38b65-218e-409e-974f-3a59bd5f5321, 381f43fc-6a9d-49ac-afea-a5f1a1f89146, a4f4c87d-c9d8-4553-b7e6-a71f3c75b23c, ca30bd11-649f-4c67-bd6e-471a211c41f7, fe487268-c4ae-4637-86b5-5e9d9e7a6c78, 7c0e55e0-c0d4-47ec-9590-0886074f9d36, 5a62fd73-ed01-47ea-b19a-77ea143b4b49, 8a0ef378-5adb-4404-9bbd-782b4734b87d, 96d6584f-2a96-4cea-9530-744a019022c1, 932a6641-b508-4280-843f-cc82ff3959fb, 43e6e3d3-9c71-4f19-ad7f-2b9b6e7df1b3, e2d1bb14-a7d9-426b-9d67-53c219bd3d01, 6fafd8da-0806-4fbb-b385-008ca1231fff, b429b618-0e63-42e2-815e-9d04419c85b0, 24d5373d-9e48-450e-835a-48159ff06104, 659798ba-db1a-4745-b26b-49686ad1b86c, d6e29760-e1db-446c-9689-29f4005903fe, d7a50d4d-286f-493c-a669-2828ee45b329, ac6dfe11-7fd4-462f-a966-f09aadf311e3, 636ce3f7-3e63-4920-a016-5ffb1352f195, 64ab93e7-534f-4af1-bfed-1437a007c491, 1e313acc-52cc-4a13-9c50-8aa431beaa81, 6942f329-1c11-4ed5-8258-4641a45e6f4e, 9cb1f7ff-fb45-4c76-8eda-c3e592ffad11, bb44dc45-3e00-4061-a49a-5af2850197a3, 66a56daa-9ae8-439c-940d-489c692cb6ad, 337f9bdd-c35d-4d3e-93ad-5decee3df24b, ea0c2fb4-efd4-4786-90db-7f83448fcd32, 1c87b602-4f9e-48c3-abd3-c23617862b03, 6aa3ecd6-2798-45d8-adf3-90ac7c2eb330, e3437316-84f9-4647-9710-cd0cfa91bf3b, b8eeeea6-c5a4-4185-af01-fca63ec3e218, 003d50a1-4c8b-416e-aa51-90cc6d24c777, 523faf8d-bb13-48c6-a801-7ec349f446cc, 20d12e28-beef-48fb-94c8-bd66e42bf332, 07168654-dd48-48b1-a36f-ee54884a103f, 8d571308-20a2-44c1-9f2e-eacc67266586, a5daff5e-a246-4c95-b86b-329e6dbefe5f, baa1fb63-1a92-4820-9d95-587bed93c136, 43b9bcf9-0d25-4fc4-b2bd-0c27e684c8ff, 7dd721fb-059f-4815-8d02-303dea6e80e2, cb93bcb1-98c0-4724-a4b6-80d79dae185a, 9bb400b1-6232-49e1-b353-01bffa065cc9, 9e70f4e1-033d-43d8-8838-cfb36a88738e, ad956526-f5ae-4810-9d5e-92fbb021a259, 1bb23227-5f69-4514-a588-fc00aa53a8d5, a1394e46-3666-48f8-90fc-fd48dc000fa1, efaf9f9f-46d8-4d9d-902e-57a5b4866871, d0e19b56-9be2-4247-8050-cbe99620b7b4, 784825f9-368e-41f6-be85-5320b03f0ccf]]'
2022-06-29 12:02:02,825 DEBUG   __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 53 ms: VisitService.deletePersonVisits
2022-06-29 12:02:03,238 TRACE   __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Started: VisitService.deletePersonVisits with parameters '[[bb0caa2a-c825-440f-9bd9-11c77d94e27d]]'
2022-06-29 12:02:03,243 DEBUG   __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: VisitService.deletePersonVisits
2022-06-29 12:02:04,177 TRACE   __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Started: VisitService.deletePersonVisits with parameters '[[47dea767-60f3-47f3-9fcf-8c2e4d7036b2]]'
2022-06-29 12:02:04,185 DEBUG   __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 7 ms: VisitService.deletePersonVisits
2022-06-29 12:02:04,889 TRACE   __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Started: VisitService.deletePersonVisits with parameters '[[ef90dd1d-cfc5-4c13-94bb-390a5a720d44]]'
2022-06-29 12:02:04,893 DEBUG   __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: VisitService.deletePersonVisits
2022-06-29 12:02:05,508 TRACE   __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Started: VisitService.deletePersonVisits with parameters '[[82898e7e-d40d-4535-b570-11631403fb77]]'
2022-06-29 12:02:05,514 DEBUG   __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: VisitService.deletePersonVisits
2022-06-29 12:02:06,182 TRACE   __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Started: VisitService.deletePersonVisits with parameters '[[0a982a38-cd04-4d87-8498-f7036c9cfcf8]]'
2022-06-29 12:02:06,187 DEBUG   __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: VisitService.deletePersonVisits
2022-06-29 12:02:06,825 TRACE   __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Started: VisitService.deletePersonVisits with parameters '[[ea1d509a-6731-438f-bf79-77c7daf26f39]]'
2022-06-29 12:02:06,828 DEBUG   __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: VisitService.deletePersonVisits
2022-06-29 12:02:07,283 TRACE   __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Started: VisitService.deletePersonVisits with parameters '[[51cf4d2f-be8e-4f1f-8e0f-9626c9850a03]]'
2022-06-29 12:02:07,285 DEBUG   __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: VisitService.deletePersonVisits
2022-06-29 12:02:07,726 TRACE   __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Started: VisitService.deletePersonVisits with parameters '[[909ff545-7f8c-4008-ba3e-9d8d2bcac3cb]]'
2022-06-29 12:02:07,729 DEBUG   __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: VisitService.deletePersonVisits
2022-06-29 12:02:08,168 TRACE   __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Started: VisitService.deletePersonVisits with parameters '[[504244ee-d9c7-4d26-9c53-e6e498c49c37]]'
2022-06-29 12:02:08,171 DEBUG   __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: VisitService.deletePersonVisits
2022-06-29 12:02:08,572 TRACE   __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Started: VisitService.deletePersonVisits with parameters '[[a8069463-757b-46b1-a578-5532a1058ddc]]'

The problem might be in the implementation of deletePermanentByUuids in BaseAdoService which does a somewhat unfortunate mapping of a list of Uuids to individual calls to deletePermanent (wherever it is implemented) preceded by a getByUuid. This method is called from PersonService.deletePermanentByUuids.

	@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
	public void deletePermanentByUuids(List<String> uuids) {
		uuids.forEach(uuid -> deletePermanent(getByUuid(uuid)));
	}

Setting a breakpoint in VisitService.deletePersonVisits (called with a Uuid list of size 1 here), the stacktrace confirms this assumption:

deletePersonVisits:238, VisitService (de.symeda.sormas.backend.visit)
handleValidationConstraintViolation:34, ValidationConstraintViolationInterceptor (de.symeda.sormas.backend.util)
logInvokeDuration:47, PerformanceLoggingInterceptor (de.symeda.sormas.backend.util)
logAudit:81, AuditLoggerInterceptor (de.symeda.sormas.backend.audit)
deletePersonVisits:-1, __EJB31_Generated__VisitService__Intf____Bean__ (de.symeda.sormas.backend.visit)
deletePermanent:1003, PersonService (de.symeda.sormas.backend.person)
deletePermanent:124, PersonService (de.symeda.sormas.backend.person)
lambda$deletePermanentByUuids$2:368, BaseAdoService (de.symeda.sormas.backend.common)
accept:-1, 372783093 (de.symeda.sormas.backend.common.BaseAdoService$$Lambda$2296)
deletePermanentByUuids:368, BaseAdoService (de.symeda.sormas.backend.common)
deletePermanentByUuids:1012, PersonService (de.symeda.sormas.backend.person)
handleValidationConstraintViolation:34, ValidationConstraintViolationInterceptor (de.symeda.sormas.backend.util)
logInvokeDuration:47, PerformanceLoggingInterceptor (de.symeda.sormas.backend.util)
logAudit:81, AuditLoggerInterceptor (de.symeda.sormas.backend.audit)
deletePermanentByUuids:-1, __EJB31_Generated__PersonService__Intf____Bean__ (de.symeda.sormas.backend.person)
lambda$executeAutomaticDeletion$4:92, CoreEntityDeletionService (de.symeda.sormas.backend.deletionconfiguration)
accept:-1, 1644282265 (de.symeda.sormas.backend.deletionconfiguration.CoreEntityDeletionService$$Lambda$2295)
executeBatched:38, IterableHelper (de.symeda.sormas.backend.util)
executeAutomaticDeletion:92, CoreEntityDeletionService (de.symeda.sormas.backend.deletionconfiguration)
handleValidationConstraintViolation:34, ValidationConstraintViolationInterceptor (de.symeda.sormas.backend.util)
logInvokeDuration:47, PerformanceLoggingInterceptor (de.symeda.sormas.backend.util)
logAudit:81, AuditLoggerInterceptor (de.symeda.sormas.backend.audit)
executeAutomaticDeletion:-1, __EJB31_Generated__CoreEntityDeletionService__Intf____Bean__ (de.symeda.sormas.backend.deletionconfiguration)
deleteExpiredEntities:222, CronService (de.symeda.sormas.backend.common)

A more concise exract from this stacktrace:

deletePersonVisits:238, VisitService (de.symeda.sormas.backend.visit)
deletePersonVisits:-1, $Proxy674 (com.sun.proxy)
deletePersonVisits:-1, __EJB31_Generated__VisitService__Intf____Bean__ (de.symeda.sormas.backend.visit)
deletePermanent:1003, PersonService (de.symeda.sormas.backend.person)
deletePermanent:124, PersonService (de.symeda.sormas.backend.person)
deletePermanentByUuids:368, BaseAdoService (de.symeda.sormas.backend.common)
deletePermanentByUuids:1012, PersonService (de.symeda.sormas.backend.person)
deletePermanentByUuids:-1, $Proxy635 (com.sun.proxy)
deletePermanentByUuids:-1, __EJB31_Generated__PersonService__Intf____Bean__ (de.symeda.sormas.backend.person)
deleteExpiredEntities:222, CronService (de.symeda.sormas.backend.common)

syntakker avatar Jun 29 '22 10:06 syntakker

Tested at 7aaefb5.

Exception in PersonService.deletePermanentByUuids: PSQLException: ERROR: update or delete on table "person" violates foreign key constraint "fk_personcontactdetail_person_id" on table "personcontactdetail"

Full stacktrace:

[2022-06-30T01:55:01.201+0200] [Payara 5.2021.10] [WARNING] [] [javax.enterprise.ejb.container] [tid: _ThreadID=243 _ThreadName=__ejb-thread-pool13] [timeMillis: 1656546901201] [levelValue: 900] [[
  
javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean: javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: could not execute statement
        at com.sun.ejb.containers.EJBContainerTransactionManager.checkExceptionClientTx(EJBContainerTransactionManager.java:615)
        at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:485)
        at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4601)
        at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2134)
        at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2104)
        at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:220)
        at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:90)
        at com.sun.proxy.$Proxy476.deletePermanentByUuids(Unknown Source)
        at de.symeda.sormas.backend.person.__EJB31_Generated__PersonService__Intf____Bean__.deletePermanentByUuids(Unknown Source)
        at de.symeda.sormas.backend.deletionconfiguration.CoreEntityDeletionService.lambda$executeAutomaticDeletion$4(CoreEntityDeletionService.java:92)
        at de.symeda.sormas.backend.util.IterableHelper.executeBatched(IterableHelper.java:38)
        at de.symeda.sormas.backend.deletionconfiguration.CoreEntityDeletionService.executeAutomaticDeletion(CoreEntityDeletionService.java:92)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:588)
        at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:408)
        at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4835)
        at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:665)
        at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:834)
        at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:615)
        at de.symeda.sormas.backend.util.ValidationConstraintViolationInterceptor.handleValidationConstraintViolation(ValidationConstraintViolationInterceptor.java:34)
        at jdk.internal.reflect.GeneratedMethodAccessor246.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:888)
        at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:833)
        at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:615)
        at de.symeda.sormas.backend.util.PerformanceLoggingInterceptor.logInvokeDuration(PerformanceLoggingInterceptor.java:47)
        at jdk.internal.reflect.GeneratedMethodAccessor245.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:888)
        at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:833)
        at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:615)
        at de.symeda.sormas.backend.audit.AuditLoggerInterceptor.logAudit(AuditLoggerInterceptor.java:81)
        at jdk.internal.reflect.GeneratedMethodAccessor244.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:888)
        at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:833)
        at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:615)
        at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163)
        at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:140)
        at jdk.internal.reflect.GeneratedMethodAccessor243.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:888)
        at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:833)
        at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:615)
        at org.jboss.weld.module.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:72)
        at org.jboss.weld.module.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52)
        at jdk.internal.reflect.GeneratedMethodAccessor242.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:888)
        at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:833)
        at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:375)
        at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4807)
        at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4795)
        at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:212)
        at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:90)
        at com.sun.proxy.$Proxy395.executeAutomaticDeletion(Unknown Source)
        at de.symeda.sormas.backend.deletionconfiguration.__EJB31_Generated__CoreEntityDeletionService__Intf____Bean__.executeAutomaticDeletion(Unknown Source)
        at de.symeda.sormas.backend.common.CronService.deleteExpiredEntities(CronService.java:222)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:588)
        at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:408)
        at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4835)
        at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:665)
        at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:834)
        at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:615)
        at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163)
        at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundTimeout(SystemInterceptorProxy.java:145)
        at jdk.internal.reflect.GeneratedMethodAccessor436.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:888)
        at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:833)
        at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:615)
        at org.jboss.weld.module.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:81)
        at org.jboss.weld.module.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52)
        at jdk.internal.reflect.GeneratedMethodAccessor242.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:888)
        at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:833)
        at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:375)
        at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4807)
        at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4795)
        at com.sun.ejb.containers.BaseContainer.callEJBTimeout(BaseContainer.java:4045)
        at com.sun.ejb.containers.EJBTimerService.deliverTimeout(EJBTimerService.java:1208)
        at com.sun.ejb.containers.EJBTimerService.access$000(EJBTimerService.java:96)
        at com.sun.ejb.containers.EJBTimerService$TaskExpiredWork.run(EJBTimerService.java:1937)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: could not execute statement
        at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154)
        at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181)
        at org.hibernate.query.internal.AbstractProducedQuery.executeUpdate(AbstractProducedQuery.java:1705)
        at de.symeda.sormas.backend.person.PersonService.deletePermanentByUuids(PersonService.java:1026)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:588)
        at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:408)
        at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4835)
        at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:665)
        at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:834)
        at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:615)
        at de.symeda.sormas.backend.util.ValidationConstraintViolationInterceptor.handleValidationConstraintViolation(ValidationConstraintViolationInterceptor.java:34)
        at jdk.internal.reflect.GeneratedMethodAccessor246.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
       at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:888)
        at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:833)
        at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:615)
        at de.symeda.sormas.backend.util.PerformanceLoggingInterceptor.logInvokeDuration(PerformanceLoggingInterceptor.java:47)
        at jdk.internal.reflect.GeneratedMethodAccessor245.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:888)
        at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:833)
        at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:615)
        at de.symeda.sormas.backend.audit.AuditLoggerInterceptor.logAudit(AuditLoggerInterceptor.java:81)
        at jdk.internal.reflect.GeneratedMethodAccessor244.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:888)
        at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:833)
        at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:615)
        at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163)
        at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:140)
        at jdk.internal.reflect.GeneratedMethodAccessor243.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:888)
        at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:833)
        at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:615)
        at org.jboss.weld.module.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:72)
        at org.jboss.weld.module.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52)
        at jdk.internal.reflect.GeneratedMethodAccessor242.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:888)
        at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:833)
        at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:375)
        at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4807)
        at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4795)
        at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:212)
        ... 97 more
Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement
        at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:109)
        at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:37)
        at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)
        at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99)
        at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:200)
        at org.hibernate.hql.internal.ast.exec.BasicExecutor.doExecute(BasicExecutor.java:80)
        at org.hibernate.hql.internal.ast.exec.BasicExecutor.execute(BasicExecutor.java:50)
        at org.hibernate.hql.internal.ast.exec.DeleteExecutor.execute(DeleteExecutor.java:177)
        at org.hibernate.hql.internal.ast.QueryTranslatorImpl.executeUpdate(QueryTranslatorImpl.java:458)
        at org.hibernate.engine.query.spi.HQLQueryPlan.performExecuteUpdate(HQLQueryPlan.java:377)
        at org.hibernate.internal.SessionImpl.executeUpdate(SessionImpl.java:1478)
        at org.hibernate.query.internal.AbstractProducedQuery.doExecuteUpdate(AbstractProducedQuery.java:1714)
        at org.hibernate.query.internal.AbstractProducedQuery.executeUpdate(AbstractProducedQuery.java:1696)
        ... 148 more
Caused by: org.postgresql.util.PSQLException: ERROR: update or delete on table "person" violates foreign key constraint "fk_personcontactdetail_person_id" on table "personcontactdetail"
  Detail: Key (id)=(603398) is still referenced from table "personcontactdetail".
        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2675)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2365)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:355)
        at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:490)
        at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:408)
        at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:166)
        at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:134)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.postgresql.ds.PGPooledConnection$StatementHandler.invoke(PGPooledConnection.java:441)
        at com.sun.proxy.$Proxy797.executeUpdate(Unknown Source)
        at com.sun.gjc.spi.base.PreparedStatementWrapper.executeUpdate(PreparedStatementWrapper.java:127)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.sun.gjc.spi.jdbc40.ProfiledConnectionWrapper40$1.invoke(ProfiledConnectionWrapper40.java:457)
        at com.sun.proxy.$Proxy798.executeUpdate(Unknown Source)
        at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:197)
        ... 156 more
]]

syntakker avatar Jun 30 '22 08:06 syntakker