>>>>> "ØG(" == Øystein Grøvlen (JIRA) writes: ØG(> As far as I can understand, the problem is in ØG(> DDLConstantAction.getSchemaDescriptorForCreate() which first ØG(> tries to get a SchemaDescriptor and if none exists will ØG(> create one. What probably happens is that a thread detects ØG(> that the schema does not exist, but when it tries to create ØG(> the SchemaDescriptor, another thread has already done that. ØG(> There is at least two possible ways to fix this: ØG(> 1. Make getSchemaDescriptorForCreate() synchronized. (I have ØG(> tested this and it solves the problem). ØG(> 2. Ignore the "Schema already exists" exception from ØG(> executeConstantAction. The subsequent getSchemaDescriptor ØG(> will then get the SchemaDescriptor created by the other ØG(> thread. Being new to Derby, I am not quite sure which alternative should be preferred here. Making the method synchronized is the simplest alternative, but I see that no other method of DLLConstantAction is synchronized. For the second alternative, I looked around the code without finding any similar case where a SQLException is ignored. Hence, I am wondering whether it is kosher to do it this way. Is there any Derby policy that can guide me in choosing between the alternatives? It would be nice if the Developer's Guide contained an example of how to handle specific exceptions (e.g., I want to ignore "Table does not exist" exceptions for a "drop table" statement, but not other exceptions). Another thing that I am not able to find in the manuals, is a complete list of possible exceptions. -- Øystein