Tomas Roos created BEAM-5350:
--------------------------------

             Summary: Running autocomplete.go on dataflow fails
                 Key: BEAM-5350
                 URL: https://issues.apache.org/jira/browse/BEAM-5350
             Project: Beam
          Issue Type: Bug
          Components: sdk-go
    Affects Versions: Not applicable
            Reporter: Tomas Roos
            Assignee: Henning Rohde


I'm in the process as a external developer make sure that all examples are 
runnable on both direct and the dataflow runner as its crucial for people 
onboarding this project.

 

I've visted the projects before and some are runnable, some probably where 
previously, and some are def not runnable.

 

So I started top down today, in order to make autocomplete.go run on dataflow 
as well as the direct runner i changed the input in order to make it platform 
independent instead of pointing to a local file.The reading of the source from 
the public cloud storage went fine but it fails to run the top.Largest 
anonymous less function (ran on id: go-job-1-1536575613531078735) failed with

 

RESP: instruction_id: "-205" error: "Invalid bundle desc: decode: bad userfn: 
bad struct encoding: failed to decode data: decode: failed to find symbol 
main.main.func1: main.main.func1 not found. Use runtime.RegisterFunction in 
unit tests" register: < >

 

So in order to fix this I introduced the local func called lessFn and 
registered in the init process. This though now instead when running

 

go run autocomplete.go --project fair-app-213019 --runner dataflow 
--staging_location=gs://fair-app-213019/staging-test2 
--worker_harness_container_image=apache-docker-beam-snapshots-docker.bintray.io/beam/go:20180515

 

fails with

 

2018/09/10 13:37:10 Running autocomplete
Unable to encode combiner for lifting: failed to encode custom coder: bad 
underlying type: bad field type: bad element: unencodable type: interface 
{}2018/09/10 13:37:10 Using running binary as worker binary: 
'/tmp/go-build157286122/b001/exe/autocomplete'
2018/09/10 13:37:10 Staging worker binary: 
/tmp/go-build157286122/b001/exe/autocomplete

 

And I know this is when invoking the top.Largest since I've removed the piece 
of code and then the job runs fine, could you please point me in the right 
direction why my local func is not encoable as a interface {} and I will of 
course happily send a PR when this is working on direct and the dataflow direct 
so I can move on to the other examples

 

 

 

(All changes can be seen here) 
[https://github.com/apache/beam/compare/master...ptomasroos:make-autocomplete-dataflowable?expand=1]

 

 

https://github.com/apache/beam/blob/master/sdks/go/examples/complete/autocomplete/autocomplete.go#L63

 

2018/09/10 13:37:10 Running autocomplete
Unable to encode combiner for lifting: failed to encode custom coder: bad 
underlying type: bad field type: bad element: unencodable type: interface 
{}2018/09/10 13:37:10 Using running binary as worker binary: 
'/tmp/go-build157286122/b001/exe/autocomplete'
2018/09/10 13:37:10 Staging worker binary: 
/tmp/go-build157286122/b001/exe/autocomplete



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

Reply via email to