[ 
https://issues.apache.org/jira/browse/BEAM-5421?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16619376#comment-16619376
 ] 

Vadym commented on BEAM-5421:
-----------------------------

You are a rockstar for finding time to answer!

Alas, it does not work after registering the function:

 
{code:java}
package main

import (
    "context"

    "github.com/apache/beam/sdks/go/pkg/beam"
    "github.com/apache/beam/sdks/go/pkg/beam/io/textio"
    "github.com/apache/beam/sdks/go/pkg/beam/log"
    "github.com/apache/beam/sdks/go/pkg/beam/transforms/filter"
    "github.com/apache/beam/sdks/go/pkg/beam/x/beamx"
)

func isShortWord(s string) bool {
  return len(s) < 3
}

func init() {
  beam.RegisterFunction(isShortWord)
}

func main() {
    beam.Init()
    ctx := context.Background()
    p, s := beam.NewPipelineWithRoot()

    words := beam.Create(s, "a", "b", "long", "alsolong")
    long := filter.Exclude(s, words, isShortWord)

  textio.Write(s, "long.txt", long)

    if err := beamx.Run(ctx, p); err != nil {
        log.Exitf(ctx, "Failed to execute job: %v", err)
    }
}
{code}
Here is the full stack dump:

 

{{2018/09/18 09:43:50 Pipeline:}}
{{2018/09/18 09:43:50 Nodes: \{1: []uint8/bytes GLO}}}
{{{2: string/bytes GLO}}}
{{{3: string/bytes GLO}}}
{{{4: KV<int,string>/KV<int[varintz],bytes> GLO}}}
{{{5: CoGBK<int,string>/CoGBK<int[varintz],bytes> GLO}}}
{{Edges: 1: Impulse [] -> [Out: []uint8 -> \{1: []uint8/bytes GLO}]}}
{{2: ParDo [In(Main): []uint8 <- \{1: []uint8/bytes GLO}] -> [Out: T -> \{2: 
string/bytes GLO}]}}
{{3: ParDo [In(Main): T <- \{2: string/bytes GLO}] -> [Out: T -> \{3: 
string/bytes GLO}]}}
{{4: ParDo [In(Main): T <- \{3: string/bytes GLO}] -> [Out: KV<int,T> -> \{4: 
KV<int,string>/KV<int[varintz],bytes> GLO}]}}
{{5: CoGBK [In(Main): KV<int,string> <- \{4: 
KV<int,string>/KV<int[varintz],bytes> GLO}] -> [Out: CoGBK<int,string> -> \{5: 
CoGBK<int,string>/CoGBK<int[varintz],bytes> GLO}]}}
{{6: ParDo [In(Main): CoGBK<int,string> <- \{5: 
CoGBK<int,string>/CoGBK<int[varintz],bytes> GLO}] -> []}}
{{2018/09/18 09:43:50 Plan[plan]:}}
{{7: Impulse[0]}}
{{1: ParDo[textio.writeFileFn] Out:[]}}
{{2: CoGBK. Out:1}}
{{3: Inject[0]. Out:2}}
{{4: ParDo[beam.addFixedKeyFn] Out:[3]}}
{{5: ParDo[filter.filterFn] Out:[4]}}
{{6: ParDo[beam.createFn] Out:[5]}}
{{2018/09/18 09:43:50 Failed to execute job: panic: reflect: Call using []uint8 
as type string goroutine 1 [running]:}}
{{runtime/debug.Stack(0xc0002d83b8, 0x1865f80, 0xc0002218a0)}}
{{    /usr/local/Cellar/go/1.11/libexec/src/runtime/debug/stack.go:24 +0xa7}}
{{github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec.callNoPanic.func1(0xc0002d9c30)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec/util.go:39
 +0x6e}}
{{panic(0x1865f80, 0xc0002218a0)}}
{{    /usr/local/Cellar/go/1.11/libexec/src/runtime/panic.go:513 +0x1b9}}
{{reflect.Value.call(0x188e7a0, 0x1a1e920, 0x13, 0x19ebfd4, 0x4, 0xc0000cd980, 
0x1, 0x1, 0x1, 0x1857340, ...)}}
{{    /usr/local/Cellar/go/1.11/libexec/src/reflect/value.go:377 +0x1435}}
{{reflect.Value.Call(0x188e7a0, 0x1a1e920, 0x13, 0xc0000cd980, 0x1, 0x1, 
0x186eb80, 0x1, 0xc000221890)}}
{{    /usr/local/Cellar/go/1.11/libexec/src/reflect/value.go:308 +0xa4}}
{{github.com/apache/beam/sdks/go/pkg/beam/core/util/reflectx.(*reflectFunc).Call(0xc0000ccce0,
 0xc000221890, 0x1, 0x1, 0xc000304810, 0x1, 0xc0000cd960)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/core/util/reflectx/call.go:92
 +0x66}}
{{github.com/apache/beam/sdks/go/pkg/beam/core/util/reflectx.(*shimFunc1x1).Call1x1(0xc0002217c0,
 0x1857340, 0xc0000cd8e0, 0x1071296, 0x18662c0)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/core/util/reflectx/calls.go:258
 +0x7d}}
{{github.com/apache/beam/sdks/go/pkg/beam/transforms/filter.(*filterFn).ProcessElement(0xc000157920,
 0x1857340, 0xc0000cd8e0, 0xc0002217d0)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/transforms/filter/filter.go:86
 +0x4c}}
{{reflect.callMethod(0xc000157aa0, 0xc0002d8970)}}
{{    /usr/local/Cellar/go/1.11/libexec/src/reflect/value.go:663 +0x180}}
{{reflect.methodValueCall(0x1857340, 0xc0000cd8e0, 0xc0002217d0, 0xc0000cd900, 
0xc0002d8c58, 0x10b5859, 0xc000157a10, 0xc000157aa0, 0xc0000cd900, 
0x1800000018, ...)}}
{{    /usr/local/Cellar/go/1.11/libexec/src/reflect/asm_amd64.s:29 +0x33}}
{{reflect.Value.call(0x1883820, 0xc000157aa0, 0x13, 0x19ebfd4, 0x4, 
0xc0003047e0, 0x2, 0x2, 0x2, 0x1863e00, ...)}}
{{    /usr/local/Cellar/go/1.11/libexec/src/reflect/value.go:447 +0x449}}
{{reflect.Value.Call(0x1883820, 0xc000157aa0, 0x13, 0xc0003047e0, 0x2, 0x2, 
0x0, 0x0, 0x0)}}
{{    /usr/local/Cellar/go/1.11/libexec/src/reflect/value.go:308 +0xa4}}
{{github.com/apache/beam/sdks/go/pkg/beam/core/util/reflectx.(*reflectFunc).Call(0xc0000ccd80,
 0xc0000cd7e0, 0x2, 0x2, 0x1857340, 0xc0000cd8e0, 0x1)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/core/util/reflectx/call.go:92
 +0x66}}
{{github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec.(*invoker).Invoke(0xc00015a600,
 0x1aabf40, 0xc000304690, 0x2185c60, 0x1, 0x1, 0x165ed910b7c, 0xc0002d9010, 
0xc000221850, 0x1, ...)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec/fn.go:150
 +0x1d6}}
{{github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec.(*ParDo).invokeProcessFn(0xc0003025b0,
 0x1aabf40, 0xc000304690, 0x2185c60, 0x1, 0x1, 0x165ed910b7c, 0xc0002d9010, 
0x1, 0x1003f00, ...)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec/pardo.go:261
 +0x12b}}
{{github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec.(*ParDo).ProcessElement(0xc0003025b0,
 0x1aabf40, 0xc000304660, 0x1857340, 0xc0000cd8e0, 0x0, 0x0, 0x165ed910b7c, 
0x2185c60, 0x1, ...)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec/pardo.go:113
 +0x552}}
{{github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec/optimized.(*emitNative).invokeTypex_T(0xc0000d0d70,
 0x1857340, 0xc0000cd8e0)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec/optimized/emitters.go:10041
 +0x10f}}
{{github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec/optimized.(*emitNative).invokeTypex_T-fm(0x1857340,
 0xc0000cd8e0)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec/optimized/emitters.go:10035
 +0x3e}}
{{github.com/apache/beam/sdks/go/pkg/beam.(*createFn).ProcessElement(0xc0000ccae0,
 0x21b9dd8, 0x0, 0x0, 0xc0002217f0, 0x0, 0x0)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/create.go:102
 +0x1f1}}
{{reflect.callMethod(0xc000157740, 0xc0002d93b8)}}
{{    /usr/local/Cellar/go/1.11/libexec/src/reflect/value.go:663 +0x180}}
{{reflect.methodValueCall(0x21b9dd8, 0x0, 0x0, 0xc0002217f0, 0x0, 0x0, 
0xc000304750, 0xc0000cd880, 0xc0002d96c0, 0x10b5859, ...)}}
{{    /usr/local/Cellar/go/1.11/libexec/src/reflect/asm_amd64.s:29 +0x33}}
{{reflect.Value.call(0x18a99a0, 0xc000157740, 0x13, 0x19ebfd4, 0x4, 
0xc000304720, 0x2, 0x2, 0x2, 0x1863e00, ...)}}
{{    /usr/local/Cellar/go/1.11/libexec/src/reflect/value.go:447 +0x449}}
{{reflect.Value.Call(0x18a99a0, 0xc000157740, 0x13, 0xc000304720, 0x2, 0x2, 
0x0, 0x0, 0x0)}}
{{    /usr/local/Cellar/go/1.11/libexec/src/reflect/value.go:308 +0xa4}}
{{github.com/apache/beam/sdks/go/pkg/beam/core/util/reflectx.(*reflectFunc).Call(0xc0000ccc00,
 0xc0000cd860, 0x2, 0x2, 0x1857340, 0xc0000cd880, 0x1)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/core/util/reflectx/call.go:92
 +0x66}}
{{github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec.(*invoker).Invoke(0xc00015a700,
 0x1aabf40, 0xc000304660, 0x2185c60, 0x1, 0x1, 0x165ed910b7c, 0xc0002d9a78, 
0xc000221810, 0x1, ...)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec/fn.go:150
 +0x1d6}}
{{github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec.(*ParDo).invokeProcessFn(0xc000302680,
 0x1aabf40, 0xc000304660, 0x2185c60, 0x1, 0x1, 0x165ed910b7c, 0xc0002d9a78, 
0x1, 0x0, ...)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec/pardo.go:261
 +0x12b}}
{{github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec.(*ParDo).ProcessElement(0xc000302680,
 0x1aabf40, 0xc000304540, 0x1857340, 0xc0000cd880, 0x0, 0x0, 0x165ed910b7c, 
0x2185c60, 0x1, ...)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec/pardo.go:113
 +0x552}}
{{github.com/apache/beam/sdks/go/pkg/beam/runners/direct.(*Impulse).Process(0xc000304510,
 0x1aabf40, 0xc000304540, 0x0, 0xc0002d9bf0)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/runners/direct/impulse.go:52
 +0x146}}
{{github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec.Root.Process-fm(0x1aabf40,
 0xc000304540, 0xc0002d9c30, 0x0)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec/plan.go:112
 +0x43}}
{{github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec.callNoPanic(0x1aabf40,
 0xc000304540, 0xc0002d9cb0, 0x0, 0x0)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec/util.go:42
 +0x6c}}
{{github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec.(*Plan).Execute(0xc0002275e0,
 0x1aabd00, 0xc000304540, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc000304090, ...)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/core/runtime/exec/plan.go:112
 +0x3fa}}
{{github.com/apache/beam/sdks/go/pkg/beam/runners/direct.Execute(0x1aabd00, 
0xc0000b8008, 0xc0000c60c0, 0x6, 0xc0001a78f0)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/runners/direct/direct.go:52
 +0x2fe}}
{{github.com/apache/beam/sdks/go/pkg/beam.Run(0x1aabd00, 0xc0000b8008, 
0x19eda97, 0x6, 0xc0000c60c0, 0xc0000ccf00, 0xc000304090)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/runner.go:50
 +0x8e}}
{{github.com/apache/beam/sdks/go/pkg/beam/x/beamx.Run(0x1aabd00, 0xc0000b8008, 
0xc0000c60c0, 0x8, 0xc000157ce0)}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/github.com/apache/beam/sdks/go/pkg/beam/x/beamx/run.go:42
 +0x57}}
{{main.main()}}
{{    
/Users/vadym.tyemirov/Documents/Development/src/algoIO/beam/nyctaxi/scracthpad.go:31
 +0x226}}
{{exit status 1}}

 

> filter.Exclude is panicking
> ---------------------------
>
>                 Key: BEAM-5421
>                 URL: https://issues.apache.org/jira/browse/BEAM-5421
>             Project: Beam
>          Issue Type: Bug
>          Components: sdk-go
>    Affects Versions: 2.6.0
>         Environment: Mac, Linux
>            Reporter: Vadym
>            Assignee: Robert Burke
>            Priority: Major
>
> {code:java}
> package main
> import (
>     "context"
>     "github.com/apache/beam/sdks/go/pkg/beam"
>     "github.com/apache/beam/sdks/go/pkg/beam/io/textio"
>     "github.com/apache/beam/sdks/go/pkg/beam/log"
>     "github.com/apache/beam/sdks/go/pkg/beam/transforms/filter"
>     "github.com/apache/beam/sdks/go/pkg/beam/x/beamx"
> )
> func islongWord(s string) bool {
>   return len(s) < 3
> }
> func main() {
>     beam.Init()
>     ctx := context.Background()
>     p, s := beam.NewPipelineWithRoot()
>     words := beam.Create(s, "a", "b", "long", "alsolong")
>     long := filter.Exclude(s, words, islongWord)
>     textio.Write(s, "long.txt", long)
>     if err := beamx.Run(ctx, p); err != nil {
>         log.Exitf(ctx, "Failed to execute job: %v", err)
>     }
> }
> {code}
> The code above fails with the error message:
> {{2018/09/18 15:47:23 Failed to execute job: panic: reflect: Call using 
> []uint8 as type string goroutine 1 [running]:}}
>  
> The code was taken from Exclude example in the documentation: 
> https://godoc.org/github.com/apache/beam/sdks/go/pkg/beam/transforms/filter#Exclude



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

Reply via email to