theonedev/onedev · error · NotAcceptableException
Cannot delete primary email address
Error message
Cannot delete primary email address
What it means
Business-rule guard in DefaultEmailAddressService.delete: the address being deleted is the user's primary email address, which cannot be removed (it identifies the account); NotAcceptableException is thrown before super.delete. Fix: set another verified address as primary first, then delete this one.
Source
Thrown at server-core/src/main/java/io/onedev/server/service/impl/DefaultEmailAddressService.java:118
}
@Transactional
@Override
public void setAsPrimary(EmailAddress emailAddress) {
for (EmailAddress each: emailAddress.getOwner().getEmailAddresses()) {
each.setPrimary(false);
dao.persist(each);
}
emailAddress.setPrimary(true);
emailAddress.getOwner().cachePrimaryEmailAddress(emailAddress);
dao.persist(emailAddress);
}
@Transactional
@Override
public void delete(EmailAddress emailAddress) {
if (emailAddress.isPrimary())
throw new NotAcceptableException("Cannot delete primary email address");
super.delete(emailAddress);
User user = emailAddress.getOwner();
user.getEmailAddresses().remove(emailAddress);
}
@Transactional
@Override
public void create(EmailAddress emailAddress) {
Preconditions.checkState(emailAddress.isNew());
emailAddress.setValue(emailAddress.getValue().toLowerCase());
User user = emailAddress.getOwner();
if (user.getEmailAddresses().isEmpty()) {
emailAddress.setPrimary(true);
}
dao.persist(emailAddress);
View on GitHub (pinned to d44925c47c)
Solutions
- Call setAsPrimary on another verified address first, then delete this one.
- Skip deletion for the primary address in bulk-cleanup logic.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at server-core/src/main/java/io/onedev/server/service/impl/DefaultEmailAddressService.java:118 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of theonedev/onedev@d44925c47c (2026-09-06).
Data as JSON: /api/errors/2633aaf7d8b7ae3f.
Report an issue: GitHub.