Robert Levas created AMBARI-22882:
-------------------------------------

             Summary: Long cannot be cast to String error when changing a 
user's password
                 Key: AMBARI-22882
                 URL: https://issues.apache.org/jira/browse/AMBARI-22882
             Project: Ambari
          Issue Type: Bug
          Components: ambari-server
    Affects Versions: 2.7.0
            Reporter: Robert Levas
            Assignee: Robert Levas
             Fix For: 2.7.0


Long cannot be cast to String error when changing a user's password:
{noformat}
30 Jan 2018 18:21:11,308 ERROR [ambari-client-thread-38] 
AbstractResourceProvider:353 - Caught AmbariException when modifying a resource
org.apache.ambari.server.AmbariException: java.lang.Long cannot be cast to 
java.lang.String
at 
org.apache.ambari.server.controller.internal.UserResourceProvider.addOrUpdateLocalAuthenticationSource(UserResourceProvider.java:559)
at 
org.apache.ambari.server.controller.internal.UserResourceProvider.updateUsers(UserResourceProvider.java:486)
at 
org.apache.ambari.server.controller.internal.UserResourceProvider.access$200(UserResourceProvider.java:69)
at 
org.apache.ambari.server.controller.internal.UserResourceProvider$3.invoke(UserResourceProvider.java:264)
at 
org.apache.ambari.server.controller.internal.UserResourceProvider$3.invoke(UserResourceProvider.java:261)
at 
org.apache.ambari.server.controller.internal.AbstractResourceProvider.invokeWithRetry(AbstractResourceProvider.java:465)
at 
org.apache.ambari.server.controller.internal.AbstractResourceProvider.modifyResources(AbstractResourceProvider.java:346)
at 
org.apache.ambari.server.controller.internal.UserResourceProvider.updateResources(UserResourceProvider.java:261)
at 
org.apache.ambari.server.controller.internal.ClusterControllerImpl.updateResources(ClusterControllerImpl.java:317)
...
{noformat}

*Steps to reproduce*
 # Create a {{LOCAL}} user account (using either the Ambari UI or REST API)
{noformat}
POST /api/v1/users
{noformat}
{code:title=Payload}
{ 
  "Users" : {
    "user_name" : "myuser",
    "password" : "hadoop"
  }
}
{code}
 # Change the user's password (using either the Ambari UI or REST API via the 
users entry point)
{noformat}
PUT /api/v1/users/myuser
{noformat}
{code:title=Payload}
{ 
  "Users" : {
    "old_password" : "hadoop"
    "password" : "hadoop1234"
  }
}
{code}
{code:title=Response}
{
  "status" : 500,
  "message" : "org.apache.ambari.server.controller.spi.SystemException: An 
internal system exception occurred: java.lang.Long cannot be cast to 
java.lang.String"
}
{code}

*Cause*
When building the internal request to set the user's password via the 
UserAuthenticationSource resource provider, the authentication source key is 
set as a {{Long}}. The UserAuthenticationSource resource provider expects this 
value to be a {{String}}.

*Solution*
The UserAuthenticationSource resource provider should accept the 
{{AuthenticationSourceInfo/source_id}} as either a {{Numeric}} or a {{String}} 
value that ultimately translates to a {{Long}}. 





--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to