ConcurrentHashMap scenario

Hi all,
Following is my scenario, let me know if ConcurrentHashMap is the soln.
I have a cache (map) with one process say P1 (having n number of threads) does inserting into map and another process say P2 (with m number of threads) does updation of the values (that were inserted).
Threads of P1 insert unique key / value pairs, so i thought, to do insertion faster concurrent hashmap will be better choice (with concurrency level = number of threads of P1).
The issue is, threads of P2 get the value from the map and update the value. If, for a given key the insertion by a P1 thread and get() by P2 thread happens simultaneously, P2 thread may get the value as null....if hashtable is used, I will not get this situation as get and put are synchronized...but I will not get the performance benefit of Conccurent hashmap (during insertion)..
This will be a large scale application with up to two million inserts tobe taken care by P1 threads(in total) and same number of updates by P2 threads.
Please let me know your comments on this...

harry123 wrote:
There is no guarantee but we expect most of the times this will be the case, for other cases when the P2 gets a value first (and the corresponding insert by P1 has not been done).....
P2 will put the value in a different cache, and its P1's responsibility to check the other cache and merge it the main cache.
Well this solution can be applied to the issue I presented but in that we are increasing the chances of P2 not finding the value when it needs to be updated...thereby increasing number of values that go into second cache..there by putting more work on P1This is what I thought: you don't have a guarantee in either case (hashmap or concurrenthashmap). Since you're not providing a happens-before guarantee with HashMap, I don't see it as a big deal that you're not getting such a guarantee from ConcurrentHashMap either. If it is important, you need to provide that guarantee somehow, or structure your code to deal with a lack thereof.
I'm not clear on what your end goal is; if you could elaborate, then maybe someone could provide suggestions.

Similar Messages

  • HashMap String, ConcurrentHashMap Long, Bool concurrency , out of memory

    Need a cache as hashmap<String,ConcurrentHashMap<Long, Boolean>> for 500,000 String keys,
    each with ConcurrentHashMap of max size - million for bulk deletes (based on string key), statistics and concurrency??
    where total record count of all concurrentHashMaps is about 20 million.
    As the application is multi threaded, and we want fastest insert, update, and delete cache the only choice was a concurrentHashMap.
    Methods such as put, putIfAbsent, delete are exposed for this cache.
    For example, Is the following thread safe?
    cache = new HashMap<String, ConcurrentHashMap<Long, Boolean>>
    put(T key, value){
    ConcurrentHashMap map;
    if((map = getConcurrentHashMap(key.getStringValue())) != null){
         synchronized(cache){
              map = new ConcurrentHashMap<Long, Boolean>();
              cache.put(key.getStringValue()), map);
    map.put(key.getLongValue(), false)
    Even before we loaded a million records, we ran out of space. Why do we have so many, about 16 times the number of concurrent hash maps in heap and this is a bad sign, what other options do we have?
    12355048     593042304.00     565.5692     java.util.concurrent.locks.ReentrantLock$NonfairSync
    12355026     593041248.00     565.5682     java.util.concurrent.ConcurrentHashMap$Segment
    12355026     396169112.00     377.8163     [Ljava.util.concurrent.ConcurrentHashMap$HashEntry;
    772191     55597752     53.02215     java.util.concurrent.ConcurrentHashMap
    Thanks
    Krishna

    jtahlborn wrote:
    803891 wrote:
    :), could you read again please.
    Ofcourse, I do use putIfAbsent, but as there are many concurrent hashmaps, the only time I use synchronized is when I do not find a key without an initialized concurrentHashMap.i did read your post the first time, and it is still incorrect. the point of ConcurrentHashMap is to avoid using synchronized. besides that, your code has a timing hole if more than one thread try to access a new key for the first time. they could get 2 different sub-maps. (not to mention a logic bug). the correct way to lazy-load a ConcurrentMap (assuming that object construction for the values is cheap):
    ConcurrentHashMap<Long, Boolean> map;
    if((map = getConcurrentHashMap(key.getStringValue())) == null) {
    map = new ConcurrentHashMap<Long, Boolean>();
    ConcurrentHashMap<Long, Boolean> curMap = cache.putIfAbsebent(key.getStringValue()), map);
    if(curMap != null) {
    map = curMap;
    The good thing about my cache is 99% of the keys (String) are eagerly known. The cache is a HashMap here, so are you suggesting this should also be a ConcurrentHashMap as well, otherwise your cache.putIfAbsent will still require a lock on cache itself, which is what I did below, is there anything wrong here:
    public Boolean put(T key){
              String stringKey = key.getStringKey();
              return getLongCache(stringKey).put(key.getLongKey, true);
    all ... methods use getLongCache() first
    private ConcurrentHashMap<Long, Boolean> getLongCache(
                   String stringKey) {
              ConcurrentHashMap<Long, Boolean> longCache;
              if((longCache = cache.get(key.getStringValue())) == null) {
                   longCache = putIfAbsentLongCache(key.getStringKey);
              return longCache;
    public ConcurrentHashMap<Long, Boolean> putIfAbsentLongCache(
                   String stringKey){
              // acquire implicit client side lock as it is different from this lock
              synchronized(cache) {
                   ConcurrentHashMap<Long, Boolean> longCache;
                   if((longCache = cache.get(stringKey)) == null) {
                        longCache = new ConcurrentHashMap<Long, Boolean>();
                        cache.put(stringKey, longCache);
                   return longCache;
         }>
    No, the whole idea was to avoid the database and use it as a cache, what other alternatives do I have.i understand that. hope you are using a 64bit jvm on a box with lots o' memory. however, for most normal database scenarios, a good ORM (like hibernate) with the correct caching configured will handle the load you need. you would only need something like this for an extreme scenario, in which case you'll probably need a big box.Yeah, I did not really expect this, that is way too much memory to just setup about half a million concurrentHashMaps. But are there other choices such as writing my own map type?
    Edited by: 803891 on Oct 21, 2010 8:24 AM

  • Logical System in IDOC-XI scenario

    Hi,
         I need help to understand few things in IDOC-XI scenario, could any one help me in this regard.
        we use Adapter specific identifiers to map services, we have following type of identifiers 1) Sys.ID & Client No.  2) Logical System. 
    my questions are
    a) Are we use Logical System in B to B scenario ?
    b) Are we use LS in reference to the SAP system or Non SAP system ? if a non SAP system....how a non SAP system send an IDOC and why a non SAP system receive an IDOC ( conversion is possible in XI ) ?
    Thanks and Regards
    Mahesh.

    Hay Kumar,
    Logical systems can also be used for SAp sytems wich are not installed yet as a virtuall placeholder.
    a) yes. if on of your business is a non sap system or a propritery system that you developed yuo'll ue LS.
    b) non SAP system can send and recieve IDOCs. so it's possiable to get an IDOC from a system and turn it into an RFC for SAP or get an IDOC from an SAP system and then turn it into something else for another system.
    Have a Good One,
    Uri Lifshitz.

  • Sale Order Scenario - Report in PS Budget /Actual/Variance

    Dear Experts,
    Please help me understand solve the scenario given below
    Step 1
    Work order issued to a contractor ( contract includes Service and Material from the contractor) - Service being the labour part
    and Material being the cement
    But cement is supplied by the client as a sale of cement at a basic price agreed between the two parties.
    Eg:
    There are 2 WBS
    WBS 1 - has a PR released converted to PO with value 100 ( inclusive service + material)
    Material procured through me51n , Me21n - GR done and stock has come to GNST ( 40 rs)
    material converted to sale order stock mb1b - 412 E after creating sale order with reference to WBS 2
    WBS 2 -  reports cost incurred for procurement ie; 40rs
    Actual booked against WBS1 based on GR 100
    Once the billing is done for rs 20 ( basic price) report in budget actual variance shows as below
                    Budget    Actual    Variance
    WBS 1      200          100          100
    WBS 2                       40           -40
    Report should show 120 as the project cost rather than 140 - since 20 is lost against selling at lower cost.
    How to get the cost to 120 which is the actual cost for the work

    Dear Experts,
    Please help me understand solve the scenario given below
    Step 1
    Work order issued to a contractor ( contract includes Service and Material from the contractor) - Service being the labour part
    and Material being the cement
    But cement is supplied by the client as a sale of cement at a basic price agreed between the two parties.
    Eg:
    There are 2 WBS
    WBS 1 - has a PR released converted to PO with value 100 ( inclusive service + material)
    Material procured through me51n , Me21n - GR done and stock has come to GNST ( 40 rs)
    material converted to sale order stock mb1b - 412 E after creating sale order with reference to WBS 2
    WBS 2 -  reports cost incurred for procurement ie; 40rs
    Actual booked against WBS1 based on GR 100
    Once the billing is done for rs 20 ( basic price) report in budget actual variance shows as below
                    Budget    Actual    Variance
    WBS 1      200          100          100
    WBS 2                       40           -40
    Report should show 120 as the project cost rather than 140 - since 20 is lost against selling at lower cost.
    How to get the cost to 120 which is the actual cost for the work

  • Possible to do if/then scenarios?

    I work for a large company that has many sales branches throughout the US (40+). Each branch has a MPLS circuit and a local ISP. We have prioritized data that is sent over the MPLS circuit, and all other data over the ISP, with failover configured for either circuit to fail over to the other one. Right now all of the sales branches internet traffic (along with all non-priority traffic such as email) comes back thru the ISP (via a VPN tunnel) to our main location, so we can monitor the internet links. We would like configure the normal internet traffic to go out the ISP directly, but still have the email and so come back via the VPN tunnel. We know how to configure this, however, when we do this we would like to install a PC with some monitoring software on it (surf control), that way we can still monitor the internet traffic. We would like to set it up so that if the PC with Surf Control goes down, that the router will send traffic back over the VPN tunnel or MPLS traffic. So the basis of what I want to do is:
    If PC Goes Down = False, Send Traffic To PC
    If PC Goes Down = True, Send Data To VPN tunnel or MPLS circuit.
    Is it possible to do such a scenario?
    We do not currently have the budget for a pix or anything like this, so we are trying to figure it out. I have attached a very basic diagram of the basic network configuration that we have. Any suggestions would be appreciated.
    Also we do have a Ciscoworks LMS 2.6 available as well if that would help at all.

    http://www.cisco.com/en/US/products/sw/iosswrel/ps5413/products_feature_guide09186a00801d862d.html
    good luck,
    Peter

  • Using a variable in the call scenario

    I´m using ODI 10.1.3.6.8.
    I´m calling the scenario as follows:
    ./startscen CENARIO_PRINCIPAL 001 GLOBAL -v=5 GLOBAL.EVENTO=12345
    This is my CENARIO_PRINCIPAL within it calls two scenarios using the global variable GLOBAL.EVENTO.
    When I ran, appears the following error:
    "java.lang.Exception: Specified variable not found in the Repository: GLOBAL.EVENTO"
    I tried to create a step in CENARIO_PRINCIPAL, declaring GLOBAL.EVENTO (this variable is set to the most recent value).
    I ran the scenario again and appears no error, but the variable did not receive the value specified on the "./startscen CENARIO_PRINCIPAL 001 GLOBAL -v=5 GLOBAL.EVENTO=12345" .
    Can anyone help me?

    As I said, I declared the variable in CENÁRIO_PRINCIPAL and ran.
    But the variable GLOBAL.EVENTO not received the amount that I reported the call of the stage was GLOBAL.EVENTO = 12345.
    Remembering that this variable is being used within the scenarios that are executed within the CENARIO_PRINCIPAL.

  • Error while invoking a scenario from another scenario through ODIStartScen

    hi,
    my requirement is to call a scenario from another scenario. the main scenario contains an interface to get data from jms que and put that in DB and then invoke the inner scenario through ODIStartScen and am executing the scenario through an agent which is on another machine. when am trying to execute the main scenario then i get following error while invoking inner scenario in ODIStartScen step ....
    ERROR:::::
    oracle.odi.runtime.agent.invocation.InvocationException: HTTP/1.1 500 Internal Server Error
         at oracle.odi.runtime.agent.invocation.RemoteRuntimeAgentInvoker.invoke(RemoteRuntimeAgentInvoker.java:271)
         at oracle.odi.runtime.agent.invocation.support.InternalRemoteRuntimeAgentInvoker.invokeStartScenario(InternalRemoteRuntimeAgentInvoker.java:149)
         at com.sunopsis.dwg.tools.StartScen.actionExecute(StartScen.java:266)
         at com.sunopsis.dwg.function.SnpsFunctionBaseRepositoryConnected.execute(SnpsFunctionBaseRepositoryConnected.java:155)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.execIntegratedFunction(SnpSessTaskSql.java:3185)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.execIntegratedFunction(SnpSessTaskSql.java:1414)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTaskTrt(SnpSessTaskSql.java:2785)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java:2515)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatAttachedTasks(SnpSessStep.java:534)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java:449)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java:1954)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java:1818)
         at oracle.odi.runtime.agent.processor.impl.StartScenRequestProcessor$2.doAction(StartScenRequestProcessor.java:559)
         at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:224)
         at oracle.odi.runtime.agent.processor.impl.StartScenRequestProcessor.doProcessStartScenTask(StartScenRequestProcessor.java:481)
         at oracle.odi.runtime.agent.processor.impl.StartScenRequestProcessor$StartScenTask.doExecute(StartScenRequestProcessor.java:1040)
         at oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:114)
         at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$2.run(DefaultAgentTaskExecutor.java:82)
         at java.lang.Thread.run(Thread.java:662)
    the error that is in ODI server log is:
    Root cause of ServletException.
    org.springframework.jdbc.CannotGetJdbcConnectionException: Create DwgConnectConnection to master repository failed; nested exception is java.sql.SQLException: Pool connect failed : java.lang.SecurityException: [Security:090398]Invalid Subject: principals=[weblogic, Administrators, IntegrationAdministrators, AdminChannelUsers]
         at oracle.odi.core.persistence.dwgobject.DwgRepositoryConnectConnectionUtils.doGetMasterDwgConnectConnection(DwgRepositoryConnectConnectionUtils.java:93)
         at oracle.odi.core.persistence.dwgobject.DwgRepositoryConnectConnectionUtils.doGetMasterDwgConnectConnection(DwgRepositoryConnectConnectionUtils.java:49)
         at oracle.odi.core.persistence.dwgobject.DwgRepositoryConnectConnectionUtils.doGetMasterDwgConnectConnection(DwgRepositoryConnectConnectionUtils.java:58)
         at oracle.odi.core.security.SecurityManager.doODIInternalAuthentication(SecurityManager.java:348)
         at oracle.odi.core.security.SecurityManager.createAuthentication(SecurityManager.java:331)
         at oracle.odi.runtime.agent.servlet.AgentServlet.processRequest(AgentServlet.java:494)
         at oracle.odi.runtime.agent.servlet.AgentServlet.doPost(AgentServlet.java:454)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
         at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
         at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
         at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
         at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.dms.wls.DMSServletFilter.doFilter(DMSServletFilter.java:330)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.doIt(WebAppServletContext.java:3684)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3650)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
         at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2268)
         at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2174)
         at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1446)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    Caused By: java.sql.SQLException: Pool connect failed : java.lang.SecurityException: [Security:090398]Invalid Subject: principals=[weblogic, Administrators, IntegrationAdministrators, AdminChannelUsers]
         at oracle.odi.jdbc.datasource.LoginTimeoutDatasourceAdapter.doGetConnection(LoginTimeoutDatasourceAdapter.java:133)
         at oracle.odi.jdbc.datasource.LoginTimeoutDatasourceAdapter.getConnection(LoginTimeoutDatasourceAdapter.java:62)
         at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:113)
         at com.sunopsis.sql.SnpsConnection.createConnection(SnpsConnection.java:380)
         at com.sunopsis.sql.SnpsConnection.connect(SnpsConnection.java:338)
         at oracle.odi.core.persistence.dwgobject.DwgRepositoryConnectConnectionUtils.doGetMasterDwgConnectConnection(DwgRepositoryConnectConnectionUtils.java:88)
         at oracle.odi.core.persistence.dwgobject.DwgRepositoryConnectConnectionUtils.doGetMasterDwgConnectConnection(DwgRepositoryConnectConnectionUtils.java:49)
         at oracle.odi.core.persistence.dwgobject.DwgRepositoryConnectConnectionUtils.doGetMasterDwgConnectConnection(DwgRepositoryConnectConnectionUtils.java:58)
         at oracle.odi.core.security.SecurityManager.doODIInternalAuthentication(SecurityManager.java:348)
         at oracle.odi.core.security.SecurityManager.createAuthentication(SecurityManager.java:331)
         at oracle.odi.runtime.agent.servlet.AgentServlet.processRequest(AgentServlet.java:494)
         at oracle.odi.runtime.agent.servlet.AgentServlet.doPost(AgentServlet.java:454)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
         at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
         at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
         at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
         at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.dms.wls.DMSServletFilter.doFilter(DMSServletFilter.java:330)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.doIt(WebAppServletContext.java:3684)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3650)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
         at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2268)
         at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2174)
         at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1446)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    Caused By: java.sql.SQLException: Pool connect failed : java.lang.SecurityException: [Security:090398]Invalid Subject: principals=[weblogic, Administrators, IntegrationAdministrators, AdminChannelUsers]
         at weblogic.jdbc.common.internal.JDBCUtil.wrapAndThrowResourceException(JDBCUtil.java:258)
         at weblogic.jdbc.pool.Driver.connect(Driver.java:160)
         at weblogic.jdbc.jts.Driver.getNonTxConnection(Driver.java:652)
         at weblogic.jdbc.jts.Driver.connect(Driver.java:127)
         at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:355)
         at org.springframework.jdbc.datasource.UserCredentialsDataSourceAdapter.doGetConnection(UserCredentialsDataSourceAdapter.java:162)
         at org.springframework.jdbc.datasource.UserCredentialsDataSourceAdapter.getConnection(UserCredentialsDataSourceAdapter.java:133)
         at oracle.odi.jdbc.datasource.LoginTimeoutDatasourceAdapter$ConnectionProcessor.run(LoginTimeoutDatasourceAdapter.java:217)
         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
         at java.lang.Thread.run(Thread.java:662)
    Caused By: java.lang.SecurityException: [Security:090398]Invalid Subject: principals=[weblogic, Administrators, IntegrationAdministrators, AdminChannelUsers]
         at weblogic.security.service.SecurityServiceManager.seal(SecurityServiceManager.java:835)
         at weblogic.security.service.IdentityUtility.authenticatedSubjectToIdentity(IdentityUtility.java:30)
         at weblogic.security.service.RoleManager.getRoles(RoleManager.java:183)
         at weblogic.security.service.AuthorizationManager.isAccessAllowed(AuthorizationManager.java:375)
         at weblogic.jdbc.common.internal.JDBCUtil.checkPermission(JDBCUtil.java:231)
         at weblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.java:357)
         at weblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.java:317)
         at weblogic.jdbc.common.internal.ConnectionPoolManager.reserve(ConnectionPoolManager.java:93)
         at weblogic.jdbc.common.internal.ConnectionPoolManager.reserve(ConnectionPoolManager.java:106)
         at weblogic.jdbc.pool.Driver.connect(Driver.java:149)
         at weblogic.jdbc.jts.Driver.getNonTxConnection(Driver.java:652)
         at weblogic.jdbc.jts.Driver.connect(Driver.java:127)
         at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:355)
         at org.springframework.jdbc.datasource.UserCredentialsDataSourceAdapter.doGetConnection(UserCredentialsDataSourceAdapter.java:162)
         at org.springframework.jdbc.datasource.UserCredentialsDataSourceAdapter.getConnection(UserCredentialsDataSourceAdapter.java:133)
         at oracle.odi.jdbc.datasource.LoginTimeoutDatasourceAdapter$ConnectionProcessor.run(LoginTimeoutDatasourceAdapter.java:217)
         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
         at java.lang.Thread.run(Thread.java:662)
    kindly help me out.
    thanks in advance.

    In the batch File write this way
    cd E:\OraHome_ODI\oracledi\bin
    E:
    startscen EXT_DATA 002 GLOBAL In case you are providing the values (EXT_DATA 002 GLOBAL) as parameter
    then call the startscen this way
    cd E:\OraHome_ODI\oracledi\bin
    E:
    startscen %1 %2 %3

  • ERROR WHILE RUNNING ODI SCENARIO FROM BAM ALERT

    We are using oracle data integrator 11g and have created an ODI Scenario and able to run the scenario from ODI studio client.
    We have done the configuration for BAM-ODI integration as mentioned in http://docs.oracle.com/cd/E21764_01/integration.1111/e10224/bam_odi.htm#BABEJIGD
    We have started ODI Agent, soa and bam servers. Created a BAM alert -> select action - Run ODI Scenario -> selected the same scenario.
    Alert ran at scheduled time but failed with following error:
    java.io.IOException : truncated data integrator frame received
    Error Message (if any)
    [2012-08-06T11:24:21.046+05:30] [bam_server1] [WARNING] []
    [oracle.bam.eventengine] [tid: bam-pool-Action-thread-1] [userId:
    OracleSystemUser] [ecid:
    3576f9092ef9497a:-743c430a:138fa7450c3:-8000-00000000000000a8,1:23453] [APP:
    oracle-bam#11.1.1] EventEngine: Error occured while running a ODI Scenario.
    [2012-08-06T11:24:21.250+05:30] [bam_server1] [ERROR] []
    [oracle.bam.eventengine] [tid: bam-pool-Action-thread-1] [userId:
    OracleSystemUser] [ecid:
    3576f9092ef9497a:-743c430a:138fa7450c3:-8000-00000000000000a8,1:23453] [APP:
    oracle-bam#11.1.1] EventEngine: Action exception: EEInstEv2 EEInstAct1 Rule
    Id: 2 exception: java.io.IOException: truncated Data Integrator Frame
    received
    [2012-08-06T11:24:21.250+05:30] [bam_server1] [WARNING] []
    [oracle.bam.eventengine] [tid: bam-pool-Action-thread-1] [userId:
    OracleSystemUser] [ecid:
    3576f9092ef9497a:-743c430a:138fa7450c3:-8000-00000000000000a8,1:23453] [APP:
    oracle-bam#11.1.1] EventEngine: Exception stack trace: [[
    at
    oracle.bam.eventengine.engine.event.action.RunScenario.invokeScenario(RunScena
    rio.java:145)
    at
    oracle.bam.eventengine.engine.event.action.ActionProcessor.runScenario(ActionP
    rocessor.java:891)
    at
    oracle.bam.eventengine.engine.event.action.ActionProcessor.actionHandler(Actio
    nProcessor.java:337)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.j
    ava:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at oracle.bam.system.Delegate$Sink.invoke(Delegate.java:80)
    at oracle.bam.system.Delegate.dynamicInvoke(Delegate.java:186)
    at
    oracle.bam.common.threading.threadpool.ThreadPoolController$PoolQueueItem.proc
    essWorkRequest(ThreadPoolController.java:155)
    at
    oracle.bam.common.threading.threadpool.ThreadPoolController$PoolQueueItem.run(
    ThreadPoolController.java:128)
    at
    java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java
    :886)
    at
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908
    at java.lang.Thread.run(Thread.java:619)
    Any help on this is highly appreciated...
    Thanks
    Rajdip Mukherjee

    Hi,
    Forgot to include the ODI classes RunScenario.invokeScenario() is invoking odi scenario using odi sdk api. Please see the below stack trace :-
    java.io.IOException: truncated Data Integrator Frame received
    at
    oracle.odi.sdk.invocation.internal.AgentNetworkCmd.readCmd(AgentNetworkCmd.java:303)
    at
    oracle.odi.sdk.invocation.OdiInvocation.invokeCommand(OdiInvocation.java:176)
    at
    oracle.bam.eventengine.engine.event.action.RunScenario.invokeScenario(RunScenario.java:140)
    at
    oracle.bam.eventengine.engine.event.action.ActionProcessor.runScenario(ActionProcessor.java:891)
    at
    oracle.bam.eventengine.engine.event.action.ActionProcessor.actionHandler(ActionProcessor.java:337)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    Thanks
    Rajdip Mukherjee

  • Error while executing a JDBC to Idoc scenario : No standard agreement found

    Hello SAP PI Gurus, 
    I am having a JDBC to idoc Scenario .And the interface is running at 10 min of duration. 
    <SAP:AdditionalText>No standard agreement found for ,
    BS_EXT_CTBSREPDB, , BS_ERPQAS_QE1_320, http://XYZ.com/FI/FI_FI_01/Charges, FIDCC2</SAP:AdditionalText>.
    While i test the configuration...i get an error in reciever agreement as mentioned above.
    Can you pls help me in resolving this issue.
    Regards,
    Ravi

    Hi,
        I think the problem is with namespace....for IDOC the namespace will be "urn:sap-com:document:sap:idoc:messages"...but in your case it is different.....i.e http:....etc.....please check whether you 've used the same IDOC withe above mentioned namespace in all the configuration objects like interface determination, receiveragreement etc.....
    Thanks
    Priyanka

  • Error while executing a scenario from CMD

    I am trying to execute a scenario from CMD using the starctscen command.
    when I use the below command
    E:\OraHome_ODI\oracledi\bin\startscen EXT_DATA 002 GLOBAL
    it is executing correctly
    but I tried to create a sceduler for the execution where i used the below command
    C:\Documents and Settings\Desktop>"E:\OraHome_ODI\oracledi\bin\startscen.bat" EXT_DATA 002 GLOBAL
    and it is giving me the following error
    The system cannot find the path specified.
    OracleDI: Starting scenario EXT_DATA 002 in context GLOBAL ...
    'oracle.odi.Agent' is not recognized as an internal or external command,
    operable program or batch file.
    can someone help me on this.
    Thanks,
    Sri

    In the batch File write this way
    cd E:\OraHome_ODI\oracledi\bin
    E:
    startscen EXT_DATA 002 GLOBAL In case you are providing the values (EXT_DATA 002 GLOBAL) as parameter
    then call the startscen this way
    cd E:\OraHome_ODI\oracledi\bin
    E:
    startscen %1 %2 %3

  • Interesting scenario- user facing error while deleting a sales order

    Hello All,
    I have one interesting scenario and want feedback from your side as soon as possible
    Scenario-
    One of my clients is facing a problem while deleting a sales order.
    the sales order he is trying to delete is the old order created in 2007.
    when i see the document flow the user has created the export order, then delivered it, invoiced and sent it to accounting, accounting document is also cleared. then he cancelled the invoice, reverse PGI and deleted the delivery. the status of the sales order system is showing is being processed. but please note in this case after reversing PGI and deleting a delivery the delivery document disappears from the document flow.
    document flow looks like this
    Order - 200004715                     Being processed
    invoice- 700005310                    completed
    accounting 700005311                 cleared
    Cancel Invoice 700005315            completed
    Accounting 700005316                 cleared
    Now, in 2008 user is trying to delete the sales order but he is unable to do the same. system is giving him message "unable to delete sales order because of subsequent document 70005310 (which is invoice number)"
    Can somebody please throw some light on this problem.
    Thanks in advance.

    Hi,
    As fas as I know, this is standard system behaviour. The reason - you have done PGI (which has created a material document as well as accounting doc) and invoiced & reversed (which again has created accounting documents & rversal documents). All these documents are referencing the sales order.
    If you delete sales order, sales order number gets deleted from VBAK /VBAP tables.
    Hence, in relational data base scenario (meanin SAP in this context), deletion of sales order after creation of subsequent documents is not feasible.
    Hope it clarifies the issue.
    Regards
    Murali

  • Free Goods Scenario..

    Hello everyone,
    I am testing one scenario..
    please guide me..
    in xk02 i have activated "Grand Discount in Kind"
    in MM02 purchasing view i have entered Qual for Free good dis as "1".
    i have maintained the purchasing info record also in MBN1/MBN2.
    and I have done spro settings also..SPRO...Materials Management...Purchasing...Discount in Kind (Discount in Form of Bonus Goods)....Define And Assign Discount-in-Kind Schema....Determine Free Goods Schema.
    and when I am creating the PO Free goods are not coming..
    I m not able to figure out..how this process run..whether the free goods come in 2 line item or how are they managed and at what stage they are displayed...?
    has anybody run this scenario....?
    thanks in advance..

    Hi,
    Free goods can be worked in two ways:
    1.With Free Goods indicator set in PO ,all PO quantities will be free of cost.
    2.With some discount like if you place PO for 100nos, 10nos are free.Ok,.
    For this you need to do customisation:
    Set discount in kind indicator in MMR in purchasing view.and in vendor master record.
    Maintain customisation...MM-->Purchasing->Discount in kind----> same as pricing procedure..Maintain it.
    Maintain inforecord.For conditions enter the values ..or quantities that vendor gives free of cost.
    Then create PO. just c the difference.
    Work out this one..
    Hope this will help and clear .
    Regrds,
    Udaya.

  • Creation of Inbound delivery mandatory for ASN process in classic scenario?

    Dear Experts,
    We are going for classic scenario for our green field SRM implementation process. Our client is not using  ASN process in their existing MM process. However, they are now looking for an oppurtunity to enable Suppliers to trigger ASN using SUS. In such case, is creation of inbound delivery from Buyer side a mandatory process?
    Is the below the process correct?
    PO -> ASN (Supplier using SUS) -> Inbound delivery (Optional) -> Goods Receipt (Mandatory) -> Invoicing.
    Here, I understand that Goods receipt can be verified against the PO or via Inbound delivery to PO. ASN will inform the store keeper in advance about impending goods receipt and smoothen the confirmation process.
    Could you please comment on the above process? Could you please suggest the best practices followed here?
    Thanks and regards,
    Ranjan
    Ranjan Sutradhar

    Hey Ranjan!,
    You are on track.
    The process flow you have shown is true. ASN is available as a standard as part of the MM-SUS process. It makes the buyer aware of any delays in delivery or to make arrangements on shipping docks to receive goods on a said date etc.
    Regards,
    Nikhil

  • Accounting Entry getting passed in case of Make to Order Scenario

    Hi Experts,
    In Make to Order scenario, as per my knowledge, when the goods is recieved from Production Order the Accounting entry gets passed is Inventory A/c Debit and Cost of Goods Produced Credit.
    But how is Cost of Goods Produced, which is  an expense, gets crebited? I am confused, because the above entry will create a credit balance to an expense account. Can anybody clarify this please?
    Thanks and Regards,
    Sameer Joshi

    Thanks for the reply.
    Do you mean that at the time of PGI, when the entry is posted to COGS, the amount of COP will also get transferred to COGS and then the whole amount will be posted at PGI?
    Thanks and Regards,
    Sameer

  • Credit Note in case of return scenario

    Hi,
    In case of return scenario, credit note is issued with reference to return order or return delivery?
    I am unable to see the copy control setting in IDES for RE(Return Order) to G2(Credit Memo).
    Could any one please let me know the setting for the same (Header and item).
    Regards
    Suman

    Hi Suman,
                 As for the standard in the IDES,the Credit memo will be created with reference to the Creditmemeo request because of that RE to G2 copy control setting may not avail.
    You copy the settings same as Creditmemo request(CR) to Credit memo (G2), You just change the name CR in to RE it will work.
    -->Other wise you can use Credit for returns RE document type to create credit memo for return order RE for this copy control avail in the IDES t.code VTFA.
    I hope it will help you
    Regards,
    Murali.
    Edited by: Murali Mohan.T on Feb 27, 2008 11:07 AM

Maybe you are looking for

  • Vendor Master Data, (FK02), Bank Details Fields Need to be Shown

    Dear Gurus, Now, in the payment transaction tab in FK02 (Modify Vendors), some bank fields need to be shown, which possibly would be suppressed. How to activate or surface these fields? Some fields would be like IBAN number, Bank Code, Bank Country,

  • Strange error in a multiple choice quiz

    Hi - this is strange. I get no error statement BUT the third text option box does a false answer BUT not always - damn strange. var qno=0; var rnd1; var rnd2; tick.visible=false; cross.visible=false; var right_answers=0; var wrong_answers=0; Grammar.

  • Tips on Buying A New Display (completed tip)

    I've received many informative replies to my questions on this site, so I thought I would post my recent monitor research. The info presented is my opinion, and based on my experience - your results may vary. The technology used in mid-priced panels

  • Password action doesn't want to work on Windows browsers

    As a few others have noted in this forum, the Password action which is (or was) provided with GoLive CS2 does not seem to work with IE7 browsers (or other browsers on Windows). When the user clicks on a link which contains the Password action, their

  • Oracle JRF - 11.1.1.0 [Oracle_APPDEV1]

    I install ADF runtime in the fusion middle ware home. In the fusion middleware configuration wizard, there are 3 JRF selections and they are as follow. Oracle JRF - 11.1.1.0 (jdeveloper) Oracle JRF - 11.1.1.0 (Oracle_APPDEV1) Oracle JRF - 11.1.1.0 (O