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

  1. Call setAsPrimary on another verified address first, then delete this one.
  2. 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.