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

Jeff Webb updated BEAM-10636:
-----------------------------
    Status: Open  (was: Triage Needed)

> Dataflow deployments with FnAPI runner fail on python3.8 due to pycrypto 
> -------------------------------------------------------------------------
>
>                 Key: BEAM-10636
>                 URL: https://issues.apache.org/jira/browse/BEAM-10636
>             Project: Beam
>          Issue Type: Bug
>          Components: io-py-gcp, runner-dataflow, sdk-py-harness
>    Affects Versions: 2.23.0
>            Reporter: David Rubinstein
>            Priority: P3
>
> PyCrypto [uses|[https://github.com/pycrypto/pycrypto/issues/308]] 
> `time.clock()` which was 
> [deprecated|[https://docs.python.org/3/whatsnew/3.8.html#api-and-feature-removals]]
>  in Python3.8
> Upon further look this has to do with google-apitools depending on 
> oauth2client (which is archived) which depends on pycrypto (which is not 
> maintained anymore). Not really sure what to do to fix the dependencies, but 
> deployments in Python3.8 with FnAPI on Dataflow are broken for me until then.
>  
>  Relevant stacktrace.
> {noformat}
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/apache_beam/pipeline.py", line 534, 
> in run
> [2020-08-04T18:03:22.978Z]     return self.runner.run_pipeline(self, 
> self._options)
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/apache_beam/runners/dataflow/dataflow_runner.py",
>  line 558, in run_pipeline
> [2020-08-04T18:03:22.978Z]     self.job = apiclient.Job(options, 
> self.proto_pipeline)
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/apache_beam/runners/dataflow/internal/apiclient.py",
>  line 495, in __init__
> [2020-08-04T18:03:22.978Z]     self.proto.replaceJobId = 
> self.job_id_for_name(self.proto.name)
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/apache_beam/runners/dataflow/internal/apiclient.py",
>  line 518, in job_id_for_name
> [2020-08-04T18:03:22.978Z]     return DataflowApplicationClient(
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/apache_beam/runners/dataflow/internal/apiclient.py",
>  line 924, in job_id_for_name
> [2020-08-04T18:03:22.978Z]     response = 
> self._client.projects_locations_jobs.List(request)
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/apache_beam/runners/dataflow/internal/clients/dataflow/dataflow_v1b3_client.py",
>  line 763, in List
> [2020-08-04T18:03:22.978Z]     return self._RunMethod(
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/apitools/base/py/base_api.py", line 
> 728, in _RunMethod
> [2020-08-04T18:03:22.978Z]     http_response = http_wrapper.MakeRequest(
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/apitools/base/py/http_wrapper.py", 
> line 359, in MakeRequest
> [2020-08-04T18:03:22.978Z]     retry_func(ExceptionRetryArgs(http, 
> http_request, e, retry,
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/apitools/base/py/http_wrapper.py", 
> line 304, in HandleExceptionsAndRebuildHttpConnections
> [2020-08-04T18:03:22.978Z]     raise retry_args.exc
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/apitools/base/py/http_wrapper.py", 
> line 348, in MakeRequest
> [2020-08-04T18:03:22.978Z]     return _MakeRequestNoRetry(
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/apitools/base/py/http_wrapper.py", 
> line 397, in _MakeRequestNoRetry
> [2020-08-04T18:03:22.978Z]     info, content = http.request(
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/oauth2client/transport.py", line 153, 
> in new_request
> [2020-08-04T18:03:22.978Z]     credentials._refresh(orig_request_method)
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/oauth2client/client.py", line 765, in 
> _refresh
> [2020-08-04T18:03:22.978Z]     self._do_refresh_request(http_request)
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/oauth2client/client.py", line 792, in 
> _do_refresh_request
> [2020-08-04T18:03:22.978Z]     body = self._generate_refresh_request_body()
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/oauth2client/client.py", line 1501, 
> in _generate_refresh_request_body
> [2020-08-04T18:03:22.978Z]     assertion = self._generate_assertion()
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/oauth2client/service_account.py", 
> line 385, in _generate_assertion
> [2020-08-04T18:03:22.978Z]     return crypt.make_signed_jwt(self._signer, 
> payload,
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/oauth2client/crypt.py", line 97, in 
> make_signed_jwt
> [2020-08-04T18:03:22.978Z]     signature = signer.sign(signing_input)
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/oauth2client/_pycrypto_crypt.py", 
> line 99, in sign
> [2020-08-04T18:03:22.978Z]     return 
> PKCS1_v1_5.new(self._key).sign(SHA256.new(message))
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/Crypto/Signature/PKCS1_v1_5.py", line 
> 112, in sign
> [2020-08-04T18:03:22.978Z]     m = self._key.decrypt(em)
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/Crypto/PublicKey/RSA.py", line 174, 
> in decrypt
> [2020-08-04T18:03:22.978Z]     return pubkey.pubkey.decrypt(self, ciphertext)
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/Crypto/PublicKey/pubkey.py", line 93, 
> in decrypt
> [2020-08-04T18:03:22.978Z]     plaintext=self._decrypt(ciphertext)
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/Crypto/PublicKey/RSA.py", line 235, 
> in _decrypt
> [2020-08-04T18:03:22.978Z]     r = getRandomRange(1, self.key.n-1, 
> randfunc=self._randfunc)
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/Crypto/Util/number.py", line 123, in 
> getRandomRange
> [2020-08-04T18:03:22.978Z]     value = getRandomInteger(bits, randfunc)
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/Crypto/Util/number.py", line 104, in 
> getRandomInteger
> [2020-08-04T18:03:22.978Z]     S = randfunc(N>>3)
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/Crypto/Random/_UserFriendlyRNG.py", 
> line 202, in read
> [2020-08-04T18:03:22.978Z]     return self._singleton.read(bytes)
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/Crypto/Random/_UserFriendlyRNG.py", 
> line 178, in read
> [2020-08-04T18:03:22.978Z]     return _UserFriendlyRNG.read(self, bytes)
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/Crypto/Random/_UserFriendlyRNG.py", 
> line 129, in read
> [2020-08-04T18:03:22.978Z]     self._ec.collect()
> [2020-08-04T18:03:22.978Z]   File 
> "/usr/local/lib/python3.8/site-packages/Crypto/Random/_UserFriendlyRNG.py", 
> line 77, in collect
> [2020-08-04T18:03:22.978Z]     t = time.clock()
> [2020-08-04T18:03:22.978Z] AttributeError: module 'time' has no attribute 
> 'clock'
> {noformat}



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

Reply via email to