Skip to Main Content

Berkeley DB Family

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

EnvironmentFailureException

- MyX -May 18 2014 — edited May 20 2014

Hello!

I've upgraded my systems to use 6.0.11 instead of 5.0.97. Everything works fine, storage is 20+ percent more compact and so on, BUT.

1) Under load (all the time) on production server, after every 25-40 minutes uptime the

    > (JE 6.0.11) Environment must be closed, caused by: com.sleepycat.je.EnvironmentFailureException: Environment invalid because of previous exception: (JE 6.0.11) /usr/local/ae3/private/data/bdbj-lcl java.lang.AssertionError UNCAUGHT_EXCEPTION: Uncaught Exception in internal thread, unable to continue. Environment is invalid and must be closed.

    > com.sleepycat.je.EnvironmentFailureException

        > Environment invalid because of previous exception: (JE 6.0.11) /usr/local/ae3/private/data/bdbj-lcl java.lang.AssertionError UNCAUGHT_EXCEPTION: Uncaught Exception in internal thread, unable to continue. Environment is invalid and must be closed.

        > com.sleepycat.je.EnvironmentFailureException

            > null

            > java.lang.AssertionError

              : com.sleepycat.je.evictor.LRUEvictor.processTarget(LRUEvictor.java:2014)

              : com.sleepycat.je.evictor.LRUEvictor.findParentAndRetry(LRUEvictor.java:2182)

              : com.sleepycat.je.evictor.LRUEvictor.processTarget(LRUEvictor.java:2019)

              : com.sleepycat.je.evictor.LRUEvictor.evictBatch(LRUEvictor.java:1689)

              : com.sleepycat.je.evictor.LRUEvictor.doEvict(LRUEvictor.java:1538)

              : com.sleepycat.je.evictor.Evictor$BackgroundEvictTask.run(Evictor.java:739)

              : java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

              : java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

              : java.lang.Thread.run(Thread.java:724)

error appears and floods everything, I have to restart the instance and then it works another 30 minutes approx.

Same thing was happening on non heavy loaded (all) servers during log file upgrade to new format, timing was random tough. None of the environments that are bigger than 1G size were upgraded 'in one go' - I had to restart several times because of the same error.

2) I had to reduce the number of cleaner threads to 1 (config.setConfigParam( EnvironmentConfig.CLEANER_THREADS, "1" )) - otherwise it was not starting AT ALL, on every database instance it was failing on with words like "expect BEING_CLEANED but CLEANED"

I am using low-level BDB JE API with cursors and byte arrays. No secondary databases. No DPL. Does anyone experiencing anything like that?

Comments

566902
Daniel
In your package you should put three Variable steps, drag each of the variables on to the package and make it a "Refresh" step. This will force a value into the variable, which should then make it available for substitution later in the package.
C
Cezar Santos
Hi Daniel,

How are you?

You have some problems at you logic, let me try to help...

Problem 1)
Isn't possible to get "POP_NAME" outside from an interface, I mean, as this keyword returns a interface name only is possible to use in a interface.

One way to "put" this information out of an interface is altering the IKM.

Add a step (as first once you want to use this for log) with the following code:

at Target tab:
Technology: JavaScript
<@String vIntName="<=%odiRef.getPOP("POP_NAME")%>";@>

now you can use a Java variable at any point of the code, just use the syntax: <@=vIntName@>

Problem 2)
The "PrevStepLog" API only works well if it is the imediate step after the step that you want to get the "Last Log".
I mean, if you need to get the final status from interface and want to get "OK" or "KO" create the variable as you already did and make the flow "OK" and "KO" to this variable letting it as refresh.



Problem 3)
You told that "create a package", that is OK, but "not persistent" variable exists just in its original session and each scenario call create a new session.
It means that to send those values to a new scenario you need to declare those variables inside the new scenario.


Beside these small issues your process logic are very well.

You don't need to create a variable to get the session at the first package, at any time at the package the Session API is available, use it directly when call the second scenario.


Does it make any sense to you?


Cezar Santos
Daniel Hein
CTs,

Thanks for help me but i already made this and the error persist.

Do i have to link the interface to the variables or just put them into the diagram?

Edited by: user10470648 on Nov 10, 2008 8:30 AM
Daniel Hein
Hi Cezar, i'm fine, thanks, and you?

First of all, thank you again for the fast response.

1) i really wrote my example wrongly. The correct ones referent to the "interface's name" that i'm using is:

select '<%=odiRef.getPrevStepLog("STEP_NAME")%>' from dual

anyway, your hint is now saved and will be used :-)

2) In this case, how can i make the flow "OK" and "KO", after interface, to all variables? because if i just make the flow to one variable, the "previous step" about the others variables won't be the interface.


3) Can you explain these please. i don't know the steps to workaround this.

I already have created the variables at my project. Do i have to create a scenario with these variables and then create other declare variables that receives the values of "my odi variables" at the principal package? If this is the right way, how can a set the declare variables to receive the value of "my odi variables" listed above?


Thanks for your hopefully help.

best regards.

Daniel Hein
Daniel Hein
Good morning Cezar,

Can you help me with the workaround that i wrote in the previous post?

i really apprecciate your help.

Thanks in advance,

Daniel
Daniel Hein
The error "no previous step" was happening because the "transaction isolation" was set to the default option, "no definition", instead of "serializable".


Anyway, thanks for all the help.

Regards,

Daniel Hein
Cezar Santos
Answer
Hi Daniel,

Sorry by my delay to reply you...

About the problems....

1) OK

2) You need to repeat the "status refresh variable" after execute each interface or procedure. It is possible to make paralallel execution but that is another architecture.

3) About the variables, just drag and drop it to the package and let it as declare type. That wll allow you, after create a scenario, use those variable as parmeters.

I will send you some ODI document about how to use it (in replay to the email you sent me)


Does it help you?

Edited by: Cezar Santos on 12/11/2008 11:34
Marked as Answer by Daniel Hein · Sep 27 2020
Daniel Hein
Help a lot Cezar.

I really apprecciate your concern about my issue.

Best regards,

Daniel hein
1 - 8
Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Jun 17 2014
Added on May 18 2014
12 comments
4,536 views