An error is returned while editing a file through the Bitbucket in-browser editor if the user performing the action does not have an email address

Still need help?

The Atlassian Community is here for you.

Ask the community

Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.

Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Summary

A popup dialog showing "An error occurred while processing the request. Check the server logs for more information"  is displayed while editing a file through the Bitbucket in-browser editor.

The error is encountered if the user modifying the file and committing the changes does not have an email address.


Sample screenshot


Environment

Bitbucket Server and Data Center versions >= 8.0.0.


Diagnosis

The following error is written to the $BITBUCKET_HOME/log/atlassian-bitbucket.log  file:

2023-10-09 13:30:40,705 ERROR [http-nio-28120-exec-1 url: /b8120/rest/api/latest/projects/PROJ1/repos/repo1/browse/HelloWorld.java; user: service.user] service.user @696A7Gx810x1085x0 1xx5jfi 127.0.0.1 "PUT /rest/api/latest/projects/PROJ1/repos/repo1/browse/HelloWorld.java HTTP/1.1" c.a.s.i.r.e.DefaultUnhandledExceptionMapperHelper Unhandled exception while processing REST request: "PUT /rest/api/latest/projects/PROJ1/repos/repo1/browse/HelloWorld.java HTTP/1.1"
io.grpc.StatusRuntimeException: UNKNOWN
	at io.grpc.Status.asRuntimeException(Status.java:535)
	at io.grpc.stub.ClientCalls$StreamObserverToCallListenerAdapter.onClose(ClientCalls.java:479)
	at io.grpc.PartialForwardingClientCallListener.onClose(PartialForwardingClientCallListener.java:39)
	at io.grpc.ForwardingClientCallListener.onClose(ForwardingClientCallListener.java:23)
	at io.grpc.ForwardingClientCallListener$SimpleForwardingClientCallListener.onClose(ForwardingClientCallListener.java:40)
	at com.atlassian.stash.internal.scm.git.mesh.LastSeenClientInterceptor$LastSeenClientListener.onClose(LastSeenClientInterceptor.java:40)
	at io.grpc.PartialForwardingClientCallListener.onClose(PartialForwardingClientCallListener.java:39)
	at io.grpc.ForwardingClientCallListener.onClose(ForwardingClientCallListener.java:23)
	at io.grpc.ForwardingClientCallListener$SimpleForwardingClientCallListener.onClose(ForwardingClientCallListener.java:40)
	at com.atlassian.stash.internal.scm.git.mesh.StatefulClientCallListener.onClose(StatefulClientCallListener.java:34)
	at io.grpc.PartialForwardingClientCallListener.onClose(PartialForwardingClientCallListener.java:39)
	at io.grpc.ForwardingClientCallListener.onClose(ForwardingClientCallListener.java:23)
	at io.grpc.ForwardingClientCallListener$SimpleForwardingClientCallListener.onClose(ForwardingClientCallListener.java:40)
	at com.atlassian.stash.internal.scm.git.mesh.DeadlinePropagatingClientInterceptor$DeadlinePropagatingListener.onClose(DeadlinePropagatingClientInterceptor.java:156)
	at com.atlassian.stash.internal.scm.git.mesh.ErrorHandlingClientInterceptor$ErrorHandlingCall$1.onClose(ErrorHandlingClientInterceptor.java:149)
	at io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:562)
	at io.grpc.internal.ClientCallImpl.access$300(ClientCallImpl.java:70)
	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInternal(ClientCallImpl.java:743)
	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:722)
	at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
	at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.lang.Thread.run(Thread.java:829)
	... 1 frame trimmed

A warning is logged in the $BITBUCKET_HOME/mesh/log/atlassian-mesh.log  file, indicating a non-blank value is required related to the commit author:

2023-10-09 13:30:40,702 WARN  [grpc-server:thread-240] service.user 1GKGB597x810x229x2 @696A7Gx810x1085x0 127.0.0.1 "CommitService/EditFile" (>2 <0) c.a.b.m.g.LoggingServerInterceptor RPC failed with an UNKNOWN error: null
java.lang.IllegalArgumentException: A non-blank value is required
	at com.atlassian.bitbucket.mesh.git.builder.DefaultGitProcessBuilder.notBlank(DefaultGitProcessBuilder.java:1087)
	at com.atlassian.bitbucket.mesh.git.builder.DefaultGitProcessBuilder.withEnvironment(DefaultGitProcessBuilder.java:802)
	at com.atlassian.bitbucket.mesh.git.builder.DefaultGitProcessBuilder.author(DefaultGitProcessBuilder.java:280)
	at com.atlassian.bitbucket.mesh.git.builder.DefaultGitProcessBuilder.author(DefaultGitProcessBuilder.java:133)
	at com.atlassian.bitbucket.mesh.git.builder.AbstractGitProcessBuilder.author(AbstractGitProcessBuilder.java:81)
	at com.atlassian.bitbucket.mesh.git.builder.GitProcessBuilderSupport.author(GitProcessBuilderSupport.java:79)
	at com.atlassian.bitbucket.mesh.git.file.DefaultEditFileManager.commit(DefaultEditFileManager.java:167)
	at com.atlassian.bitbucket.mesh.git.file.DefaultEditFileManager.editFile(DefaultEditFileManager.java:107)
	at com.atlassian.bitbucket.mesh.git.file.DefaultEditFileManager$$FastClassBySpringCGLIB$$30e3f25f.invoke(<generated>)
	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
	at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89)
	at com.atlassian.bitbucket.mesh.spring.ProfilingAspect.profileMethod(ProfilingAspect.java:44)
	at jdk.internal.reflect.GeneratedMethodAccessor9.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 org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:634)
	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:624)
	at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:72)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
	at com.atlassian.bitbucket.mesh.git.file.DefaultEditFileManager$$EnhancerBySpringCGLIB$$e6ae1ca6.editFile(<generated>)
	at com.atlassian.bitbucket.mesh.git.EditFileRequestObserver.handleContent(EditFileRequestObserver.java:155)
	at com.atlassian.bitbucket.mesh.git.EditFileRequestObserver.onNext(EditFileRequestObserver.java:77)
	at com.atlassian.bitbucket.mesh.git.EditFileRequestObserver.onNext(EditFileRequestObserver.java:27)
	at com.atlassian.bitbucket.mesh.grpc.GrpcServiceAdvice$ErrorTranslatingStreamObserver.onNext(GrpcServiceAdvice.java:133)
	at io.grpc.stub.ServerCalls$StreamingServerCallHandler$StreamingServerCallListener.onMessage(ServerCalls.java:262)
	at io.grpc.ForwardingServerCallListener.onMessage(ForwardingServerCallListener.java:33)
	at com.atlassian.bitbucket.mesh.grpc.ThrottlingServerInterceptor$1.onMessage(ThrottlingServerInterceptor.java:77)
	at io.grpc.ForwardingServerCallListener.onMessage(ForwardingServerCallListener.java:33)
	at com.atlassian.bitbucket.mesh.request.RequestServerCallListener.onMessage(RequestServerCallListener.java:29)
	at io.grpc.ForwardingServerCallListener.onMessage(ForwardingServerCallListener.java:33)
	at com.atlassian.bitbucket.mesh.grpc.ExecutionContextServerCallListener.lambda$onMessage$3(ExecutionContextServerCallListener.java:36)
	at io.grpc.Context.run(Context.java:536)
	at com.atlassian.bitbucket.mesh.execution.GrpcExecutionManager$GrpcExecutionContext.run(GrpcExecutionManager.java:232)
	at com.atlassian.bitbucket.mesh.grpc.ExecutionContextServerCallListener.onMessage(ExecutionContextServerCallListener.java:36)
	at io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.messagesAvailableInternal(ServerCallImpl.java:330)
	at io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.messagesAvailable(ServerCallImpl.java:313)
	at io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1MessagesAvailable.runInContext(ServerImpl.java:834)
	at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
	at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133)
	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:829)


Cause

An email is required when committing changes performed through the Bitbucket in-browser editor.

In Bitbucket versions < 8.0.0, the message "When performing an edit, the author must have an e-mail address." is returned when the user performing the modifications does not have an email address.

The following bug ticket was submitted to show the same message instead of an error for Bitbucket versions >= 8.0.0:

BSERV-18835 - Getting issue details... STATUS

Solution

Ensure that the user account performing in-browser modifications has an associated email address.

For user accounts in Bitbucket's built-in Internal User Directory, edit the user account by going to Administration > Users  and then edit the specific user.

For user accounts that come from an External User Directory, edit the user account and add the email address in the external directory. It is not possible to edit them directly in Bitbucket because Bitbucket only provides a read-only connection to the external directories.




Last modified on Jan 29, 2024

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.