|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
FIXED: BIP2487 Duplicate Schema / BIP2558 Undefined function |
« View previous topic :: View next topic » |
Author |
Message
|
chrisc |
Posted: Wed Oct 31, 2007 7:53 pm Post subject: FIXED: BIP2487 Duplicate Schema / BIP2558 Undefined function |
|
|
Voyager
Joined: 19 Mar 2006 Posts: 77
|
Edit: Message Broker v5 CSD8
We are getting a BIP 2487 error - "Duplicate schema '%3' - when we deploy our BAR files, and I am unable to find ANY information online about it. I found a single reference in an IBM diagnostic messages document, but it simply lists the following:
Quote: |
BIP2487 (<insert_0>, <insert_1>) : Duplicate schema ’%3’.
Severity: 20 : Error
Explanation: A schema of this name has already been defined. Another schema with the same name cannot be created. Neither can further items be added to the existing schema.
Response: Correct the syntax of your ESQL expression in node <insert_0>, around line and column <insert_1>, then redeploy the message flow. |
This is a totally unhelpful description because it seems to be caused by the "CREATE SCHEMA" line that the compiler puts in, not us.
We have one project with our main flows and another with the common / utility flows and procedures, and we originally thought that maybe there were problems caused by using the same schema names across the two projects, but we have now changed this so there are no schemas in common between the two.
I have tried rebuilding, deleting everything (including metadata) and reimporting, moving everything into completely different schemas, etc, etc etc, and I can't get anywhere. I have confirmed that
What is causing this? Is it a broker bug?
Is there any way around this?
Occasionally I also get a "Undefined function '.retrieveIdentityRules' error as well, but I have confirmed (and my colleague has as well) that the procedure does exist, and the schema that it is in is included in the PATH statement. If I change the invocation so it uses the fully qualified name and take out the PATH reference, this problem goes away and I get the "duplicate schema" error back again.
Arrrgh!
Last edited by chrisc on Thu Nov 01, 2007 2:06 pm; edited 2 times in total |
|
Back to top |
|
 |
chrisc |
Posted: Wed Oct 31, 2007 10:11 pm Post subject: |
|
|
Voyager
Joined: 19 Mar 2006 Posts: 77
|
OK, a bit more info... I'll ignore the duplicate schema error for now, because the missing procedure one seems to be the real sticking point at the moment...
It is complaining about the missing procedure retrieveIdentityRules, which looks like:
Code: |
BROKER SCHEMA com.abc.mbp.flows.dbprocs
CREATE PROCEDURE retrieveIdentityRules (IN Environment REFERENCE)
BEGIN
... |
The sub-flow causing the problem looks like this:
Code: |
BROKER SCHEMA com.abc.mbp.flows
PATH
com.abc.mbp.procs,
com.abc.mbp.flows.procs,
com.abc.mbp.flows.dbprocs;
CREATE COMPUTE MODULE SF_MBP_MSG_IDENTIFY_Identify
...
CALL retrieveIdentityRules(Environment)
... |
The thing is, the toolkit thinks it's fine and lets me use auto-complete, but when I build the BAR file and deploy it, it fails with
Quote: |
BIP2558E: (com.abc.mbp.flows.SF_MBP_MSG_IDENTIFY_Identify.Main, 53.30) : Undefined function '.retrieveIdentityRules'.
The program is attempting to call a function which is not defined or is not in the schema path.
Correct the logic of the ESQL program and re-deploy the message flow. |
When I open up the BAR file, the retrieveIdentityRules procedure is - sure enough - not anywhere to be found, even though it is in the schema which is imported with the PATH statement.
This is really weird... |
|
Back to top |
|
 |
fjb_saper |
Posted: Thu Nov 01, 2007 2:15 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Did you set the dependencies correctly on the project?  _________________ MQ & Broker admin |
|
Back to top |
|
 |
chrisc |
Posted: Thu Nov 01, 2007 2:05 pm Post subject: |
|
|
Voyager
Joined: 19 Mar 2006 Posts: 77
|
fjb_saper wrote: |
Did you set the dependencies correctly on the project?  |
- Yes. In fact the "missing" function was in the same project anyway, just a different schema.
Anyway, I discovered the problem! :O
The problem was the format I was using for the PATH statement, where the schemas were listed across multiple lines and with nothing on the first line, i.e.:
Code: |
PATH
com.abc.mbp.procs,
com.abc.mbp.flows.procs,
com.abc.mbp.flows.dbprocs; |
When I changed this to be all on one line, it worked:
Code: |
PATH com.abc.mbp.procs, com.abc.mbp.flows.procs, com.abc.mbp.flows.dbprocs; |
To make it even stranger, if I did it anywhere in the project, even if I didn't include that flow in the BAR file, then nothing in the path statements of any flow were included in the BAR.
It definitely looks like a minor bug in the compiler, then, but I'm guessing it isn't going to be fixed. At least I know what to avoid now... [runs away and writes copious notes down] |
|
Back to top |
|
 |
|
|
 |
|
Page 1 of 1 |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|
|