[ 
https://issues.apache.org/jira/browse/RANGER-2700?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jiayi Liu updated RANGER-2700:
------------------------------
    Description: 
I try to install ranger-2.0.0 on my cluster, however when I try to create a new 
service in WebUI, I often get an error that createService failed.

 I try to debug through the source code, and found that it stuck on 
generateBase64EncodedIV() in PasswordUtils.java. It uses 
SecureRandom.getInstanceStrong() to get the random byte array. We can find a 
lot of information showing that this function often blocks and is very slow. 
SecureRandom.getInstanceStrong() uses /dev/random, and /dev/random blocks the 
thread if there isn't enough randomness available, but /dev/urandom will never 
block. 

SecureRandom.getInstanceStrong() is equivalent to 
SecureRandom.getInstance("NativePRNGBlocking"), and we can use /dev/urandom by 
replacing ecureRandom.getInstanceStrong() to 
SecureRandom.getInstance("NativePRNGNonBlocking"). /dev/random and /dev/urandom 
use the same pool of randomness under the hood, and they are equally secure. 

  was:I try to install ranger-2.0.0 on my cluster, however when I try to create 
a new service in WebUI, I often get an error that createService failed. I try 
to debug through the source code, and found that it stuck on 
generateBase64EncodedIV() in PasswordUtils.java. It uses 
SecureRandom.getInstanceStrong() to get the random byte array. We can find a 
lot of information showing that this function often blocks and is very slow. 
SecureRandom.getInstanceStrong() uses /dev/random, and /dev/random blocks the 
thread if there isn't enough randomness available, but /dev/urandom will never 
block. SecureRandom.getInstanceStrong() is equivalent to 
SecureRandom.getInstance("NativePRNGBlocking"), and we can use /dev/urandom by 
replacing ecureRandom.getInstanceStrong() to 
SecureRandom.getInstance("NativePRNGNonBlocking"). /dev/random and /dev/urandom 
use the same pool of randomness under the hood, and they are equally secure. 


> creating service sometimes fails because SecureRandom.getInstanceStrong() is 
> very slow
> --------------------------------------------------------------------------------------
>
>                 Key: RANGER-2700
>                 URL: https://issues.apache.org/jira/browse/RANGER-2700
>             Project: Ranger
>          Issue Type: Improvement
>          Components: admin
>    Affects Versions: ranger-2.0
>            Reporter: Jiayi Liu
>            Priority: Major
>
> I try to install ranger-2.0.0 on my cluster, however when I try to create a 
> new service in WebUI, I often get an error that createService failed.
>  I try to debug through the source code, and found that it stuck on 
> generateBase64EncodedIV() in PasswordUtils.java. It uses 
> SecureRandom.getInstanceStrong() to get the random byte array. We can find a 
> lot of information showing that this function often blocks and is very slow. 
> SecureRandom.getInstanceStrong() uses /dev/random, and /dev/random blocks the 
> thread if there isn't enough randomness available, but /dev/urandom will 
> never block. 
> SecureRandom.getInstanceStrong() is equivalent to 
> SecureRandom.getInstance("NativePRNGBlocking"), and we can use /dev/urandom 
> by replacing ecureRandom.getInstanceStrong() to 
> SecureRandom.getInstance("NativePRNGNonBlocking"). /dev/random and 
> /dev/urandom use the same pool of randomness under the hood, and they are 
> equally secure. 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to