Dev Space

Customize & extend the power of Alteryx. SDKs, APIs, custom tools, and more!
It's the most wonderful time of the year - Santalytics 2020 is here! This year, Santa's workshop needs the help of the Alteryx Community to help get back on track, so head over to the Group Hub for all the info to get started!

Record Info: Browse (60) You have found a bug. Replicate, then let us know. We shall fi

Highlighted
16 - Nebula
16 - Nebula

In the ii_init method, I am adding two new fields to the output of my tool (which is a tool to create directories).

When I run this - I get the  "Browse (60) You have found a bug. Replicate, then let us know. We shall fix it soon." error - despite the fact that these tools are correctly reporting the field metadata that was added to the record info.

 

Perhaps there's two matters:

a) what am I doing wrong?    Is the problem even in the ii_init; or is it the fact that teh outbound record is a different shape than the record_info?

b) this seems to be something that should have a graceful error handler anyway.

 

Details:

 

Tool is attached with all supporting code.

recordInfoBug1.pngrecordInfoBug2.pngYou can see that the metadata is coming through correctly despite the error.You can see that the metadata is coming through correctly despite the error.

 

The code to add the field is below:

(forgive the indenting... Khoros doesn't seem to want this indented)

def ii_init(self, record_info_in: object) -> bool:

#store a reference for later

self.parent.record_info_inbound = record_info_in
self.record_info_inbound = record_info_in


#Set up the outbound record structure
self.record_info_out = self.record_info_inbound.clone()

self.record_info_out.add_field(

field_name= 'FolderCreationResult',
field_type=Sdk.FieldType.v_wstring,
size=200,
source='DirectoryCreate Tool',
description='Result of folder creation')

 

self.record_info_out.add_field(

field_name= 'FolderCreationDescription',
field_type=Sdk.FieldType.v_wstring,
size=200,
source='DirectoryCreate Tool',
description='Detailed status / error message for folder creation')


self.parent.output_anchor.init(self.record_info_out) 
return True

 

Highlighted
16 - Nebula
16 - Nebula

Added a record copier now - so the attached version is slightly different.    Only the select tool reports a bug; but if you click on the Browse tool it trashes Alteryx (immediate catastrophic failure).

This may be one for your skilled hands @PaulN 

 

In this case, less worried about how to fix my code; than the fact that it triggers a catastropic failure in Alteryx Designer  

I'm running the latest version of Designer - 2019.4.6.21113

Highlighted
10 - Fireball

Hi @SeanAdams, the bug is not in ii_init, but rather in ii_push_record.  You are correct that it is caused because the shape of the data you are pushing out does not match the RecordInfo you initialized the output with.

 

You will need a RecordCreator to generate the properly-shaped output.  Something like this will work in ii_init, right after you add the fields to self.record_info_out:

 

self.record_creator = self.record_info_out.construct_record_creator()

 

Then, in ii_push_record, this is the sequence of commands:

self.record_creator.reset()
self.record_copier.copy(self.record_creator, in_record)
self.record_info_out.get_field_by_name("FolderCreationResult").set_from_string(self.record_creator, "Y")
self.record_info_out.get_field_by_name("FolderCreationDescription").set_from_string(self.record_creator, "Success")
data = self.record_creator.finalize_record()
self.parent.output_anchor.push_record(data)

 

As for the catastrophic failure, here are my $0.02.  The 'You have found a bug' message is not meant for you, it's meant for the people using your tool.  And while it would be nice if Designer handled the bug more gracefully than crashing, this may not always be practical.  The SDK gives us great power to use (and mess up) the engine's internals.  We are essentially taking the place of Alteryx developers when we build a custom tool, so any crashes caused by our tools are our fault, not Alteryx's.

 

That said, it would be nice if we got a message like 'The outgoing data structure does not match the outgoing record info', but only....better worded.  I feel like I struggle with getting the sequence of commands correct with every custom tool I make.  I hear SnakePlane makes this easier; I really need to check it out.

Highlighted
6 - Meteoroid

I have discovered that this is a generic warning. It may be related to certain tools, but in my case it was related to Snowflake Driver versions. After my upgrade to Designer 2019.4, the existing driver does not work anymore. So the solution is to remove the existing driver, and install the newest Snowflake Driver (ODBC).