Queue error handling
From 2012 LabVIEW help for most Queue functions:
"This node runs normally even if an error occurred before this node runs."
Tested True for Release Queue, but False for others: Enqueue, Dequeue, Status, Preview, etc..
They only produced the Enum U16 default "0" with no waiting.
So, this means my state machine needs 2 Error Cluster branches so I can cleanly power down and exit my test app.
Still would be easier if it worked like Help suggested. It would be better if Help was right too.
Solved!
Go to Solution.
Attachments:
Ustates.ctl 8 KB
Usm.vi 23 KB
RavensFan wrote:
The functionalities are correct for each of the functions. The help file is wrong for each of the functions.
Most of the queue functions should have standard error functionality which means they run normally if there is no error coming in, but don't run and just pass the error through if there is an error. So those functions should NOT have the 2nd sentence of "This node runs normally even if an error occurred before this node runs."
The Release Queue function does not and should not have standard error functionality. It should release the queue even if an error comes into. The help says: (I added the bold and italics for emphasis)
"With the following exception, this input provides standard error in functionality.
This node runs normally even if an error occurred before this node runs."
It looks like those same two sentences were just copied and pasted among all the help files to all of the other queue functions incorrectly. The other queue functions should not have the "with the following exception," nor the second sentence.
I don't have access to LV 2013 at the moment to confirm it is still wrong. Looking in the help file for LV 2009, the help files are correct.
After thinking on this awhile then reading that I agree with RavensFan. The help file is wrong but the functionality is correct.. It reads the same in 2013 so it seems the incorrect help was simply carried forward.
Kelly Bersch
Certified LabVIEW Developer
Kudos are always welcome
Similar Messages
-
Report and Alert don't executed in the error handler with a JMS proxy service
Hi,
I'm working with OSB 11.1.1.4.0 and I'm facing a problem with the error handler of my JMS proxy service.
My error handler contains two main elements :
- a Report action
- an Alert with a JMS destination defined
When the business service failed the message remain in the queue. It's the expected behavior.
The problem is :
- the report is missing
- the alert is raised but missing in the JMS destination defined in the Alert setting.
I've noticed if I add a Reply with Failure or Success, Report and Alert are successfully executed.
Unfortunately the message don't remain in the JMS queue.
What can I do in order to have my report/alert done and the JMS transaction rollback in order to keep the message in the queue ?
I've already met this problem in the past with alsb v3 and my solution was to add Service Callout in the error handler in order to externalize these actions.
This solution is not convenient and I hope another solution is possible.Inventorying workgroups can be difficult, especially when it comes to remote access and network security. Because workgroups are not centrally managed, some of the items discussed in this
wiki article on preparing your workgroup environment may require you to visit each machine individually.
For non-domain credentials, you do not use the <systemname>\<user> format, you simply enter the user name. Regarding how to enter the credentials, if you have an account that uses the same username and password on all machines and is an administrator
on all of those machines, then you can enter that in the All computers credentials page of the wizard. You can also do this if they are different user names. However, if some machines have an account with the same user name, such as Administrator,
but different passwords on each machine, you will need to use the Manually enter computer names discovery method, and then enter the information for each group or each machine.
As you can tell, workgroup environments can quickly negate any benefit that the agentless inventory nature of MAP provides.
Please remember to click "Mark as Answer" on the post that helps you, and to click
"Unmark as Answer" if a marked post does not actually answer your question. Please
VOTE as HELPFUL if the post helps you. This can be beneficial to other community members reading the thread. -
Error Handling on RFC - XI - File Scenario
I have an R/3 RFC -> XI -> FILE scenario that works, but does not adequately handle the error of my R/3 to XI connection being down.
The RFC call is async since I was under the impression that I had to do a "to file" scenario that way.
CALL FUNCTION 'ZXO_SAP2RFC'
IN BACKGROUND TASK
DESTINATION wa-rfc_dest_1
EXPORTING
request = request
rfc_header = rfc_header.
COMMIT WORK AND WAIT.
IF sy-subrc <> 0.
[error handling]
If my rfc destination is down (for example when XI is down), this RFC call is still getting a sy-subrc of '0' (so my error handling does not kick in).
Any suggestions?Hi Keith,
your scenario is working correctly. If XI is down you will find your message queued in transaction SM58, where you can restart it manually. Usually there should be standard job for report RSARFCEX, which is periodicly trieing to restard the message.
Asynchr Call (tRFC) means that your program continues completly undependent from that call.
Make a test: Change temporary the called machine in SM59 destination to senseless value and execute your programm. Your message should be in SM58. Then correct the destination and wait a few minutes...
Regards,
Udo -
'Structured' error handling and reentrancy
The parentheses in the subject are due to the fact that I'm not using the Structured Error Handler reference library, but have rolled my own to do something similar but in the manner I want it to. I don't actually use the SEH (haven't even got it installed at the moment on this PC) so am not sure exactly how it works under the hood.
I have a reasonably large application with a number of distinct parallel modules (GUI, state module, communication, motion control). The final parallel module is an error handling module. This consists of two queues - one for incoming errors, and one for outgoing actions. Errors are dequeued and their codes checked for their category (critical, warning, ignore or unclassified, for instance) and the appropriate category is returned to a local error handler via the action queue. When an error is passed to a local error handler VI, it enqueues the error to the main handler and waits for a response to that particular error.
This all works nicely, in much the same way the SEH would do. However, with either the SEH or my local error handler method, I find myself wondering how often to place these down and the consequences of doing so. If they're non-reentrant, I imagine I may end up with lots of parallel processes sitting patiently to access the VI as it's blocked by another, causing jitter. If I go pre-allocated clone, I could potentially have many many callers using this function, which strikes me as a bit of a waste of resources. My gut feel is to go with shared-allocation clones, as the vast majority of the time it'll be no error passed through an empty case, and not to place them in absolutely every subVI - just perhaps after a state executes in the state handler, in all the parallel loops of the submodules etc.
Just wondering what anyone else does with their error handling solution, and whether my thoughts make sense.
CLDHaving chatted to my friendly neighbourhood Spiderman Architect, he suggested I should probably just stop being a wimp and just use pre-allocated clones to avoid the jitter and to stop worrying about the resource hit, as you suggest
I'll use the same code on both PC host and RT host, hence the jitter concerns on the RT.
Thanks for the thoughts!
CLD -
Dear All,
I searched the forum but could not find a full answer to my question.
How can you handle errors in B1if?
When something goes wrong the errormessage is displayed in the failure section of the message log.
I found out that on the package design in the defintions section you can choose document "error handling".
There you should be able to choose your error handling step.
For now I only see the default error handling step.
How can you create such a error handling step?
Does somebody has some full documentation on this subject?
I guess we must create a new step design with inbound type Predecessor or am I wrong?
Thanks in advance for any help.
Kind regards,
StevenHi Vijay,
Create a package with your development in a step.
Create a second step called for instance: errorhandling
This errorhandling step must be of inbound type internal queue
In the errorhandling step you can handle the error as you like... for example email it or save it in a user table in B1.
The trick is:
Go to package design - select your package - press definitions buttons and select error handling
Here you select your errorhandling step instead of default error handling.
Save everything.
When you scenario goes into error during the processing the errorhandling step will be carried out.
That is it.
Kind regards,
Steven -
Error handling in simulatenous loops
I am trying to design a good error handling system for a project I am working on, but I have run into a "design" problem. I thought it would be good to ask for some guidance here before I sit down and start create the error handling system.
I have more than one subVI started from one mainVI, each subVI with an individual while loop running (they all stop when I press the same stop button from the mainVI). Each while loop continously retrievews information from various serial devices. Each VISA call etc. can thus of course generate errors. I only want one error dialog box in my mainVI front panel displaying any error that happens.
How would I design this in a good way? As I see it, I would have to use the error dialog box in the mainVI as a global/functional global. Each subVI would then write to this global error dialog box. This could however cause race conditions where only the latest error gets displayed even if earlier errors happened. Appreciate some good advice here.
Solved!
Go to Solution.First and foremost I would avoid using the sequence structure. LabVIEW is a data flow language and you should take advantage of that rather than forcing it to be a sequenctial language. Take a look various examples that ship with LabVIEW. You will want to definitely check out the examples for state machines and the producer consumer architectures. Your current code will not meet your needs of continually monitoring for errors since your "Error" queue is not in a parallel loop task.
I have attached a very quik example of a producer consumer architecture with an error processing loop. There are no real code details but this is a simple example of an approach to take for an application. This along with the above examples should give you a decent starting point.
Message Edited by Mark Yedinak on 10-05-2009 04:05 PM
Mark Yedinak
"Does anyone know where the love of God goes when the waves turn the minutes to hours?"
Wreck of the Edmund Fitzgerald - Gordon Lightfoot
Attachments:
Simple Application Architecture (8-6).vi 13 KB -
Client ABAP proxy error handling. Please help!
Hi Experts,
I have following scenario:
SAP ECC (ABAP Client Proxy) -> PI(XI)-->(SOAP) Third party web service System
This is Asynchronous.
What will happen when ABAP client Proxy in ECC sends data to PI but PI is down?
Will the message be queued in ECC? Can the queued message be processed automatically when PI is UP later?
Please help.
Thanks & Regards
GopalHello Gopal,
Correct, it should be an automatic entry into the queue!
refer below for a detailed understanding!
/people/arulraja.ma/blog/2006/08/18/xi-reliable-messaging-150-eoio-in-abap-proxies XI: Reliable Messaging u2013 EOIO in ABAP Proxies
/people/krishna.moorthyp/blog/2005/12/23/monitoring-for-processed-xml-messages-in-abap-proxy Monitoring for Processed XML messages in ABAP Proxy
Weblog to send Response from RFC to File in Asyn Mode Using Proxy [original link is broken] Weblog to send Response from RFC to File in Asyn Mode Using Proxy
/people/michal.krawczyk2/blog/2009/06/20/pixi-abap-proxies-say-goodbye-to-executeasynchronous-method PI/XI: ABAP Proxies say goodbye to Execute_Asynchronous method
/people/krishnakumar.ramamoorthy3/blog/2008/11/02/error-handling-framework-for-abap-proxies--part-1 Error handling framework for ABAP proxies - Part 1
/people/krishnakumar.ramamoorthy3/blog/2008/12/19/error-handling-framework-for-abap-proxies--part-2 Error handling framework for ABAP proxies - Part 2
Regards,
Jilan -
Best error handling for visa calls?
We are using some handlers we've devloped for power supply handling (over GPIB). The power supplies are SCPI and use SCPI/GPIB commands. The handlers use the NI visa api's Read() and Write() functions to send the commands. They work fine, for the most part, and we've been using them for a number of years.
However, we're hearing reports that there may have been a few times that commands were not executed on the power supply and our handler did not report back any error.
So, I'm trying to update these handlers to add a little error checking to make them more robust and hopefully we'll catch this error if it happens again.
For error handling, I've come up with 3 solutions and tried all 3. I find some benefits and drawbacks with each and hoped I could get your opinions about error handling as I'm not overly familiar with some of the methods.
Method 1:
Set the Event Status Enable register to catch all events (or all that I care about).
Read status byte (STB?) after each command and check the event bit and then event status bit if event bit set.
Drawback1: I have one power supply that does not implement this correctly and a second type that appears to not be working correctly either.
Drawback2: Errors are generic. I'll know if I got, for example, a DDE (Device Dependant Error), but I won't know more detail than that.
Method 2:
After each command sent, read the error queue with the System:Error? query.
Drawback: It seems I get a lot of messages back in this method that aren't real errors. It's very "noisy" and I have no way to distinguish real errors from "noise" messages like "query interrupted" and such.
Method 3:
Check the return code of the Visa Read() and Write() commands. At first I didn't think this was very robust, but after seeing the list of errors here, I'm beginning to think that these might be more robust and detailed than Method 1. However, I'm not sure.
So is method 3 as robust as it looks, or is there a combination/comprimise I can make, or another method I did not mention which is best to trap errors from Visa Reads/Writes to these GPIB power supplies? Keep in mind that the handlers work for a number of different power supplies and its likely that some things may be implemented differently between supplies....so its best to stick with somethind standard that will work on all power supplies.Hi KingTermite,
I hope you will got answer of the question and may be implemeted something .It was really a nice discussion .I am also facing the same issue where I am communicating with different instrument using GPIB communication and RS 232 too.
Can you share and discuss about the implementation of your initiative.
Best Regards
Regards:
Vaibhav Kanchan
Sr. Engineer
NI Certified LabVIEW Developer(CLD)
NI Certified TestStand Developer(CTD} -
Query related to error handling
hi All,
In my proxy flow i have stage level error handler which is configured to an alert pointing to an JMS error queue. When i added service level error handler with same alert.
I am getting duplication of the same error message by stage and service error handler.
For every error i am receiving 2 error messages at the error queue.
Is there any option in ALSB which allows me stop the duplication.Pls check the following script --
SQL>
SQL> create or replace package uu_test
2 is
3 begin
4 test
5 end;
6 /
Warning: Package created with compilation errors.
SQL>
SQL> select * from user_errors
2 where type = 'PACKAGE';
NAME TYPE SEQUENCE LINE POSITION
TEXT
UU_TEST PACKAGE 1 3 1
PLS-00103: Encountered the symbol "BEGIN" when expecting one of the following:
end function package pragma private procedure subtype type
use <an identifier> <a double-quoted delimited-identifier>
form current cursorHope this will fullfill your requirement.
Regards.
Satyaki De. -
JMS adapters and error handling
Dear all,
1. I have a scenario in which XI will be getting messages from Two JMS servers located in different locations. The messages from the two servers have no relation but XI has to check if messages are present in any of the servers and poll them. So can anyone suggest me a better approach. I can use two sender adapters and use a BPM. Is there any other way to do it avoiding BPM?
2. How do I delete the message from the JMS Queue once it is processed?
3. In the Reciever side I have to send messages to two different target systems based on a condition. From the sender side a field (value) is passed which will check these conditions. If the value contains one of the target system names, the message has to go to that particular system and if the value contains both the target system names, the message has to go to both the target systems. I think this can be done in BPM but please recommend an approach for this.
4. I need to do error handling both in the adapter side and in mapping level. Kindly give suggestions for the same.
Expecting your replies soon,
Harikumar. SHi ,
Refer to following blogs ,
JMS Adapter
http://help.sap.com/saphelp_nw2004s/helpdata/en/cd/d85a9d6fab7d4dbb7ae421f710626c/content.htm
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/3867a582-0401-0010-6cbf-9644e49f1a10
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/f02d12a7-0201-0010-5780-8bfc7d12f891
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/xi/3.0/how%20to%20use%20the%20content%20conversion%20module%20with%20the%20xi%203%20j2ee%20jms%20adapter
/thread/217893 [original link is broken]
JMS adapter -Message format pre-requisites
/people/alessandro.guarneri/blog/2006/01/04/jms-sender-adapter-handling-too-short-lines
/people/william.li/blog/2006/11/13/how-to-use-saps-webas-j2ees-jms-queue-in-exchange-infrastructure
Thanks ,
Suvarna
Award pts if ans helps . -
Delete or acrhive messages in AIF error handling transaction
Dear all,
Is there a transaction or report to delete the messages in error handling and monitoring ? Where are these messages stored, its in a queue , could I get to view the queue and delete the messages which are not required.
And also where do we schedule the limit - about how many messages to be processed per run or per package. where is this maintained.
- Messages often get in to manual restart mode... why does this happen? Do we get to set the messages for automatic restart , if yes, how do we do that?
Thanks and Regards,
ArchanaHi Archana,
for automatic reprocessing in AIF please have a look into the thread SAP AIF - Automatic Reprocessing. Nicole provided a solution there.
Best wishes
Christoph -
CIF - error handling and maintance
Hi sap gures
please let me know how to handle CIF errors and how to maintain and support the CIF in the production
supporting project
please help me
Regards
R.suresh KumarHi Suresh,
It is very vital and sensitive to maintain and control cif error
handling. You need to monitor very frequently system for
queue accumulation which leads to lot of errors in system and
affects performance. Controlled monitoring and taking quick
actions will make your life ease.
Also periodically carry out consistency checks to avoid
difference of transactional data between systems as per
recommendations.
Check the CIF job logs in case of any failures and take
necessary actions to avoid recurrence
Regards
R. Senthil Mareeswaran. -
How to catch/read mal-formed xml at Error Handler.
I have added Error Handler at starting node of Message Flow in a Proxy Service and its(Proxy Service) listenning to a JMS queue.
So when i am putting a mal-formed XML into the JMS queue, getting "Failure while unmarshalling message: Failed to parse XML text" error at ALSB server log.
But i am not able to capture the mal-formed xml inside Error Handler node.
Can any one help me how to capture input mal-formed xml in Message Folw.
Thanks in Advance.
Regards.
DebaRe: How to catch malformed xml using error handling mechanism in from a proxy? Had a solution for similar issue. It appears that in-case of malformed XML, $body will not be populated with faulty xml snippet. One way out of this solution is, design your service as Text service and create another service isXML as explained in my above reply.
Thanks
Manoj -
Custom error handler examples and/or instruction
I'm finishing up an application and would like to customize some of the error reporting.
I've started playing around with the custom error handler VI's with some success. I would, however, like to see some examples from people who know what they are doing (unlike me).
As always, your feedback is appreciated.
ToddLook at this message.
http://forums.ni.com/ni/board/message?board.id=170&message.id=45649
Do a search for "General Error Handler" and you'll find some others.
I'm also trying to find a simple way to define custom error codes and descriptions in an error cluster. I can produce my codes easily enough using the vi posted by Aristos Queue in the message noted above. I can also display my user-defined descriptions using a dialog, but I haven't found an easy way to make the user-defined descriptions in the array appear in the error cluster.
Any help on this would be appreciated.
Attachments:
Error_Demo.vi 37 KB -
Log format of SAF error handler
Is there any link/document available that gives an idea of the format to provide in the "log format" while creating SAF error handler?
Here's a little more detail that should help:
Using the same JMS module that contains the configuration for the original imported destination, create another imported destination with the exact same targets as the imported destination. Let’s call this destination the “SAF error dest”. Configure the remote destination for this SAF error destination so that it references some JMS Server queue (call it the “error queue”).
Ideally for performance and simplicity, this error queue should run local to the "SAF error dest" -- so, for example, if there are 3 SAF Agents on three JVMs that host the imported destinations, there should also be three JMS servers on these same JVMs that use the same persistent store as the SAF agents, and the error Q should be a "uniform distributed queue" that's targeted to the three JMS servers (using advanced "subdeployment" targeting).
Configure the original imported destination to use the “SAF error dest” as its error destination.
Maybe you are looking for
-
I have the latest version of iTunes and when I went to go open it, it can't! It says: "iTunes was not installed correctly. Please reinstall iTunes.Error 7 (Windows error 126)" What do I do now? Should I uninstall and try installing it again? I don't
-
How do I move a file from one folder to another in th K1?
When I long click a file name a I get a popup list and move is listed. When I press move, the filename gets highlighted, but I can't drag and drop it. What am I doing wrong? Solved! Go to Solution.
-
Help with resetting id
-
How to change ExchangeRate Type Property in EPMA
Hi all, I would like to change the ExchangeRate Type Property (from NONE to AVERAGE) in EPMA Accounts Dimension (local dimension) for a lev0 member, but the Property is read-only (and it is flagged as "DERIVED"). How can I change the Property or anot
-
ANE Android override Activity onNewIntent()
Hi, I'm trying to create an NFC extension to be informed when a Tag is detected by the NFC sensor. I guess i have more or less everything i need, expect that onNewIntent override. In the JAVA samples i saw, as soon as we call enableForegroundDispatch